Η πρόκληση του ήχου στο N64

Το Nintendo 64, με τον επεξεργαστή των 93 MHz και τους αυστηρούς περιορισμούς στη μνήμη των cartridges, αντιμετώπιζε ανέκαθεν δυσκολίες στην αναπαραγωγή ήχου. Ενώ το ADPCM ήταν η καθιερωμένη λύση, η χαμηλή του απόδοση ανάγκαζε τους developers σε συμβιβασμούς. Αντίστοιχα, η χρήση του Opus, αν και ποιοτική, αποδείχθηκε υπερβολικά απαιτητική για real-time αναπαραγωγή κατά τη διάρκεια του gameplay.

Η αρχιτεκτονική υπεροχή του ULC

Ο Ultra Low Complexity Codec (ULC) διαφοροποιείται από τα παραδοσιακά πρότυπα όπως το MP3, αποφεύγοντας το περιττό overhead. Χρησιμοποιεί Modified Discrete Cosine Transform (MDCT) σε πλήρες φάσμα (full-band) και αποθηκεύει τους συντελεστές σε nibbles, επιτρέποντας την αποκωδικοποίηση χωρίς την ανάγκη για πολύπλοκους αλγορίθμους εντροπίας. Αυτή η προσέγγιση καθιστά τον κώδικα εξαιρετικά ελαφρύ, απαιτώντας μόλις ~150 γραμμές C για τον decoder.

Βελτιστοποίηση για τον RSP

Η πρόκληση της μεταφοράς στον RSP ήταν διπλή: ο περιορισμένος χώρος της DMEM (4KB) και η έλλειψη υποστήριξης floating point. Η λύση δόθηκε μέσω:

  1. Fixed-point arithmetic: Μετατροπή σε 16-bit (Q1.14), η οποία διατηρεί την ποιότητα ήχου με αμελητέο θόρυβο.
  2. RSP Assembly: Χρήση της γλώσσας RSPL για τη συγγραφή του IMDCT, με τη βοήθεια LLMs για τη μετάφραση και τη βελτιστοποίηση των pipeline stalls.

Το αποτέλεσμα είναι ένας decoder που καταλαμβάνει μόλις 1400 γραμμές MIPS assembly, προσφέροντας υψηλή πιστότητα ήχου με ελάχιστη επιβάρυνση του συστήματος, όπως αποδείχθηκε και στην πρόσφατη μεταφορά του Half-Life για το N64.