PC6001VXのAndroid版がリリースされました。試したところ、今までQTの問題であったQtMultimediaやFile Chooserの表示が、新しいQTでは改善されているようです。
まずは、武田さんの最新版ソースコードをベースに、makefileを書くところから始めます。QtMultimediaが使えるようになったため、AndroidでもSDLが不要となりスッキリしました。
http://takeda-toshiya.seesaa.net/article/397915031.html
PC6001.pro
#------------------------------------------------- # # Project created by QtCreator 2014-08-16T00:00:00 # #------------------------------------------------- QT += core gui widgets multimedia DEFINES += _PC6001 FPS=60 MAX_SKIP_FRAMES=0 DEFINES -= UNICODE TARGET = PC-6001 TEMPLATE = app win32:{ INCLUDEPATH += src LIBS += -lshlwapi SOURCES += \ src/qtmain.cpp \ src/qt_input.cpp \ src/qt_screen.cpp \ src/qt_sound.cpp \ src/emu.cpp \ src/common.cpp \ src/config.cpp \ src/fileio.cpp \ src/vm/event.cpp \ src/vm/i8255.cpp \ src/vm/io.cpp \ src/vm/mc6847.cpp \ src/vm/pc6031.cpp \ src/vm/pc80s31k.cpp \ src/vm/upd765a.cpp \ src/vm/ym2203.cpp \ src/vm/mcs48.cpp \ src/vm/z80.cpp \ src/vm/datarec.cpp \ src/vm/disk.cpp \ src/vm/fmgen/file.cpp \ src/vm/fmgen/fmgen.cpp \ src/vm/fmgen/fmtimer.cpp \ src/vm/fmgen/opna.cpp \ src/vm/fmgen/psg.cpp \ src/vm/pc6001/display.cpp \ src/vm/pc6001/joystick.cpp \ src/vm/pc6001/printer.cpp \ src/vm/pc6001/memory.cpp \ src/vm/pc6001/psub.cpp \ src/vm/pc6001/sub.cpp \ src/vm/pc6001/timer.cpp \ src/vm/pc6001/pc6001.cpp } else { INCLUDEPATH += src include SOURCES += \ src/qtmain.cpp \ src/qt_input.cpp \ src/qt_screen.cpp \ src/qt_sound.cpp \ src/emu.cpp \ src/common.cpp \ src/config.cpp \ src/fileio.cpp \ src/vm/event.cpp \ src/vm/i8255.cpp \ src/vm/io.cpp \ src/vm/mc6847.cpp \ src/vm/pc6031.cpp \ src/vm/pc80s31k.cpp \ src/vm/upd765a.cpp \ src/vm/ym2203.cpp \ src/vm/mcs48.cpp \ src/vm/z80.cpp \ src/vm/datarec.cpp \ src/vm/disk.cpp \ src/vm/fmgen/file.cpp \ src/vm/fmgen/fmgen.cpp \ src/vm/fmgen/fmtimer.cpp \ src/vm/fmgen/opna.cpp \ src/vm/fmgen/psg.cpp \ src/vm/pc6001/display.cpp \ src/vm/pc6001/joystick.cpp \ src/vm/pc6001/printer.cpp \ src/vm/pc6001/memory.cpp \ src/vm/pc6001/psub.cpp \ src/vm/pc6001/sub.cpp \ src/vm/pc6001/timer.cpp \ src/vm/pc6001/pc6001.cpp } HEADERS += \ src/emu.h \ src/common.h \ src/config.h \ src/fifo.h \ src/fileio.h \ src/vm/device.h \ src/vm/event.h \ src/vm/i8255.h \ src/vm/io.h \ src/vm/mc6847.h \ src/vm/vm.h \ src/vm/ym2203.h \ src/vm/z80.h \ src/vm/fmgen/diag.h \ src/vm/fmgen/file.h \ src/vm/fmgen/fmgen.h \ src/vm/fmgen/fmgeninl.h \ src/vm/fmgen/fmtimer.h \ src/vm/fmgen/headers.h \ src/vm/fmgen/misc.h \ src/vm/fmgen/opna.h \ src/vm/fmgen/psg.h \ src/vm/fmgen/types.h \ src/vm/pc6001/display.h \ src/vm/pc6001/joystick.h \ src/vm/pc6001/printer.h \ src/vm/pc6001/memory.h \ src/vm/pc6001/psub.h \ src/vm/pc6001/sub.h \ src/vm/pc6001/timer.h \ src/vm/pc6001/pc6001.h \ src/res/resource.h
以下のファイルを作成するだけで、他のファイルは一切変更せずに動作します。
emu.cpp emu.h config.cpp fileio.cpp vm/fmgen/file.cpp qt_input.cpp qt_screen.cpp qt_sound.cpp qtmain.cpp
WindowsとAndroidの移植性については、以下のヘッダを作成することで対応します。
shlwapi.h
/* Skelton for retropc emulator QT Version : tanam Date : 2014.08.16 - */ #ifndef _SHLWAPI_H_ #define _SHLWAPI_ void PathRemoveExtension(char* p){}; #endif
tchar.h
/* Skelton for retropc emulator QT Version : tanam Date : 2013.05.18 - */ #ifndef _TCHAR_H_ #define _TCHAR_H_ #include <string.h> #include <stdlib.h> #define _TCHAR char #define _T(a) (a) #define __min(a, b) (((a) < (b)) ? (a) : (b)) #define min(a, b) (((a) < (b)) ? (a) : (b)) #define max(a, b) (((a) > (b)) ? (a) : (b)) #define MAX_PATH 256 #define _MAX_PATH 256 #define GENERIC_WRITE 0 #define GENERIC_READ 0 #define ERROR_FILE_NOT_FOUND 0 #define ERROR_SHARING_VIOLATION 0 #define CREATE_NEW 0 #define CREATE_ALWAYS 0 #define OPEN_EXISTING 0 #define INVALID_HANDLE_VALUE 0 #define FILE_BEGIN 0 #define FILE_CURRENT 0 #define FILE_END 0 #define FILE_SHARE_READ 0 typedef void* HANDLE; typedef char* LPCTSTR; typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char byte; typedef unsigned int UINT32; typedef unsigned short UINT16; typedef unsigned char UINT8; typedef int INT32; typedef short INT16; typedef char INT8; #define __assume exit #define _tfopen fopen #define _tcsncpy strncpy #define _tcsncat strncat #define _tcslen strlen #define _tcsncicmp strncmp #define _tcsicmp strcmp #define _tcscpy strcpy #define _stprintf sprintf #endif
windows.h
/* Skelton for retropc emulator QT Version : tanam Date : 2013.05.18 - */ #ifndef _WINDOWS_H_ #define _WINDOWS_H_ #define __stdcall #define VK_SPACE 0x20 #define VK_LEFT 0x25 #define VK_RIGHT 0x27 #define VK_DOWN 0x28 #define VK_UP 0x26 #define VK_RETURN 0x0d #define VK_SHIFT 0x10 #define VK_CONTROL 0x11 #define VK_F9 0x78 #define FALSE 0 #define TRUE 1 #endif