** Qt porting and FM-7/77/AV/AV40/EX for Common Source Code Project ** Jan 07, 2016 K.Ohta (whatisthis.sowhat _at_ gmail.com) 1.About This package is Qt5 porting of Common Source Code Project (CSP) and Built with Visual Studio 2015 + DirectX9 + Direct Input 8 for Win32. Additional INFO: GNU/Linux with AMD64 binaries and Win32 with MINGW binaries are avaiable, packed with 7zip'ed format: or MD5SUM: SHA256SUM: Source Code: https://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20160107 2.Background Common Source Code Project (CSP) is good emulator writing. It also distributed with GPLv2, this is good for me. But codes are specified to M$ Visual C. I'm using GNU/Linux, and I starting to apply FM-7(or later). So, I start to port to GNU/Linux and using Qt4/Qt5. What you need at least: a. Qt5 (neither Qt3 and Qt4) toolkit. b. Some OpenGL implementation, maybe at leaset OpenGL v2.x . c. gcc / g++ (4.7 or later? ) or llvm clang / clang++ (3.5 or later?) toolchain. d. SDL2 (not SDL1.x). e. CMake 2.8 or later. * TIPS: If emufoo.exe don't show screen drawing, set environment variable QT_OPENGL to software (i.e. Using Windows as VirtualBox's gueat OS). 3.How to build: After extracting (or git pulled) sourcecodes: $ cd {srctop}/source/build-cmake/{Machine name}/ $ mkdir build $ cd build To configure: $ cmake .. or $ ccmake .. To build: $ make To install: $ sudo make install 4.Qt specified notice: ・Place R@Ms under $HOME/emu{Machine Name}/ , this directory has made after first using. ・Config file, {foo}.ini is writteon on $HOME/.config/emu{Machine Name}/ . 5.Status a. I tested to build only under Debian GNU/Linux "sid". But, perhaps, will succed to build another GNU/Linux OSs or BSD OS variants. * On windows, using MinGW is already okay, but not tested drawing. * Cross building with GNU/Linux's MinGW32 and Qt5.5.1 (for MinGW) is available. Modify and use build-cmake/config_build_cross_win32.sh and related *.cmake files. * And, you can also build with M$ Visual Studio 2013 or 2015. b. Now, I using Qt5 as toolkit, because authors of Qt announced "Qt4 is obsolete, will be updated no longer". c. All of virtual machines are already ported to Qt (On Oct 29, 2015): d. Now using GCC-5.2 with Link Time Optimize to build for distrubuted binaries. Upstream repositry: https://github.com/Artanejp/common_source_project-fm7 Upstream (Takeda Toshiya San's original code) http://homepage3.nifty.com/takeda-toshiya/ Changes: *** If you want to know full changes, please read 000_gitlog.txt . *** * SNAPSHOT Jan 07, 2016 * MERGE upstream 2015-12-31, with printer emulations. * A lot of fixes. * Enable to build with MinGW / Win32. * FM7: Add aspect ratio 4:3 modes. * FM7: Add support printer and Dempa shinbum-sha's Joy stick. * Built with commit f57d9c993a317ae1d08ddc7ed1576823a3244446 . -- Jan 07, 2016 20:50:57 +0900 K.Ohta * SNAPSHOT Dec 22, 2015 * MERGE upstream 2015-12-17, support new APIs . * Change APIs to upstream's OSD class , apply to Qt. * Mostly built for Win32. * FM-7/NEW7: Fix a lot of bugs. * FM7 series: Variable virtual screen size, see src/vm/fm7/display.cpp . * X1 series: Double buffering for TEXT/PCG. * Built with commit 24709b7e0ffdd2714266c487465cc4b37208aace . excepts PASOPIA7, PC-6601SR and PC-8001mk2SR are built with commit daddbc5ac974be890f545d0a0cd68730fdce154f. and Z80 TV GAME have built with commit 956581bd7f969f36d5146018ea19297fa5cd9db0 . -- Dec 22, 2015 18:22:09 +0900 K.Ohta * SNAPSHOT Dec 10, 2015 * MERGE upstream 2015-12-10 . * Change APIs to upstream's OSD class , apply to Qt. * Still not built for Win32. * Built with 3fe6eddaeb7d6b2ba2c69a06e8cdc05acac690f2 , excepts eTK80BS for 79e5e48043a64b6b74257fe3a9fc20e80b0e2252. -- Dec 10, 2015 19:18:05 +0900 K.Ohta Upstream changes: ----- 12/31/2015 [VM/MZ1P17] support underline, hiragana mode, and color mode 12/30/2015 [COMMON] add jis_to_sjis() function [EMU] fix to delete OSD instance after delete VM instance [EMU/OSD] improve functions to manipulate bitmaps and fonts [VM/PRNFILE] support save/load state [VM/MZ1P17] support MZ-1P17 [MZ2500/PRINTER] support dummy printer device and MZ-1P17 12/23/2015 [ALL] fix for UNICODE character set case [COMMON] improve create_local_path() and get_file_path_without_extensiton() not to overwrite previous result soon [EMU/OSD] improve to capture screen with png file format [EMU/OSD] improve functions to manipulate bitmaps and fonts [TOOL/MZ80K] support software keyboard for MZ-80K/C 12/20/2015 [EMU/OSD] remove functions for pinter interface [EMU/OSD] add functions to manipulate bitmaps and fonts [VM/PRNFILE] support dummy printer device that outputs to file [MZ80K/MEMORY] combine memory class and display class [MZ80K/MEMORY] support PCG-8000/1200 [MZ700/MEMORY] fix PCG-700 [PC6001] improve to use new dummy printer device [PC8801] improve to use new dummy printer device [PC9801] improve to use new dummy printer device [PC98LT] improve to use new dummy printer device [X1] improve to use new dummy printer device 12/17/2015 [COMMON] add application_path() and create_local_path() [COMMON] add create_date_file_path() [COMMON] add get_host_time() [EMU/OSD] remove EMU::application_path() and EMU::bios_path() [EMU/OSD] remove OSD::create_date_file_name() [EMU/OSD] remove EMU::get_host_time() [WIN32/SCREEN] fix screen rotation [EX80] improve screen 12/16/2015 [COMMON] improve config, common, and fileio for other environments [EMU/OSD] improve lock_vm() and unlock_vm() to support nesting [EMU/OSD] add force_unlock_vm() to force unlock vm ignoring nesting [VM/DISK] improve for other environments [VM/F9368] support F9368 [VM/FMGEN] fix to use FILEIO class (thanks Mr.Artane.) [VM/LD700] improve for other environments [VM/MC6809] improve for other environments [VM/UPD765A] improve for other environments [VM/V99X8] fix to check if screen buffer is valid or not [EX80] support save/load state [FM77AV] import Mr.Artane.'s fixes (Commits on Dec 13, 2015) [J3100] fix build errors (thanks Mr.Artane.) [TK80BS] support save/load state 12/15/2015 [WINMAIN] fix to check if button caption is multi-line or not [VM/I8080] fix to use fetch_op() function to fetch opecode [VM/I8080] support to read interrupt enabled status [EX80] support TOSHIBA EX-80 [TK80BS] improve screen 12/10/2015 [COMMON] improve common.h for other environments [WIN32/SCREEN] fix crt filter issue for eFM-7 ----- Have fun! -- Ohta.