** Qt porting and FM-7/77/AV/AV40/EX for Common Source Code Project **

                                                         July 25, 2016
                            K.Ohta  (whatisthis.sowhat _at_ gmail.com)

1.About

This package is Qt5 porting of Common Source Code Project (CSP)
and built with Qt5, for Windows, built with MinGW(32bit).

Source Code:
   https://github.com/Artanejp/common_source_project-fm7/releases/tag/SNAPSHOT_20160725
   
Additional INFO:
   Binaries will be available, distibute from osdn.jp.
   See, https://osdn.jp/projects/csp-qt/  and
        https://osdn.jp/projects/csp-qt/releases/ .
   Released at:


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-6.1 with Link Time Optimize to build for distrubuted binaries.

Upstream repositry:
https://github.com/Artanejp/common_source_project-fm7

Project Page:
https://osdn.jp/projects/csp-qt/

Upstream (Takeda Toshiya San's original code)
http://homepage3.nifty.com/takeda-toshiya/

Changes:

* SNAPSHOT July 25, 2016
  * Upstream 2016-04-13
  * Bugfix only.
  * [Win32] Build with Qt5.7.0 and GCC-6.1 (cross).
  * [MOVIE_SAVER/OSD] Fix wrong framerate when recording ; this is related by frame skipping. Maybe fixed (3) of http://hanabi.2ch.net/test/read.cgi/i4004/1430836648/705
  * [MOVIE_SAVER/Qt] Fix duplicate opening before closing. Maybe fixed (5) of http://hanabi.2ch.net/test/read.cgi/i4004/1430836648/708 .
  * Build with 8265a0a859ac69ef7c17548851902eab2de6f7f4 (or later).
  
-- Jul 25, 2016 21:59:41 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT June 29, 2016
  * Upstream 2016-04-13
  * Build with FFMPEG 3.0.2 supported libmp3lame.
  * [MOVIE_SAVER/Win32] Fix wrong value of left frames for audio when stopping to record.
  * [OSD/Qt] Fix wrong FPS with not drawing.
  * Build with 3752c12b4b08f9910f3e3b6ad6f7dfbd76342cbb (or later).
  
-- Jun 29, 2016 13:05:15 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT June 21, 2016
  * Upstream 2016-04-13
  * Build with FFMPEG 3.0.2 supported libmp3lame.
  * [Linux] Build with qt.io's official Qt 5.3.1 expect to work with 
    Ubuntu 16.04 LTS and Debian 8 "Jessie".
  * [MOVIE_SAVER] (Maybe mostly?) Fix asynchronous both video and audio.
  * [MOVIE_SAVER] Add libmp3lame and vorbis (disable from UI) for audio codec.
  * [Qt] Not linking config and using_flags directly from libCSPgui , libCSPavio and libCSPosd .
  * [MOVIE_SAVER][EMU] Fix stop/restart recording movie when changing/ejecting CARTRIDGEs.
                       Now, don't stop when changing/eject cartridge.
    See, http://hanabi.2ch.net/test/read.cgi/i4004/1430836648/699 .
  * [MOVIE_SAVER] Re-enable (and selectable) H.264 for video codec.
  * Build with 85c331b7635ca713e819218b86d65a877b7478f3 (or later).
  
-- Jun 21, 2016 01:07:44 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT June 18, 2016
  * Upstream 2016-04-13 .
  * Build with FFMPEG 3.0.2 .
  * [MOVIE_SAVER] More safer open/close.
  * [MOVIE_SAVER] Fix deadlock when closing movie.
  * [MOVIE_SAVER] Selectable both MPEG4v1 and H.264(libx264) for video codec.
  * [MOVIE_SAVER][Qt] Temporally set video-codec to MPEG4 (not AVC).
    This is issue of discard frames with libx264 by ffmpeg's libavcodec/libavformat.
    This seems to be ffmpeg's issue, not my program.
  * Build with 629f7d70816c04b38c3ab8cc277147a6bd2c2d2a (or later).
  
-- Jun 18, 2016 03:32:06 +0900 K.Ohta <whatisthis.sowhat@gmail.com>


* SNAPSHOT June 11, 2016
  * Upstream 2016-04-13 .
  * Use osdn.jp to distibute binaries.
    https://osdn.jp/projects/csp-qt .
  * [MOVIE_SAVER] Use ffmpeg internal aac codec, because faac or fdk_aac are not *Free* .
  * [VM/MOVIE_SAVER] Fix stopping when changing cartridge, now refer to upstream (split movies).
  * [Qt/Win32] Fix not work with WindowsXP, using homebrew version of ffmpeg-2.8.7.
  * Build with 89d31ce8daa733ea4a0c38f0a1890d3a0fcfce38 (or later).
  
-- Jun 11, 2016 05:09:55 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT June 09, 2016
  * Upstream 2016-04-13 .
  * Now, all of binaries are built with ffmpeg-2.8.7 at GNU/Linux,  with ffmpeg-3.0 at Windows.
  * Please read README.ffmpeg.txt .
  * [FM7/Disk] Add exceptions for Xanadu Scenario 2, this has not booted with changes 49dceaca9401d3c6037cb51ec013ca032ff0e83c .
  * Build with 64df71cd492be91289f883224640f42cace090ed (or later).

-- Jun 09, 2016 05:50:50 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT June 08, 2016
  * Upstream 2016-04-13 .
  * Add movie saver, using libav with x264.
  * Now, all of binaries are built with ffmpeg-3.0.
  * Build with 2142d5c7426e21cfeedbaea0450f238f8b4d7d38 (or later).

-- Jun 08, 2016 07:34:45 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT May 23-2, 2016
  * Win32 binary only RELEASE
  * Fix unable to run with some natibve Windows environment.
  * Build with c1448dc84f5439c7c8931614a8397dbefb6383da .

-- May 24, 2016 22:42:00 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

* SNAPSHOT May 23, 2016
  * Upstream 2016-04-13 .
  * [Win32] Now built with -msse -msse2 . You can run only later than Pentium4 .
  * Move FILEIO:: FIFO:: COMMON:: to libCSPemu_utils .
  * Make OSD:: to inherited by OSD_BASE:: .
  * [Win32] Disable LINKFLAGS with "-static-libgcc -static-libstdc++" to reduce size of executions, now, bundled libstc++ is for gcc-5 .
  * [Win32/Build] Support build with MSYS2 (but not display because MSYS2's Qt was build without OpenGL).
  * [Linux] Build shared libraries with Link-Time-Optimize, reduce size of libs.
  * [X1/VM] Configurable buttons for X1/Turbo/Turbo Z.
  * [FM7/FDC] Set MB8877_NO_BUSY_AFTER_SEEK. Fixed unable to boot OS0. Thanks to Anna_Wu.
  * [FM77AV/MB61VH010] ALULINE: Reduce CPU usage (at delta X > delta Y).
  * [UI/Qt/DRAW] Fix crash sometimes when exit emulator.
  * Build with 1c1ddc85dfa7456b1ce48662c2e2930dcc4fc9d8 (or later).

-- May 23, 2016 02:22:07 +0900 K.Ohta <whatisthis.sowhat@gmail.com>

Upstream changes:
-----
4/13/2016

[WINMAIN] improve auto key for the case to switch upper/lowercase with capslock
[EMU/DEBUGGER] fix issue that u command may cause the infinite loop

[VM/DATAREC] support to detect the frequency of signal
[VM/DATAREC] fix to always adjust zero position of wave signal
[VM/UPD1990A] fix not to check clk signal is low when stb signal is raised
[VM/UPD7810] support debugger
[VM/UPD7810] support MOV A,S opecode
[VM/UPD7810] fix not to change V register (thanks PockEmul)

[PC2001] support NEC PC-2001
[PC2001] fix cpu clock
[PC2001] support beep sound
[PC2001/IO] support rtc control signals
[YALKY] support Yuasa Kyouiku System YALKY
[YALKY/IO] improve data recorder controller

-----


Have fun!
-- Ohta.

