Compare commits

..

51 commits

Author SHA1 Message Date
crueter
4ddfc941fb
Fix build script
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-28 16:47:52 -04:00
lizzie
caa3fe2e2a AAAAAA 2026-03-28 06:17:58 +00:00
crueter
9a59aee254 Build fixes
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-28 06:17:58 +00:00
lizzie
b62c912212 add basic ios shit 2026-03-28 06:17:58 +00:00
crueter
5fd1630a38 Revert stbi
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-28 06:17:58 +00:00
crueter
42328676a2 fix libs
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-28 06:17:58 +00:00
crueter
c1917703a9 Fix most build errors
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-28 06:17:58 +00:00
crueter
45da861dd2 Update CPMUtil, and fix script
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-28 06:17:58 +00:00
lizzie
1840605a49 DISABLE BY DEFAULT ON IOS FFS 2026-03-28 06:17:58 +00:00
lizzie
9cfc378215 fix life 2026-03-28 06:17:58 +00:00
lizzie
e8025b31ae fix sirit i think, add ios-aarch64 2026-03-28 06:17:58 +00:00
lizzie
db41b1321d changes? 2026-03-28 06:17:58 +00:00
lizzie
e9f84ac087 fix shit? 2026-03-28 06:17:58 +00:00
lizzie
6342fd6bd5 fix #include "common/logging.h" 2026-03-28 06:17:58 +00:00
lizzie
c1d3d14800 fix IOS again fucking objc bridge 2026-03-28 06:17:58 +00:00
lizzie
ec6e599136 fix? 2026-03-28 06:17:58 +00:00
lizzie
3c93792e99 properly use bridging header, fix headers 2026-03-28 06:17:58 +00:00
lizzie
e44e5e58cc fix swift driver I HOPE 2026-03-28 06:17:58 +00:00
lizzie
90b37c76fb license 2026-03-28 06:17:58 +00:00
lizzie
7712e9aa4a [temporary c++ shit] 2026-03-28 06:17:58 +00:00
lizzie
f63fca5f23 bit of cmake fuckery 2026-03-28 06:17:58 +00:00
lizzie
f6363b39e0 use language generator exprs 2026-03-28 06:17:58 +00:00
lizzie
dc9ea22686 $<$<COMPILE_LANGUAGE:C,CXX>:-Werror=missing-declarations> 2026-03-28 06:17:58 +00:00
lizzie
4a6a4a34a2 proper linkings?! 2026-03-28 06:17:58 +00:00
lizzie
5a71f870c6 bridge changes/fixes 2026-03-28 06:17:58 +00:00
lizzie
ed78c78728 fix license 2026-03-28 06:17:58 +00:00
lizzie
5e20e573a3 fix xcode 2? 2026-03-28 06:17:58 +00:00
lizzie
969592a957 fix xcode paths? 2026-03-28 06:17:58 +00:00
lizzie
975bca2dc4 fx 2026-03-28 06:17:58 +00:00
lizzie
f56b6d1ee5 fx 2026-03-28 06:17:57 +00:00
lizzie
21823cb81a fix boost 2026-03-28 06:17:57 +00:00
lizzie
02ba793ddc fx 2026-03-28 06:17:57 +00:00
lizzie
971cdc4a52 fix stuff 2026-03-28 06:17:57 +00:00
lizzie
9830fe1fc9 stupid macos 2026-03-28 06:17:57 +00:00
lizzie
f05c3f4e06 fix1 2026-03-28 06:17:57 +00:00
lizzie
bfa94a425f fx 2026-03-28 06:17:57 +00:00
lizzie
b7b6afea1f fix spirv-tools 2026-03-28 06:17:57 +00:00
lizzie
44716c077a fixes for ios spirv tools 2026-03-28 06:17:57 +00:00
lizzie
509e9c345c fix license 2026-03-28 06:17:57 +00:00
lizzie
4a97293c9c fix ffmpeg 2026-03-28 06:17:57 +00:00
lizzie
a9dc13c26b fx 2026-03-28 06:17:57 +00:00
lizzie
12ea79f211 fx 2026-03-28 06:17:57 +00:00
lizzie
995c316eab license 2026-03-28 06:17:57 +00:00
lizzie
1ea272ad2c ios toolchain cmake 2026-03-28 06:17:57 +00:00
lizzie
8345b15e7d license 2026-03-28 06:17:57 +00:00
lizzie
ec461bd814 license headers 2026-03-28 06:17:57 +00:00
lizzie
675e359bd5 flatten + cmake 2026-03-28 06:17:57 +00:00
lizzie
a42e25d940 flatten 2026-03-28 06:17:57 +00:00
lizzie
0ec1372d3d loicense 2026-03-28 06:17:57 +00:00
lizzie
e67e59b940 modernize #1 2026-03-28 06:17:57 +00:00
lizzie
f5fb0140f9 sudachi ios stuff 2026-03-28 06:17:57 +00:00
12 changed files with 85 additions and 24 deletions

View file

@ -473,6 +473,8 @@
<string name="renderer_accuracy_description">يتحكم في وضع محاكاة وحدة معالجة الرسومات. تعمل معظم الألعاب بشكل جيد مع وضعي سريع أو متوازن، لكن الوضع الدقيق لا يزال مطلوبًا لبعض الألعاب. تميل الجسيمات إلى العرض بشكل صحيح فقط عند استخدام الوضع الدقيق.</string>
<string name="dma_accuracy">دقة DMA</string>
<string name="dma_accuracy_description">يتحكم في دقة DMA. يمكن أن تؤدي الدقة الآمنة إلى حل المشكلات في بعض الألعاب، ولكنها قد تؤثر أيضًا على الأداء في بعض الحالات. إذا لم تكن متأكدًا، فاترك هذا الخيار على الإعداد الافتراضي.</string>
<string name="frame_pacing_mode">وضع توقيت الإطارات</string>
<string name="frame_pacing_mode_description">يتحكم في كيفية إدارة المحاكي لسرعة الإطارات لتقليل التقطع وجعل معدل الإطارات أكثر سلاسة واتساقًا.</string>
<string name="anisotropic_filtering">تصفية متباينة الخواص</string>
<string name="anisotropic_filtering_description">يحسن جودة الأنسجة عند عرضها بزوايا مائلة</string>
<string name="vram_usage_mode">وضع استخدام ذاكرة VRAM</string>
@ -997,6 +999,13 @@
<string name="dma_accuracy_unsafe">غير آمن</string>
<string name="dma_accuracy_safe">آمن</string>
<!-- Frame Pacing Mode -->
<string name="frame_pacing_mode_target_Auto">تلقائي</string>
<string name="frame_pacing_mode_target_30">30 إطارًا في الثانية</string>
<string name="frame_pacing_mode_target_60">60 إطارًا في الثانية</string>
<string name="frame_pacing_mode_target_90">90 إطارًا في الثانية</string>
<string name="frame_pacing_mode_target_120">120 إطارًا في الثانية</string>
<!-- ASTC Recompression Method Choices -->
<string name="astc_recompression_uncompressed">غير مضغوط</string>
<!-- ASTC Recompression Method Choices -->

View file

@ -452,6 +452,8 @@
<string name="renderer_accuracy_description">Určuje režim emulovaného GPU. Většina her běží bez problémů v rychlém, nebo vyváženém režimu, ale některé stále vyžadují přesný režim. Částicové efekty se většinou zobrazují korektně pouze v přesném režimu. </string>
<string name="dma_accuracy">Přesnost DMA</string>
<string name="dma_accuracy_description">Ovládá přesnost DMA. Bezpečná přesnost může vyřešit problémy v některých hrách, ale v některých případech může také ovlivnit výkon. Pokud si nejste jisti, použijte výchozí nastavení.</string>
<string name="frame_pacing_mode">Režim Framepacingu</string>
<string name="frame_pacing_mode_description">Řídí způsob jakým emulátor spravuje časování snímku aby snížil trhání a zlepšení plynulost a stabilitu snímkové frekvence.</string>
<string name="anisotropic_filtering">Anizotropní filtrování</string>
<string name="anisotropic_filtering_description">Zlepšuje kvalitu textur při pohledu pod úhlem</string>
<string name="vram_usage_mode">Režim využití VRAM</string>

View file

@ -467,6 +467,8 @@
<string name="renderer_accuracy_description">Controla el modo de la emulación de la GPU. La mayoría de los juegos se renderizan correctamente en los modos Rápido o Equilibrado, pero algunos requieren Preciso. Las partículas tienden a renderizarse correctamente solo con el modo Preciso.</string>
<string name="dma_accuracy">Precisión de DMA</string>
<string name="dma_accuracy_description">Controla la precisión de DMA. La precisión segura puede solucionar problemas en algunos juegos, pero también puede afectar al rendimiento en algunos casos. Si no está seguro, déjelo en Predeterminado.</string>
<string name="frame_pacing_mode">Modo de ritmo de fotogramas</string>
<string name="frame_pacing_mode_description">Controla cómo el emulador gestiona el ritmo de los fotogramas para reducir los tirones y hacer que la velocidad de los fotogramas sea más suave y consistente.</string>
<string name="anisotropic_filtering">Filtrado anisotrópico</string>
<string name="anisotropic_filtering_description">Mejora la calidad de las texturas al ser observadas desde ángulos oblicuos</string>
<string name="vram_usage_mode">Modo de uso de VRAM</string>
@ -991,6 +993,13 @@
<string name="dma_accuracy_unsafe">Inseguro</string>
<string name="dma_accuracy_safe">Seguro</string>
<!-- Frame Pacing Mode -->
<string name="frame_pacing_mode_target_Auto">Automático</string>
<string name="frame_pacing_mode_target_30">30 FPS</string>
<string name="frame_pacing_mode_target_60">60 FPS</string>
<string name="frame_pacing_mode_target_90">90 FPS</string>
<string name="frame_pacing_mode_target_120">120 FPS</string>
<!-- ASTC Recompression Method Choices -->
<string name="astc_recompression_uncompressed">Sin compresión</string>
<!-- ASTC Recompression Method Choices -->

View file

@ -468,6 +468,8 @@
<string name="renderer_accuracy_description">Управляет режимом эмуляции графического процессора. Большинство игр нормально отображаются в режимах «Быстрый» или «Сбалансированный», но для некоторых требуется режим «Точный». Частицы обычно корректно отображаются только в режиме «Точный».</string>
<string name="dma_accuracy">Точность DMA</string>
<string name="dma_accuracy_description">Управляет точностью DMA. Безопасная точность может исправить проблемы в некоторых играх, но в некоторых случаях также может повлиять на производительность. Если не уверены, оставьте значение По умолчанию.</string>
<string name="frame_pacing_mode">Режим синхронизации кадров</string>
<string name="frame_pacing_mode_description">Управляет синхронизацией кадров в эмуляторе для уменьшения рывков и обеспечения более плавной и стабильной частоты кадров.</string>
<string name="anisotropic_filtering">Анизотропная фильтрация</string>
<string name="anisotropic_filtering_description">Улучшает качество текстур под углом</string>
<string name="vram_usage_mode">Режим VRAM</string>
@ -992,6 +994,13 @@
<string name="dma_accuracy_unsafe">Небезопасно</string>
<string name="dma_accuracy_safe">Безопасный</string>
<!-- Frame Pacing Mode -->
<string name="frame_pacing_mode_target_Auto">Авто</string>
<string name="frame_pacing_mode_target_30">30 FPS</string>
<string name="frame_pacing_mode_target_60">60 FPS</string>
<string name="frame_pacing_mode_target_90">90 FPS</string>
<string name="frame_pacing_mode_target_120">120 FPS</string>
<!-- ASTC Recompression Method Choices -->
<string name="astc_recompression_uncompressed">Без сжатия</string>
<!-- ASTC Recompression Method Choices -->

View file

@ -469,6 +469,8 @@
<string name="renderer_accuracy_description">Керує режимом емуляції ГП. Більшість ігор добре візуалізуються з режимами «Швидко» або «Збалансовано», але деякі ігри можуть потребувати режиму «Точно». Частинки зазвичай правильно візуалізуються лише з режимом «Точно».</string>
<string name="dma_accuracy">Точність DMA</string>
<string name="dma_accuracy_description">Керує точністю DMA. Безпечна точність може виправити проблеми в деяких іграх, але в деяких випадках також може вплинути на продуктивність. Якщо не впевнені, залиште це значення за замовчуванням.</string>
<string name="frame_pacing_mode">Режим виведення кадрів</string>
<string name="frame_pacing_mode_description">Керує тим, як емулятор виконує виведення кадрів, щоб зменшити затримки й забезпечити плавнішу й стабільнішу частоту кадрів.</string>
<string name="anisotropic_filtering">Анізотропне фільтрування</string>
<string name="anisotropic_filtering_description">Покращує якість текстур під кутом.</string>
<string name="vram_usage_mode">Режим використання VRAM</string>
@ -993,6 +995,13 @@
<string name="dma_accuracy_unsafe">Небезпечно</string>
<string name="dma_accuracy_safe">Безпечно</string>
<!-- Frame Pacing Mode -->
<string name="frame_pacing_mode_target_Auto">Автоматично</string>
<string name="frame_pacing_mode_target_30">30 к/с</string>
<string name="frame_pacing_mode_target_60">60 к/с</string>
<string name="frame_pacing_mode_target_90">90 к/с</string>
<string name="frame_pacing_mode_target_120">120 к/с</string>
<!-- ASTC Recompression Method Choices -->
<string name="astc_recompression_uncompressed">Без стиснення</string>
<!-- ASTC Recompression Method Choices -->

View file

@ -462,6 +462,8 @@
<string name="renderer_accuracy_description">控制 GPU 模拟的精确度。大部分游戏在性能或平衡模式下可以正常渲染,但部分游戏需要设置为精确。粒子效果通常只有在精确模式下才能正确显示。</string>
<string name="dma_accuracy">DMA 精度</string>
<string name="dma_accuracy_description">控制 DMA 精度。安全精度可以修复某些游戏中的问题,但在某些情况下也可能影响性能。如果不确定,请保留为“默认”。</string>
<string name="frame_pacing_mode">帧同步模式</string>
<string name="frame_pacing_mode_description">控制模拟器如何管理帧同步,以减少卡顿,使帧率表现更加平稳顺滑。</string>
<string name="anisotropic_filtering">各向异性过滤</string>
<string name="anisotropic_filtering_description">提高斜角的纹理质量</string>
<string name="vram_usage_mode">显存使用模式</string>
@ -986,6 +988,13 @@
<string name="dma_accuracy_unsafe">不安全</string>
<string name="dma_accuracy_safe">安全</string>
<!-- Frame Pacing Mode -->
<string name="frame_pacing_mode_target_Auto">自动</string>
<string name="frame_pacing_mode_target_30">30 FPS</string>
<string name="frame_pacing_mode_target_60">60 FPS</string>
<string name="frame_pacing_mode_target_90">90 FPS</string>
<string name="frame_pacing_mode_target_120">120 FPS</string>
<!-- ASTC Recompression Method Choices -->
<string name="astc_recompression_uncompressed">不压缩</string>
<!-- ASTC Recompression Method Choices -->

View file

@ -533,6 +533,20 @@
<item>2</item>
</integer-array>
<string-array name="framePacingModeNames">
<item>@string/frame_pacing_mode_target_Auto</item>
<item>@string/frame_pacing_mode_target_30</item>
<item>@string/frame_pacing_mode_target_60</item>
<item>@string/frame_pacing_mode_target_90</item>
<item>@string/frame_pacing_mode_target_120</item>
</string-array>
<integer-array name="framePacingModeValues">
<item>0</item>
<item>1</item>
<item>2</item>
<item>3</item>
<item>4</item>
</integer-array>
<string-array name="appletEntries">
<item>@string/applet_hle</item>

View file

@ -479,6 +479,8 @@
<string name="renderer_accuracy_description">Controls the GPU emulation mode. Most games render fine with Fast or Balanced modes, but Accurate is still required for some. Particles tend to only render correctly with Accurate mode.</string>
<string name="dma_accuracy">DMA Accuracy</string>
<string name="dma_accuracy_description">Controls the DMA precision accuracy. Safe precision can fix issues in some games, but it can also impact performance in some cases. If unsure, leave this on Default.</string>
<string name="frame_pacing_mode">Frame Pacing Mode</string>
<string name="frame_pacing_mode_description">Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent.</string>
<string name="anisotropic_filtering">Anisotropic filtering</string>
<string name="anisotropic_filtering_description">Improves the quality of textures when viewed at oblique angles</string>
<string name="vram_usage_mode">VRAM Usage Mode</string>
@ -1036,6 +1038,13 @@
<string name="dma_accuracy_unsafe">Unsafe</string>
<string name="dma_accuracy_safe">Safe</string>
<!-- Frame Pacing Mode -->
<string name="frame_pacing_mode_target_Auto">Auto</string>
<string name="frame_pacing_mode_target_30">30 FPS</string>
<string name="frame_pacing_mode_target_60">60 FPS</string>
<string name="frame_pacing_mode_target_90">90 FPS</string>
<string name="frame_pacing_mode_target_120">120 FPS</string>
<!-- ASTC Decoding Method Choices -->
<string name="accelerate_astc_cpu" translatable="false">CPU</string>
<string name="accelerate_astc_gpu" translatable="false">GPU</string>

View file

@ -773,11 +773,7 @@ std::optional<u64> MatchAndExecuteOneInstruction(Core::Memory::Memory& memory, m
bool was_executed = false;
auto decoder = Dynarmic::A64::Decode<VisitorBase>(instruction);
if (decoder) {
was_executed = decoder->get().call(visitor, instruction);
} else {
was_executed = false;
}
was_executed = decoder.get().call(visitor, instruction);
return was_executed ? std::optional<u64>(pc + 4) : std::nullopt;
}

View file

@ -70,15 +70,14 @@ constexpr DecodeTable<V> GetDecodeTable() {
/// In practice it must always suceed, otherwise something else unrelated would have gone awry
template<typename V>
std::optional<std::reference_wrapper<const Matcher<V>>> Decode(u32 instruction) {
std::reference_wrapper<const Matcher<V>> Decode(u32 instruction) {
alignas(64) static const auto table = GetDecodeTable<V>();
const auto& subtable = table[detail::ToFastLookupIndex(instruction)];
auto iter = std::find_if(subtable.begin(), subtable.end(), [instruction](const auto& matcher) {
return matcher.Matches(instruction);
});
return iter != subtable.end()
? std::optional{ std::reference_wrapper<const Matcher<V>>(*iter) }
: std::nullopt;
DEBUG_ASSERT(iter != subtable.end());
return std::reference_wrapper<const Matcher<V>>(*iter);
}
template<typename V>

View file

@ -25,11 +25,7 @@ void Translate(IR::Block& block, LocationDescriptor descriptor, MemoryReadCodeFu
const u64 pc = visitor.ir.current_location->PC();
if (const auto instruction = memory_read_code(pc)) {
auto decoder = Decode<TranslatorVisitor>(*instruction);
if (decoder) {
should_continue = decoder->get().call(visitor, *instruction);
} else {
should_continue = visitor.RaiseException(Exception::UnallocatedEncoding);
}
should_continue = decoder.get().call(visitor, *instruction);
} else {
should_continue = visitor.RaiseException(Exception::NoExecuteFault);
}
@ -49,15 +45,13 @@ bool TranslateSingleInstruction(IR::Block& block, LocationDescriptor descriptor,
bool should_continue = true;
auto const decoder = Decode<TranslatorVisitor>(instruction);
if (decoder) {
should_continue = decoder->get().call(visitor, instruction);
} else {
should_continue = false;
}
should_continue = decoder.get().call(visitor, instruction);
visitor.ir.current_location = visitor.ir.current_location->AdvancePC(4);
block.CycleCount()++;
block.SetEndLocation(*visitor.ir.current_location);
return should_continue;
}

View file

@ -142,12 +142,14 @@ Id GetCbuf(EmitContext& ctx, Id result_type, Id UniformDefinitions::*member_ptr,
const auto is_float = UniformDefinitions::IsFloat(member_ptr);
const auto num_elements = UniformDefinitions::NumElements(member_ptr);
auto const zero_const = is_float ? ctx.Const(0.0f) : ctx.Const(0u);
const std::array zero_vec{zero_const, zero_const, zero_const, zero_const};
const std::array zero_vec{
is_float ? ctx.Const(0.0f) : ctx.Const(0u),
is_float ? ctx.Const(0.0f) : ctx.Const(0u),
is_float ? ctx.Const(0.0f) : ctx.Const(0u),
is_float ? ctx.Const(0.0f) : ctx.Const(0u),
};
const Id cond = ctx.OpULessThanEqual(ctx.TypeBool(), buffer_offset, ctx.Const(0xFFFFu));
const Id zero = num_elements > 1
? ctx.OpCompositeConstruct(result_type, std::span(zero_vec.data(), num_elements))
: zero_const;
const Id zero = ctx.OpCompositeConstruct(result_type, std::span(zero_vec.data(), num_elements));
return ctx.OpSelect(result_type, cond, val, zero);
}