Compare commits

...

4 Commits

Author SHA1 Message Date
LotP
9b429afbb4 fix: PPTC blacklist trigger conditions
See merge request ryubing/ryujinx!28
2025-04-27 16:57:57 -05:00
GreemDev
b71a4cb745 docs: compat: Breakout Beyond & Nikoderiko: The Magical World 2025-04-26 19:14:08 -05:00
shinyoyo
844b1d8b9a Update Simplified Chinese translation.
See merge request ryubing/ryujinx!27
2025-04-25 21:03:27 -05:00
LotP
c4ea0e0df2 Reset PPTC Carriers on invalidation
See merge request ryubing/ryujinx!26
2025-04-24 12:48:22 -05:00
4 changed files with 19 additions and 15 deletions

View File

@@ -5393,7 +5393,7 @@
"th_TH": "ข้ามหน้าต่างโต้ตอบ 'จัดการโปรไฟล์ผู้ใช้งาน'",
"tr_TR": "'Kullanıcı Profillerini Yönet' iletişim kutusunu atla",
"uk_UA": "Пропустити діалог 'Керувати профілями користувачів'",
"zh_CN": "跳过对话框“管理用户账户”",
"zh_CN": "跳过 “管理用户账户” 对话框",
"zh_TW": "略過對話框「管理使用者設定檔」"
}
},
@@ -7043,7 +7043,7 @@
"th_TH": "",
"tr_TR": "",
"uk_UA": "",
"zh_CN": "",
"zh_CN": "发现配置:\n\n名称:\t{0}\nGUID:\t{1}\n\n 正在等待控制器连接...",
"zh_TW": ""
}
},
@@ -7393,7 +7393,7 @@
"th_TH": "การควบคุมได้รับการตั้งค่าแล้ว\n\nกำลังรอการเชื่อมต่อคอนโทรลเลอร์...",
"tr_TR": "Kontrol yapılandırıldı.\n\nKontrolcü bağlantısı bekleniyor...",
"uk_UA": "Керування налаштовано.\n\nОчікується підключення контролера...",
"zh_CN": "控制已配置。\n\n等待控制器连接...",
"zh_CN": "已配置控制器。\n\n正在等待控制器连接...",
"zh_TW": "控制已設定。\n\n等待控制器連接..."
}
},
@@ -7418,7 +7418,7 @@
"th_TH": "ยกเลิกการเชื่อมโยง",
"tr_TR": "Bağlantıyı Kes",
"uk_UA": "Відв'язати",
"zh_CN": "解除绑定",
"zh_CN": "取消绑定",
"zh_TW": "解除綁定"
}
},
@@ -16943,7 +16943,7 @@
"th_TH": "ตัวเลือกนี้จะข้ามหน้าต่าง 'จัดการโปรไฟล์ผู้ใช้งาน' ระหว่างเล่นเกม โดยใช้โปรไฟล์ที่เลือกไว้ล่วงหน้า\n\nการสลับโปรไฟล์สามารถพบได้ใน 'ตั้งค่า' - 'จัดการโปรไฟล์ผู้ใช้งาน' เลือกโปรไฟล์ที่คุณต้องการก่อนโหลดเกม",
"tr_TR": "Bu seçenek, oyun sırasında 'Kullanıcı Profillerini Yönet' iletişim kutusunu atlar ve önceden seçilmiş bir profil kullanır.\n\nProfil değiştirme 'Seçenekler' - 'Kullanıcı Profillerini Yönet' bölümünde bulunur. Oyunu yüklemeden önce istediğiniz profili seçin.",
"uk_UA": "Ця опція пропускає діалогове вікно 'Керувати профілями користувачів' під час гри, використовуючи попередньо вибраний профіль.\n\nПеремикання профілів можна знайти в 'Налаштування' - 'Керувати профілями користувачів'. Виберіть потрібний профіль перед завантаженням гри.",
"zh_CN": "此选项跳过游戏过程中“管理用户账户”对话框使用预选的配置。\n\n可以在“设置” - “管理用户账户”中找到配置文件切换。 在加载游戏之前选择所需的配置文件。",
"zh_CN": "此选项跳过游戏过程中出现的 “管理用户账户” 对话框,使用预选的账户。\n\n可以在“设置” - “管理用户账户”中找到账户切换。 在加载游戏之前选择所需的账户。",
"zh_TW": "這個選項跳過遊戲過程中的「管理使用者設定檔」對話框,使用預先選取的設定。\n\n可以在「設定」-「管理使用者設定檔」中找到設定檔切換。 在載入遊戲前選擇您需要的設定檔。"
}
},
@@ -18368,7 +18368,7 @@
"th_TH": "",
"tr_TR": "",
"uk_UA": "",
"zh_CN": "",
"zh_CN": "{0} FPS ({1}毫秒)",
"zh_TW": ""
}
},

View File

@@ -601,6 +601,7 @@
010060200A4BE000,"Brawlout",ldn-untested;online,playable,2021-06-04 17:35:35
0100C1B00E1CA000,"Brawlout Demo",demo,playable,2021-02-13 22:46:53
010022C016DC8000,"Breakout: Recharged",slow,ingame,2022-11-06 15:32:57
010048A021C40000,"Breakout Beyond",,playable,2025-04-26 19:11:35
01000AA013A5E000,"Breathedge",UE4;nvdec,playable,2021-05-06 15:44:28
01003D50100F4000,"Breathing Fear",,playable,2020-07-14 15:12:29
010026800BB06000,"Brick Breaker",nvdec;online,playable,2020-12-15 18:26:23
@@ -2028,6 +2029,7 @@
0100628004BCE000,"Nights of Azure 2: Bride of the New Moon",crash;nvdec;regression,menus,2022-11-24 16:00:39
010042300C4F6000,"Nightshade百花百狼",nvdec,playable,2020-05-10 19:43:31
0100AA0008736000,"Nihilumbra",,playable,2020-05-10 16:00:12
01009FA01FF6C000,"Nikoderiko: The Magical World",gpu,ingame,2025-04-26 19:13:31
0100D03003F0E000,"Nine Parchments",ldn-untested,playable,2022-08-07 12:32:08
0100E2F014F46000,"NINJA GAIDEN Σ",nvdec,playable,2022-11-13 16:27:02
0100696014F4A000,"NINJA GAIDEN Σ2",nvdec,playable,2024-07-31 21:53:48
1 title_id game_name labels status last_updated
601 010060200A4BE000 Brawlout ldn-untested;online playable 2021-06-04 17:35:35
602 0100C1B00E1CA000 Brawlout Demo demo playable 2021-02-13 22:46:53
603 010022C016DC8000 Breakout: Recharged slow ingame 2022-11-06 15:32:57
604 010048A021C40000 Breakout Beyond playable 2025-04-26 19:11:35
605 01000AA013A5E000 Breathedge UE4;nvdec playable 2021-05-06 15:44:28
606 01003D50100F4000 Breathing Fear playable 2020-07-14 15:12:29
607 010026800BB06000 Brick Breaker nvdec;online playable 2020-12-15 18:26:23
2029 0100628004BCE000 Nights of Azure 2: Bride of the New Moon crash;nvdec;regression menus 2022-11-24 16:00:39
2030 010042300C4F6000 Nightshade/百花百狼 nvdec playable 2020-05-10 19:43:31
2031 0100AA0008736000 Nihilumbra playable 2020-05-10 16:00:12
2032 01009FA01FF6C000 Nikoderiko: The Magical World gpu ingame 2025-04-26 19:13:31
2033 0100D03003F0E000 Nine Parchments ldn-untested playable 2022-08-07 12:32:08
2034 0100E2F014F46000 NINJA GAIDEN Σ nvdec playable 2022-11-13 16:27:02
2035 0100696014F4A000 NINJA GAIDEN Σ2 nvdec playable 2024-07-31 21:53:48

View File

@@ -33,7 +33,7 @@ namespace ARMeilleure.Translation.PTC
private const string OuterHeaderMagicString = "PTCohd\0\0";
private const string InnerHeaderMagicString = "PTCihd\0\0";
private const uint InternalVersion = 7007; //! To be incremented manually for each change to the ARMeilleure project.
private const uint InternalVersion = 7008; //! To be incremented manually for each change to the ARMeilleure project.
private const string ActualDir = "0";
private const string BackupDir = "1";
@@ -566,9 +566,7 @@ namespace ARMeilleure.Translation.PTC
{
if (AreCarriersEmpty() || ContainsBlacklistedFunctions())
{
_infosStream.SetLength(0);
_relocsStream.SetLength(0);
_unwindInfosStream.SetLength(0);
ResetCarriersIfNeeded();
return;
}
@@ -875,7 +873,7 @@ namespace ARMeilleure.Translation.PTC
Debug.Assert(Profiler.IsAddressInStaticCodeRange(address));
TranslatedFunction func = translator.Translate(address, executionMode, highCq);
TranslatedFunction func = translator.Translate(address, executionMode, highCq, pptcTranslation: true);
if (func == null)
{

View File

@@ -219,7 +219,7 @@ namespace ARMeilleure.Translation
}
}
internal TranslatedFunction Translate(ulong address, ExecutionMode mode, bool highCq, bool singleStep = false)
internal TranslatedFunction Translate(ulong address, ExecutionMode mode, bool highCq, bool singleStep = false, bool pptcTranslation = false)
{
ArmEmitterContext context = new(
Memory,
@@ -246,7 +246,7 @@ namespace ARMeilleure.Translation
context.Branch(context.GetLabel(address));
}
ControlFlowGraph cfg = EmitAndGetCFG(context, blocks, out Range funcRange, out Counter<uint> counter);
ControlFlowGraph cfg = EmitAndGetCFG(context, blocks, out Range funcRange, out Counter<uint> counter, pptcTranslation);
if (cfg == null)
{
@@ -326,7 +326,8 @@ namespace ARMeilleure.Translation
ArmEmitterContext context,
Block[] blocks,
out Range range,
out Counter<uint> counter)
out Counter<uint> counter,
bool pptcTranslation)
{
counter = null;
@@ -411,7 +412,10 @@ namespace ARMeilleure.Translation
if (opCode.Instruction.Emitter != null)
{
opCode.Instruction.Emitter(context);
if (opCode.Instruction.Name == InstName.Und && blkIndex == 0)
// if we're pre-compiling PPTC functions, and we hit an Undefined instruction as the first
// instruction in the block, mark the function as blacklisted
// this way, we don't pre-compile Exlaunch hooks, which allows ExeFS mods to run with PPTC
if (pptcTranslation && opCode.Instruction.Name == InstName.Und && blkIndex == 0)
{
range = new Range(rangeStart, rangeEnd);
return null;