Ja by som sa tiez prihovaral k tomu xboxu :) Ta konzola bola sice neskutocne hnusna (zvlast developerske kity vyrobene z hnusneho polopriehladneho zeleneho alebo bieleho plastu) ale ukazala, kde je sila Microsoftu. Developerske nastroje od MS boli v porovnani s ostatnymi platformami ako navsteva ludi z buducnosti. To IMHO plati dodnes. Sony sice kupili pred uvedenim PS3 firmu SN Systems s ich ProDG toolchainom, no na integraciu Xboxu do Visual Studia to skratka nema.
Inak som pre PS2 programoval zrovna SPU. PS2 mala dva tieto cipy zo starej PlayStation, pricom rozdiel bol iba vo velkosti pamate pre sample (myslim ze 2MB) a vo vyssej vzorkovacej frekvencii. Bol to seriozny challenge, pretoze cela zvukova pipeline pracovala paralelne na dvoch CPU a vyuzivala 3 DMA prenosy a niekolko nemaskovatelnych preruseni. Napr. na prehratie samplu bolo nutne uploadnut data z EE do IOP a z IOP do SPU. Na vacsie sample som puzival double buffer a prave prerusenie generovane SPU, ktore nastalo pri citani vzorky z konkretnej adresy. Tuto informaciu bolo samozrejme nutne poslat z IOP do EE (cez DMA), kde sa musel naplanoval upload dalsej casti samplu. Samotny prenos z EE do IOP musel byt tiez rieseny cez niekolko cyklickych bufferov, pretoze RAM v IOP bol pomerne nedostatok. Takze pokial sa uploadovali data z EE do IOP, tak z ineho bufferu sa uz tlacili do SPU. Jedinou vynimkou bola muzika, ktora sa manazovala cela v IOP, kedze ten mal pristup priamo na DVD.
Znie to jednoducho, ale si pamatam, ze som vdaka hlupej chybe riesil asi tyzden race condition medzi NMI a threadom v EE :)
Vsetko toto bolo vyborne zdokumentovane v obsiahlych papierovych manualoch, no mizerne implementovane v prikladoch. Cize napr. popis registrov SPU bola knizka formatu A4 so zhruba 150 stranami, ale ukazkova implementacia sound systemu (pouzita v drvivej vacsine hier), boli 2 C subory, kde zvlast ten pre IOP mal tak 50k riadkov. Proste masa kodu s japonskymi komentarmi, naprogramovana wannabe programatormi, kde nebolo problem narazit na 1000 riadkove funkcie a pod...