FeatureIn Qt5?AlternativesNotes
Sound StreamingQAudioBuffervariable sample rates
Mouse inputQMouseEventneed setMouseTracking
Keyboard inputQKeyEvent
Video outputQPixmap, QImageQImage in a QPixmap in a QLabel?
GuiYes ...
Timer funcsTimers, QTimer
Config FileQSettings
Done
stricmpreplaced with strcasecmp
Directory enumerationreplaced with opendir/readdir/closedir
get_extensionreplaced with rpcemu_file_get_extention
append_filenamereplaced with snprintf
QT things
 - Can design UIs in .ui files and embed icons etc in .qrc files
   in the binary
 - http://doc.qt.io/qt-5/qelapsedtimer.html provides abstraction
   to win QueryPerformanceCounter, to provide an alternate timer system

TODO



NOT TODO

Things we're skipping

windows manifest file
 - http://doc.qt.io/qt-5/qmake-variable-reference.html
 - See WINRT_MANIGEST in .pro file

new instructions for packaging releases

vidc
 - Convert qtimage in vidc to generic mem buffer
  - convert vidc20.cpp back to .c file

bugs
 - When popping up multiple error boxes in a row you have to click OK on them
   in the order they were started ... wtf

Alt-gr key as middle mouse button
Scroll wheel support for a7k/ps2/select
mousehack - restrict mouse position position_mouse() equiv in mouse_get_osxy()

build script
 - dynarec and interpretter in one step
 - or dynarec/interpretter on command line
 - openbsd (need to find more modern compiler)
 - use QT_VERSION in pro to check we have qt 5.2

sound
 - still a few clicks every now and then, not quite as good as allegro version
 - But on faster PC, sound is perfect, stability of 500H timer?

full screen
 - poss bug, using above bug when you drag window to top of screen it causes 
   all screen to be redrawn when you reach the top

redo graphics for manual pages



 
DONE

vidc
 - optimise vidc plotting to not draw all the screen on each change
 - double size

fatal()/error() messages should be in GUI

build script
 - freebsd
 - Release mode
 - import/detect previous ./configure differences? (config.h ?)

Windows Keyboard mappings

move IOMD and VLBupdate timer to emulator thread

sound
 - a7000 support
 - fix for 41666 at startup
 - find out why windows sound is rubbish
 - frequency changing
 - Find fix for mate18 xfce/xbuntu 17.04
 - modify to play all the time (just mute for sound off?)
 - check what happens when you don't get a sound handle

shutdown - get rid of qpixmap errors
 - shut down emu thread properly

config
 - function in emu thread to check if specified config requires reboot
 - function in emu thread to change to specified config and reboot if needed

gui
 - Can maximise main window causing issues
 - Add in program icon to windows
 - Change About: window to be roughly like current
 - Add open disc dialog for ADFs
  - pass message from gui to emu thread to change disc
 - CDROM
  - Add open file dialog for ISO
  - Add in the 'this will reset RPCEmu' bits when changing between 'disabled' and an enabled  option
  - wire up backend for empty and disabled
  - Add in detected CDROM drives on windows
  - Add in host cdrom drive for linux
 - version number in title bar
 - mips display
 - network window
  - dynamic changes for windows and linux variations
 - Add in program icon to linux minimise/corner icon
 - Add in program icon on About Window
 - Work out how to make configure, network, about dialog not resiaab;e
 - about window has wrong modalness

 - Config window
  - BUG: turning sound on/off in the gui can trigger assert in sound code that
    sound must be enabled, prob thread race condition.
    "rpcemu-interpreter: ../sound.c:65: sound_restart: Assertion `config.soundenabled' failed."
  - BUG if you click rather than drag the slider the Hz doesn't update

 - Risc os 4 no boot, timing related? Twas video

move GUI window opening earlier and slight startrpcemu() so that more
fatal/error popups occur in gui, e.g. network errors.

bugs
 - floppy disc images not working (ssh over X), was timing related, fixed
   by optimised display code
 - linux subsequent opening of conf dialog is not centered in window
   (not present in windows). Fixed when making the dialog boxes not resizable
 - When losing focus on window, keyboard keys can get stuck down
 - hostfs windows daylight saving time fix
 - config loading, missing variables are "" instaead of NULL
 - NOT REPRODUCED - ROM371 with hd4.hdf.uniboot, dynarec, sound on, RPCSA lockup playing initial
   'foop'


break key support
mouse - support pressing windows menu key to do 'menu'

mouse - capture
 - inside mouse move, got abs coords
  - calculate relative x and y from previous xy and store in dx dy 
  - call mouse_poll() or equive
  - use relative x,y to replace the getmousemickeys() func
 - structify mouse_x mouse_y, mouse_b
  - add dx and dy for relative x and y, calculated from diff from center of
    screen

- discover why romark mem benchmark is significantly lower
 - position independant code in 32 bit modes

mouse don't hide cursor in mouse capture mode and not captured

full screen
 - render hints for smooth scaling
 - Handle redrawing modes when new mode takes less vertical space than old (draw black border)
 - mouse support
 - Hide cursor if entrying from uncaptured mouse capture mode
 - bug, dragging window slowly up the screen occasionally leaves 1 host px black
   line behind, (prob rounding issue on calculating redraw area).

Remove previous automake/conf build files
Remove previous windows frontend files

windows distro build script

reduce CPU usage mode

performance testing
 - needs to be closish to current performance

revert cmos.ram
Modify title bar contents, remove timer information

new build instructions on website