Αρχιτεκτονική προσέγγιση: Από το MIPS στο WebAssembly

Η καινοτομία του psp-web-recomp έγκειται στην απομάκρυνση από την παραδοσιακή εξομοίωση (emulation). Αντί για έναν διερμηνέα (interpreter) που εκτελεί εντολές MIPS σε πραγματικό χρόνο, το εργαλείο χρησιμοποιεί το PSPRecomp για να αναλύσει το decrypted executable και να παράγει κώδικα C++. Αυτός ο κώδικας μεταγλωττίζεται μέσω Emscripten σε WebAssembly, επιτρέποντας στο παιχνίδι να εκτελείται με native ταχύτητα μέσα στο sandbox του browser.

Διαχείριση γραφικών και συγχρονισμός

Το graphics chip του PSP (GE) μεταφράζεται σε κλήσεις WebGL2. Για να επιτευχθεί η απαιτούμενη απόδοση, το σύστημα διαχωρίζει το rendering σε ένα ξεχωριστό worker thread. Η χρήση του OffscreenCanvas επιτρέπει στο graphics pipeline να λειτουργεί ασύγχρονα, μειώνοντας δραστικά το latency. Ιδιαίτερη έμφαση δόθηκε στη διαχείριση των buffers: η αποφυγή του re-validation των index buffers σε κάθε frame και η βελτιστοποίηση των stencil-in-alpha operations ήταν καθοριστικές για τη σταθερότητα στα 60 FPS.

Προκλήσεις απόδοσης και βελτιστοποιήσεις

Η αρχική έκδοση του project έτρεχε με μόλις 6 FPS. Η ανάλυση των σημείων συμφόρησης (bottlenecks) αποκάλυψε ότι το πρόβλημα δεν ήταν η υπολογιστική ισχύς, αλλά ο τρόπος αλληλεπίδρασης με το hardware του browser:

  • Clock synchronization: Η αντικατάσταση των κλήσεων std::chrono με performance.now() περιόρισε το overhead των profiling timers.
  • Buffer management: Η δημιουργία μικρών index buffers ανά draw call, αντί για ένα μεγάλο shared buffer, απέτρεψε τα stalls στους mobile GPU drivers.
  • Thread scheduling: Ο διαχωρισμός του GE thread από το κύριο thread του παιχνιδιού επέτρεψε την παράλληλη επεξεργασία των display lists, μειώνοντας το συνολικό frame time.

Διαλειτουργικότητα και επεκτασιμότητα

Το σύστημα υποστηρίζει πλέον δύο τίτλους (God of War: Chains of Olympus και Ghost of Sparta) χωρίς αλλαγές στον πυρήνα, αποδεικνύοντας την ωριμότητα της υλοποίησης των system calls. Η χρήση HTTP Range requests για το streaming των δεδομένων του δίσκου καθιστά το σύστημα εξαιρετικά αποδοτικό, καθώς απαιτείται μόνο η λήψη του εκτελέσιμου αρχείου για την έναρξη της διαδικασίας.