// Copyright (C) 2026 SharpEmu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later using SharpEmu.HLE; namespace SharpEmu.Libs.Ime; public static class ImeExports { // Quake (KEX) calls this from its main loop and from the audio bring-up path with // an event-handler pointer. No IME session ever exists here, so report success // without invoking the handler ("no pending IME events"). This NID was previously // misbound as an sceNgs2VoiceControl alias, which fed the game NGS2 errors. [SysAbiExport( Nid = "-4GCfYdNF1s", ExportName = "sceImeUpdate", Target = Generation.Gen4 | Generation.Gen5, LibraryName = "libSceIme")] public static int ImeUpdate(CpuContext ctx) { ctx[CpuRegister.Rax] = 0; return (int)OrbisGen2Result.ORBIS_GEN2_OK; } [SysAbiExport( Nid = "eaFXjfJv3xs", ExportName = "sceImeKeyboardOpen", Target = Generation.Gen4 | Generation.Gen5, LibraryName = "libSceIme")] public static int ImeKeyboardOpen(CpuContext ctx) { ctx[CpuRegister.Rax] = 0; return (int)OrbisGen2Result.ORBIS_GEN2_OK; } [SysAbiExport( Nid = "dKadqZFgKKQ", ExportName = "sceImeKeyboardGetResourceId", Target = Generation.Gen4 | Generation.Gen5, LibraryName = "libSceIme")] public static int ImeKeyboardGetResourceId(CpuContext ctx) { ctx[CpuRegister.Rax] = 0; return (int)OrbisGen2Result.ORBIS_GEN2_OK; } }