Play! v.0.72

Najnowsza odsłona emulatora Play! oznaczona numerem 0.72 przynosi fundamentalne usprawnienia w matematycznej poprawności wykonywania kodu Emotion Engine oraz rozbudowaną emulację peryferiów dla automatów arcade System 246/256, bazujących na architekturze PlayStation2. Poprzez wprowadzenie dedykowanych mechanizmów kompilacji dla operacji dodawania i odejmowania na liczbach zmiennoprzecinkowych pojedynczej precyzji, autorzy wyeliminowali kluczowe błędy synchronizacji w wymagających silnikach fizycznych. Równie ciekawie wygląda warstwa sprzętowa, w której zaimplementowano zaawansowaną interoperacyjność z zewnętrznymi systemami sprzężenia zwrotnego (force feedback) dla pistoletów świetlnych i kierownic.

The King of Fighters '94 Re-Bout on Play! PS2 emulator - image from PSEmu.pl :: recent news, latest files, free homebrew games, all you want in topic of PS2 emulation. Pliki, wiadomości, darmowe gry homebrew.

Lista zmian jakie względem poprzednich odsłon znalazły się w stabilnym wydaniu z 1 stycznia 2026 r., obejmuje zakresem m.in.:

  • zaimplementowano instrukcję MMI PSUBSB (Packed Subtract Signed Byte z nasyceniem) w rekompilatorze procesora Emotion Engine,
  • rozbudowano podsystem Iop_Spu2 o pełną obsługę trybu obejścia sygnału S/PDIF (S/PDIF bypass mode), realizując przetwarzanie danych wejściowych audio jako przeplatane stereo (interleaved stereo), usuwając niepotwierdzoną flagę C_SPDIF_PROTECT oraz przenosząc definicje rejestrów S/PDIF do wspólnego typu,
  • podwojono efektywną częstotliwość próbkowania (sample rate) podczas odczytu danych z obszaru wejściowego audio SPU2,
  • wdrożono dodatkowe mechanizmy kompilatora (compile hints) oraz opcję konfiguracyjną aktywującą matematycznie precyzyjną emulację instrukcji zmiennoprzecinkowych ADD_S lub SUB_S, co w połączeniu z poprawkami w makroinstrukcji FpAddTruncate rozwiązało problem zawieszania się kodu w określonych sekcjach Kingdom Hearts 2 oraz Kingdom Hearts 2 Final Mix,
  • przeniesiono obsługę zdarzeń dźwiękowych w strukturze kodu do scentralizowanego modułu oraz przepisano logikę sieciową sprzężenia zwrotnego, przenosząc interakcje wyjściowe z głównego okna interfejsu wprost do dedykowanego nasłuchiwania w obiekcie Iop_NetworkOutput, którego cykl życia powiązano z instancją CSys246,
  • zaimplementowano interoperacyjność z protokołem MAMEHooker za pośrednictwem komunikatów systemowych Windows, umożliwiając obsługę cewki odrzutu (lightgun recoil) w pistoletach świetlnych dla systemów arcade,
  • rozszerzono emulację I/O standardu TSS oraz JVS o obsługę operacji zapisu na rejestrach GPIO (w tym obniżono próg wyzwalania sygnału odrzutu dla kompatybilności z wieloma typami płyt), co przywróciło obsługę efektów świetlnych w grach Cobra: The Arcade lub Vampire Night,
  • sfinalizowano niskopoziomową emulację dedykowanej płyty sterującej mechanizmami kierownicy (steering board emulation), dzięki czemu w pełni uruchomiono obsługę osi skrętu, pedałów gazu oraz hamulca,
  • wdrożono poprawki w obsłudze portu szeregowego oraz skorygowano błąd logiczny w funkcji SERIAL_READ, który mógł doprowadzić do przepełnienia bufora wejściowego,
  • wymuszono globalną aktywację trybu wyświetlania 31kHz dla wszystkich definicji maszyn System 246 (usuwając wcześniejszy wyjątek dla Soul Calibur 3) oraz dodano brakujące stałe dla trybu HDTV 480P,
  • zaimplementowano prawidłowe identyfikatory płyt wejścia/wyjścia (MIU-I/O board ID) dla japońskich wersji automatowych, eliminując m.in. błąd migania ekranu oraz błędne mapowanie przycisku spustu w Time Crisis 3 oraz Time Crisis 4 (JP),
  • dodano nowe pliki konfiguracyjne automatów (.arcadedef) dla tytułów Battle Gear 3J, Mobile Suit Gundam SEED Destiny DX (zgundmdx) oraz zintegrowano poprawki licznika T1_COUNT zapobiegające zawieszaniu scen 3D i tras początkowych w grach z serii Battle Gear 3,
  • w inetrfejsie GSH_Vulkan dodano obsługę rozszerzania kanału alfa (alpha expansion) dla specyficznych typów pikseli PSMZ16 oraz PSMZ16S, a także zablokowano możliwość zapisu do bufora Z, gdy współdzieli on ten sam adres pamięci z buforem ramek (framebuffer),
  • w module GSH_OpenGL poprawiono wydajność procedur weryfikujących modyfikacje stanu,
  • dodano bazy heurystyk pomijania pętli bezczynnych (idle loop / skip patches) dla gier z serii Burnout oraz Fushigi no Umi no Nadia,
  • usunięto przestarzały interfejs Win32 dla odtwarzacza PsfPlayer, zreorganizowano jego potok budowania w środowisku CI na platformie Windows oraz wyeliminowano błędy kompilacji w wersjach bez aktywnego debugera,
  • zaktualizowano skrypty integracyjne CI, wymuszając korzystanie z Xcode 16.4 dla systemów iOS za pomocą modułu setup-xcode na obrazach windows-2022, a także zaktualizowano zewnętrzne podmoduły Framework, CodeGen oraz zależności systemowe,
  • w interfejsie Qt usunięto minimalne ograniczenia wymiarów dla widżetu rozruchowego konsoli (bootable view widget) oraz wyłączono system transakcyjny warstwy Metal w Qt6 dla poprawy stabilności na macOS.

Skupienie prac wokół rygorystycznej poprawności instrukcji zmiennoprzecinkowych Emotion Engine bezpośrednio przekłada się na stabilność emulacji zaawansowanych silników renderujących z ery PS2, eliminując trudne do wyłapania błędy zaokrągleń w obliczeniach transformacji. Krok ten, w połączeniu z bezprecedensowym rozwinięciem emulacji peryferiów JVS oraz TSS-I/O dla unikalnych maszyn salonowych, pozycjonuje Play! 0.72 jako wiodące oprogramowanie w sferze zachowania dziedzictwa cyfrowego systemów Namco System 246/256. Równoczesne uporządkowanie kodu SPU2 pod kątem natywnego sterowania strumieniami audio stereo w trybie bypass oraz optymalizacje pamięci w Vulkanie udowadniają, że projekt skutecznie zamyka architektoniczne długi technologiczne, oferując wysoce zoptymalizowane środowisko uruchomieniowe.

Zapraszam do sekcji Pliki gdzie znajduje się kod źródłowy programu, najnowsze stabilne wydania dla mobilnych systemów z rodziny iOS oraz Android, jak również archiwa dla dużych maszyn pracujących pod kontrolą systemów Linux, macOS oraz Windows.