http://vice-emu.pokefinder.org/api.php?action=feedcontributions&user=Blackystardust&feedformat=atomvice-emu - User contributions [en]2024-03-29T02:06:25ZUser contributionsMediaWiki 1.40.1http://vice-emu.pokefinder.org/vicewiki/index.php?title=Joymappings&diff=5602Joymappings2023-02-19T17:49:15Z<p>Blackystardust: /* Mapping file */</p>
<hr />
<div>For a long time the SDL port has had a joystick mappings file. There are 2 sample ones: data/C64/sdl_joymap_thec64.vjm and data/C64/sdl_joymap_ps3.vjm.<br />
<br />
These files contain associations between host joystick actions and emulator actions. Possible actions include a corresponding emulated joystick action, a shortcut to an emulator menu action etc.<br />
<br />
The branch branches/fabrizio/3.7-joystick-mapping-2 moves the joystick mappings file to the generic joystick code, therefore making it available to the Gtk3 port as well.<br />
<br />
The file name has the form {sdl,gtk3,headless}-joymap-{C64,C64SC,...}.vjm. Its format is documented in a comment in the sample file itself.<br />
<br />
In order to port the feature to the generic code, the event UI_FUNCTION (shortcuts to menu actions) got lost. It was implemented in a very SDL-specific way, and a cross-platform implementation that allows shortcuts from SDL and GTK3 should be written instead.<br />
<br />
== Mapping file ==<br />
A line has 4 mandatory columns:<br />
<br />
# joystick number (zero-based index of the hardware joystick)<br />
# input type<br />
## axis<br />
## button<br />
## hat<br />
# input index<br />
#* for buttons, it is the zero-based index of the button<br />
#* for axes<br />
#** if the action is 6 (POT_AXIS), it is the zero-based index of the axis<br />
#** otherwise, 0 and 1 are respectively the positive and negative directions of axis 0; 2 and 3 are respectively the positive and negative directions of axis 1 etc. In formulas: axis=inputindex/2 (integer division), direction = positive if inputindex % 2 ==0 , negative if inputindex % 2 ==1.<br />
#* for hats, 0, 1, 2 and 3 are respectively up, down, left and right of hat 0; 4, 5, 6 and 7 are respectively up, down, left and right of hat 1, etc.<br />
# action (enum <code>joystick_action_t</code> in <code>joystick.h</code>)<br />
<ol start="0"><br />
<li>NONE: none</li><br />
<li>JOYSTICK: emulated joystick action</li><br />
<li>KEYBOARD: emulated keyboard action</li><br />
<li>MAP: SDL-only. Only works while the SDL settings menu is active. If a joystick action mapped to this is performed, the user is asked to press a key, which will become a hotkey to select the currently-selected menu</li><br />
<li>UI_ACTIVATE: go to the settings menu (SDL) show the settings dialog (Gtk3)</li><br />
<li>UI_FUNCTION: shortcut to a specific UI function. '''UNSUPPORTED AT THE MOMENT'''</li><br />
<li>POT_AXIS: (only for axes of hardware joysticks) the analog value of the axis is the value of the emulated potentiometer</li><br />
</ol><br />
<br />
For some actions, more columns are present:<br />
<br />
* JOYSTICK<br />
<ol start="5"><li>emulated joystick pin. Same values as reading the corresponding CIA register.</li><br />
<ol><br />
<li value="1">up</li><br />
<li value="2>down</li><br />
<li value="4">left</li><br />
<li value="8">right</li><br />
<li value="16">fire</li><br />
<li value="32">fire 2</li><br />
<li value="64">fire 3</li><br />
</ol><br />
</ol>Blacky note: In vice we also emulate snes pads, these need to be able to be controlled as well, and so the emulated joystick pin needs to be renamed (more like emulated joystick input) and extended, some of the old pins/inputs can be reused, and in such a case we get the following:<br />
<ol><br />
<li value="1">joystick up / snes pad up</li><br />
<li value="2">joystick down / snes pad down</li><br />
<li value="4">joystick left / snes pad left</li><br />
<li value="8">joystick right / snes pad right</li><br />
<li value="16">joystick fire 1 / snes pad A button</li><br />
<li value="32">joystick fire 2 / snes pad B button</li><br />
<li value="64">joystick fire 3 / snes pad X button</li><br />
<li value="128">snes pad Y button</li><br />
<li value="256">snes pad left bumber</li><br />
<li value="512">snes pad right bumber</li><br />
<li value="1024">snes pad select button</li><br />
<li value="2048">snes pad start button</li><br />
</ol><br />
</ol>And this can be extended if other joystick devices become available with more buttons than we currently map for.<br />
* KEYBOARD<br />
<ol start="5"><br />
<li>row in the [https://sta.c64.org/cbm64kbdlay.html keyboard matrix layout]</li><br />
<li>column in the [https://sta.c64.org/cbm64kbdlay.html keyboard matrix layout]</li></ol><br />
* POT_AXIS<br />
<ol start="5"><li>which potentiometer is affected</li><br />
<ol><br />
<li>Pot-X</li><br />
<li>Pot-Y</li><br />
</ol><br />
</ol><br />
<br />
== Technical ==<br />
When a hardware joystick action is performed, the selected joystick driver (Gtk3) <code>ui_dispatch_events()</code> (SDL) call <code>joy_axis_event()</code> or <code>joy_button_event()</code> or <code>joy_hat_event()</code>. These functions read what that joystick action is mapped to, and perform the mapped action.<br />
<br />
Mappings are stored in the static array joystick_devices, declared in joystick.c, that has one element per registered hardware joystick. Mappings are stored in each element's axis_mapping, button_mapping and hat_mapping, each an array with one element per axis/button/hat. The mappings are initialised from the joystick mappings file, or with default values if no joystick mappings file is present.<br />
<br />
== Example ==<br />
Take this sample line from data/C64/sdl_joymap_ps3.vjm<syntaxhighlight lang="abap"><br />
# O -> Space<br />
0 1 1 2 7 4<br />
<br />
</syntaxhighlight>First column: HW joystick 0<br />
<br />
Second column: input type is button (1)<br />
<br />
Third column: input index 1, so button 1<br />
<br />
Fourth column: action KEYBOARD (2)<br />
<br />
Fifth and sixth columns: Space (7 and 4 in the matrix)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Joymappings&diff=5595Joymappings2023-02-01T21:54:40Z<p>Blackystardust: </p>
<hr />
<div>For a long time the SDL port has had a joystick mappings file. There are 2 sample ones: data/C64/sdl_joymap_thec64.vjm and data/C64/sdl_joymap_ps3.vjm.<br />
<br />
These files contain associations between host joystick actions and emulator actions. Possible actions include a corresponding emulated joystick action, a shortcut to an emulator menu action etc.<br />
<br />
The branch branches/fabrizio/3.7-joystick-mapping-2 moves the joystick mappings file to the generic joystick code, therefore making it available to the Gtk3 port as well.<br />
<br />
The file name has the form {sdl,gtk3,headless}-joymap-{C64,C64SC,...}.vjm. Its format is documented in a comment in the sample file itself.<br />
<br />
In order to port the feature to the generic code, some aspects got lost, and must be ported over. Known things are:<br />
* editing mappings with SDL menu<br />
* performing event UI_ACTIVATE (enter SDL menu)<br />
* performing event UI_FUNCTION (shortcuts to menu actions)<br />
<br />
There was an event POT_AXIS, which was intended to emulate potentiometer values with a host joystick's axis position, but it is not clear whether that actually worked. (if what you mean is for SDL, then yes, it worked, analog host axis was converted to analog potentiometer values and it was used for paddles and analog joysticks, and it worked, tested on windows and linux [blacky_stardust])</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=3.6.2&diff=52783.6.22022-01-28T15:54:33Z<p>Blackystardust: </p>
<hr />
<div>Things we want to do for the 3.6.2 release:<br />
<br />
* The VICE version and release date is not automatically updated everywhere yet<br />
** The top line of README<br />
** In the second paragraph of the README ("This is version 3.6 of VICE")<br />
<br />
* 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<br />
* It would also be nice if the github action builds proper debian/ubuntu packages<br />
* <s>cpu history should be enabled by default, optionally disabled</s> (<b>fixed in trunk</b>)<br />
* Make sure the released binaries (Windows and macOS) use the same configuration<br />
<br />
* SDL1/2 joystick mapping improvements<br />
** <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>)<br />
** Make the 'extra joystick options' menu show what they are already mapped to<br />
** Add menu joystick actions mapping support to the 'extra joystick options' menu<br />
<br />
* <s>Remove support for jpeg screenshots (and the dependency on libjpeg(turbo))</s> (<b>fixed in trunk</b>)<br />
<br />
* Remove the <tt>-kernalrev</tt> option from the emulators that use it: use proper ROMs for different revisions and remove the checksumming/patching of ROM files.<br />
<br />
* Fix C128 cartridge system<br />
<br />
* GTK and SDL: it is not possible to reset hotkeys to default (via UI)<br />
** -default on cmdline should skip loading the custom hotkey file<br />
** -default on cmdline should skip loading system files such as kernal from <tt>~/.local/share/vice/$EMU/</tt>.<br />
** "reset settings to defaults" should also reset the hotkeys to defaults<br />
<br />
* VSID improvements:<br />
** Playlist fixes:<br />
*** Allow removing items from the playlist.<br />
*** Allow loading and saving of playlists.<br />
*** Skip to the next SID in the playlist after all tunes in the SID have played.<br />
** Hotkeys support, also for the controls and selecting items in the playlist.<br />
<br />
* <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> <br />
:: <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>)<br />
:: <s>macOS testing WIP</s> (<b>fixed in trunk</b>)<br />
<br />
* GTK: a mechanism must be made that makes it possible to "call" any "menu action" (actions that can be assigned to hotkeys)<br />
** when that is done, joystick buttons can be mapped to menu actions<br />
** an UI is needed for all that<br />
<br />
== 3.6.1 feedback threads ==<br />
<br />
* https://www.lemon64.com/forum/viewtopic.php?p=960346<br />
* https://www.forum64.de/index.php?thread/122829-vice-3-6-1-has-been-released/<br />
* http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?f=14&t=10323</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=3.6.2&diff=52583.6.22022-01-23T23:23:21Z<p>Blackystardust: </p>
<hr />
<div>Things we want to do for the 3.6.2 release:<br />
<br />
* The VICE version and release date is not automatically updated everywhere yet<br />
** The top line of README<br />
** In the second paragraph of the README ("This is version 3.6 of VICE")<br />
<br />
* 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<br />
<br />
* SDL1/2 joystick mapping improvements<br />
** Add 'clear all mappings' to the joystick mapping menus (it's annoying to have to unmap one by one)<br />
** Make the 'extra joystick options' menu show what they are already mapped to<br />
** Add menu joystick actions mapping support to the 'extra joystick options' menu</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=3.6.2&diff=52563.6.22022-01-23T00:22:49Z<p>Blackystardust: </p>
<hr />
<div>Things we want to do for the 3.6.2 release:<br />
<br />
* The VICE version and release date is not automatically updated everywhere yet<br />
** The top line of README<br />
** In the second paragraph of the README ("This is version 3.6 of VICE")<br />
<br />
* SDL1/2 joystick mapping improvements<br />
** Add 'clear all mappings' to the joystick mapping menus (it's annoying to have to unmap one by one)<br />
** Make the 'extra joystick options' menu show what they are already mapped to<br />
** Add menu joystick actions mapping support to the 'extra joystick options' menu</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5182Todo2021-11-07T22:28:46Z<p>Blackystardust: /* Tape port devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI.<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly. (This is partially solved in the Gtk3 UI by using two internal states, one for controlports and one for userport, and reflecting the state in the menu with checkboxes)<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
* Add gtk3 ui support for the host joystick mapping system.<br />
joyport_map_desc_t *mappings = joyport_get_mapping(port); /* get the mappings for the given port */<br />
char *port_name = joyport_get_port_name(port); /* get the name of the emulated port */<br />
if (joyport_has_mapping(port)) { /* only if the given port has a device that has pins to map */<br />
char *emulated_joystick_device_name = mappings->name; /* get the name of the emulated device in the given port */<br />
if (mappings->pinmap != NULL) { /* only if the device has pin (digital line) mappings */<br />
for (int i = 0; mappings->pinmap[i].name; i++) { /* go through all the pin mappings, if mapping pin name is NULL then we have reached the end */ <br />
char *pin_name = mappings->pinmap[i].name; /* get the pin name */<br />
int pin_nr = mappings->pinmap[i].pin; /* get the pin number */<br />
... /* build host joystick direction/button dialog based on the above info */<br />
}<br />
}<br />
if (mappings->potmap != NULL) { /* only if the device has pot (analog line) mappings */<br />
for (int i = 0; mappings->potmap[i].name; i++) { /* go through all the pot mappings, if mapping pot name is NULL then we have reached the end */ <br />
char *pin_name = mappings->potmap[i].name; /* get the pot name */<br />
int pin_nr = mappings->potmap[i].pin; /* get the pot number */<br />
... /* build host joystick analog axis dialog based on the above info */<br />
}<br />
}<br />
}<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
all emulators except xcbm5x0<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* <s>Tapeport device selection should be reworked so only one device can be selected at a time</s><br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* <s>Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.</s> Fixed in trunk.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* <s>the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)</s> Fixed in trunk.<br />
<br />
* <s>'''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]</s> Fixed in trunk.<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widget is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' <s>selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)</s><br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
** WiC64 support ([https://www.wic64.de])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** <s>add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])</s><br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5161Todo2021-10-19T13:36:35Z<p>Blackystardust: /* Joystick port devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
* Add gtk3 ui support for the host joystick mapping system.<br />
joyport_map_desc_t *mappings = joyport_get_mapping(port); /* get the mappings for the given port */<br />
char *port_name = joyport_get_port_name(port); /* get the name of the emulated port */<br />
if (joyport_has_mapping(port)) { /* only if the given port has a device that has pins to map */<br />
char *emulated_joystick_device_name = mappings->name; /* get the name of the emulated device in the given port */<br />
if (mappings->pinmap != NULL) { /* only if the device has pin (digital line) mappings */<br />
for (int i = 0; mappings->pinmap[i].name; i++) { /* go through all the pin mappings, if mapping pin name is NULL then we have reached the end */ <br />
char *pin_name = mappings->pinmap[i].name; /* get the pin name */<br />
int pin_nr = mappings->pinmap[i].pin; /* get the pin number */<br />
... /* build host joystick direction/button dialog based on the above info */<br />
}<br />
}<br />
if (mappings->potmap != NULL) { /* only if the device has pot (analog line) mappings */<br />
for (int i = 0; mappings->potmap[i].name; i++) { /* go through all the pot mappings, if mapping pot name is NULL then we have reached the end */ <br />
char *pin_name = mappings->potmap[i].name; /* get the pot name */<br />
int pin_nr = mappings->potmap[i].pin; /* get the pot number */<br />
... /* build host joystick analog axis dialog based on the above info */<br />
}<br />
}<br />
}<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
all emulators except xcbm5x0<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' <s>selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)</s><br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** <s>add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])</s><br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5160Todo2021-10-19T13:22:58Z<p>Blackystardust: /* Joystick port devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
* Add gtk3 ui support for the host joystick mapping system.<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
all emulators except xcbm5x0<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' <s>selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)</s><br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** <s>add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])</s><br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5150Todo2021-10-08T12:54:56Z<p>Blackystardust: /* x64(sc) */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
all emulators except xcbm5x0<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' <s>selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)</s><br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** <s>add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])</s><br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5149Todo2021-10-08T12:51:02Z<p>Blackystardust: /* Joysticks */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
all emulators except xcbm5x0<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' <s>selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)</s><br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5148Todo2021-10-08T02:08:50Z<p>Blackystardust: /* Userport devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
all emulators except xcbm5x0<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5147Todo2021-10-08T02:07:31Z<p>Blackystardust: /* Joystick port devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
ports 1&2 for x64/x64sc/xscpu64/x128/x64dtv/xcbm5x0<br />
port 1 for xvic<br />
ports 1&2&6 for xplus4<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5146Todo2021-10-08T01:45:16Z<p>Blackystardust: /* Joystick port devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
* add a monitor command to control the value of the 'I/O simulation device', something like jpdb <port> <value><br />
The monitor command would call:<br />
joyport_io_sim_set_ddr_lines(0xff, port); /* Set data direction to output for all joystick lines */<br />
joyport_io_sim_set_out_lines(value, port);<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5145Todo2021-10-08T01:43:12Z<p>Blackystardust: /* Userport devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
* add a monitor command to control the value of the 'I/O simulation device', something like updb <value><br />
The monitor command would call:<br />
userport_io_sim_set_pbx_ddr_lines(0xff); /* Set data direction to output for all PBx lines */<br />
userport_io_sim_set_pbx_out_lines(value);<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5144Todo2021-10-08T01:40:27Z<p>Blackystardust: /* Userport devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s><br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5143Todo2021-10-08T01:39:58Z<p>Blackystardust: /* Userport devices */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* <s>SNES controller by David Murray</s> has been added<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=5141Todo2021-10-04T22:00:59Z<p>Blackystardust: /* Joystick */</p>
<hr />
<div><br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.5'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
==Prime Directive==<br />
<br />
* '''All developers shall subscribe to the [https://sourceforge.net/p/vice-emu/mailman/ vice-emu-mail mailinglist]''' and perhaps join #vice-dev on freenode too (highly recommended).<br />
* Please '''respect the [https://sourceforge.net/p/vice-emu/code/HEAD/tree/trunk/vice/doc/coding-guidelines.txt coding guidelines]'''.<br />
* '''Document your code''' so other people than you are able to understand and fix it in a decade or two.<br />
* When adding/changing stuff that needs (G)UI items/changes, '''all developers should update the SDL and GTK3 UIs themselves''', and immediately following their respective changes.<br />
* When adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation'''.<br />
* After fixing a bug or implementing a new feature, '''update''' its status on '''the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and''' mark it as fixed in '''the TODO list''' below.<br />
:: Only remove a bug/feature from this list when it was fixed/implemented in the latest stable release.<br />
* And most importantly...<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
: That means: '''you break it, you fix it.''' Do not commit deal breaking changes without communicating it with the rest of the team. '''Generally regressions are not acceptable and respective commits are subject to be reverted.'''<br />
<br />
==Code cleanup and streamlining==<br />
<br />
As of 3.2 we started removing a lot of the old cruft, that was dangling around in the tree for way too long, to make maintenance easier<br />
<br />
* remove compiler- and platform- specific hacks (IFDEFS) in common code<br />
$ ./src/findhacks.sh ccarchdep<br />
$ ./src/findhacks.sh archdep<br />
<br />
* remove the third scaling method described in [[Scaling_cleanup]] (formerly used by XAW) (fixed?)<br />
* revisit the old [[Feature checking]] pages, and clear it out eventually<br />
** [[Resource_and_Cmdline_checking]] - Tracks and documents all Resources and Command line options<br />
<br />
* '''TODO''': get rid of fullscreenarch.h and fullscreen.c - its no more required because both SDL and GTK3 can do all of the features fine. (fixed?)<br />
* replace readline and our fallback implementation with linenoise (https://github.com/antirez/linenoise), or perhaps linenoise-ng (https://github.com/arangodb/linenoise-ng) which appears to support Windows and UTF-8. (fixed?)<br />
<br />
* '''TODO''': Remove the 'dither' column from the palette files and update the code accordingly.<br />
<br />
==Build system==<br />
<br />
==Documentation==<br />
===Technical===<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
===Content===<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
==Testbench==<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
* '''TODO''': make a test program to determine the type of delay line used for a PAL screen (UV or U only)<br />
=== autostart problems ===<br />
<br />
* autostart seems to be broken in xcbm2 and xcbm5x0 at least with the settings the testbench wants to use<br />
* xplus4 gives "sound buffer overrun" on autostart with certain settings (which settings?)<br />
* x128 does not autostart prg files correctly when also a cartridge is attached (that forces c64 mode)<br />
<br />
==Emulators==<br />
<br />
===Subsystems===<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* <s>When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.</s> -- dqh: I believe this problem is basically resolved<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* in the gtk3 port VICE currently interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* in the gtk3 port the 2nd button of C64GS joystick currently only works via keyboard, not real (USB) joysticks<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
* when selecting "swap joysticks" or "swap userport joysticks" this will actually swap the related resources, which may be surprising when saving settings and loading them later. it also means its impossible to display whether they are swapped or not in the UI<br />
: '''TODO''': create a "JoysticksAreSwapped" resource, and update the code accordingly<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
* Gun Stick lightpen emulation is not working (and disabled, unless experimental devices are enabled in joyport.h)<br />
<br />
====Userport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in userport.h)<br />
* SNES controller by David Murray<br />
<br />
====Tapeport devices====<br />
<br />
* diag 586220 harness emulation is not working (and disabled, unless experimental devices are enabled in tapeport.h)<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Resources====<br />
<br />
* It's unclear what the "event_relevant" member of resources actually means, and what the difference between RES_EVENT_SAME and RES_EVENT_STRICT is. This needs to documented and then probably a lot of resources fixed to use the correct values.<br />
<br />
====Monitor====<br />
<br />
* Breakpoints/watchpoints should consider banks.<br />
* <s>When loading a snapshot, the monitor break/watchpoints break.</s><br />
<br />
===== Binary Interface =====<br />
<br />
The binary interface has a few design issues that should be fixed<br />
<br />
* Command 0x72 (feed Keyboard) expects "text" and special chars escaped with backslashes. This is not very binary, it should instead work with plain binary petscii codes.<br />
* Command 0x84 (get display) has several issues:<br />
** The first parameter should probably not be a boolean ("is this VICII?"), but "videochip number", with 0 being VICII and 1 being VDC on C128. Further Videochips could be added then (eg if we ever implement the BTX cartridge). Perhaps for compatibility reasons we start counting at 1, and make "0" a special parameter for "current one"<br />
** The format of the response should be always 8bit indexed colors. No RGB, No Targa (or whatever else) image headers. Perhaps for compatibility reasons we keep this one and require it being 0.<br />
** That also means the response format can be simplified<br />
** An extra command to request the active palette colors should be added, which returns the number of colors in the palette and the RGB values for them.<br />
<br />
Also, the Documentation has some issues:<br />
<br />
* At some places it uses &foo and *bar to refer to "length" and a block of data(?). This is really weird and should be removed / replaced by something that is more clear.<br />
<br />
Last not least the binmontest program needs cleanup, so it can serve as an example program:<br />
<br />
* Magic values are used for offsets at various places. It should use constants instead. Ideally, a common header file is used for both the test-program and the VICE code itself<br />
* Much more comments are needed in place of the various checks<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
* '''FIXME:''' PAL delay line currently matches a 1701 (U only), "full" delay line is missing<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
* the IEEE machines use the "virtual devices" for something slightly different than the IEC machines, for the IEEE machines its more like what "IEC Device" means for the IEC machines. This should be handled with a seperate resource similar to "IEC Device" in the other emulators.<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
* Tapeport device selection should be reworked so only one device can be selected at a time<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
: -> the reason for that is that they use either device traps or IEC Devices, none of which exists on the IEEE machines<br />
* <s>piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
<br />
====RS232 Emulation====<br />
<br />
* piping to an external program does not work on windows<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
====ROMsets====<br />
<br />
* all traces of "ROMset archives" should be removed. Nothing uses this, and no UI ever supported it correctly.<br />
* a generic function should be created which scans the data directory of the emulator and returns a list of all .vrs files for the UI<br />
** then the UI can use said list in a dropdown list for quick selection<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
* Remove optional dependency on libreadline once linenoise-ng has been tested properly.<br />
:: See if linenoise-ng can be made to work with the MSYS2 shell, which would help with debugging c1541.<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers one cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* <s>the POTX/POTY sampling period is not taken into account (512 cycles)</s><br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is only approximately implemented. Fixing requires emulating the internal timing of the VDC.. (partially implemented in r35456, also see testprogs/VDC/vdctiming)<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect (?)<br />
* Can't resize the screen enough to fit all video modes, e.g. vdcmodemania high resolution modes. Aspect ratio needs to change on the fly too.<br />
* Screen position is not always correct, e.g. vdcmodemania FLI parts<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
====ACIA (6551)====<br />
<br />
Detailed info on the state of RS232 emulation can be found [[RS232|here]].<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====ser-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
'''NOTICE:'''<br />
<br />
Since revision 36182 (2019-04-08), VICE will no longer build the old x64 binary by default. To make VICE build x64, pass `--enable-x64` to configure.<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
* some carts have no snapshot support yet (still broken: Magic Voice, MMC Replay, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
** MMC64 snapshots do not include the SD-card<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
* '''TODO:''' IDE64 is missing a "make HD image read only" resource<br />
* '''TODO:''' IDE64 saves its config data into vicerc - it should use a bin image like every other cartridge<br />
* RAM link has some implementation problems<br />
** it uses the "Main Slot" allthough it has a Passthrough port - it should use "Slot 0" instead<br />
** it uses the "main image" API for save-as and flush - this is technically wrong and can only "work" right now because the "main image" (which is the ROM!) can not be changed<br />
*** TODO: we need to create an API for saving/flushing secondary images (such as additional cartridge RAM or EEPROMs)<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 )<br />
: xmx provided a test program, see testprogs/c128/z80/cycletimer<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
* xvic does not use iecbus/iecbus.c, which is why "IEC Device" stuff does not work with it<br />
<br />
===== Cartridge System =====<br />
<br />
* cartridge_get_info_list is not implemented<br />
* CRT/BIN saver are missing<br />
** writeback with crt file is not implemented<br />
** GUI elements for "save cartridge" are missing<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
* the "PS/2 Mouse at Userport" should get refactored to be a regular Userport device in the common Userport system<br />
* "enable Userport Joystick" vs "Hummer Userport Joystick" is strange and confusing, especially since in the DTV emulator we dont even have a "UserportJoyType" selection. the regular "DTV Joystick on Userport" should become a regular Userport device.<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
=====Cartridge System=====<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* "mmu" memory translation table handling is not implemented for cartridges<br />
* snapshot implementations are completely untested<br />
* .crt support is missing<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
===== Cartridge System =====<br />
* not implemented yet<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
** also the keymaps must match the "editor" ROM - currently only the UK (Business) ROM in included in VICE<br />
** the keymaps for US (host) keymap need to be checked and fixed<br />
* CPU history (chist) implementation is incomplete<br />
<br />
==Ports==<br />
<br />
* <s>enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]</s> obsolete<br />
<br />
----<br />
===archdep===<br />
<br />
* '''TODO:''' allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<br />
* '''BUG:''' there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
* <s>'''TODO:''' piping to an external program does not work on windows due to missing implementation of fork_coproc, see [[RS232#piping_to_an_external_program|here]].</s> fixed in trunk<br />
* the native (console based) monitor does not work in windows<br />
<br />
====Linux====<br />
<br />
====*BSD====<br />
<br />
====BeOS====<br />
<br />
* '''BUG:''' Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* '''BUG:''' Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
----<br />
<br />
===GTK3 UI===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
The list of covered resources is [[Gtk3_Resource_Coverage|here]]<br />
<br />
==== UI code refactoring to support the new threaded UI code ====<br />
<br />
This means a lot of work testing, documenting and debugging, so it deserves a separate page: [[Gtk3_Threaded_UI|Gtk3 Threaded UI]] (fixed?)<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* <b>Write documentation on how to use the UI</b><br />
* '''TODO:''' Add support for non-ASCII characters in the various file/path dialogs (snapshot, maybe even the various cartridge image/eeprom paths and the machine/drive ROM paths) (fixed?)<br />
<br />
===== Menus =====<br />
<br />
* Perhaps the "show menu/statusbar when fullscreen" menu item should be check button?<br />
:: It should, and with the planned new UI code the toggle button will be automatically updated.<br />
<br />
===== Main window(s) =====<br />
<br />
* '''TODO:''' make sure both hard- and software rendering match whats described in [[Scaling_cleanup]] - if so, the page can be cleaned out<br />
:: Implemented, but only for a single display, no multi-display support yet. GDK seem to support multi-display setup querying, but we'd actually have to write code and test this to see how GDK handles this, if at all. (fixed?)<br />
** do not forget the VDC and the Monitor windows (fixed?)<br />
:: VDC is handled, the monitor windows isn't, there aren't any resource for the monitor window, nor any event handlers. Another wish seems to be to put the VICII and VDC window next to each other for x128, which will probably mean introducing yet another resource to control this and override the Window1* resources. Probably some enum: USE_WINDOW1* = -1, ABOVE, BELOW, LEFT, RIGHT. And hope the Window Manager actually listens to our requests to move said window.<br />
<br />
* '''BUG:''' mouse grab (when mouse emulation is enabled) is not perfect. eg when the emulator is started with mouse enabled, the pointer is not initially moved into the emulator window.<br />
<br />
===== Statusbar =====<br />
<br />
* the Tape Devices widget needs to check if resources can be set to avoid segfaults (fixed? - I haven't any issues with it for a long time, so I'd say this got fixed (Compyx, 2021-02-08)<br />
<br />
* '''BUG:''' the Volume control widget has some display/placement issues due to the way the drive widgets layout is implemented. See [https://sourceforge.net/p/vice-emu/bugs/1119/]<br />
<br />
* '''BUG:''' On MacOS and Windows, the slider popup widget is hidden behind the rendered canvas, on Linux this works as it should. So currently the volume widet is disabled on MacOS and Windows<br />
<br />
===== Dialogs =====<br />
* '''TODO''': Change the directory select/create to non-blocking. (fixed in trunk)<br />
* '''TODO''': Polish the keyset dialog: at there very least split the UI into a 3x3 grid for the directions and a 4x2 grid for the fire buttons. Maybe use icons for the direction if they're in the default Gtk icon set.<br />
<br />
===== Settings =====<br />
<br />
* '''TODO:''' ROM-set manager/settings need to be reworked and fixed. ROMset "archives" should be removed completely. see [[#ROMsets]]<br />
* '''TODO:''' HardSID settings are missing<br />
<br />
====== Pet model ======<br />
<br />
* '''TODO:''' xpet seems to be fine, someone with actual PET knowledge should check this, especially the "SuperPET" stuff. (fixed?)<br />
<br />
====== CBM2 model (xcbm2/xcbm5x0) ======<br />
<br />
* '''TODO:''' Check model settings glue logic.<br />
:: Mostly works, the 50/60Hz switch is a problem. I'll need someone with some actual CBM-II knowledge to help me out here. [[User:Compyx|Compyx]] 2020-01-08<br />
<br />
====== Drive ======<br />
<br />
* <s>enable/disable relations should be checked, e.g. selecting "None" as drive type should not grey out IEC device and changing fsdevice settings only makes sense if IEC device is checked</s><br />
:: <s>Selecting 'None' no longer greys out the IEC widget. The 'Peripheral devices -> Filesystem Device' widgets (a different page/panel) don't respect IECDevice.</s><br />
<br />
====== C64 Cartridge ======<br />
* '''TODO:''' check I/O extensions for proper behaviour (attach/detach, load/save images etc):<br />
** GEO-RAM<br />
** RamCart<br />
** Expert Cartridge<br />
** ISEPIC<br />
** EasyFlash<br />
** GMod2<br />
** IDE64<br />
** MMC64<br />
** MMC Replay<br />
** Retro Replay<br />
** RR-Net Mk3<br />
<br />
====== Game Controller / Joysticks ======<br />
<br />
* '''TODO:''' we need an interface to map controller buttons and axis to joystick emulation, keyboard input and GUI actions<br />
** at this point, make sure the mapping can be different for each connected joystick<br />
** also make sure support for 2nd and 3rd button is handled correctly<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
** similar for at least joy-unix.c, but commented out<br />
<br />
===== vsid =====<br />
<br />
* '''BUG:''' Fix drag-n-drop behaviour, dragging multiple SID files onto the playlist widget works, but on Linux at least, dropping a SID file on the STIL view widget doesn't work (specifically the GtkTextView), this works on Windows oddly enough.<br />
<br />
* '''TODO:''' Implement "goto-next-SID" when having SLDB support enabled.<br />
<br />
* '''BUG:''' STIL view: some tunes (for example Last Ninja 2) print empty "tune #x" entries, so you'll get "Tune #1" in blue and a few empty lines, in the case of LN2 this goes on until tune #6. Most likely a bug in the use of hvsclib, not the lib itself.<br />
<br />
* '''TODO:'''Playlist: allow keyboard navigation. Perhaps also multi-select via Ctrl or Shift to delete multiple entries?<br />
<br />
* '''TODO:''' add a "STOP" icon<br />
<br />
===== Monitor =====<br />
<br />
The GUI based monitor currently uses a mercylessly hacked VTE library. When we looked for a way to put the monitor into a console window that works with GTK3, this seemed to be the only way to do it. The ugly hacks were required to make VTE compile and work on windows. This is also why we cant use a more modern version of the VTE library.<br />
<br />
* '''TODO:''' On the long run, we will have to write a custom renderer for a monitor window, which supports all the things we need to implement a classic "fullscreen editor" like ml monitor.<br />
* '''TODO:''' Again as a long term goal, we might want to support transparent support for native charsets<br />
<br />
for some info on the monitor ui see: [[MonitorUI]].<br />
<br />
===== Unix (Linux) =====<br />
<br />
===== Windows =====<br />
<br />
===== macOS =====<br />
<br />
* <s>GSettings schema files aren't loaded, so things like GtkFileChooser cause an abnormal exit, which means attaching disk images doesn't work. (fixed?)</s> fixed in trunk, a long time ago.<br />
<br />
* '''TODO:''' joystick_ui_get_next_device_name should return the detected joysticks instead of the predefined list (fixed?)<br />
<br />
* '''TODO:''' test mouse -emulation and -grab. (this works properly now, iirc?)<br />
<br />
* '''TODO:''' the MIDI settings widget should show a combobox with supported drivers<br />
<br />
* <s>'''TODO:''' Add QuickTime recording settings widget, like the FFMPEG recording settings widget</s> QuickTime will not be needed<br />
<br />
* '''TODO:''' Make the GTK UI create/use the macOS style "top menubar"<br />
<br />
* '''TODO:''' joy-osx.c contains a lot of resources and commandline options that should not be there, but live in common code instead. this needs some refactoring to make game controllers work the same in all ports<br />
<br />
===== OpenGL =====<br />
* '''TODO:''' The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (fixed?)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing.<br />
* '''TODO:''' Do-not-scale option. Important for Cairo renderer, possible for OpenGL.<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Make 'smart cartridge attach' dialog more smarter when attaching .bin images, show only valid cartridge types when selecting a cart image.<br />
** '''TODO''': this needs a new API call that returns the valid sizes for a given type<br />
* Make Hotkeys user-defineable<br />
* make an option to force display size to 1x/2x/3x/4x<br />
* make a GUI based editor for keymaps<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* add statusbar indicators for stateful keys like Caps Lock and 40/80 Cols.<br />
* add statusbar indicators for cartridge LEDs.<br />
* <s>allow setting foreground/background colors for the VTE monitor.</s> Added in trunk<br />
<br />
===== VSID =====<br />
<br />
* Implement a playlist for VSID (partly done)<br />
<br />
* Add some sort of tree-based file browser (preferably using the HVSC as the default dir) to allow quick tune selection and help with building a playlist (ie via drag-n-drop)<br />
<br />
* Add HVSC BUGlist support to VSID<br />
:: Support for this is available in src/hvsc, but there are very few actual entries in the BUGList.txt file. Maybe skip this one?<br />
<br />
==== Upstream bugs ====<br />
<br />
See [[Upstream bugs]]<br />
<br />
===SDL UI===<br />
<br />
====BUGS/TODO====<br />
* <b>Write documentation on how to use the UI</b><br />
* '''BUG:''' FFmpeg media recording behaves unexpected when entering the menu [https://sourceforge.net/p/vice-emu/bugs/898/]<br />
<br />
=====Menus=====<br />
* '''TODO:''' some menu items need status text to show that the action has been done.<br />
** Drive>Fliplist settings>Add current image to fliplist<br />
** Drive>Fliplist settings>Remove current image from fliplist<br />
** Drive>Fliplist settings>Attach next image in fliplist<br />
** Drive>Fliplist settings>Attach previous image in fliplist<br />
* '''BUG:''' at a lot of places "inactive" (as in "cant be selected") menu items are missing the "N/A" on the right<br />
* '''TODO:''' A better way of showing filenames (maybe using contraction) needs to be made<br />
<br />
=====Joysticks=====<br />
* '''TODO:''' selecting the joystick device (when more than one is connected) is not possible, it will always use the first it finds<br />
** also the joystick mapping is the same for all devices, the code must be reworked so each joystick can be different (eg one ps3 pad, one classic joystick)<br />
<br />
=====Monitor=====<br />
* '''TODO:''' implement a scrollback buffer<br />
<br />
=====File Selector=====<br />
* '''TODO:''' add filtering in file requester<br />
<br />
=====Virtual Keyboard=====<br />
* '''TODO:''' shift/cbm/ctrl should be "sticky" (right now shifted keys are entered using backspace/cancel - which is odd)<br />
* '''TODO:''' the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards<br />
<br />
===== VSID =====<br />
* '''TODO:''' Implement a playlist for VSID<br />
* '''TODO:''' Add HVSC song length database (SLDB) support to VSID (<s>both .txt and</s> .md5 file format)<br />
* '''TODO:''' Add HVSC sid tune information list (STIL) support to VSID<br />
* '''TODO:''' Add HVSC BUGlist support to VSID<br />
<br />
====Windows====<br />
<br />
* '''TODO:''' embed icons into windows .exe files (fixed?)<br />
<br />
====OSX====<br />
<br />
* '''BUG:''' Sound starts to distort heavily after few minutes [https://sourceforge.net/p/vice-emu/bugs/986/] (fixed?)<br />
* '''BUG:''' Sounds terrible unless sampling is lowered from default 44Khz to 22Khz [https://sourceforge.net/p/vice-emu/bugs/984/] (fixed?)<br />
* '''BUG:''' Emulator in default config makes no sound unless the OutputMode is changed to Stereo. [https://sourceforge.net/p/vice-emu/bugs/983/] (fixed?)<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/p64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
** building out-of-tree currently fails with:<br />
<pre>In file included from ../../../vice/src/lib/libffmpeg/libavutil/avutil.h:289:0,<br />
from ../../../vice/src/lib/libffmpeg/libavutil/samplefmt.h:24,<br />
from ../../../vice/src/lib/libffmpeg/libavcodec/avcodec.h:31,<br />
from ../../../vice/src/lib/libffmpeg/libavformat/avformat.h:255,<br />
from ../../../vice/src/gfxoutputdrv/ffmpeglib.h:36,<br />
from ../../../vice/src/gfxoutputdrv/ffmpegdrv.c:37:<br />
../../../vice/src/lib/libffmpeg/libavutil/common.h:50:10: fatal error: libavutil/avconfig.h: No such file or directory<br />
#include "libavutil/avconfig.h"<br />
^~~~~~~~~~~~~~~~~~~~~~<br />
compilation terminated.<br />
Makefile:507: recipe for target 'ffmpegdrv.o' failed</pre><br />
<br />
: '''TODO''': rip out ffmpeg from the tree, disable "internal" ffmpeg support<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* <s>native screenshot support. (in progress)</s><br />
: <s>add Minigrafik/Minipaint format (VIC20 native)</s> (in trunk)<br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Snapshots====<br />
<br />
* also save d81 and other image types which aren't (fully) handled by TDE in snapshot files ( https://sourceforge.net/p/vice-emu/bugs/1082/ )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
* support for .tap index files (requested by SLC)<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** German Btx cartridge (6803)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
** add support for the C-Net dongle ([https://1200baud.wordpress.com/2018/10/31/c-net-dongle-cracked/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
: .vrt is too complex, we should build a simple generic version that works mostly like .crt does so we can reuse a lot of code<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res<br />
** High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/], [http://www.6502.org/users/sjgray/computer/hsg/index.html])<br />
** Data Becker CBM-8000 hi-res graphics support. ([http://lc64.blogspot.de/2017/09/first-test-with-data-becker-hi-res.html])<br />
** SuperSoft High Resolution Graphics Board support. ([https://github.com/sjgray/SuperSoft-HR])<br />
** Eltec petGRAFIK support. ([http://www.cbmhardware.de/dlmanager/index.php?id=322])<br />
** Delph Electronics 8000C support. ([https://github.com/sjgray/Delph8000C])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80, better nec v20, support.<br />
* cbm2 8088 support. ([https://github.com/MichalPleban/cbm2-8088-card])<br />
* B700 HiRes Graphics Board support. ([https://github.com/sjgray/B700-Hires-Card])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* IEC<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Talk:Todo&diff=3821Talk:Todo2018-05-19T19:07:49Z<p>Blackystardust: /* 3.2 GUI */</p>
<hr />
<div>== 3.2 GUI ==<br />
Amiga (OS3, OS4, AROS and MorphOS) has no Gtk support. SDL will be a step backwards. -- [[User:Polluks|Polluks]] ([[User talk:Polluks|talk]]) 21:00, 19 May 2018 (CEST)<br />
<br />
I have been on this for the last 2 years, warning that the unmaintained ports would get replaced by sdl/gtk3 if there was no help in that area, no help was provided, so they will get replaced by sdl.</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=New_Gtk3_UI&diff=3673New Gtk3 UI2018-02-20T22:24:05Z<p>Blackystardust: /* Feature requests / Stretch goals */</p>
<hr />
<div>== New Gtk3 UI ==<br />
<br />
This page is meant to keep track of development efforts on the new Gtk3 UI. Once the Gtk3 UI is the de-facto UI standard, this page can be (re)moved. For now, I'd like to keep it here so it can quickly be found.<br />
<br />
=== Rationale ===<br />
<br />
The how and why we go Gtk3 for *nix, Windows and OSX should be clear, but I'll reiterate: since we don't have any Windows or OSX maintainters left and failed to attract new ones, the decision was made to use Gtk3 as the new UI for 'modern' OSes.<br />
<br />
Gtk3 is portable and widely supported and has a C interface. So we should be able to write the UI code once and have it run on our major platforms: Linux, Windows and OSX. Using GLib (a dependency of Gtk3) a lot of platform-dependent code in the UI can be avoided and many standard dialogs, such as open/save/select-dir need to written only once, Gtk3/GLib will handle most of the platform-dependent stuff.<br />
<br />
=== Current development state ===<br />
<br />
* All emulators work, though some UI code still needs to be written or updated to properly support all machines<br />
* Default renderer is OpenGL 3.2 based (GTK 3.16 required) and does full HW scaling. Fallback renderer is Cairo-based, which will scale in software if necessary but slows down noticably when it does.<br />
* All UI code is hand-written, we tried using Glade/GtkBuilder, but the amount of machines and extra hardware VICE supports is way too much what a static UI can handle<br />
* Though many UI elements look okay, some don't. This isn't lazyness but rather to avoid tweaking the layout only to discover later that it still needs to be changed. So any layout/style issues will eventually get fixed. So don't complain about it, unless there are glaring bugs (such as dialogs that are too large to fit on a decent screen)<br />
* The developers currently working on Gtk3 are:<br />
** compyx - UI, archdep, documentation, bug fixes<br />
** McMartin - rendering backends, UI, archdep, bug fixes<br />
** loggedoubt - testing, bug fixes<br />
** groepaz - testing, monitor code, QA<br />
** blacky startdust - testing, build system, QA<br />
<br />
==== BUGS/TODO ====<br />
<br />
This is a list of things to do and bugs to fix. This is no way an exhaustive list, to get a better understanding of what needs to be fixed/altered, run this command inside VICE's top dir: <code>grep -n 'FIXME\|TODO\|XXX' `find src/arch/gtk3 -name '*.c'`</code>, and be amazed.<br />
<br />
* VSID: functionality is on par with Gtk2, but some extra stuff would be nice (see Stretch Goals)<br />
<br />
* Monitor support for Windows (2017-11-08)<br />
** it should work in the mingw console - what we really need is something like VTE that works everywhere [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 01:13, 17 November 2017 (CET)<br />
* Mouse-grab. The UI items is there, but the actual mouse code isn't implemented yet (2017-11-08)<br />
* The Tape Devices widget needs to check if resources can be set to avoid segfaults (2017-11-14)<br />
* <s>Light pen support. (2017-11-15)</s> Light pen support is now in. ([[user:McMartin|McMartin]] 2018-02-13)<br />
<br />
* OpenGL<br />
** The OpenGL renderer should transform itself into a Cairo renderer if the system doesn't support OpenGL. (2017-11-15)<br />
** Do-not-scale option. Important for Cairo renderer, possible for OpenGL. (2017-11-15)<br />
** Stretch goal: the OpenGL renderer should fall back to legacy mode (the SDL renderer) if GTK3 itself has, instead of failing. (2017-11-15)<br />
** <s>sometimes the window comes up with the menu- and statusbar being black, slightly resizing the window would fix it. perhaps related to grabbing the GL context at points it expects it to be somewhere else, and then its not "given back". So one possible fix would be to move all those operations into the 'realize' and 'render' signals.</s> A patch has been implemented to "give back" any pre-existing context, which seems to influence normal screen updates. Further testing is required before this bug can be called definitely fixed. (2017-11-19)<br />
*** still no dice. upstream bug? [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:16, 21 November 2017 (CET)<br />
<br />
* Settings<br />
** <s>xpet: "model settings" widget is way too large, vertical space needs to be reduced drastically (2017-11-16)</s> Fixed, but more glue logic is needed (2017-11-21)<br />
** On Windows (and perhaps OSX) the MIDI widget should show a combobox with supported drivers (2017-11-14)<br />
** ROM settings are missing (partially supported, needs work (2018-01-31)<br />
** CRT-emulation settings are missing (the sliders at the bottom in GTK2 UI). perhaps just move them into the regular settings<br />
** <s>Activating the setting UI causes the emulator to un-pause</s><br />
<br />
* C64 Cartridge settings<br />
** cartridge images vs extra eeprom images are screwed up...<br />
*** some of the cartridges have flash rom - this refers to the actual cartridge image. for this the filename can NOT be selected (MMC64 is an exception - perhaps we can even generally allow it for the others too). there is also "flush image" (button) "save image as" (browse button) and "update image on detach/quit" (checkbox)<br />
*** only mmcr and gmod2 have an extra eeprom, for this only the filename can be selected (textfield, browse button), and there is a resource to make the eeprom read/write (checkbox)<br />
**** in detail:<br />
***** <s>GMOD2 "GMod2FlashWrite" resource is related to the flash rom (actual cartridge image) and not the EEPROM. it should be moved further down on the page and the description should mention "flash image" to make clear its not related to the eeprom. also the "flush cartridge" and "save as" buttons should refer to the cartridge image (which is flash rom)</s><br />
***** <s>MMC64 - BIOS file selection is inactive when MMC64 is not enabled. this makes no sense, since in order to enable it, a BIOS file must be set. so always enable it :)</s><br />
***** MMCR - cartridge image and EEPROM image is mixed up. only the filename selection is related to the EEPROM, the other stuff is related to the cartridge image/flash ROM. also "make eeprom read/write" checkbox is missing.<br />
** for those cartridges with an "enable cartridge" checkbox the logic is backwards, when the cartridge is disabled then the filename selection is disabled. it should be the other way around, when no filename is set, then the cartridge can not be enabled (but in order to enable it, a filename must be set)<br />
*** IEEE-488 Cartridge<br />
*** Magic Voice<br />
<br />
** I/O extensions to check for proper behaviour:<br />
*** Memory Expansion Hack<br />
*** GEO-RAM<br />
*** RAM Expansion Module<br />
*** RamCart<br />
*** Double Quick Brown Box<br />
*** Expert Cartridge<br />
*** ISEPIC<br />
*** EasyFlash<br />
*** GMod2<br />
*** IDE64 (this one is so 'special', I probably actually go it right --compyx)<br />
*** MMC64<br />
*** MMC Replay<br />
*** Retro Replay<br />
*** Super Snapshot V5<br />
*** Ethernet Cartridge<br />
*** RR-Net Mk3<br />
*** IEEE-488 interface<br />
*** Magic Voice<br />
<br />
* Menus<br />
** in the HELP menu the "browse documentation" item is non functional. we either need a portable solution, or use archdep code here<br />
** <s>the debug menu is completely non functional</s><br />
<br />
* Dialogs<br />
** "File->Netplay" needs some testing and refactoring. perhaps move it into settings?<br />
*** Work is under way in uinetplay_new.c, which mostly works but needs the client/server mapping of keyboard/joystick etc. And indeed moving into settings would be prefered (compyx, 2018-02-09)<br />
<br />
* Media recording<br />
** Implement audio recording and video recording (2017-12-17) -- Mostly implemented, what is missing is a 'stop recording' button on the status bar ([[user:compyx|compyx]] 2017-12-23)<br />
** MacOS: Add QuickTime recording settings widget, like the FFMPEG recording settings widget (I can't do this, someone with MacOS/QuickTime knowledge will have implement that [[user:compyx|compyx]] 2017-12-17)<br />
<br />
==== Upstream bugs ====<br />
<br />
* Some combobox contents appear to have 'empty' entries and sometimes the colors of the items change (upstream Gtk3 bug) (2017-11-08)<br />
<br />
<br />
==== misc ====<br />
<br />
* <s>in xvic the joysticks do not work</s><br />
** <s>the status bar shows two joysticks (it should show one)</s> Between one and five joysticks will now be displayed depending on your configuration of the machine and user ports ([[user:McMartin|McMartin]] 2018-02-13)<br />
<br />
==== Feature requests / Stretch goals ====<br />
<br />
* Add some way to show the keycodes of the keys being pressed (perhaps in the status bar?) - that would make it a lot easier to fix/create keymaps<br />
* Add preview of the RAM init pattern (2017-11-08)<br />
* Add 'revert changes' to dialogs/widgets to revert resources to their state when the widget/dialog was activated. (This is different from restoring to factory defaults) (2017-11-16)<br />
* Add a 'smart' cartridge attach dialog: show "preview" of .crt image if selected in the dialog, show only valid cartridge types when selecting a cart image.<br />
* Implement a playlist for VSID<br />
* Add HVSC song length database support for VSID (both .txt and .md5 file formats)<br />
* Add a 'detach all drive images' item</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3520Developer log old2017-04-07T17:59:57Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30025 ===<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
<br />
=== r31536 ===<br />
* Added support for the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3519Developer log2017-04-07T17:59:49Z<p>Blackystardust: Removed native os/2 items</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32419 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#FFC000;" | beos (3)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFC000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32520 || 3.0<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#00FF00;" | beos (-)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFFF00;" | os/2 (2)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==3.0==<br />
<br />
* Added support for G71 (double sided G64 for 1571) images<br />
:'''TODO''': add g71 to filters in file-open/attach dialogs in following ports: amiga, dos, osx, win32<br />
:'''TODO''': add g71 to "create image" dialogs (DISK_IMAGE_TYPE_G71) in following ports: amiga, beos, dos, osx, win32<br />
<br />
===r32815===<br />
<br />
* Added support for the StarDOS drive ROM, new resources DriveXStarDos (boolean), DriveStarDosName (string)<br />
:'''TODO''': add GUI items to the following ports (take supercard or profdos as example): amiga, beos, dos, osx, win32<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** <strike>TODO: RTC72421 emulation needed</strike> (in trunk)<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=3518Todo2017-04-07T17:55:58Z<p>Blackystardust: Removed native os/2 items</p>
<hr />
<div>==Prime Directive==<br />
<br />
* when adding/changing stuff that needs (G)UI items/changes, add a proper entry to the [[Developer_log]] to notify the UI maintainers.<br />
* when changing something that needs an update to text messages (and as such, the translation), add a proper entry to the [[Translator_log]] to notify the Translators.<br />
* when adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation''' :)<br />
* after fixing a bug or implementing a new feature, update its status on the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and mark it as fixed in the list below.<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
----<br />
<br />
==Known Issues==<br />
<br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.0'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
----<br />
<br />
===Documentation===<br />
====MAN Pages====<br />
* the man pages are very outdated and should perhaps be generated from the infotext<br />
** the man pages refer to the path where the html documentation can be found, this should get adjusted to whats actually used<br />
* the following man pages are missing: vsid<br />
* man pages for the individual emulator binaries should get installed as symbolic links to vice.1<br />
<br />
====Manual====<br />
=====Technical=====<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (windows .hlp, unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
=====Content=====<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
* generate target specific documentation<br />
** win32 documentation. (.chm format)<br />
** amiga documentation. (.guide format)<br />
** BeOS documentation.<br />
** MSDOS documentation. (.txt format)<br />
** OS/2 documentation. (.inf format)<br />
** RiscOS documentation.<br />
** SDL documentation.<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
----<br />
<br />
===Testbench===<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
<br />
----<br />
<br />
===Subsystems===<br />
<br />
====Translation====<br />
<br />
* Support for more languages.<br />
* Translation support for BeOS.<br />
* Translation support for MSDOS<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* currently VICE interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* 2nd button of C64GS joystick (cheetah annilihator) not implemented ( http://sourceforge.net/p/vice-emu/feature-requests/189/ )<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Monitor====<br />
<br />
* When loading a snapshot, the monitor break/watchpoints break.<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* Dual disk drive 2040/3040 support (DOS1, 670 blocks free) is not working<br />
* when using a dual drive, and no TDE, only the first drive (0:) can be used.<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
* support for double sided disk images is very shaky, since no concept of disk sides exists and the tracks on the second side are referenced by an offset into the image, the handling of images with different number of tracks is needlessly hard and complicated (and thus broken).<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
** regular (70 tracks) vs extended (80 or 84 tracks) d71 images are not handled at all (vdrive problem)<br />
** creating (formatting) G71 does not work correctly, the second BAM block will be wrong (vdrive problem)<br />
** double sided P64 can be used, but can not be created from within VICE (see patch #122, r32586). since these are non existant "in the wild" and probably not needed for anything - not a big problem :) to handle this properly, a seperate image format should get created (at least internally)<br />
<br />
======Dual Drives======<br />
<br />
r25459 by Rhialto:<br />
<br />
I enabled up to DRIVE_NUM IEEE-488 drives, rather than 2 (in True Drive Emulation mode). In some places where they are enumerated, it is 4. The drives use their full 3 bits of jumpered drive number now, rather than just 1 bit.<br />
<br />
I have also generalised code so as to allow another dual drive. Since dual drives currently use up two device numbers, it will use 10 and 11. I'm currently simplifying the methods for checking the dualness of a drive.<br />
<br />
When that is done, I hope to have gained enough understanding of the code to remove the horrible hack of using 2 devices for a dual drive, and remove it. It looks like it will simplify a lot of code (including removing lots of code that I changed for allowing 2 dual drives). That will have some repercussions on the GUIs, since for every drive you may need to be able to attach ''two'' image files. It also would add an extra "drive" parameter (in addition to the current "unit" parameter) to a shedload of functions, although this is a pretty mechanical change. In fact, it is the GUI change that currently holds me back...<br />
<br />
'''TODO''': Think of some elegant way to represent settings for 8 floppy images (for 4 dual drives), without requiring all GUIs to be updated at once.<br />
<br />
'''TODO''': After that, I can rework the code to make dual drives more regular and hence allow 4 of them.<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
: 2016-10-20: This appears to have been fixed in at least the Gtk and Xaw ports: when hovering the mouse over the datasette status widget the image name is displayed in a 'tooltip'. (Bas Wassink)<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
----<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers only cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
* I/O "peek" function is broken<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* the POTX/POTY sampling period is not taken into account (512 cycles)<br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
** Interlaced mode ( https://sourceforge.net/tracker/?func=detail&aid=2871065&group_id=223021&atid=1057617 ) - This will require a major rewrite of the output as it is currently basically 640x200(ish) vertically stretched to keep the aspect right, but in interlaced it will have to go to 640x400ish with no vertical stretching. None of the other emulated models change output modes like this and it can break some platforms.<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is always set, ie. the VDC is never 'busy'. Fixing requires emulating the internal timing of the VDC..<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====spi-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
* some carts have no snapshot support yet (still broken: MMC64, Magic Voice, MMC Replay, MIDI, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
** RR-Net MK3: to get the ethernet functionality it must be explicitly enabled too, and will appear as a "clockport" internally (which is wrong)<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 ) '''TODO''': cycle accurate test programs<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
* CPU history (chist) implementation is incomplete<br />
----<br />
<br />
===Ports / UIs===<br />
<br />
* Make a list of Hotkeys used per port, compare and try to make them the same / alike. ( [[Hotkey cleanup]] )<br />
* enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]<br />
* Fix all Keymap handling according to [[Keymaps]]<br />
<br />
* VSID is not fully supported in all ports: dos, OSX<br />
<br />
* YUV rendering (used by amiga morphos and XAW) implementation is incomplete<br />
** scale2x not available<br />
** some renderers are missing<br />
** doublesize + y-stretch (2x4) doesnt work correctly<br />
<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
* add dual monitor support (for x128) ( https://sourceforge.net/tracker/?func=detail&aid=2780684&group_id=223021&atid=1057620 )<br />
* add realtime speed adjustment ui / hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=2904137&group_id=223021&atid=1057620 )<br />
<br />
* Monitor Improvements: ( also see [[MonitorUI]] )<br />
*:* keep monitor window open ( https://sourceforge.net/tracker/?func=detail&aid=2311669&group_id=223021&atid=1057620 )<br />
*:* enable more actions by mouse/hotkey ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
*:* use cbm font ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
* improve vsync / add option to sync to actual output framerate ( https://sourceforge.net/tracker/?func=detail&aid=3009846&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<big>The windows GUI has a lot of inconsistencies and really needs at least a partial re-write. Maintainers wanted!</big><br />
* In the win32 port keyboard input can be garbled after issuing a reset on CPU JAM.<br />
* the device buttons in the monitor ui are broken ( https://sourceforge.net/tracker/?func=detail&aid=2478267&group_id=223021&atid=1057617 )<br />
* a slider widget is missing to adjust "DriveSoundEmulationVolume" (integer, 0 - 4000, the volume of the drive noise emulation)<br />
* x64, xscpu64 and x128: proper setup for IEE488 cartridge is missing<br />
** x64, xscpu64 and x128: the name of the IEE488-cartridge ROM can not be selected in the gui ("IEEE488Image", string). <br />
** x64, xscpu64: the IEE488-cartridge ROM can not be enabled ("IEEE488", integer)<br />
* xpet is missing a menu item for userport diagnostics pin<br />
* xpet is missing menu item(s) for HRE hires graphics board<br />
* xpet is missing menu item(s) to configure the (PET!) keyboard type<br />
* xplus4: TED settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xvic: VIC settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xscpu64: VIC-II is missing menu item(s) to configure the glue logic type (model switching should be like x64sc!)<br />
* add "apply" button in video settings ( https://sourceforge.net/tracker/?func=detail&aid=3354016&group_id=223021&atid=1057620 )<br />
* add cassette control buttons/hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=3203245&group_id=223021&atid=1057620 )<br />
* make it possible to define ALT as a hotkey ( https://sourceforge.net/tracker/index.php?func=detail&aid=2909906&group_id=223021&atid=1057620 )<br />
* add option to run vice executable with high priority ( https://sourceforge.net/tracker/?func=detail&aid=2430983&group_id=223021&atid=1057620 )<br />
* gui to manage rom sets is missing<br />
* monitor-ui should get a scrollback buffer<br />
* popup widgets on tape- and drive-status (like in GTK) in statusbar is missing<br />
* resid passband/filter bias/gain should be sliders and work in realtime<br />
* move all "model" related settings that are now in seperated dialogs ("c64 model", "cia", "sid" etc) into one tabbed dialog<br />
* "help" menubar item should be aligned to the right<br />
* vsid has no status bar (and thus no volume control)<br />
<br />
=====Win32 DX9=====<br />
* There is a bug when moving the window partly outside the left edge of the screen. The rendered contents seem to "lock" to the left border. This seems to depend on the driver of the gfx adapter as is only shows on some machines.<br />
<br />
=====Windows 7=====<br />
* there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
<br />
=====Windows XP and up=====<br />
* Running as an unprivileged user causes a heap of problems. VICE tries to write log files and settings to the directory the VICE binary is located. This will obviously fail when running as an unprivileged user. The proper way to handle this is to add a function `archdep_home_path()` to src/arch/win32/archdep.c and use that to determine where to place log files, settings, etc. Most/all other ports use this.<br />
<br />
=====Mingw64=====<br />
<br />
====X11 (XAW and GTK)====<br />
<br />
* The custom TextField widget is buggy and can cause crashes on DEC/Alpha machines, and possibly on other systems too. If you get weird X protocol errors or the file selector makes the emulator die when you close it, this might be the cause. <br />
*: '''Workaround''': recompile with the `--disable-textfield' option. If it still does not work, please tell us.<br />
* some text output may show broken characters for "foreign" UTF8 chars due to improver conversion (please report such cases!)<br />
* the initial window and canvas should be created using its final size and not resized later<br />
<br />
=====Vidmode=====<br />
<br />
* lightpen coordinates are not accurate when using vidmode for fullscreen<br />
* mouse warping when using vidmode for fullscreen is buggy<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
: '''Workaround''': use XRandR for fullscreen<br />
<br />
=====GTK=====<br />
<br />
* Gnome/GTK+ commandline options must come first (before any non-options)<br />
* the event handling is buggy, which results in some more or less broken behaviour eg when holding down ALT-D or ALT-B (the later in fullscreen mode)<br />
* add Session Management<br />
* improve Tape status widget, (.TAP vs .t64 handling is lousy.)<br />
* implement actual Monitor GUI (like in the windows port) ( https://sourceforge.net/tracker/?func=detail&aid=3317803&group_id=223021&atid=1057620 )<br />
* create a "open cartridge image" dialog allowing selection of any (bin) cartridge type and preview of .crt file info<br />
<br />
======GTK3======<br />
* gtkglext is not ready yet for GTK3, so hardware scaling will not work yet<br />
* the window is resizeable even when hardware scaling is not enabled<br />
<br />
=====XAW=====<br />
<br />
* Some DEC/Alpha machines crash due to the XAW implementation. <br />
*: '''Workaround''': Compile VICE with GNOME support `--enable-gnomeui' instead.<br />
* warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" may show up if none is defined in the environment<br />
*: '''Workaround''': define _XOPEN_SOURCE=600 on the commandline<br />
* Context popup menu for drive attach is broken if more than two drives are active.<br />
* when hardware rendering is enabled, greenish color might appear around the drawing area.<br />
* Aspect ratio/scaling is broken in fullscreen mode when hardware rendering is enabled (canvas is always stretched to fill the entire screen)<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
* mouse- and lightpen emulation/coordinates are broken on the second window (VDC/x128)<br />
* add "commandline options" help window (like in the windows port)<br />
*: Is available in trunk, but lacks scrollbars, so scrolling through the text requires to user to click inside the window and scroll with keys (Compyx 2016-12-20)<br />
* hide hidden files (dot files) in the filebrowser ( https://sourceforge.net/tracker/?func=detail&aid=2878433&group_id=223021&atid=1057620 )<br />
* implement "edit" (copy/paste) menu<br />
* add Drag'n'Drop support<br />
* the status bar area of the created window is larger than it should be<br />
* ffmpeg half frame-rate setting missing in "save media image" dialog (FFMPEGVideoHalveFramerate)<br />
* sound volume can not be changed using the GUI (SoundVolume)<br />
* datasette status widget is not implemented<br />
<br />
====MAC OSX====<br />
<br />
<big>'''the OSX port is somewhat outdated and needs fixing badly - Maintainer wanted!'''</big><br />
<br />
* ADD: the VSID GUI is missing and needs to be implemented<br />
* FIX: the xcbm5x0 and xcbm2 GUI should separated properly (eg in resource inspector)<br />
* FIX: the xscpu64 GUI is broken<br />
** copy from c64 UI, except for tape, no freezer cartridges<br />
* FIX: long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]] (r29610)<br />
* FIX: new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id). (r29938)<br />
** new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
* FIX: the joystick settings dialog is broken<br />
* FIX: joystick/mouse stuff is broken in resource inspector too<br />
* FIX: Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv. (r30294)<br />
* ADD: mouse init/shutdown calls to xcbm2 and xpet. (r30161)<br />
* FIX: Check and test UI items for Atari ST mouse, Atari CX-22 trackball, Smart Mouse. testprograms can be found in testprogs/propmouse<br />
<br />
* ADD: model selection for xplus4 is missing (r24285)<br />
: look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x64dtv is missing (r24287)<br />
: look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xcbm2/cbm5x0 is missing (r24326)<br />
: look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x128 is missing (r25052) <br />
: look at c128/c128model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xvic is missing (r26968) <br />
: look at vic20model_get/vic20model_set for models and functions, it works just like the c64 counterpart<br />
<br />
* ADD: 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
* ADD: Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection (r27914)<br />
* ADD: accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus (r28014)<br />
<br />
* ADD: new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h (r28982) convert code to use the list instead of hardcoding it<br />
* ADD: new API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime. (r30708)<br />
* ADD: added generic function/list for querying the enabled compile time features. (see vicefeatures.h) (r28935), this info should be shown in a dialog near the "about/help" stuff<br />
<br />
* FIX: cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h, direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead. (r24210)<br />
<br />
* FIX: ui_pause_emulation is not implemented (see r29876). when that is done "advance one frame" when in pause mode can be added to GUI.<br />
* FIX: check and fix in vicemachinecontroller.m, changed mon_reg_list_t->flags into a bitfield (see mon_register.h) (r28503)<br />
<br />
* FIX: updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
* FIX: X64->Help->If you click on Contributors, you get whatever was shown last in the help menu. If nothing was shown last, it will come up with a blank screen. If the License was shown last it will show the license, or if the Warranty was shown last, it will show the warranty if you click contributors.<br />
<br />
* ADD: support for HardSID USB ( https://sourceforge.net/tracker/?func=detail&aid=2714202&group_id=223021&atid=1057620 )<br />
<br />
* ADD: a lot of options are currently only available in the resource inspector and may be added to menus/dialogs<br />
* FIX: the resource inspector is incomplete/does not provide access to all resources<br />
* FIX: the I/O tree should get updated for other machines than C64<br />
<br />
* FIX: options->vicii->settings... opens an empty window<br />
* FIX: window->monitor window opens an empty window<br />
* FIX: window->debugger windows-> all dont work<br />
<br />
* FIX: Changed MMC64, MMCR and RetroReplay to use the new clockport system (r31947)<br />
** new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
** new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
** new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
* FIX: Added IDE64 clockport emulation (r31967)<br />
** new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
====Linux====<br />
<br />
* ADD: support for rtkit ( https://sourceforge.net/tracker/?func=detail&aid=3088679&group_id=223021&atid=1057619 )<br />
<br />
====MS-DOS====<br />
<br />
* In the MS-DOS port you have to save the configuration and restart the emulator when changing VDC double size mode.<br />
* ADD: real IEC device support via par port or ser port<br />
* ADD: proper lfn detection<br />
* FIX: X64->Video settings->VGA resolution->Mode 5: 640x480 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 7: 1024x768 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 11: 800x600 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 12: 1024x768 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 13: 640x480 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 16: 800x600 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->Video Standard->Cannot select NTSC.<br />
<br />
====AROS====<br />
<br />
* VICE 2.2a has no sound on AROS ( https://sourceforge.net/tracker/?func=detail&aid=2954913&group_id=223021&atid=1057617 )<br />
* ADD: PCI support for catweasel and hardsid<br />
<br />
====Amiga====<br />
<br />
* X64->Settings->REU settings->Enabling REU and changing the REU size crashes the emulator instead of giving any kind of error message.<br />
* crash on Amiga OS4 when changing language ( https://sourceforge.net/tracker/?func=detail&aid=3309859&group_id=223021&atid=1057617 )<br />
* crash on Amiga OS4 when changing to doublesize in fullscreen mode ( https://sourceforge.net/tracker/?func=detail&aid=3309865&group_id=223021&atid=1057617 )<br />
* Lightpen/gun support (21132)<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
====*BSD====<br />
<br />
* serial device hangs on open() in NetBSD 5.0.2 ( https://sourceforge.net/tracker/?func=detail&aid=3043294&group_id=223021&atid=1057617 )<br />
<br />
====BeOS====<br />
<br />
* Sometimes the application loses the keyboard focus; no keystrokes are accepted inside the emu, so the emulator has to be restarted.<br />
* Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* The monitor only works if you start the emulator from a terminal; if you start the emu from tracker and enter the monitor, you are "lost"<br />
* Fullscreen mode is not implemented.<br />
* Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
TODO: Lightpen driver and UI items for the following ports: amiga, beos<br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* Options->DirectWindow cannot be checked in all emulators.<br />
** It is checked by default if available, but not if system video driver support is missing and currently never in Haiku. I might add an error message at some point. --[[User:Loggedoubt|Loggedoubt]] 23:53, 22 May 2012 (UTC)<br />
<br />
* X64->Options->Expansion carts->magic voice options->Magic voice emulation and magic voice file cannot be checked.<br />
<br />
* X64->Options->Expansion carts->Easy Flash options->Save .crt file now->Error message might be better if said no .crt file attached.<br />
<br />
* X64->Expansion carts->MMC64 options->MMC64 emulation cannot be selected.<br />
<br />
* X64->settings->Drive settings->1551 shouldn't be there. (Plus4 only)<br />
** A symptom of a much larger problem: the drive type list isn't machine-specific at all. --[[User:Loggedoubt|Loggedoubt]] 15:58, 25 February 2012 (UTC)<br />
<br />
* XPlus4->Settings->V364 Speech options->V364 Speech emulation cannot be selected.<br />
<br />
* Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
====SDL====<br />
<br />
* there is no interface for browsing files inside (d64..) images<br />
* Drive>Fliplist settings>Add current image to fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Remove current image from fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach next image in fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach previous image in fliplist>Item needs status text to show that the action has been done.<br />
* A better way of showing filenames (maybe using contraction) needs to be made<br />
* Cartridge>MMC64>Enable MMC64 can not be used unless a MMC64 ROM has been selected, it should be made inactive if not<br />
* improve the Android port.<br />
<br />
----<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/P64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* native screenshot support. (in progress) <br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
* sound sync needs a rewrite, its too complex and fails a lot<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** RAM Floppy (REX 9680) support<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramlink support. ([http://unusedino.de/ec64/technical/aay/c64/rlmain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/ramlink.rar])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** german BTX cartridge (6809)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** "Disk Mate" (Datel)<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
** "MegaOne" - Easyflash compatible Flash cartridge, see [http://www.commodore.gen.tr/forum/index.php?topic=11933.210;wap2 here]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80 support.<br />
* cbm2 8088 support. ([http://www.cbm-ii.com])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* add support for dual disk drives<br />
* IEC<br />
** CMD harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/cmd-hard.rar]) (https://sourceforge.net/tracker/?func=detail&aid=2786810&group_id=223021&atid=1057620)<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** D9060/D9090 CBM harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/D9090-D9060.rar])<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=3472Todo2016-12-16T20:45:15Z<p>Blackystardust: /* x64(sc) */</p>
<hr />
<div>==Prime Directive==<br />
<br />
* when adding/changing stuff that needs (G)UI items/changes, add a proper entry to the [[Developer_log]] to notify the UI maintainers.<br />
* when changing something that needs an update to text messages (and as such, the translation), add a proper entry to the [[Translator_log]] to notify the Translators.<br />
* when adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation''' :)<br />
* after fixing a bug or implementing a new feature, update its status on the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and mark it as fixed in the list below.<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
----<br />
<br />
==Known Issues==<br />
<br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.0'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
----<br />
<br />
===Documentation===<br />
====MAN Pages====<br />
* the man pages are very outdated and should perhaps be generated from the infotext<br />
** the man pages refer to the path where the html documentation can be found, this should get adjusted to whats actually used<br />
* the following man pages are missing: vsid<br />
* man pages for the individual emulator binaries should get installed as symbolic links to vice.1<br />
<br />
====Manual====<br />
=====Technical=====<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (windows .hlp, unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
=====Content=====<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
* generate target specific documentation<br />
** win32 documentation. (.chm format)<br />
** amiga documentation. (.guide format)<br />
** BeOS documentation.<br />
** MSDOS documentation. (.txt format)<br />
** OS/2 documentation. (.inf format)<br />
** RiscOS documentation.<br />
** SDL documentation.<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
----<br />
<br />
===Testbench===<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
<br />
----<br />
<br />
===Subsystems===<br />
<br />
====Translation====<br />
<br />
* Support for more languages.<br />
* Translation support for BeOS.<br />
* Translation support for MSDOS<br />
* Translation support for OS/2<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* currently VICE interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* 2nd button of C64GS joystick (cheetah annilihator) not implemented ( http://sourceforge.net/p/vice-emu/feature-requests/189/ )<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Monitor====<br />
<br />
* When loading a snapshot, the monitor break/watchpoints break.<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* Dual disk drive 2040/3040 support (DOS1, 670 blocks free) is not working<br />
* when using a dual drive, and no TDE, only the first drive (0:) can be used.<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
======Dual Drives======<br />
<br />
r25459 by Rhialto:<br />
<br />
I enabled up to DRIVE_NUM IEEE-488 drives, rather than 2 (in True Drive Emulation mode). In some places where they are enumerated, it is 4. The drives use their full 3 bits of jumpered drive number now, rather than just 1 bit.<br />
<br />
I have also generalised code so as to allow another dual drive. Since dual drives currently use up two device numbers, it will use 10 and 11. I'm currently simplifying the methods for checking the dualness of a drive.<br />
<br />
When that is done, I hope to have gained enough understanding of the code to remove the horrible hack of using 2 devices for a dual drive, and remove it. It looks like it will simplify a lot of code (including removing lots of code that I changed for allowing 2 dual drives). That will have some repercussions on the GUIs, since for every drive you may need to be able to attach ''two'' image files. It also would add an extra "drive" parameter (in addition to the current "unit" parameter) to a shedload of functions, although this is a pretty mechanical change. In fact, it is the GUI change that currently holds me back...<br />
<br />
'''TODO''': Think of some elegant way to represent settings for 8 floppy images (for 4 dual drives), without requiring all GUIs to be updated at once.<br />
<br />
'''TODO''': After that, I can rework the code to make dual drives more regular and hence allow 4 of them.<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
: 2016-10-20: This appears to have been fixed in at least the Gtk and Xaw ports: when hovering the mouse over the datasette status widget the image name is displayed in a 'tooltip'. (Bas Wassink)<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
----<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers only cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
* I/O "peek" function is broken<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* the POTX/POTY sampling period is not taken into account (512 cycles)<br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
** Interlaced mode ( https://sourceforge.net/tracker/?func=detail&aid=2871065&group_id=223021&atid=1057617 ) - This will require a major rewrite of the output as it is currently basically 640x200(ish) vertically stretched to keep the aspect right, but in interlaced it will have to go to 640x400ish with no vertical stretching. None of the other emulated models change output modes like this and it can break some platforms.<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is always set, ie. the VDC is never 'busy'. Fixing requires emulating the internal timing of the VDC..<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====spi-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
* some carts have no snapshot support yet (still broken: MMC64, Magic Voice, MMC Replay, MIDI, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
** RR-Net MK3: to get the ethernet functionality it must be explicitly enabled too, and will appear as a "clockport" internally (which is wrong)<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 ) '''TODO''': cycle accurate test programs<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
* CPU history (chist) implementation is incomplete<br />
----<br />
<br />
===Ports / UIs===<br />
<br />
* Make a list of Hotkeys used per port, compare and try to make them the same / alike. ( [[Hotkey cleanup]] )<br />
* enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]<br />
* Fix all Keymap handling according to [[Keymaps]]<br />
<br />
* VSID is not fully supported in all ports: dos, OSX<br />
<br />
* YUV rendering (used by amiga morphos and XAW) implementation is incomplete<br />
** scale2x not available<br />
** some renderers are missing<br />
** doublesize + y-stretch (2x4) doesnt work correctly<br />
<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
* add dual monitor support (for x128) ( https://sourceforge.net/tracker/?func=detail&aid=2780684&group_id=223021&atid=1057620 )<br />
* add realtime speed adjustment ui / hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=2904137&group_id=223021&atid=1057620 )<br />
<br />
* Monitor Improvements: ( also see [[MonitorUI]] )<br />
*:* keep monitor window open ( https://sourceforge.net/tracker/?func=detail&aid=2311669&group_id=223021&atid=1057620 )<br />
*:* enable more actions by mouse/hotkey ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
*:* use cbm font ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
* improve vsync / add option to sync to actual output framerate ( https://sourceforge.net/tracker/?func=detail&aid=3009846&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<big>The windows GUI has a lot of inconsistencies and really needs at least a partial re-write. Maintainers wanted!</big><br />
* In the win32 port keyboard input can be garbled after issuing a reset on CPU JAM.<br />
* the device buttons in the monitor ui are broken ( https://sourceforge.net/tracker/?func=detail&aid=2478267&group_id=223021&atid=1057617 )<br />
* a slider widget is missing to adjust "DriveSoundEmulationVolume" (integer, 0 - 4000, the volume of the drive noise emulation)<br />
* x64, xscpu64 and x128: proper setup for IEE488 cartridge is missing<br />
** x64, xscpu64 and x128: the name of the IEE488-cartridge ROM can not be selected in the gui ("IEEE488Image", string). <br />
** x64, xscpu64: the IEE488-cartridge ROM can not be enabled ("IEEE488", integer)<br />
* xpet is missing a menu item for userport diagnostics pin<br />
* xpet is missing menu item(s) for HRE hires graphics board<br />
* xpet is missing menu item(s) to configure the (PET!) keyboard type<br />
* xplus4: TED settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xvic: VIC settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xscpu64: VIC-II is missing menu item(s) to configure the glue logic type (model switching should be like x64sc!)<br />
* add "apply" button in video settings ( https://sourceforge.net/tracker/?func=detail&aid=3354016&group_id=223021&atid=1057620 )<br />
* add cassette control buttons/hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=3203245&group_id=223021&atid=1057620 )<br />
* make it possible to define ALT as a hotkey ( https://sourceforge.net/tracker/index.php?func=detail&aid=2909906&group_id=223021&atid=1057620 )<br />
* add option to run vice executable with high priority ( https://sourceforge.net/tracker/?func=detail&aid=2430983&group_id=223021&atid=1057620 )<br />
* gui to manage rom sets is missing<br />
* monitor-ui should get a scrollback buffer<br />
* popup widgets on tape- and drive-status (like in GTK) in statusbar is missing<br />
* resid passband/filter bias/gain should be sliders and work in realtime<br />
* move all "model" related settings that are now in seperated dialogs ("c64 model", "cia", "sid" etc) into one tabbed dialog<br />
* "help" menubar item should be aligned to the right<br />
* vsid has no status bar (and thus no volume control)<br />
<br />
=====Win32 DX9=====<br />
* There is a bug when moving the window partly outside the left edge of the screen. The rendered contents seem to "lock" to the left border. This seems to depend on the driver of the gfx adapter as is only shows on some machines.<br />
<br />
=====Windows 7=====<br />
* there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
=====Mingw64=====<br />
<br />
====X11 (XAW and GTK)====<br />
<br />
* The custom TextField widget is buggy and can cause crashes on DEC/Alpha machines, and possibly on other systems too. If you get weird X protocol errors or the file selector makes the emulator die when you close it, this might be the cause. <br />
*: '''Workaround''': recompile with the `--disable-textfield' option. If it still does not work, please tell us.<br />
* some text output may show broken characters for "foreign" UTF8 chars due to improver conversion (please report such cases!)<br />
* the initial window and canvas should be created using its final size and not resized later<br />
<br />
=====Vidmode=====<br />
<br />
* lightpen coordinates are not accurate when using vidmode for fullscreen<br />
* mouse warping when using vidmode for fullscreen is buggy<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
: '''Workaround''': use XRandR for fullscreen<br />
<br />
=====GTK=====<br />
<br />
* Gnome/GTK+ commandline options must come first (before any non-options)<br />
* the event handling is buggy, which results in some more or less broken behaviour eg when holding down ALT-D or ALT-B (the later in fullscreen mode)<br />
* add Session Management<br />
* improve Tape status widget, (.TAP vs .t64 handling is lousy.)<br />
* implement actual Monitor GUI (like in the windows port) ( https://sourceforge.net/tracker/?func=detail&aid=3317803&group_id=223021&atid=1057620 )<br />
* create a "open cartridge image" dialog allowing selection of any (bin) cartridge type and preview of .crt file info<br />
<br />
======GTK3======<br />
* gtkglext is not ready yet for GTK3, so hardware scaling will not work yet<br />
* the window is resizeable even when hardware scaling is not enabled<br />
<br />
=====XAW=====<br />
<br />
* Some DEC/Alpha machines crash due to the XAW implementation. <br />
*: '''Workaround''': Compile VICE with GNOME support `--enable-gnomeui' instead.<br />
* warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" may show up if none is defined in the environment<br />
*: '''Workaround''': define _XOPEN_SOURCE=600 on the commandline<br />
* Context popup menu for drive attach is broken if more than two drives are active.<br />
* when hardware rendering is enabled, greenish color might appear around the drawing area.<br />
* Aspect ratio/scaling is broken in fullscreen mode when hardware rendering is enabled (canvas is always stretched to fill the entire screen)<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
* mouse- and lightpen emulation/coordinates are broken on the second window (VDC/x128)<br />
* add "commandline options" help window (like in the windows port)<br />
* hide hidden files (dot files) in the filebrowser ( https://sourceforge.net/tracker/?func=detail&aid=2878433&group_id=223021&atid=1057620 )<br />
* implement "edit" (copy/paste) menu<br />
* add Drag'n'Drop support<br />
* the status bar area of the created window is larger than it should be<br />
* ffmpeg half frame-rate setting missing in "save media image" dialog (FFMPEGVideoHalveFramerate)<br />
* sound volume can not be changed using the GUI (SoundVolume)<br />
* datasette status widget is not implemented<br />
<br />
====MAC OSX====<br />
<br />
<big>'''the OSX port is somewhat outdated and needs fixing badly - Maintainer wanted!'''</big><br />
<br />
* ADD: the VSID GUI is missing and needs to be implemented<br />
* FIX: the xcbm5x0 and xcbm2 GUI should separated properly (eg in resource inspector)<br />
* FIX: the xscpu64 GUI is broken<br />
** copy from c64 UI, except for tape, no freezer cartridges<br />
* FIX: long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]] (r29610)<br />
* FIX: new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id). (r29938)<br />
** new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
* FIX: the joystick settings dialog is broken<br />
* FIX: joystick/mouse stuff is broken in resource inspector too<br />
* FIX: Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv. (r30294)<br />
* ADD: mouse init/shutdown calls to xcbm2 and xpet. (r30161)<br />
* FIX: Check and test UI items for Atari ST mouse, Atari CX-22 trackball, Smart Mouse. testprograms can be found in testprogs/propmouse<br />
<br />
* ADD: model selection for xplus4 is missing (r24285)<br />
: look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x64dtv is missing (r24287)<br />
: look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xcbm2/cbm5x0 is missing (r24326)<br />
: look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x128 is missing (r25052) <br />
: look at c128/c128model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xvic is missing (r26968) <br />
: look at vic20model_get/vic20model_set for models and functions, it works just like the c64 counterpart<br />
<br />
* ADD: 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
* ADD: Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection (r27914)<br />
* ADD: accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus (r28014)<br />
<br />
* ADD: new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h (r28982) convert code to use the list instead of hardcoding it<br />
* ADD: new API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime. (r30708)<br />
* ADD: added generic function/list for querying the enabled compile time features. (see vicefeatures.h) (r28935), this info should be shown in a dialog near the "about/help" stuff<br />
<br />
* FIX: cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h, direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead. (r24210)<br />
<br />
* FIX: ui_pause_emulation is not implemented (see r29876). when that is done "advance one frame" when in pause mode can be added to GUI.<br />
* FIX: check and fix in vicemachinecontroller.m, changed mon_reg_list_t->flags into a bitfield (see mon_register.h) (r28503)<br />
<br />
* FIX: updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
* FIX: X64->Help->If you click on Contributors, you get whatever was shown last in the help menu. If nothing was shown last, it will come up with a blank screen. If the License was shown last it will show the license, or if the Warranty was shown last, it will show the warranty if you click contributors.<br />
<br />
* ADD: support for HardSID USB ( https://sourceforge.net/tracker/?func=detail&aid=2714202&group_id=223021&atid=1057620 )<br />
<br />
* ADD: a lot of options are currently only available in the resource inspector and may be added to menus/dialogs<br />
* FIX: the resource inspector is incomplete/does not provide access to all resources<br />
* FIX: the I/O tree should get updated for other machines than C64<br />
<br />
* FIX: options->vicii->settings... opens an empty window<br />
* FIX: window->monitor window opens an empty window<br />
* FIX: window->debugger windows-> all dont work<br />
<br />
* FIX: Changed MMC64, MMCR and RetroReplay to use the new clockport system (r31947)<br />
** new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
** new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
** new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
* FIX: Added IDE64 clockport emulation (r31967)<br />
** new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
====Linux====<br />
<br />
* ADD: support for rtkit ( https://sourceforge.net/tracker/?func=detail&aid=3088679&group_id=223021&atid=1057619 )<br />
<br />
====MS-DOS====<br />
<br />
* In the MS-DOS port you have to save the configuration and restart the emulator when changing VDC double size mode.<br />
* ADD: real IEC device support via par port or ser port<br />
* ADD: proper lfn detection<br />
* FIX: X64->Video settings->VGA resolution->Mode 5: 640x480 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 7: 1024x768 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 11: 800x600 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 12: 1024x768 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 13: 640x480 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 16: 800x600 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->Video Standard->Cannot select NTSC.<br />
<br />
====AROS====<br />
<br />
* VICE 2.2a has no sound on AROS ( https://sourceforge.net/tracker/?func=detail&aid=2954913&group_id=223021&atid=1057617 )<br />
* ADD: PCI support for catweasel and hardsid<br />
<br />
====Amiga====<br />
<br />
* X64->Settings->REU settings->Enabling REU and changing the REU size crashes the emulator instead of giving any kind of error message.<br />
* crash on Amiga OS4 when changing language ( https://sourceforge.net/tracker/?func=detail&aid=3309859&group_id=223021&atid=1057617 )<br />
* crash on Amiga OS4 when changing to doublesize in fullscreen mode ( https://sourceforge.net/tracker/?func=detail&aid=3309865&group_id=223021&atid=1057617 )<br />
* Lightpen/gun support (21132)<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
====*BSD====<br />
<br />
* serial device hangs on open() in NetBSD 5.0.2 ( https://sourceforge.net/tracker/?func=detail&aid=3043294&group_id=223021&atid=1057617 )<br />
<br />
====BeOS====<br />
<br />
* Sometimes the application loses the keyboard focus; no keystrokes are accepted inside the emu, so the emulator has to be restarted.<br />
* Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* The monitor only works if you start the emulator from a terminal; if you start the emu from tracker and enter the monitor, you are "lost"<br />
* Fullscreen mode is not implemented.<br />
* Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
TODO: Lightpen driver and UI items for the following ports: amiga, beos, os/2<br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* Options->DirectWindow cannot be checked in all emulators.<br />
** It is checked by default if available, but not if system video driver support is missing and currently never in Haiku. I might add an error message at some point. --[[User:Loggedoubt|Loggedoubt]] 23:53, 22 May 2012 (UTC)<br />
<br />
* X64->Options->Expansion carts->magic voice options->Magic voice emulation and magic voice file cannot be checked.<br />
<br />
* X64->Options->Expansion carts->Easy Flash options->Save .crt file now->Error message might be better if said no .crt file attached.<br />
<br />
* X64->Expansion carts->MMC64 options->MMC64 emulation cannot be selected.<br />
<br />
* X64->settings->Drive settings->1551 shouldn't be there. (Plus4 only)<br />
** A symptom of a much larger problem: the drive type list isn't machine-specific at all. --[[User:Loggedoubt|Loggedoubt]] 15:58, 25 February 2012 (UTC)<br />
<br />
* XPlus4->Settings->V364 Speech options->V364 Speech emulation cannot be selected.<br />
<br />
* Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
====SDL====<br />
<br />
* there is no interface for browsing files inside (d64..) images<br />
* Drive>Fliplist settings>Add current image to fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Remove current image from fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach next image in fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach previous image in fliplist>Item needs status text to show that the action has been done.<br />
* A better way of showing filenames (maybe using contraction) needs to be made<br />
* Cartridge>MMC64>Enable MMC64 can not be used unless a MMC64 ROM has been selected, it should be made inactive if not<br />
* improve the Android port.<br />
<br />
<br />
=====OS/2=====<br />
<br />
*Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* X64->View->Video color settings->Dialog looks wrong, cannot tell what things are.<br />
** a symptom of the changes in the palette generator (see devlog) [[User:Gpz|Gpz]] 12:02, 21 March 2012 (UTC)<br />
** in this case the dialog is also screwed up and needs fixing.<br />
<br />
: '''Partially FIXED (rev 25626)''' (changes make emulator crash, cause still unknown)<br />
<br />
* X64->Setup->Magic voice settings->Magic voice cartridge cannot be selected.<br />
<br />
: '''This is because the ROM image file name is empty, this also occurs in all other ports, but might have gone unnoticed. It's true that an error message describing the fact that the ROM image name was empty would be nice, needs to be worked on.'''<br />
<br />
* X64->Setup->MMC64 settings->MMC64 cartridge cannot be selected.<br />
<br />
: '''This is because the ROM image file name is empty, this also occurs in all other ports, but might have gone unnoticed. It's true that an error message describing the fact that the ROM image name was empty would be nice, needs to be worked on.'''<br />
<br />
* X64->Help->Commandline Options crashes the emulator.<br />
<br />
* X128->Setup->unchecking VDC Double size crashes the emulator.<br />
<br />
* X128->Setup->unchecking VDC Double scan crashes the emulator.<br />
<br />
* X128->Setup->Cannot check VIC-1112 IEEE488 Interface.<br />
<br />
* Xcbm2->Setup->Model->CBM 620 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 620+ cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 710 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 720 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 720+ cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model Line->Clicking on any of the options makes the emulator crash.<br />
<br />
* Xvic->Setup->Can check double size, but it crashes the emulator.<br />
<br />
<br />
----<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/P64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* native screenshot support. (in progress) <br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
* sound sync needs a rewrite, its too complex and fails a lot<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** RAM Floppy (REX 9680) support<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramlink support. ([http://unusedino.de/ec64/technical/aay/c64/rlmain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/ramlink.rar])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** german BTX cartridge (6809)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** "Disk Mate" (Datel)<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
<br />
* Tape Port<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80 support.<br />
* cbm2 8088 support. ([http://www.cbm-ii.com])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* add support for dual disk drives<br />
* IEC<br />
** CMD harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/cmd-hard.rar]) (https://sourceforge.net/tracker/?func=detail&aid=2786810&group_id=223021&atid=1057620)<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** D9060/D9090 CBM harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/D9090-D9060.rar])<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=3471Todo2016-12-16T20:42:45Z<p>Blackystardust: /* SDL */</p>
<hr />
<div>==Prime Directive==<br />
<br />
* when adding/changing stuff that needs (G)UI items/changes, add a proper entry to the [[Developer_log]] to notify the UI maintainers.<br />
* when changing something that needs an update to text messages (and as such, the translation), add a proper entry to the [[Translator_log]] to notify the Translators.<br />
* when adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation''' :)<br />
* after fixing a bug or implementing a new feature, update its status on the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and mark it as fixed in the list below.<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
----<br />
<br />
==Known Issues==<br />
<br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.0'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
----<br />
<br />
===Documentation===<br />
====MAN Pages====<br />
* the man pages are very outdated and should perhaps be generated from the infotext<br />
** the man pages refer to the path where the html documentation can be found, this should get adjusted to whats actually used<br />
* the following man pages are missing: vsid<br />
* man pages for the individual emulator binaries should get installed as symbolic links to vice.1<br />
<br />
====Manual====<br />
=====Technical=====<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (windows .hlp, unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
=====Content=====<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
* generate target specific documentation<br />
** win32 documentation. (.chm format)<br />
** amiga documentation. (.guide format)<br />
** BeOS documentation.<br />
** MSDOS documentation. (.txt format)<br />
** OS/2 documentation. (.inf format)<br />
** RiscOS documentation.<br />
** SDL documentation.<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
----<br />
<br />
===Testbench===<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
<br />
----<br />
<br />
===Subsystems===<br />
<br />
====Translation====<br />
<br />
* Support for more languages.<br />
* Translation support for BeOS.<br />
* Translation support for MSDOS<br />
* Translation support for OS/2<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* currently VICE interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* 2nd button of C64GS joystick (cheetah annilihator) not implemented ( http://sourceforge.net/p/vice-emu/feature-requests/189/ )<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Monitor====<br />
<br />
* When loading a snapshot, the monitor break/watchpoints break.<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* Dual disk drive 2040/3040 support (DOS1, 670 blocks free) is not working<br />
* when using a dual drive, and no TDE, only the first drive (0:) can be used.<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
======Dual Drives======<br />
<br />
r25459 by Rhialto:<br />
<br />
I enabled up to DRIVE_NUM IEEE-488 drives, rather than 2 (in True Drive Emulation mode). In some places where they are enumerated, it is 4. The drives use their full 3 bits of jumpered drive number now, rather than just 1 bit.<br />
<br />
I have also generalised code so as to allow another dual drive. Since dual drives currently use up two device numbers, it will use 10 and 11. I'm currently simplifying the methods for checking the dualness of a drive.<br />
<br />
When that is done, I hope to have gained enough understanding of the code to remove the horrible hack of using 2 devices for a dual drive, and remove it. It looks like it will simplify a lot of code (including removing lots of code that I changed for allowing 2 dual drives). That will have some repercussions on the GUIs, since for every drive you may need to be able to attach ''two'' image files. It also would add an extra "drive" parameter (in addition to the current "unit" parameter) to a shedload of functions, although this is a pretty mechanical change. In fact, it is the GUI change that currently holds me back...<br />
<br />
'''TODO''': Think of some elegant way to represent settings for 8 floppy images (for 4 dual drives), without requiring all GUIs to be updated at once.<br />
<br />
'''TODO''': After that, I can rework the code to make dual drives more regular and hence allow 4 of them.<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
: 2016-10-20: This appears to have been fixed in at least the Gtk and Xaw ports: when hovering the mouse over the datasette status widget the image name is displayed in a 'tooltip'. (Bas Wassink)<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
----<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers only cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
* I/O "peek" function is broken<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* the POTX/POTY sampling period is not taken into account (512 cycles)<br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
** Interlaced mode ( https://sourceforge.net/tracker/?func=detail&aid=2871065&group_id=223021&atid=1057617 ) - This will require a major rewrite of the output as it is currently basically 640x200(ish) vertically stretched to keep the aspect right, but in interlaced it will have to go to 640x400ish with no vertical stretching. None of the other emulated models change output modes like this and it can break some platforms.<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is always set, ie. the VDC is never 'busy'. Fixing requires emulating the internal timing of the VDC..<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====spi-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
* some carts have no snapshot support yet (still broken: MMC64, Magic Voice, MMC Replay, MIDI, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
** RR-Net MK3: to get the ethernet functionality it must be explicitly enabled too, and will appear as a "clockport" internally (which is wrong)<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 ) '''TODO''': cycle accurate test programs<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
* CPU history (chist) implementation is incomplete<br />
----<br />
<br />
===Ports / UIs===<br />
<br />
* Make a list of Hotkeys used per port, compare and try to make them the same / alike. ( [[Hotkey cleanup]] )<br />
* enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]<br />
* Fix all Keymap handling according to [[Keymaps]]<br />
<br />
* VSID is not fully supported in all ports: dos, OSX<br />
<br />
* YUV rendering (used by amiga morphos and XAW) implementation is incomplete<br />
** scale2x not available<br />
** some renderers are missing<br />
** doublesize + y-stretch (2x4) doesnt work correctly<br />
<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
* add dual monitor support (for x128) ( https://sourceforge.net/tracker/?func=detail&aid=2780684&group_id=223021&atid=1057620 )<br />
* add realtime speed adjustment ui / hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=2904137&group_id=223021&atid=1057620 )<br />
<br />
* Monitor Improvements: ( also see [[MonitorUI]] )<br />
*:* keep monitor window open ( https://sourceforge.net/tracker/?func=detail&aid=2311669&group_id=223021&atid=1057620 )<br />
*:* enable more actions by mouse/hotkey ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
*:* use cbm font ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
* improve vsync / add option to sync to actual output framerate ( https://sourceforge.net/tracker/?func=detail&aid=3009846&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<big>The windows GUI has a lot of inconsistencies and really needs at least a partial re-write. Maintainers wanted!</big><br />
* In the win32 port keyboard input can be garbled after issuing a reset on CPU JAM.<br />
* the device buttons in the monitor ui are broken ( https://sourceforge.net/tracker/?func=detail&aid=2478267&group_id=223021&atid=1057617 )<br />
* a slider widget is missing to adjust "DriveSoundEmulationVolume" (integer, 0 - 4000, the volume of the drive noise emulation)<br />
* x64, xscpu64 and x128: proper setup for IEE488 cartridge is missing<br />
** x64, xscpu64 and x128: the name of the IEE488-cartridge ROM can not be selected in the gui ("IEEE488Image", string). <br />
** x64, xscpu64: the IEE488-cartridge ROM can not be enabled ("IEEE488", integer)<br />
* xpet is missing a menu item for userport diagnostics pin<br />
* xpet is missing menu item(s) for HRE hires graphics board<br />
* xpet is missing menu item(s) to configure the (PET!) keyboard type<br />
* xplus4: TED settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xvic: VIC settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xscpu64: VIC-II is missing menu item(s) to configure the glue logic type (model switching should be like x64sc!)<br />
* add "apply" button in video settings ( https://sourceforge.net/tracker/?func=detail&aid=3354016&group_id=223021&atid=1057620 )<br />
* add cassette control buttons/hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=3203245&group_id=223021&atid=1057620 )<br />
* make it possible to define ALT as a hotkey ( https://sourceforge.net/tracker/index.php?func=detail&aid=2909906&group_id=223021&atid=1057620 )<br />
* add option to run vice executable with high priority ( https://sourceforge.net/tracker/?func=detail&aid=2430983&group_id=223021&atid=1057620 )<br />
* gui to manage rom sets is missing<br />
* monitor-ui should get a scrollback buffer<br />
* popup widgets on tape- and drive-status (like in GTK) in statusbar is missing<br />
* resid passband/filter bias/gain should be sliders and work in realtime<br />
* move all "model" related settings that are now in seperated dialogs ("c64 model", "cia", "sid" etc) into one tabbed dialog<br />
* "help" menubar item should be aligned to the right<br />
* vsid has no status bar (and thus no volume control)<br />
<br />
=====Win32 DX9=====<br />
* There is a bug when moving the window partly outside the left edge of the screen. The rendered contents seem to "lock" to the left border. This seems to depend on the driver of the gfx adapter as is only shows on some machines.<br />
<br />
=====Windows 7=====<br />
* there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
=====Mingw64=====<br />
<br />
====X11 (XAW and GTK)====<br />
<br />
* The custom TextField widget is buggy and can cause crashes on DEC/Alpha machines, and possibly on other systems too. If you get weird X protocol errors or the file selector makes the emulator die when you close it, this might be the cause. <br />
*: '''Workaround''': recompile with the `--disable-textfield' option. If it still does not work, please tell us.<br />
* some text output may show broken characters for "foreign" UTF8 chars due to improver conversion (please report such cases!)<br />
* the initial window and canvas should be created using its final size and not resized later<br />
<br />
=====Vidmode=====<br />
<br />
* lightpen coordinates are not accurate when using vidmode for fullscreen<br />
* mouse warping when using vidmode for fullscreen is buggy<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
: '''Workaround''': use XRandR for fullscreen<br />
<br />
=====GTK=====<br />
<br />
* Gnome/GTK+ commandline options must come first (before any non-options)<br />
* the event handling is buggy, which results in some more or less broken behaviour eg when holding down ALT-D or ALT-B (the later in fullscreen mode)<br />
* add Session Management<br />
* improve Tape status widget, (.TAP vs .t64 handling is lousy.)<br />
* implement actual Monitor GUI (like in the windows port) ( https://sourceforge.net/tracker/?func=detail&aid=3317803&group_id=223021&atid=1057620 )<br />
* create a "open cartridge image" dialog allowing selection of any (bin) cartridge type and preview of .crt file info<br />
<br />
======GTK3======<br />
* gtkglext is not ready yet for GTK3, so hardware scaling will not work yet<br />
* the window is resizeable even when hardware scaling is not enabled<br />
<br />
=====XAW=====<br />
<br />
* Some DEC/Alpha machines crash due to the XAW implementation. <br />
*: '''Workaround''': Compile VICE with GNOME support `--enable-gnomeui' instead.<br />
* warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" may show up if none is defined in the environment<br />
*: '''Workaround''': define _XOPEN_SOURCE=600 on the commandline<br />
* Context popup menu for drive attach is broken if more than two drives are active.<br />
* when hardware rendering is enabled, greenish color might appear around the drawing area.<br />
* Aspect ratio/scaling is broken in fullscreen mode when hardware rendering is enabled (canvas is always stretched to fill the entire screen)<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
* mouse- and lightpen emulation/coordinates are broken on the second window (VDC/x128)<br />
* add "commandline options" help window (like in the windows port)<br />
* hide hidden files (dot files) in the filebrowser ( https://sourceforge.net/tracker/?func=detail&aid=2878433&group_id=223021&atid=1057620 )<br />
* implement "edit" (copy/paste) menu<br />
* add Drag'n'Drop support<br />
* the status bar area of the created window is larger than it should be<br />
* ffmpeg half frame-rate setting missing in "save media image" dialog (FFMPEGVideoHalveFramerate)<br />
* sound volume can not be changed using the GUI (SoundVolume)<br />
* datasette status widget is not implemented<br />
<br />
====MAC OSX====<br />
<br />
<big>'''the OSX port is somewhat outdated and needs fixing badly - Maintainer wanted!'''</big><br />
<br />
* ADD: the VSID GUI is missing and needs to be implemented<br />
* FIX: the xcbm5x0 and xcbm2 GUI should separated properly (eg in resource inspector)<br />
* FIX: the xscpu64 GUI is broken<br />
** copy from c64 UI, except for tape, no freezer cartridges<br />
* FIX: long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]] (r29610)<br />
* FIX: new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id). (r29938)<br />
** new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
* FIX: the joystick settings dialog is broken<br />
* FIX: joystick/mouse stuff is broken in resource inspector too<br />
* FIX: Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv. (r30294)<br />
* ADD: mouse init/shutdown calls to xcbm2 and xpet. (r30161)<br />
* FIX: Check and test UI items for Atari ST mouse, Atari CX-22 trackball, Smart Mouse. testprograms can be found in testprogs/propmouse<br />
<br />
* ADD: model selection for xplus4 is missing (r24285)<br />
: look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x64dtv is missing (r24287)<br />
: look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xcbm2/cbm5x0 is missing (r24326)<br />
: look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x128 is missing (r25052) <br />
: look at c128/c128model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xvic is missing (r26968) <br />
: look at vic20model_get/vic20model_set for models and functions, it works just like the c64 counterpart<br />
<br />
* ADD: 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
* ADD: Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection (r27914)<br />
* ADD: accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus (r28014)<br />
<br />
* ADD: new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h (r28982) convert code to use the list instead of hardcoding it<br />
* ADD: new API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime. (r30708)<br />
* ADD: added generic function/list for querying the enabled compile time features. (see vicefeatures.h) (r28935), this info should be shown in a dialog near the "about/help" stuff<br />
<br />
* FIX: cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h, direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead. (r24210)<br />
<br />
* FIX: ui_pause_emulation is not implemented (see r29876). when that is done "advance one frame" when in pause mode can be added to GUI.<br />
* FIX: check and fix in vicemachinecontroller.m, changed mon_reg_list_t->flags into a bitfield (see mon_register.h) (r28503)<br />
<br />
* FIX: updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
* FIX: X64->Help->If you click on Contributors, you get whatever was shown last in the help menu. If nothing was shown last, it will come up with a blank screen. If the License was shown last it will show the license, or if the Warranty was shown last, it will show the warranty if you click contributors.<br />
<br />
* ADD: support for HardSID USB ( https://sourceforge.net/tracker/?func=detail&aid=2714202&group_id=223021&atid=1057620 )<br />
<br />
* ADD: a lot of options are currently only available in the resource inspector and may be added to menus/dialogs<br />
* FIX: the resource inspector is incomplete/does not provide access to all resources<br />
* FIX: the I/O tree should get updated for other machines than C64<br />
<br />
* FIX: options->vicii->settings... opens an empty window<br />
* FIX: window->monitor window opens an empty window<br />
* FIX: window->debugger windows-> all dont work<br />
<br />
* FIX: Changed MMC64, MMCR and RetroReplay to use the new clockport system (r31947)<br />
** new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
** new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
** new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
* FIX: Added IDE64 clockport emulation (r31967)<br />
** new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
====Linux====<br />
<br />
* ADD: support for rtkit ( https://sourceforge.net/tracker/?func=detail&aid=3088679&group_id=223021&atid=1057619 )<br />
<br />
====MS-DOS====<br />
<br />
* In the MS-DOS port you have to save the configuration and restart the emulator when changing VDC double size mode.<br />
* ADD: real IEC device support via par port or ser port<br />
* ADD: proper lfn detection<br />
* FIX: X64->Video settings->VGA resolution->Mode 5: 640x480 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 7: 1024x768 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 11: 800x600 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 12: 1024x768 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 13: 640x480 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 16: 800x600 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->Video Standard->Cannot select NTSC.<br />
<br />
====AROS====<br />
<br />
* VICE 2.2a has no sound on AROS ( https://sourceforge.net/tracker/?func=detail&aid=2954913&group_id=223021&atid=1057617 )<br />
* ADD: PCI support for catweasel and hardsid<br />
<br />
====Amiga====<br />
<br />
* X64->Settings->REU settings->Enabling REU and changing the REU size crashes the emulator instead of giving any kind of error message.<br />
* crash on Amiga OS4 when changing language ( https://sourceforge.net/tracker/?func=detail&aid=3309859&group_id=223021&atid=1057617 )<br />
* crash on Amiga OS4 when changing to doublesize in fullscreen mode ( https://sourceforge.net/tracker/?func=detail&aid=3309865&group_id=223021&atid=1057617 )<br />
* Lightpen/gun support (21132)<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
====*BSD====<br />
<br />
* serial device hangs on open() in NetBSD 5.0.2 ( https://sourceforge.net/tracker/?func=detail&aid=3043294&group_id=223021&atid=1057617 )<br />
<br />
====BeOS====<br />
<br />
* Sometimes the application loses the keyboard focus; no keystrokes are accepted inside the emu, so the emulator has to be restarted.<br />
* Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* The monitor only works if you start the emulator from a terminal; if you start the emu from tracker and enter the monitor, you are "lost"<br />
* Fullscreen mode is not implemented.<br />
* Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
TODO: Lightpen driver and UI items for the following ports: amiga, beos, os/2<br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* Options->DirectWindow cannot be checked in all emulators.<br />
** It is checked by default if available, but not if system video driver support is missing and currently never in Haiku. I might add an error message at some point. --[[User:Loggedoubt|Loggedoubt]] 23:53, 22 May 2012 (UTC)<br />
<br />
* X64->Options->Expansion carts->magic voice options->Magic voice emulation and magic voice file cannot be checked.<br />
<br />
* X64->Options->Expansion carts->Easy Flash options->Save .crt file now->Error message might be better if said no .crt file attached.<br />
<br />
* X64->Expansion carts->MMC64 options->MMC64 emulation cannot be selected.<br />
<br />
* X64->settings->Drive settings->1551 shouldn't be there. (Plus4 only)<br />
** A symptom of a much larger problem: the drive type list isn't machine-specific at all. --[[User:Loggedoubt|Loggedoubt]] 15:58, 25 February 2012 (UTC)<br />
<br />
* XPlus4->Settings->V364 Speech options->V364 Speech emulation cannot be selected.<br />
<br />
* Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
====SDL====<br />
<br />
* there is no interface for browsing files inside (d64..) images<br />
* Drive>Fliplist settings>Add current image to fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Remove current image from fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach next image in fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach previous image in fliplist>Item needs status text to show that the action has been done.<br />
* A better way of showing filenames (maybe using contraction) needs to be made<br />
* Cartridge>MMC64>Enable MMC64 can not be used unless a MMC64 ROM has been selected, it should be made inactive if not<br />
* improve the Android port.<br />
<br />
<br />
=====OS/2=====<br />
<br />
*Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* X64->View->Video color settings->Dialog looks wrong, cannot tell what things are.<br />
** a symptom of the changes in the palette generator (see devlog) [[User:Gpz|Gpz]] 12:02, 21 March 2012 (UTC)<br />
** in this case the dialog is also screwed up and needs fixing.<br />
<br />
: '''Partially FIXED (rev 25626)''' (changes make emulator crash, cause still unknown)<br />
<br />
* X64->Setup->Magic voice settings->Magic voice cartridge cannot be selected.<br />
<br />
: '''This is because the ROM image file name is empty, this also occurs in all other ports, but might have gone unnoticed. It's true that an error message describing the fact that the ROM image name was empty would be nice, needs to be worked on.'''<br />
<br />
* X64->Setup->MMC64 settings->MMC64 cartridge cannot be selected.<br />
<br />
: '''This is because the ROM image file name is empty, this also occurs in all other ports, but might have gone unnoticed. It's true that an error message describing the fact that the ROM image name was empty would be nice, needs to be worked on.'''<br />
<br />
* X64->Help->Commandline Options crashes the emulator.<br />
<br />
* X128->Setup->unchecking VDC Double size crashes the emulator.<br />
<br />
* X128->Setup->unchecking VDC Double scan crashes the emulator.<br />
<br />
* X128->Setup->Cannot check VIC-1112 IEEE488 Interface.<br />
<br />
* Xcbm2->Setup->Model->CBM 620 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 620+ cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 710 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 720 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 720+ cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model Line->Clicking on any of the options makes the emulator crash.<br />
<br />
* Xvic->Setup->Can check double size, but it crashes the emulator.<br />
<br />
<br />
----<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/P64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* native screenshot support. (in progress) <br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
* sound sync needs a rewrite, its too complex and fails a lot<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** mp3@c64 support<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** RAM Floppy (REX 9680) support<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramlink support. ([http://unusedino.de/ec64/technical/aay/c64/rlmain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/ramlink.rar])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** german BTX cartridge (6809)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** "Disk Mate" (Datel)<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 numeric keypad support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
<br />
* Tape Port<br />
** RTC64 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/RTC64.rar])<br />
** Access dongle (Leaderboard/10th Frame) (https://sourceforge.net/tracker/?func=detail&aid=3030703&group_id=223021&atid=1057620)<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80 support.<br />
* cbm2 8088 support. ([http://www.cbm-ii.com])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* add support for dual disk drives<br />
* IEC<br />
** CMD harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/cmd-hard.rar]) (https://sourceforge.net/tracker/?func=detail&aid=2786810&group_id=223021&atid=1057620)<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** D9060/D9090 CBM harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/D9090-D9060.rar])<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Todo&diff=3470Todo2016-12-16T20:32:26Z<p>Blackystardust: /* Windows */</p>
<hr />
<div>==Prime Directive==<br />
<br />
* when adding/changing stuff that needs (G)UI items/changes, add a proper entry to the [[Developer_log]] to notify the UI maintainers.<br />
* when changing something that needs an update to text messages (and as such, the translation), add a proper entry to the [[Translator_log]] to notify the Translators.<br />
* when adding/changing command-line options and/or resources, adding a new feature or change the behavior of an existing feature, '''please update the documentation''' :)<br />
* after fixing a bug or implementing a new feature, update its status on the [https://sourceforge.net/tracker/?limit=50&group_id=223021&atid=1057617&status=1&submit=Filter Bug Tracker] and mark it as fixed in the list below.<br />
<pre><br />
<@_tlr> Please at least test the issue you were trying to fix before committing.<br />
</pre><br />
----<br />
<br />
==Known Issues==<br />
<br />
This is the list of known problems. also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057617&assignee=&status=4&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_resolution=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Bugs]<br />
<br />
This list always refers to the status of the last major release version, which was '''3.0'''. Items that have been fixed by the time of a major release will be removed, items fixed after that will be marked as fixed and stay until the next major version. New items will be added as noticed.<br />
<br />
----<br />
<br />
===Documentation===<br />
====MAN Pages====<br />
* the man pages are very outdated and should perhaps be generated from the infotext<br />
** the man pages refer to the path where the html documentation can be found, this should get adjusted to whats actually used<br />
* the following man pages are missing: vsid<br />
* man pages for the individual emulator binaries should get installed as symbolic links to vice.1<br />
<br />
====Manual====<br />
=====Technical=====<br />
* many nodes are not yet linked correctly, which makes some of the exporters output garbled and/or suboptimal output (windows .hlp, unix .info).<br />
<br />
: '''Workaround:''' use the .html or .pdf documentation, which is exported correctly.<br />
<br />
=====Content=====<br />
The documentation is partly outdated and/or incomplete, in particular:<br />
<br />
* some info that was previously hidden in target specific articles on the VICE knowledge base should get merged into vice.texi - the remaining articles are [[VICEKB|here]]<br />
* some descriptions of emulator formats are missing (D67, D1M, D2M, D4M...)<br />
* descriptions of several snapshot modules are missing (Plus4, TED...)<br />
* generate target specific documentation<br />
** win32 documentation. (.chm format)<br />
** amiga documentation. (.guide format)<br />
** BeOS documentation.<br />
** MSDOS documentation. (.txt format)<br />
** OS/2 documentation. (.inf format)<br />
** RiscOS documentation.<br />
** SDL documentation.<br />
<br />
for details look at doc/Documentation-Howto.txt<br />
<br />
----<br />
<br />
===Testbench===<br />
<br />
* many test programs (mostly for vic20) are not yet integrated into the automatic testing<br />
* '''TODO''': fix the reference screenshots and/or the scripts so they dont rely on the "normal" rendering mode anymore<br />
* '''TODO''': make a test program to determine visible screen dimensions<br />
<br />
----<br />
<br />
===Subsystems===<br />
<br />
====Translation====<br />
<br />
* Support for more languages.<br />
* Translation support for BeOS.<br />
* Translation support for MSDOS<br />
* Translation support for OS/2<br />
<br />
====Keyboard====<br />
<br />
* When a key which is shifted on the real machine but unshifted on the PC or Unix keyboard you are using is pressed, the virtual shift is pressed together (i.e. at the same clock cycle) with the main key; this could not work with some keyboard routines.<br />
<br />
: note: also see [[VICEKB#20-006|this knowledgebase article]]<br />
<br />
: '''Workaround''': If you have to use the function keys, press the (real) shift key manually (e.g. F2 = Shift + F1, F4 = Shift + F3 and so on); this also works with other keys.<br />
<br />
* When typing very quickly, some keypresses might get lost. This comes from the fact that the keyboard is (and can not) be scanned in real time (ie every 1mhz cycle). Even if we could remove the per frame scanning from the emulator itself, the operating system and last not least the keyboard itself would still impose a certain limit (something like 10ms for USB HID keyboards, for example). That means if a key is pressed and released within that timespan, the emulator does (and can not) know about it.<br />
<br />
: '''Workaround''': the only workaround is to type slower, it cant be fixed.<br />
<br />
* Some ports/emulators/keyboard-types do not have all required keymaps (and a fallback will used) - look at [[Keymaps]] for details<br />
<br />
* Although "shift lock" can be mapped to a key, not all ports and/or emulators support it due to missing keymaps and/or implementation details.<br />
: '''TODO''': check ports and fix or at least add a comment in the keymaps<br />
<br />
* contact-bounce is not emulated <br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick====<br />
<br />
* currently VICE interprets all buttons of a connected joystick as fire button ( https://sourceforge.net/tracker/?func=detail&aid=3292139&group_id=223021&atid=1057620 )<br />
* 2nd button of C64GS joystick (cheetah annilihator) not implemented ( http://sourceforge.net/p/vice-emu/feature-requests/189/ )<br />
* contact-bounce is not emulated<br />
: '''TODO''': make a proper test program<br />
<br />
====Joystick port devices====<br />
<br />
* Paperclip 64 dongle emulation is broken<br />
<br />
====Commandline====<br />
<br />
* some options where the available parameters depend on the machine type lack proper descriptions (-drivetype)<br />
<br />
====Monitor====<br />
<br />
* When loading a snapshot, the monitor break/watchpoints break.<br />
<br />
====History Recording====<br />
<br />
* history recording currently breaks on a lot of user actions, such as using autostart or attaching a cartridge.<br />
: '''Workaround''': make sure to start up with a bog standard c64, and then load/run the program in question manually<br />
* recording/playing back histories was broken in 2.2 ( https://sourceforge.net/tracker/?func=detail&aid=2925410&group_id=223021&atid=1057617 )<br />
note: since history recording is very error prone and hard to debug, we depend on feedback (on either failure or success) on this topic very much. if you still have problems with the current release, please report them including testcases.<br />
<br />
====Screenshots / Media Recording====<br />
* Screenshots with activated video filter (CRT emulation / Scale2x) do not deliver the expected (filtered) result.<br />
<br />
====Rendering====<br />
<br />
* some things are still shared by videochips although they shouldnt be, resulting in conflicts for eg the color generation (visible in x128 in ports that show two windows at a time, when crt emulation is enabled, eg adjusting brightness affects also the other window)<br />
* '''TODO''' add a 4:3 fixed aspect ratio scaling mode<br />
* '''TODO''' when a test program has been written, adjust the "normal" border mode accordingly (CAUTION: fix testsuite first)<br />
* '''TODO''' put all border mode parameters into arrays, make a global function to query the parameters and modes (for UIs) and then add "TV" mode (like "normal", but not centered)<br />
<br />
=====CRT Emulation=====<br />
<br />
* the rf-modulator output characteristics are not emulated, which means the so called "black bleeding" effect does not work (emusux0r, http://www.csdb.dk/release/?id=81780)<br />
* artefact color and luma/chroma crosstalk are not emulated (eg the "red/green stripes")<br />
* color generation should get a partial rewrite according to new research by pepto (http://colodore.com)<br />
<br />
see http://hitmen.c02.at/temp/palstuff/ for some further info on this topic.<br />
<br />
====Drive Emulation====<br />
<br />
* Dual disk drive 2040/3040 support (DOS1, 670 blocks free) is not working<br />
* when using a dual drive, and no TDE, only the first drive (0:) can be used.<br />
* G64 image support is incomplete, the speedzone definitions are completely ignored<br />
: ''Note: this is no problem in practise, so far not a single title (game) could be located that would actually require this kind of support to work''. Incase you find a program that needs this kind of support, please let us know.<br />
* RPM and Wobble settings have currently no effect when P64 images are used<br />
<br />
=====virtual Devices=====<br />
<br />
* handling of CBM style sub partitions is incomplete, write operations on sub partitions may give unexpected results.<br />
* RELative files are only supported when using disk images ( https://sourceforge.net/p/vice-emu/bugs/703/ )<br />
<br />
=====True Drive Emulation=====<br />
* serial timing latency is not implemented. due to their physical properties, it takes about half a cycle for a value to show up at the respective output pin after it has been written to the register. and respectivly, it takes about half a cycle from changing an input pin until the value in the respective register changes.<br />
* mechanical delays (such as head stepping and motor spinup) are not emulated yet.<br />
* accessing device #7 on the IEC bus works (only real devices), but it only works if True Drive Emulation is OFF, even though this has nothing to do with drives. This needs to be fixed in TDE somehow.<br />
======1541======<br />
* 1541 Emulation still fails a few test programs<br />
======1571======<br />
* 2mhz mode of the 1571 is not handled correctly<br />
** drive CPUs always run at 1Mhz for all drives (hardcoded 1000000 at a few places)<br />
** 1571 has extra delay on on reading sync inside the drive, ("you cannot use BVC in 2mhz mode!")<br />
* 1571CR emulation does not work correctly<br />
* double sided 1571 images do not work correctly<br />
======Dual Drives======<br />
<br />
r25459 by Rhialto:<br />
<br />
I enabled up to DRIVE_NUM IEEE-488 drives, rather than 2 (in True Drive Emulation mode). In some places where they are enumerated, it is 4. The drives use their full 3 bits of jumpered drive number now, rather than just 1 bit.<br />
<br />
I have also generalised code so as to allow another dual drive. Since dual drives currently use up two device numbers, it will use 10 and 11. I'm currently simplifying the methods for checking the dualness of a drive.<br />
<br />
When that is done, I hope to have gained enough understanding of the code to remove the horrible hack of using 2 devices for a dual drive, and remove it. It looks like it will simplify a lot of code (including removing lots of code that I changed for allowing 2 dual drives). That will have some repercussions on the GUIs, since for every drive you may need to be able to attach ''two'' image files. It also would add an extra "drive" parameter (in addition to the current "unit" parameter) to a shedload of functions, although this is a pretty mechanical change. In fact, it is the GUI change that currently holds me back...<br />
<br />
'''TODO''': Think of some elegant way to represent settings for 8 floppy images (for 4 dual drives), without requiring all GUIs to be updated at once.<br />
<br />
'''TODO''': After that, I can rework the code to make dual drives more regular and hence allow 4 of them.<br />
<br />
=====Extensions=====<br />
* when using dolphin dos 3 emulation, the state of the mc6821 is not saved to/restored from snapshots<br />
* when using supercard+ emulation, the optional additional index hole sensor (for the IHS nibbler) is not emulated<br />
=====Drive Noise=====<br />
* since the current implementation is a very simple sample player, things like "drive composer" will not work<br />
<br />
====Datasette Emulation====<br />
<br />
* unlike with a real datasette, the emulated counter will stop counting when no tape/image is present<br />
* when a t64 image is attached, the datasette status will incorrectly say "no image".<br />
: ''Note: since t64 is currently only accessable via kernal traps, the datasette emulation actually treats this case as if no image is present. The respective code must be updated so the datasette emulation actually "knows" about when t64 is in use.''<br />
: 2016-10-20: This appears to have been fixed in at least the Gtk and Xaw ports: when hovering the mouse over the datasette status widget the image name is displayed in a 'tooltip'. (Bas Wassink)<br />
* motor noise is not emulated<br />
<br />
====Tape port devices====<br />
<br />
* DTL Basic Dongle emulation is broken<br />
<br />
====Printer Emulation====<br />
<br />
* not really a bug: the printer output file is always created in the current working directory. ( https://sourceforge.net/tracker/?func=detail&aid=3305650&group_id=223021&atid=1057617 )<br />
: ''there perhaps should be a way to explicitly set a directory for printer output files'' [[User:Gpz|Gpz]] 01:24, 4 July 2011 (UTC)<br />
* printer noise is not emulated<br />
* printers don't work on the PET (or other IEEE-488 computers)<br />
<br />
----<br />
<br />
===c1541===<br />
<br />
* handling of .d81 CBM sub partitions and CMD DIR subdirectories is broken due to the way disk images are handled.<br />
** accessing files does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367519&group_id=223021&atid=1057617 )<br />
** listing directories does not work ( https://sourceforge.net/tracker/?func=detail&aid=3367517&group_id=223021&atid=1057617 )<br />
: ''unfortunately to fix this a lot of c1541 will have to be rewritten (mount image only once, not for each operation)'' [[User:Gpz|Gpz]] ([[User talk:Gpz|talk]]) 23:57, 13 December 2012 (UTC)<br />
<br />
* since virtual drive emulation does not support REL files on the host filesystem, c1541 can not extract them to R00 files ( https://sourceforge.net/p/vice-emu/bugs/702/ )<br />
<br />
----<br />
<br />
===Chips===<br />
<br />
====CIA====<br />
<br />
* the case when CIA1 port A and port B are both in output mode, port A outputs low, port B outputs high, both are connected via the keyboard matrix and a value is read from port B is not handled correctly ( testprogs/CIA/ciaports ; http://noname.c64.org/csdb/release/?id=5375 ) (has been improved but is not perfect)<br />
* the various analog side effects that must be considered when pressing two or more keys are not emulated correctly, so this will currently not produce the correct results in some corner cases.<br />
* Shift Register IRQ triggers only cycle too early (see [http://sourceforge.net/p/vice-emu/bugs/599/ this] bug)<br />
* I/O "peek" function is broken<br />
<br />
used in: C64, C128, 1570/71<br />
<br />
====SID====<br />
<br />
* the POTX/POTY sampling period is not taken into account (512 cycles)<br />
* POTX/POTY sampling jitter is not emulated<br />
* only one mouse or pair of paddles can be emulated at a time<br />
* 'dump' support in the monitor is missing<br />
<br />
used in: C64, C128, CBM2, (VIC20, PLUS4, PET: SID cart)<br />
<br />
====TED====<br />
<br />
* snapshots are broken<br />
* FLI does not work ( https://sourceforge.net/tracker/?func=detail&aid=3205787&group_id=223021&atid=1057617 )<br />
<br />
used in: Plus4<br />
<br />
====VDC====<br />
<br />
* Some basic features of the VDC are missing:<br />
** Interlaced mode ( https://sourceforge.net/tracker/?func=detail&aid=2871065&group_id=223021&atid=1057617 ) - This will require a major rewrite of the output as it is currently basically 640x200(ish) vertically stretched to keep the aspect right, but in interlaced it will have to go to 640x400ish with no vertical stretching. None of the other emulated models change output modes like this and it can break some platforms.<br />
* Registers 34/35 (horizontal blanking position) not implemented<br />
* $d600 bit 7 STATUS flag is always set, ie. the VDC is never 'busy'. Fixing requires emulating the internal timing of the VDC..<br />
* Differences between 8563 and 8568 are not all emulated, eg. register 38<br />
* Snapshot doesn't include VDC<br />
* Clock calculation for lightpen is incorrect<br />
<br />
used in: C128<br />
<br />
====VIC====<br />
<br />
* Idle fetch (or the lack of it) needs investigation<br />
* "Screen mixup" is not emulated<br />
* COLS=0 can lead to negative width in raster/ causing segfaults if not checked for in archdep video code<br />
* NTSC bugs:<br />
** raster line register values are incorrect near the end of frame (see testprogs/VIC20/split-tests/lightpen)<br />
** lightpen values are off (see testprogs/VIC20/split-tests/lightpen, http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=4870 )<br />
** some glitches when XPOS is 0, breaks (at least) Vicual MMIX credits part (http://www.cs.tut.fi/~albert/Pu-239/vicual-mmix/)<br />
<br />
used in: VIC-20<br />
<br />
====VIC-II====<br />
<br />
* the handling of MCBASE at power-on is incorrect (see testprogs/VICII/spritemcbase)<br />
*: note: this should only be visible directly after power-cycle on a 6569<br />
* DMA delay artifacts are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325466&group_id=223021&atid=1057617 )<br />
* Sprite fetch bugs in sideborder are not emulated correctly ( https://sourceforge.net/tracker/?func=detail&aid=3325426&group_id=223021&atid=1057617 )<br />
<br />
used in: C64, CBM2<br />
<br />
====VIC-IIe====<br />
<br />
* The test bit is not emulated, which results in things like 'real interlace' ([http://sites.google.com/site/h2obsession/CBM/C128/Interlace]) and the $D030 new VIC-IIe color palette hack ([http://www.commodore128.org/index.php?topic=3665.0]) not working.<br />
<br />
used in: C128<br />
<br />
====t6721a====<br />
<br />
* 48bit frames support is incorrect/broken<br />
* synthesizer condition 2 loss-effect-, shape- and repeat- bits have no effect<br />
* reading from the speach rom is not emulated (which is not really an issue since neither magic voice nor v364 have one)<br />
* snapshot support is missing<br />
<br />
used in: Magic Voice, Plus4 (V364)<br />
<br />
====mc6821====<br />
<br />
* interrupts are not implemented<br />
* implementation of C2 output modes is incomplete<br />
<br />
used in: Formel64, Magic Formel, Dolphin-DOS 3<br />
<br />
====CS8900a====<br />
<br />
* snapshot support is missing<br />
<br />
used in: RR-Net/TFE<br />
<br />
====RIOT====<br />
<br />
* I/O "peek" function is broken<br />
* I/O "dump" function is missing<br />
<br />
used in: 2040/3040/4040/1001/8050/8250<br />
<br />
====PC8477/DP8473====<br />
* I/O "dump" function is missing<br />
used in: FD4000/FD2000<br />
<br />
====WD1770====<br />
* I/O "dump" function is missing<br />
used in: 1570/1571/1581<br />
<br />
----<br />
<br />
===Cores===<br />
<br />
====spi-sdcard====<br />
* snapshot support is missing<br />
used in: MMC64, MMC Replay<br />
<br />
====spi-eeprom====<br />
* snapshot support is missing<br />
used in: MMC Replay<br />
<br />
====midi====<br />
* snapshot support is missing<br />
used in: C64, VIC-20<br />
<br />
----<br />
<br />
===Machines===<br />
<br />
====vsid====<br />
<br />
====x64 / x64sc====<br />
<br />
=====general=====<br />
<br />
* the memory layout for "Max Machine" is not yet correct<br />
* when SX-64 is selected, the tick for the CIA TOD clocks should always be 60Hz (regardless of PAL/NTSC)<br />
* for details see [[C64models]]<br />
<br />
=====x64 issues addressed by x64sc=====<br />
<br />
To clarify... these will never (as in can't) be emulated in the regular x64, unless we end up replacing x64 with x64sc. <br />
<br />
* some VIC-II bugs present in the old VIC-II core<br />
** inline gfx data changes are not emulated (see testprogs/VICII/gfxfetch/)<br />
** The VIC-II implementation lacks cycle exact sprite collision support<br />
** VIC-II shows wrong colors when switching from hires background to idle with borders open (see testprogs/VICII/border/*, Krestology)<br />
** VIC-II fetches from cartridge in ultimax mode can not be emulated properly for all carts<br />
note: this is also broken in xcbm2<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====x64 specific problems=====<br />
<br />
note: While most of the x64sc improvements/fixes are impossible to shoehorn into x64 (hence the split), a few things could still be improved:<br />
<br />
* testprogs/VICII/spritesteal (ntscold)<br />
* testprogs/VICII/spriteenable<br />
* missing open border on top of testprogs/VICII/sprite0move<br />
* testprogs/VICII/split-tests/modesplit<br />
* switching VICII border mode resets x64 ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
<br />
'''Workaround''' in all cases: use x64sc :)<br />
<br />
=====Cartridge System=====<br />
<br />
* some carts have no snapshot support yet (still broken: MMC64, Magic Voice, MMC Replay, MIDI, RR-Net MK3, Ethernet.)<br />
** IDE64 & ATA system can only handle "readonly" snapshots now. Somehow the image file must be matched to the snapshot to prevent corruption.<br />
* some carts do not work 100% yet (still broken: Magic Voice, MMC Replay.)<br />
** Magic Voice: emulation of the speech chip is incomplete (see [[Todo#t6721a]]), this breaks some words included in the magic voice rom and the "a-bee-c" cartridge. Memory mapping is incomplete/broken (which however affects no known software/testcase).<br />
** MMC Replay: only the BIOS mode works right now; the monitor may incorrectly access cartridge memory (even) if "bank cart" is explicitly set<br />
** RR-Net MK3: to get the ethernet functionality it must be explicitly enabled too, and will appear as a "clockport" internally (which is wrong)<br />
* the (very strange, and incompatible with most cartridges) passthrough port of the SFX sound expander is not emulated<br />
* various cartridges have no support for verbose i/o dump in the monitor<br />
* Passthrough port functionality depends on ordering of cartridge attaches, especially visible from the command line. (e.g. MMC64+RR ok, RR+MMC64 not)<br />
<br />
''note: the detailed todo list/status is [[cartsystem|here]].''<br />
<br />
====x128====<br />
<br />
* Support for fast mode (2MHz) is implemented but incomplete, detailed information about the stealing of cycles by the VICII when switching back from fast mode is missing and therefor the emulation of it is incorrect.<br />
* support for c128 specific expansion port handling/mapping is missing in the c64/c128 cartridge system (MMC Replay, FastLoad128, MACH128, other?)<br />
* the relative speed and details like cycle-stealing of the z80 is inaccurate ( https://sourceforge.net/tracker/?func=detail&aid=3476760&group_id=223021&atid=1057617 ) '''TODO''': cycle accurate test programs<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xvic====<br />
<br />
* programs that do not work for unknown reason:<br />
** "Grave Cave" ( https://sourceforge.net/tracker/?func=detail&aid=3297561&group_id=223021&atid=1057617 )<br />
* the naming of the VIAs in the sourcecode is mixed up, it should be VIA1 for the one at 9110 and VIA2 for the one at 9120<br />
<br />
====x64dtv====<br />
<big>The DTV emulator is very inaccurate and is in need of a partial rewrite. Maintainer wanted!</big><br />
<br />
* Misery 3: (http://noname.c64.org/csdb/release/?id=83196)<br />
** fails emudetect<br />
** plasma part is missing badlines<br />
* switching VICII border mode resets x64dtv ( https://sourceforge.net/tracker/?func=detail&aid=3004255&group_id=223021&atid=1057620 )<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xplus4====<br />
<big>The plus4 emulator is generally work in progress and not yet "ready". Maintainer wanted!</big><br />
* support for Snapshots is incomplete/broken (TED, PIA, V364 Speech, ...) ( https://sourceforge.net/tracker/?func=detail&aid=2878220&group_id=223021&atid=1057617 )<br />
* handling of the c0/c1/c2 roms is weak<br />
** cartridges share the same roms as internal roms<br />
** roms are not removed from the memory map if not present (just cleared)<br />
* emulation of the V364 speech chip is incomplete (see [[Todo#t6721a]])<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm2====<br />
<br />
* The CBM-II emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* breakpoints are broken<br />
** when a breakpoint is hit, the monitor disassembles from the wrong bank<br />
** breakpoints will only hit in the bank which is active in the monitor (!)<br />
* when running the burn-in diagnostic tests, the CIA is reported as bad ( https://sourceforge.net/tracker/?func=detail&aid=3102493&group_id=223021&atid=1057617 )<br />
: ''note: run like this: xcbm2 -model 610 -ntsc -drive8type 8050 -virtualdev +truedrive -8 cbm2-burnin.d80''<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xcbm5x0====<br />
* The emulator, when the execution bank is set to an open memory bank, sets the zeropage and stack access to unmapped, but actually existing memory. This is a bug but cannot be avoided with the current CPU code architecture.<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* banking in the monitor is broken<br />
* In the C510 emulation the VIC-II timing is not exact, i.e. the stopping of the CPU during bad lines is wrong.<br />
* The C510 emulation uses the old VIC-II core which means no cycle exact sprite collisions, no inline gfx changes, and probably more.<br />
* CPU history (chist) implementation is incomplete<br />
<br />
====xpet====<br />
* When running the "8296d diagnostic" test of the 8296 system disk on "xpet -model 8296" some tests fail:<br />
** when TDE is enabled, the program will hang. when TDE is disabled, the IEEE interface status will be reported as bad<br />
** the userport is reported as bad (perhaps some dongle is needed?)<br />
: ''note: run like this: "xpet -model 8296 -drive8type 8050 -8 8296d-systemdisk.d82 -editor edit-4-80-b-50Hz.901474-04.bin". the "burnin8296" program seems to be an older version of the "8296d diagnostic" program. it runs when TDE is enabled, but the 50Hz irq test fails.''<br />
* break- and watchpoints in zeropage are broken. this is because of the old cpu core, and can likely not be fixed without migrating to the new one.<br />
* some combinations of selected keymap and keyboard model do not work because of missing keymaps<br />
* CPU history (chist) implementation is incomplete<br />
----<br />
<br />
===Ports / UIs===<br />
<br />
* Make a list of Hotkeys used per port, compare and try to make them the same / alike. ( [[Hotkey cleanup]] )<br />
* enable/disable menu items in drive settings menu according to [[Drive_options_precedence]]<br />
* Fix all Keymap handling according to [[Keymaps]]<br />
<br />
* VSID is not fully supported in all ports: dos, OSX<br />
<br />
* YUV rendering (used by amiga morphos and XAW) implementation is incomplete<br />
** scale2x not available<br />
** some renderers are missing<br />
** doublesize + y-stretch (2x4) doesnt work correctly<br />
<br />
* make datasette interface nicer (hotkeys) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2525175&group_id=223021&atid=1057620 )<br />
* allow browsing of archives (zip etc) ( https://sourceforge.net/tracker/index.php?func=detail&aid=2942868&group_id=223021&atid=1057620 )<br />
* add dual monitor support (for x128) ( https://sourceforge.net/tracker/?func=detail&aid=2780684&group_id=223021&atid=1057620 )<br />
* add realtime speed adjustment ui / hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=2904137&group_id=223021&atid=1057620 )<br />
<br />
* Monitor Improvements: ( also see [[MonitorUI]] )<br />
*:* keep monitor window open ( https://sourceforge.net/tracker/?func=detail&aid=2311669&group_id=223021&atid=1057620 )<br />
*:* enable more actions by mouse/hotkey ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
*:* use cbm font ( https://sourceforge.net/tracker/?func=detail&aid=3134010&group_id=223021&atid=1057620 )<br />
* improve vsync / add option to sync to actual output framerate ( https://sourceforge.net/tracker/?func=detail&aid=3009846&group_id=223021&atid=1057620 )<br />
<br />
====Windows====<br />
<big>The windows GUI has a lot of inconsistencies and really needs at least a partial re-write. Maintainers wanted!</big><br />
* In the win32 port keyboard input can be garbled after issuing a reset on CPU JAM.<br />
* the device buttons in the monitor ui are broken ( https://sourceforge.net/tracker/?func=detail&aid=2478267&group_id=223021&atid=1057617 )<br />
* a slider widget is missing to adjust "DriveSoundEmulationVolume" (integer, 0 - 4000, the volume of the drive noise emulation)<br />
* x64, xscpu64 and x128: proper setup for IEE488 cartridge is missing<br />
** x64, xscpu64 and x128: the name of the IEE488-cartridge ROM can not be selected in the gui ("IEEE488Image", string). <br />
** x64, xscpu64: the IEE488-cartridge ROM can not be enabled ("IEEE488", integer)<br />
* xpet is missing a menu item for userport diagnostics pin<br />
* xpet is missing menu item(s) for HRE hires graphics board<br />
* xpet is missing menu item(s) to configure the (PET!) keyboard type<br />
* xplus4: TED settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xvic: VIC settings are missing model (pal/ntsc) selection (remove pal/ntsc switch in menu when added)<br />
* xscpu64: VIC-II is missing menu item(s) to configure the glue logic type (model switching should be like x64sc!)<br />
* add "apply" button in video settings ( https://sourceforge.net/tracker/?func=detail&aid=3354016&group_id=223021&atid=1057620 )<br />
* add cassette control buttons/hotkeys ( https://sourceforge.net/tracker/?func=detail&aid=3203245&group_id=223021&atid=1057620 )<br />
* make it possible to define ALT as a hotkey ( https://sourceforge.net/tracker/index.php?func=detail&aid=2909906&group_id=223021&atid=1057620 )<br />
* add option to run vice executable with high priority ( https://sourceforge.net/tracker/?func=detail&aid=2430983&group_id=223021&atid=1057620 )<br />
* gui to manage rom sets is missing<br />
* monitor-ui should get a scrollback buffer<br />
* popup widgets on tape- and drive-status (like in GTK) in statusbar is missing<br />
* resid passband/filter bias/gain should be sliders and work in realtime<br />
* move all "model" related settings that are now in seperated dialogs ("c64 model", "cia", "sid" etc) into one tabbed dialog<br />
* "help" menubar item should be aligned to the right<br />
* vsid has no status bar (and thus no volume control)<br />
<br />
=====Win32 DX9=====<br />
* There is a bug when moving the window partly outside the left edge of the screen. The rendered contents seem to "lock" to the left border. This seems to depend on the driver of the gfx adapter as is only shows on some machines.<br />
<br />
=====Windows 7=====<br />
* there seems to be a problem with ParSID ( https://sourceforge.net/tracker/?func=detail&aid=2981666&group_id=223021&atid=1057617 )<br />
=====Mingw64=====<br />
<br />
====X11 (XAW and GTK)====<br />
<br />
* The custom TextField widget is buggy and can cause crashes on DEC/Alpha machines, and possibly on other systems too. If you get weird X protocol errors or the file selector makes the emulator die when you close it, this might be the cause. <br />
*: '''Workaround''': recompile with the `--disable-textfield' option. If it still does not work, please tell us.<br />
* some text output may show broken characters for "foreign" UTF8 chars due to improver conversion (please report such cases!)<br />
* the initial window and canvas should be created using its final size and not resized later<br />
<br />
=====Vidmode=====<br />
<br />
* lightpen coordinates are not accurate when using vidmode for fullscreen<br />
* mouse warping when using vidmode for fullscreen is buggy<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
: '''Workaround''': use XRandR for fullscreen<br />
<br />
=====GTK=====<br />
<br />
* Gnome/GTK+ commandline options must come first (before any non-options)<br />
* the event handling is buggy, which results in some more or less broken behaviour eg when holding down ALT-D or ALT-B (the later in fullscreen mode)<br />
* add Session Management<br />
* improve Tape status widget, (.TAP vs .t64 handling is lousy.)<br />
* implement actual Monitor GUI (like in the windows port) ( https://sourceforge.net/tracker/?func=detail&aid=3317803&group_id=223021&atid=1057620 )<br />
* create a "open cartridge image" dialog allowing selection of any (bin) cartridge type and preview of .crt file info<br />
<br />
======GTK3======<br />
* gtkglext is not ready yet for GTK3, so hardware scaling will not work yet<br />
* the window is resizeable even when hardware scaling is not enabled<br />
<br />
=====XAW=====<br />
<br />
* Some DEC/Alpha machines crash due to the XAW implementation. <br />
*: '''Workaround''': Compile VICE with GNOME support `--enable-gnomeui' instead.<br />
* warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" may show up if none is defined in the environment<br />
*: '''Workaround''': define _XOPEN_SOURCE=600 on the commandline<br />
* Context popup menu for drive attach is broken if more than two drives are active.<br />
* when hardware rendering is enabled, greenish color might appear around the drawing area.<br />
* Aspect ratio/scaling is broken in fullscreen mode when hardware rendering is enabled (canvas is always stretched to fill the entire screen)<br />
* the mouse pointer is incorrectly un-grabbed when switching from/to fullscreen with the mouse- or lightpen emulation enabled.<br />
* mouse- and lightpen emulation/coordinates are broken on the second window (VDC/x128)<br />
* add "commandline options" help window (like in the windows port)<br />
* hide hidden files (dot files) in the filebrowser ( https://sourceforge.net/tracker/?func=detail&aid=2878433&group_id=223021&atid=1057620 )<br />
* implement "edit" (copy/paste) menu<br />
* add Drag'n'Drop support<br />
* the status bar area of the created window is larger than it should be<br />
* ffmpeg half frame-rate setting missing in "save media image" dialog (FFMPEGVideoHalveFramerate)<br />
* sound volume can not be changed using the GUI (SoundVolume)<br />
* datasette status widget is not implemented<br />
<br />
====MAC OSX====<br />
<br />
<big>'''the OSX port is somewhat outdated and needs fixing badly - Maintainer wanted!'''</big><br />
<br />
* ADD: the VSID GUI is missing and needs to be implemented<br />
* FIX: the xcbm5x0 and xcbm2 GUI should separated properly (eg in resource inspector)<br />
* FIX: the xscpu64 GUI is broken<br />
** copy from c64 UI, except for tape, no freezer cartridges<br />
* FIX: long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]] (r29610)<br />
* FIX: new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id). (r29938)<br />
** new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
* FIX: the joystick settings dialog is broken<br />
* FIX: joystick/mouse stuff is broken in resource inspector too<br />
* FIX: Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv. (r30294)<br />
* ADD: mouse init/shutdown calls to xcbm2 and xpet. (r30161)<br />
* FIX: Check and test UI items for Atari ST mouse, Atari CX-22 trackball, Smart Mouse. testprograms can be found in testprogs/propmouse<br />
<br />
* ADD: model selection for xplus4 is missing (r24285)<br />
: look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x64dtv is missing (r24287)<br />
: look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xcbm2/cbm5x0 is missing (r24326)<br />
: look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for x128 is missing (r25052) <br />
: look at c128/c128model.h for models and functions, it works just like the c64 counterpart<br />
* ADD: model selection for xvic is missing (r26968) <br />
: look at vic20model_get/vic20model_set for models and functions, it works just like the c64 counterpart<br />
<br />
* ADD: 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
* ADD: Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection (r27914)<br />
* ADD: accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus (r28014)<br />
<br />
* ADD: new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h (r28982) convert code to use the list instead of hardcoding it<br />
* ADD: new API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime. (r30708)<br />
* ADD: added generic function/list for querying the enabled compile time features. (see vicefeatures.h) (r28935), this info should be shown in a dialog near the "about/help" stuff<br />
<br />
* FIX: cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h, direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead. (r24210)<br />
<br />
* FIX: ui_pause_emulation is not implemented (see r29876). when that is done "advance one frame" when in pause mode can be added to GUI.<br />
* FIX: check and fix in vicemachinecontroller.m, changed mon_reg_list_t->flags into a bitfield (see mon_register.h) (r28503)<br />
<br />
* FIX: updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
* FIX: X64->Help->If you click on Contributors, you get whatever was shown last in the help menu. If nothing was shown last, it will come up with a blank screen. If the License was shown last it will show the license, or if the Warranty was shown last, it will show the warranty if you click contributors.<br />
<br />
* ADD: support for HardSID USB ( https://sourceforge.net/tracker/?func=detail&aid=2714202&group_id=223021&atid=1057620 )<br />
<br />
* ADD: a lot of options are currently only available in the resource inspector and may be added to menus/dialogs<br />
* FIX: the resource inspector is incomplete/does not provide access to all resources<br />
* FIX: the I/O tree should get updated for other machines than C64<br />
<br />
* FIX: options->vicii->settings... opens an empty window<br />
* FIX: window->monitor window opens an empty window<br />
* FIX: window->debugger windows-> all dont work<br />
<br />
* FIX: Changed MMC64, MMCR and RetroReplay to use the new clockport system (r31947)<br />
** new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
** new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
** new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
* FIX: Added IDE64 clockport emulation (r31967)<br />
** new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
** there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
<br />
====Linux====<br />
<br />
* ADD: support for rtkit ( https://sourceforge.net/tracker/?func=detail&aid=3088679&group_id=223021&atid=1057619 )<br />
<br />
====MS-DOS====<br />
<br />
* In the MS-DOS port you have to save the configuration and restart the emulator when changing VDC double size mode.<br />
* ADD: real IEC device support via par port or ser port<br />
* ADD: proper lfn detection<br />
* FIX: X64->Video settings->VGA resolution->Mode 5: 640x480 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 7: 1024x768 8Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 11: 800x600 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 12: 1024x768 16Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 13: 640x480 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->VGA resolution->Mode 16: 800x600 32Bit crashes the emulator.<br />
* FIX: X64->Video settings->Video Standard->Cannot select NTSC.<br />
<br />
====AROS====<br />
<br />
* VICE 2.2a has no sound on AROS ( https://sourceforge.net/tracker/?func=detail&aid=2954913&group_id=223021&atid=1057617 )<br />
* ADD: PCI support for catweasel and hardsid<br />
<br />
====Amiga====<br />
<br />
* X64->Settings->REU settings->Enabling REU and changing the REU size crashes the emulator instead of giving any kind of error message.<br />
* crash on Amiga OS4 when changing language ( https://sourceforge.net/tracker/?func=detail&aid=3309859&group_id=223021&atid=1057617 )<br />
* crash on Amiga OS4 when changing to doublesize in fullscreen mode ( https://sourceforge.net/tracker/?func=detail&aid=3309865&group_id=223021&atid=1057617 )<br />
* Lightpen/gun support (21132)<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
====*BSD====<br />
<br />
* serial device hangs on open() in NetBSD 5.0.2 ( https://sourceforge.net/tracker/?func=detail&aid=3043294&group_id=223021&atid=1057617 )<br />
<br />
====BeOS====<br />
<br />
* Sometimes the application loses the keyboard focus; no keystrokes are accepted inside the emu, so the emulator has to be restarted.<br />
* Sound problems on slower machines (P100) with a non-official driver for sb16.<br />
* The monitor only works if you start the emulator from a terminal; if you start the emu from tracker and enter the monitor, you are "lost"<br />
* Fullscreen mode is not implemented.<br />
* Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
TODO: Lightpen driver and UI items for the following ports: amiga, beos, os/2<br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* Options->DirectWindow cannot be checked in all emulators.<br />
** It is checked by default if available, but not if system video driver support is missing and currently never in Haiku. I might add an error message at some point. --[[User:Loggedoubt|Loggedoubt]] 23:53, 22 May 2012 (UTC)<br />
<br />
* X64->Options->Expansion carts->magic voice options->Magic voice emulation and magic voice file cannot be checked.<br />
<br />
* X64->Options->Expansion carts->Easy Flash options->Save .crt file now->Error message might be better if said no .crt file attached.<br />
<br />
* X64->Expansion carts->MMC64 options->MMC64 emulation cannot be selected.<br />
<br />
* X64->settings->Drive settings->1551 shouldn't be there. (Plus4 only)<br />
** A symptom of a much larger problem: the drive type list isn't machine-specific at all. --[[User:Loggedoubt|Loggedoubt]] 15:58, 25 February 2012 (UTC)<br />
<br />
* XPlus4->Settings->V364 Speech options->V364 Speech emulation cannot be selected.<br />
<br />
* Compiling with `--enable-ethernet` fails due to absence of rawnetarch.{c,h} missing --[[User:Compyx|Compyx]] 2016-10-26 (tested on Haiku)<br />
<br />
====SDL====<br />
<br />
* there is no interface for browsing files inside (d64..) images<br />
* Drive>Fliplist settings>Add current image to fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Remove current image from fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach next image in fliplist>Item needs status text to show that the action has been done.<br />
* Drive>Fliplist settings>Attach previous image in fliplist>Item needs status text to show that the action has been done.<br />
* A better way of showing filenames (maybe using contraction) needs to be made<br />
* Cartridge>MMC64>Enable MMC64 can not be used unless a MMC64 ROM has been selected, it should be made inactive if not<br />
* improve the Android port.<br />
* Debug/fix the XBOX SDL port.<br />
* Debug/fix the Windows-CE SDL ports.<br />
<br />
=====OS/2=====<br />
<br />
*Lightpen/gun support (21132)<br />
<br />
NEW: Lightpen/gun emulation in x64, x128 and xvic<br />
Resource: Lightpen (toggle)<br />
Resource: LightpenType (enum, see lightpen.h)<br />
0=Pen with button Up (TODO: product name Atari CX75)<br />
1=Pen with button Left (TODO: product name?)<br />
2=Datel Pen<br />
3=Magnum Light Phaser<br />
4=Stack Light Rifle <br />
NOTE: see SDL or win32 for driver implementation example<br />
<br />
* X64->View->Video color settings->Dialog looks wrong, cannot tell what things are.<br />
** a symptom of the changes in the palette generator (see devlog) [[User:Gpz|Gpz]] 12:02, 21 March 2012 (UTC)<br />
** in this case the dialog is also screwed up and needs fixing.<br />
<br />
: '''Partially FIXED (rev 25626)''' (changes make emulator crash, cause still unknown)<br />
<br />
* X64->Setup->Magic voice settings->Magic voice cartridge cannot be selected.<br />
<br />
: '''This is because the ROM image file name is empty, this also occurs in all other ports, but might have gone unnoticed. It's true that an error message describing the fact that the ROM image name was empty would be nice, needs to be worked on.'''<br />
<br />
* X64->Setup->MMC64 settings->MMC64 cartridge cannot be selected.<br />
<br />
: '''This is because the ROM image file name is empty, this also occurs in all other ports, but might have gone unnoticed. It's true that an error message describing the fact that the ROM image name was empty would be nice, needs to be worked on.'''<br />
<br />
* X64->Help->Commandline Options crashes the emulator.<br />
<br />
* X128->Setup->unchecking VDC Double size crashes the emulator.<br />
<br />
* X128->Setup->unchecking VDC Double scan crashes the emulator.<br />
<br />
* X128->Setup->Cannot check VIC-1112 IEEE488 Interface.<br />
<br />
* Xcbm2->Setup->Model->CBM 620 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 620+ cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 710 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 720 cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model->CBM 720+ cannot be checked, also crashes the emulator.<br />
<br />
* Xcbm2->Setup->Model Line->Clicking on any of the options makes the emulator crash.<br />
<br />
* Xvic->Setup->Can check double size, but it crashes the emulator.<br />
<br />
<br />
----<br />
<br />
==External Libraries==<br />
VICE uses a few external libraries of which either header files or complete sources are included in the tree:<br />
<br />
* opencbm (src/opencbm.h) (https://sourceforge.net/p/opencbm/)<br />
** should get moved to src/lib/..<br />
* P64 (src/lib/P64)<br />
* ffmpeg (src/lib/libffmpeg)<br />
** building with `--enable-shared-ffmpeg` will fail when not root. VICE's configure triggers a build and install of liblame which tries to install into /usr/local/lib.<br />
<br />
besides the above, other libraries are used which are currently linked dynamically and must be supplied as dlls for the windows port<br />
<br />
* SDL<br />
* zlib<br />
* hardsid<br />
<br />
==Rewrites==<br />
<br />
* The "sc" rewrites. Migrate emulators to the cycle based CPU core (6510dtvcore.c, should be renamed), which allows:<br />
** cycle based hooks for complex hardware expansions (SCPU)<br />
** in-line graphics data change emulation (see testprogs/VICII/gfxfetch)<br />
** cycle exact Blitter/DMA vblank start and proper LinearA/B counter handling on x64dtv<br />
** cycle based drawing<br />
* ...and requires (at least):<br />
** rewrite video chip modules to use:<br />
*** cycle based fetch/etc (VIC & VICII done, VICII-DTV in progress)<br />
*** cycle based drawing (VICII done)<br />
** remove 1 clock write offsets (at least CIA/VIA already handled)<br />
** an insane amount of regression testing (preferably with new testprogs where needed)<br />
<br />
==New Features==<br />
<br />
This is the place for the VICE developers to put down ideas about the future development of VICE. <br />
<br />
Some of these ideas might never be realized, and might look completely absurd, but they could be the inspiration for other ideas. <br />
<br />
By putting these ideas down they will be known to any other developers that would like to pick up one of the ideas and implement it.<br />
<br />
also look at [https://sourceforge.net/tracker/?limit=100&func=&group_id=223021&atid=1057620&assignee=&status=1&category=&artgroup=&keyword=&submitter=&artifact_id=&assignee=&status=1&category=&artgroup=&submitter=&keyword=&artifact_id=&submit=Filter&mass_category=&mass_priority=&mass_assignee=&mass_artgroup=&mass_status=&mass_cannedresponse= Tracker: open Feature Requests]<br />
<br />
===general===<br />
<br />
* native screenshot support. (in progress) <br />
* script language integration. (lua or python perhaps)<br />
* Some more Kernal patches, for instance for changing colors and patching the reset routine to make it faster (maybe configurable).<br />
* proper support for paddles (https://sourceforge.net/tracker/?func=detail&aid=2686763&group_id=223021&atid=1057620)<br />
* integrate a rs232->telnet codepath (https://sourceforge.net/tracker/?func=detail&aid=3033061&group_id=223021&atid=1057620)<br />
* option to autostart in already running instance ( https://sourceforge.net/tracker/?func=detail&aid=3201905&group_id=223021&atid=1057620 )<br />
* option to save attached (disk/tape/cart) images at shutdown, restore at next run ( https://sourceforge.net/tracker/?func=detail&aid=3302938&group_id=223021&atid=1057620 )<br />
* use second joystick button as auto fire ( https://sourceforge.net/tracker/index.php?func=detail&aid=2459184&group_id=223021&atid=1057620 )<br />
<br />
====History Recording====<br />
<br />
* (optionally) make quicksave filenames depend on image filename ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
* find a way to not include the actual game binary in a history file ( https://sourceforge.net/tracker/?func=detail&aid=3295768&group_id=223021&atid=1057620 )<br />
<br />
====Keyboard====<br />
<br />
====Tape====<br />
* support for DC2N .dmp files (cassette files) ( https://sourceforge.net/tracker/?func=detail&aid=3203248&group_id=223021&atid=1057620 )<br />
<br />
====Monitor====<br />
<br />
* (optionally) display all executed commands when in trace mode ( https://sourceforge.net/tracker/?func=detail&aid=3356800&group_id=223021&atid=1057620 )<br />
* improve handling of memory ranges ( https://sourceforge.net/tracker/?func=detail&aid=3161941&group_id=223021&atid=1057620 )<br />
<br />
====Sound System====<br />
<br />
* sound sync needs a rewrite, its too complex and fails a lot<br />
<br />
====Video System====<br />
<br />
* implement a generic framerate converter (screen blending) ( https://sourceforge.net/tracker/?func=detail&aid=2792693&group_id=223021&atid=1057620 )<br />
* add option to rotate / flip / mirror the output ( https://sourceforge.net/tracker/?func=detail&aid=3291057&group_id=223021&atid=1057620 )<br />
* add an option in the CRT emulator / Palette generator to simulate b/w,amber,green monitors ( https://sourceforge.net/tracker/index.php?func=detail&aid=3052248&group_id=223021&atid=1057620 )<br />
<br />
* some kind of generic interface to handle video input is required to handle scanner/digitizer type of carts<br />
<br />
===Hardware emulation===<br />
<br />
====SID====<br />
* add support for Catweasel MK4 style playback ( https://sourceforge.net/tracker/?func=detail&aid=2962481&group_id=223021&atid=1057620 )<br />
<br />
====x64(sc)====<br />
<br />
* internal (?)<br />
** c64/c128 1.44 MB disk drive support. ([http://www.market.croadria.com/c64/c64diskTR20.shtml])<br />
** c64/c128 SCSI expansion support. ([http://www.zimmers.net/anonftp/pub/cbm/documents/projects/scsi/index.html])<br />
<br />
* Cartridges<br />
** IDE64 improvements<br />
*** IDE64 eth64 shortbus expansion support. ([http://www.volny.cz/dundera/eth64.html])<br />
*** IDE64 duart shortbus expansion support. ([http://www.volny.cz/dundera/duart.html])<br />
** Clockport improvements<br />
*** Silversurfer (UART) support ([http://rr.c64.org/wiki/Inside_Surfer.txt])<br />
*** mp3@c64 support<br />
*** IDE64 based eth64-II support ([http://www.ide64.org/eth64v2.html])<br />
** Community Information Locator Commodore 64/128 addon cartridge ([http://starbase.globalpc.net/~jbevren/kiosk/writeup.txt])<br />
** RAM Floppy (REX 9680) support<br />
** Daisy Sound sampler audio input support. ([http://www.cbmhardware.de/dlmanager/download.php?id=243])<br />
** PS64 speech cartridge support. ([http://oms.wmhost.com/ps64/]) <br />
** Voice Messenger speech cartridge support. ([http://www.c64-wiki.de/index.php/Voice_Messenger])<br />
** ramlink support. ([http://unusedino.de/ec64/technical/aay/c64/rlmain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/ramlink.rar])<br />
** ramdrive support. ([http://mikenaberezny.com/hardware/c64-128/cmd-ppi-ramdrive/])<br />
** turbo master cartridge support (4Mhz 65C02). ([http://headgap.com/Library/64/4%20MHZ%2064.txt] [http://members.optusnet.com.au/vortex69/DRIVERS/CPU-TURBOMASTER.jpg])<br />
** turbo process cartridge support (4Mhz 658156). ([http://retroisle.com/commodore/c64128/Utilities/rmtp.zip6] [http://www.zimmers.net/anonftp/pub/cbm/documents/projects/accelerators/turboprocess/index.html])<br />
** flash-8 cartridge support (8Mhz 65816). ([http://www.spacetaxi.bravehost.com/DRIVERS/FLASH-8.rar])<br />
** SCPU cartridge support (20Mhz 65816). (in progress, has lead to a new emulator called xscpu64) ([http://unusedino.de/ec64/technical/aay/c64/scpumain.htm] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/SuperCPU.zip]) (https://sourceforge.net/tracker/?func=detail&aid=2030692&group_id=223021&atid=1057620)<br />
** The Final Chesscard (65c02) ([http://www.cbmhardware.de/misc/c64parts.php])<br />
** german BTX cartridge (6809)<br />
** MasC=uerade Cartridge Converter support, this cart is originally intended to use c64 carts on the vic20, but in theory could also be used the other way around. ([http://www.go4retro.com/projects/converter/])<br />
** BI-80 cartridge support. ([http://mikenaberezny.com/hardware/peripherals/bi-80-display-adapter/])<br />
** Buscard II IEEE488/printer-port cartridge support. ([http://mikenaberezny.com/hardware/peripherals/buscard-ii-ieee-488-interface/])<br />
** "Disk Mate" (Datel)<br />
** MAYA Software Eprom Cart<br />
** PCC-4/PCC-8 Eprom Cart (Jason Ranheim)<br />
** "Alien Flash"<br />
*** VICEminus had this<br />
** [https://csdb.dk/release/index.php?id=150339 Software of Sweden Megacart]<br />
** [https://datadoor.bandcamp.com/album/dubcrt DUBCRT]<br />
<br />
* Cartridges that wont be emulated:<br />
** ''SoftPROM cartridge ([http://www.c64-wiki.de/index.php/SOFT-PROM])''<br />
*** ''pointless, unless software specifically designed for this cart can be found. other than that its just an ordinary 8k game cart (with battery backed up ram instead of rom). [[User:Gpz|Gpz]] 23:01, 30 October 2010 (UTC)''<br />
** ''Net64 cartridge support. ([http://www.harbaum.org/till/c64/index.shtml])''<br />
*** ''this is exactly the same as "the final ethernet" (which is emulated) [[User:Gpz|Gpz]] 23:27, 30 October 2010 (UTC)''<br />
** ''64NIC''<br />
*** ''again, same as TFE. also has an optional eprom, which is equivalent to using cart8''<br />
** ''"GeoAction"''<br />
*** ''pointless, equivalent to Action Replay + GeoRAM/RamCart''<br />
** ''"Flash Gordon"''<br />
*** ''pointless, external kernal with flash, prototype (not released)''<br />
<br />
* Userport<br />
** CBM1660 (userport) modem300 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** CBM1670 (userport) modem1200 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** FB-RS232 (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/swift-a.rar])<br />
** c64 p64 midi interface: ([http://www.firestarter-music.de/prophetcart/p64_fullmidi_V1_1.jpg])<br />
** Scanntronik handyscanner (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/scanner.rar])<br />
** Video Byte II video digitizer (userport) support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/video-digitize.rar]) ([http://moogle-tech.com/blog/?p=104])<br />
** Computera Eyes video digitizer (userport) support. ([http://www.spacetaxi.bravehost.com/DRIVERS/Computer%20eyes.zip] [http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/COMPUTER-EYES-64.zip])<br />
** Userport RocketDrive support. ([http://www.cbmhardware.de/avr/homepage.html])<br />
** CIA-IDE-HD support. ([http://members.optusnet.com.au/vortex69/PC-HARDWARE/CIA-IDE-HD/CIA-IDE-HD.html])<br />
** Aprotek universal rs232 adapter support. ([http://mikenaberezny.com/hardware/peripherals/aprotek-universal-rs-232/])<br />
** Comet64 support. ([http://www.commodoreserver.com/ProductView.asp?PID=365065CF529B4C408F7D01C08BA34803])<br />
** L. Pantarottos adapter support. ([http://www.synnes.org/c64/c64_joy_adapter_schematics.html])<br />
<br />
* Joystick Port<br />
** c64/c128 numeric keypad support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
** c64/c128 pc-joystick support. ([http://members.elysium.pl/ytm/html/projects.html])<br />
** datel 3-button mouse support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/1351a.rar])<br />
** animation station support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/koala-pad&Animation%20station.rar])<br />
** Power-pad support.<br />
** super sketch support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/super-sketch.rar])<br />
** add support for switching the emulated 1351 mouse to joystick mode by doing a hard reset while pressing the right mouse button ( https://sourceforge.net/tracker/?func=detail&aid=2631893&group_id=223021&atid=1057620 )<br />
** add support for 8player joystick adapter "inception" ([http://www.c64.cz/inception/])<br />
<br />
* Tape Port<br />
** RTC64 support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/RTC64.rar])<br />
** Access dongle (Leaderboard/10th Frame) (https://sourceforge.net/tracker/?func=detail&aid=3030703&group_id=223021&atid=1057620)<br />
<br />
* Video output.<br />
** c64 LCD64 screen support. ([http://www.64hdd.com/projects/c64-proj3.html])<br />
<br />
====x128====<br />
<br />
* c128 plus60k support.<br />
* c128 plus256k support.<br />
* c128 256K memory expansion hack support.<br />
<br />
====xvic====<br />
* VIC20 RTC cartridge support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* ''vic20 iec2ata support. ([http://www.djupdal.org/cbm/iecata/])''<br />
** ''pointless to emulate, as it is a simple iec device, very similar to what you get when using virtual drive on the filesystem.'' [[User:Gpz|Gpz]] 05:08, 15 August 2010 (UTC)<br />
* vic20 ethernet support. ([http://members.lycos.co.uk/leeedavison/6502/vic20/network/index.html])<br />
* support for modified vic20 ( https://sourceforge.net/tracker/?func=detail&aid=3315683&group_id=223021&atid=1057620 )<br />
* .crt like cartridge format (.vrt), perhaps take it from vice-minus ( http://viceminus.git.sourceforge.net/git/gitweb.cgi?p=viceminus/viceminus;a=commit;h=29c32f2ea2d299cb40228030c355625e800a00ca )<br />
* add Cartridge attach heuristic for image pairs<br />
<br />
====xplus4====<br />
* add support for "speedy" freezer cartridge<br />
<br />
====xpet====<br />
* PET ROM-socket RTC support. ([http://jledger.proboards.com/index.cgi?board=microhacking&action=display&thread=2381])<br />
* 8296 pet hardware ram lines connected to userport support.<br />
* 8296 RAMdisk 2008 support. ([http://www.cbmhardware.de/cbmrd2008/index.php])<br />
* 8296 pet switchable 4 screens output support.<br />
* pet IEEE488 -> IDE/RS232 support. ([http://petcbmide.blogspot.com/])<br />
* High-Res Technologies Graphics Board support. ([http://mikenaberezny.com/hardware/projects/high-res-technologies-graphics-board/])<br />
* MTU K-1002-2 DAC sound system support. ([http://mikenaberezny.com/hardware/peripherals/mtu-k-1002-2-dac/])<br />
<br />
====xcbm2====<br />
* cbm2 z80 support.<br />
* cbm2 8088 support. ([http://www.cbm-ii.com])<br />
<br />
====Drives====<br />
<br />
* (optionally) automatically enable warp mode when drives are being accessed. ( https://sourceforge.net/tracker/?func=detail&aid=2028999&group_id=223021&atid=1057620 )<br />
* add support for dual disk drives<br />
* IEC<br />
** CMD harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/cmd-hard.rar]) (https://sourceforge.net/tracker/?func=detail&aid=2786810&group_id=223021&atid=1057620)<br />
** IEC2IEEE/RS232C adapter support. ([http://mikenaberezny.com/hardware/projects/interpod-ieee-488-interface/])<br />
** ''sd2iec / uIEC support ( https://sourceforge.net/tracker/?func=detail&aid=3287595&group_id=223021&atid=1057620 )''<br />
**: ''somewhat pointless, since this would be very much what you get from using the virtual filesystem drive'' [[User:Gpz|Gpz]] 07:02, 11 July 2011 (UTC)<br />
* IEEE<br />
** D9060/D9090 CBM harddrive support. ([http://members.optusnet.com.au/spacetaxi64/DRIVERS/DRIVER-FILES/D9090-D9060.rar])<br />
** MiniChief type harddrives support. ([http://www.zimmers.net/anonftp/pub/cbm/manuals/drives/MiniChief.zip])<br />
** MW1000 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/SSEL.doc])<br />
** Alpha20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Apstor-20-SBS.doc])<br />
** Alpha10 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Alpha-10.doc])<br />
** Borsu20 HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/BORSU-20mb.doc])<br />
** HardBox HD support. ([http://members.optusnet.com.au/vortex69/HD-HISTORY/Hardbox.doc])<br />
** Mator Shark HD support. ([http://mikenaberezny.com/hardware/peripherals/mator-shark-hard-drive/])<br />
<br />
====Printers====<br />
* (optionally) make printer output pixel perfect ( https://sourceforge.net/tracker/?func=detail&aid=2476279&group_id=223021&atid=1057620 )<br />
* IEC<br />
** DPS1101 support.<br />
** MPS801 support.<br />
** MPS802/CBM1526 support.<br />
** MPS1000 support.<br />
** MPS1250 support.<br />
** Fidelity Impact Printer support. ([http://mikenaberezny.com/hardware/peripherals/fidelity-impact-printer/])<br />
* IEEE<br />
** MPS1361 support.<br />
** CBM4022 support.<br />
** CBM8023 support.<br />
** CBM8024 support.<br />
<br />
====Misc====<br />
<br />
* add/implement C65 emulator ( https://sourceforge.net/tracker/?func=detail&aid=2472096&group_id=223021&atid=1057620 )</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Keymaps&diff=3469Keymaps2016-12-16T19:35:23Z<p>Blackystardust: /* update menus */</p>
<hr />
<div>Reason for this page: handling auf keymaps was a bit messy in some places in the past, unnecessary complex to maintain (eg hardcoded filenames in archdep code dont make updating a lot easier). It has been reworked to handle everything at one central place, with a minimum set of resources which are valid for all emulators. This will make both adding new keyboard types and updating the respective ports easier in the future. At the same time a somewhat more sane default behaviour that always works "as expected" automatically will be achived, based on the general assumption that the casual user never even wants to be bothered with setting up keymaps at all :)<br />
<br />
=== considerations ===<br />
<br />
* host (pc) keyboards have a "machine" and "locale" type. the "machine" type is defined by the port (windows, x11, sdl etc) and the "locale" type by what type of keyboard the user has connected (we currently have different maps for US, DE, UK, FI, NO, DA etc... keyboards)<br />
<br />
* emulated keyboards have a "positional" and a "symbolic" type. the former referring to the actual hardware (keyboard matrix and key positions) and the later referring to what is actually written on the keycaps. (for example the localized c128 keyboards would all have the same "positional" type, but different "symbolic" types. fortunately the total combinations of these is small, so we can define one type per such combination.<br />
<br />
* we support two fundamentally different type of keyboard mappings, "symbolic" and "positional".<br />
<br />
==implementation==<br />
<br />
=== resources ===<br />
<br />
* "KeymapIndex" - (integer) selects active keymap (default:0) (0: symbolic, 1: positional, 2: user defined symbolic, 3: user defined positional)<br />
* "KeymapSymFile" - (string) name of the keymap to use for symbolic mapping (default:automatically set, see below)<br />
* "KeymapPosFile" - (string) name of the keymap to use for positional mapping (default:automatically set, see below)<br />
* "KeymapUserSymFile" - (string) name of user defined symbolic keymap (default: "<port>_sym.vkm")<br />
* "KeymapUserPosFile" - (string) name of user defined positional keymap (default: "<port>_pos.vkm")<br />
<br />
* "KeyboardType" - (Integer) emulated keyboard type. (default:0) <br />
** C128 0: International, 1: Finnish,French, 3: German, 4: Italian, 5: Norwegian, 6: Swedish (not used by x128 yet)<br />
** PET: (pet-resources.h) 0 "buus" 1: "buuk" 2: "bude" 3: "bujp" 4: "grus"<br />
** others: always 0<br />
:: This resource will get updated when the machine model changes, and can be individually updated in the user interface.<br />
<br />
NOTE: more info on local keyboard variants wanted, what about CBM2, C64... some VIC20 info [http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=7388&p=79621#p79621 here]<br />
<br />
* "KeyboardMapping" - (integer) host keyboard layout type (default:0) <br />
** 0 American (us) suffix: ""<br />
** 1 British "uk"<br />
** 2 German "de"<br />
** 3 Danish "da"<br />
** 4 Norwegian "no"<br />
** 5 Finnish "fi"<br />
** 6 Italian "it"<br />
:: this list may be expanded as needed<br />
<br />
NOTE: suggestions for more languages that we should add as a default here wanted...<br />
<br />
=== command line options ===<br />
<br />
* "-keymap" - sets "KeymapIndex" (and loads keymap indirectly)<br />
* "-keyboardtype" - sets "KeyboardType" (and loads keymap indirectly)<br />
* "-keyboardmapping" - sets "KeyboardMapping" (and loads keymap indirectly)<br />
* "-symkeymap" sets "KeymapUserSymFile" directly<br />
* "-poskeymap" sets "KeymapUserPosFile" directly<br />
<br />
=== defaults ===<br />
<br />
* when the emulator starts and finds "KeymapSymFile" and "KeymapPosFile" empty, <br />
** an archdep function is called which returns the type of keyboard connected -> <tt>src/arch/<port>/archdep*: kbd_arch_get_host_mapping()</tt><br />
** "KeyboardMapping" is initialized with that value, and the resulting keymap loaded (done)<br />
<br />
The goal is to automatically configure and load the right keyboard map for a given combination of host OS/language/layout and emulated system.<br />
<br />
=== loading the keymap ===<br />
<br />
a central function which is called if any of "KeymapIndex", "KeyboardType", "KeyboardMapping" changed handles loading the new keymap. -> <tt>keyboard.c:switch_keymap_file()</tt><br />
<br />
* if "KeymapIndex" is not 0 or 1, then load the respective user keymap and skip any further automatic actions<br />
<br />
* else try loading a keymap with the filename constructed as below.<br />
<br />
* if that fails, find a proper fallback:<br />
** if a positional map is not available, not much can be done other than switching to symbolic mapping instead, so do that...<br />
** remove the <mapping> part from the filename, ie try to load <port>_<type>_sym.vkm (for ports that have more than one emulated keyboard type, this MUST exist)<br />
** as last resort, always use <port>_sym.vkm (which MUST exist)<br />
<br />
* generally after loading update "KeymapIndex", "KeyboardType", "KeyboardMapping" and "KeymapSymFile"/"KeymapPosFile" to reflect the keymap that was actually loaded<br />
<br />
=== constructing the filename ===<br />
<br />
-> <tt>keyboard.c:try_set_keymap_file()</tt><br />
<br />
generally the filename of a keymap will be constructed according to this scheme:<br />
<br />
<port>_<type>_<idx>_<mapping>.vkm<br />
<br />
where:<br />
<br />
* <port> is a string constant defined in archdep code (eg "x11", "sdl", "win" etc) -> <tt>KBD_PORT_PREFIX</tt> in <tt>src/arch/<port>/kbd.h</tt><br />
* <type> is a string returned by a machine specific function. this function should return NULL if the type string would be empty (the machine has no keyboard types) else eg "bkuk", "gkuk", "bkde" etc. (the returned string should be no more than 4 characters) -> <tt>machine_get_keyboard_type_name()</tt><br />
* <idx> is a string derived from "KeymapIndex", where 0 is "sym" and 1 is "pos"<br />
* <mapping> is a string derived from "KeyboardMapping", where 0 is an empty string and 1 is "de" (... 2: "fi" 3: "se" etc if needed)<br />
<br />
(this should in many cases not even require renaming any .vkm files)<br />
<br />
* a solution must be found for targets that only support 8.3 filenames, sth like<br />
<br />
** if "<type><idx><mapping>" is 4 characters (or less), use <port>_<type><idx><mapping>.vkm<br />
*** else:<br />
**** get short <port> string from constant defined in archdep code (max 2 characters, eg "md" for msdos)<br />
**** get short <type> string from a machine specific function. this function should return an empty string if "KeyboardType" is 0 (else eg "buk", "guk", "bde" etc) (the returned string should be no more than 3 characters)<br />
**** <idx> is a string derived from "KeymapIndex", where 0 is "s" and 1 is "p"<br />
**** use <port><type><idx><mapping>.vkm<br />
<br />
'''TODO:''' fix 8.3 filename generation (<tt>keyboard.c:try_set_keymap_file())</tt>, needed for DOS port<br />
<br />
----<br />
<br />
== migrating the code ==<br />
<br />
=== change ===<br />
<br />
* <strike>option -symkeymap <name> - set "KeymapUserSymFile" to <name></strike> (done)<br />
* <strike>option -poskeymap <name> - set "KeymapUserPosFile" to <name></strike> (done)<br />
<br />
=== add ===<br />
<br />
* <strike>option -keyboardtype - set "KeyboardType" (machine specific)</strike> (done)<br />
* <strike>option -keyboardmapping - set "KeyboardMapping" (host specific)</strike> (done)<br />
<br />
'''TODO:''' generate description for command line options at runtime (query available options in a similar way as the UIs)<br />
<br />
* archdep function "<tt>int kbd_arch_get_host_mapping(void)</tt>" (query host keyboard mapping and return one of the KBD_MAPPING_xx constants defined in <tt>keyboard.h</tt>. If for whatever reason determining the layout is not possibly, always return KBD_MAPPING_US)<br />
<br />
'''TODO:''' update following ports: beos, os/2, osx<br />
<br />
'''TODO:''' update <tt>arch/sdl/archdep_<port></tt> for following ports: beos, os/2<br />
<br />
=== update menus ===<br />
<br />
after the change, all user interfaces should have the following options:<br />
<br />
* "set keymapping" - select between "symbolic", "positional", "symbolic (user)", "positional (user) and change "KeymapIndex" accordingly (see <tt>keyboard.h</tt>)<br />
* "set keyboard layout" - available keyboard layouts can be queried by using <tt>keyboard.h:keyboard_get_num_mappings()</tt> and <tt>keyboard_get_info_list()</tt>. generate menu dynamically and set up "KeyboardMapping" accordingly (see <tt>keyboard.h</tt>)<br />
<br />
* "define user-defined symbolic keymap" - set up "KeymapUserSymFile"<br />
* "define user-defined positional keymap" - set up "KeymapUserPosFile"<br />
<br />
additionally for machines which have more than one type of keyboard (this should go into model selection somewhere):<br />
<br />
* "set keyboard type" - available keyboard types can be queried using <tt>machine.h:machine_get_num_keyboard_types()</tt> and <tt>machine_get_keyboard_info_list()</tt>. generate menu dynamically set up "KeyboardType" accordingly. (this is currently only used by PET but may be used by others (C128, or even C64) later.)<br />
<br />
To clearify: "KeymapSymFile" and "KeymapPosFile" should NOT get modified directly by the menu anymore, this is replaced by "KeymapIndex", "KeyboardMapping" and "KeyboardType" respectivly.<br />
<br />
'''TODO:''' fix menus in following ports: beos, os/2, osx (meaning minimal update to restore functionality)<br />
<br />
'''TODO:''' update menus in following ports: beos, os/2, osx (meaning full featured, as described above)<br />
<br />
=== rename keymaps ===<br />
<br />
all keymaps should get renamed according to the above mentioned naming scheme. make sure that <port>_sym.vkm exists, and xxx_us.vkm is renamed to xxx.vkm (us is the default)<br />
<br />
'''TODO:''' fix names of keymaps for following ports: beos, dos, os/2<br />
<br />
=== remove ===<br />
<br />
* <strike>resources: KeymapSymDeFile, KeymapBusinessUKSymFile, KeymapBusinessUKPosFile, KeymapGraphicsSymFile, KeymapGraphicsPosFile, KeymapBusinessDESymFile, KeymapBusinessDEPosFile</strike> (done)<br />
<br />
* <strike>options: -symdekeymap, -buksymkeymap, -bukposkeymap, -grsymkeymap, -grposkeymap, -bdesymkeymap, -bdeposkeymap</strike> (done)<br />
<br />
* KBD_xxx constants in kbd.h<br />
<br />
'''TODO:''' fix/update following ports: beos, os/2<br />
<br />
== NON COMMON_KBD ==<br />
<br />
All of the above (and perhaps more) still needs to be fixed in ports not using COMMON_KBD, namely BEOS and OS/2. While doing it the keyboard handling should perhaps get rewritten in a way that the above naming scheme, resource usage etc matches, and as much common functions from keyboard.h are used as possible (to avoid code duplication).<br />
<br />
'''TODO:''' fix/update following ports: beos, os/2<br />
<br />
== misc ==<br />
<br />
* in data/VIC20 there is win_sym.vkm and also win_sym_US.vkm - why is that? what is what? these should be renamed accordingly and perhaps one of the two removed<br />
<br />
* data/C64/win_pos.vkm needs to be fixed for us layout<br />
<br />
* perhaps not strictly related: the UI language of the win32 port should also get selected automatically from system language/locale (there is even -commented out- code for this in src/arch/win32/intl.c - but enabling it makes vice crash at startup)<br />
<br />
'''TODO:''' fix/update following ports: win32<br />
<br />
* more keymaps should use !INCLUDE - eg probably all maps for C64DTV and SCPU64 can be blank files that simply include the respective C64 maps. also non US maps could include the US maps and then add/patch the few keys that are different. that way things should get more consistent and easier to maintain.<br />
<br />
* the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Keymaps&diff=3468Keymaps2016-12-16T19:34:07Z<p>Blackystardust: /* add */</p>
<hr />
<div>Reason for this page: handling auf keymaps was a bit messy in some places in the past, unnecessary complex to maintain (eg hardcoded filenames in archdep code dont make updating a lot easier). It has been reworked to handle everything at one central place, with a minimum set of resources which are valid for all emulators. This will make both adding new keyboard types and updating the respective ports easier in the future. At the same time a somewhat more sane default behaviour that always works "as expected" automatically will be achived, based on the general assumption that the casual user never even wants to be bothered with setting up keymaps at all :)<br />
<br />
=== considerations ===<br />
<br />
* host (pc) keyboards have a "machine" and "locale" type. the "machine" type is defined by the port (windows, x11, sdl etc) and the "locale" type by what type of keyboard the user has connected (we currently have different maps for US, DE, UK, FI, NO, DA etc... keyboards)<br />
<br />
* emulated keyboards have a "positional" and a "symbolic" type. the former referring to the actual hardware (keyboard matrix and key positions) and the later referring to what is actually written on the keycaps. (for example the localized c128 keyboards would all have the same "positional" type, but different "symbolic" types. fortunately the total combinations of these is small, so we can define one type per such combination.<br />
<br />
* we support two fundamentally different type of keyboard mappings, "symbolic" and "positional".<br />
<br />
==implementation==<br />
<br />
=== resources ===<br />
<br />
* "KeymapIndex" - (integer) selects active keymap (default:0) (0: symbolic, 1: positional, 2: user defined symbolic, 3: user defined positional)<br />
* "KeymapSymFile" - (string) name of the keymap to use for symbolic mapping (default:automatically set, see below)<br />
* "KeymapPosFile" - (string) name of the keymap to use for positional mapping (default:automatically set, see below)<br />
* "KeymapUserSymFile" - (string) name of user defined symbolic keymap (default: "<port>_sym.vkm")<br />
* "KeymapUserPosFile" - (string) name of user defined positional keymap (default: "<port>_pos.vkm")<br />
<br />
* "KeyboardType" - (Integer) emulated keyboard type. (default:0) <br />
** C128 0: International, 1: Finnish,French, 3: German, 4: Italian, 5: Norwegian, 6: Swedish (not used by x128 yet)<br />
** PET: (pet-resources.h) 0 "buus" 1: "buuk" 2: "bude" 3: "bujp" 4: "grus"<br />
** others: always 0<br />
:: This resource will get updated when the machine model changes, and can be individually updated in the user interface.<br />
<br />
NOTE: more info on local keyboard variants wanted, what about CBM2, C64... some VIC20 info [http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=7388&p=79621#p79621 here]<br />
<br />
* "KeyboardMapping" - (integer) host keyboard layout type (default:0) <br />
** 0 American (us) suffix: ""<br />
** 1 British "uk"<br />
** 2 German "de"<br />
** 3 Danish "da"<br />
** 4 Norwegian "no"<br />
** 5 Finnish "fi"<br />
** 6 Italian "it"<br />
:: this list may be expanded as needed<br />
<br />
NOTE: suggestions for more languages that we should add as a default here wanted...<br />
<br />
=== command line options ===<br />
<br />
* "-keymap" - sets "KeymapIndex" (and loads keymap indirectly)<br />
* "-keyboardtype" - sets "KeyboardType" (and loads keymap indirectly)<br />
* "-keyboardmapping" - sets "KeyboardMapping" (and loads keymap indirectly)<br />
* "-symkeymap" sets "KeymapUserSymFile" directly<br />
* "-poskeymap" sets "KeymapUserPosFile" directly<br />
<br />
=== defaults ===<br />
<br />
* when the emulator starts and finds "KeymapSymFile" and "KeymapPosFile" empty, <br />
** an archdep function is called which returns the type of keyboard connected -> <tt>src/arch/<port>/archdep*: kbd_arch_get_host_mapping()</tt><br />
** "KeyboardMapping" is initialized with that value, and the resulting keymap loaded (done)<br />
<br />
The goal is to automatically configure and load the right keyboard map for a given combination of host OS/language/layout and emulated system.<br />
<br />
=== loading the keymap ===<br />
<br />
a central function which is called if any of "KeymapIndex", "KeyboardType", "KeyboardMapping" changed handles loading the new keymap. -> <tt>keyboard.c:switch_keymap_file()</tt><br />
<br />
* if "KeymapIndex" is not 0 or 1, then load the respective user keymap and skip any further automatic actions<br />
<br />
* else try loading a keymap with the filename constructed as below.<br />
<br />
* if that fails, find a proper fallback:<br />
** if a positional map is not available, not much can be done other than switching to symbolic mapping instead, so do that...<br />
** remove the <mapping> part from the filename, ie try to load <port>_<type>_sym.vkm (for ports that have more than one emulated keyboard type, this MUST exist)<br />
** as last resort, always use <port>_sym.vkm (which MUST exist)<br />
<br />
* generally after loading update "KeymapIndex", "KeyboardType", "KeyboardMapping" and "KeymapSymFile"/"KeymapPosFile" to reflect the keymap that was actually loaded<br />
<br />
=== constructing the filename ===<br />
<br />
-> <tt>keyboard.c:try_set_keymap_file()</tt><br />
<br />
generally the filename of a keymap will be constructed according to this scheme:<br />
<br />
<port>_<type>_<idx>_<mapping>.vkm<br />
<br />
where:<br />
<br />
* <port> is a string constant defined in archdep code (eg "x11", "sdl", "win" etc) -> <tt>KBD_PORT_PREFIX</tt> in <tt>src/arch/<port>/kbd.h</tt><br />
* <type> is a string returned by a machine specific function. this function should return NULL if the type string would be empty (the machine has no keyboard types) else eg "bkuk", "gkuk", "bkde" etc. (the returned string should be no more than 4 characters) -> <tt>machine_get_keyboard_type_name()</tt><br />
* <idx> is a string derived from "KeymapIndex", where 0 is "sym" and 1 is "pos"<br />
* <mapping> is a string derived from "KeyboardMapping", where 0 is an empty string and 1 is "de" (... 2: "fi" 3: "se" etc if needed)<br />
<br />
(this should in many cases not even require renaming any .vkm files)<br />
<br />
* a solution must be found for targets that only support 8.3 filenames, sth like<br />
<br />
** if "<type><idx><mapping>" is 4 characters (or less), use <port>_<type><idx><mapping>.vkm<br />
*** else:<br />
**** get short <port> string from constant defined in archdep code (max 2 characters, eg "md" for msdos)<br />
**** get short <type> string from a machine specific function. this function should return an empty string if "KeyboardType" is 0 (else eg "buk", "guk", "bde" etc) (the returned string should be no more than 3 characters)<br />
**** <idx> is a string derived from "KeymapIndex", where 0 is "s" and 1 is "p"<br />
**** use <port><type><idx><mapping>.vkm<br />
<br />
'''TODO:''' fix 8.3 filename generation (<tt>keyboard.c:try_set_keymap_file())</tt>, needed for DOS port<br />
<br />
----<br />
<br />
== migrating the code ==<br />
<br />
=== change ===<br />
<br />
* <strike>option -symkeymap <name> - set "KeymapUserSymFile" to <name></strike> (done)<br />
* <strike>option -poskeymap <name> - set "KeymapUserPosFile" to <name></strike> (done)<br />
<br />
=== add ===<br />
<br />
* <strike>option -keyboardtype - set "KeyboardType" (machine specific)</strike> (done)<br />
* <strike>option -keyboardmapping - set "KeyboardMapping" (host specific)</strike> (done)<br />
<br />
'''TODO:''' generate description for command line options at runtime (query available options in a similar way as the UIs)<br />
<br />
* archdep function "<tt>int kbd_arch_get_host_mapping(void)</tt>" (query host keyboard mapping and return one of the KBD_MAPPING_xx constants defined in <tt>keyboard.h</tt>. If for whatever reason determining the layout is not possibly, always return KBD_MAPPING_US)<br />
<br />
'''TODO:''' update following ports: beos, os/2, osx<br />
<br />
'''TODO:''' update <tt>arch/sdl/archdep_<port></tt> for following ports: beos, os/2<br />
<br />
=== update menus ===<br />
<br />
after the change, all user interfaces should have the following options:<br />
<br />
* "set keymapping" - select between "symbolic", "positional", "symbolic (user)", "positional (user) and change "KeymapIndex" accordingly (see <tt>keyboard.h</tt>)<br />
* "set keyboard layout" - available keyboard layouts can be queried by using <tt>keyboard.h:keyboard_get_num_mappings()</tt> and <tt>keyboard_get_info_list()</tt>. generate menu dynamically and set up "KeyboardMapping" accordingly (see <tt>keyboard.h</tt>)<br />
<br />
* "define user-defined symbolic keymap" - set up "KeymapUserSymFile"<br />
* "define user-defined positional keymap" - set up "KeymapUserPosFile"<br />
<br />
additionally for machines which have more than one type of keyboard (this should go into model selection somewhere):<br />
<br />
* "set keyboard type" - available keyboard types can be queried using <tt>machine.h:machine_get_num_keyboard_types()</tt> and <tt>machine_get_keyboard_info_list()</tt>. generate menu dynamically set up "KeyboardType" accordingly. (this is currently only used by PET but may be used by others (C128, or even C64) later.)<br />
<br />
To clearify: "KeymapSymFile" and "KeymapPosFile" should NOT get modified directly by the menu anymore, this is replaced by "KeymapIndex", "KeyboardMapping" and "KeyboardType" respectivly.<br />
<br />
'''TODO:''' fix menus in following ports: amiga, beos, dos, os/2, osx (meaning minimal update to restore functionality)<br />
<br />
'''TODO:''' update menus in following ports: amiga, beos, dos, os/2, osx, win32 (meaning full featured, as described above)<br />
<br />
=== rename keymaps ===<br />
<br />
all keymaps should get renamed according to the above mentioned naming scheme. make sure that <port>_sym.vkm exists, and xxx_us.vkm is renamed to xxx.vkm (us is the default)<br />
<br />
'''TODO:''' fix names of keymaps for following ports: beos, dos, os/2<br />
<br />
=== remove ===<br />
<br />
* <strike>resources: KeymapSymDeFile, KeymapBusinessUKSymFile, KeymapBusinessUKPosFile, KeymapGraphicsSymFile, KeymapGraphicsPosFile, KeymapBusinessDESymFile, KeymapBusinessDEPosFile</strike> (done)<br />
<br />
* <strike>options: -symdekeymap, -buksymkeymap, -bukposkeymap, -grsymkeymap, -grposkeymap, -bdesymkeymap, -bdeposkeymap</strike> (done)<br />
<br />
* KBD_xxx constants in kbd.h<br />
<br />
'''TODO:''' fix/update following ports: beos, os/2<br />
<br />
== NON COMMON_KBD ==<br />
<br />
All of the above (and perhaps more) still needs to be fixed in ports not using COMMON_KBD, namely BEOS and OS/2. While doing it the keyboard handling should perhaps get rewritten in a way that the above naming scheme, resource usage etc matches, and as much common functions from keyboard.h are used as possible (to avoid code duplication).<br />
<br />
'''TODO:''' fix/update following ports: beos, os/2<br />
<br />
== misc ==<br />
<br />
* in data/VIC20 there is win_sym.vkm and also win_sym_US.vkm - why is that? what is what? these should be renamed accordingly and perhaps one of the two removed<br />
<br />
* data/C64/win_pos.vkm needs to be fixed for us layout<br />
<br />
* perhaps not strictly related: the UI language of the win32 port should also get selected automatically from system language/locale (there is even -commented out- code for this in src/arch/win32/intl.c - but enabling it makes vice crash at startup)<br />
<br />
'''TODO:''' fix/update following ports: win32<br />
<br />
* more keymaps should use !INCLUDE - eg probably all maps for C64DTV and SCPU64 can be blank files that simply include the respective C64 maps. also non US maps could include the US maps and then add/patch the few keys that are different. that way things should get more consistent and easier to maintain.<br />
<br />
* the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Keymaps&diff=3467Keymaps2016-12-16T19:24:46Z<p>Blackystardust: /* add */</p>
<hr />
<div>Reason for this page: handling auf keymaps was a bit messy in some places in the past, unnecessary complex to maintain (eg hardcoded filenames in archdep code dont make updating a lot easier). It has been reworked to handle everything at one central place, with a minimum set of resources which are valid for all emulators. This will make both adding new keyboard types and updating the respective ports easier in the future. At the same time a somewhat more sane default behaviour that always works "as expected" automatically will be achived, based on the general assumption that the casual user never even wants to be bothered with setting up keymaps at all :)<br />
<br />
=== considerations ===<br />
<br />
* host (pc) keyboards have a "machine" and "locale" type. the "machine" type is defined by the port (windows, x11, sdl etc) and the "locale" type by what type of keyboard the user has connected (we currently have different maps for US, DE, UK, FI, NO, DA etc... keyboards)<br />
<br />
* emulated keyboards have a "positional" and a "symbolic" type. the former referring to the actual hardware (keyboard matrix and key positions) and the later referring to what is actually written on the keycaps. (for example the localized c128 keyboards would all have the same "positional" type, but different "symbolic" types. fortunately the total combinations of these is small, so we can define one type per such combination.<br />
<br />
* we support two fundamentally different type of keyboard mappings, "symbolic" and "positional".<br />
<br />
==implementation==<br />
<br />
=== resources ===<br />
<br />
* "KeymapIndex" - (integer) selects active keymap (default:0) (0: symbolic, 1: positional, 2: user defined symbolic, 3: user defined positional)<br />
* "KeymapSymFile" - (string) name of the keymap to use for symbolic mapping (default:automatically set, see below)<br />
* "KeymapPosFile" - (string) name of the keymap to use for positional mapping (default:automatically set, see below)<br />
* "KeymapUserSymFile" - (string) name of user defined symbolic keymap (default: "<port>_sym.vkm")<br />
* "KeymapUserPosFile" - (string) name of user defined positional keymap (default: "<port>_pos.vkm")<br />
<br />
* "KeyboardType" - (Integer) emulated keyboard type. (default:0) <br />
** C128 0: International, 1: Finnish,French, 3: German, 4: Italian, 5: Norwegian, 6: Swedish (not used by x128 yet)<br />
** PET: (pet-resources.h) 0 "buus" 1: "buuk" 2: "bude" 3: "bujp" 4: "grus"<br />
** others: always 0<br />
:: This resource will get updated when the machine model changes, and can be individually updated in the user interface.<br />
<br />
NOTE: more info on local keyboard variants wanted, what about CBM2, C64... some VIC20 info [http://sleepingelephant.com/ipw-web/bulletin/bb/viewtopic.php?t=7388&p=79621#p79621 here]<br />
<br />
* "KeyboardMapping" - (integer) host keyboard layout type (default:0) <br />
** 0 American (us) suffix: ""<br />
** 1 British "uk"<br />
** 2 German "de"<br />
** 3 Danish "da"<br />
** 4 Norwegian "no"<br />
** 5 Finnish "fi"<br />
** 6 Italian "it"<br />
:: this list may be expanded as needed<br />
<br />
NOTE: suggestions for more languages that we should add as a default here wanted...<br />
<br />
=== command line options ===<br />
<br />
* "-keymap" - sets "KeymapIndex" (and loads keymap indirectly)<br />
* "-keyboardtype" - sets "KeyboardType" (and loads keymap indirectly)<br />
* "-keyboardmapping" - sets "KeyboardMapping" (and loads keymap indirectly)<br />
* "-symkeymap" sets "KeymapUserSymFile" directly<br />
* "-poskeymap" sets "KeymapUserPosFile" directly<br />
<br />
=== defaults ===<br />
<br />
* when the emulator starts and finds "KeymapSymFile" and "KeymapPosFile" empty, <br />
** an archdep function is called which returns the type of keyboard connected -> <tt>src/arch/<port>/archdep*: kbd_arch_get_host_mapping()</tt><br />
** "KeyboardMapping" is initialized with that value, and the resulting keymap loaded (done)<br />
<br />
The goal is to automatically configure and load the right keyboard map for a given combination of host OS/language/layout and emulated system.<br />
<br />
=== loading the keymap ===<br />
<br />
a central function which is called if any of "KeymapIndex", "KeyboardType", "KeyboardMapping" changed handles loading the new keymap. -> <tt>keyboard.c:switch_keymap_file()</tt><br />
<br />
* if "KeymapIndex" is not 0 or 1, then load the respective user keymap and skip any further automatic actions<br />
<br />
* else try loading a keymap with the filename constructed as below.<br />
<br />
* if that fails, find a proper fallback:<br />
** if a positional map is not available, not much can be done other than switching to symbolic mapping instead, so do that...<br />
** remove the <mapping> part from the filename, ie try to load <port>_<type>_sym.vkm (for ports that have more than one emulated keyboard type, this MUST exist)<br />
** as last resort, always use <port>_sym.vkm (which MUST exist)<br />
<br />
* generally after loading update "KeymapIndex", "KeyboardType", "KeyboardMapping" and "KeymapSymFile"/"KeymapPosFile" to reflect the keymap that was actually loaded<br />
<br />
=== constructing the filename ===<br />
<br />
-> <tt>keyboard.c:try_set_keymap_file()</tt><br />
<br />
generally the filename of a keymap will be constructed according to this scheme:<br />
<br />
<port>_<type>_<idx>_<mapping>.vkm<br />
<br />
where:<br />
<br />
* <port> is a string constant defined in archdep code (eg "x11", "sdl", "win" etc) -> <tt>KBD_PORT_PREFIX</tt> in <tt>src/arch/<port>/kbd.h</tt><br />
* <type> is a string returned by a machine specific function. this function should return NULL if the type string would be empty (the machine has no keyboard types) else eg "bkuk", "gkuk", "bkde" etc. (the returned string should be no more than 4 characters) -> <tt>machine_get_keyboard_type_name()</tt><br />
* <idx> is a string derived from "KeymapIndex", where 0 is "sym" and 1 is "pos"<br />
* <mapping> is a string derived from "KeyboardMapping", where 0 is an empty string and 1 is "de" (... 2: "fi" 3: "se" etc if needed)<br />
<br />
(this should in many cases not even require renaming any .vkm files)<br />
<br />
* a solution must be found for targets that only support 8.3 filenames, sth like<br />
<br />
** if "<type><idx><mapping>" is 4 characters (or less), use <port>_<type><idx><mapping>.vkm<br />
*** else:<br />
**** get short <port> string from constant defined in archdep code (max 2 characters, eg "md" for msdos)<br />
**** get short <type> string from a machine specific function. this function should return an empty string if "KeyboardType" is 0 (else eg "buk", "guk", "bde" etc) (the returned string should be no more than 3 characters)<br />
**** <idx> is a string derived from "KeymapIndex", where 0 is "s" and 1 is "p"<br />
**** use <port><type><idx><mapping>.vkm<br />
<br />
'''TODO:''' fix 8.3 filename generation (<tt>keyboard.c:try_set_keymap_file())</tt>, needed for DOS port<br />
<br />
----<br />
<br />
== migrating the code ==<br />
<br />
=== change ===<br />
<br />
* <strike>option -symkeymap <name> - set "KeymapUserSymFile" to <name></strike> (done)<br />
* <strike>option -poskeymap <name> - set "KeymapUserPosFile" to <name></strike> (done)<br />
<br />
=== add ===<br />
<br />
* <strike>option -keyboardtype - set "KeyboardType" (machine specific)</strike> (done)<br />
* <strike>option -keyboardmapping - set "KeyboardMapping" (host specific)</strike> (done)<br />
<br />
'''TODO:''' generate description for command line options at runtime (query available options in a similar way as the UIs)<br />
<br />
* archdep function "<tt>int kbd_arch_get_host_mapping(void)</tt>" (query host keyboard mapping and return one of the KBD_MAPPING_xx constants defined in <tt>keyboard.h</tt>. If for whatever reason determining the layout is not possibly, always return KBD_MAPPING_US)<br />
<br />
'''TODO:''' update following ports: beos, os/2, osx<br />
<br />
'''TODO:''' update <tt>arch/sdl/archdep_<port></tt> for following ports: amiga, beos, dos, os/2<br />
<br />
=== update menus ===<br />
<br />
after the change, all user interfaces should have the following options:<br />
<br />
* "set keymapping" - select between "symbolic", "positional", "symbolic (user)", "positional (user) and change "KeymapIndex" accordingly (see <tt>keyboard.h</tt>)<br />
* "set keyboard layout" - available keyboard layouts can be queried by using <tt>keyboard.h:keyboard_get_num_mappings()</tt> and <tt>keyboard_get_info_list()</tt>. generate menu dynamically and set up "KeyboardMapping" accordingly (see <tt>keyboard.h</tt>)<br />
<br />
* "define user-defined symbolic keymap" - set up "KeymapUserSymFile"<br />
* "define user-defined positional keymap" - set up "KeymapUserPosFile"<br />
<br />
additionally for machines which have more than one type of keyboard (this should go into model selection somewhere):<br />
<br />
* "set keyboard type" - available keyboard types can be queried using <tt>machine.h:machine_get_num_keyboard_types()</tt> and <tt>machine_get_keyboard_info_list()</tt>. generate menu dynamically set up "KeyboardType" accordingly. (this is currently only used by PET but may be used by others (C128, or even C64) later.)<br />
<br />
To clearify: "KeymapSymFile" and "KeymapPosFile" should NOT get modified directly by the menu anymore, this is replaced by "KeymapIndex", "KeyboardMapping" and "KeyboardType" respectivly.<br />
<br />
'''TODO:''' fix menus in following ports: amiga, beos, dos, os/2, osx (meaning minimal update to restore functionality)<br />
<br />
'''TODO:''' update menus in following ports: amiga, beos, dos, os/2, osx, win32 (meaning full featured, as described above)<br />
<br />
=== rename keymaps ===<br />
<br />
all keymaps should get renamed according to the above mentioned naming scheme. make sure that <port>_sym.vkm exists, and xxx_us.vkm is renamed to xxx.vkm (us is the default)<br />
<br />
'''TODO:''' fix names of keymaps for following ports: beos, dos, os/2<br />
<br />
=== remove ===<br />
<br />
* <strike>resources: KeymapSymDeFile, KeymapBusinessUKSymFile, KeymapBusinessUKPosFile, KeymapGraphicsSymFile, KeymapGraphicsPosFile, KeymapBusinessDESymFile, KeymapBusinessDEPosFile</strike> (done)<br />
<br />
* <strike>options: -symdekeymap, -buksymkeymap, -bukposkeymap, -grsymkeymap, -grposkeymap, -bdesymkeymap, -bdeposkeymap</strike> (done)<br />
<br />
* KBD_xxx constants in kbd.h<br />
<br />
'''TODO:''' fix/update following ports: beos, os/2<br />
<br />
== NON COMMON_KBD ==<br />
<br />
All of the above (and perhaps more) still needs to be fixed in ports not using COMMON_KBD, namely BEOS and OS/2. While doing it the keyboard handling should perhaps get rewritten in a way that the above naming scheme, resource usage etc matches, and as much common functions from keyboard.h are used as possible (to avoid code duplication).<br />
<br />
'''TODO:''' fix/update following ports: beos, os/2<br />
<br />
== misc ==<br />
<br />
* in data/VIC20 there is win_sym.vkm and also win_sym_US.vkm - why is that? what is what? these should be renamed accordingly and perhaps one of the two removed<br />
<br />
* data/C64/win_pos.vkm needs to be fixed for us layout<br />
<br />
* perhaps not strictly related: the UI language of the win32 port should also get selected automatically from system language/locale (there is even -commented out- code for this in src/arch/win32/intl.c - but enabling it makes vice crash at startup)<br />
<br />
'''TODO:''' fix/update following ports: win32<br />
<br />
* more keymaps should use !INCLUDE - eg probably all maps for C64DTV and SCPU64 can be blank files that simply include the respective C64 maps. also non US maps could include the US maps and then add/patch the few keys that are different. that way things should get more consistent and easier to maintain.<br />
<br />
* the virtual keyboard handling of the SDL port must be updated/fixed to support all PET keyboards</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3466Developer log2016-12-16T19:09:58Z<p>Blackystardust: /* Branches */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32419 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#FFC000;" | beos (3)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFC000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32520 || 3.0<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#00FF00;" | beos (-)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFFF00;" | os/2 (2)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: os/2<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
==3.0==<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** <strike>TODO: RTC72421 emulation needed</strike> (in trunk)<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3417Developer log2016-11-27T21:29:49Z<p>Blackystardust: /* r30708 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32419 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#FFC000;" | beos (3)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFC000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3416Developer log old2016-11-27T21:29:37Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30025 ===<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
<br />
=== r31536 ===<br />
* Added support for the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3415Developer log2016-11-27T21:27:52Z<p>Blackystardust: /* r30025 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32419 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#FFC000;" | beos (3)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFC000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
The BeOS UI was updated by loggedoubt in r30863 to use the new API. And if I'm not mistaken I renamed the palette files in r32102 and updated palette.c. (And I think gpz renamed a few palette files I forgot). So looks like this can be closed as well. Can somebody confirm?<br />
<br />
(Compyx 2016-11-27 12:38)<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3414Developer log old2016-11-27T21:27:40Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30025 ===<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
<br />
=== r31536 ===<br />
* Added support for the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3413Developer log2016-11-27T21:26:33Z<p>Blackystardust: /* r27046 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r32419 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | amiga (-)<br />
| style="background:#FFC000;" | beos (3)<br />
| style="background:#00FF00;" | dos (-)<br />
| style="background:#FFC000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: os/2<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
The BeOS UI was updated by loggedoubt in r30863 to use the new API. And if I'm not mistaken I renamed the palette files in r32102 and updated palette.c. (And I think gpz renamed a few palette files I forgot). So looks like this can be closed as well. Can somebody confirm?<br />
<br />
(Compyx 2016-11-27 12:38)<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3412Developer log old2016-11-27T21:26:23Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
<br />
=== r31536 ===<br />
* Added support for the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3375Developer log2016-11-26T20:19:00Z<p>Blackystardust: /* r30650 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: osx<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3374Developer log old2016-11-26T20:18:42Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3373Developer log2016-11-26T19:47:12Z<p>Blackystardust: /* r32374 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: osx<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3372Developer log2016-11-26T19:40:15Z<p>Blackystardust: /* r32374 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: dos, osx<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3368Developer log2016-11-24T00:16:26Z<p>Blackystardust: /* r32374 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: beos, dos, osx, sdl, win32<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3367Developer log2016-11-24T00:08:23Z<p>Blackystardust: /* r32374 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: amiga, beos, dos, osx, sdl, win32<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3366Developer log2016-11-24T00:01:01Z<p>Blackystardust: /* r28951 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: amiga, beos, dos, os/2, osx, sdl, win32<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3365Developer log old2016-11-24T00:00:51Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3364Developer log2016-11-23T23:55:59Z<p>Blackystardust: /* 2.3 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r28951 ===<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* '''TODO''': add GUI items for os/2<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: amiga, beos, dos, os/2, osx, sdl, win32<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3363Developer log2016-11-23T23:55:38Z<p>Blackystardust: /* 2.3.21 (r26032) */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.3==<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r28951 ===<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* '''TODO''': add GUI items for os/2<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item and if the autostart setting UI is implemented at all for the following ports: amiga, beos, dos, os/2, osx, sdl, win32<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3362Developer log old2016-11-23T23:55:29Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3359Developer log2016-11-23T19:33:31Z<p>Blackystardust: /* 2.3.15 (r25340) */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
* '''TODO''': add GUI items to following ports: os/2<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r28951 ===<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* '''TODO''': add GUI items for os/2<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
=== r32374 ===<br />
* Fixed the menu text in the *nix UI for the 'AutostartDelay' resource: it isn't a threshold for 'AutostartDelayRandom', it's a separate delay in seconds before autostarting a prg.<br />
: '''TODO''': check other UI's for the correct naming of the item. Note: the BeOS, OS/2, SDL and Windos UI's are completely missing UI items for this resource, I haven't checked other ports yet. EDIT: The Mac port is completely missing any UI items related to autostart it seems.<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log_old&diff=3358Developer log old2016-11-23T19:33:21Z<p>Blackystardust: </p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
This page contains all old (done) items from the [[Developer_log]] Page.<br />
<br />
==2.1==<br />
<br />
* Config split<br />
** Datadir uses machine_name as before, config/hotkeys/fliplist/etc (should) use machine_get_name() instead<br />
** Use "VSID" for vsid<br />
*** Due to the config split, it is finally possible to have VSID config/hotkeys/etc<br />
** Use "C64SC" for x64sc<br />
*** NOTE: data/C64 is still used for x64sc<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared C64/win_shortcuts.vsc is problematic)<br />
** Use "CBM-II-5x0" for xcbm2 -model 510<br />
*** Should get rid of segfaults when using different models with same config<br />
*** TODO: check config/etc file names/usage for: win32 (especially if the shared CBM-II/win_shortcuts.vsc is problematic)<br />
<br />
* chris/v2.1-quicktime [2.1.2]<br />
** NEW: added QuickTime movie exporter (on Mac OS X for now)<br />
** API: introduced new soundmovie.c sound exporter<br />
** API: gfxoutput.h: extended interace of gfxoutputdrv_t<br />
gfxoutputdrv_format_t *formatlist; // optional format list for exporter<br />
void (*shutdown)(void);<br />
int (*resources_init)(void);<br />
int (*cmdline_options_init)(void);<br />
** Tested: Mac+Cocoa, Mac+Gtk, Mac+Xaw<br />
** Open: Adapted all UIs to use generic formatlist from extended gfxoutput_drv interface<br />
<br />
* soundrework.<br />
** oversampling setting removed. Oversampling is a bad, mostly unused solution for slightly improved audio quality. We can just do proper resamplers for machines that need it.<br />
** shorter sound buffer requires using audio buffers to their capacity. Some drivers may exhibit bugs with bufferspace() hook when audio buffer gets completely filled. These should be identified by bad behaviour on low latency setting such as 50 ms, while other sound drivers on same system might still work.<br />
<br />
----<br />
<br />
===2.1.11 (r20774)===<br />
<br />
* Userport Joystick Interface support (r20807)<br />
** NEW: 2 new virtual joysticks<br />
** API: joystick_port_map[] (arch/*/joy.[ch]) size changed from 2 to 4 (JOYSTICK_NUM, joystick.h)<br />
** Resource: ExtraJoy (toggle) and ExtraJoyType see src/userport/userport_joystick.h for the types.<br />
** NOTE: Network code uses the new size; this may be a problem.<br />
<br />
===2.1.13 (r20920)===<br />
<br />
* Plus4 SID cart add-ons support (20977)<br />
** Resource: DIGIBLASTER (toggle) for the digibooster add-on and SIDCartJoy (toggle) for the joystick port on the sidcart.<br />
<br />
===2.1.14 (r21002)===<br />
<br />
* xvic cartridge system rewrite (21222)<br />
** NEW: Rewritten modular cartridge emulation similar to that of x64.<br />
** NEW: Mega-Cart emulation<br />
** Resource: CartridgeType (enum, see cartridge.h)<br />
** Resource: CartridgeFile (string)<br />
** Resource: CartridgeReset (toggle)<br />
** Resource: GenericCartridgeFile2000 (string)<br />
** Resource: GenericCartridgeFile4000 (string)<br />
** Resource: GenericCartridgeFile6000 (string)<br />
** Resource: GenericCartridgeFileA000 (string)<br />
** Resource: GenericCartridgeFileB000 (string)<br />
** NOTE: see win32/SDL/*nix UI for menu implementation.<br />
** NOTE: CartridgeFile and GenericCartridgeFileX000 and NOT meant to be manipulated directly by the UI. See the above note.<br />
<br />
----<br />
<br />
==2.2==<br />
===2.2.5 (r22607)===<br />
<br />
* x64/x64sc/x128 Cartridge System (r22615) <br />
** changed cartridge_detach_image() to take the cartid (from cartridge.h) as parameter. all UIs have been changed to pass -1, which means "all cartridges". <br />
** NOTE: UIs that actually support to attach several carts should use the param properly, and should use this function instead of changing whatever associated resource directly. (this will make it easier to change the underlying mechanism without breaking everything all the time)<br />
** to clearify: generic actions such as attaching/enabling/detaching a cartridge should be done through the generic api in cartridge.h. using the individual resources to enable/disable a cartridge will still work, but is "deprecated".<br />
<br />
* x64/x64sc/x128 Cartridge System (r22623) <br />
** changed cartridge_get_file_name(), takes the cartid instead of the (meaningless) address for c64 now <br />
*** affected emus: vic20 (the "WORD" in the prototype changed to "int", and it passes an address for type, and the "int" may now make it fail on 16bit hosts, meh :)) the logic should be changed to use cartids from cartridge.h instead, shouldnt matter else :) (this is not really a problem as the msdos port is not 16bit as i assumed :) [[User:Gpz|Gpz]] 19:02, 12 June 2012 (UTC))<br />
** a new function c64export_query_list() defined in c64export.h can be used to get a list of all currently attached/active cartridges, so you can eg use it in a dynamic menu and detach them using cartridge_detach_image(). look in c64export.c:c64export_dump() for a small usage example.<br />
<br />
* Expert Cartridge (r226xx) <br />
** renamed Resource: "Expert" to "ExpertCartridgeEnabled" (toggle)<br />
** TODO: ports that use cartridge_attach_image(CARTRIDGE_EXPERT, NULL) (which will now fail!) must now simply <del>set "ExpertCartridgeEnabled" to 1 to enable</del> use cartridge_enable(CARTRIDGE_EXPERT) (as with other carts).<br />
** renamed Resource: "CartridgeMode" to "ExpertCartridgeMode" (enum: 0=off 1=prg 2=on)<br />
<br />
===2.2.6 (r22742)===<br />
<br />
* IDE64 emulation can now handle 4 harddrive images. (r22824)<br />
** Resource: IDE64Image renamed/changed to IDE64Image1, IDE64Image2, IDE64Image3, IDE64Image4<br />
<br />
* NEW: IDE64 emulation can emulate IDE64v4 (r22824)<br />
** Resource: IDE64version4 (toggle)<br />
<br />
* Gamma Calculation changed (r22749)<br />
** Resource: "ColorGamma" range was changed to 0...4000, and the new default is 2200 (which is the VGA 2.2 gamma). this change was needed to be able to handle different gammas of PAL/NTSC/etc. (and using the actual display hardware gamma as param is more intuitive too).<br />
<br />
* "PAL Emulation" is available in NTSC mode (r22746)<br />
** NEW: proper rendering with CRT emulation in NTSC mode<br />
** it is suggested to rename user visible strings that refer to "PAL Emulation" or "PAL Settings" to "CRT ..." to make clear that it is not only available in PAL mode.<br />
** ports that forced "PAL Emulation" disabled in NTSC mode should be changed so "PAL Emulation" can be enabled, and related options are available regardless of current video mode.<br />
<br />
* "true aspect ratio" option (r22749)<br />
** geometry_s now contains (float)pixel_aspect_ratio which can be used to (optionally) scale the output canvas to get the true aspect ratio of the currently active video mode. <br />
*** scale output rectangle horizontally by pixel_aspect_ratio if "true aspect ratio" option is enabled<br />
*** to maintain consistency across ports, use Resource:"TrueAspectRatio" (toggle). (must be defined in arch dependend files)<br />
**** SDL UI intentionally breaks this as it had "SDLGLAspectMode" that bent naturally from a toggle to an enum<br />
** Note: future ports that have hardware scaling may use this, too<br />
<br />
* <del>"PAL Emulation"</del> "CRT Emulation" is available for CRTC and VDC (r22752)<br />
** NEW: proper rendering with CRT emulation for CRTC and VDC output<br />
** Resource: CrtcExternalPalette (toggle)<br />
** Resource: VDCExternalPalette (toggle)<br />
** all ports that forced "PAL Emulation" disabled should be changed so "CRT Emulation" can be enabled, and related options are available regardless of current video chip. all related special cases can be removed.<br />
<br />
===2.2.7 (r22889)===<br />
<br />
* Remove 'IEC' references from user visible printer descriptions in both commandline options and uis<br />
<br />
* List of canonical names for cartridges<br />
** cartridge.h now contains constants for (user visible) cartridge names. UIs should, if possible, use these constants - and if not atleast adhere to their spelling. Another advice is to remove redundant references to cartridge names from sub-menus and generally unifying them, in order to bring the overall number of messages down. (see *nix or SDL ui as an example).<br />
<br />
* NEW: archdep_fix_permissions (r23053)<br />
** should set the permissions of a given file to "rw", respecting the current umask (if any)<br />
<br />
===2.2.11 (r23530)===<br />
<br />
* CIA model 6526x removed (r23531)<br />
** No 6526 without the timer B bug encountered, hence 6526 replaced with former "6526x". The CIA models are (see cia.h):<br />
*** "6526" is the old CIA<br />
*** "6526A" is the new CIA<br />
** TODO: remove 6526x UI item from the following ports: -<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.6 (r23990)===<br />
* ACIA/swiftlink/turbo232 base selectable, $DE00/$DF00 for c64/c128 and $D700 for c128 only (r24036)<br />
<br />
===2.3.8 (r24123)===<br />
* MasC=uerade adapter support added to xvic.<br />
<br />
* userport generalization (r r24xxx)<br />
** Resources have changed:<br />
*** Resource: PETUserPortDAC has become UserPortDAC<br />
<br />
* IDE64 geometry selection now seperate for each harddrive image (r24191)<br />
** Resources have changed:<br />
*** Resource: IDE64Cylinders has become IDE64Cylinders1, IDE64Cylinders2, IDE64Cylinders3 and IDE64Cylinders4.<br />
*** Resource: IDE64Heads has become IDE64Heads1, IDE64Heads2, IDE64Heads3 and IDE64Heads4.<br />
*** Resource: IDE64Sectors has become IDE64Sectors1, IDE64Sectors2, IDE64Sectors3 and IDE64Sectors4.<br />
*** Resource: IDE64AutodetectSize has become IDE64AutodetectSize1, IDE64AutodetectSize2, IDE64AutodetectSize3 and IDE64AutodetectSize4.<br />
<br />
===2.3.9 (r24210)===<br />
<br />
* additional functions signals_pipe_set() and signals_pipe_unset() added in arch/*/signals.c (r24261)<br />
** to check if a port needs this implemented, type this into one terminal:<br />
*: <code> x64 -remotemonitor</code> <br />
*: and this into another:<br />
*: <code> echo "reset" | nc -p 6510</code> <br />
*: now terminate the connection by pressing ctrl-c. if the emulator now quits (or crashes) you probably need to handle SIGPIPE, ie set up a signal handler for SIGPIPE that calls monitor_abort() (see the unix code as an example). if not, just locate the respective fixme note in 'your' sourcefile and remove it.<br />
<br />
* cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xcbm2/cbm5x0, look for types in cartridge.h<br />
** direct usage of "Cart1Name", "Cart2Name", "Cart3Name", "Cart4Name" resources is deprecated, use the above functions instead.<br />
<br />
** cartridge_attach_image(type,name) and cartridge_detach_image(type) are now available in xplus4, look for types in cartridge.h<br />
** plus4cart_detach_cartridges() should no more be used (and will be made private later), use cartridge_detach_image(type) (-1 == all) instead<br />
** plus4cart_load_c1lo/_c1hi/_c2lo/_c2hi are associated to the internal roms and should no more be used (and will be made private later). actual roms should be loaded by changing the respective resources instead. ("c1loName", "c1hiName", etc)<br />
** cartridges should be instead attached using cartridge_attach_image(), look for types in cartridge.h. cartridge_attach_image(CARTRIDGE_PLUS4_DETECT) can be used to "smart attach" a binary image.<br />
<br />
** to clearify: there should be a cartridge menu using the cartridge_... functions and types defined in cartridge.h to attach various types of carts, and there should be a roms menu, where the respective roms can be loaded by changing the associated resources.<br />
** '''TODO''': add missing GUI items to following Ports: beos, dos, osx<br />
** NOTE: Resources "3plus1loName" and "3plus1hiName" were removed, because they were duplicates of "FunctionLowName" and "FunctionHighName" (essentially replace the former by the later)<br />
<br />
* really keep monitor opened if console_can_stay_open is 1 (r24272)<br />
** if console_log->console_can_stay_open is 1, keep the monitor console/window opened (call uimon_window_suspend() instead of _close()) when exiting the monitor. allows eg tracepoint output to show up immediatly. <br />
** Note: right now only the *nix (XAW and GTK) ports implement "console_can_stay_open = 1". other GUI ports may be updated accordingly, see [[MonitorUI]] for details on the intended behaviour<br />
<br />
* additional random delay when autostarting (r24278)<br />
*: when enabled, this will delay by a random amount of cycles (up to 10 frames) before autostarting to introduce randomness into the system state.<br />
** new Resource: AutostartDelayRandom (BOOL, default = TRUE)<br />
<br />
* proper handling for double size and y-stretching (r24284)<br />
** new Resource: VDCStretchVertical (BOOL, default = TRUE)<br />
** new Resource: CrtcStretchVertical (BOOL, default = TRUE)<br />
**: when enabled, VDC and 80 colums CRTC output will be stretched vertically.<br />
** in order to support different magnification factors easily, the meaning of the videoconfig->doublesizex and videoconfig->doublesizey variables has slightly changed, it will now contain the actual magnification factor - 1. therefor in order to update your code, just change this kind of stuff:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= 2; }</code><br />
**: to that type of thing:<br />
**: <code> if (canvas->videoconfig->doublesizex) { width *= (canvas->videoconfig->doublesizex + 1); }</code><br />
**: note: since 0 is still used for no magnification, you will only see an effect of this change when using VDC or 80 colums CRTC in doublesize mode with vertical stretching enabled, so use that for testing :) (ie, double size for VDC and 80 colums CRTC *really* means double size now)<br />
**: note: since vertical stretching is enabled by default, enabling double size mode for VDC or 80 colums CRTC in code that has not been updated will most likely crash. (on the other hand, every other case will still work fine)<br />
<br />
* added model selection to xplus4 (r24285)<br />
** look at plus4/plus4model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* added model selection to x64dtv (r24287)<br />
** look at c64dtv/c64dtvmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
* video filter resources merged and made chip specific (r24298)<br />
** removed Resources: "PALEmulation" and "<CHIP>Scale2x"<br />
** new Resources: "<CHIP>Filter" (enum) VIDEO_FILTER_NONE, VIDEO_FILTER_CRT, VIDEO_FILTER_SCALE2X<br />
**: Note: VDC and CRTC do not support scale2x<br />
<br />
* color- and crt emulation resources made chip specific (r24298)<br />
** changed Resources "ColorSaturation" -> "<CHIP>ColorSaturation"<br />
** changed Resources "ColorContrast" -> "<CHIP>ColorContrast"<br />
** changed Resources "ColorBrightness" -> "<CHIP>ColorBrightness"<br />
** changed Resources "ColorGamma" -> "<CHIP>ColorGamma"<br />
** changed Resources "ColorTint" -> "<CHIP>ColorTint"<br />
** changed Resources "PALScanLineShade" -> "<CHIP>PALScanLineShade"<br />
** changed Resources "PALBlur" -> "<CHIP>PALBlur"<br />
** changed Resources "PALOddLinePhase" -> "<CHIP>PALOddLinePhase"<br />
** changed Resources "PALOddLineOffset" -> "<CHIP>PALOddLineOffset"<br />
**: Note: VDC and CRTC do not support oddline phase/offset<br />
<br />
* video_render_initraw() takes additional render config parameter (r24308)<br />
<br />
* added <code>cbm5x0ui_init()</code> and <code>cbm5x0ui_shutdown()</code> function calls to help with splitting the UIs. (r24710)<br />
<br />
* add vsid and xcbm5x0 executables to make-bindist scripts<br />
<br />
* vsid is a seperate machine and splitted into a seperate binary (r24321)<br />
** <code>vsid_mode</code> is deprecated. change all <code>if (vsid_mode) ...</code> to <code>if (machine_class == VICE_MACHINE_VSID)</code><br />
**: Note: in some cases checking for <code>console_mode</code> and/or <code>video_disabled_mode</code> might be better<br />
**: Note: if there are switch statements in archdep code which check for <code>machine_class</code>, then adding <code>VICE_MACHINE_VSID</code> to them might be required (one common spot seems to be in joystick_init_cmdline_options())<br />
** '''TODO''': update following ports: dos, osx<br />
** '''TODO''': ... and remove <code>vsid_mode</code> in main.c<br />
** NOTE: if a port has no fully working vsid ui, remove it here and add it to the todo list here: [[Todo#Ports_.2F_UIs]]<br />
<br />
* added model selection to xcbm2/cbm5x0 (r24326)<br />
** look at cbm2/cbm2model.h for models and functions, it works just like the c64 counterpart<br />
<br />
* xplus4 cartridge system unified to common api (r24285)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
<br />
* xpet, xvic, xplus4 now all support all SID engines (r24288)<br />
<br />
* xcbm2/cbm5x0 cartridge system unified to common api (r24326)<br />
** new Resource: CartridgeReset (BOOL, default = TRUE)<br />
**: when enabled, reset the emulated machine when changing cartridges<br />
** '''TODO''': add GUI items to following ports: osx<br />
<br />
* xcbm5x0 splitted from xcbm2 into a seperate machine and binary (r24326)<br />
** Resource "UseVicII" removed (no more needed)<br />
** due to the split, some features are no more available/needed in one or the other:<br />
**: cbm5x0:<br />
*** remove "crtc settings"<br />
*** remove all _but_ "510" from model selection<br />
*** remove basic128/basic256 ROM related options from ROM settings, load "rom500.vrs" as standard roms option instead<br />
*** remove "7x0 (50 Hz)" from modelline selection<br />
*** add 64kb as memsize option<br />
**: cbm2:<br />
*** remove "vic-ii settings"<br />
*** remove "vic-ii model" from model settings<br />
*** remove "510" from model selection<br />
<br />
* NEW: Burst modification emulation for C64 ("BurstMod" resource)<br />
<br />
* NEW: 2000/4000 drive emulation<br />
<br />
** UIs need to be updated for drive model selection and ROM load. Can easily be done by looking where 1581 is used, and adding 2000/4000 there too. <br />
** add d1m/d2m/d4m to the disk file selector dialog filters<br />
** add d1m/d2m/d4m image creation to the ui's<br />
<br />
* NEW: IDE64 DVD (.iso), LS-120/ZIP (.fdd), Harddisk (.hdd) and CF card support (.cfa) by using ATA core (r24510 or earlier)<br />
** update file selector dialog filters accordingly<br />
** change 'ide64 hd image' text to 'ide64 ata device image' or if wanted to 'ide64 primary/secondary master/slave device image'<br />
<br />
* NEW: Atari ST mouse and the Atari CX-22 trackball and improved Amiga mouse emulation by Magnus Lind.<br />
** testprograms can be found in testprogs/propmouse<br />
<br />
===2.3.10 (r24627)===<br />
<br />
* Fixed the sound system to handle mono and stereo streams correctly (r24693).<br />
* Output is selectable between 'system' (system decides to use mono or stereo output based on the presence of a stereo sid), 'always mono' (output is always mono, stereo streams are mixed into a mono stream) or 'always stereo' (output is always stereo, mono streams are multiplexed to a stereo stream).<br />
** new Resource: "SoundOutput" (enum) SOUND_OUTPUT_SYSTEM, SOUND_OUTPUT_MONO, SOUND_OUTPUT_STEREO<br />
<br />
* Added drive sound emulation<br />
** There's a new resource called "DriveSoundEmulation", 0=disabled 1=enabled<br />
<br />
* Added 3rd sid support for x64 and x128 (r24733).<br />
** changed Resource: "SidStereo", instead of 0=off, 1=on, it's now: 0=off, 1=1 extra sid, 2=2 extra sids.<br />
** new Resource: "SidTripleAddressStart", the address of the 3rd sid.<br />
<br />
===2.3.12 (r24924)===<br />
<br />
* Added "Nordic Replay" support to retro replay emulation (r24948)<br />
** new Resource: "RRrevision" (enum) 0 = retro replay 1 = nordic replay<br />
<br />
* CIA type switchable in x128 (r25046)<br />
** new Resources: "CIA1Model" "CIA2Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* CIA type switchable in xcbm2/cbm5x0 (r25047)<br />
** new Resources: "CIA1Model" (enum) CIA_MODEL_6526, CIA_MODEL_6526A (just like in x64)<br />
<br />
* added model selection to x128 (r25052) <br />
** look at c128v/c128model.h for models and functions, it works just like the c64 counterpart <br />
<br />
* added video to audio leak emulation (r25066) <br />
** new Resources: for every video chip: "<CHIP>AudioLeak" (enum) 0 = disabled 1 = enabled<br />
<br />
* added "no border" mode to VIC-II (r25076)<br />
** "VICIIBordermode" (enum) extended to VICII_NORMAL_BORDERS, VICII_FULL_BORDERS, VICII_DEBUG_BORDERS, VICII_NO_BORDERS<br />
<br />
* added border mode selection to VIC (r25079)<br />
** new Resource: "VICBordermode" (enum) VIC_NORMAL_BORDERS, VIC_FULL_BORDERS, VIC_DEBUG_BORDERS, VIC_NO_BORDERS<br />
<br />
* added border mode selection to TED (r25124)<br />
** new Resource: "TEDBordermode" (enum) TED_NORMAL_BORDERS, TED_FULL_BORDERS, TED_DEBUG_BORDERS, TED_NO_BORDERS<br />
<br />
* refactored canvas (r25369)<br />
** canvas->draw_buffer now stores the size of the visible part of the screen (visible_width, visible_height) and of the emulator's canvas size (canvas_physical_width, canvas_physical_height).<br />
** changed signature of video_canvas_resize(). It now takes 2 args, canvas and resize_canvas, a boolean. resize_canvas==0 means that the emulator's window has been resized, and resize_canvas==1 means the emulated machine's screen size has changed (e.g. double size toggled, borders changed/removed...). In the latter case, the implementation of the function should resize the emulator's window.<br />
** added video_canvas_can_resize(). It returns 0 if the emulator window is maximized (and therefore cannot be resized, because its size is fixed to be the display's size) and 1 if it is not (and therefore its size can be changed)<br />
<br />
===2.3.15 (r25340)===<br />
* refactored model selection in xpet (r25380) <br />
** pet_set_model and get_pet_model should be replaced by petmodel_set/petmodel_get. look at pet/petmodel.h for models and functions, it works just like the c64 counterpart<br />
<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
<br />
* added support for "Kingsoft" and "Starbyte" 4-player joystick adapters (r25440)<br />
** extended resource ExtraJoyType (enum) to 0..6 (USERPORT_JOYSTICK_CGA, USERPORT_JOYSTICK_PET, USERPORT_JOYSTICK_HUMMER, USERPORT_JOYSTICK_OEM, USERPORT_JOYSTICK_HIT, USERPORT_JOYSTICK_KINGSOFT, USERPORT_JOYSTICK_STARBYTE). added USERPORT_JOYSTICK_NUM respectively (userport_joystick.h)<br />
<br />
===2.3.19 (r25940)=== <br />
* removed unused "Romset<NAME>" resources<br />
<br />
<br />
===2.3.22 (r26155)=== <br />
* added fsimage-dxx.c for concentrating d64/d71/dxx image handling.<br />
* added general image track extension<br />
<br />
* added c128 internal function RAM and internal function RAM+RTC support.<br />
** The Resource "InternalFunctionROM" now has a new meaning: 0=off, 1=ROM, 2=RAM, 3=RAM+RTC<br />
<br />
* added c64/c128/vic20 DS12C887 RTC expansion emulation<br />
** new Resource: "DS12C887RTC" (BOOL) DS12C887 RTC cart on/off<br />
** new Resource: "DS12C887RTCbase" (int) DS12C887 RTC cart base address<br />
<br />
* added c64/c128 RTC58321a userport RTC expansion emulation<br />
** new Resource: "UserportRTC" (BOOL) 58321A RTC on/off<br />
<br />
* added Smart mouse emulation<br />
----<br />
<br />
==2.4==<br />
<br />
===2.4 (r26680)=== <br />
* updated the datasette emulation to also work as expected when there is no tape image present<br />
** all UI elements should be always visible and enabled (as with a real datasette :))<br />
** the parameter passed to ui_set_tape_status can then be used to somehow indicate whether a tape image is present (eg by using a different color)<br />
** ui_set_tape_status, ui_display_tape_motor_status, ui_display_tape_control_status and ui_display_tape_counter in ui code perhaps must be updated to handle being called before the respective gui item has been created (which unfortunately can not be avoided easily with the current architecture)<br />
<br />
===2.4.1 (r26948)=== <br />
* added missing c64 models (C64MODEL_C64SX_PAL, C64MODEL_C64SX_NTSC, C64MODEL_C64_JAP, C64MODEL_C64_GS, C64MODEL_PET64_PAL, C64MODEL_PET64_NTSC, C64MODEL_ULTIMAX)<br />
<br />
* added model selection for xvic, it works just like the C64 functions (vic20model_get/vic20model_set; VIC20MODEL_VIC20_PAL, VIC20MODEL_VIC20_NTSC, VIC20MODEL_VIC21) (r26968)<br />
<br />
===r27020=== <br />
* added mouse type for koala pad (MOUSE_TYPE_KOALAPAD)<br />
<br />
===r27322===<br />
* extended Resource "SoundFragmentSize", added values are SOUND_FRAGMENT_VERY_SMALL and SOUND_FRAGMENT_VERY_LARGE<br />
<br />
===2.4.4 (r27450)===<br />
* NEW: added Resource "JAMAction" to select default action on CPU JAM. (int, MACHINE_JAM_ACTION_DIALOG, MACHINE_JAM_ACTION_CONTINUE, MACHINE_JAM_ACTION_MONITOR, MACHINE_JAM_ACTION_RESET, MACHINE_JAM_ACTION_HARD_RESET and MACHINE_NUM_JAM_ACTIONS respectively)<br />
<br />
also see r27981 below<br />
<br />
===r27452===<br />
* NEW: added Resource "IECReset" (1: drives reset with computer, 0: drives do only reset on powercycle/hard reset) to x64, x64sc and xscpu64 - this should go into the "model selection" dialog (as it depends on the board)<br />
<br />
===r27549===<br />
* Resid-FP has been removed. <br />
* To compensate for the missing SID-Type selection, GUI items (slider) should be added for the following Resources: SidResidPassband (0..90), SidResidGain (90..100), SidResidFilterBias (-5000...5000)<br />
<br />
===r27914===<br />
* Printer 6 (Plotter) is now available, a new menu like the existing printer menus should be added which has "1520" and "RAW" in its driver selection<br />
<br />
===2.4.6 (r27981)===<br />
* added MACHINE_JAM_ACTION_QUIT as option for JAMACTION<br />
<br />
===r28014===<br />
* accessing device #7 on the IEC bus works (only real devices), respective selection (0: none 2: real) should get added to the menus<br />
<br />
===r28109===<br />
* added support for swiss kernal/chargen to x128<br />
<br />
===2.4.7 (r28398)===<br />
* ifdef 0'ed resource "MIDIMode" in xvic<br />
<br />
=== r28480 ===<br />
<br />
* SOCKET type should probably be int (not unsigned), as it equals a file descriptor.<br />
<br />
=== r28503 ===<br />
<br />
* changed mon_reg_list_t->flags into a bitfield (see mon_register.h)<br />
<br />
=== r28517 ===<br />
<br />
* removed 'next' member from mon_reg_list_t, and thus make it a simple array rather than a linked list. (check for end of list by testing ->name == NULL)<br />
<br />
=== r28636 ===<br />
<br />
* Added TCP_NODELAY socket option to socket.c to reduce latency. This makes a huge difference, especially in warp mode (tested with the USB server). I've added a configure check for netinet/tcp.h in r28638, bit I'm not sure if it's optimal.<br />
<br />
=== 2.4.9 (r28665) ===<br />
<br />
* new Resource: "DS12C887RTCRunMode" (int) for setting the initial run mode of the RTC oscillator (0=halted, 1=running)<br />
<br />
=== r28935 ===<br />
<br />
* added generic function/list for querying the enabled compile time features. (see vicefeatures.h)<br />
<br />
=== r28951 ===<br />
<br />
* new Resource: (BOOL) "IDE64RTCSave" (c64/128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resources: (BOOL) "InternalFunctionROMRTCSave" (c128), "ExternalFunctionROMRTCSave" (c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
* new Resource: (BOOL) "DS12C887RTCSave" (c64,vic20,c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "UserportRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* new Resource: (BOOL) "SmartMouseRTCSave" (c64/c128) for enabling saving RTC data (0=disabled, 1=enabled)<br />
<br />
=== 2.4.13 (r28982) ===<br />
<br />
* new function "cartridge_get_info_list()" for querying the list of cartridges for building the "attach binary image" menu(s) in x64/x64sc/xscpu64/x128. see cartridge.h<br />
<br />
=== r29066 ===<br />
* 1540 was added to drive selection<br />
<br />
=== 2.4.15 (r29202) ===<br />
<br />
* added new resource "MemoryHack" (int) to activate the different kinds of c64 memory expansion hacks (0: none, 1: C64 256K, 2: +60K, 3: +256K), and removed the "C64_256K", "PLUS256K" and "PLUS60K" resources<br />
<br />
* added new resource "VICIIVSPBug" (bool) to enable/disable emulation of the VSP bug<br />
<br />
=== r29231 ===<br />
* added new resource "DatasetteTapeWobble" (int) to emulate random tape wobble<br />
<br />
=== r29237 ===<br />
* added new resource "MemoryHack" (int) to activate the different kinds of plus4 memory expansion hacks (0: none, 1: CS256K, 2: H256K, 3: H1024K, 4: H4096K), and removed the "CS256K" and "H256K" resources<br />
<br />
=== r29348 ===<br />
* added new resource "EasyFlashOptimizeCRT" (bool) to allow/disallow optimizing of the .crt file when writing<br />
<br />
=== r29761 ===<br />
* IDE64 V4.2 support was added. (resource "IDE64Version" (int): IDE64_VERSION_3, IDE64_VERSION_4_1, IDE64_VERSION_4_2)<br />
<br />
=== r29938 ===<br />
<br />
* added new joyport system. The new system makes things modular. On one side you have the devices that can be on a joyport, and all the code for those has to do is handle reading/writing of digital lines and reading of the pot-lines. On the other side you have the 'chip' emulations that deal with the hardware emulation. The new system handles the traffic between the two sides, handles conflicts between input resources that devices use and provides a way for the gui's to query what devices are present (name and id).<br />
* new resources related to the new joyport system: "JoyPort1Device" (int), "JoyPort2Device" (int), "JoyPort3Device" (int) and "JoyPort4Device" (int)<br />
<br />
=== r30040 ===<br />
* new screenshot format 'godot' (extension '.4bt').<br />
<br />
=== r30083 ===<br />
* Apparently some ports have a 'cartridge freeze' menu item for xscpu64, this will always result in a hanging machine.<br />
<br />
=== r30107 ===<br />
* NEW: resource "SSRamExpansion" (Boolean) to enable/disable the 32k addon RAM of the Super Snapshot V5<br />
<br />
=== r30161 ===<br />
* Added mouse init/shutdown calls to xcbm2 and xpet.<br />
<br />
=== r30206 ===<br />
* Added UltiMem cart support to xvic.<br />
* NEW: resource "UltiMemWriteBack" (Boolean) to enable/disable write back of the UltiMem ROM.<br />
<br />
=== r30213 ===<br />
* Added I/O-2/3 RAM support to xvic.<br />
* NEW: resources "IO2RAM" (Boolean) and "IO3RAM" (Boolean) to enable/disable the I/O-2/3 RAM carts.<br />
<br />
=== r30225 ===<br />
* Added c64 CP/M cartridge support.<br />
* NEW: resource "CPMCart" (Boolean) to enable/disable the cartridge.<br />
<br />
=== r30294 ===<br />
* Removed "UserportJoyType", "JoyDevice4" and arch joystick device 4 related resources in x64dtv.<br />
<br />
=== r30368 ===<br />
* Completed generic audio input (sampler) system.<br />
* NEW: resource "SamplerDevice" (int) controls which host sampler device is used, currently supported are 0: media file, 1: portaudio<br />
* NEW: resource "SamplerGain" (int) controls the sampler gain in % (1-200).<br />
* NEW: resource "SampleName" (string), in the case of media file audio input this string holds the name of the media file to be used<br />
<br />
=== r30410 ===<br />
* Added userport support to xplus4.<br />
* Changed: "JoyDevice3" is now plus4 userport port 1, and "JoyDevice4" is now plus4 userport port 2.<br />
* NEW: resource "JoyDevice5" (int) plus4 sidcart control port.<br />
<br />
=== r30425 ===<br />
* Extended the userport rtc (58321a) to cbm2, pet and vic20.<br />
<br />
=== r30429 ===<br />
* Extended the userport dac to c64, c128, cbm2, plus4 and vic20.<br />
<br />
=== r30443 ===<br />
* Split the digimax userport device from the digimax cartridge and extended the digimax userport device to cbm2.<br />
* Changed: the digimax address no longer uses $dd00 to indicate userport usage.<br />
* NEW: resource "UserportDIGIMAX" (bool) to enable/disable the digimax userport device.<br />
<br />
=== r30449 ===<br />
* Added userport 4bit sampler support to c64, c128 and cbm2.<br />
* NEW: resource "Userport4bitSampler" (bool) to enable/disable the sampler.<br />
<br />
=== r30488 ===<br />
* Added userport 8bit stereo sampler (8bss) support to c64, c128 and cbm2.<br />
* NEW: resource "Userport8BSS" (bool) to enable/disable the sampler.<br />
<br />
=== r30518 ===<br />
* Added userport ds1307 rtc support to c64, c128, cbm2, pet and vic20.<br />
* NEW: resource "UserportRTCDS1307" (bool) to enable/disable the RTC.<br />
* NEW: resource "UserportRTCDS1307Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30535 ===<br />
* added support for RR-Net MK3 cartridge (new CRT type 58) to c64, c128, scpu<br />
* NEW: resource "RRNETMK3_flashjumper" (bool) to enable/disable the Flash Jumper (required to write to BIOS).<br />
* NEW: resource "RRNETMK3_bios_write" (bool) to enable/disable automatic writeback of the BIOS when changed.<br />
: Note: you may take the menu from retro replay as a template (remove "bank jumper" and "revision")<br />
<br />
=== r30683 ===<br />
* Added tapeport system, and changed the datasette into a tapeport device.<br />
* NEW: resource "Datasette" (bool) to enable/disable the datasette device.<br />
<br />
=== r30701 ===<br />
* Added joyport bbrtc (ds1602) support.<br />
* NEW: resource "BBRTCSave" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30702 ===<br />
* removed the "VICIINewLuminances" resource and use seperate luma tables per chip type instead.<br />
* Note: in x64dtv the resource is still used, it should perhaps be moved to "model settings" and named something like "luma fix" in the menu/dialog.<br />
<br />
=== r30711 ===<br />
* Added tape port logger device.<br />
* NEW: resource "TapeLog" (bool) to enable/disable the device.<br />
* NEW: resource "TapeLogDestination" (int) to choose if the log output goes to the generic logfile (0) or a specific file (1).<br />
* NEW: resource "TapeLogfilename" (string) the name of the logfile when "TapeLogDestination" is 1.<br />
<br />
=== r30728 ===<br />
* Added cp clock f83 tape port rtc (pcf8583) device.<br />
* NEW: resource "CPClockF83" (bool) to enable/disable the device.<br />
* NEW: resource "CPClockF83Save" (bool) to enable/disable the saving of the RTC data when changed.<br />
<br />
=== r30730 ===<br />
* Added tape port sense (asserting) dongle device (like the kind used for some access games like leaderboard).<br />
* NEW: resource "TapeSenseDongle" (bool) to enable/disable the device.<br />
<br />
=== r30764 ===<br />
* Added tape port dtl basic dongle device<br />
* NEW: resource "DTLBasicDongle" (bool) to enable/disable the device.<br />
<br />
=== r30797 ===<br />
* Added Mike's VFLI modification to xvic<br />
* NEW: resource "VFLImod" (bool) to enable/disable<br />
<br />
=== r32205 ===<br />
* Removed the resource "RefreshRate" from vsid.<br />
<br />
==Branches==<br />
<br />
these are branches which have already been merged back into trunk<br />
<br />
* v2.3.9-remove-ddraw (fabbo)</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3352Developer log2016-11-21T20:29:54Z<p>Blackystardust: /* 2.4.8 (r28546) */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
** '''TODO:''' update gui items in following ports: os/2<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
* '''TODO''': add GUI items to following ports: os/2<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos<br />
<br />
=== r28951 ===<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* '''TODO''': add GUI items for os/2<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardusthttp://vice-emu.pokefinder.org/vicewiki/index.php?title=Developer_log&diff=3351Developer log2016-11-21T19:20:25Z<p>Blackystardust: /* r29231 */</p>
<hr />
<div><div class="noautonum">__TOC__</div><br />
<br />
The developer log is intended to be a central place for all developers to take down notes on what has changed during development. This helps to keep all porters up to date regarding API and Resource changes.<br />
<br />
==Status==<br />
<br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|| r25372 ||<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | win32 (1)<br />
| style="background:#FFFF00;" | *nix (1)<br />
| style="background:#FFC000;" | osx (29)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (39)<br />
| style="background:#FF0000;" | beos (43)<br />
| style="background:#FF8000;" | dos (39)<br />
| style="background:#FF0000;" | os/2 (55)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | SDL (1)<br />
|-<br />
|| r25801 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (37)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25858 || 2.3.19 <br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (9)<br />
| style="background:#FF0000;" | beos (41)<br />
| style="background:#FF8000;" | dos (40)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r25955 || 2.3.20<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (2)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (30)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (4)<br />
| style="background:#FF0000;" | beos (31)<br />
| style="background:#FFC000;" | dos (28)<br />
| style="background:#FF8000;" | os/2 (4)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r26032 || 2.3.21<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (31)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (32)<br />
| style="background:#FFC000;" | dos (6)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26488 || 2.4<br />
| style="background:white;" |<br />
| style="background:#FFC000;" | win32 (3)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FFC000;" | osx (35)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (36)<br />
| style="background:#FFC000;" | dos (7)<br />
| style="background:#FF8000;" | os/2 (5)<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | SDL (1)<br />
|-<br />
|<br />
|-<br />
|| r26876 || 2.4.1<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (4)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (36)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (37)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (6)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28197 || 2.4.7<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | win32 (5)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (5)<br />
| style="background:#FF0000;" | beos (8)<br />
| style="background:#FF0000;" | dos (8)<br />
| style="background:#FF0000;" | os/2 (11)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r28270 ||<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | win32 (-)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#FF0000;" | osx (48)<br />
| style="background:white;" |<br />
| style="background:#FFFF00;" | amiga (1)<br />
| style="background:#FF0000;" | beos (5)<br />
| style="background:#FF0000;" | dos (3)<br />
| style="background:#FF0000;" | os/2 (10)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|-<br />
|| r30535 ||<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | win32 (10)<br />
| style="background:#FF0000;" | *nix (5)<br />
| style="background:#FF0000;" | osx (40)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | amiga (17)<br />
| style="background:#FF0000;" | beos (26)<br />
| style="background:#FF0000;" | dos (21)<br />
| style="background:#FF0000;" | os/2 (41)<br />
| style="background:white;" |<br />
| style="background:#FF0000;" | SDL (6)<br />
|-<br />
|| r30784 ||<br />
| style="background:white;" |<br />
| style="background:#ADFF2F;" | win32 (1)<br />
| style="background:#00FF00;" | *nix (-)<br />
| style="background:#00FF00;" | osx (-)<br />
| style="background:white;" |<br />
| style="background:#FF8000;" | amiga (26)<br />
| style="background:#FF8000;" | beos (31)<br />
| style="background:#FF8000;" | dos (14)<br />
| style="background:#FF0000;" | os/2 (50)<br />
| style="background:white;" |<br />
| style="background:#00FF00;" | SDL (-)<br />
|}<br />
<br />
<br><br />
{| border="1" cellpadding="2" cellspacing="0"<br />
|- style="background:#FF0000;"<br />
| more than one open issue from before the last release version<br />
|- style="background:#FF8000;"<br />
| no open issues from before the last release version, plus at most one other open issue<br />
|- style="background:#FFC000;"<br />
| no open issues from before the last release version<br />
|- style="background:#FFFF00;"<br />
| no open issues from before the last tagged version, plus at most one other open issue<br />
|- style="background:#ADFF2F;"<br />
| no open issues from before the last tagged version<br />
|- style="background:#00FF00"<br />
| no open issues<br />
|}<br />
<br />
==Trunk==<br />
<br />
Here is a short overview of all changes made in trunk that are relevant for the respective port/gui maintainers.<br />
<br />
Note: '''new stuff should be added at the bottom and each item should have the related svn revision'''<br />
<br />
To keep the size of this list down (and hopefully shrinking) ...<br />
<br />
* Port/GUI Maintainers should remove their port from the respective item when it is implemented. <br />
* To not clutter this page with stuff that will not get implemented anytime soon ("i will not add lightpen support to this handheld port") in such cases the respective port should also get removed from the respective item, and a note pointing out the missing feature should get added to [[Todo#Ports_.2F_UIs]] instead.<br />
* Items which have no more TODOs left should then be moved to the [[Developer_log_old]] Page<br />
<br />
----<br />
<br />
==2.3==<br />
===2.3.15 (r25340)===<br />
<br />
* added support for "Formel 64" parallel cable (r25438)<br />
** extended resources Drive8ParallelCable, Drive9ParallelCable, Drive10ParallelCable, Drive11ParallelCable (enum) from 0..2 to 0..3 (DRIVE_PC_NONE, DRIVE_PC_STANDARD, DRIVE_PC_DD3, DRIVE_PC_FORMEL64). added DRIVE_PC_NUM respectively (drive.h)<br />
** '''TODO:''' update gui items in following ports: os/2<br />
<br />
===2.3.21 (r26032)=== <br />
* added "SuperCard+" emulation (this is a drive expansion board for 1541/1570/1571/1571cr)<br />
* new Resource: "DriveSuperCardName" (string) that specifies the SuperCard ROM image<br />
* new Resources: "Drive8SuperCard", "Drive9SuperCard", "Drive10SuperCard", "Drive11SuperCard" (toggle) that specify whether SuperCard is enabled for the respective drive<br />
* '''TODO''': add GUI items to following ports: os/2<br />
<br />
----<br />
<br />
==2.4== <br />
===r27046=== <br />
* NEW: Resource "DriveSoundEmulationVolume" (integer, 0 - 4000) to adjust the volume of the drive noise emulation<br />
** '''TODO''': add GUI items in following ports: beos, os/2<br />
<br />
=== 2.4.8 (r28546) ===<br />
<br />
* new Resource: "IDE64USBServerAddress" (string) for entering a listening address, e.g. "ip4://127.0.0.1:64245"<br />
* new Resource: "IDE64USBServer" (boolean) for enabling/disabling it.<br />
* '''TODO''': add GUI items in beos, os/2<br />
<br />
=== r28951 ===<br />
<br />
* new Resources: (BOOL) "Drive8RTCSave", "Drive9RTCSave", "Drive10RTCSave", "Drive11RTCSave" (all iec machines except vsid) for enabling saving RTC data (0=disabled, 1=enabled)<br />
* '''TODO''': add GUI items for os/2<br />
<br />
=== r29610 ===<br />
* long overdue rework of keyboard map handling is in trunk now. for details on migrating to the new code see [[Keymaps]]<br />
: '''TODO''': fix UI elements for the following ports: beos, os/2<br />
<br />
=== r30025 ===<br />
<br />
* new resource "Drive8RPM" "Drive9RPM" "Drive10RPM" "Drive11RPM" (integer, default: 30000) - drive RPM multiplied by 100<br />
* new resource "Drive8Wobble" "Drive9Wobble" "Drive10Wobble" "Drive11Wobble" (integer, default: 50) - drive wobble<br />
: '''TODO:''' Add GUI items in the following ports: beos, os/2<br />
<br />
=== r30650 ===<br />
* Added IDE64 shortbus system, and added shortbus digimax support.<br />
* NEW: resource "SBDIGIMAX" (bool) to enable/disable the shortbus digimax expansion (actual active state also depends on if IDE64 is active or not).<br />
* NEW: resource "SBDIGIMAXbase" (int) to set the base address of the shortbus digimax expansion (either 0xde40 or 0xde48).<br />
: '''TODO''' add GUI items for the following ports: beos<br />
<br />
=== r30708 ===<br />
* Added API to query list of palettes, see palette.h, use this to create the palette menu(s) at runtime.<br />
: '''TODO''' update GUI items in the following ports: beos<br />
: '''TODO''' when all ports are updated, rename all VICII palettes ("vice.vpl" -> "pepto.vpl" and then "default.vpl" -> "vice.vpl") and update palette.c accordingly<br />
<br />
=== r31502 ===<br />
* Added support for GMod2 cartridge by Individual Computers<br />
* NEW: resource "GMOD2EEPROMRW" (bool) to enable/disable writeback to the EEPROM image<br />
* NEW: resource "GMod2EEPROMImage" (string) which contains the filename of the EEPROM image<br />
* NEW: resource "GMod2FlashWrite" (bool) to enable/disable writeback to the FLASH image<br />
: '''TODO''' add GUI items for x64/x64sc/x128/xscpu64 in the following ports: osx<br />
: note: you can copy/paste most of the required menu from eg the MMCR menu<br />
<br />
=== r31536 ===<br />
* Added support by the "Behr Bonz" VIC20 cartridge (CARTRIDGE_VIC20_BEHRBONZ)<br />
: '''TODO''' add GUI items for xvic in the following ports: osx<br />
<br />
=== r31917 ===<br />
* CS8900 I/O has been abstracted, any device using the CS8900 chip now goes through the CS8900 I/O layer, for now there can be only one owner, any attempt to open the CS8900 I/O device when already in use by a different 'owner' will lead to a gui message stating the current owner of the chip.<br />
* resource "ETHERNET_ACTIVE" has been removed, each device using the CS8900 is now responsible for setting its own resource.<br />
* resource "ETHERNET_AS_RR" has been removed, each device using the CS8900 is now responsible for mapping the CS8900 registers.<br />
* command line option "-tfeif" has been changed to "-cs8900ioif"<br />
* command line option "-tferrnet" has been removed<br />
* command line option "+tferrnet" has been removed<br />
: '''TODO''' remove 'tfe as rrnet' item from the GUI in the following ports: osx<br />
: '''TODO''' move "ETHERNET_INTERFACE" from the TFE section to a seperate CS8900 section in the GUI of the following ports: osx<br />
<br />
=== r31947 ===<br />
* Changed MMC64, MMCR and RetroReplay to use the new clockport system<br />
* new resource "MMC64ClockPort" (int) to select the MMC64 clockport device<br />
* new resource "MMCRClockPort" (int) to select the MMCR clockport device<br />
* new resource "RRClockPort" (int) to select the RetroReplay clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection items to the MMC64, MMCR and RetroReplay GUIs for the following ports: osx<br />
<br />
=== r31953 ===<br />
* Moved TFE cartridge code to the new CS8900 I/O abstraction layer<br />
* new resource "TFE_ACTIVE" (bool) to enable/disable the TFE cartridge<br />
: '''TODO''' change the enable/disable of the TFE cartridge to use the new resource in the GUI for the following ports: osx<br />
<br />
=== r31961 ===<br />
* Added short bus ETFE emulation<br />
* new resource "SBETFE" (bool) to enable/disable the ETFE device<br />
* new resource "SBETFEbase" (int) to select the address of the ETFE device (0xde00, 0xde10 or 0xdf00)<br />
: '''TODO''' add short bus ETFE GUI items for the following ports: osx<br />
<br />
=== r31967 ===<br />
* Added IDE64 clockport emulation<br />
* new resource "IDE64ClockPort" (int) to select the IDE64 clockport device<br />
* there is a list of available devices, you can get this list by including 'clockport.h' and using the 'name' and 'id' members of the 'clockport_supported_devices_t clockport_supported_devices[]' variable, the end of the list is indicated by a 'NULL' for the 'name' member and a '-1' for the id member<br />
: '''TODO''' add clockport device selection item to the IDE64 GUI for the following ports: beos, osx<br />
<br />
=== r32092 ===<br />
* Changed tfe cartridge emulation to a generic cs8900 based ethernet cartridge emulation.<br />
* Removed "TFE_ACTIVE" resource, since the cart is no longer TFE only.<br />
* Added "ETHERNETCART_ACTIVE" resource (bool) to enable/disable the Ethernet Cartridge.<br />
* Added "ETHERNETCARTBase" resource (int) the address of the cartridge (c64/c128: $de00/$de10/$de20...$dfd0/$dfe0/$dff0) (vic20: $9800/$9810/$9820...$98d0/$98e0/$98f0 & $9c00/$9c10/$9c20...$9cd0/$9ce0/$9cf0).<br />
* Removed "TFEIOSwap" resource, since the address of the cartridge can be set now.<br />
* Added "ETHERNETCARTMode" resource (int) indicates the mode of the cartridge (0: TFE, 1: RRNET).<br />
* The command line option "-tfe" is still present, and when used sets the address to $de00, mode to TFE and activates the cart.<br />
* Removed the "+tfe" command line option, since the cart is no longer TFE only.<br />
* Added command line option "-rrnet", when used sets the address to $de00, mode to RRNET and activates the cart.<br />
* Added command line option "-ethernetcart", enables the cart.<br />
* Added command line option "+ethernetcart", disables the cart.<br />
* Added command line option "-ethernetcartbase", sets the base address of the cart.<br />
* Added command line option "-ethernetcartmode", sets the mode of the cart.<br />
* Removed the "-tfeioswap" and "+tfeioswap" command line options, since the address of the cart can be set now.<br />
: '''TODO''' change "TFE_ACTIVE" to "ETHERNETCART_ACTIVE", add 'Ethernet Cartridge base address' element, add 'Ethernet Cartridge mode' element, remove vic20 tfeioswap element and change any references from 'TFE' to 'Ethernet Cartridge' in the following ports: osx<br />
<br />
=== r32266 ===<br />
* VSID: Added submenu for 'Maximum speed' in the *nix ui. VSID already had a command line for setting the 'Speed' resource, but not a UI item.<br />
: '''TODO''' add submenu to the following ports: os/2, osx.<br />
Please note that the 'RefreshRate' resource has been removed from VSID, so when copying UI code from, for example, x64, make sure to update the UI code accordingly.<br />
<br />
=== r32316 ===<br />
* VSID: Added some hacks to make Gtk VSID behave again: since I fixed the memory leaks in the Gtk UI the VSID UI started misbehaving. VSID '''completely regenerates the entire menu''' (and didn't clean up the old one) whenever a PSID got loaded since a dynamic 'tunes' menu was created, which meant more and more hotkeys and callbacks where added that went nowhere. Obviously this a wasteful and horrible approach (triggering segfaults), so this needs to get fixed in both Gtk and Xaw code for VSID, added toolkit-specific code to only replace the subtunes menu. (Compyx)<br />
<br />
==Branches==<br />
<br />
Here is a short overview of all branches that are currently active in SVN, i.e. someone develops a new feature that soon will be merged into trunk. Note here the upcoming features, if some testing is required on specific platforms or there is something porters need to be aware of. When a branch was merged into trunk, the respective info should be moved to the [[Developer_log_old]] Page.<br />
<br />
* 2.3-new-cpu-cores (blacky)<br />
** This branch is all about (old and) new cpu cores, it is meant to implement the following:<br />
*** <strike>z80 support for x64/x64sc (z80 cp/m cartridge).</strike> (code is in the trunk and used by the c64 cpm cart)<br />
*** <strike>65(S)C02 support as used in some accelerator carts, but also as direct 6502/6510 replacement.</strike> (core is in the trunk and used by the fd2000/4000 drives)<br />
*** 65CE02 support as direct 6502/6510 replacement.<br />
*** <strike>65802/65816 support as used in some accelerator carts, but also as direct 6502/6510 replacement (65802 only).</strike> (core is in the trunk and used by xscpu64 as the main cpu core).<br />
*** <strike>6809/6309 support as used in the super pet.</strike> (core is in the trunk and used by the superpet)<br />
*** 8088 support as used in a copro board for the cbm2 (able to run cp/m-86 and msdos 1.25).<br />
<br />
* driveupdate (soci)<br />
** The point is to have a single FDD emulation for all drives which need low level media emulation and caching. The disk image handling is also reworked to make simpler to use and extend it later. Some features were added like handling of d71 double sided emulation mode disk images, real 6502 FDC with GCR image (works for 1001 now, planned for others). Improved fault handling and updating of Dxx images, 1581 and other MFM drives needs some work. Planned is to get the 1571 MFM mode somehow working together with the GCR mode (probably not on the same type of image file), and maybe implement G64 image support for the IEEE drives. And of course all these changes brings some new bugs to fix. This is most likely not going to be finished in 2011, and maybe some parts should be migrated to trunk to get some of the ready stuff out earlier.<br />
<br />
* vice-1990 (soci)<br />
** Branch for emulating the 1990 drive.<br />
** TODO: user interface for Drive?Swap8Button, DrivexSwap?Button, Drive?WriteProtectButton<br />
** TODO: gui changes so that this type can be selected<br />
** TODO: RTC72421 emulation needed<br />
** TODO: proper disk image attaching, hdd/iso/fdd image types? Currently file is hardcoded to "/tmp/image" for all!<br />
** Future: geos, swap8, swap9 and write protect LEDs on GUI would be nice<br />
** Future: device number comes from the image instead of VICE.<br />
** Future: vdrive support. Good luck ;)<br />
<br />
----<br />
<br />
List of ports: amiga, beos, dos, os/2, osx, *nix, win32, sdl<br />
<br />
List of ports outside UI updates: android, dingoo</div>Blackystardust