mirror of
https://github.com/Ultra-NX/UltraNX.git
synced 2025-05-22 12:13:14 +00:00
Ultra 2.4|R1.1
This commit is contained in:
parent
bf48033941
commit
d0b97525a8
@ -78,6 +78,7 @@
|
||||
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Программа для сброса контроллера батареи. Не используйте просто так!
|
||||
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU.
|
||||
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Бенчмарк и Тестер памяти. Результат сильно зависит от разгона CPU. Старая версия, которая многим нравится больше новой.
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Бенчмарк. Результат сильно зависит от разгона CPU. Версия из Чифира которая в реальном времени тестирует CPU Copy, что позволяет быстро узнать результат после изменения таймингов.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Форк Status Monitor для UltraNX, поддерживает много пресетов Micro-оверлея, и обладает рядом уникальных фишек.
|
||||
|
@ -74,6 +74,7 @@
|
||||
* [Battery Desync Fix](https://github.com/CTCaer/battery_desync_fix_nx) - Program to reset the battery controller. Do not use unnecessarily!
|
||||
* [MemToolkitNX](https://discord.com/channels/854839758815363072/1173171845139288114/1324099100202766408) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking.
|
||||
* [MemToolkitNX OLD](https://discord.com/channels/854839758815363072/1173171845139288114/1276196700750479480) - Benchmark and Memory Tester. The result is highly dependent on CPU overclocking. The old version, which many people like better than the new one.
|
||||
* [MicroMemBench](https://github.com/rashevskyv/4IFIR) - Benchmark. The result is highly dependent on CPU overclocking. A version from 4ifir that tests CPU Copy in real time, which allows you to quickly find out the result after changing timings.
|
||||
|
||||
* Overlays:
|
||||
* [Status Monitor Ultra](https://github.com/Ultra-NX/Status-Monitor-Overlay) - Status Monitor fork for UltraNX, supports many Micro-overlay presets, and has a number of unique features.
|
||||
|
@ -0,0 +1,22 @@
|
||||
# Gal*Gun Returns 1.0.4
|
||||
# BID: 7E65E5BC3564BE46
|
||||
# Buffers are hardcoded into fixed size class, so it's hard to get triple buffer
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# FPS Target + FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x16CE8A8, 0x20]
|
||||
value_type: float
|
||||
value: "60 / FPS_TARGET"
|
||||
# Lipsync fix
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1BA0A1C]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,36 @@
|
||||
# Tiebreak+: Official Game of the ATP and WTA 1.1.0
|
||||
# BID: 2A5244CCB17B44AC
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Triple buffer
|
||||
# REF: 00 40 00 00 00 04 00 00 00 88 00 00 02 00 00 00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1A81E6C
|
||||
value_type: uint32
|
||||
value: 3
|
||||
# Redirect Dynamic Resolution target reading to MAIN + 0x30C2F00
|
||||
# REF: 0C 9A 88 52 0C 6B A7 72
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x147AA94
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0x9000E248 # ADRP X8, 0x30C2000
|
||||
- 0xBD4F0103 # LDR S3, [X8, 0xF00]
|
||||
- 0xD503201F # NOP
|
||||
## Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x30C2F00
|
||||
value_type: float
|
||||
value: 0.03333333333
|
||||
ALL_FPS:
|
||||
# Adjust Dynamic Resolution target, we are using this trick because function is overengineered and it's not easy to just use standard 1 / FPS_TARGET
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x30C2F00]
|
||||
value_type: float
|
||||
value: "0.8 / FPS_TARGET"
|
@ -0,0 +1,27 @@
|
||||
# Goat Simulator 3 1.0.7.7
|
||||
# BID: 504EBEAB62E802AD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x99DC468, 0]
|
||||
value_type: float
|
||||
value: ["0.81 * FRAMETIME_TARGET", "0.81 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x9A02290, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x920CBF8, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Gal*Gun 2 1.0.4
|
||||
# BID: 9CDFB0CD24CAE030
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4346990, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x44E6DA8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# Disable custom FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x44E6030, 0x764]
|
||||
value_type: float
|
||||
value: 0
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# The Bridge Curse 2: The Extrication 1.0.1
|
||||
# BID: B7F344920B6D140E
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x5DB8968, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x65B48B8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# Star Overdrive 1.0.6
|
||||
# BID: 728D92CB9E54CE7A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x674C6E8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget (1000/FPS) cutted to 2 decimals
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77322F0, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x776C850, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,75 @@
|
||||
# WARRIORS: Abyss 1.3.0
|
||||
# BID: 71C5F3CB333F1542
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# REF: 09 49 A8 52 21 01 27 1E 00 20 21 1E
|
||||
# Use FPS Target instead of vsync value for Dynamic Resolution max delta
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D24D0
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0004841 # ADRP X1, 0xFDB000
|
||||
- 0xBD4E0021 # LDR S1, [X1, 0xE00]
|
||||
# Redirect DR Targets to MAIN+0x1477F00
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D2574
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0006D29 # ADRP X9, 0x1477000
|
||||
- 0xBD4F0121 # LDR S1, [X9, 0xF00]
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x6D2584
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xB0006D29 # ADRP X9, 0x1477000
|
||||
- 0xBD4F0521 # LDR S1, [X9, 0xF04]
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x1477F00
|
||||
value_type: float
|
||||
value: [50, 40]
|
||||
ALL_FPS:
|
||||
# REF: 00 00 F0 42 78 00 00 00 00 00 F0 42 04 00 00 00
|
||||
# FPS Lock
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE0C]
|
||||
value_type: uint32
|
||||
value: "120 / FPS_LOCK_TARGET"
|
||||
# Prevent from setting it as 0, otherwise game crashes
|
||||
-
|
||||
type: evaluate_compare
|
||||
compare_address: [MAIN, 0xFDBE0C]
|
||||
compare_type: "=="
|
||||
compare_value_type: uint32
|
||||
compare_value: 0
|
||||
address: [MAIN, 0xFDBE0C]
|
||||
value_type: uint32
|
||||
value: 1
|
||||
# Others
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE00]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE04]
|
||||
value_type: uint32
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xFDBE08]
|
||||
value_type: float
|
||||
value: "FPS_TARGET"
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x1477F00]
|
||||
value_type: float
|
||||
value: ["1.5 * FRAMETIME_TARGET", "1.2 * FRAMETIME_TARGET"]
|
@ -0,0 +1,24 @@
|
||||
# Sword of the Necromancer: Resurrection 1.0.5
|
||||
# BID: FFF55266A618D06A
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x758CE00, 0]
|
||||
value_type: float
|
||||
value: ["0.9 * FRAMETIME_TARGET", "0.9 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x75C1298, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6DE8CB8, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
@ -0,0 +1,21 @@
|
||||
# The Bridge Curse - Road to Salvation 1.6.0.1
|
||||
# BID: F54FC539CAF24C64
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6560E98, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x6D5D3B8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# MotoGP 25 1.0.1
|
||||
# BID: 72D353380DD03B52
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA033518, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA06EDD0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x904FC00, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,21 @@
|
||||
# Grounded 1.13
|
||||
# BID: B46B22D9AC7E567B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E50418, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 1)", "TruncDec(FRAMETIME_TARGET, 1)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x8E76560, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,27 @@
|
||||
# ぎゃる☆がん2 1.0.4
|
||||
# BID: 62B7F19804BCB70E
|
||||
|
||||
unsafeCheck: false
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x4346990, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x44E6DA8, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# Disable custom FPS Lock
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x44E6030, 0x764]
|
||||
value_type: float
|
||||
value: 0
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,12 @@
|
||||
# DAVE THE DIVER 1.0.4.1039
|
||||
# BID: 0E7A0A7276477C53
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# UnityEngine.Time::fixedDeltaTime
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x98DE640, 0x48]
|
||||
value_type: float
|
||||
value: "1 / FPS_TARGET"
|
@ -1,4 +1,4 @@
|
||||
# Nikoderiko: The Magical World 1.0.3
|
||||
# Nikoderiko: The Magical World 1.0.3/1.0.4
|
||||
# BID: 1218D04A7C77F2DA
|
||||
|
||||
unsafeCheck: true
|
||||
|
@ -0,0 +1,80 @@
|
||||
# Another Crab's Treasure 1.1.100.2
|
||||
# BID: 693314C08EA157F3
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
MASTER_WRITE:
|
||||
# Redirect updating various deltas to read frametime target from UnityEngine.Application::targetFrameRate, REF: 08 10 91 52 08 A1 A7 72
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x18AE7B8
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001ED48 # adrp x8, 0x5659000
|
||||
- 0xB9406908 # ldr w8, [x8, #0x68]
|
||||
- 0x1E230101 # ucvtf s1, w8
|
||||
- 0x1E2E1000 # fmov s0, #1.00000000
|
||||
- 0x1E211800 # fdiv s0, s0, s1
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x18B2570
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xF001ED28 # adrp x8, 0x5659000
|
||||
- 0xB9406908 # ldr w8, [x8, #0x68]
|
||||
- 0x1E230101 # ucvtf s1, w8
|
||||
- 0x1E2E1000 # fmov s0, #1.00000000
|
||||
- 0x1E211800 # fdiv s0, s0, s1
|
||||
# Redirect Dynamic Resolution GPU Timing target in DynamicResolutionScaler::Update to MAIN+0x5ACEF08
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x389C824
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD0011188 # adrp x8, #0x5ACE000
|
||||
- 0xF9478508 # ldr x8, [x8, #0xf08]
|
||||
- 0xD503201F # nop
|
||||
- 0xD503201F # nop
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x389C8A4
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD0011188 # adrp x8, #0x5ACE000
|
||||
- 0xF9478508 # ldr x8, [x8, #0xf08]
|
||||
- 0xBD402A60 # ldr s0, [x19, #0x28]
|
||||
- 0xD503201F # nop
|
||||
- 0xD503201F # nop
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x389C918
|
||||
value_type: uint32
|
||||
value:
|
||||
- 0xD0011188 # adrp x8, #0x5ACE000
|
||||
- 0xF9478508 # ldr x8, [x8, #0xf08]
|
||||
- 0xD503201F # nop
|
||||
- 0xD503201F # nop
|
||||
# Default values
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5659068
|
||||
value_type: uint32
|
||||
value: 30
|
||||
-
|
||||
type: bytes
|
||||
main_offset: 0x5ACEF08
|
||||
value_type: double
|
||||
value: 28.57142857142857
|
||||
ALL_FPS:
|
||||
# UnityEngine.Application::targetFrameRate
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5659068]
|
||||
value_type: uint32
|
||||
value: FPS_TARGET
|
||||
# GPU Timing Target
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x5ACEF08]
|
||||
value_type: double
|
||||
value: "1000 / (FPS_TARGET + 5)"
|
@ -0,0 +1,27 @@
|
||||
# High On Life 1.0.3
|
||||
# BID: 950FB0C3D58D6A7B
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x6BA6D78, 0]
|
||||
value_type: int32
|
||||
value: [0, 0]
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x77560C8, 0]
|
||||
value_type: float
|
||||
value: ["0.93 * FRAMETIME_TARGET", "0.93 * FRAMETIME_TARGET"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x7784130, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
@ -0,0 +1,14 @@
|
||||
# Card-en-Ciel 1.5.3
|
||||
# BID: C9D5E4BE40E7EB66
|
||||
# Buffers are hardcoded line by line and put into fixed size heap allocation, so getting triple buffer requires effort
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# Internal FPS Lock
|
||||
# REF: look at nn::os::SleepThread() called in nnMain()
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0x21D8248, 0x5C]
|
||||
value_type: float
|
||||
value: 1 / FPS_LOCK_TARGET
|
@ -0,0 +1,27 @@
|
||||
# Hogwarts Legacy 1.0.5
|
||||
# BID: 0C00FC37B0610FBD
|
||||
|
||||
unsafeCheck: true
|
||||
|
||||
ALL_FPS:
|
||||
# r.DynamicRes.FrameTimeBudget
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA42C688, 0]
|
||||
value_type: float
|
||||
value: ["TruncDec(FRAMETIME_TARGET, 2)", "TruncDec(FRAMETIME_TARGET, 2)"]
|
||||
# t.MaxFPS
|
||||
-
|
||||
type: evaluate_write
|
||||
address: [MAIN, 0xA4603A0, 0]
|
||||
value_type: float
|
||||
value: [FPS_LOCK_TARGET, FPS_LOCK_TARGET]
|
||||
# r.VSync
|
||||
-
|
||||
type: write
|
||||
address: [MAIN, 0x9C0EED0, 0]
|
||||
value_type: uint32
|
||||
value: [0, 0]
|
||||
-
|
||||
type: block
|
||||
what: timing
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,9 +1,10 @@
|
||||
/atmosphere/config/
|
||||
/atmosphere/config/system_settings.ini
|
||||
/bootloader/hekate_ipl.ini
|
||||
/bootloader/nyx.ini
|
||||
/config/sys-clk/
|
||||
/config/status-monitor/
|
||||
/config/tesla/
|
||||
/config/sys-clk/config.ini
|
||||
/config/status-monitor/config.ini
|
||||
/config/tesla/config.ini
|
||||
/config/sphaira/config.ini
|
||||
/config/ultrahand/config.ini
|
||||
/config/ultrahand/theme.ini
|
||||
/config/ultrahand/overlays.ini
|
||||
|
4
config/sphaira/config.ini
Normal file
4
config/sphaira/config.ini
Normal file
@ -0,0 +1,4 @@
|
||||
[config]
|
||||
theme=romfs:/themes/oled_black_theme.ini
|
||||
[paths]
|
||||
last_launch_path=
|
BIN
hbmenu.nro
BIN
hbmenu.nro
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user