forked from etc/pineapple-src
early-access version 3685
This commit is contained in:
parent
cff9ef374b
commit
e6541a28b3
8 changed files with 96 additions and 65 deletions
|
@ -59,6 +59,8 @@ option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ON)
|
||||||
|
|
||||||
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF)
|
||||||
|
|
||||||
|
option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" OFF)
|
||||||
|
|
||||||
CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF)
|
CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF)
|
||||||
|
|
||||||
# On Android, fetch and compile libcxx before doing anything else
|
# On Android, fetch and compile libcxx before doing anything else
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 3684.
|
This is the source code for early-access 3685.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
100
externals/nx_tzdb/CMakeLists.txt
vendored
100
externals/nx_tzdb/CMakeLists.txt
vendored
|
@ -1,24 +1,60 @@
|
||||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
set(NX_TZDB_VERSION "220816")
|
|
||||||
set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip")
|
|
||||||
|
|
||||||
set(NX_TZDB_ARCHIVE "${CMAKE_CURRENT_BINARY_DIR}/${NX_TZDB_VERSION}.zip")
|
|
||||||
set(NX_TZDB_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb")
|
|
||||||
|
|
||||||
set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
|
set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
|
||||||
|
|
||||||
if (NOT EXISTS ${NX_TZDB_ARCHIVE})
|
add_library(nx_tzdb INTERFACE)
|
||||||
file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE})
|
|
||||||
|
find_program(GIT git)
|
||||||
|
find_program(GNU_MAKE make)
|
||||||
|
find_program(GNU_DATE date)
|
||||||
|
|
||||||
|
set(CAN_BUILD_NX_TZDB true)
|
||||||
|
|
||||||
|
if ("${GIT}" STREQUAL "GIT-NOTFOUND")
|
||||||
|
set(CAN_BUILD_NX_TZDB false)
|
||||||
|
endif()
|
||||||
|
if ("${GNU_MAKE}" STREQUAL "GNU_MAKE-NOTFOUND")
|
||||||
|
set(CAN_BUILD_NX_TZDB false)
|
||||||
|
endif()
|
||||||
|
if ("${GNU_DATE}" STREQUAL "GNU_DATE-NOTFOUND")
|
||||||
|
set(CAN_BUILD_NX_TZDB false)
|
||||||
|
endif()
|
||||||
|
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows" OR ANDROID)
|
||||||
|
# tzdb_to_nx currently requires a posix-compliant host
|
||||||
|
# MinGW and Android are handled here due to the executable format being different from the host system
|
||||||
|
# TODO (lat9nq): cross-compiling support
|
||||||
|
set(CAN_BUILD_NX_TZDB false)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(NX_TZDB_VERSION "220816")
|
||||||
|
set(NX_TZDB_ARCHIVE "${CMAKE_CURRENT_BINARY_DIR}/${NX_TZDB_VERSION}.zip")
|
||||||
|
|
||||||
|
set(NX_TZDB_ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb")
|
||||||
|
|
||||||
|
if ((NOT ${CAN_BUILD_NX_TZDB} OR ${YUZU_DOWNLOAD_TIME_ZONE_DATA}) AND NOT EXISTS ${NX_TZDB_ARCHIVE})
|
||||||
|
set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip")
|
||||||
|
|
||||||
|
message(STATUS "Downloading time zone data from ${NX_TZDB_DOWNLOAD_URL}...")
|
||||||
|
file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE}
|
||||||
|
STATUS NX_TZDB_DOWNLOAD_STATUS)
|
||||||
|
list(GET NX_TZDB_DOWNLOAD_STATUS 0 NX_TZDB_DOWNLOAD_STATUS_CODE)
|
||||||
|
if (NOT "${NX_TZDB_DOWNLOAD_STATUS_CODE}" STREQUAL "0")
|
||||||
|
message(FATAL_ERROR "Time zone data download failed (status code ${NX_TZDB_DOWNLOAD_STATUS_CODE})")
|
||||||
|
endif()
|
||||||
|
|
||||||
file(ARCHIVE_EXTRACT
|
file(ARCHIVE_EXTRACT
|
||||||
INPUT
|
INPUT
|
||||||
${NX_TZDB_ARCHIVE}
|
${NX_TZDB_ARCHIVE}
|
||||||
DESTINATION
|
DESTINATION
|
||||||
${NX_TZDB_DIR})
|
${NX_TZDB_ROMFS_DIR})
|
||||||
|
elseif (${CAN_BUILD_NX_TZDB} AND NOT ${YUZU_DOWNLOAD_TIME_ZONE_DATA})
|
||||||
|
add_subdirectory(tzdb_to_nx)
|
||||||
|
add_dependencies(nx_tzdb x80e)
|
||||||
|
|
||||||
|
set(NX_TZDB_ROMFS_DIR "${NX_TZDB_DIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(nx_tzdb INTERFACE)
|
|
||||||
target_include_directories(nx_tzdb
|
target_include_directories(nx_tzdb
|
||||||
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include
|
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
INTERFACE ${NX_TZDB_INCLUDE_DIR})
|
INTERFACE ${NX_TZDB_INCLUDE_DIR})
|
||||||
|
@ -41,25 +77,25 @@ function(CreateHeader ZONE_PATH HEADER_NAME)
|
||||||
target_sources(nx_tzdb PRIVATE ${HEADER_PATH})
|
target_sources(nx_tzdb PRIVATE ${HEADER_PATH})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
CreateHeader(${NX_TZDB_DIR} base)
|
CreateHeader(${NX_TZDB_ROMFS_DIR} base)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo zoneinfo)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo zoneinfo)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Africa africa)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Africa africa)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/America america)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America america)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/Argentina america_argentina)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Argentina america_argentina)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/Indiana america_indiana)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Indiana america_indiana)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/Kentucky america_kentucky)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Kentucky america_kentucky)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/America/North_Dakota america_north_dakota)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/North_Dakota america_north_dakota)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Antartica antartica)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Antarctica antarctica)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Arctic arctic)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Arctic arctic)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Asia asia)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Asia asia)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Atlantic atlantic)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Atlantic atlantic)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Australia australia)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Australia australia)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Brazil brazil)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Brazil brazil)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Canada canada)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Canada canada)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Chile chile)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Chile chile)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Etc etc)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Etc etc)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Europe europe)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Europe europe)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Indian indian)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Indian indian)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Mexico mexico)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Mexico mexico)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/Pacific pacific)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Pacific pacific)
|
||||||
CreateHeader(${NX_TZDB_DIR}/zoneinfo/US us)
|
CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/US us)
|
||||||
|
|
2
externals/nx_tzdb/include/nx_tzdb.h
vendored
2
externals/nx_tzdb/include/nx_tzdb.h
vendored
|
@ -9,7 +9,7 @@
|
||||||
#include "nx_tzdb/america_indiana.h"
|
#include "nx_tzdb/america_indiana.h"
|
||||||
#include "nx_tzdb/america_kentucky.h"
|
#include "nx_tzdb/america_kentucky.h"
|
||||||
#include "nx_tzdb/america_north_dakota.h"
|
#include "nx_tzdb/america_north_dakota.h"
|
||||||
#include "nx_tzdb/antartica.h"
|
#include "nx_tzdb/antarctica.h"
|
||||||
#include "nx_tzdb/arctic.h"
|
#include "nx_tzdb/arctic.h"
|
||||||
#include "nx_tzdb/asia.h"
|
#include "nx_tzdb/asia.h"
|
||||||
#include "nx_tzdb/atlantic.h"
|
#include "nx_tzdb/atlantic.h"
|
||||||
|
|
|
@ -53,6 +53,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
<activity
|
<activity
|
||||||
android:name="org.yuzu.yuzu_emu.activities.EmulationActivity"
|
android:name="org.yuzu.yuzu_emu.activities.EmulationActivity"
|
||||||
android:theme="@style/Theme.Yuzu.Main"
|
android:theme="@style/Theme.Yuzu.Main"
|
||||||
|
android:screenOrientation="userLandscape"
|
||||||
android:supportsPictureInPicture="true"
|
android:supportsPictureInPicture="true"
|
||||||
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode"
|
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
|
|
|
@ -85,20 +85,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
onReturnFromSettings = context.activityResultRegistry.register(
|
onReturnFromSettings = context.activityResultRegistry.register(
|
||||||
"SettingsResult",
|
"SettingsResult",
|
||||||
ActivityResultContracts.StartActivityForResult()
|
ActivityResultContracts.StartActivityForResult()
|
||||||
) {
|
) { updateScreenLayout() }
|
||||||
binding.surfaceEmulation.setAspectRatio(
|
|
||||||
when (IntSetting.RENDERER_ASPECT_RATIO.int) {
|
|
||||||
0 -> Rational(16, 9)
|
|
||||||
1 -> Rational(4, 3)
|
|
||||||
2 -> Rational(21, 9)
|
|
||||||
3 -> Rational(16, 10)
|
|
||||||
4 -> null // Stretch
|
|
||||||
else -> Rational(16, 9)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
emulationActivity?.buildPictureInPictureParams()
|
|
||||||
updateScreenLayout()
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
throw IllegalStateException("EmulationFragment must have EmulationActivity parent")
|
throw IllegalStateException("EmulationFragment must have EmulationActivity parent")
|
||||||
}
|
}
|
||||||
|
@ -242,17 +229,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
DirectoryInitialization.start(requireContext())
|
DirectoryInitialization.start(requireContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.surfaceEmulation.setAspectRatio(
|
|
||||||
when (IntSetting.RENDERER_ASPECT_RATIO.int) {
|
|
||||||
0 -> Rational(16, 9)
|
|
||||||
1 -> Rational(4, 3)
|
|
||||||
2 -> Rational(21, 9)
|
|
||||||
3 -> Rational(16, 10)
|
|
||||||
4 -> null // Stretch
|
|
||||||
else -> Rational(16, 9)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
updateScreenLayout()
|
updateScreenLayout()
|
||||||
|
|
||||||
emulationState.run(emulationActivity!!.isActivityRecreated)
|
emulationState.run(emulationActivity!!.isActivityRecreated)
|
||||||
|
@ -315,7 +291,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SourceLockedOrientationActivity")
|
@SuppressLint("SourceLockedOrientationActivity")
|
||||||
private fun updateScreenLayout() {
|
private fun updateOrientation() {
|
||||||
emulationActivity?.let {
|
emulationActivity?.let {
|
||||||
it.requestedOrientation = when (IntSetting.RENDERER_SCREEN_LAYOUT.int) {
|
it.requestedOrientation = when (IntSetting.RENDERER_SCREEN_LAYOUT.int) {
|
||||||
Settings.LayoutOption_MobileLandscape ->
|
Settings.LayoutOption_MobileLandscape ->
|
||||||
|
@ -326,7 +302,21 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
else -> ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE
|
else -> ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onConfigurationChanged(resources.configuration)
|
}
|
||||||
|
|
||||||
|
private fun updateScreenLayout() {
|
||||||
|
binding.surfaceEmulation.setAspectRatio(
|
||||||
|
when (IntSetting.RENDERER_ASPECT_RATIO.int) {
|
||||||
|
0 -> Rational(16, 9)
|
||||||
|
1 -> Rational(4, 3)
|
||||||
|
2 -> Rational(21, 9)
|
||||||
|
3 -> Rational(16, 10)
|
||||||
|
4 -> null // Stretch
|
||||||
|
else -> Rational(16, 9)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
emulationActivity?.buildPictureInPictureParams()
|
||||||
|
updateOrientation()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateFoldableLayout(
|
private fun updateFoldableLayout(
|
||||||
|
@ -359,7 +349,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
binding.overlayContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
|
binding.overlayContainer.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
binding.inGameMenu.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
|
binding.inGameMenu.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
isInFoldableLayout = false
|
isInFoldableLayout = false
|
||||||
updateScreenLayout()
|
updateOrientation()
|
||||||
|
onConfigurationChanged(resources.configuration)
|
||||||
}
|
}
|
||||||
binding.emulationContainer.requestLayout()
|
binding.emulationContainer.requestLayout()
|
||||||
binding.inputContainer.requestLayout()
|
binding.inputContainer.requestLayout()
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace FileSys::SystemArchive {
|
||||||
const static std::map<std::string, const std::map<const char*, const std::vector<u8>>&>
|
const static std::map<std::string, const std::map<const char*, const std::vector<u8>>&>
|
||||||
tzdb_zoneinfo_dirs = {{"Africa", NxTzdb::africa},
|
tzdb_zoneinfo_dirs = {{"Africa", NxTzdb::africa},
|
||||||
{"America", NxTzdb::america},
|
{"America", NxTzdb::america},
|
||||||
{"Antartica", NxTzdb::antartica},
|
{"Antarctica", NxTzdb::antarctica},
|
||||||
{"Arctic", NxTzdb::arctic},
|
{"Arctic", NxTzdb::arctic},
|
||||||
{"Asia", NxTzdb::asia},
|
{"Asia", NxTzdb::asia},
|
||||||
{"Atlantic", NxTzdb::atlantic},
|
{"Atlantic", NxTzdb::atlantic},
|
||||||
|
|
|
@ -849,8 +849,9 @@ static Result CreateCalendarTime(s64 time, int gmt_offset, CalendarTimeInternal&
|
||||||
static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
|
static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
|
||||||
CalendarTimeInternal& calendar_time,
|
CalendarTimeInternal& calendar_time,
|
||||||
CalendarAdditionalInfo& calendar_additional_info) {
|
CalendarAdditionalInfo& calendar_additional_info) {
|
||||||
if ((rules.go_ahead && time < rules.ats[0]) ||
|
ASSERT(rules.go_ahead ? rules.time_count > 0 : true);
|
||||||
(rules.go_back && time > rules.ats[rules.time_count - 1])) {
|
if ((rules.go_back && time < rules.ats[0]) ||
|
||||||
|
(rules.go_ahead && time > rules.ats[rules.time_count - 1])) {
|
||||||
s64 seconds{};
|
s64 seconds{};
|
||||||
if (time < rules.ats[0]) {
|
if (time < rules.ats[0]) {
|
||||||
seconds = rules.ats[0] - time;
|
seconds = rules.ats[0] - time;
|
||||||
|
|
Loading…
Reference in a new issue