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:
commit
699dcdaf5b
|
@ -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.**
|
||||
|
|
@ -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.
|
|
@ -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
|
||||
|
|
|
@ -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/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
# Flycast
|
||||
|
||||
[](https://github.com/flyinghead/flycast/actions/workflows/c-cpp.yml)
|
||||
[](https://github.com/flyinghead/flycast/actions/workflows/android.yml)
|
||||
[](https://github.com/flyinghead/flycast/actions/workflows/c-cpp.yml)
|
||||
[](https://github.com/flyinghead/flycast/actions/workflows/switch.yml)
|
||||
|
||||

|
||||
|
||||
|
|
261
core/core.mk
261
core/core.mk
|
@ -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)
|
||||
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -176,5 +176,6 @@ private:
|
|||
bool scissorEnable = false;
|
||||
bool resetting = false;
|
||||
bool frameRendered = false;
|
||||
bool frameRenderedOnce = false;
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@ public:
|
|||
float cp_AlphaTestValue;
|
||||
float sp_FOG_DENSITY;
|
||||
float shade_scale_factor; // new for OIT
|
||||
u32 pixelBufferSize;
|
||||
};
|
||||
|
||||
struct PushConstants
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
|
@ -1,4 +0,0 @@
|
|||
flycast shell
|
||||
===========
|
||||
|
||||
Makefiles, and "ui specific" code mostly resides here
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
../NSError+ALTServerError.h
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
|
@ -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();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
|
@ -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>
|
||||
|
|
|
@ -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
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:reicast-ios.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
|
@ -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
|
|
@ -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>
|
|
@ -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
|
||||
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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
|
@ -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` == 'arm64' ]]; then sdl2path='/opt/homebrew/lib/libSDL2.a' else sdl2path='/usr/local/lib/libSDL2.a' fi sed -i '' "s|LIBSDL.*|LIBSDL = $sdl2path|" $SRCROOT/emulator-osx/DreamcastConfig.xcconfig ">
|
||||
<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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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'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>
|
|
@ -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))
|
||||
|
|
|
@ -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)
|
|
@ -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 */
|
|
@ -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 */
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue