Merge remote-tracking branch 'origin/master' into net-rollback

# Conflicts:
#	core/hw/maple/maple_if.cpp
#	core/rend/mainui.cpp
#	shell/libretro/libretro.cpp
This commit is contained in:
Flyinghead 2021-09-30 15:03:29 +02:00
commit 699dcdaf5b
56 changed files with 362 additions and 9082 deletions

View File

@ -1,3 +1,12 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**Please Note: This form is the minimum required information for submitting bugs.**
**Removing this form may lead to your issue being closed until it is completed.**

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -74,7 +74,7 @@ jobs:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: recursive
submodules: true
- name: Create artifact directory
run: mkdir -p build/artifact
@ -137,11 +137,6 @@ jobs:
rm build/artifact/flycast.exe
if: matrix.config.name == 'x86_64-w64-mingw32'
- name: Set up git vars
run: |
echo GIT_BUILD=`git describe --all --always | sed 's/remotes\/origin/heads/'`-$GITHUB_SHA >> $GITHUB_ENV
shell: bash
- name: Configure AWS Credentials
id: aws-credentials
uses: aws-actions/configure-aws-credentials@v1
@ -152,7 +147,7 @@ jobs:
if: github.repository == 'flyinghead/flycast' && github.event_name == 'push' && matrix.config.destDir != ''
- name: Upload to S3
run: aws s3 sync build/artifact s3://flycast-builds/${{ matrix.config.destDir }}/${{ env.GIT_BUILD }} --acl public-read --follow-symlinks
run: aws s3 sync build/artifact s3://flycast-builds/${{ matrix.config.destDir }}/${GITHUB_REF#refs/}-$GITHUB_SHA --acl public-read --follow-symlinks
if: ${{ steps.aws-credentials.outputs.aws-account-id != '' }}
- name: Upload symbols to S3

49
.gitignore vendored
View File

@ -1,50 +1,11 @@
build/
# macOS
.DS_Store
*.class
*.orig
*build_obj
Workdir/data
Workdir/reicast*
Workdir/vmu*
Workdir/webui*
Workdir/emu.cfg
Workdir/lib*ant.properties
# iOS General
*/build/*
**/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
*.hmap
emulator.xccheckout
reicast.xccheckout
build/*
*.so
*Karen_angelXwind*
local.properties
ant.properties
*.d
reicast-ios.xccheckout
# Linux General
shell/linux/.map
shell/linux/flycast.elf.map
shell/linux/nosym-flycast.elf
shell/linux/flycast.elf
shell/linux/dispframe.elf
# Visual Studio
generated
.vs
.vs/
out/
# JetBrains IDES
.idea/

View File

@ -21,9 +21,9 @@ option(LIBRETRO "Build libretro core" OFF)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/shell/cmake")
if(APPLE)
if(IOS)
if(CMAKE_SYSTEM_NAME STREQUAL iOS)
set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0" CACHE STRING "Minimum iOS deployment version")
set(CMAKE_OSX_ARCHITECTURES "arm64")
set(CMAKE_OSX_ARCHITECTURES "arm64" CACHE STRING "")
else()
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum macOS deployment version")
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "")
@ -74,7 +74,7 @@ if(NINTENDO_SWITCH)
if(USE_GLES)
target_compile_definitions(${PROJECT_NAME} PRIVATE GLES)
endif()
elseif(LIBRETRO)
add_library(${PROJECT_NAME} SHARED core/emulator.cpp)
if(APPLE)
@ -265,10 +265,7 @@ if(NOT LIBRETRO)
endif()
execute_process(COMMAND git apply -p1 ${CMAKE_CURRENT_SOURCE_DIR}/core/deps/patches/libchdr.patch
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core/deps/libchdr)
if(IOS)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
endif()
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core/deps/libchdr)
add_subdirectory(core/deps/libchdr)
target_link_libraries(${PROJECT_NAME} PRIVATE chdr-static)
target_include_directories(${PROJECT_NAME} PRIVATE core/deps/libchdr/include)
@ -385,7 +382,7 @@ if(ANDROID AND NOT LIBRETRO)
else()
include("core/deps/oboe/gamesdk.cmake")
add_gamesdk_target(PACKAGE_DIR core/deps/oboe ANDROID_API_LEVEL 28 ANDROID_NDK_VERSION 21.0.0)
target_link_libraries(${PROJECT_NAME} PRIVATE oboe OpenSLES)
target_link_libraries(${PROJECT_NAME} PRIVATE oboe OpenSLES)
endif()
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_OBOE)
endif()
@ -506,7 +503,7 @@ target_sources(${PROJECT_NAME} PRIVATE core/deps/xbrz/xbrz.cpp)
if(LIBRETRO)
target_include_directories(${PROJECT_NAME} PRIVATE core/deps/libretro-common/include)
target_sources(${PROJECT_NAME} PRIVATE
target_sources(${PROJECT_NAME} PRIVATE
core/deps/libretro-common/memmap/memalign.c
core/deps/libretro-common/file/file_path.c
core/deps/libretro-common/vfs/vfs_implementation.c
@ -519,11 +516,11 @@ if(LIBRETRO)
core/deps/libretro-common/glsm/glsm.c
core/deps/libretro-common/glsym/rglgen.c)
if(ANDROID OR USE_GLES)
target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es3.c)
target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es3.c)
elseif(USE_GLES2)
target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es2.c)
target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_es2.c)
else()
target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_gl.c)
target_sources(${PROJECT_NAME} PRIVATE core/deps/libretro-common/glsym/glsym_gl.c)
endif()
target_sources(${PROJECT_NAME} PRIVATE
shell/libretro/audiostream.cpp
@ -536,7 +533,7 @@ if(LIBRETRO)
shell/libretro/LogManager.h
shell/libretro/option.cpp
shell/libretro/oslib.cpp
shell/libretro/vmu_xhair.cpp)
shell/libretro/vmu_xhair.cpp)
endif()
target_sources(${PROJECT_NAME} PRIVATE
@ -1177,6 +1174,7 @@ if(NOT LIBRETRO)
shell/apple/emulator-ios/emulator/ios_main.mm
shell/apple/emulator-ios/emulator/ios_gamepad.h
shell/apple/emulator-ios/emulator/ios_keyboard.h
shell/apple/emulator-ios/emulator/ios_mouse.h
shell/apple/emulator-ios/emulator/FlycastViewController.h
shell/apple/emulator-ios/emulator/FlycastViewController.mm
shell/apple/emulator-ios/emulator/PadViewController.h
@ -1215,7 +1213,6 @@ if(NOT LIBRETRO)
XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/shell/apple/emulator-ios/emulator/flycast-ios-Prefix.pch"
RESOURCE "${IOS_RESOURCES}"
XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "12.0"
XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO"
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ""
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2"
@ -1267,7 +1264,7 @@ if(NOT LIBRETRO)
set_target_properties(${PROJECT_NAME} PROPERTIES
OUTPUT_NAME "Flycast"
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/shell/cmake/MacOSXBundleInfo.plist.in
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/shell/apple/emulator-osx/MacOSXBundleInfo.plist.in
MACOSX_BUNDLE_EXECUTABLE_NAME "Flycast"
MACOSX_BUNDLE_INFO_STRING ""
MACOSX_BUNDLE_ICON_FILE "AppIcon"
@ -1289,8 +1286,9 @@ if(NOT LIBRETRO)
find_library(AUDIO_UNIT_LIBRARY AudioUnit)
find_library(FOUNDATION_LIBRARY Foundation)
find_library(AUDIO_TOOLBOX_LIBRARY AudioToolbox)
find_library(MULTITOUCH_SUPPORT_LIBRARY MultitouchSupport /System/Library/PrivateFrameworks)
target_link_libraries(${PROJECT_NAME} PRIVATE ${AUDIO_UNIT_LIBRARY} ${FOUNDATION_LIBRARY} ${AUDIO_TOOLBOX_LIBRARY})
target_link_libraries(${PROJECT_NAME} PRIVATE ${AUDIO_UNIT_LIBRARY} ${FOUNDATION_LIBRARY} ${AUDIO_TOOLBOX_LIBRARY} ${MULTITOUCH_SUPPORT_LIBRARY})
endif()
elseif(UNIX OR NINTENDO_SWITCH)
if(NOT BUILD_TESTING)

View File

@ -1,7 +1,8 @@
# Flycast
[![C/C++ CI](https://github.com/flyinghead/flycast/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/flyinghead/flycast/actions/workflows/c-cpp.yml)
[![Android CI](https://github.com/flyinghead/flycast/actions/workflows/android.yml/badge.svg)](https://github.com/flyinghead/flycast/actions/workflows/android.yml)
[![C/C++ CI](https://github.com/flyinghead/flycast/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/flyinghead/flycast/actions/workflows/c-cpp.yml)
[![Nintendo Switch CI](https://github.com/flyinghead/flycast/actions/workflows/switch.yml/badge.svg)](https://github.com/flyinghead/flycast/actions/workflows/switch.yml)
![flycast logo](https://github.com/flyinghead/flycast/raw/master/shell/linux/flycast.png)

View File

@ -1,261 +0,0 @@
RZDCY_FILES :=
RZDCY_SRC_DIR ?= $(call my-dir)
VERSION_HEADER := $(RZDCY_SRC_DIR)/version.h
RZDCY_MODULES := cfg/ hw/arm7/ hw/aica/ hw/holly/ hw/ hw/gdrom/ hw/maple/ \
hw/mem/ hw/pvr/ hw/sh4/ hw/sh4/interpr/ hw/sh4/modules/ profiler/ oslib/ \
hw/naomi/ imgread/ ./ deps/libchdr/src/ deps/libchdr/deps/zlib-1.2.11/ \
deps/libelf/ deps/chdpsr/ rend/ reios/ deps/xbrz/ \
deps/imgui/ archive/ input/ log/ wsi/ network/ hw/bba/ debug/ \
hw/modem/ deps/picotcp/modules/ deps/picotcp/stack/
ifndef NO_REC
ifndef NOT_ARM
RZDCY_MODULES += rec-ARM/ deps/vixl/ deps/vixl/aarch32/
endif
ifdef X86_REC
RZDCY_MODULES += rec-x86/
endif
ifdef X64_REC
RZDCY_MODULES += rec-x64/
endif
ifdef CPP_REC
RZDCY_MODULES += rec-cpp/
endif
ifdef ARM64_REC
RZDCY_MODULES += rec-ARM64/ deps/vixl/ deps/vixl/aarch64/
endif
endif
ifndef NO_REND
RZDCY_MODULES += rend/gles/
ifndef USE_GLES
ifndef USE_DISPMANX
RZDCY_MODULES += rend/gl4/
endif
endif
ifdef USE_VULKAN
RZDCY_MODULES += rend/vulkan/ rend/vulkan/oit/ deps/volk/ \
deps/glslang/glslang/MachineIndependent/ \
deps/glslang/glslang/MachineIndependent/preprocessor/ \
deps/glslang/glslang/GenericCodeGen/ \
deps/glslang/OGLCompilersDLL/ \
deps/glslang/SPIRV/
ifdef FOR_WINDOWS
RZDCY_FILES += $(RZDCY_SRC_DIR)/deps/glslang/glslang/OSDependent/Windows/ossource.cpp
else
RZDCY_FILES += $(RZDCY_SRC_DIR)/deps/glslang/glslang/OSDependent/Unix/ossource.cpp
endif
endif
else
RZDCY_MODULES += rend/norend/
endif
ifdef USE_SDL
RZDCY_MODULES += sdl/
endif
ifdef FOR_LINUX
ifndef UNIT_TESTS
RZDCY_MODULES += linux-dist/
endif
RZDCY_MODULES += linux/
endif
ifdef FOR_WINDOWS
RZDCY_MODULES += rend/dx9/
ifndef UNIT_TESTS
RZDCY_FILES += $(RZDCY_SRC_DIR)/windows/winmain.cpp
endif
RZDCY_FILES += $(RZDCY_SRC_DIR)/windows/win_vmem.cpp $(RZDCY_SRC_DIR)/windows/rawinput.cpp
RZDCY_CFLAGS += -I$(RZDCY_SRC_DIR)/deps/dirent
endif
ifdef USE_VULKAN
ifdef FOR_WINDOWS
RZDCY_CFLAGS += -DVK_USE_PLATFORM_WIN32_KHR
else
RZDCY_CFLAGS += -DVK_USE_PLATFORM_XLIB_KHR
endif
RZDCY_CFLAGS += -D USE_VULKAN
endif
RZDCY_CFLAGS += -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/rend/gles -I$(RZDCY_SRC_DIR)/deps \
-I$(RZDCY_SRC_DIR)/deps/vixl -I$(RZDCY_SRC_DIR)/khronos -I$(RZDCY_SRC_DIR)/deps/glslang \
-I$(RZDCY_SRC_DIR)/deps/glm -I$(RZDCY_SRC_DIR)/deps/xbyak -I$(RZDCY_SRC_DIR)/deps/nowide/include \
-I$(RZDCY_SRC_DIR)/deps/picotcp/include -I$(RZDCY_SRC_DIR)/deps/picotcp/modules \
-I$(RZDCY_SRC_DIR)/deps/libchdr/include -I$(RZDCY_SRC_DIR)/deps/libchdr/deps/zlib-1.2.11/ \
-I$(RZDCY_SRC_DIR)/deps/libchdr/deps/lzma-19.00 -I$(RZDCY_SRC_DIR)/deps/libchdr/deps/lzma-19.00/include
ifdef USE_SYSTEM_MINIUPNPC
RZDCY_CFLAGS += -I/usr/include/miniupnpc
else
RZDCY_CFLAGS += -I$(RZDCY_SRC_DIR)/deps/miniupnpc
endif
ifdef NO_REC
RZDCY_CFLAGS += -DTARGET_NO_REC
else
RZDCY_MODULES += hw/sh4/dyna/
endif
ifdef USE_GLES
RZDCY_CFLAGS += -DGLES -fPIC
endif
ifdef CHD5_FLAC
RZDCY_CFLAGS += -DCHD5_FLAC -I$(RZDCY_SRC_DIR)/deps/flac/src/libFLAC/include/ -I$(RZDCY_SRC_DIR)/deps/flac/include
RZDCY_CFLAGS += -DHAVE_CONFIG_H
RZDCY_MODULES += deps/flac/src/libFLAC/
endif
# 7-Zip/LZMA settings (CHDv5)
ifdef CHD5_LZMA
RZDCY_MODULES += deps/lzma/
RZDCY_CFLAGS += -D_7ZIP_ST -DCHD5_LZMA
endif
RZDCY_CFLAGS += -DXXH_INLINE_ALL -I$(RZDCY_SRC_DIR)/deps/xxHash -I$(RZDCY_SRC_DIR)/deps/stb
RZDCY_FILES += $(foreach dir,$(addprefix $(RZDCY_SRC_DIR)/,$(RZDCY_MODULES)),$(wildcard $(dir)*.cpp))
RZDCY_FILES += $(foreach dir,$(addprefix $(RZDCY_SRC_DIR)/,$(RZDCY_MODULES)),$(wildcard $(dir)*.cc))
RZDCY_FILES += $(foreach dir,$(addprefix $(RZDCY_SRC_DIR)/,$(RZDCY_MODULES)),$(wildcard $(dir)*.c))
RZDCY_FILES += $(foreach dir,$(addprefix $(RZDCY_SRC_DIR)/,$(RZDCY_MODULES)),$(wildcard $(dir)*.S))
ifdef STATIC_LIBZIP
RZDCY_CFLAGS += -I$(RZDCY_SRC_DIR)/deps/libzip/lib
LIBZIP_DIR = $(RZDCY_SRC_DIR)/deps/libzip/lib
RZDCY_FILES += $(LIBZIP_DIR)/zip_add.c \
$(LIBZIP_DIR)/zip_add_dir.c \
$(LIBZIP_DIR)/zip_add_entry.c \
$(LIBZIP_DIR)/zip_algorithm_deflate.c \
$(LIBZIP_DIR)/zip_buffer.c \
$(LIBZIP_DIR)/zip_close.c \
$(LIBZIP_DIR)/zip_delete.c \
$(LIBZIP_DIR)/zip_dir_add.c \
$(LIBZIP_DIR)/zip_dirent.c \
$(LIBZIP_DIR)/zip_discard.c \
$(LIBZIP_DIR)/zip_entry.c \
$(LIBZIP_DIR)/zip_error.c \
$(LIBZIP_DIR)/zip_error_clear.c \
$(LIBZIP_DIR)/zip_error_get.c \
$(LIBZIP_DIR)/zip_error_get_sys_type.c \
$(LIBZIP_DIR)/zip_error_strerror.c \
$(LIBZIP_DIR)/zip_error_to_str.c \
$(LIBZIP_DIR)/zip_extra_field.c \
$(LIBZIP_DIR)/zip_extra_field_api.c \
$(LIBZIP_DIR)/zip_fclose.c \
$(LIBZIP_DIR)/zip_fdopen.c \
$(LIBZIP_DIR)/zip_file_add.c \
$(LIBZIP_DIR)/zip_file_error_clear.c \
$(LIBZIP_DIR)/zip_file_error_get.c \
$(LIBZIP_DIR)/zip_file_get_comment.c \
$(LIBZIP_DIR)/zip_file_get_external_attributes.c \
$(LIBZIP_DIR)/zip_file_get_offset.c \
$(LIBZIP_DIR)/zip_file_rename.c \
$(LIBZIP_DIR)/zip_file_replace.c \
$(LIBZIP_DIR)/zip_file_set_comment.c \
$(LIBZIP_DIR)/zip_file_set_encryption.c \
$(LIBZIP_DIR)/zip_file_set_external_attributes.c \
$(LIBZIP_DIR)/zip_file_set_mtime.c \
$(LIBZIP_DIR)/zip_file_strerror.c \
$(LIBZIP_DIR)/zip_fopen.c \
$(LIBZIP_DIR)/zip_fopen_encrypted.c \
$(LIBZIP_DIR)/zip_fopen_index.c \
$(LIBZIP_DIR)/zip_fopen_index_encrypted.c \
$(LIBZIP_DIR)/zip_fread.c \
$(LIBZIP_DIR)/zip_fseek.c \
$(LIBZIP_DIR)/zip_ftell.c \
$(LIBZIP_DIR)/zip_get_archive_comment.c \
$(LIBZIP_DIR)/zip_get_archive_flag.c \
$(LIBZIP_DIR)/zip_get_encryption_implementation.c \
$(LIBZIP_DIR)/zip_get_file_comment.c \
$(LIBZIP_DIR)/zip_get_name.c \
$(LIBZIP_DIR)/zip_get_num_entries.c \
$(LIBZIP_DIR)/zip_get_num_files.c \
$(LIBZIP_DIR)/zip_hash.c \
$(LIBZIP_DIR)/zip_io_util.c \
$(LIBZIP_DIR)/zip_libzip_version.c \
$(LIBZIP_DIR)/zip_memdup.c \
$(LIBZIP_DIR)/zip_name_locate.c \
$(LIBZIP_DIR)/zip_new.c \
$(LIBZIP_DIR)/zip_open.c \
$(LIBZIP_DIR)/zip_pkware.c \
$(LIBZIP_DIR)/zip_progress.c \
$(LIBZIP_DIR)/zip_rename.c \
$(LIBZIP_DIR)/zip_replace.c \
$(LIBZIP_DIR)/zip_set_archive_comment.c \
$(LIBZIP_DIR)/zip_set_archive_flag.c \
$(LIBZIP_DIR)/zip_set_default_password.c \
$(LIBZIP_DIR)/zip_set_file_comment.c \
$(LIBZIP_DIR)/zip_set_file_compression.c \
$(LIBZIP_DIR)/zip_set_name.c \
$(LIBZIP_DIR)/zip_source_accept_empty.c \
$(LIBZIP_DIR)/zip_source_begin_write.c \
$(LIBZIP_DIR)/zip_source_begin_write_cloning.c \
$(LIBZIP_DIR)/zip_source_buffer.c \
$(LIBZIP_DIR)/zip_source_call.c \
$(LIBZIP_DIR)/zip_source_close.c \
$(LIBZIP_DIR)/zip_source_commit_write.c \
$(LIBZIP_DIR)/zip_source_compress.c \
$(LIBZIP_DIR)/zip_source_crc.c \
$(LIBZIP_DIR)/zip_source_error.c \
$(LIBZIP_DIR)/zip_source_file_common.c \
$(LIBZIP_DIR)/zip_source_file_stdio.c \
$(LIBZIP_DIR)/zip_source_free.c \
$(LIBZIP_DIR)/zip_source_function.c \
$(LIBZIP_DIR)/zip_source_get_file_attributes.c \
$(LIBZIP_DIR)/zip_source_is_deleted.c \
$(LIBZIP_DIR)/zip_source_layered.c \
$(LIBZIP_DIR)/zip_source_open.c \
$(LIBZIP_DIR)/zip_source_pkware_decode.c \
$(LIBZIP_DIR)/zip_source_pkware_encode.c \
$(LIBZIP_DIR)/zip_source_read.c \
$(LIBZIP_DIR)/zip_source_remove.c \
$(LIBZIP_DIR)/zip_source_rollback_write.c \
$(LIBZIP_DIR)/zip_source_seek.c \
$(LIBZIP_DIR)/zip_source_seek_write.c \
$(LIBZIP_DIR)/zip_source_stat.c \
$(LIBZIP_DIR)/zip_source_supports.c \
$(LIBZIP_DIR)/zip_source_tell.c \
$(LIBZIP_DIR)/zip_source_tell_write.c \
$(LIBZIP_DIR)/zip_source_window.c \
$(LIBZIP_DIR)/zip_source_write.c \
$(LIBZIP_DIR)/zip_source_zip.c \
$(LIBZIP_DIR)/zip_source_zip_new.c \
$(LIBZIP_DIR)/zip_stat.c \
$(LIBZIP_DIR)/zip_stat_index.c \
$(LIBZIP_DIR)/zip_stat_init.c \
$(LIBZIP_DIR)/zip_strerror.c \
$(LIBZIP_DIR)/zip_string.c \
$(LIBZIP_DIR)/zip_unchange.c \
$(LIBZIP_DIR)/zip_unchange_all.c \
$(LIBZIP_DIR)/zip_unchange_archive.c \
$(LIBZIP_DIR)/zip_unchange_data.c \
$(LIBZIP_DIR)/zip_utf-8.c \
$(LIBZIP_DIR)/zip_err_str.c
ifdef FOR_WINDOWS
RZDCY_FILES += $(LIBZIP_DIR)/zip_source_file_win32.c \
$(LIBZIP_DIR)/zip_source_file_win32_named.c \
$(LIBZIP_DIR)/zip_source_file_win32_utf16.c \
$(LIBZIP_DIR)/zip_source_file_win32_utf8.c \
$(LIBZIP_DIR)/zip_source_file_win32_ansi.c \
$(LIBZIP_DIR)/zip_random_win32.c
else
RZDCY_FILES += $(LIBZIP_DIR)/zip_mkstempm.c \
$(LIBZIP_DIR)/zip_source_file_stdio_named.c \
$(LIBZIP_DIR)/zip_random_unix.c
endif
endif
$(VERSION_HEADER):
echo "#define GIT_VERSION \"`git describe --tags --always`\"" > $(VERSION_HEADER)
echo "#define GIT_HASH \"`git rev-parse --short HEAD`\"" >> $(VERSION_HEADER)
echo "#define BUILD_DATE \"`date '+%Y-%m-%d %H:%M:%S %Z'`\"" >> $(VERSION_HEADER)

View File

@ -1706,6 +1706,8 @@ bool ImGui::Combo(const char* label, int* current_item, bool (*items_getter)(voi
SetItemDefaultFocus();
PopID();
}
// no drag scrolling on combo popup
GetCurrentWindow()->DragScrolling = false;
EndCombo();
return value_changed;

View File

@ -1449,7 +1449,7 @@ void SetMousePosition(int x, int y, int width, int height, u32 mouseId)
mo_y_prev[mouseId] = y;
}
void SetRelativeMousePosition(int xrel, int yrel, u32 mouseId)
void SetRelativeMousePosition(float xrel, float yrel, u32 mouseId)
{
if (mouseId >= MAPLE_PORTS)
return;
@ -1461,8 +1461,8 @@ void SetRelativeMousePosition(int xrel, int yrel, u32 mouseId)
xrel = -xrel;
std::swap(width, height);
}
float dx = (float)xrel * config::MouseSensitivity / 100.f;
float dy = (float)yrel * config::MouseSensitivity / 100.f;
float dx = xrel * config::MouseSensitivity / 100.f;
float dy = yrel * config::MouseSensitivity / 100.f;
mo_x_delta[mouseId] += dx;
mo_y_delta[mouseId] += dy;
int minX = -width / 32;

View File

@ -177,7 +177,7 @@ extern s32 mo_x_prev[4];
extern s32 mo_y_prev[4];
void SetMousePosition(int x, int y, int width, int height, u32 mouseId = 0);
void SetRelativeMousePosition(int xrel, int yrel, u32 mouseId = 0);
void SetRelativeMousePosition(float xrel, float yrel, u32 mouseId = 0);
#define SWAP32(a) ((((a) & 0xff) << 24) | (((a) & 0xff00) << 8) | (((a) >> 8) & 0xff00) | (((a) >> 24) & 0xff))

View File

@ -516,7 +516,7 @@ void Mouse::setAbsPos(int x, int y, int width, int height) {
SetMousePosition(x, y, width, height, maple_port());
}
void Mouse::setRelPos(int deltax, int deltay) {
void Mouse::setRelPos(float deltax, float deltay) {
SetRelativeMousePosition(deltax, deltay, maple_port());
}

View File

@ -211,7 +211,7 @@ public:
}
void setAbsPos(int x, int y, int width, int height);
void setRelPos(int deltax, int deltay);
void setRelPos(float deltax, float deltay);
void setButton(Button button, bool pressed);
void setWheel(int delta);
};

View File

@ -148,6 +148,8 @@ bool D3DRenderer::Init()
WARN_LOG(RENDERER, "DirectX9 renderer initialization failed");
Term();
}
frameRendered = false;
frameRenderedOnce = false;
return success;
}
@ -176,6 +178,8 @@ void D3DRenderer::preReset()
framebufferSurface.reset();
framebufferTexture.reset();
resetting = true;
frameRendered = false;
frameRenderedOnce = false;
}
void D3DRenderer::postReset()
@ -195,7 +199,6 @@ void D3DRenderer::postReset()
verifyWin(device->CreateTexture(128, 2, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8, D3DPOOL_DEFAULT, &fogTexture.get(), 0));
fog_needs_update = true;
palette_updated = true;
frameRendered = false;
}
void D3DRenderer::Term()
@ -1126,6 +1129,7 @@ bool D3DRenderer::Render()
renderFramebuffer();
DrawOSD(false);
frameRendered = true;
frameRenderedOnce = true;
}
return !is_rtt;
@ -1143,6 +1147,8 @@ void D3DRenderer::Resize(int w, int h)
verifyWin(framebufferTexture->GetSurfaceLevel(0, &framebufferSurface.get()));
depthSurface.reset();
verifyWin(device->CreateDepthStencilSurface(width, height, D3DFMT_D24S8, D3DMULTISAMPLE_NONE, 0, TRUE, &depthSurface.get(), nullptr));
frameRendered = false;
frameRenderedOnce = false;
}
void D3DRenderer::renderFramebuffer()
@ -1219,7 +1225,7 @@ void D3DRenderer::renderFramebuffer()
bool D3DRenderer::RenderLastFrame()
{
if (resetting || !frameRendered)
if (!frameRenderedOnce)
return false;
backbuffer.reset();
verifyWin(device->GetRenderTarget(0, &backbuffer.get()));

View File

@ -176,5 +176,6 @@ private:
bool scissorEnable = false;
bool resetting = false;
bool frameRendered = false;
bool frameRenderedOnce = false;
};

View File

@ -26,26 +26,24 @@ class CommandPool
public:
void Init()
{
size_t size = VulkanContext::Instance()->GetSwapChainSize();
if (commandPools.size() > size)
if (commandPools.size() > chainSize)
{
commandPools.resize(size);
fences.resize(size);
commandPools.resize(chainSize);
fences.resize(chainSize);
}
else
{
while (commandPools.size() < size)
while (commandPools.size() < chainSize)
{
commandPools.push_back(VulkanContext::Instance()->GetDevice().createCommandPoolUnique(
vk::CommandPoolCreateInfo(vk::CommandPoolCreateFlagBits::eTransient, VulkanContext::Instance()->GetGraphicsQueueFamilyIndex())));
fences.push_back(VulkanContext::Instance()->GetDevice().createFenceUnique(vk::FenceCreateInfo(vk::FenceCreateFlagBits::eSignaled)));
}
}
if (freeBuffers.size() != size)
freeBuffers.resize(size);
if (inFlightBuffers.size() != size)
inFlightBuffers.resize(size);
if (freeBuffers.size() != chainSize)
freeBuffers.resize(chainSize);
if (inFlightBuffers.size() != chainSize)
inFlightBuffers.resize(chainSize);
}
void Term()
@ -64,7 +62,7 @@ public:
void BeginFrame()
{
index = (index + 1) % VulkanContext::Instance()->GetSwapChainSize();
index = (index + 1) % chainSize;
VulkanContext::Instance()->GetDevice().waitForFences(1, &fences[index].get(), true, UINT64_MAX);
VulkanContext::Instance()->GetDevice().resetFences(1, &fences[index].get());
std::vector<vk::UniqueCommandBuffer>& inFlight = inFlightBuffers[index];
@ -106,4 +104,6 @@ private:
std::vector<std::vector<vk::UniqueCommandBuffer>> inFlightBuffers;
std::vector<vk::UniqueCommandPool> commandPools;
std::vector<vk::UniqueFence> fences;
// size should be the same as used by client: 2 for renderer (texCommandPool)
static constexpr size_t chainSize = 2;
};

View File

@ -262,6 +262,8 @@ bool OITDrawer::Draw(const Texture *fogTexture, const Texture *paletteTexture)
OITDescriptorSets::FragmentShaderUniforms fragUniforms = MakeFragmentUniforms<OITDescriptorSets::FragmentShaderUniforms>();
fragUniforms.shade_scale_factor = FPU_SHAD_SCALE.scale_factor / 256.f;
// sizeof(Pixel) == 16
fragUniforms.pixelBufferSize = std::min<u64>(config::PixelBufferSize, GetContext()->GetMaxMemoryAllocationSize()) / 16;
currentScissor = vk::Rect2D();

View File

@ -53,6 +53,7 @@ public:
float cp_AlphaTestValue;
float sp_FOG_DENSITY;
float shade_scale_factor; // new for OIT
u32 pixelBufferSize;
};
struct PushConstants

View File

@ -69,6 +69,7 @@ layout (std140, set = 0, binding = 1) uniform FragmentShaderUniforms
float cp_AlphaTestValue;
float sp_FOG_DENSITY;
float shade_scale_factor;
uint pixelBufferSize;
} uniformBuffer;
layout(set = 3, binding = 2, r32ui) uniform coherent restrict uimage2D abufferPointerImg;
@ -87,7 +88,10 @@ layout (set = 3, binding = 0, std430) coherent restrict buffer PixelBuffer_ {
uint getNextPixelIndex()
{
uint index = atomicAdd(PixelCounter.buffer_index, 1);
if (index >= PixelBuffer.pixels.length())
// we should be able to simply use PixelBuffer.pixels.length()
// but a regression in the adreno 600 driver (v502) forces us
// to use a uniform.
if (index >= uniformBuffer.pixelBufferSize)
// Buffer overflow
discard;

View File

@ -197,7 +197,7 @@ void VulkanOverlay::Draw(vk::CommandBuffer commandBuffer, vk::Extent2D viewport,
((color >> 16) & 0xff) / 255.f,
((color >> 24) & 0xff) / 255.f
};
xhairDrawer->Draw(commandBuffer, xhairTexture->GetImageView(), vtx, true, xhairColor);
xhairDrawer->Draw(commandBuffer, i == 0 ? xhairTexture->GetImageView() : vk::ImageView(), vtx, true, xhairColor);
}
}
}

View File

@ -197,10 +197,13 @@ void QuadDrawer::Draw(vk::CommandBuffer commandBuffer, vk::ImageView imageView,
descSet = std::move(context->GetDevice().allocateDescriptorSetsUnique(
vk::DescriptorSetAllocateInfo(context->GetDescriptorPool(), 1, &layout)).front());
}
vk::DescriptorImageInfo imageInfo(nearestFilter ? pipeline->GetNearestSampler() : pipeline->GetLinearSampler(), imageView, vk::ImageLayout::eShaderReadOnlyOptimal);
std::vector<vk::WriteDescriptorSet> writeDescriptorSets;
writeDescriptorSets.emplace_back(*descSet, 0, 0, 1, vk::DescriptorType::eCombinedImageSampler, &imageInfo, nullptr, nullptr);
context->GetDevice().updateDescriptorSets(writeDescriptorSets, nullptr);
if (imageView)
{
vk::DescriptorImageInfo imageInfo(nearestFilter ? pipeline->GetNearestSampler() : pipeline->GetLinearSampler(), imageView, vk::ImageLayout::eShaderReadOnlyOptimal);
std::vector<vk::WriteDescriptorSet> writeDescriptorSets;
writeDescriptorSets.emplace_back(*descSet, 0, 0, 1, vk::DescriptorType::eCombinedImageSampler, &imageInfo, nullptr, nullptr);
context->GetDevice().updateDescriptorSets(writeDescriptorSets, nullptr);
}
commandBuffer.bindDescriptorSets(vk::PipelineBindPoint::eGraphics, pipeline->GetPipelineLayout(), 0, 1, &descSet.get(), 0, nullptr);
buffer->Update(vertices);

View File

@ -158,9 +158,6 @@ void input_sdl_init()
SDL_SetHint(SDL_HINT_XINPUT_ENABLED, "0");
}
#endif
if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0)
die("SDL: error initializing Joystick subsystem");
std::string db = get_readonly_data_path("gamecontrollerdb.txt");
int rv = SDL_GameControllerAddMappingsFromFile(db.c_str());
if (rv < 0)
@ -170,6 +167,10 @@ void input_sdl_init()
}
if (rv > 0)
DEBUG_LOG(INPUT ,"%d mappings loaded from %s", rv, db.c_str());
if (SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0)
die("SDL: error initializing Joystick subsystem");
}
if (SDL_WasInit(SDL_INIT_HAPTIC) == 0)
SDL_InitSubSystem(SDL_INIT_HAPTIC);

View File

@ -1,12 +0,0 @@
Copyright (c) 2015, the reicast team
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,4 +0,0 @@
flycast shell
===========
Makefiles, and "ui specific" code mostly resides here

View File

@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.0.1"
classpath "com.android.tools.build:gradle:7.0.2"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View File

@ -21,21 +21,18 @@ add_library(AltKit
Sources/AltKit/Types/CodableServerError.swift
)
target_link_libraries(AltKit PUBLIC CAltKit)
target_link_libraries(AltKit PRIVATE CAltKit)
set_property(TARGET AltKit PROPERTY XCODE_ATTRIBUTE_SWIFT_VERSION "5.0")
# Make CAltKit's modulemap available to AltKit
set_property(TARGET AltKit PROPERTY XCODE_ATTRIBUTE_SWIFT_INCLUDE_PATHS "${CMAKE_CURRENT_SOURCE_DIR}/Sources/CAltKit")
set_property(TARGET AltKit PROPERTY XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "12.0")
# Add binary dir to interface include path to make Swift header accessible to targets using AltKit
# FIXME not working?
target_include_directories(AltKit PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/..")
target_include_directories(AltKit INTERFACE ${CMAKE_CURRENT_BINARY_DIR})
# Copy generated Swift header to binary dir
add_custom_command(TARGET AltKit
POST_BUILD
COMMAND cp -v $DERIVED_SOURCES_DIR/AltKit-Swift.h ${CMAKE_CURRENT_BINARY_DIR}
COMMAND cp $DERIVED_SOURCES_DIR/AltKit-Swift.h ${CMAKE_CURRENT_BINARY_DIR}
)

View File

@ -143,12 +143,14 @@ public struct EnableUnsignedCodeExecutionRequest: ServerMessageProtocol
public var identifier = "EnableUnsignedCodeExecutionRequest"
public var udid: String
public var processID: Int32
public var processID: Int32?
public var processName: String?
public init(udid: String, processID: Int32)
public init(udid: String, processID: Int32? = nil, processName: String? = nil)
{
self.udid = udid
self.processID = processID
self.processName = processName
}
}

View File

@ -1,69 +0,0 @@
//
// NSError+ALTServerError.h
// AltStore
//
// Created by Riley Testut on 5/30/19.
// Copyright © 2019 Riley Testut. All rights reserved.
//
#import <Foundation/Foundation.h>
extern NSErrorDomain const AltServerErrorDomain;
extern NSErrorDomain const AltServerInstallationErrorDomain;
extern NSErrorDomain const AltServerConnectionErrorDomain;
extern NSErrorUserInfoKey const ALTUnderlyingErrorDomainErrorKey;
extern NSErrorUserInfoKey const ALTUnderlyingErrorCodeErrorKey;
extern NSErrorUserInfoKey const ALTProvisioningProfileBundleIDErrorKey;
extern NSErrorUserInfoKey const ALTAppNameErrorKey;
extern NSErrorUserInfoKey const ALTDeviceNameErrorKey;
typedef NS_ERROR_ENUM(AltServerErrorDomain, ALTServerError)
{
ALTServerErrorUnderlyingError = -1,
ALTServerErrorUnknown = 0,
ALTServerErrorConnectionFailed = 1,
ALTServerErrorLostConnection = 2,
ALTServerErrorDeviceNotFound = 3,
ALTServerErrorDeviceWriteFailed = 4,
ALTServerErrorInvalidRequest = 5,
ALTServerErrorInvalidResponse = 6,
ALTServerErrorInvalidApp = 7,
ALTServerErrorInstallationFailed = 8,
ALTServerErrorMaximumFreeAppLimitReached = 9,
ALTServerErrorUnsupportediOSVersion = 10,
ALTServerErrorUnknownRequest = 11,
ALTServerErrorUnknownResponse = 12,
ALTServerErrorInvalidAnisetteData = 13,
ALTServerErrorPluginNotFound = 14,
ALTServerErrorProfileNotFound = 15,
ALTServerErrorAppDeletionFailed = 16,
ALTServerErrorRequestedAppNotRunning = 100,
};
typedef NS_ERROR_ENUM(AltServerConnectionErrorDomain, ALTServerConnectionError)
{
ALTServerConnectionErrorUnknown,
ALTServerConnectionErrorDeviceLocked,
ALTServerConnectionErrorInvalidRequest,
ALTServerConnectionErrorInvalidResponse,
ALTServerConnectionErrorUSBMUXD,
ALTServerConnectionErrorSSL,
ALTServerConnectionErrorTimedOut,
};
NS_ASSUME_NONNULL_BEGIN
@interface NSError (ALTServerError)
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1 @@
../NSError+ALTServerError.h

View File

@ -24,13 +24,13 @@
#include "ios_gamepad.h"
@implementation EmulatorView {
std::shared_ptr<IOSMouse> mouse;
std::shared_ptr<IOSTouchMouse> mouse;
}
- (void)didMoveToSuperview
{
[super didMoveToSuperview];
mouse = std::make_shared<IOSMouse>();
mouse = std::make_shared<IOSTouchMouse>();
GamepadDevice::Register(mouse);
}

View File

@ -37,6 +37,7 @@
#include "cfg/option.h"
#include "ios_gamepad.h"
#include "ios_keyboard.h"
#include "ios_mouse.h"
//@import AltKit;
#import "AltKit/AltKit-Swift.h"
@ -47,9 +48,35 @@ static __unsafe_unretained FlycastViewController *flycastViewController;
std::map<GCController *, std::shared_ptr<IOSGamepad>> IOSGamepad::controllers;
std::map<GCKeyboard *, std::shared_ptr<IOSKeyboard>> IOSKeyboard::keyboards;
std::map<GCMouse *, std::shared_ptr<IOSMouse>> IOSMouse::mice;
void common_linux_setup();
static bool lockedPointer;
static void updatePointerLock(Event event)
{
if (@available(iOS 14.0, *)) {
bool hasChanged = NO;
switch (event) {
case Event::Resume:
lockedPointer = YES;
hasChanged = YES;
break;
case Event::Pause:
case Event::Terminate:
lockedPointer = NO;
hasChanged = YES;
break;
default:
break;
}
if (hasChanged) {
[flycastViewController setNeedsUpdateOfPrefersPointerLocked];
}
}
}
@interface FlycastViewController () <UIDocumentPickerDelegate>
@property (strong, nonatomic) EAGLContext *context;
@ -60,6 +87,8 @@ void common_linux_setup();
@property (nonatomic, strong) id gamePadDisconnectObserver;
@property (nonatomic, strong) id keyboardConnectObserver;
@property (nonatomic, strong) id keyboardDisconnectObserver;
@property (nonatomic, strong) id mouseConnectObserver;
@property (nonatomic, strong) id mouseDisconnectObserver;
@property (nonatomic, strong) nw_path_monitor_t monitor;
@property (nonatomic, strong) dispatch_queue_t monitorQueue;
@ -142,6 +171,24 @@ extern int screen_dpi;
GCKeyboard *keyboard = note.object;
IOSKeyboard::removeKeyboard(keyboard);
}];
self.mouseConnectObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:GCMouseDidConnectNotification object:nil queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note) {
GCMouse *mouse = note.object;
IOSMouse::addMouse(mouse);
}];
self.mouseDisconnectObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:GCMouseDidDisconnectNotification object:nil queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note) {
GCMouse *mouse = note.object;
IOSMouse::removeMouse(mouse);
}];
EventManager::listen(Event::Resume, updatePointerLock);
EventManager::listen(Event::Pause, updatePointerLock);
EventManager::listen(Event::Terminate, updatePointerLock);
}
self.gamePadConnectObserver = [[NSNotificationCenter defaultCenter] addObserverForName:GCControllerDidConnectNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {
@ -200,6 +247,11 @@ extern int screen_dpi;
return YES;
}
- (BOOL)prefersPointerLocked
{
return lockedPointer;
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;

View File

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSBonjourServices</key>
<array>
<string>_altserver._tcp</string>
</array>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSLocalNetworkUsageDescription</key>
<string>Flycast uses the local network to find and communicate with AltServer.</string>
<key>UIFileSharingEnabled</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>FlycastStoryboard</string>
<key>UIMainStoryboardFile~ipad</key>
<string>FlycastStoryboard</string>
<key>UIPrerenderedIcon</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIRequiresFullScreen</key>
<true/>
<key>NSMicrophoneUsageDescription</key>
<string>Flycast requires microphone access to emulate the Dreamcast microphone</string>
<key>UISupportsDocumentBrowser</key>
<true/>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
<key>UIFileSharingEnabled</key>
<true/>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>Disk image</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.flyinghead.flycast.disk-image</string>
</array>
</dict>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>Zip archive</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>com.pkware.zip-archive</string>
</array>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Disk image</string>
<key>UTTypeIdentifier</key>
<string>com.flyinghead.flycast.disk-image</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>chd</string>
<string>gdi</string>
<string>cue</string>
<string>cdi</string>
</array>
</dict>
</dict>
</array>
</dict>
</plist>

View File

@ -563,12 +563,13 @@ private:
u32 buttonState = 0;
};
class IOSMouse : public SystemMouse
class IOSTouchMouse : public SystemMouse
{
public:
IOSMouse() : SystemMouse("iOS")
{
_unique_id = "ios_mouse";
loadMapping();
}
IOSTouchMouse() : SystemMouse("iOS")
{
_unique_id = "ios_mouse";
_name = "Touchscreen (Mouse)";
loadMapping();
}
};

View File

@ -1,5 +1,5 @@
//
// ios.h
// ios_keyboard.h
// flycast
//
// Created by Cameron Bates on 9/6/21.
@ -43,7 +43,7 @@ public:
kb_map[GCKeyCodeKeyY] = 0x1C;
kb_map[GCKeyCodeKeyZ] = 0x1D;
//1E-27 Number keys 1-0
// Number keys 1-0
kb_map[GCKeyCodeOne] = 0x1E;
kb_map[GCKeyCodeTwo] = 0x1F;
kb_map[GCKeyCodeThree] = 0x20;
@ -65,26 +65,23 @@ public:
kb_map[GCKeyCodeEqualSign] = 0x2E; // =
kb_map[GCKeyCodeOpenBracket] = 0x2F; // [
kb_map[GCKeyCodeCloseBracket] = 0x30; // ]
kb_map[GCKeyCodeBackslash] = 0x31; // "\"
kb_map[GCKeyCodeBackslash] = 0x31; // \ (US) unsure of keycode
//32-34 "]", ";" and ":" (the 3 keys right of L)
//kb_map[?] = 0x32; // ~ (non-US) *,µ in FR layout
// "]", ";" and ":" (the 3 keys right of L)
// kb_map[?] = 0x32; // ~ (non-US) *,µ in FR layout
kb_map[GCKeyCodeSemicolon] = 0x33; // ;
kb_map[GCKeyCodeQuote] = 0x34; // '
//35 hankaku/zenkaku / kanji (top left)
kb_map[GCKeyCodeGraveAccentAndTilde] = 0x35; // `~ (US)
//36-38 ",", "." and "/" (the 3 keys right of M)
// ",", "." and "/" (the 3 keys right of M)
kb_map[GCKeyCodeComma] = 0x36;
kb_map[GCKeyCodePeriod] = 0x37;
kb_map[GCKeyCodeSlash] = 0x38;
// CAPSLOCK
// Capslock
kb_map[GCKeyCodeCapsLock] = 0x39;
//3A-45 Function keys F1-F12
// Function keys F1-F12
kb_map[GCKeyCodeF1] = 0x3A;
kb_map[GCKeyCodeF2] = 0x3B;
kb_map[GCKeyCodeF3] = 0x3C;
@ -98,7 +95,7 @@ public:
kb_map[GCKeyCodeF11] = 0x44;
kb_map[GCKeyCodeF12] = 0x45;
//46-4E Control keys above cursor keys
// Control keys above cursor keys
kb_map[GCKeyCodePrintScreen] = 0x46; // Print Screen
kb_map[GCKeyCodeScrollLock] = 0x47; // Scroll Lock
kb_map[GCKeyCodePause] = 0x48; // Pause
@ -109,25 +106,19 @@ public:
kb_map[GCKeyCodeEnd] = 0x4D;
kb_map[GCKeyCodePageDown] = 0x4E;
//4F-52 Cursor keys
// Cursor keys
kb_map[GCKeyCodeRightArrow] = 0x4F;
kb_map[GCKeyCodeLeftArrow] = 0x50;
kb_map[GCKeyCodeDownArrow] = 0x51;
kb_map[GCKeyCodeUpArrow] = 0x52;
//53 Num Lock (Numeric keypad)
kb_map[GCKeyCodeKeypadNumLock] = 0x53;
//54 "/" (Numeric keypad)
kb_map[GCKeyCodeKeypadSlash] = 0x54;
//55 "*" (Numeric keypad)
kb_map[GCKeyCodeKeypadAsterisk] = 0x55;
//56 "-" (Numeric keypad)
kb_map[GCKeyCodeKeypadHyphen] = 0x56;
//57 "+" (Numeric keypad)
kb_map[GCKeyCodeKeypadPlus] = 0x57;
//58 Enter (Numeric keypad)
kb_map[GCKeyCodeKeypadEnter] = 0x58;
//59-62 Number keys 1-0 (Numeric keypad)
// Keypad
kb_map[GCKeyCodeKeypadNumLock] = 0x53; // Num Lock
kb_map[GCKeyCodeKeypadSlash] = 0x54; // "/"
kb_map[GCKeyCodeKeypadAsterisk] = 0x55; // "*"
kb_map[GCKeyCodeKeypadHyphen] = 0x56; // "-"
kb_map[GCKeyCodeKeypadPlus] = 0x57; // "+"
kb_map[GCKeyCodeKeypadEnter] = 0x58; // Enter
kb_map[GCKeyCodeKeypad1] = 0x59;
kb_map[GCKeyCodeKeypad2] = 0x5A;
kb_map[GCKeyCodeKeypad3] = 0x5B;
@ -138,33 +129,60 @@ public:
kb_map[GCKeyCodeKeypad8] = 0x60;
kb_map[GCKeyCodeKeypad9] = 0x61;
kb_map[GCKeyCodeKeypad0] = 0x62;
//63 "." (Numeric keypad)
kb_map[GCKeyCodeKeypadPeriod] = 0x63;
kb_map[GCKeyCodeKeypadPeriod] = 0x63; // "."
//64 #| (non-US)
//kb_map[94] = 0x64;
//65 S3 key
//66-A4 Not used
//A5-DF Reserved
kb_map[GCKeyCodeLeftControl] = 0xE0;
kb_map[GCKeyCodeLeftShift] = 0xE1;
kb_map[GCKeyCodeLeftAlt] = 0xE2; // Left Alt
//E3 Left S1
kb_map[GCKeyCodeLeftGUI] = 0xE3; // Left Command/Meta
kb_map[GCKeyCodeRightControl] = 0xE4;
kb_map[GCKeyCodeRightShift] = 0xE5;
kb_map[GCKeyCodeRightAlt] = 0xE6; // Right Alt
//E7 Right S3
//E8-FF Reserved
// kb_map[kVK_ISO_Section] = 0x32; // #, Tilde
// Japanese keyboards
// kb_map[kVK_JIS_Underscore] = 0x87; // I18n keyboard 1
// kb_map[kVK_JIS_Yen] = 0x89; // I18n keyboard 3
kb_map[GCKeyCodeRightGUI] = 0xE7; // Right Command/Meta
// International keys
kb_map[GCKeyCodeInternational1] = 0x87;
kb_map[GCKeyCodeInternational2] = 0x88;
kb_map[GCKeyCodeInternational3] = 0x89; // Yen
kb_map[GCKeyCodeInternational4] = 0x8A;
kb_map[GCKeyCodeInternational5] = 0x8B;
kb_map[GCKeyCodeInternational6] = 0x8C;
kb_map[GCKeyCodeInternational7] = 0x8D;
kb_map[GCKeyCodeInternational8] = 0x8E;
kb_map[GCKeyCodeInternational9] = 0x8F;
// Language keys
kb_map[GCKeyCodeLANG1] = 0x90; // Hangul
kb_map[GCKeyCodeLANG2] = 0x91; // Hanja
kb_map[GCKeyCodeLANG3] = 0x92; // Katakana
kb_map[GCKeyCodeLANG4] = 0x93; // Hiragana
kb_map[GCKeyCodeLANG5] = 0x94; // Zekaku/Hankaku
kb_map[GCKeyCodeLANG6] = 0x95;
kb_map[GCKeyCodeLANG7] = 0x96;
kb_map[GCKeyCodeLANG8] = 0x97;
kb_map[GCKeyCodeLANG9] = 0x98;
[gcKeyboard.keyboardInput setKeyChangedHandler:^(GCKeyboardInput *keyboard, GCDeviceButtonInput *key, GCKeyCode keyCode, BOOL pressed) {
if (pressed) {
if (keyCode == GCKeyCodeLeftAlt || keyCode == GCKeyCodeLeftGUI) {
GCKeyCode otherModifierCode = keyCode == GCKeyCodeLeftAlt ? GCKeyCodeLeftGUI : GCKeyCodeLeftAlt;
GCControllerButtonInput *otherModifier = [keyboard buttonForKeyCode:otherModifierCode];
if (otherModifier.isPressed && !gui_is_open()) {
gui_open_settings();
}
}
}
keyboard_input(keyCode, pressed);
}];
}
void set_maple_port(int port) override

View File

@ -0,0 +1,71 @@
//
// ios_mouse.h
// flycast
//
// Created by Cameron Bates on 9/6/21.
//
#pragma once
#import <GameController/GameController.h>
#include "input/gamepad_device.h"
class API_AVAILABLE(ios(14.0)) IOSMouse : public SystemMouse
{
public:
IOSMouse(int port, GCMouse *mouse) : SystemMouse("iOS", port), gcMouse(mouse)
{
set_maple_port(port);
loadMapping();
[gcMouse.mouseInput setMouseMovedHandler:^(GCMouseInput * _Nonnull mouse, float deltaX, float deltaY) {
setRelPos(deltaX, -deltaY);
}];
[gcMouse.mouseInput.leftButton setValueChangedHandler:
^(GCControllerButtonInput * _Nonnull button, float value, BOOL pressed) {
setButton(Mouse::LEFT_BUTTON, pressed);
}];
[gcMouse.mouseInput.rightButton setValueChangedHandler:
^(GCControllerButtonInput * _Nonnull button, float value, BOOL pressed) {
setButton(Mouse::RIGHT_BUTTON, pressed);
}];
[gcMouse.mouseInput.middleButton setValueChangedHandler:
^(GCControllerButtonInput * _Nonnull button, float value, BOOL pressed) {
setButton(Mouse::MIDDLE_BUTTON, pressed);
}];
[gcMouse.mouseInput.scroll.yAxis setValueChangedHandler:^(GCControllerAxisInput * _Nonnull axis, float value) {
setWheel(value);
}];
}
void set_maple_port(int port) override
{
SystemMouse::set_maple_port(port);
}
static void addMouse(GCMouse *mouse)
{
if (mice.count(mouse) > 0)
return;
int port = std::min((int)mice.size(), 3);
mice[mouse] = std::make_shared<IOSMouse>(port, mouse);
SystemMouse::Register(mice[mouse]);
}
static void removeMouse(GCMouse *mouse)
{
auto it = mice.find(mouse);
if (it == mice.end())
return;
SystemMouse::Unregister(it->second);
mice.erase(it);
}
private:
GCMouse * __weak gcMouse = nullptr;
static std::map<GCMouse *, std::shared_ptr<IOSMouse>> mice;
};

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ALTDeviceID</key>
<string>dummy</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>

View File

@ -1,18 +0,0 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
#include "TargetConditionals.h"

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:reicast-ios.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,10 +0,0 @@
//
// DreamcastConfig.xcconfig
// reicast-osx
//
// Created by flyinghead on 21/05/2019.
//
REI_APP_NAME = Flycast
PRODUCT_NAME = Flycast
CFLAGS =
LIBSDL = /usr/local/lib/libSDL2.a

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>$(REI_APP_NAME)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2019 reicast contributors. All rights reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSMicrophoneUsageDescription</key>
<string>Flycast requires microphone access to emulate the Dreamcast microphone</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

View File

@ -1,10 +0,0 @@
//
// NaomiConfig.xcconfig
// reicast-osx
//
// Created by flyinghead on 21/05/2019.
//
REI_APP_NAME = Flycast Naomi
PRODUCT_NAME = Flycast Naomi
CFLAGS = DC_PLATFORM=2

View File

@ -1,73 +0,0 @@
#ifndef HAD_CONFIG_H
#define HAD_CONFIG_H
#ifndef _HAD_ZIPCONF_H
#include "zipconf.h"
#endif
/* BEGIN DEFINES */
/* #undef HAVE___PROGNAME */
/* #undef HAVE__CLOSE */
/* #undef HAVE__DUP */
/* #undef HAVE__FDOPEN */
/* #undef HAVE__FILENO */
/* #undef HAVE__SETMODE */
/* #undef HAVE__SNPRINTF */
/* #undef HAVE__STRDUP */
/* #undef HAVE__STRICMP */
/* #undef HAVE__STRTOI64 */
/* #undef HAVE__STRTOUI64 */
/* #undef HAVE__UMASK */
/* #undef HAVE__UNLINK */
#define HAVE_ARC4RANDOM
#define HAVE_CLONEFILE
/* #undef HAVE_COMMONCRYPTO */
/* #undef HAVE_CRYPTO */
/* #undef HAVE_FICLONERANGE */
#define HAVE_FILENO
#define HAVE_FSEEKO
#define HAVE_FTELLO
#define HAVE_GETPROGNAME
/* #undef HAVE_GNUTLS */
/* #undef HAVE_LIBBZ2 */
/* #undef HAVE_LIBLZMA */
/* #undef HAVE_LIBZSTD */
#define HAVE_LOCALTIME_R
/* #undef HAVE_MBEDTLS */
/* #undef HAVE_MKSTEMP */
#define HAVE_NULLABLE
/* #undef HAVE_OPENSSL */
#define HAVE_SETMODE
#define HAVE_STRCASECMP
#define HAVE_STRDUP
/* #undef HAVE_STRICMP */
#define HAVE_STRTOLL
#define HAVE_STRTOULL
/* #undef HAVE_STRUCT_TM_TM_ZONE */
#define HAVE_STDBOOL_H
#define HAVE_STRINGS_H
#define HAVE_UNISTD_H
/* #undef HAVE_WINDOWS_CRYPTO */
#define SIZEOF_OFF_T 8
#define SIZEOF_SIZE_T 8
/* #undef HAVE_DIRENT_H */
#define HAVE_FTS_H
/* #undef HAVE_NDIR_H */
/* #undef HAVE_SYS_DIR_H */
/* #undef HAVE_SYS_NDIR_H */
/* #undef WORDS_BIGENDIAN */
/* #undef HAVE_SHARED */
/* END DEFINES */
#define PACKAGE "flycast"
#define VERSION ""
// FIXME FLAC config
#define PACKAGE_VERSION "1.3.2"
#define FLAC__HAS_OGG 0
#define FLAC__NO_DLL 1
#define HAVE_LROUND 1
#define HAVE_STDINT_H 1
#define HAVE_STDLIB_H 1
#ifndef _MSC_VER
#define HAVE_SYS_PARAM_H 1
#endif
#endif /* HAD_CONFIG_H */

View File

@ -1,50 +0,0 @@
#ifndef _HAD_ZIPCONF_H
#define _HAD_ZIPCONF_H
/*
zipconf.h -- platform specific include file
This file was generated automatically by CMake
based on ../cmake-zipconf.h.in.
*/
#define LIBZIP_VERSION "1.7.3.1"
#define LIBZIP_VERSION_MAJOR 1
#define LIBZIP_VERSION_MINOR 7
#define LIBZIP_VERSION_MICRO 3
#define ZIP_STATIC
#if !defined(__STDC_FORMAT_MACROS)
#define __STDC_FORMAT_MACROS 1
#endif
#include <inttypes.h>
typedef int8_t zip_int8_t;
typedef uint8_t zip_uint8_t;
typedef int16_t zip_int16_t;
typedef uint16_t zip_uint16_t;
typedef int32_t zip_int32_t;
typedef uint32_t zip_uint32_t;
typedef int64_t zip_int64_t;
typedef uint64_t zip_uint64_t;
#define ZIP_INT8_MIN (-ZIP_INT8_MAX-1)
#define ZIP_INT8_MAX 0x7f
#define ZIP_UINT8_MAX 0xff
#define ZIP_INT16_MIN (-ZIP_INT16_MAX-1)
#define ZIP_INT16_MAX 0x7fff
#define ZIP_UINT16_MAX 0xffff
#define ZIP_INT32_MIN (-ZIP_INT32_MAX-1L)
#define ZIP_INT32_MAX 0x7fffffffL
#define ZIP_UINT32_MAX 0xffffffffLU
#define ZIP_INT64_MIN (-ZIP_INT64_MAX-1LL)
#define ZIP_INT64_MAX 0x7fffffffffffffffLL
#define ZIP_UINT64_MAX 0xffffffffffffffffULL
#endif /* zipconf.h */

View File

@ -7,6 +7,20 @@
//
#pragma once
#include "input/keyboard_device.h"
#include "oslib/oslib.h"
// Rumbling Taptic Engine by Private MultitouchSupport.framework
extern "C" {
typedef void *MTDeviceRef;
bool MTDeviceIsAvailable(void);
MTDeviceRef MTDeviceCreateDefault(void);
OSStatus MTDeviceGetDeviceID(MTDeviceRef, uint64_t*) __attribute__ ((weak_import));
CFTypeRef MTActuatorCreateFromDeviceID(UInt64 deviceID);
IOReturn MTActuatorOpen(CFTypeRef actuatorRef);
IOReturn MTActuatorClose(CFTypeRef actuatorRef);
IOReturn MTActuatorActuate(CFTypeRef actuatorRef, SInt32 actuationID, UInt32 unknown1, Float32 unknown2, Float32 unknown3);
bool MTActuatorIsOpen(CFTypeRef actuatorRef);
}
class OSXKeyboard : public KeyboardDeviceTemplate<UInt16>
{
@ -164,6 +178,45 @@ public:
kb_map[kVK_JIS_Yen] = 0x89; // I18n keyboard 3
}
void rumble(float power, float inclination, u32 duration_ms) override
{
NOTICE_LOG(INPUT, "rumble %.1f inc %f duration %d", power, inclination, duration_ms);
uint64_t deviceID;
if ( MTDeviceIsAvailable() && MTDeviceGetDeviceID(MTDeviceCreateDefault(), &deviceID) == 0 )
{
if ( power == 0 && vib_timer )
{
dispatch_source_cancel(vib_timer);
return;
}
__block CFTypeRef actuatorRef = MTActuatorCreateFromDeviceID(deviceID);
if (!actuatorRef) return;
MTActuatorOpen(actuatorRef);
__block double vib_stop_time = os_GetSeconds() + duration_ms / 1000.0;
vib_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0));
// Vibration interval: Power 1.0 = 10ms, Power 0.1 = 100ms
dispatch_source_set_timer(vib_timer, DISPATCH_TIME_NOW, 10 + (1.0-power)*100 * NSEC_PER_MSEC, 0);
dispatch_source_set_event_handler(vib_timer, ^{
if ( vib_stop_time - os_GetSeconds() < 0 )
{
dispatch_source_cancel(vib_timer);
return;
}
MTActuatorActuate(actuatorRef, 6, 0, 0.0, 0.0);
});
dispatch_source_set_cancel_handler(vib_timer, ^{
MTActuatorClose(actuatorRef);
});
dispatch_resume(vib_timer);
}
}
protected:
u8 convert_keycode(UInt16 keycode) override
{
@ -172,5 +225,6 @@ protected:
private:
std::map<UInt16, u8> kb_map;
dispatch_source_t vib_timer;
};

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,36 +0,0 @@
//
// emulator_osxTests.swift
// emulator-osxTests
//
// Created by admin on 6/1/15.
// Copyright (c) 2015 reicast. All rights reserved.
//
import Cocoa
import XCTest
class emulator_osxTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
super.tearDown()
}
func testExample() {
// This is an example of a functional test case.
XCTAssert(true, "Pass")
}
func testPerformanceExample() {
// This is an example of a performance test case.
self.measure() {
// Put the code you want to measure the time of here.
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,129 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1240"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Script"
scriptText = "if [[ `uname -m` == &apos;arm64&apos; ]]; then&#10; sdl2path=&apos;/opt/homebrew/lib/libSDL2.a&apos;&#10;else&#10; sdl2path=&apos;/usr/local/lib/libSDL2.a&apos;&#10;fi&#10;sed -i &apos;&apos; &quot;s|LIBSDL.*|LIBSDL = $sdl2path|&quot; $SRCROOT/emulator-osx/DreamcastConfig.xcconfig&#10;">
<EnvironmentBuildable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388B21B1CDD3E000166C0"
BuildableName = "Flycast.app"
BlueprintName = "reicast-osx"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
</ExecutionAction>
</PreActions>
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388B21B1CDD3E000166C0"
BuildableName = "Flycast.app"
BlueprintName = "reicast-osx"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "NO"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388C21B1CDD3F000166C0"
BuildableName = "reicast-osxTests.xctest"
BlueprintName = "reicast-osxTests"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388B21B1CDD3E000166C0"
BuildableName = "Flycast.app"
BlueprintName = "reicast-osx"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388C21B1CDD3F000166C0"
BuildableName = "reicast-osxTests.xctest"
BlueprintName = "reicast-osxTests"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "NO"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388B21B1CDD3E000166C0"
BuildableName = "Flycast.app"
BlueprintName = "reicast-osx"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "84A388B21B1CDD3E000166C0"
BuildableName = "Flycast.app"
BlueprintName = "reicast-osx"
ReferencedContainer = "container:reicast-osx.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:emulator-osx/reicast-osx.xcodeproj">
</FileRef>
<FileRef
location = "container:emulator-ios/reicast-ios.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>153E213C-241E-4F02-8A4F-A1601A5610B6</string>
<key>IDESourceControlProjectName</key>
<string>reicast-ios</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>BA170A7EFF7E25B0BD97DB6DB173D1CFB4CE3BD6</key>
<string>https://github.com/reicast/reicast-emulator.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>shell/apple/emulator-ios/reicast-ios.xcodeproj</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>BA170A7EFF7E25B0BD97DB6DB173D1CFB4CE3BD6</key>
<string>../../../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>https://github.com/reicast/reicast-emulator.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>BA170A7EFF7E25B0BD97DB6DB173D1CFB4CE3BD6</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>BA170A7EFF7E25B0BD97DB6DB173D1CFB4CE3BD6</string>
<key>IDESourceControlWCCName</key>
<string>reicast-emulator</string>
</dict>
</array>
</dict>
</plist>

View File

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "01FC208D-8891-48D7-854E-FD6EA64EB5E8"
type = "3"
version = "2.0">
<Breakpoints>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.SymbolicBreakpoint">
<BreakpointContent
uuid = "C27CA3DB-537A-4EC5-8119-7DC8A92A27C0"
shouldBeEnabled = "Yes"
nameForDebugger = "Bypass bm_GetCode&apos;s SIGBUS signal"
ignoreCount = "0"
continueAfterRunningActions = "Yes"
symbolName = "NSApplicationMain"
moduleName = "">
<Actions>
<BreakpointActionProxy
ActionExtensionID = "Xcode.BreakpointAction.DebuggerCommand">
<ActionContent
consoleCommand = "process handle -s false SIGBUS">
</ActionContent>
</BreakpointActionProxy>
</Actions>
<Locations>
<Location
uuid = "C27CA3DB-537A-4EC5-8119-7DC8A92A27C0 - a8f96680031534a4"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
symbolName = "NSApplicationMain"
moduleName = "AppKit"
usesParentBreakpointCondition = "Yes"
offsetFromSymbolStart = "0">
</Location>
</Locations>
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@ -2086,9 +2086,9 @@ static void updateMouseState(u32 port)
mo_buttons[port] |= 1 << 1;
btn_state = input_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_MIDDLE);
if (btn_state)
mo_buttons[port] &= ~(1 << 0);
mo_buttons[port] &= ~(1 << 3);
else
mo_buttons[port] |= 1 << 0;
mo_buttons[port] |= 1 << 3;
if (input_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN))
mo_wheel_delta[port] -= 10;
else if (input_cb(port, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP))

View File

@ -1,604 +0,0 @@
.DEFAULT_GOAL := all
LOCAL_PATH := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
FOR_LINUX :=1
#NO_REC := 1
#NO_REND := 1
USE_OSS := 1
#USE_PULSEAUDIO := 1
#USE_SDLAUDIO := 1
#USE_LIBAO := 1
#USE_SDL := 1
ifndef USE_SDL
USE_EVDEV := 1
USE_UDEV := 1
endif
PLATFORM_EXT := elf
#USE_SYSTEM_MINIUPNPC := 1
CXX ?= ${CC_PREFIX}g++
CC ?= ${CC_PREFIX}gcc
AS ?= ${CC_PREFIX}as
STRIP ?= ${CC_PREFIX}strip
LD ?= ${CC}
WINDRES=${CC_PREFIX}windres
CHD5_LZMA := 1
CHD5_FLAC := 1
MFLAGS :=
ASFLAGS :=
LDFLAGS ?=
INCS ?=
LIBS ?=
CFLAGS :=
CXXFLAGS :=
ifneq (, $(filter $(shell uname -s), FreeBSD OpenBSD NetBSD DragonFly))
CFLAGS += -DTARGET_BSD
undefine USE_UDEV
else
USE_ALSA := 1
# USE_JOYSTICK := 1
endif
# Platform auto-detection
# Can be overridden by using:
# make platform=x64
ifeq (,$(platform))
UNAME = $(shell uname -a)
ifeq ($(UNAME),)
platform = win32
else ifneq ($(findstring MINGW,$(UNAME)),)
platform = win32
else ifneq ($(findstring win,$(UNAME)),)
platform = win32
endif
endif
ifeq (,$(platform))
ARCH = $(shell uname -m)
ifeq ($(ARCH), $(filter $(ARCH), i386 i686))
platform = x86
else ifeq ($(ARCH), $(filter $(ARCH), x86_64 AMD64 amd64))
platform = x64
else ifneq (,$(findstring aarch64,$(ARCH)))
platform = arm64
HARDWARE = $(shell grep Hardware /proc/cpuinfo)
ifneq (,$(findstring Vero4K,$(HARDWARE)))
platform = vero4k
FEATURES = $(shell grep Features /proc/cpuinfo)
ifneq (,$(findstring neon,$(FEATURES)))
platform += neon
endif
endif
else ifneq (,$(findstring arm,$(ARCH)))
HARDWARE = $(shell grep Hardware /proc/cpuinfo)
ifneq (,$(findstring BCM2709,$(HARDWARE)))
platform = rpi2
else ifneq (,$(findstring BCM2711,$(HARDWARE)))
platform = rpi4-mesa
else ifneq (,$(findstring AM33XX,$(HARDWARE)))
platform = beagle
else ifneq (,$(findstring Pandora,$(HARDWARE)))
platform = pandora
else ifneq (,$(findstring ODROIDC,$(HARDWARE)))
platform = odroidc1
else ifneq (,$(findstring ODROID-XU3,$(HARDWARE)))
platform = odroidxu3
else ifneq (,$(findstring ODROID-XU4,$(HARDWARE)))
platform = odroidxu3
else ifneq (,$(findstring ODROIDXU,$(HARDWARE)))
platform = odroidxu
else ifneq (,$(findstring ODROIDX2,$(HARDWARE)))
platform = odroidx2
else ifneq (,$(findstring ODROIDX,$(HARDWARE)))
platform = odroidx
else ifneq (,$(findstring ODROID-U2/U3,$(HARDWARE)))
platform = odroidu2
else ifneq (,$(findstring ODROIDU2,$(HARDWARE)))
platform = odroidu2
else
platform = armv7h
endif
else
$(warning Unsupported CPU architecture, using lincpp)
platform = lincpp
endif
FLAGS = $(shell grep flags /proc/cpuinfo)
ifneq (,$(findstring sse4_1,$(FLAGS)))
platform += sse4_1
endif
endif
$(info Platform: $(platform))
# Generic 32 bit x86 (a.k.a. i386/i486/i686)
ifneq (,$(findstring x86,$(platform)))
X86_REC := 1
NOT_ARM := 1
ifndef USE_SDL
USE_X11 := 1
endif
MFLAGS += -m32
ASFLAGS += --32
LDFLAGS += -m32
CFLAGS += -m32 -DTARGET_NO_AREC -fno-builtin-sqrtf
CXXFLAGS += -fexceptions
# Generic 64 bit x86 (a.k.a. x64/AMD64/x86_64/Intel64/EM64T)
else ifneq (,$(findstring x64,$(platform)))
X64_REC := 1
NOT_ARM := 1
ifndef USE_SDL
USE_X11 := 1
endif
USE_VULKAN ?= 1
CFLAGS += -fno-builtin-sqrtf
CXXFLAGS += -fexceptions
LDFLAGS := -no-pie
# Generic 64 bit ARM (armv8) Linux
else ifneq (,$(findstring arm64,$(platform)))
NOT_ARM := 1
ifndef USE_SDL
USE_X11 := 1
endif
ARM64_REC := 1
ISARM64 := 1
CFLAGS += -fno-builtin-sqrtf
CXXFLAGS += -fexceptions
# Generic 32 bit ARMhf (a.k.a. ARMv7h)
else ifneq (,$(findstring armv7h,$(platform)))
MFLAGS += -marm -mfloat-abi=hard -march=armv7-a -funroll-loops
ASFLAGS += -mfloat-abi=hard -march=armv7-a
ifneq (,$(findstring neon,$(platform)))
MFLAGS += -mfpu=neon
ASFLAGS += -mfpu=neon
endif
USE_GLES := 1
# LinCPP
else ifneq (,$(findstring lincpp,$(platform)))
CPP_REC := 1
NOT_ARM := 1
USE_X11 := 1
CFLAGS += -D TARGET_NO_JIT
CXXFLAGS += -fexceptions -std=gnu++11
# Raspberry Pi
else ifneq (,$(findstring rpi,$(platform)))
ifneq (,$(findstring rpi2,$(platform)))
MFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
ASFLAGS += -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard
else ifneq (,$(findstring rpi3,$(platform)))
MFLAGS += -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -marm
ASFLAGS += -march=armv8-a+crc -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -marm
else ifneq (,$(findstring rpi4,$(platform)))
MFLAGS += -march=armv8-a+crc -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard -marm
ASFLAGS += -march=armv8-a+crc -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard -marm
CFLAGS += -DGLES3
endif
ifneq (,$(findstring mesa,$(platform)))
USE_SDL := 1
USE_GLES := 1
else
INCS += -I/opt/vc/include/ -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads
LIBS += -L/opt/vc/lib/ -lbcm_host -ldl
LIBS += -lbrcmEGL -lbrcmGLESv2
CFLAGS += -D TARGET_VIDEOCORE -DGLES
USE_OMX := 1
USE_DISPMANX := 1
endif
undefine USE_X11
# BeagleBone Black
else ifneq (,$(findstring beagle,$(platform)))
CC_PREFIX ?= arm-none-linux-gnueabi-
MFLAGS += -marm -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp -funroll-loops
ASFLAGS := -march=armv7-a -mfpu=neon -mfloat-abi=softfp
USE_GLES := 1
# Pandora
else ifneq (,$(findstring pandora,$(platform)))
USE_X11 := 1
USE_SDL := 1
PGO_USE := 1
USE_GLES := 1
MFLAGS += -marm -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -funroll-loops -ftree-vectorize -fomit-frame-pointer
ASFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=softfp
CFLAGS += -D TARGET_PANDORA -DPANDORA
# ODROIDs
else ifneq (,$(findstring odroid,$(platform)))
MFLAGS += -marm -mfpu=neon -mfloat-abi=hard -funroll-loops
ASFLAGS += -mfpu=neon -mfloat-abi=hard
CFLAGS += -DARM_HARDFP -fsingle-precision-constant
USE_GLES := 1
USE_SDL := 1
undefine USE_X11
undefine USE_EVDEV
undefine USE_VULKAN
# ODROID-XU3, -XU3 Lite & -XU4
ifneq (,$(findstring odroidxu3,$(platform)))
MFLAGS += -march=armv7ve -mcpu=cortex-a15 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mvectorize-with-neon-quad
ASFLAGS += -march=armv7ve
CFLAGS += -DGLES3
# Other ODROIDs
else
MFLAGS += -march=armv7-a
ASFLAGS += -march=armv7-a
# ODROID-C1 & -C1+
ifneq (,$(findstring odroidc1,$(platform)))
MFLAGS += -mtune=cortex-a5
# ODROID-U2, -U3, -X & -X2
else
MFLAGS += -mtune=cortex-a9
endif
endif
# ROCKCHIP
else ifneq (,$(findstring rockchip,$(platform)))
MFLAGS += -marm -march=armv8-a+crc -mfpu=neon -mfloat-abi=hard -funroll-loops -mtune=cortex-a53
ASFLAGS += -march=armv8-a+crc -mfpu=neon -mfloat-abi=hard
CXXFLAGS += -fexceptions
CFLAGS += -DMESA_EGL_NO_X11_HEADERS=1 -DEGL_NO_X11=1 -fpermissive -fno-builtin-sqrtf
INCS += -I/opt/vc/include/ -I/opt/vc/include/libdrm
LIBS += -ldrm -lGLESv2
USE_GLES := 1
USE_EVDEV := 1
USE_UDEV := 1
FOR_LINUX := 1
ISARM64 := 1
# Vero4K
else ifneq (,$(findstring vero4k,$(platform)))
MFLAGS += -marm -march=armv8-a+crc -mtune=cortex-a53 -mfloat-abi=hard -funsafe-math-optimizations -funroll-loops
ASFLAGS += -mfloat-abi=hard
ifneq (,$(findstring neon,$(platform)))
MFLAGS += -mfpu=neon
ASFLAGS += -mfpu=neon
endif
INCS += -I/opt/vero3/include/
LIBS += -L/opt/vero3/lib/ -lEGL -lGLESv2
USE_GLES := 1
USE_SDL := 1
# Windows
else ifneq (,$(findstring win32,$(platform)))
NOT_ARM := 1
CFLAGS += -fno-builtin-sqrtf -funroll-loops -I /mingw64/include
LDFLAGS += -static-libgcc -static-libstdc++ -Wl,-subsystem,windows
LIBS := -lopengl32 -lwinmm -lgdi32 -lwsock32 -lws2_32 -ldsound -lcomctl32 -lcomdlg32 -lxinput -liphlpapi -ld3d9 -ld3dx9 -Wl,-Bstatic -lgomp
PLATFORM_EXT := exe
CC = gcc
CXX = g++
USE_SDL = 1
USE_SDLAUDIO = 1
STATIC_LIBZIP = 1
ifeq ($(WITH_DYNAREC), x86)
X86_REC := 1
LDFLAGS += -m32
CFLAGS += -m32 -D TARGET_NO_AREC
else
X64_REC := 1
endif
undefine USE_X11
undefine USE_ALSA
undefine USE_OSS
undefine USE_EVDEV
undefine USE_UDEV
undefine FOR_LINUX
FOR_WINDOWS := 1
USE_VULKAN ?= 1
else
$(error Unknown platform)
endif
RZDCY_SRC_DIR = $(LOCAL_PATH)/../../core
include $(RZDCY_SRC_DIR)/core.mk
LDFLAGS += -g -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-common -fopenmp
CFLAGS += $(RZDCY_CFLAGS) -g -O3 -D NDEBUG -c -fopenmp #-D NO_REND
CFLAGS += -frename-registers -fno-strict-aliasing -fsingle-precision-constant
CFLAGS += -ftree-vectorize -Wall -Wno-unused-result
CXXFLAGS += $(RZDCY_CFLAGS) -fno-rtti -fno-operator-names -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++11
INCS += -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps -I$(RZDCY_SRC_DIR)/khronos
ifdef FOR_WINDOWS
INCS += -I$(LOCAL_PATH)/include/mingw
LIBS += -lm -static -lpthread
else
INCS += -I$(LOCAL_PATH)/include/linux
LIBS += -lm -lpthread
endif
ifdef FOR_LINUX
LIBS += -lrt
endif
ifdef USE_SYSTEM_MINIUPNPC
LIBS += -lminiupnpc
endif
ifndef STATIC_LIBZIP
LIBS += -lzip
endif
$(RZDCY_SRC_DIR)/deps/miniupnpc/libminiupnpc.a:
ifdef FOR_WINDOWS
$(MAKE) -C $(RZDCY_SRC_DIR)/deps/miniupnpc -f Makefile.mingw CC=gcc libminiupnpc.a
else
$(MAKE) -C $(RZDCY_SRC_DIR)/deps/miniupnpc libminiupnpc.a
endif
PREFIX ?= /usr/local
MAN_DIR ?= ${PREFIX}/share/man/man1
MENUENTRY_DIR ?= ${PREFIX}/share/applications
ICON_DIR ?= ${PREFIX}/share/pixmaps
ifdef USE_SDL
ifdef FOR_WINDOWS
CXXFLAGS += -D USE_SDL
INCS += -I$(RZDCY_SRC_DIR)/deps/SDL/include
else
CXXFLAGS += `sdl2-config --cflags` -D USE_SDL
LIBS += `sdl2-config --libs`
endif
endif
ifdef PGO_MAKE
CFLAGS += -fprofile-generate -pg
LDFLAGS += -fprofile-generate
else
CFLAGS += -fomit-frame-pointer
endif
ifdef PGO_USE
CFLAGS += -fprofile-use
endif
ifdef LTO_TEST
CFLAGS += -flto -fwhole-program
LDFLAGS +=-flto -fwhole-program
endif
ifdef USE_DISPMANX
CFLAGS += -D SUPPORT_DISPMANX
CXXFLAGS += -D SUPPORT_DISPMANX
endif
ifdef USE_X11
CFLAGS += `pkg-config --cflags x11` -D SUPPORT_X11
CXXFLAGS += `pkg-config --cflags x11` -D SUPPORT_X11
LIBS += `pkg-config --libs x11`
endif
ifdef USE_EVDEV
CXXFLAGS += -D USE_EVDEV
ifdef USE_UDEV
CXXFLAGS += -D USE_UDEV
LIBS += -ludev
endif
endif
ifdef USE_JOYSTICK
CXXFLAGS += -D USE_JOYSTICK
endif
ifdef USE_OMX
CXXFLAGS += -D USE_OMX
LIBS += -lopenmaxil
endif
ifdef USE_ALSA
CXXFLAGS += `pkg-config --cflags alsa` -D USE_ALSA
LIBS += `pkg-config --libs alsa`
endif
ifdef USE_OSS
CXXFLAGS += -D USE_OSS
endif
ifdef USE_PULSEAUDIO
CXXFLAGS += `pkg-config --cflags libpulse-simple` -D USE_PULSEAUDIO
LIBS += `pkg-config --libs libpulse-simple`
endif
ifdef USE_SDLAUDIO
ifdef FOR_WINDOWS
CXXFLAGS += -D USE_SDL_AUDIO
INCS += -ISDL/include
USE_SDL = 1
else
CXXFLAGS += `sdl2-config --cflags` -D USE_SDL_AUDIO
LIBS += `sdl2-config --libs`
endif
endif
ifdef USE_LIBAO
CXXFLAGS += `pkg-config --cflags ao` -D USE_LIBAO
LIBS += `pkg-config --libs ao`
endif
# these are also handled on core.mk, but ignored here
# GLES on x11?
ifdef USE_GLES
CFLAGS += -DGLES
LIBS += -lEGL -lGLESv2
else ifdef FOR_LINUX
LIBS += -ldl -lGL #for desktop gl
endif
ifdef TEST_AUTOMATION
CFLAGS += -DTEST_AUTOMATION
endif
ifdef DEBUGFAST
CFLAGS += -DDEBUGFAST
endif
ifdef ASAN
CFLAGS += -fsanitize=address -static-libasan
LDFLAGS += -fsanitize=address -static-libasan
endif
ifdef LOG_TO_PTY
CFLAGS += -D LOG_TO_PTY
endif
ifdef UNIT_TESTS
CFLAGS += -DUNIT_TESTS
EXECUTABLE_STRIPPED=nosym-alltests
DC_PLATFORM=tests
EXECUTABLE=alltests.$(PLATFORM_EXT)
EXECUTABLE_NAME=alltests
TEST_SRC_DIR:=$(RZDCY_SRC_DIR)/../tests/src
RZDCY_FILES += $(wildcard $(TEST_SRC_DIR)/*.cpp) $(RZDCY_SRC_DIR)/deps/gtest/src/gtest_main.cc $(RZDCY_SRC_DIR)/deps/gtest/src/gtest-all.cc
else
EXECUTABLE_STRIPPED=nosym-flycast.$(PLATFORM_EXT)
DC_PLATFORM=dreamcast
EXECUTABLE=flycast.$(PLATFORM_EXT)
EXECUTABLE_NAME=flycast
endif
ifndef NOT_ARM
AS=$(CC)
ASFLAGS += $(CFLAGS)
endif
CHAR_EMPTY:=
CHAR_SPACE:=$(CHAR_EMPTY) $(CHAR_EMPTY)
BUILDDIR:=obj-$(DC_PLATFORM)-$(subst $(CHAR_SPACE),-,$(platform))
OBJECTS=$(RZDCY_FILES:.cpp=.build_obj)
OBJECTS:=$(OBJECTS:.cc=.build_obj)
OBJECTS:=$(OBJECTS:.c=.build_obj)
OBJECTS:=$(OBJECTS:.S=.build_obj)
OBJECTS:=$(patsubst $(RZDCY_SRC_DIR)/%,$(BUILDDIR)/%,$(OBJECTS))
ifdef FOR_WINDOWS
OBJECTS += $(BUILDDIR)/flycastres.build_obj
$(BUILDDIR)/flycastres.build_obj: $(LOCAL_PATH)/../windows/flycast.rc $(LOCAL_PATH)/../windows/flycast.ico $(RZDCY_SRC_DIR)/version.h
$(WINDRES) $< $@
endif
ifndef USE_SYSTEM_MINIUPNPC
OBJECTS += $(RZDCY_SRC_DIR)/deps/miniupnpc/libminiupnpc.a
CFLAGS += -DMINIUPNP_STATICLIB
endif
ifdef FOR_WINDOWS
CMAKE_FLAVOR = -G "MinGW Makefiles"
endif
ifdef USE_SDL
ifdef FOR_WINDOWS
$(OBJECTS): SDL/lib/libSDL2.a
SDL/lib/libSDL2.a:
mkdir -p SDL && \
cd SDL && \
cmake $(CMAKE_FLAVOR) -DCMAKE_INSTALL_PREFIX=. -DBUILD_SHARED_LIBS=OFF -DCMAKE_SH=SH-NOTFOUND $(RZDCY_SRC_DIR)/deps/SDL && \
cmake --build . --target install
OBJECTS += SDL/lib/libSDL2.a
LIBS += -ldinput8 -ldxguid -ldxerr8
LIBS += -luser32 -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion -luuid
endif
endif
libchdr/libchdr-static.a:
mkdir -p libchdr && \
cd libchdr && \
cmake $(CMAKE_FLAVOR) -DBUILD_SHARED_LIBS=OFF -DCMAKE_SH=SH-NOTFOUND $(RZDCY_SRC_DIR)/deps/libchdr && \
cmake --build .
OBJECTS += libchdr/libchdr-static.a
DEPDIR := .dep-$(BUILDDIR)
DEPFLAGS = -MT $@ -MD -MP -MF $(DEPDIR)/$*.Td
DEPS=$(RZDCY_FILES:.cpp=.d)
DEPS:=$(DEPS:.cc=.d)
DEPS:=$(DEPS:.c=.d)
DEPS:=$(DEPS:.S=.d)
DEPS:=$(patsubst $(RZDCY_SRC_DIR)/%,$(DEPDIR)/%,$(DEPS))
POSTCOMPILE = mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d
all: $(CPPFILES) $(EXECUTABLE) $(EXECUTABLE_STRIPPED)
$(EXECUTABLE): $(OBJECTS)
$(CXX) $(MFLAGS) $(EXTRAFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $@
$(EXECUTABLE_STRIPPED): $(EXECUTABLE)
cp $< $@ && $(STRIP) $@
$(BUILDDIR)/%.build_obj : $(RZDCY_SRC_DIR)/%.cpp
$(BUILDDIR)/%.build_obj: $(RZDCY_SRC_DIR)/%.cpp $(DEPDIR)/%.d $(VERSION_HEADER)
mkdir -p $(dir $@)
mkdir -p .dep-$(dir $@)
$(CXX) $(EXTRAFLAGS) $(INCS) $(DEPFLAGS) $(CFLAGS) $(MFLAGS) $(CXXFLAGS) $< -o $@
$(POSTCOMPILE)
$(BUILDDIR)/%.build_obj : $(RZDCY_SRC_DIR)/%.cc
$(BUILDDIR)/%.build_obj: $(RZDCY_SRC_DIR)/%.cc $(DEPDIR)/%.d $(VERSION_HEADER)
mkdir -p $(dir $@)
mkdir -p .dep-$(dir $@)
$(CXX) $(EXTRAFLAGS) $(INCS) $(DEPFLAGS) $(CFLAGS) $(MFLAGS) $(CXXFLAGS) $< -o $@
$(POSTCOMPILE)
$(BUILDDIR)/%.build_obj : $(RZDCY_SRC_DIR)/%.c
$(BUILDDIR)/%.build_obj: $(RZDCY_SRC_DIR)/%.c $(DEPDIR)/%.d $(VERSION_HEADER)
mkdir -p $(dir $@)
mkdir -p .dep-$(dir $@)
$(CC) $(EXTRAFLAGS) $(INCS) $(DEPFLAGS) $(CFLAGS) $< -o $@
$(POSTCOMPILE)
$(BUILDDIR)/%.build_obj : $(RZDCY_SRC_DIR)/%.S $(VERSION_HEADER)
mkdir -p $(dir $@)
$(AS) $(ASFLAGS) $(INCS) $< -o $@
install: $(EXECUTABLE)
mkdir -p $(DESTDIR)$(PREFIX)/bin 2>/dev/null || true
mkdir -p $(DESTDIR)$(PREFIX)/share/flycast/mappings 2>/dev/null || true
mkdir -p $(DESTDIR)$(MAN_DIR) 2>/dev/null || true
mkdir -p $(DESTDIR)$(MENUENTRY_DIR) 2>/dev/null || true
mkdir -p $(DESTDIR)$(ICON_DIR) 2>/dev/null || true
install -m755 $(EXECUTABLE) $(DESTDIR)$(PREFIX)/bin/$(EXECUTABLE_NAME)
install -m644 mappings/controller_generic.cfg $(DESTDIR)$(PREFIX)/share/flycast/mappings
install -m644 mappings/controller_pandora.cfg $(DESTDIR)$(PREFIX)/share/flycast/mappings
install -m644 mappings/controller_xboxdrv.cfg $(DESTDIR)$(PREFIX)/share/flycast/mappings
install -m644 mappings/controller_xpad.cfg $(DESTDIR)$(PREFIX)/share/flycast/mappings
install -m644 mappings/keyboard.cfg $(DESTDIR)$(PREFIX)/share/flycast/mappings
install -m644 man/flycast.1 $(DESTDIR)$(MAN_DIR)
install -m644 flycast.desktop $(DESTDIR)$(MENUENTRY_DIR)
install -m644 flycast.png $(DESTDIR)$(ICON_DIR)
uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/$(EXECUTABLE_NAME)
rm -f $(DESTDIR)$(PREFIX)/share/flycast/mappings/controller_generic.cfg
rm -f $(DESTDIR)$(PREFIX)/share/flycast/mappings/controller_pandora.cfg
rm -f $(DESTDIR)$(PREFIX)/share/flycast/mappings/controller_xboxdrv.cfg
rm -f $(DESTDIR)$(PREFIX)/share/flycast/mappings/controller_xpad.cfg
rm -f $(DESTDIR)$(PREFIX)/share/flycast/mappings/keyboard.cfg
rm -f $(DESTDIR)$(MAN_DIR)/flycast.1
rm -f $(DESTDIR)$(MENUENTRY_DIR)/flycast.desktop
rm -f $(DESTDIR)$(ICON_DIR)/flycast.png
clean:
rm -f $(OBJECTS) $(EXECUTABLE) $(EXECUTABLE_STRIPPED) .map $(VERSION_HEADER)
tests: alltests.$(PLATFORM_EXT)
./alltests.$(PLATFORM_EXT)
.PRECIOUS = $(DEPDIR)/%.d
$(DEPDIR)/%.d: ;
-include $(DEPS)

View File

@ -1,73 +0,0 @@
#ifndef HAD_CONFIG_H
#define HAD_CONFIG_H
#ifndef _HAD_ZIPCONF_H
#include "zipconf.h"
#endif
/* BEGIN DEFINES */
/* #undef HAVE___PROGNAME */
#define HAVE__CLOSE
#define HAVE__DUP
#define HAVE__FDOPEN
#define HAVE__FILENO
#define HAVE__SETMODE
/* #undef HAVE__SNPRINTF */
#define HAVE__STRDUP
#define HAVE__STRICMP
#define HAVE__STRTOI64
#define HAVE__STRTOUI64
/* #undef HAVE__UMASK */
#define HAVE__UNLINK
/* #undef HAVE_ARC4RANDOM */
/* #undef HAVE_CLONEFILE */
/* #undef HAVE_COMMONCRYPTO */
/* #undef HAVE_CRYPTO */
/* #undef HAVE_FICLONERANGE */
#define HAVE_FILENO
#define HAVE_FSEEKO
#define HAVE_FTELLO
/* #undef HAVE_GETPROGNAME */
/* #undef HAVE_GNUTLS */
/* #undef HAVE_LIBBZ2 */
/* #undef HAVE_LIBLZMA */
/* #undef HAVE_LIBZSTD */
/* #undef HAVE_LOCALTIME_R */
/* #undef HAVE_MBEDTLS */
/* #undef HAVE_MKSTEMP */
/* #undef HAVE_NULLABLE */
/* #undef HAVE_OPENSSL */
#define HAVE_SETMODE
/* #undef HAVE_STRCASECMP */
#define HAVE_STRDUP
#define HAVE_STRICMP
#define HAVE_STRTOLL
#define HAVE_STRTOULL
/* #undef HAVE_STRUCT_TM_TM_ZONE */
#define HAVE_STDBOOL_H
/* #undef HAVE_STRINGS_H */
/* #undef HAVE_UNISTD_H */
/* #undef HAVE_WINDOWS_CRYPTO */
#define SIZEOF_OFF_T 4
#define SIZEOF_SIZE_T 8
/* #undef HAVE_DIRENT_H */
/* #undef HAVE_FTS_H */
/* #undef HAVE_NDIR_H */
/* #undef HAVE_SYS_DIR_H */
/* #undef HAVE_SYS_NDIR_H */
/* #undef WORDS_BIGENDIAN */
/* #undef HAVE_SHARED */
/* END DEFINES */
#define PACKAGE "flycast"
#define VERSION ""
/* FIXME This is for FLAC */
#define PACKAGE_VERSION "1.3.2"
#define FLAC__HAS_OGG 0
#define FLAC__NO_DLL 1
#define HAVE_LROUND 1
#define HAVE_STDINT_H 1
#define HAVE_STDLIB_H 1
#ifndef _MSC_VER
#define HAVE_SYS_PARAM_H 1
#endif
#endif /* HAD_CONFIG_H */

View File

@ -1,52 +0,0 @@
#ifndef _HAD_ZIPCONF_H
#define _HAD_ZIPCONF_H
/*
zipconf.h -- platform specific include file
This file was generated automatically by CMake
based on ../cmake-zipconf.h.in.
*/
#define LIBZIP_VERSION "1.7.3.1"
#define LIBZIP_VERSION_MAJOR 1
#define LIBZIP_VERSION_MINOR 7
#define LIBZIP_VERSION_MICRO 3
#define ZIP_STATIC
#define _Nullable
#define _Nonnull
#if !defined(__STDC_FORMAT_MACROS)
#define __STDC_FORMAT_MACROS 1
#endif
#include <inttypes.h>
#include <sys/types.h>
typedef int8_t zip_int8_t;
typedef uint8_t zip_uint8_t;
typedef int16_t zip_int16_t;
typedef uint16_t zip_uint16_t;
typedef int32_t zip_int32_t;
typedef uint32_t zip_uint32_t;
typedef int64_t zip_int64_t;
typedef uint64_t zip_uint64_t;
#define ZIP_INT8_MIN (-ZIP_INT8_MAX-1)
#define ZIP_INT8_MAX 0x7f
#define ZIP_UINT8_MAX 0xff
#define ZIP_INT16_MIN (-ZIP_INT16_MAX-1)
#define ZIP_INT16_MAX 0x7fff
#define ZIP_UINT16_MAX 0xffff
#define ZIP_INT32_MIN (-ZIP_INT32_MAX-1L)
#define ZIP_INT32_MAX 0x7fffffffL
#define ZIP_UINT32_MAX 0xffffffffLU
#define ZIP_INT64_MIN (-ZIP_INT64_MAX-1LL)
#define ZIP_INT64_MAX 0x7fffffffffffffffLL
#define ZIP_UINT64_MAX 0xffffffffffffffffULL
#endif /* zipconf.h */

View File

@ -34,18 +34,18 @@ flycast -config window:fullscreen=yes
The config file for \fBflycast\fR can be found at:
.IP
~/.config/reicast/emu.cfg
~/.config/flycast/emu.cfg
.LP
.SH "VMU SAVE FILE"
.TP
The VMU save files can be found at ~/.local/share/reicast/, by default \fBflycast\fR will create two VMU files for the first controller:
The VMU save files can be found at ~/.local/share/flycast/, by default \fBflycast\fR will create two VMU files for the first controller:
.IP
~/.local/share/reicast/vmu_save_A1.bin
~/.local/share/flycast/vmu_save_A1.bin
.br
~/.local/share/reicast/vmu_save_A2.bin
~/.local/share/flycast/vmu_save_A2.bin
.LP
.SH "BIOS AND FLASH ROMS"
@ -54,11 +54,11 @@ The VMU save files can be found at ~/.local/share/reicast/, by default \fBflycas
\fBflycast\fR needs the original Atomiswave or Naomi BIOS files. The Dreamcast BIOS isn't needed in most cases but is recommended. For copyright reasons it is not possible to distribute them bundled with \fBflycast\fR, so you have to dump them from your own Dreamcast. \fBflycast\fR will look for these files in:
.IP
~/.local/share/reicast/data/dc_boot.bin
~/.local/share/flycast/data/dc_boot.bin
.br
~/.local/share/reicast/data/naomi.zip
~/.local/share/flycast/data/naomi.zip
.br
~/.local/share/reicast/data/awbios.zip
~/.local/share/flycast/data/awbios.zip
.LP
.SH "CONTROLS"