Skip to content

DearImGUI development build feedback

Manuel Bilderbeek edited this page Apr 18, 2024 · 57 revisions

Bugs, to be fixed

  • Santi reported: I had the breakpoints window open, clicked on "add" to create a new breakpoint, and selected the "address" field. Then I pasted the address I wanted via CMD+V (in Mac). The result that the address was pasted BOTH into the breakpoint place, but ALSO in the MSX side (I had BASIC open, and the address showed up there).
    • This will be fixed in the future when we have context-dependent keybindings. Maybe we should group/move all these duplicates together?
    • This specific problem shows up on Mac and not on Linux/Windows because: on Mac we bind "META+V" (CMD+V) to the type-clipboard-content command, while on Linux/Window we bind this to "CTRL+META+V" (CTRL+WIN+V) to avoid clash with the regular "CTRL+V" (paste) key binding.
  • Pasting doesn't work anymore on Windows (CTRL+META+V). Works fine on Linux. Other bindings with "GUI" seem to work, like CTRL+GUI+F6. So it seems Windows is catching the CTRL+GUI+V binding itself before openMSX gets to see it.
  • If you use the default hotkey to save a state (ALT-F8), and the default pop-up is coming over the openMSX window ("screen saved to xxx.png"), the release of the ALT (MSX: Code) key isn't received in the emulated MSX and this causes the MSX Code key to be stuck pressed (until you press it again). Looks like the keyboard is totally going haywire... See a.o. https://www.msx.org/forum/msx-talk/openmsx/please-help-testing-upcoming-openmsx-release?page=81 (and the preceding pages, reported by ro)
  • PgUp/PgDn in the console isn't working anymore. It did work a while ago, but apparently this got broken (something with wrong focus?)

Issues related to ImGUI that block the release

  • Most of the manuals (especially the User Manual) need to be updated/expanded to describe the ImGUI controls.

ImGui issues in the issue tracker:

(Minor) usability issues... would be nice to be fixed

  • Is it clear (or how do we communicate that) right-click on a setting shows the default and can be used to reset a setting?
  • Not everyone likes the pop-up when dropping a file. MP83 would like a way to shut it up (like he did for the Configure messages).
  • Importing a large folder (with overwrite) in a large (4GB) disk image takes a long time. A progress indication would be very useful. WAS: giuseve reported a hang-up with diskmanipulator unclear how to reproduce so far.
  • Z-index issues: In the situation you see in this image, the popup window appears in the foreground (windows order is 1-2-3). But if I close it and try to open a new image, the window order changes to 2-3-1 with the popup in the background. Might be duplicate of #1557.
  • Briqunullus: After clicking anything in the menu, the MSX loses focus and doesn't respond to the keyboard anymore. Need to click inside the MSX window in order to continue typing. I would not expect that.
    • For instance, after selecting a disk to insert from the disk menu, after pressing OK, the window disappears, but there is no focus on the MSX, e.g. if you want then to type FILES
  • When opening a combobox, it would be much easier to use if the list box is scrolled to the currently selected item (e.g. using ImGui::SetItemDefaultFocus()?)
  • The ROM/disk recent items (in the window) doesn't contain items that were inserted via drag and drop. Would be useful to have these there as well.
  • Using the scroll wheel in the machine list scrolls 5 lines (which happens to be half a page), instead of entry by entry. That makes it harder to fine select with the scroll wheel.
  • (Minor) When running (most) MSX software, it is impossible to disable "follow PC" in the disassembly view, because it's jumping all around and you can't get the menu to disable it. Workaround: pause emulation first.
    • Yep, that's the workaround. And that's sufficient, no?
  • When using the console 'step_back', the 'current instruction bar' in the disassembly view is updated properly, but the view isn't scrolling to keep that bar into view, unlike the toolbar step-back button.
  • Debugger:
    • scrollbar behaviour in the memory viewer is annoying. People expect (like in most applications) that clicking on the bar part (not the slider itself) would let the scroll go up 1 page.
    • Make it possible to enable breakpoints directly from the Symbol Manager window, by clicking on a symbol. For now, you have to manually type the name of the symbol in the Breakpoints window. Maybe it could just be: if you click on a symbol in the Symbol Manager window, the Disassembly window jumps to that location. From the Disassembly window, you can set a breakpoint or view the code the existing way.
  • FileBrowser dialog:
    • The icon to filter looks like a search icon (magnifying glass) instead of a filter icon (funnel), which is misleading. It's a filter indeed.
    • The icon to clear the filter is identical to the icon to go to the root directory. Confusing.
    • It would make it easier to find files if you could just start typing file names (currently it only matches the first character)

Hex viewer/editor (implemented via imgui_memory_editor)

Features that our other applications have, which we might want to port to ImGUI:

(wx,PyQt)Catapult

  • FPS indicator in status bar

(Qt) debugger:

  • Keyboard shortcuts - as reported by Zipper on Discord: "Like CTRL-B for setting a breakpoint, stepping through disassembly with keys (F7 - F12)." Also mentioned by several other people who use the debugger frequently.
  • Display of changed values in another color (red), after some execution.
  • In the old debugger one could autocomplete symbol names when creating new breakpoints. This is missing in the new one.
  • In the old debugger you could save a session and the session name would show up in the window title, making it easy to see which windows belong to which openMSX (debugger) instance by looking at the title bar with the session name. (For use cases with multiple openMSX instances running in parallel.)

Missing features (e.g. stuff that is available on the console or in OSD tools)

General GUI

  • Show the currently running software ("guess_title" based?) on some useful places, e.g. in the list of instances or in the current machine info.
  • Add a way to reset the layout. (Or better: of one specific window). Apparently it is possible to 'lose' a window and then there's no easy way to get it back. Suggestion from MP83: on a menu item that shows a window (which shows a checkmark when the window is open), add a right-click drop down with an option to restore it to the default position.
    • There's already CTRL-TAB to find back windows (can also be used for keyboard navigation between windows).

Console functionality that could use a GUI

  • For the tools menu:
    • Audio recording tool (channel recorder)
    • slot map
    • iomap

Functionality from OSD scripts

  • Make an ImGUI version of the toggle_info_panel OSD script. This shows some useful info about the currently running machine. Or show this somewhere else in some kind of status bar? (Or under the Machine menu entry?)
  • For the tools menu:
    • TAS tools (see TAS mode)
  • VU-meters (very useful to see which devices are used to play sound)
  • Music keyboard (for reverse engineering music)
  • SCC viewer (view SCC waveforms, debugger?)
  • FPS viewer (see also remark about toggle_info_panel like functionality or a 'status bar')
  • raster view (move to debugger?)
  • VDP busy meter
  • manual toggle of the NTSC/PAL bit of the VDP
  • tron tool (move to debugger?)

Debugger

  • [David] Extra wizard for most common breakpoint conditions. Now you can enter any TCL string, but even a simply dropdown list with some common expressions that you can alter would be nice, stuff like "[reg A] == 0" and the other examples currently in the manual.
  • An ImGUI version of a profiler, like the script here: https://github.com/MartinezTorres/openMSX_profiler

Special settings

  • file pools: should be quite nice to be able to add locations by using a directory browser. E.g. let the user point to his system ROMs instead of having him copy the ROMs into the 'right' location.
  • PSG profile

Ideas for new GUI features

  • Show date/time in the list of savestates/replays. Even more luxury: show some of the data from the file as well (e.g. current machine time, length (in time, for replays), anything that can help the user to better recognize the file he's selecting.
  • Help menu
    • Maybe we need a (mini) tutorial on how to use "Dear ImGui", especially the docking part (e.g. search and link to an existing tutorial). Or we could record a small video ourselves where we show how to customize a debugger layout. That way we bypass the need to program a default layout ourselves.
      • Programmatically pre-docking windows seems possible. There is example code, but it requires using 'unstable' parts of the Dear ImGui API. The main Dear ImGui developer also advises against it.
  • [David] Define multiple "modes" for the GUI. E.g. "beginner" and "advanced". In beginner-mode stuff like the debugger will be hidden from the GUI.
    • To keep the implementation manageable the advanced mode will be a strict super-sets of the beginner mode. We will only hide items, but keep the layout otherwise identical. That way we don't have to design, and test, multiple GUI's.
  • (As requested by some users): allow users to add a button in a custom buttons panel, define its label and color and a Tcl/console command that must be executed when clicked. See also https://github.com/openMSX/openMSX/issues/115
  • First time wizard: wizards/GUI that shows up the first time you start openMSX for setting up:
    • system ROM folder (file pool paths)
    • preferences:
      • do you want raw screenshots or monitor-emulated-screenshots by default?
      • do you want typing via keyboard or via keyboard buffer by default? (Although this might be a bit tricky to explain.)
      • joystick mapping setup
  • Debugger:
    • support for mirroring in the tables in the tile viewer
    • Symbol auto-completion in breakpoint/watchpoint addition.
    • Registers could have tooltips to show symbols associated with their values.
    • Auto-reload symbol files after builds (i.e. some mechanisms to make it easy to update the symbols whilst developing) - for the last 3 items see also https://www.msx.org/forum/msx-talk/openmsx/please-help-testing-upcoming-openmsx-release?page=79#comment-456317
    • Add the possibility to add symbols via the GUI. E.g. to just simply give a name to an address from the disassembly view.
  • Giuseve suggests to have the right panel of the diskmanipulator have the same functionality as the file browser: "it would be very useful to have the icons in the green circle also in the red one" https://photos.google.com/share/AF1QipM3KtToBO8gCMRWp_ZFcMh3GZXlJKBuzdBDk7v69EMHvKyyJ9nG0YF6IgHmnNndzw?key=R2hEaEpzc1pZTnMxUW9MeVFfeVRKY2RsRTBwMHlR
  • Show "Recent" also when selecting machines, to quickly switch between recent machine types.
  • Being able to close all debugger windows at once and reopen them in the layout as they were closed with.

Useful, but not necessary for a first release

  • [David] Allow to open multiple debug windows of the same type.
    • [Wouter] Already possible for the hex viewers, not yet for stuff like disassembly view, etc.
  • Add support for translation of the GUI to other languages. E.g. Spanish or Japanese would probably be interesting for many users.
  • Add real VU-meters for audio chips (based on the actual sound output). Or even a scope-display. The GUI is fast enough for it.
  • [David] Some compilers can create not only a symbol file but a file that contains both input source and the addresses + bytes code generated. Use this as input for the disassembler would make debugging much eassier since this file will include the correct labels, the comments etc etc. Only problem is that one address can run over multiple ascii lines..
  • [David] Symbols depending on current memory layout/slot selection/active rompage in cartridge. I'm currently working on a bigger project, and several routines have the same address but in different rompages, having the correct symbol name would be nice. At the moment if multiple symbols have the same value you're never sure if you see the correct name. Of course, if there are multiple rompages that have routines at the same address, you are never sure if you display the correct label especially if you have some interslot call routines (Remember the MSX BIOS :RST #30,DB destslot,DW destaddress). But otherwise when stepping through your code that you are debugging using the symbolnames with regards to the current slotlayout should be "close enough".
    • [Wouter] As a prerequisite this requires a symbol file format with information about rom mapper pages.
  • Debugger: visual profiler (e.g. based on the Tcl script by Grauw). See also https://msx.org/forum/msx-talk/development/measure-time-between-end-of-function-and-interrupt?page=1 for instance.

Things that will not be implemented for now

Not easily implementable in (the current version of) Dear ImGui

  • Most GUIs can also be operated without mouse, e.g. the OSD could be operated completely without it (and it could be operated with the host controller!). Lots of things can already be controlled with keyboard only in ImGUI (TAB, cursor keys, space). I think we should make using the GUI without mouse easier/possible as soon as the ImGUI library permits us. (Currently not yet.)
  • all lists allow a quick select/search by pressing the first letter. E.g. if I press "P" the list scrolls to the first item that starts with "P".
    • [Wouter] I tried, but currently it's not easy to customize ImGui widgets with extra keyboard functionality. There is work being done (in upstream Dear ImGui) to improve this, but it seems it progressing slowly. This issue talks about it.
    • The reason why this isn't part of the standard Dear ImGui ListBox/ComboBox is that those widgets don't need to contain (only) text (and also not necessarily sorted). So in general ImGui can't always know what keyboard input should do.
    • Some 3rd-party widgets, for example the FileDialog, do support this behavior. Including some 3rdparty ComboBox widgets, though these are highly specific, we need something more general. We could modify that code, but it's basically a re-implementation of the internal ImGui ComboBox. It makes heavy use of internal/private ImGui stuff, and thus may break when upgrading to a newer ImGui version. For now I prefer to not go in this direction.
  • Various items refer to a pre-defined layouts, for example for the debugger (pre-docking the debugger toolbar on the disassembly view etc). Here's an example image.
    • Technically this might be possible, though the main Dear ImGui developer advises against it. See this thread.
    • Maybe we can instead solve this via examples and documentation. Maybe even a screen-capture-video of how to construct the layout in the previous example image (and ideally more than one example, to show that people can really customize the layout for their specific use case).
      • I don't think this is very easy to set up for most users... Can we help them better? E.g. by some default setups that can be loaded?

OSD menu stuff

  • long items are automatically scrolled.
    • Was a hack for the OSD infrastructure, would be weird in a 'real' GUI. If a long item isn't readable then point it out specifically, and then we can add scroll bars.
  • shows the current machine, as we're operating on that one (e.g. when changing media, extensions, pluggables etc.)
    • Current machine is shown at the top in the 'Select MSX Machine' (fold open the 'Current machine' tree-node to see all details). Isn't that sufficient? If not then please create a mock-up for how it should look.
      • The only viable solution I see is to put all machine-specific stuff under a single top-level 'machine' menu, containing Media and Connectors (at least). But that's probably going to hinder very common use cases elsewhere. I guess we should skip this.

(wx)Catapult

  • as it uses the native OS file dialog, it also offers to rename files, reorganize folders etc. a bit. This is not supported in the Dear ImGUI file dialog and we will therefore not recreate that functionality.
  • Save settings, explicit save settings as... and load settings, auto-save settings on/of. These are considered too detailed/niche to appear in the GUI.
  • Setting of printer log file
  • MIDI in and out setting (including input and log files, but I guess that is not too useful). TODO: isn't just offering the pluggables good enough already?
  • Sample in setting (including input file) for turboR sampling unit

Other

  • the old debugger had the possibility to differentiate between a code label and a constant or variable, through the symbol manager. The new ImGUI Debugger doesn't. See also https://www.msx.org/forum/msx-talk/openmsx/the-best-3-tricks-for-openmsx-debugger-so-far?page=1#comment-454094
    • This isn't true. It only appeared this was possible in the old debugger, but it doesn't actually work. See post in same MRC thread for more details.
    • We could implement this in the future, but to be practically usable it first needs a symbol file format which contains this information, and an assembler that can produce that file format.

Ports

  • Doesn't build on Dingux (which has OpenGL disabled). We must either support GLES or drop the port.
  • Doesn't build in Android (which has OpenGL disabled). We must either support GLES or drop the port.

Bugs that we can't or won't fix:

  • MP83 reports that there is some cropping on the left in the sprite viewer on his Windows system on one monitor, but not on the other: image

Fixed or done.

  • [Manuel] When debug break is active, typing in the console feels very slow. Also when power is off.
    • [Wouter] Fixed in 3a5a0622. See commit message for details.
  • [Manuel] make the display user friendly. E.g. not "carta" but "Cartridge slot A". Not "joyporta" but "Joystick Port A". Not "joystick 1" but the actual device name. In other words: please take a look at how this was done in the OSD menu.
    • [Wouter] Done for the "Connectors" menu.
  • [David] Symbol file needs lower case equ and currently doesn't recognize EQU in uppercase as produced by sjasm(plus)
  • [David] In the disassembly window the mnemonics column doesn't work well with long labels. I got lines like ld (debugenemy and that's it, no 'ld (debugenemy_previous_gravity_value),hl' even after resizing the window to make it fit.
  • [Wouter] The (ImGui) OSD icons were broken (when starting openMSX for the first time):
    • They happened to work fine for me because I had the correct settings in my 'imgui.ini'.
    • Also many tweaks to the default appearance and to the OSD-icon-configuration-window.
  • [David] Allow to open multiple debug windows of the same type.
    • [Wouter] Implemented for the hex-editors, not yet for the other debugger-widgets (disassembly, bitmap viewer, ...).
  • [Manuel] Partially blurry fonts on Manuel's PC. Already visible in the very first version. Unclear when fonts are blurry and when not.
    • [Wouter] Fixed in imgui_impl_opengl3.cc. I opened an upstream issue . I'll keep an eye on how it gets fixed upstream (and then adjust our code).
  • [Wouter] OSD icons are wrong after changing the scale_factor setting.
    • Fixed by reusing the same openGL context when resizing the window (so that e.g. textures remain valid).
  • [Manuel] I had follow PC enabled, but after a step back with a big jump backwards, the PC wasn't shown in the window. So, follow isn't always working properly.
  • [Wouter] There's still something wrong with (repeated?) keyboard event handling.
    • To reproduce:
      • Open an ImGui widget which needs keyboard input. For example the 'Debugger > memory' widget.
      • Click on a byte, and then keep holding down a key (e.g. '1' to edit, or 'cursor down' to scroll).
      • In some cases this event is (also?) passed to the emulated MSX.
      • The correct behavior should be that ImGui fully consumes this keyboard event.
    • Fixed in 56499b29.
  • [David] Add location indicator in background of memory viewer.
    • When you edit data in the memory viewer or enter an address directly it is clear which byte you're looking at. However, if you continue debugging your program the memory viewer looses focus, and you do not have any indication anymore of the byte you were monitoring. So simply have the background of this byte in a slightly different color will help tremendously in finding the byte you're interested in during a debug session.
  • Menu to insert extensions
    • [Wouter] Implemented but may need some tweaking. (Though that is covered by other items above).
  • lots of control (e.g. media, some settings) in another window outside of the openMSX window. Some streamers liked it, so they don't have to show the menus on their stream (they only show the MSX screen).
    • [Wouter] Can you name specific items for which this is useful and currently missing? E.g. For switching disks/roms this is already possible via the 'advanced' windows. I don't think this is useful for stuff like changing settings: you typically set these up once before playing a game, not during a game.
    • Maybe we can make it possible to undock the main menu bar?
      • Done, it's now possible to have no imgui items at all on the main openMSX window (menu bar, icons, reversebar can all be moved outside).
  • [Manuel] show the machine info meta-data not after selecting a machine, but while you are selecting. So that you get a kind of preview before you actually select. So you can easily run through the list of machines and get info about what you're selecting. See the OSD menu.
    • [Wouter] Done, via tooltip.
  • Hard disk images cannot be changed in the Media menu yet
    • [Wouter] Done. Also CDROM images.
  • [Manuel] Focus issue with console. One way to trigger: open the console with F10 then close the console by closing the window with the X-icon on the top right. Then no focus on the MSX will be retrieved until opening/closing console again.
    • [Manuel] One idea for focus: always focus on the MSX, unless you activated a GUI window (e.g. by clicking on it). But for the main menu bar, focus should be there when you hover it...
  • Missing error handling. E.g. for stuff like insert a non-working extension, a disk image without proper file permissions, ...
  • [David] a simple table like the breakpoint table where you can enter arbitrary symbolnames/address and get the values of those. This way you can have a quick overview of variables you are monitoring in your code in a central place with easssy names, instead of picking the values from several memory views. If it could be fancy, I propose a table with columns like:
symbol or address size optionally slot and mapperpage value display column
inputbyte 1 0x41 65 'A'
playerlife 1 0x03 3 -
shipspeed 2 0x4241 16961 'AB'
inputstring 10 'big string'
  • [Wouter] Implemented the above via the 'Watch expression' debug window. Not exactly the same as requested, but also more general.
  • File browser for media starts in the directory of that inserted media (if any).
  • [Manuel] I had several issues to get focus back on the MSX input with the keyboard, especially when using the console. I had to reopen the console (first attempt on F10 didn't do anything, second attempt opened the console) and close it to get focus back on the MSX.
    • [Wouter] Can you elaborate? How did the the MSX loose focus? I assume it's because you were interacting with an ImGui widget, thus via the mouse. The normal way to give focus back to the MSX is to click in the MSX window.
      • [Manuel] One way is: open the console with F10 then close the console by closing the window with the X-icon on the top right.
    • [Wouter] Alternatively we give focus back to the MSX when the console widget is closed (so typically by pressing F10 once or twice). The use case I had in mind here was to be compatible with the interaction use-cases of older openMSX versions: you're playing an MSX game, you open the console (e.g. to insert a different disk), you close the console, and then you expect the MSX to regain focus.
    • [Wouter] Can you make a suggestion for how we can improve the focus?
      • [Manuel] we'll have to play with some options. One idea: always focus on the MSX, unless you activated a GUI window (e.g. by clicking on it). But for the main menu bar, focus should be there when you hover it...
  • [Manuel] I think by default, the disassembly view should follow the PC. That's what you normally want, right?
    • [Wouter] You mean the "right-click > Follow PC while running" option, right? The intention is indeed that at all 'relevant' moments (e.g. break, step, backward-step (when the bug below is fixed), ...) the disassembly view indeed scrolls to the PC. The option is only to constantly update the scroll position, also when the MSX is running. Personally I found a constantly scrolling disassembly view too distracting. I can of course close the view when I'm not actively using it. And I don't mind flipping the default, it's just not my personal preference.
  • When selecting an extension in the "Cartridge Slot X" window, the extension name is shown twice near the top of the window.
  • when selecting machines or extensions, a lot of info is immediately shown (while selecting) about the item so you know which one you want. This makes it very quick to find the right machine/extension. Most of this is added already (the meta-data), but the following are still missing:
    • amount of RAM
    • amount of VRAM
    • VDP type
    • number of cartridge slots
  • access to specific toys (toggle_* scripts)
  • supports adding/removing IPS patches for ROMs
  • save states with preview
  • quick access to reset button
  • keyboard shortcuts to quickly go to the start of a selection list
  • [David] debugger sessions are missing.
    • Currently using the debugger requires a large amount of setup each time I launch openMSX
      1. Load the symbol file
      2. Re-enter all breakpoints/watchpoints that I want to check
      3. Have the memory viewer set to the correct address
    • It would be nice if the debugger would save the used symbol files and reload them automatically when openMSX is launched. Specifying them on the CLI could be a sufficient first step for me. Now I created a softlink called 'aaaa.asm' to my sym file just to open it faster in the filebrowser...
    • The breakpoints that I enter use the symbols from the symbol file, when saving the breakpoints these names should be used, since after a recompile from the program I'm testing these labels could have new addresses.
  • Dir-as-disk support (now missing in the Media -> drives menu)
  • slot display shows also the MSX slot number
  • paths are showing the last part, so you can easily find the proper disk image (the disk number is often at the end of the filename). You don't want to resize GUI windows because you can only read the first part of a path... which is the least descriptive.
    • [Wouter] Implemented for path for rom and disk images. Let me know if there are more places where this should be applied.
  • Change order of media to what is available on most machines: cartridge slots, tape deck, disk drives, hard drives, laserdisc
    • Feel free to change the order. But instead of order-of-availability, shouldn't we order them according to most-likely-to-be-needed. I mean so that the most frequently used items are more likely near the top.
    • [Manuel] Mostly agreed, so I made a compromise: carts, extensions, disks, tapes and keep the rest as it was.
  • user-friendly (descriptive) preset settings for horizontal_stretch. This is enough for most users... if it's on another value, we can display "Custom: 123". Although this may be tricky to implement in the GUI if you also want the user to be able to tweak it freely. (Admittedly: this is a bit of a luxury feature, especially if special values are added to the help text.)
    • Addressed by improving the help text.
  • Show 'empty' (instead of nothing) when hovering over a cart/disk/cassette in the media menu which has nothing inserted.
  • In the info about the machines or extensions, don't show the XML keys or Tcl dict keys, but English (e.g. release_year must be Release year in the machine selector under Selected Machine).
    • Done, but let me know if I overlooked something.
  • Machines are now displayed as "manufacturer name + type". (Plus config-name, if the former wasn't unique).
    • Done, but let me know if I overlooked something.
  • The different monitor type options are shown human readable (so not with the underscores etc.)
  • when an inserted ROM is not in the softwaredb, OSD-menu also showed "Status: unknown" (as we had a status field anyway).
    • Discussed and, if I understood correctly, nothing (more) needs to be done for this.
  • The info display about machines always shows 0 cartridge slots
  • when unknown ROMs are dropped, you get a list of mappers to select (or AUTO to guess, which is the default selection)
  • Long text with multiple colors (syntax highlighting) in the console sometimes appears bold.
  • auto-reset when inserting a ROM (you always need a reset to start it). It must be possible to insert a ROM without resetting as well (e.g. you want to 'live' insert an SCC cart in slot 2). This is to support gamers who quickly want to run ROMs by dropping files on openMSX. They may think openMSX isn't properly working if there's no reset and the game is not starting.
  • Some menu items mention keyboard shortcuts (hotkeys), but these are only valid when the default mapping is still in place. If users would choose to change the bindings (or remove some), these hotkeys hints are lying...
  • There seems to be confusion of paths with backslashes coming from Dear ImGUI and paths with forward slashes that are used in openMSX (Windows specific issue).
  • In the extension list, we do not show the extension file names primarily, but the "manufacturer name + type + name". This can add a lot of ease.
  • Shows media slots that you would expect to be there, but aren't as disabled items in the menu:
    • (No cassetteport present)
    • (No diskdrives present)
    • (No cartridge slots present) - and for this case also the extensions menu is hidden. There is one machine without cartridge slots :)
  • Long paths are showing only the last part, still missing in:
    • ROM image display in Cartridge Slot window
    • Tape image path in Tape Deck window
    • IPS patch list
  • quick overview of all media slots and what's in them
    • e.g. you can see all cartridge slots and what's in them (either ROMs or extensions) and also a display of I/O only stuff
    • idea: show in the Media menu also the content of the slots (that drop down list already gives a good overview...) - with limited length to prevent a huge menu item. I mean: just add the currently inserted file (or humanly readable name) in the menu list behind the slot name. Then just opening the menu gives you already an overview. A similar concept is on the pyQt Catapult and partly also in the wxCatapult.
    • the current tooltip is a partial solution (and not bad at all, just doesn't give the overview). But please show the softwaredb name for ROMs.
      • [Wouter] Not really solved, but current solution is good_enough. And e.g. also blueMSX doesn't have this overview (I think).
  • user friendly display of things (see elsewhere on this page), for slots, media (using softwaredb), monitor_type options, etc.
    • Contents of a cartridge slot is displayed by the human readable extension name (manufacturer name + type + name) or the human readable name from the softwaredb in case of ROM files
    • In the content preview tooltip of the Cartridge Slots, show the softwaredb name if available instead of the filename.
  • In the slot selection pop up when dropping a ROM on openMSX it shouldn't display "cartX" but "X (slotnr): <what is already in the slot in a humanly displayed way|(empty)>" where X is A, B, C, etc.
  • Guesses the currently running software to generate a savestate name automatically. Makes it very easy to quickly create a savestate you can also find back, without any typing.
    • Put it in the (editable) file name box to create a new savestate?
  • Quick access to your software collection using the file_pool paths:
    • E.g. automatically always show a bookmark to the corresponding file_pool. This also integrates the file pool settings into the file browser.
  • (I know it's not completely finished yet): buttons of the tape deck do not show the status. E.g. play button isn't pressed when playing the tape.
  • Shows the filename without paths on places where the path is not so relevant.
    • e.g.: when showing a ROM that is not in the database, just the filename is presented (e.g. in ROM file drop menu, ROM selection).
    • disk images (also drop pop-up)
    • cassette images (also drop pop-up)
  • In the drive selection pop up when dropping a disk on openMSX it shouldn't display "diskX" but "Drive X: <what is already in the drive in a humanly displayed way|(empty)>" where X is A, B, C, etc.
  • Allows you to toggle the firmware switch from an easily accessible place (not in a huge list of settings ;-))
    • Suggestion to add this to the Machine menu, but only if the machine has such a switch.
  • Minor: mute button of tape deck has generic help text... which doesn't fit the situation.
  • When browsing for media, it shows only short cuts to file pools which actually exist and are non-empty folders and names them according to the file type ("ROM pool" instead of "file pool"). (Currently Dear ImGUI shows also unused file pools, which is not useful and possibly only confusing.)
    • Suggestion to dynamically add bookmarks to the file browsers for the filepool filetypes (ROM/disk/tape) which point to their respective filepool paths for these filetypes, but only if they contain subdirectories or files with extensions that belong to that filetype. Name could be " pool " where N is left out when there's only one bookmark to add.
  • Z80/R800 CPU frequency setting
  • OSD-menu offers a way to change the keyboard mapping mode
  • makes it easy to find extensions you need (Human readable name (Manufacturer + type + name) and type).
    • We could add a filter option that is now also for machines (on type) with the readability stuff is described
  • When typing in a custom name when saving a replay by typing something over the suggested name, it's still saved by the auto-generated name
  • The text in the reverse bar is positioned a bit strangely (would have expected that it was centered)
  • When trying to save a state or replay with auto-generated name, it overwrites a previous state/replay, without even asking for confirmation. See next section for suggestions on how to improve.
  • OSD-menu offered a way to quickly create a new savestate without overwriting the old state: it automatically appended numbers to the filename.
    • suggest to use the same naming suggestion by adding a 4-digit number to the generated name, until that filename is not used.
    • if an existing name is selected, better ask the user to confirm before overwriting.
    • this should also extend to replays of course (although these are not in the OSD menu)
  • Do we want to keep that "All settings menu"? It contains a lot of complex stuff and is also very technical (no human readable names). On the other hand, if someone needs an obscure setting, it can be found there.
  • ImGUI Demo window
    • Make more hidden, e.g. don't include it in a release build
  • Add openMSX logo in about menu.
  • ImGuiFileDialogFlags_CaseInsensitiveExtention doesn't seem to have an effect. It only shows files that match the lower case extensions from the filters.
    • Fixed. Was a bug in the upstream ImGuiFileDialog project. I submitted a bug report. Bug was confirmed, and fixed (in the same way as I proposed).
  • Uncaught exception in this scenario:
    1. start up fresh openMSX
    2. open Cartridge Slot A
    3. select a ROM file (or the current selection), e.g. /tmp/bla.rom
    4. click Apply and then click OK
    5. hover on Cartridge Slot A or on Extensions -> Remove -> Uncaught exception: File "/tmp/bla.rom (1)" not found
  • Help menu
    • Put links to the manuals there, just like PyQt Catapult
      • FAQ
      • Setup Guide
      • User's Manual
  • Can't use host PC joystick, as button0 triggers the toggle/docking of the top menu bar
  • contains a user friendly way to reassign the joystick mapping, see e-mail discussion about what this looks like in OSD-menu.
    • this is what it looks like in blueMSX:
    • (a more schematical approach is fine I think)
  • [Wouter] ImGui is not usable in fullscreen mode, because there we permanently hide the host cursor.
  • Trainer selection GUI
  • Cheat finder GUI
  • Add support for missing symbol file formats (HiTech-C, asmsx, VASM).
  • Disk manipulator GUI
  • Crash:
    1. open console
    2. type s
    3. press up key (to search backwards), first item is displayed
    4. press down key (CRASHES)
  • The screenshot command used to skip OSD and other things that are not MSXy, but now it includes all ImGUI elements, like the top bar, icons, any open dialogs, etc.
  • In "Tools > Disk Manipulator > Create new disk image > Select new file" this opens a modal browser window. But that closes the modal disk manipulator window. Should be fixed by properly (hierarchical) nesting on the windows (but this first requires a refactoring of the ImGuiOpenFile class).
  • Ren-Sha Turbo control
  • Users complain that when they drop a disk image on a machine with 1 drive, that they don't get any feedback that the disk was inserted. The OSD menu always showed a message. Can we do something similar? (The same happens for drops in any other media slot of which only 1 is present, so no pop-up is needed to select the specific slot.)
  • TAS mode and (currently unused) quitmenu use generic OSD menu functionality, but the menu control is broken (cursor can't be moved).
    • We should either replace these things with ImGUI alternatives (and then we can probably also remove *osd_menu.tcl), or make sure the controls work again. The menu stuff itself is still functional, as far as I can see.
    • [Wouter] I think this is fixed: the OSD menu controls work again. Please verify, and if confirmed remove this item.
  • for extensions, it isn't shown yet whether it's working or not (for machines it is) - with the possible error
    • Note that for some reason, people really love to run the "Check configurations..." option to find out whether their system ROM set is complete. To tempt people into abandoning Catapult, we should probably create something similar. Probably means that we should really do something for the system ROMs for extensions or create some overview or a check tool in the Tools menu.
  • Users expect an easy way to go back one folder in the file browser. The 'reset search' button seems to be like it, but it isn't... this causes some confusion.
    • Click the ".." entry at the top of the directory listing.
    • Or you can go back (=up) one (or more) folder(s) by clicking the buttons of the path itself (top row, e.g. the "/", "home", "/", "wouter", "/", ... button).
  • Not all (even simple) keyboard shortcuts are shown in the menu items. E.g. I have F11 bound to 'toggle mute', but this isn't shown in the menu.
  • A way to create an insert a new blank empty disk image in the disk menu
  • Shows some info about the selected floppy disk image (size in kB, compressed or not)
    • Can we add something like that in the Disk Drive X menu near the top?
  • Add a way to disable reverse (some people want that, because they use large hard disk images and the extra start-up time is annoying them).
  • Debugger: "scroll to address" doesn't actually scroll to the address if you put a symbol there.
  • ImGUI Debugger lacks the register hover that shows binary, decimal and separate 8-bit values that the old debugger has
  • It would be nice if the openMSX window itself is also placed on the same place as last time, just like all the ImGUI windows.
  • ImGUI Debugger: breakpoints aren't saved between sessions like with the old debugger. The breakpoint list still shows the break points, but there is no break done. To reproduce: create a breakpoint on adress 1 and boot the MSX. It will break. Then stop openMSX and start openMSX. The breakpoint still shows on 1, but no break is executed.
  • ImGUI Debugger lacks the display of X, Y and Color and VRAM-address and byte-value (of the pixel under the cursor) which the old debugger has.
  • Create screenshot
  • Use proportional fonts where possible and monospaced where needed. Makes the GUI look less technical and thus more friendly.
  • Run-To function is missing in ImGUI debugger toolbar
  • Vera font is not having all required characters for our extensions. Let's replace it with DejaVu.
  • Crash if you do: debug set_watchpoint write_mem 0xc806 {} {poke 0xc806 0xFF}, then in BASIC do a POKE &HC806,12 and rewind a few times: openmsx: src/ReverseManager.cc:891: void openmsx::ReverseManager::replayNextEvent(): Assertion ``replayIndex < history.events.size()' failed.
  • HexViewer: The address input field should also accept symbol names, and even expressions like [reg HL].
  • HexViewer: Linking the view to an address should have some common values (like the old debugger) for quicker use: https://www.msx.org/comment/reply/55683/456664
  • HexViewer: The settings are not saved, see https://github.com/openMSX/openMSX/issues/1556
  • If you have a joystick setup configured, then later start up openMSX without joystick connected, openMSX crashes. (At least on Windows. On Linux, openMSX doesn't crash until you plug out the joystick whilst openMSX is running.)
  • When using the console and giving a command that triggers an info event (e.g. screenshot), the focus is removed from the console, which is very annoying. Even happens when the settings explicitly say to not change focus (e.g. use the new top-left display in the main window).
  • The list of machines in the Machine Selector is of fixed height, even when making the window higher. Would be better to make the list grow when the window grows. (Also: by default, it should be a bit wider, so that most machine names display fine.)
  • Hex editor: the hex-values can be edited, but the ASCII values cannot.
  • When starting openMSX, the focus is not initially on the main openMSX window. Hotkeys don't work, typing in the MSX doesn't work, until you click on the main window. That's annoying, because that wasn't the case before we went to ImGUI.
  • When going to Media -> Extensions -> Recent and then back to -> Insert, the menu collapses back to the Media submenu. Similarly when first going over "Select style" and then "Restore layout", the menu closes.
  • In the file browser, it would be best to put ".." at the top, instead of part of the sort ordered items. People expect it there, but a folder named "- FILES" now appears higher.
  • For the use case that people would like to disable reverse semi-permanently (e.g. developers who use a large hard disk image, and who don't want to wait for the hash calculation), it should be possible to have reverse not started when starting up. So this links to the auto_enable_reverse setting.