Halo pembaca. Tahun lalu saya menerbitkan proyek hobi saya,
emulator Red Omega PS2 . Idenya adalah untuk mengadaptasi kontrol emulator PCSX2 asli untuk game di Surface Pro melalui Layar Sentuh.
Kode emulator PCSX2 asli ditulis ulang dalam bentuk modul DLL, dimuat ke dalam kode C # dengan antarmuka grafis pada WPF. Proyek ini ternyata berhasil dan berhasil - Final Fantasy X dan Final Fantasy XII meledak dengan keras. Tapi enam bulan lalu, saya menemukan tautan ke Valkyria Chronicles 4 di Steam. Saya membeli Valkyria Chronicles pertama pada disk dan "memukul" saya, tetapi ada pertanyaan - di mana yang kedua dan ketiga!?! Jawabannya ditemukan dengan cepat - sekuel ini keluar hanya di konsol game. Versi yang tersedia untuk PlayStation Portable ternyata menjadi yang paling mudah diakses - melalui emulator PPSSPP. Smartphone ini tidak buruk, tetapi pada Surface Pro saya tidak suka kontrol melalui Touch. Ya, dan beralih dari Omega Red ke PPSSPP, dan sebaliknya bukan perburuan. Dan kemudian muncul ide "gila" - untuk menulis ulang kode PPSSPP asli dalam bentuk modul DLL !!! Dan ubah Omega Red menjadi PLATFORM untuk game PlayStation 2 dan PlayStation Portable !!!
Mudah diucapkan, tetapi jauh lebih sulit untuk dilakukan. Emulator PPSSPP asli sedang dikembangkan sebagai proyek Sumber Terbuka dan tersedia dalam bentuk kode lengkap untuk studi dan modifikasi. Kode ini menarik dan dapat dijalankan pada berbagai API grafis: OpenGL, DirectX9, DirectX11, Vulkan. Selain itu, ia memiliki GUI built-in. Tetapi arsitektur PPSSPP lebih "jelas" daripada PCSX2 - lebih banyak modularitas dan dependensi disederhanakan. Kunci utama untuk mewujudkan ide saya adalah kemampuan untuk memuat disk game dan menyimpannya sebagai argumen untuk program. Solusi dasar adalah menulis ulang fungsi input EXE ke dalam fungsi DLL EKSPOR. Tentu saja, akan ada masalah dengan membuat "jendela" kedua, mengarahkan output dari renderer grafik ke konteks grafis WPF, menghubungkan kode Touch, dll. dll, tapi saya sudah memutuskan semua ini ketika saya menulis ulang kode untuk PCSX2 - sudah ada template yang bisa diterapkan.
Apa hasilnya - solusinya bekerja! Dimungkinkan untuk menggabungkan dua emulator yang sangat berbeda dalam satu solusi dengan pergantian yang mulus antar game untuk emulator yang berbeda. Hasilnya dapat dievaluasi pada video:
Selain itu, saya ingin menyebutkan perubahan berikut, dibandingkan dengan rilis pertama
emulator PS2 Omega Merah :
1. Mengubah skema warna - komentar menunjukkan ketidaknyamanan skema warna antarmuka - merah. Ketidaknyamanan yang aneh - tetapi saya memutuskan untuk menambahkan rentang "Biru" terbalik:

2. Tessellation - fungsi "Tessellation" dari DirectX 11 telah ditambahkan untuk game PCSX2. Fungsi ini memungkinkan Anda untuk menambah jumlah poligon untuk model:

Tessellation dipilih dari opsi βSkema Renderingβ:

DEFAULT

Tessellated

DEFAULT

Tessellated

3. FXAA - untuk game di PCSX2, fungsi "Aktifkan FXAA" telah ditambahkan untuk menghapus Langkah di sepanjang batas poligon - solusinya tidak bekerja dengan sempurna, tetapi berfungsi:

4. Hemat cepat - simpan status emulator dengan satu perintah:

5. Kontrol volume:

Saat ini, program ini tersedia di:
Omega Red dan disajikan di GitHub:
OmegaRed