La Table des matières APERÇU DE SYSTEME ........................................................................ ........................................ 9 LE SYSTEME NET YAROZE.................................................................. ................................................10 LE SITE WEB NET YAROZE.................................................................. ...............................................11 L'ARCHITECTURE DE LA PLAYSTATION............................................................. ................................11 LE CPU ET SES PERIPHERIQUES........................................................... ...............................................13 LE SYSTEME GRAPHIQUE............................................................... ....................................................15 LE SYSTEME SONORE.................................................................. .......................................................18 AUTRES SYSTEMES................................................................ .............................................................18 L'ENVIRONNEMENT DE DEVELOPPEMENT DE LA PLAYSTATION........................... 21 LE SYSTEME PROFESSIONNEL DE DEVELOPPEMENT DE LA PLAYSTATION...............................................22 LE SYSTEME DE DEVELOPPEMENT NET YAROZE ........................................................................ ......23 DEVELOPPER UNE APPLICATION............................................................. ............................ 25 CREER UN PROGRAMME............................................................... ......................................................26 CREER DES DONNEES................................................................. ........................................................26 LE STYLE DE PROGRAMMATION ........................................................................ ................................29 L'ENVIRONNEMENT D'APPLICATION........................................................... ........................................40 LA BIBLIOTHEQUE NET YAROZE.................................................................. ........................43 LES SERVICES GRAPHIQUE............................................................... ..................................................44 LES SERVICES CONCERNANT LE SON..................................................................... ............................44 LES SERVICES ORDINAIRES. ........................................................................ ......................................44 LES AUTRES SERVICES................................................................ .......................................................45 L'ORGANISATION DES FICHIERS................................................................ .........................................45 LE TRAITEMENT DE DONNEES................................................................. ...........................................47 L'ACCES A LA MEMOIRE TAMPON (FRAME BUFFER )...................................................49 LA DESCRIPTION DE LA MEMOIRE TAMPON ........................................................................ ............. 50 L'ENVIRONNEMENT DES FONCTIONS............................................................... ...................................51 LES FONCTIONS D'ACCES A LA MEMOIRE TAMPON.................................................................. ..........52 LES FONCTIONS DE TRAITEMENT DU DESSIN ........................................................................ ............53 LA POLICE KANJI [CARACTERE JAPONAIS] ........................................................................ ................54 L'INTEGRATION DU GRAPHISME ........................................................................ .................57 LES SEQUENCES DU PROCESUS ........................................................................ ..................................59 LINITIALISATION DU SYSTEME GRAPHIQUE............................................................... ........................60 LE POINT DE VUE..................................................................... ........................................................... 61 LES PAQUETS................................................................. .....................................................................62 LES TABLES DE COMMANDES (Ordering Table) ........................................................................ .............63 CONVERION DE COORDONNEE & CALCUL DE LA SOURCE LUMINEUSE.............................................64 CREATION DES PAQUETS................................................................. ................................................... 72 OBJECS.................................................................. ........................................................................ ......73 SON ........................................................................ ........................................................................ ..75 MARQUER DES DONNEES................................................................. ...................................................76 SUPPORT MIDI ........................................................................ ............................................................77 LES DONNEES ........................................................................ .............................................................79 FONCTIONNER ORDONNANT L'EXECUTION............................................................. ...........................80 LA FONCTIONS STANDARD EN C....................................................................... ....................81 INCLURE LES ENTETES ........................................................................ ..............................................82 LES FONCTIONS SUPPORTEES.............................................................. ...............................................83 LES FONCTIONS MATHEMATIQUE............................................................ ............................85 LES NOMBRES A VIRGULES FLOTTANTES.............................................................. .............................86 L'ERREUR MANIEE.................................................................. .............................................................87 LES FONCTIONS SUPPORTEES. ........................................................................ ....................................89 LE GESTIONNAIRE KERNEL.................................................................. ..................................91 ENRACINER LA GESTION OPPOSEE................................................................. ....................................92 LA GESTION D'ENTREE/SORTIE (I / O) ........................................................................ .........................93 LA GESTION DU MODULE CONTROLE................................................................ .................................95 LES SERVICES SUPPLEMENTAIRES......................................................... .............................................96 LA GESTION DU CD-ROM ........................................................................ .................................99 APERÇU DU CD-ROM.................................................................. .......................................................100 LES FICHIERS SYSTEM.................................................................. .....................................................102 L'ACCES AUX FICHIERS................................................................ .....................................................103 LA GESTION DES PERIPHERIQUES........................................................... ..........................105 LE GESTIONNAIRE DE CONTROLE................................................................ ...................................106 LA GESTION DE LA CARTE MEMOIRE ........................................................................ ......................110 CREER DES APPLICATIONS PLAYSTATION............................................................. .........111 CREER DES DONNEES GRAPHIQUE............................................................... .....................................112 CREANT DES MUSIQUES................................................................ ....................................................115 CREER UN PROGRAMME............................................................... .....................................................117 LES OUTILS GRAPHIQUE ........................................................................ ...............................119 LE DXF2RSD.EXE............................................................. ..................................................................121 LE DXF2RSDW.EXE............................................................ ................................................................132 LE RSD2DXF.EXE............................................................. ..................................................................140 LE RSDCAT.EXE.............................................................. ...................................................................141 LE RSDFORM.EXE............................................................. .................................................................142 LE RSDLINK.EXE............................................................. ...................................................................148 LE RSDV.BAT (RSD PREVIEWER) ........................................................................ ...............................155 LE TIMUTIL.EXE (TIM UTILITE) ........................................................................ .................................157 LE TIMV.BAT................................................................ ......................................................................16 8 LES OUTILS DE SON..................................................................... .............................................171 LE SMF2SEQ.EXE............................................................. ..................................................................173 L'AIFF2VAG.EXE.......................................................... ......................................................................17 4 LE MKVAB.EXE............................................................... ...................................................................175 LE VABSPLIT.EXE............................................................ ..................................................................178 LES JOUEURS SOLIDES................................................................. .....................................................179 OUTILQ DE PROGRAMMATION........................................................... ...............................................183 LE COMPILATEUR GCC ........................................................................ .............................................184 LE RELIEUR LD ........................................................................ .........................................................190 STRIP (SYMBOLE DE DEPLACEUR D'INFORMATIONS) ......................................................................19 2 L'UTILITAIRE DE MAINTENANCE "MAKE".................................................................. ............192 MAKEFILES............................................................... ........................................................................ .194 LES OUTILS DE CONSOLE................................................................. ......................................203 UN APERÇU DE SIOCONS................................................................. ..................................................204 L'USAGE................................................................. ........................................................................ ....205 L'OPERATION............................................................. ........................................................................ 205 TRANSFERANT ET EXECUTION DE FICHIERS................................................................ .....................207 TERMINER SIOCONS................................................................. .........................................................208 L'AUTO-EXECUTION........................................................ ..................................................................208 A propos de la NET Yaroze Dans l'ordre, pour commencer avec La Net Yaroze, vous devrez avoir des compétences en programmation C et vous devrez savoir manipuler les outils de création et d’édition de dessin 2D . Vous devrez aussi avoir une compréhension fondamentale de la 3D et la création de fichier sonore sera un plus dans l’utilisation du Kit Yaroze . Les manuels du kit Yaroze Il y a trois livres avec le kit Net Yaroze . 1. Guide de démarrage Une brochure préliminaire explique les contenus et exigences l’équipement de démarrage du Net Yaroze .Il contient la procédure à suivre pour installer sur votre PC les logiciels et comment les lancer à partir du système . 2. Le guide de l'utilisateur (ce document) Un manuel de référence expliquant comment créer les logiciels pour système Net Yaroze . 3. La bibliothèque de référence Un manuel énumérant et décrivant les fonctions et structures des bibliothèques. Supplémentaire Net Yaroze Lecture additionnelle . Voir la section supplémentaire à la fin du guide de démarrage . 1 Aperçu du Système Aperçu du Système Ce chapitre contient un aperçu du système Net Yaroze et des explications concernant l’équipement de la PlayStation . Le Net Yaroze est un produit révolutionnaire qui permet à n'importe qui de créer des applications PlayStation grâce au Kit de développement Net Yaroze, un ordinateur personnel et une PlayStation spéciale : le Net Yaroze . Les applications Net Yaroze peuvent être disponible en exclusivité sur site web où ils peuvent être partagés et appréciés par d’autres Membres . Le Système Net Yaroze Le système Net Yaroze est conçu vous permettre d’écrire, de debugger et de tester les applications PlayStation sur un ordinateur personnel (PC) relié à une PlayStation spéciale Net Yaroze . Le PC, qui agit comme une machine d'hôte, est relié par un câble série à la PlayStation avec lequel on transmet les programmes pour les exécuter . Vos premiers pas dans le développement sont accompagnés d’outils de programmation. Après vous avoir écrit, compilé et relié votre programme, vous devez de le transférer au Net Yaroze PlayStation en utilisant SIOCONS, la console (détails dans Le chapitre 17), et de là votre application pourra être testé directement sur la PlayStation . Vous pouvez aussi downloader et vérifier chacune des données qui sont employées par votre application, comme les fichiers Audio . (Vous aurez besoin d’employer un Contrôleur relié à la PlayStation pour contrôler votre application. ) Si votre ordinateur « hôte »  Net Yaroze a une connexion Internet , vous pouvez non seulement afficher sur votre site web personnel vos programmes Net Yaroze en les placent très aisément, mais encore transfèré et exécuté aussitôt les programmes affichaient par autres Membres. Le site Web Net Yaroze Le site web Net Yaroze est administrer par Sony et Mondialement accessible par le Internet . Le site Net Yaroze offre divers service tel qu'un forum de courrier, accès de pages personnelles des membres, de la documentation, des programmes, des librairies . Il permet l'échange d'information entre les membres ainsi que le transfert d’applications Net Yaroze. Le site fournit aussi les dernières informations concernant le Yaroze le support technique . Vous aurez besoin d’un accès à Internet et d’un navigateur (browser) pour accéder au site . Référer s'il vous plaît au Guide de démarrage pour des instructions détaillées. L’Architecture de la PlayStation Comme c’est montré dans le diagramme suivant, le système de la PlayStation est basé sur un processeur 32-bit RISC, et comprend un nombre de processeurs et dispositifs consacré aux fonctions spécifiques telles que graphisme et son . Le glossaire GTE: Le moteur de transfère de la géométrie GPU: L’unité de traitement graphique SPU: L'unité de traitement du son MDEC: Le processeur de décompression de données PIO: Le port Parallèle d'expansion SIO: Le port Sériel d'expansion Le CPU et Ses Périphériques La PlayStation emploie un CPU basait sur l’architecture R3000 (33 MHZ) 32 – bit RISC (little - endian ). I-Cache Le CPU lit le code d'instruction de L'I-cache à approximativement 5 fois la vitesse de la mémoire principale . Une fois que le code d'instruction a été lu, il est emmagasiné dans L'I-cache dans le CPU et pouvoir être ré - exécutait sans Accéder à la mémoire principale . L'I-cache ne peut pas être accédé directement d'un programme. Le CPU est équipé avec un 4 KB I-cache. Le espace mémoire logique de la PlayStation est partagé en unités de 4 K et ce sont multipliés - tracés en L'I-cache. D-Cache Le D-cache emploie une structure spéciale appelait un bloc d'égratignure (scratch pad) qui est placé dans 1 KB de mémoire logique (adresses 0x1f800000~0x1f8003f) avec lequel le développeur du programme peut librement accéder . Le Registre Général Il y a trente deux 32–bit registres générales . Le compilateur attribue un emploi spécifique à chaque registre comme indiquer dans le tableau ci-dessous . Le développement d'application et de bases de données utilisant l'assembleur nécessite que les registres soit employés selon les affectations montrés en dessous : Numéro de Registre Macro (1) Macro (2) Les affectations assembler 0 R_ZERO R_R0 Zéro Fixe le 0 1 R_AT R_R1 AT Réserver pour l'assembleur 2~3 R_V0~1 R_R2~3 v0~1 Valeurs retournées par des fonctions 4~7 R_A0~3 R_R4~7 a0~3 Arguments de fonction 8~15 R_T0~7 R_R8~15 t0~7 Détruis dans les fonctions 16~23 R_S0~7 R_R16~23 s0~7 Sauvegarder dans les fonctions 24~25 R_T8~9 R_R24~25 t8~9 Détruis dans les fonctions 26~27 R_K0~1 R_R26~27 k0~1 Réservait pour Kernel 28 R_GP R_R28 gp Les pointeurs globales 29 R_SP R_R29 sp Les pointeurs stack 30 R_FP R_R30 fp Les pointeurs de la Frame 31 R_RA R_R31 ra Retourne l'adresse Retour de L'adresse Le R3000 n'a pas tout soutien encastré pour des appels de sous-programme . Plutôt, un appel de sous-programme est exécuté en exécutant une instruction de saut qui économise l'adresse de retour dans un registre. Le registre qui contient le l'adresse de retour peut être précisée utilisant l'assembleur, cependant, le compilateur C emploiera toujours général – but enregistrer 31. La Pile Le R3000 n'a pas tout soutien encastré pour une pile. Plutôt, le compilateur réalise une pile en emmagasinant une baguette de pile dans le général - but registre 29. En outre, l’opération efficace de fonction encadre (les superficies de mémoire employées pour des variables automatiques et comme superficies fonctionnantes) est réalisé en sauvant l'adresse de début pour le cadre dans le général - but enregistre 30. Cette adresse est connue comme la baguette de cadre. La valeur du la baguette de cadre est déterminée de la valeur de la baguette de pile. Quand un module est activé, le cadre la baguette de pile et baguette a des valeurs identiques. Les Pointeurs Globaux Le R3000 peut accéder à la mémoire avec un registre - indirecte mode de relégation qui emploie un signé 16-bit décalage . Pour l'efficacité, le compilateur garde jusqu'à 64 KB de données dans un bloc appelait la section bss . Le midpoint l'adresse de ce bloc est emmagasinée dans le général - but registre 28. Utilisant le registre - indirecte relégation et a 16-bit décalage de général - but registre 28, le R3000 peut accéder à des données dans la section bss avec une simple instruction . L'adresse dans le général - but registre 28 est connu comme le pointeur global et fait notMain Mémoire La mémoire principale La PlayStation est équipé avec 2 MB de mémoire principale. Les adresses sont affectées dans cette mémoire commençant de 0x0000 0000. Cet espace d'adresse est référé comme ' Espace de mémoire physique'. L'espace mémoire du CPU est codé en 32-bit et est connu comme 'l'espace logique de mémoire'. L'espace physique de mémoire est découpé en trois superficies dans l'espace logique de mémoire. Le CPU n'est pas équipé d'une mémoire virtuelle si ces traçées entre les deux espaces de mémoire sont réparé comme montré dans le tableau ci-dessous. La mémoire Physique Mémoire Logique Le nom du segment I-Cache 0x00000000~0x001ffff 0x00000000~x001fffff 0x80000000~0x801ffff 0xa0000000~0xa01ffff ku k0 k1 Disponible Indisponible Disponible Tableau: La mémoire Physiqueet la Mémoire Logique La ROM de l'OS La PlayStation est équipé de 512 KB de MEMOIRE FIXE (ROM). L'OS KERNEL et la lecture du boot sont emmagasinés dans cette ROM et l'accès à celle-ci n'est pas permis depuis une application. Le Contrôleur DMA Un contrôleur DMA est attaché au CPU. Le contrôleur DMA est employé pour les transferts de données entre la mémoire et les périphériques concernées par les instructions du CPU. Le système Graphique La PlayStation est équipée d'un processeur graphique (GPU) . Le GPU caractéristiques des fonctions CRTC pour des l'affichage sur l'écran, ainsi que pour exécuter très rapidement polygone attirant utilisant un cadre dans la mémoire tampon . La mémoire Tampon Le GPU est équiper d'une mémoire Tampon de 1 MB. La mémoire tampon est décrit par une adresse à deux dimensions (1024 x 512) comportant chacun des pixels sur de unités 16-bit. La mémoire tampon est gérée par le GPU et ne peut pas être utilisé directement par le CPU . L'affichage Le GPU expose les contenus d'une superficie rectangulaire arbitraire dans le tampon de cadre directement sur le CRT exposé. Cette superficie est appelée la 'superficie d'affichage '. Le tableau montré ci-dessous indique le 10 modes d'écran supporté par le GPU. NTSC PAL Entrelacé Non-entrelacé Entrelacé Non-entrelacé 256 (H) x 480 (V) 320 x 480 512 x 480 640 x 480 384 x 480 256 (H) x 240 (V) 320 x 240 512 x 240 640 x 240 384 x 240 256 (H) x 512 (V) 320 x 512 512 x 512 640 x 512 384 x 512 256 (H) x 256 (V) 320 x 256 512 x 256 640 x 256 384 x 256 Tableau: Modes écrans(NTSC et PAL) Le GPU supporte deux modes d'affichage qui n'alternent pas la qualité des couleurs affichées : 15-bit en mode direct (32,768 couleurs) et 24-bit en mode direct (Full color) En mode 15-bit direct 32,768 couleurs peut être exposé simultanément. C'est peu de couleurs qui peuvent (pleines colorer) être exposé en mode 24-bit, cependant, calculs de couleur dans le GPU pendant le dessin sont toujours exécuté utilisant 24 peux. Conséquemment, pseudo - pleine couleur peut être réalisée dans 15 - peu mode directe par dithering. En mode 24-bit direct 16,777,216 couleurs peuvent être affichées simultanément . Cependant, en mode 24-bit direct les images seulement statiques (encore images) peuvent être exposées de données d'image qu'on été transférées au cadre le tampon. Les fonctions de dessin du GPU ne peuvent pas être employées en mode 24-bit directe. En 24-bit direct un pixel seul a une longueur de peu de 24 peux, mais la position d'étalage coordonne dans le tampon de cadre doit être précisé comme si la taille de pixel étaient 16 bit . Ainsi, une image 640 x 240 en 24-bit direct aura une taille réelle de 960 x 480 dans la mémoire tampon. Capacité de calcule de dessin Les fonctions de calcule supportées par le GPU sont les suivantes : Nom Détails Le polygone Le dessin 4-bit CLUT (16 colore / polygone) 8-bit CLUT (256 colore / polygone) 16-bit direct (32768 couleurs / polygone) Flat Shading, Gouraud Shading Texture Mapping La ligne Attirant La ligne Attirant Transmission d'images CPU ( Mémoire Tampon Mémoire ( Tampon CPU Autres Le mélange (semi-transparence), dithering, clipping Tableau: Fonctions de dessin du GPU Affichage de polygones Le GPU est capable d'attirer des polygones. Les polygones que le GPU opère sur la boîte être l'un ou l'autre 3-sidedertices ou 4-sided figure. Ces polygones sont attirés en précisant l'écran coordonne pour chacun du vof le chiffre. La forme des polygones, leur couleur et / ou texture peut tous être précisés. Par exemple, le GPU peut exécuter 'texture traçant'(dans lequel une image d'une superficie arbitraire de la mémoire tampon est collé à la surface du polygone), 'flat ombrageant' (couleur solide peint dehors) et 'Gouraud ombrageant'(peinture de gradation dehors, dans lequel chaque pixel du polygone est donné une couleur calculé des couleurs attribuée aux images et modèles de texture collé aux polygones sont transférés dans la mémoire tampon avant attirés le vertices). le polygone. Les données est emmagasiné dans le tampon de cadre dans 256 x 256 pages de pixel, dans lequel il pouvoir y avoir comme beaucoup de pages comme mémoire disponible permettra. Ces 256 x 256 superficies sont référées à comme'texturepages. La taille d'une texture la page dans le tampon de cadre est déterminé par la mode de couleur, comme décrite en dessous. Le processus CLUT Il y a 3 modes de couleur pour des modèles de texture: un 4-bit CLUT mode, un 8-bit CLUT mode et un mode 15-bit directe . CLUTS (Couleur Regard - En haut Des tables) sont employés dans 4-bit et 8-bit CLUT modes. UN CLUT est un ensemble de 16 ou 256 valeurs RGB emmagasinés dans la mémoire tampon. Ces valeurs RGB représentent les couleurs cette volonté obligatoirement b exposée affichée à l'écran. Chaque RGB valeur dans l'ensemble est numérotée dans l'ordre de partie redresser . Chaque nombre correspond à un pixel dans un sprite modèle avec l'associé RGB valeur employé déterminer le pixel colorer. CLUTS peut être sélectionné au sprite niveau qui signifie que chaque sprite peut avoir son propre indépendance CLUT. L'entrée 0 1 2 3 15 ou 255 Figurer: @@CLUT Structure @@nnn Aperçu De système 18 Chaque entrée dans le @@CLUT a la même structure comme un pixel seul dans 15 - peu mode directe. Donc, un @@CLUT est @+équivalent à 1 x 16 ou 1 x 256 pixels de données d'image. Le système Solide Le @@PlayStation système solide est fait en haut du Son Traitant L'unité (@@SPU) et le @@CD - ++ROM décodeur. Le rendement acoustique du @@CD - ++ROM décodeur entre le @@SPU, est mélangé avec le rendement du @@SPU, transformait alors en le rendement acoustique final. Le @@CD - ++ROM Décodeur Les données lisent du disque compact (@@CD) peuvent être reproduites directement comme rendement acoustique ou transférées comme semblées les données à mémoire principale. @@ADPCM données, définies par le @@CD - ++ROM @@XA norme, et CD-DA 16 - peu @@PCM données sont directement rendement comme son. Les données lisent du lecteur au @@CD - ++ROM tampon est traité par la source solide dans le @@CD - ++ROM le décodeur. Le résultant le signal acoustique est envoyé au @@SPU par le mixeur bâti en le décodeur. Le @@SPU Le Son Traitant L'unité (référait à comme le @@SPU) est équipé avec 24 voix et contrôles 512 @@KB @@oer la mémoire. Cette mémoire est connue comme le tampon solide. Comprimées @@waveform données emmagasinées dans le son @@buffis dos joué par le @@SPU à une fréquence @+échantillonnage de 44.1 @@KHZ, en réponse aux ordres du @@CPU Le tampon solide est composé d'un un espace dimensionnel de mémoire fait en haut de 2-byte unités. Le tampon solide ne peut pas être accédé directement du @@CPU. Le tampon solide peut être employé comme une superficie de travail pour @@reverb et autres effets spéciaux. Le tampon solide aussi sert comme un tampon temporaire pendant le transfert de données solides du @@CD ou @@SPU à mémoire principale. Le son le tampon permet des données à être transféré à mémoire principale sans interrompre la production solide. Chaque voix dans le @@SPU est capable d'opérations telles que variation de lancement, enveloppe traitant (@@attackOther Systèmes la pourriture, soutient, libère) et contrôle de volume. Le @@PlayStation est équipé avec les systèmes suivants en plus de ceux-là décrivaient au-dessus. L'aperçu De système @@nnn 19 Le @@GTE Le @@GTE est un @@coprocessor qui exécute le vecteur et matrice essentiel arithmétique d'opérations pour 3Dions 2 L' Environnement de Développement PlayStation La PlayStation est équipée avec le système d'exploitation PlayStation (OS). Cet OS a était développé spécifiquement pour le PlayStation's R3000 CPU et incorpore des concepts extrêmement nouveaux employés par les deux kit de développement Professionnel et Yaroze . Ce chapitre fournit un aperçu du système de développement professionnel PlayStation et décrit les caractéristiques du Net Yaroze . Le Système de Développement Professionnel de la PlayStation L’OS de la PlayStation a était développé spécifiquement pour le CPU PlayStation R3000 et est basé sur des nouveau concepts innovateurs. L'environnement et services fournis par le système d'exploitation d'une machine peuvent expliquer efficacement comment un programme peut être développé. Si le CPU et le dispositif de périphériques opèrent à vitesse suffisante, le programmeur peut compter sur les services fournie par le système d'exploitation pour contrôler l'équipement de façon active . L'application développée peut procéder doucement et rapidement car il n'y a pas besoin de consacrer du temps pour pousser les performances de l'équipement à sa limite. Ainsi, le programmeur est libre de se concentrer sur le développement d'applications . Le concept du modèle de l’OS de la PlayStation OS est de fournir à un développeur de jeu un environnement optimal pour développer des programmes « interrupt driven » facilement . Baser sur ce concept, le Kernel de l’OS de la PlayStation fournit comme la collection R3000 et le l’équipement de la PlayStation . L'accès à ces services est fourni par un ensemble de fonctions de bibliothèque écrites dans le langage C de programmation . Utiliser le C permet plus facilement de modifier et de mettre à jour le code source . De plus, la nature structurée du langage et l'aisance avec laquelle les fonctions peuvent être appelée permet de procéder aisément au développement du programme . . Le Système de Développement Professionnel PlayStation est basé sur les concepts décrits au-dessus . Il est composé d'un OS Kernel à petite-échelle qui fournit efficace interrompt traite et multi-tache le soutien, et une bibliothèque de gestion d'équipement et middleware pour haut - niveau entretient tel qu'un @@MIDI conducteur et système 3D de graphisme. La mémoire minimum nécessitée par l’OS a été limité à 64 KB, et l’OS a été conçu si bien que le développeur peut avoir le maximum de liberté possible sous le système de CD-ROM. L’équipe « SCES R&D » continuent à accroître la bibliothèque professionnelle de la PlayStation et s’aident des besoins des développeurs professionnels d'application. En offrant un haut degré de liberté, cependant, cet environnement nécessite des programmeurs ayant un haut niveau de conception dans le design et le développement . En pratique, au moment de la rédaction du guide, il y a plus de 1600 fonctions en langage C disponibles dans la bibliothèque PlayStation . Avec un aussi grand nombre de fonctions il est possible d’exécuter a seul éprouver dans beaucoup de manières différentes, chacun avec son ensemble propre d'avantages et désavantages . Le professionnel les promoteurs doivent choisir la méthode particulière qui est meilleure suite à la tâche à main . Le Système de Développement Professionnel PlayStation peut être décrit comme une collection de parties conçue pour l'emploi par des spécialistes, où l'accent est sur la variété et la liberté, plutôt qu'uniformité, consistance, ou l'aisance d'emploi. Le Système de Développement Net Yaroze Le Système de Développement Net Yaroze a été conçu dans le but de faire le développement l'environnement plus simple et plus facile à comprendre en offrant un sous-ensemble du Professionnel PlayStation Le système De développement . Les caractéristiques du Kit Net Yaroze sont décrites en dessous : Programmation en C Tout @PlayStation @OS services sont fournis comme C fonctions si toute programmation peuvent être faites dans C. L'aisance d'utilisation des Fonctions R3000 Interrompre traiter avec le R3000 est connu être compliqué. L' OS PlayStation simplifie cela la tâche en maniant tous interrompent @+traiter dans le Kernel . En outre, l'OS fournit un 'callback' le mécanisme à notifier l'utilisateur qui un interrompt est survenu . L'accent sur L'interruption de la synchronisation Verticale (VSYNC) VSYNC interrompt sont la clé à opération efficace du @@PlayStation depuis il était conçu expressément pour jouant des jeux vidéo. VSYNC interrompt sont le point focal du système de rappel de la PlayStation . Cela le système fournit une interface simple pour coder interrompt @+traiter des routines directement en C. La production de programmes compactes Le système Net Yaroze connecté à la PlayStation et le PC "hôte" de développement sont reliés par une interface sériel simple . Dans l'ordre à surmonter la vitesse lente de transfert de données de l'interface sérielle, programmes de système tel que graphisme, son, CD-ROM et le debuggage moniteur sont tous chargeaient dans la mémoire principale du boot le disque comme bibliothèques résidantes. Les adresses de ces bibliothèques résidantes sont écrites directement dans le programme d'application par le linker si les bibliothèques peut être accédé aisément par le programme. Ainsi la taille de le programme d'application, et de là le transfère le temps, est gardé à un minimum. Le parallèle Traitant Le @@PlayStation @@OS exécute @@CPU exécution de programme concurremment avec l'équipement consacré traitant. Dans le Net @@Yaroze système, parallèle traitant des fonctions sont fournis en faisant "sondant" central à programmant le style. 3 Développer une Application Ce chapitre présente un aperçu de comment une application PlayStation est créé avec le système Net Yaroze . Dans le Net Yaroze système, données d'application telle que son et graphisme classe (e.g. .bmp dossiers), peuvent être aisément convertis en formats ordinaires de dossier en PlayStation formats de dossier . Le procédé de développement d'application est basé sur que de norme C développement de programme, si norme les procédures de développement peuvent être employées . Le GNU C compilateur et associé des utilités sont fournis comme programmant des outils. Pour des descriptions détaillées de chacun des articles donnés en dessous, réfèrent s'il vous plaît au chapitre décrivant le l'équipement ou le chapitre décrivant le service de correspondre. La Création d' un Programme Le Net Yaroze procédé de développement d'application est basé sur le procédé ordinaire employé dans Le langage C le développement de programme s'il devrait être familier aux gens qu'on eu l'expérience développant des programmes dans C. Créer le code source Le code source devrait être économisé dans une norme MS-DOS dossier de texte utilisant tout rédacteur commercial conçu pour écrivant des programmes. Compiler et Lier Les dossiers de code source doivent être compilés et reliés créer un programme exécutable . Le Net Yaroze système fournit une bibliothèque spéciale, le GNU (compilateur C)et divers outils associés avec le compilateur pour créer le programme exécutable . Le test Les programmes exécutables peuvent être testés sur la PlayStation Net Yaroze . La console, SIOCONS, (décrite dans Le chapitre 17) peut être employé à transférer le programme exécutable de votre PC vers le Net Yaroze . Le Debugging Quand votre programme échoue opérer comme il devrait, vous pouvez debugger il au code source nivelle en utilisant le LE GNU debugger (gdb) fournis dans votre équipement Net Yaroze . GDB vous permet de marcher par votre programme et voir ce qui arrive comme il s'exécute . Utiliser les fichiers Makefile Makefiles sont une voie commode à simplifier la série d'opérations requise pour compiler et lier. Le 'Maké ordre, qui opère sur makefiles, permet des applications à être entretenu à un niveau haut. Faire est fourni le Net Yaroze . Faire une Bibliothèque de Routines Utiles Vous pouvez augmenter l'efficacité de développement d'application en mettant des routines fréquemment appelées et les sous-programmes qui sont partagés par des programmes différents en une bibliothèque. Dans le Net Yaroze système, plusieurs DE GNU les utilitaires sont fournies à assister ce procédé. Deux de ce sont 'ar', le bibliothécaire, qui bâtit une bibliothèque de les dossiers d'objet et 'nm', l'outil de gestion de symbole d'objet, qui fournit des détails (tels que le début adresser) de symboles dans des dossiers d'objet. (Voir Le chapitre 16, Programmer des outils, la documentation avec le compilateur GNU sur votre Net Yaroze PC disque et documentation commercialement disponible, pour plus l'information sur les utilités de GNU.) Créer Des données Les données requises dans une application PlayStation peuvent être partagées largement en trois catégories : les données graphique 2D, les données graphique 3D et le son . (Noter qu'un quatrième type, les séquences vidéo, tandis que disponible dans le Kit professionnel PlayStation Système de développement ne peut pas être employé dans le Net Yaroze système.) Chacun de ces types de données est économisé dans un format de fichier spécial PlayStation. Le Net Yaroze système fournit les utilitaires qui servent à convertir dossiers des formats ordinaires dans lesquels ils étaient créés en PlayStation formats . Données Graphiques 2D Données graphiques 2D employées par la PlayStation consiste en données d'image, qui est employé pour sprite données de modèle, et les données de texture . PlayStation - format 2D données de graphisme est référé à comme un fichier TIM . Il y a une utilité spéciale dans le Net Yaroze système à convertir données créait utilisant toute Fenêtre ou Macintosh outil de tableau à TIM données. Les données tapent : TIM – Image 2D (sprite modèle et texture) Les outils fournis : Les utilitaire de convertion pour les formats éxistant tels que BMP, PICT, (parmis d'autres) au format TIM l'environnement : Windows, MS - DOS Les données Graphiques 3D 3D données graphiques employées par la PlayStation est employé par 3D applications pour modeler des données . PlayStation - format 3D données de graphisme est référé en tant que fichier TMD . Dans le Net Yaroze système, il y a une utilité spéciale à convertir temporairement données de DXF format – le la norme 3D modelant le format - en l'artiste - orienté RSD dossier de format, alors en le binaire TMD format les données employées par la bibliothèque . Les données tape : RSD - modelant des données (définit la forme d'objets) TMD - modelant des données ( format binaire) Les outils fournissaient : DXF ( RSD format, RSD ( TMD convertisseurs de format Opérant l'environnement : Windows, MS-DOS Les données Sonores Les données solides employées par la PlayStation pouvoir être l'un ou l'autre données de score ou waveform données. Les données de score est connu comme SEQ données tandis que waveform données est référé à comme VAB données (Annotation: Ces données est aussi connu comme VAG données – VAG est un simple fichier sonore, tandis qu'un VAB est une collection de VAGS). Tous ces types de données peuvent être traiter directement en utilisant les outils de traitement du son . Dans le Net Yaroze système, un convertisseur spécial d'utilitaire AIFF données ou norme MIDI données (SMF), qui a été créé utilisant des outils sonores commerciaux , en SEQ et VAB données . Les données tape : VAG - waveform (simple - son) données VAB - waveform (dépose – série de VAGS) données SEQ - Marque des données Les outils fournissaient : SMF ( SEQ format, AIFF ( VAG convertisseurs de format Opérant l'environnement : Windows, MS-DOS La vérification de fichiers Le Net Yaroze système fournit un spectateur et joueur que, quand appelé du DOS prompt de votre PC, la volonté expose le son et données graphiques sur votre moniteur de la TV par le Net Yaroze PlayStation . Ainsi vous pouvez vérifier comment son et données graphiques regarderont quand votre application est réellement courue . Utilisant ces outils il est possible à capturer application courir - temps images . Le Maillon Entre Des données et Programmer Des outils Dans l'ordre à fournir dossiers de données solides et graphiques pour @@PlayStation applications, vous requérez de créer et/ou rédiger la norme - format dossiers de données dans une application commerciale graphique ou solide, emploient alors le Net @@Yaroze les utilités de conversion à les convertir en l'approprié @@PlayStation formats de dossier. Vous pouvez alors employer ceux-ci les dossiers comme partie d'un Net @@Yaroze application (où ils seront chargés en la mémoire principale et accédés par le programmer le code). Style de programmation La présente est une explication de programmer la caractéristique de méthodes de PlayStation applications ensemble avec une explication de PlayStation terminologie . Le Style fondamental Le flux fondamental de graphisme - traitant dans le PlayStation peut être décrit par la présente 3-step la séquence. Ces pas sont exécutés simultanément, permettant un flux continu de nouvelles données à l'écran . Fondamental Styliser Des pas : (1) Données décrivant un 'world' est placé dans la mémoire et est employé créer une structure connu comme a 'drawing commander ' liste. (2) Le 'drawing ordre ' liste est envoyée au GPU qu'attractions les polygones correspondants dans le encadrer le tampon . (3) L'image rendue dans le tampon de cadre est exposé affiché à l'écran . Les structures de liste sont créées dans la mémoire principale, tandis qu'images d'écran sont créées dans le tampon de cadre . Deux établit de structures de liste et deux ensembles d'images d'écran sont entretenues . Cela permet le CPU créer le premier énumérer tandis que le second est transféré au GPU . Parallèlement, le GPU peut attirer le premier écran l'image tandis que le second est exposé dans le tampon de cadre . GPU image attirant et exposant sont montrés dans la figure ci-dessous . Figurer: Le GPU Attractions une Image et Expose Un autre Simultanément Le problème avec attirer un cadre seul de 3D graphisme est qu'il peut être temps - consommant. Surmonter cette limitation, création d'image est partagée en deux procédés qui sont exécutés dans le parallèle : le dessin l'ordre polygone et création de liste attirant . Des pas Fondamentaux de style énumérés sur la page précédente, pas (1) est exécuté par le CPU selon le programme emmagasiné dans la mémoire principale . Le pas (2) est exécuté automatiquement par le DMA Contrôleur, un équipement le dispositif consacré aux données transfère . Le pas (3) est exécuté automatiquement par la partie d'étalage d'image du GPU. Le CPU, et conséquemment le programme, n'a aucune connaissance directe des détails de l'exécution de les pas (2) et (3). Le CPU est seulement impliqué en fournissant l'équipement consacré avec très petit les sommes de données telles que l'emplacement d'étalage et l'adresse de début pour des données transfère . Le bénéfice de exécutant ce traitant dans le parallèle est que le CPU peut consacrer presque tout son temps à créer attirer commander des listes. La technique de sauver une image précédente pour ultérieurement étalage aussi services à augmenter le temps qui est disponible pour la création d'image. Le japonais et USA TV NTSC récepteurs exposent un cadre chaque 1/30 ou 1/60 d'un second (30 ou 60 cadres sont exposés dans un second . En Europe, le taux de rafraîchissement est 25 ou 50 fois par le second). Tandis que un cadre est exposé, le prochain cadre est préparé pour l'affichage . Même si le prochain cadre n'est pas prêt dans les temps à être exposé, celui actuellement exposé peut être maintenu jusqu'à ce que le prochain soit prêt . Ainsi l'affichage est continu sur l'écran . Dans le PlayStation, le CPU, DMA Contrôleur et GPU travaille contrôler ensemble cette opération comme décrire dans la présente . Quand le CPU complète une structure de liste d'ordre de dessin pour un écran plein et, quand le DMA Le contrôleur a fini transférant la liste précédente au GPU pour attirer, alors le CPU instruit le DMA Contrôleur à transférer sa créait nouvellement liste au GPU. En même temps, l'image qui a été attiré est ensemble en haut pour l'étalage dans la partie d'étalage du GPU . Ces pas sont résumés comme suit : · CPU marques commandent la structure de liste · DMA transferts De contrôleur énumèrent la structure à GPU · GPU attractions une image tandis qu'il expose une autre image Cependant, ce procédé est gouverné par un délais . Il n'est pas possible à changer librement l'image exposée à tout moment . Si données d'image qui sont en train d'étant exposées est échangées avec autres données, image l'activité d'équipement d'étalage et décalages paraîtra sur l'écran comme bruit . Les données d'image changeant doit être exécuté à un temps quand l'acte d'exposer à l'écran est fini ( le GPU a fini faisant l'image affichée à l'écran et l'image entière est montré) . La période de temps pendant laquelle cela la condition est rencontrée est appelée le vertical blanking intervalle. Le vertical blanking survient à un taux de 60 fois par second en mode NTSC et 50 fois par second en mode PAL . Le début de chaque vertical blanking intervalle est communiquer au CPU par une interruption verticale de synchronisation fourni par l'équipement . Ainsi, le CPU complète la création de liste, attentes pour le DMA Contrôleur à compléter son transfert de données, alors attend pour l'interruption verticale de synchronisation . Quand ces trois conditions sont rencontrées, le CPU changer l'image à afficher dans le GPU et ensembles en haut l'adresse de la nouvelle liste dans le DMA Contrôleur . Une fois que ce procédé est complet, le CPU commence à créer la prochaine liste d'ordre de dessin . Il lit l'état de le Contrôleur et emploie cette information comme la base pour créer une nouvelle image . Le style fondamental d'exécution de PlayStation programmes implique une répétition de cette séquence. Double Buffering Double buffering est une technique par laquelle deux superficies équivalentes d'emmagasinage de données, ou tampons, sont employées à générer simultanément et transférer des données ou rendre et exposer une image. Ces tampons sont troqués à des temps appropriés si bien que les deux opérations peuvent être exécutées en parallèle . Dans la norme des programmes PlayStation, deux listes d'ordre de dessin appelaient 'ordering tables (OT) (réfèrent au tri Z, en dessous) sont entretenus dans la mémoire principale. Doubles buffering vitesses en haut la création d'image en permettant deux opérations à être exécutées en parallèle. Parallèlement, deux images d'écran sont entretenues dans le tampon de cadre pour garantir le temps pour la création d'image. Les fonctions " Non – bloquant" La plupart des procédés qui sont réellement exécutés par l'équipement consacré, tel que graphisme attirant et chargeant de CD-ROM, peut être fait en avec CPU exécution de programme . Les fonctions qui activent cette sorte de traitement de parallèle sont appelés "non - bloquant "des fonctions . Une non-bloquant fonction transmet la requête pertinente de traitement à l'équipement ou OS, termine alors une fois que la requête a été enregistré . Le traitement réel est exécuté après que la fonction non-bloquer ait terminé . Dans le Net Yaroze système, l'achèvement de traiter demandait au moyen de non-bloquer fonctions peut être vérifié à tout moment en appelant une fonction spéciale d'essai . Ce style de programmation, dans lequel un programme qui fait une requête de traitement et essaie explicitement pour l'achèvement de qui traitant, est appelé sondant (polling en Anglais). Le Z-Sorting Quand 3D objets sont exposés sur un 2D écran, une image correcte est obtenue seulement si les surfaces qui sont cachées par autres surfaces sont éliminés . Dans le PlayStation c'est réalisé au moyen d'un Z-sorting algorithme . Le Z-sorting est une méthode d'omettre les surfaces qui devraient être dissimulées en attirant chaque surface dans l'ordre, commençant de surfaces qui sont furthest du point de vue à ceux-là qui sont nearest . Dans des termes de rendre les exigences d'équipement et vitesse, Z-sorting est plus efficace qu'autres méthodes (telles que Z-buffering). Cependant, le temps nécessité pour trier tend augmenter dramatiquement comme le nombre d'éléments à être les accroissements triés. Le PlayStation exécute fiable Z-sorting en utilisant un OT (Commandant La table) et a attirant la structure de liste d'ordre . Un OT est une collection vide d'ordre de dessin. Un OT contient, pour chaque ordre de dessin, sa taille propre et une baguette qui précise le prochain ordre de dessin . Dans l'état initial, ainsi que le clair énoncer, les baguettes de chacun des éléments d'un OT tout point à l'élément adjacent . Autrement dit, élément N indique au élément N+1, et si sur . Dans l'état initial un OT est physiquement une collection, et logiquement , un célibataire la liste (voit Commandant Des tables, 6.5) . Chaque fois un ordre de dessin est créé, le nombre d'élément dans le OT collection est supposé être le coordonné évaluer le long d'un axe perpendiculaire à l'écran, (le z-axis, où x = vertical, y = horizontal et z = profondeur), et le nouvel ordre est inséré entre le correspondre OT élément de collection et l'élément auquel cet élément indique au moyen d'une opération de liste . La création d'ordres de dessin est exécuté indépendamment de la valeur coordonnée du z-axis . Cependant, les opérations de liste assurent que les ordres toute forme une liste seule . De plus, tout attirant les ordres sont reliés dans entre le OT élément représentant leur valeur coordonnée sur le z-axis et le la présente OT élément assurant ainsi que la liste sera dans un état trié. (Utilisant l'exemple au-dessus, le nouvel ordre est inséré dans la liste entre N et N+1, N indiquant maintenant au nouvel ordre et le nouvel ordre indiquant à N+1.) Ainsi, même si le nombre d'attirer des accroissements d'ordres, la somme de temps nécessitée pour le tri ne augmenter beaucoup, et traitement est plus vraisemblable à être fiable. Cela triait la liste reliée d'ordres de dessin est alors envoyé au @@GPU avec la fin qui tient le plus grand z-axis évaluer le premier (i.e. les objets de dessin @@furthest du point de vue premier). Comme c'est une opération simple, il est exécuté par l'unité consacrée d'équipement connue comme le @@DMA Contrôleur. (Le @@DMA Contrôleur est connue comme l'unité d'équipement qui exécute Z-sorting à vitesse haute. Il exécute aussi @@initialization de @@OTS à vitesse haute.) Ainsi, dessin peut être exécuté selon le Z-sorting algorithme, commençant de réapparaît loin à ce plus proche au point de vue. Critique Sectionner Le @@EnterCriticalSecti() fonction peut bloquer tous interrompt par une opération de logiciel. Les sections d'a le programme protégé dans cette voie sont référés à comme sections critiques. Dans une section critique, tous interrompt traiter dans le système d'exploitation, incluant le vertical sync interrompt, sont bloqués . Dans cet état plus de fonctions de bibliothèque n'opéreront pas correctement. Cependant, il y a des fonctions de bibliothèque, telle que Exec(), qui sont garantis opérer normalement seulement dans une section critique. La fonction ExitCriticalSectio() est employée partir une section critique permettant interrompt à encore être reconnaître . Les programmes sont toujours dans une section critique au début d'exécution. Synchroniser avec La synchronisation Verticale Interrompt Dans l'ordre à exposer images lisses sur l'écran du PlayStation, l'exécutant le programme doit être synchroniser avec le chronométrage de synchronisation verticale interrompt (VSYNCS). (Quand un VSYNC interrompt survient, toutes lignes d'une image ont été attirées sur l'écran. Voir le diagramme en dessous). Figurer: Exposant une Image affichée à l'écran L’OS PlayStation est équipé de deux méthodes pour réaliser synchronisation VSYNC : 1. VSYNC() Quand cette fonction est appelée avec 0 précisée comme le premier argument, VSYNC(0), il attend jusqu'à a VSYNC interrompt survient . La synchronisation explicite d'exécution de programme avec VSYNCS peut êtreréaliser en appelant cette fonction dans la boucle principale . 2. Le rappel Les rappels permettent certaines fonctions à être exécutés quand un @@VSYNC est généré. Pour des détails, s'il vous plaît référer à la section suivante, Fonctions De rappel . La fonction rappel La fonction VSYNCCALLBACK() est employée entrer une baguette à une fonction en le système de rappel. Cela cause la fonction à être exécuté automatiquement quand un VSYNC interrompt est généré . Une fonction précisée dans cette voie est appelée une fonction de rappel. Les fonctions de rappel sont exécutées avec le même étendue comme le point où VSYNCCALLBACK() était appelé, si données peuvent être partagées avec le programme principal par des variables externes. La pile réside dans 4 KB de mémoire réservée dans le système d'exploitation. Si l'espace employé par des variables automatiques dépasse cette taille, OS code sera détruit . Les fonctions de rappel sont exécutées comme sections critiques. Autrement dit, les fonctions sont exécutées avec interrompt l'handicapé. La prudence devrait être observée comme partant la section critique de dans un rappel la fonction peut conduire aux résultats imprévisibles. Tant qu'une fonction de rappel est exécutée, le flux principal du programme (quoique était exécuté quand le VSYNC survenu) est vigoureusement suspendu temporairement . Sur le retour du rappel fonctionner, l'information liée au flux principal, qui avait été économisée, est restaurée par le CPU et exécution du le flux principal reprend . Le traitement de Synchronisation Verticale Interrompt dans l’OS Aussitôt après un VSYNC interrompre survient, le OS communiquera avec les Contrôleurs et la Mémoire la carte avant toute fonctions de rappel sont appelées. (La communication avec la carte De mémoire peut seulement survenir dans les lire() ou écrire() fonctions.) . Quand les appels principaux de flux VSYNC() et attend synchroniser avec un VSYNC interrompt, communication avec les Contrôleurs auront lieu dans VSYNC() avant toute fonctions de rappel sont appelées. Quand contrôler les déclarations de la fonction de rappel, VSYNC() sortira et le flux principal reprendra . La synchronisation Verticale Multiple Interrompt Si une fonction de rappel prend un temps long à compléter, le prochain VSYNC peut survenir tandis que la fonction de rappel exécute encore. Interrompt sont handicapé pendant l'exécution d'une fonction de rappel, si subséquent VSYNCS sont économisés et tenus parquant. Quand déclarations de contrôle de la fonction de rappel, un VSYNC interrompt qui était tenu parquant devient valable et la fonction de rappel sera appelé encore. Permettant un VSYNC interrompt survenir tandis qu'une fonction de rappel exécute est indésirable. Ce comportement les retards de cause de boîte dans la mise à jour l'écran ou jouant la musique arrière et devrait être évité. Le rappel fonctionne devrait revenir rapidement et nécessiter comme petit temps aussi possible d'exécuter. Dans le rappel fonctionner, les comptoirs peuvent être employés déterminer où la fonction de rappel prend trop beaucoup de temps. Par exemple, le VSYNC(1) fonction, qui revient le nombre de lignes horizontales attirée (HSYNCS) depuis il était dernier appelé, la boîte être employée comme un comptoir de brouillon et est utile en trouvant des sections de code qui pourrait ralentir le le rappel fonctionne. (Voir en dessous pour des chronométrages de VSYNCS et HSYNCS.) Annotation que VSYNC(1) peut être employé dans VSYNCCALLBACK() malgré VSYNCCALLBACK() étant une section critique . L'annotation que seulement un célibataire interrompt peut être emmagasiné et tenu parquant à un temps donné. Ainsi, si deux ou plus VSYNC interrompt survient pendant l'exécution d'un rappel, seulement un VSYNC interrompt sera emmagasiné. Les chronométrages de VSYNCS et HSYNCS: VSYNCS : 50 (PAL) ou 60 (NTSC) synchronisation verticale interrompt par second HSYNCS : 311(PAL) ou 262 (NTSC) par VSYNC La mode vidéo La fonction de bibliothèque SetVideoMode() établit la mode actuelle de signal de vidéo à l'un ou l'autre PAL ou NTSC. Le mode de signal de vidéo de défaut pour le PlayStation est NTSC, mais la mode peut être changée en appelant SetVideoMode() antérieurement à appelant tout autre fonction . L'environnement applicatif Dans cette section, la carte de mémoire, baguette de pile initialization et ordinaire début - en haut des routines qui concernent à courant des applications sont décrits . Le schéma de la mémoire Dans le système Net Yaroze, le schéma de la mémoire destinée aux application se compose comme ci-dessous. Figurer: La mémoire trace Le OS lui-même ('System superficie ' dans le diagramme d'au-dessus) est situé au bas - adresse partie de mémoire, et le la pile de système, qui est le OS opérant l'espace, est située à l'haute - adresse partie de mémoire. Tout autre la mémoire est disponible à l'application. Démarrage des routines Quand une application est activée, un programme appelait le début - en haut la routine est exécuté antérieurement à principal(). Le le début - en haut la routine exécute un nombre de fonctions incluant initialization de baguettes globales et concentrant de les variables externes que n'ont pas de valeurs initiales. Le Net Yaroze ordinaire début - en haut la routine est fourni comme séparé du Net @@Yaroze bibliothèque. Les pointeur stack La valeur de la baguette de pile d'application est héritée de que du programme de parent. Où il n'y a pas le programme explicite de parent, la valeur de baguette de pile d'application est héritée de la pile de système. 4 Le Net Yaroze Bibliothèque La bibliothèque Net Yaroze fournit des services cet emploi de marque de PlayStation caractéristiques telles que graphisme, son, La mémoire carde et CD-ROM gestion. La bibliothèque fournit aussi norme C et fonctions de math. Cela le chapitre donne un sommaire de chacun de ces services. Les services graphique Ces services de bibliothèque font l'emploi des caractéristiques de graphisme du PlayStation. · Encadrer L'accès De tampon Les services fondamentaux pour accéder le tampon de cadre et fixer le dessin et exposer des environnements. · Graphisme Intégré Divers services relativement à 2D et 3D graphisme. Les objets créés avec des outils externes peuvent être contrôler par ces services. Les services Sonores Ces services de bibliothèque fournissent l'arrière-plan playback de séquences solides qu'on auparavant été enregistré comme marquer des données (MIDI - type données). Les services Standard Ces services de bibliothèque fournissent le soutien pour la norme C fonctions de le langage . · Fonctions standard C Ce sont un sous-ensemble de la norme C bibliothèque de le langage et inclut des fonctions de caractère, mémoire l'opération fonctionne, essais de classe de caractère, non-locaux sauts, et autres fonctions d'utilité . · Fonctions Mathématiques Ces fonctions conforment au ANSI/IEEE754 norme. Ils incluent un paquet qui fournit flottant indiquer l'émulation arithmétique dans le logiciel. Autres Services Ces services de bibliothèque fournissent le soutien pour PlayStation OS fonctions telles que L'API, CD-ROM la gestion, et gestion périphérique de dispositif entretient · Gestion de Kernel Une interface (API) entre des applications et l’OS PlayStation . · Gestion du CD-ROM Entretient pour des données lire d'image, programmes et données solides du CD-ROM lecteur ainsi que playback de CD-DA (son numérique) sembler . · Gestion Périphérique De dispositif Les services pour gérer les dispositifs périphériques tels que la carte De mémoire et Contrôleur, et pour gérant des rappels pour interrompre traiter. L'organisation des fichiers La présente est une description de dossiers liée au Net Yaroze bibliothèque . · Fichier d’entête Employer un service fourni par le Net Yaroze bibliothèque, vous requérez d'inclure un dossier de plongeon dans la source le code qui définit les variables et fonctions employées par ce service. La présente est une description de comment Net Yaroze dossiers de plongeon de bibliothèque sont organisés. Tout PlayStation les fonctions sont définies dans le dossier 'libps.h'. Inclure toujours 'libps.h' quand créant des programmes. Le dossier Contente Des annotations Fichier Contenu Notes abs.h abs() inclure dans stdlib.h asm.h Définitions de registre R3000 employées avec l'assembleur(*) assert.h assert() convert.h atoi(), atol(), etc. ( la conversion de type) inclure dans stdlib.h ctype.h isupper(), toupper(), etc. (l'évaluation de type) fs.h macro définitions pour l'emploi interne libps.h tous services liés à PlayStation fonctions toujours l’inclure limits.h C taper la limite macro définitions malloc.h malloc(), etc. inclus dans stdlib.h memory.h memcpy(), etc. ( les opérations de mémoire) inclus dans strings.h qsort.h qsort() inclus dans stdlib.h r3000.h R3000 définitions de mémoire employées avec l'assembleur(*) rand.h rand(), @@srand(), etc. ( la génération aléatoire de nombre) inclure dans stdlib.h romio.h - pour l'emploi interne setjmp.h setjmp(), @@longjmp(), etc. (sauter sur grandes superficies) stdarg.h va_start(), va_end(), etc. ( le nombre variable d’arguments) stddef.h taper des définitions stdio.h norme I/O stdlib.h fonctions standard string.h strcpy(), etc. (opérations sur les chaîne de caractères ) identiques à strings.h strings.h strcpy(), etc. (opérations sur les chaîne de caractères ) sys/errno.h errno et définitions d'erreur sys/fcntl.h macro définitions employées par sys/file.h sys/file.h classer I/O macro définitions employées par ouvertes(),proches(), etc sys/ioctl.h macro définitions pour l'emploi interne sys/types.h Des définitions des types Tableau : Dossiers d’entête de la Net Yaroze * Se référer au site web Net Yaroze pour les informations liées aux programmes en assembleur. Bibliothèque Classe Le Net Yaroze dossier de bibliothèque, libps.a, est automatiquement relié lors de la compilation s'il ne requiert pas de être référé explicitement à . Le traitement de Données Le Net Yaroze bibliothèque peut directement traiter le graphisme et données solides qui sont dans le PlayStation format sans la modification. Les données qui est dans PlayStation format peuvent être créées par la conversion de norme le graphisme et solide classe des formats. (Voir Le chapitre 13, Créant PlayStation Applications, ou le Net Yaroze La toile place pour plus d'information.) 5 L'accès à la mémoire tampon Les services d'accès de tampon de cadre fournissent des fonctions fondamentales telles qu'entourage du dessin et étalage les environnements, et transfert de données d'image au tampon de cadre . Ces services peuvent être partagés largement en la présente trois groupes : (1) Environnement - couchantes fonctions (2) Encadrer - tampon - accès fonctions (3) Attirant - contrôle fonctions Description de la mémoire Tampon Les pixels D'un point de logiciel de vue, un tampon de cadre est un 1024 x 512 deux - dimensionnel espace d'adresse composait de 16-Bit des pixels. Le sommet partait le pixel a le coordonne (0, 0) et le pixel droit fond a le coordonne (1023, 511). Chaque pixel est fait en haut de trois 5-bit articles de données et une semi - transparence drapeau. Les articles de données chaque gamme de 0-31 et représente @@RGB valeurs d'intensité. La semi - transparence drapeau est seulement valable quand le pixel est employé comme une texture . S: Semi - transparence FLAG(STP) Figure: La structure d’un pixel L'espace d'affichage La partie du tampon de cadre qui est exposé affiché à l'écran est une superficie rectangulaire connu comme le 'display area'. La taille de la superficie d'étalage est déterminée par un @@GPU fonction d'étalage. La taille peut être sélectionnée comme une paire de les valeurs variant de 256 x 240 à 640 x 480 pour @@NTSC et 256 x 256 à 640 x 512 pour LE COPAIN. Entrelacer la mode est sur permis quand l'hauteur d'étalage est 480 pour @@NTSC ou 512 pour PAL.SOUND @@nnn L'espace de calcule du dessin Le dessin est limité à une superficie rectangulaire, référé à comme le 'drawing superficie ' dans le tampon de cadre. Le attirant la superficie peut être tout évalué qui peut être logé dans le tampon de cadre. L'environnement des Fonctions sélectionnées L'information liée attirer comme un tout, tel qu'où dessin doit être exécuté dans le cadre le tampon et le point de départ (décalage) pour le dessin est référé à comme le 'drawing environnement ' . Dans le même la voie, information liée exposer du tampon de cadre, tel que que partie du tampon de cadre à exposer, est référer à comme le 'display environnement '. L'environnement de dessin est ensemble en haut utiliser le GsInitGraph() la fonction, et l'environnement d'étalage est ensemble en haut utiliser le @@GsDefDispBuff() fonction. GsInitGraph() prend les arguments suivants : x_res Résolution Horizontale (256/320/384/512/640) Précise la résolution horizontale d'écran ainsi que la largeur de l'étalage et attirer des superficies. Le dessin est attaché à la largeur précisée . y_res Résolution Verticale (240/480) pour @@NTSC et (256/512) pour LE COPAIN. Précise la résolution verticale d'écran, et l'hauteur de l'étalage et attirer des superficies. Le dessin est attaché à l'hauteur précisée. intl Attribue Entrelacé exposer le drapeau (peu 0) Non - entrelacé étalage est ensemble quand peu 0 est 0, et entrelacé l'étalage quand peu 0 est 1. Le peu d'ensemble 0 à 1 quand utilisant une hauteur d'étalage de 480 en NTSC ou 512 en mode PAL . Décaler le drapeau de spécification (bit 2) Quand bit 2 est à 0, le GTE caractéristique de décalage est permise. Quand peu 2 est 1, le GPU caractéristique de décalage est permettre. Le GPU caractéristique de décalage est normalement enabled.nnn Son Si c'est ensemble à 1, le moteur de dessin exécutera dithering quand pixels de dessin. vram VRAM mode Quand VRAM mode est 0, 16 peux sont exposés comme 1 pixel. Quand @@VRAM mode est 1, 24 peux sont exposé comme 1 pixel. Quand @@VRAM mode est 1, seulement accès de tampon de cadre fonctionne tel que le LoadImage() fonction, sont disponibles. L'autre attirant des fonctions, telles que le @@GsDrawOt() fonction sont seulement disponibles quand @@VRAM mode est 0. GsDefDispBuff() prend les arguments suivants: x0,y0 Le sommet partait coordonne le tampon d'image 0. x1,y0 Le sommet partait coordonne le tampon d'image 1. Les tampons d'image '0' et '1' sont superficies rectangulaires dans le tampon de cadre. Le sommet partait des coins des tampons d'image sont (x0, y0) et (x1, y1), respectivement. La largeur et hauteur des tampons d'image sont précisés avec le x_res et y_res arguments du GsInitGraph() fonction. Un tampon d'image est employé comme la superficie de dessin et le l'autre comme la superficie d'étalage. Les tampons sont troqués chaque fois GsSwapDispBuff() est appelé qui fournit pour la mise-en-oeuvre de double buffering. Les fonction d'accès à la Frame Buffer Les fonctions permettent en dessous données à être transférées dans le tampon de cadre et entre le tampon de cadre et la mémoire principale. Ces fonctions sont la seule voie à manipuler directement données dans le tampon de cadre. Fonctionner La De nom de Transmission Nom de la fonction Direction de la fonction LoadImage() mémoire principale ( Frame Buffer StoreImage() Frame Buffer ( mémoire principale MoveImage() Frame Buffer ( Frame Buffer Tableau : Fonctions d'accès à la Frame Buffer Ces fonctions sont non-bloquant des fonctions, c'est-à-dire, ils terminent aussitôt que les requêtes d'accès a été enregistré par le système. Jusqu'à 64 requêtes d'accès peuvent être enregistrées (ce nombre est le total pour toutes trois fonctions). Ces fonctions bloqueront, i.e. la volonté ne termine pas, jusqu'à la requête d'accès a été enregistré . Les Fonctions du processus du dessin Les fonctions en dessous contrôle attirant (spécifiquement, le transfert d'attirer des ordres au GPU par le DMA Contrôleur) et cadre - tampon - accès requête traitant . Nom de la Fonction Action GsDrawOT() Début du procéssus de calcule du dessin DrawSync() Attend pour la terminaison des deux dessin et le traitement de Frame Buffre les requêtes d'accès, ou déclarations demandent le statut . ResetGraph() Fin du procéssus de calcule du dessin Tableau : Les fonctions de contrôle du calcule du Dessin Le procéssus d'affichage du mode non-entrelacée Un contrôles simples de règle attirant dans le mode non - entrelacée: les tampons d'image ne sont pas troqués jusqu'à la fin du processus . Après que DrawSync(0) ait détecté que le calcule du dessin est terminé, VSYNC(0) est exécutéc. Cela retarde le programme jusqu'à la prochaine interruption de la synchronisation verticale . Après les interruption survenues, les tampons d'image sont troqués utilisant GsSwapDispBuff(). while (1) { .... DrawSync(0); VSYNC(0); GsSwapDispBuff(); .... } //End while La mode Entrelacée Dans la mode entrelacée, pixels avec le vertical numéroté même et curieux coordonne sont exposés alternativement chaque 1/60th d'un second dans NTSC, ou chaque 1/50th d'un second dans LE COPAIN. Cette action force automatique double buffering de l'étalage. Ce comportement, qui applique uniquement à mode entrelacée, peut fournir des économies significatives dans le tampon de cadre l'espace depuis la superficie d'étalage et la superficie de dessin sont parfaitement empilés en dessus les unes des autres. Cependant, le la superficie d'étalage est toujours troquée chaque 1/60th d'un second dans @@NTSC ou 1/50th d'un second dans LE COPAIN, indépendamment de comment le programme exécute. Donc, le programme doit troquer les tampons d'image à exactement la même chronométrer comme la superficie d'étalage. Attirant Le contrôle dans La mode Entrelacée Dans la mode, calcul et dessin entrelacé doit toujours être complété dans 1/60th d'un second (dans NTSC) ou 1/50th d'un second (en mode PAL). Donc, il est essentiel ce tampon troquant après un vertical la synchronisation interrompt être exécutée indépendamment de si dessin a complété. Ainsi, ResetGraph(1) est appelé suivi VSYNC(0) plutôt qu'utilisant DrawSync(). while (1) { .... VSYNC(0); ResetGraph(1); GsSwapDispBuff(); ....; } Kanji [Caractère Japonais] Fonts Le PlayStation est équipé avec 16 point x 16 point kanji fonts emmagasinaient comme cartes binaires de peu. Vous pouvez employer ceux-ci créer des messages qui sont faciles à lire . Format de données 16 - point x 16 – point la carte binaire de peu 15 - point x 15 - point taille des kanji Contementaire JIS Niveau 1 norme kanji/+non - kanji/le langage étrangère, gothic Non-kanji inclut l'espace premier (0x2121) Sytème de codage SHIFT- JIS Tableau des caractères Kanji . Les données de fonts est emmagasiné commencé avec le coin gauche supérieur du modèle et suivi par le droit supérieur l'octet, comme montrait dans la figure ci-dessous. Les peux sont commandés avec le peu plus significatif (@@MSB) à la gauche. Format des données Les services d'accès de tampon de cadre incluent le Krom2Tim() fonction, qui convertit un CHANGEMENT - @@JIS ficelle à 4- bit TIM données, ainsi que étalage de caractère fonctionne ces courants de fonts d'emploi pour @@debugging. Pour des détails référer à la Bibliothèque Référence Le manuel et le CHANGEMENT - @@JIS données de fonts et code sur le Net @@Yaroze @@PC @@CD sous \psx\essayer\sjiscode. 6 Le graphisme Intégré Le service intégré de graphisme opère sur 3D et 2D graphisme tel que polygones, @@sprites et l'arrière-plan réapparaît. Les fonctions suivantes sont soutenues par le service intégré de graphisme. 1. Les systèmes coordonnés hiérarchiques 2. Le calcul léger de source (3 compare des sources légères, profondeur signalant, et lumière ambiante) 3. L'objet automatique divisant ( subdivision de polygone) et semi - transparence traitant 4. La gestion de point de vue 5. Le Z-sorting 6. OT (la table de commande) initialisation, compression et organisation hiérarchique 7. Frame double buffering 8. L'ajustement automatique de proportion d'aspect 9. 2D attaché, processus de décalage 10. Sprites / arrière-plans / double En outre, données créées avec tous les outils de graphisme peuvent être maniées sans la modification par le le graphisme intégré entretient. Le 3D format de modèle employé par le service intégré de graphisme est appelé 'TMD'. TMD formate efficacement emmagasine l'information nécessité définir un 3D modèle tel que polygone vertices, surface normals et texture coordonne. Le 2D données de graphisme formatent employées par le service intégré de graphisme est appelé 'TIM'. @@TIM formate des magasins la résolution d'image, nombre de couleurs et colore lookup table (CLUT) information, ainsi que données de pixel. Pour des détails du TMD et TIM formats référer Au chapitre 15, Outils De graphisme. Les différentes séquences du processus L'organigramme montre en dessous les pas dans le procédé de dessin pour le service intégré de graphisme. Lire des données De contrôleur Reset GPU Troquer des tampons doubles Enregistrer le paquet(s) dans @@OT si bien que le l'image peut dépister peut être clarifiée Attirer OT Figure : Le service Intégré De graphisme Attirant Le procédé La séquence de procédé de dessin est décrite en dessous. 1. Initialiser le dessin et exposer des environnements et variables à être employées.(GsInitGraph, GsDefDispBuf) 2. Les paramètres d'ensemble à réfléchir données De contrôleur. 3. Etablir en haut le point de vue. (Le GsSetRefView2, GsSetView2) 4. L'ensemble en haut la création de paquet travaillant la superficie. (GsSetWorkBase) 5. Clarifier la commandant la table. (GsClearOt) 6. Calculer le LS/LW ( Ecran Local/ Monde Local) matrices. (GsGetLs, GsGetLw) 7. Etablir en haut le LS/LW ( Ecran Local/ Monde Local) matrices. (GsSetLightMatrix, GsSetLsMatrix) 8. Après avoir exécuté le calcul coordonné, transformation perspective et calcul léger de source, entrer les paquets de dessin de l'ordre table. (Le GsSortObject4) 9. L'attente pour attirer compléter, attend alors pour V-blank. (DrawSync, VSYNC) 10. Troquer les tampons doubles. (GsSwapDispBuff) 11. Attirer la commandant la table. (GsDrawOt) 12. Le retour à marcher 2. * LS/LW réfère au local/ local et transformations d'écran/ transformations mondiales, respectivement. Ceux-ci la transformation matrices sont employés en perspective transformation et calcul léger de source. Référer s'il vous plaît à La transformation Coordonnée & Calcul Léger De source, en dessous. Le système De graphisme Initialization Le système de graphisme est initialisé utilisant le GsInitGraph() fonction. GsInitGraph() établit aussi l'écran la résolution et entrelace la mode. GsInitGraph() doit être appelé avant le service intégré de graphisme est employé comme il initialise divers système interne variables.Integrated Graphisme Le GsDefDispBuff() fonction est employée définir les deux superficies rectangulaires du tampon de cadre employé pour double buffering. En outre, GsDefDispBuff() initialise la superficie +attacher et GPU décalage coordonne à empêcher attirer dehors de la superficie de dessin. La superficie attacher et GPU décalage coordonne peut être changé utilisant le GsSetClip2D() et GsSetOrign() fonctions, respectivement. Le @@GsSwapDispBuff() fonction est employée troquer des tampons doubles, tandis que le @@GsGetActiveBuff() fonction peut être employé déterminer que tampon contient le courant attirant la superficie. Le point de vue Une crevaison 2D écran DE TV ne peut pas exposer 3D graphisme directement. Plutôt, un 3D graphique doit être attiré sur un 2D l'écran s'il paraît trois dimensionnel. C'est fait en projetant 3D espace à un écran théorique situé devant un point de vue particulier. La projection Distance (h) Dépister Le point de vue 3D graphique Figurer: Projetant un 3D Image à un 2D Ecran Donc, dans l'ordre à projeter une image à l'écran physique, un point de vue et un besoin théorique d'écran être précisé. Fixant le point de vue Le point de vue est ensemble en initialisant les membres de l'un ou l'autre un GsRVIEW2 ou GsVIEW2 structure, et appelant l'un ou l'autre le GsSetRefView2() ou GsSetView2() fonction, respectivement. @@nnn Graphisme Intégré 60 Le GsRVIEW2 et GsVIEW2 établissait le point de vue utilisant des méthodes différentes. Le GsRVIEW2 établit le coordonne le point de vue et une référence indique, tandis que GsVIEW2 établit directement en haut une matrice pour la conversion au le point de vue système coordonné. Vous pouvez établir en haut un système coordonné hiérarchique utilisant GsVIEW2 ou GsRVIEW2. Par exemple, si le référencer le système coordonné est le système coordonné mondial, le résultat est une caméra ordinaire qui capture un objectif voir. Alternativement si la référence système coordonné est le système coordonné local d'un l'objet, alors le résultat est une caméra qui capture la vue subjective de cet objet. Fixant L'écran Théorique L'écran théorique est situé devant le point de vue. Le @@GsSetProjection() fonction est employée à l'ensemble h, la distance de projection, qui est la distance du point de vue à l'écran théorique. Le Théorique Dépister L'hauteur et largeur de l'écran théorique devrait apparier la résolution de l'écran physique. Pour l'exemple, si la résolution de l'écran physique est 640 x 480, la largeur de l'écran théorique devrait être l'ensemble à 640 et l'hauteur devrait être établie à 480. Quand la proportion de la résolution horizontale d'écran à sa résolution verticale est 4 à 3, les points sur le l'écran aura une forme régulière. Si la résolution réelle d'écran est en sorte que les points sont irréguliers (qui est, la proportion d'horizontal à résolution verticale n'est pas 4 à 3), la résolution verticale doit être ajustée conformément. Par exemple, quand la résolution d'écran est 640 x 240, objets devraient être exposés avec une - moitié de leurs valeurs verticales originales si bien que les objets paraîtront comme si leurs points étaient réguliers dans la forme. La Projection Distance La distance de projection est employée ajuster le domaine de vue. La plus grande la projection distance, plus l'étroite est le domaine de vue (cela tend vers une projection parallèle). par contre, la plus petite la projection la distance, le plus large est le domaine de vue. Un domaine large de vue accentue la perspective, créant le l'impression d'objets distants et proches du point de vue. Les paquets Un 'packet' (ou 'primitivé) est la plus petite unité d'ordres de dessin manié par le @@GPU. Les paquets peuvent être généré utilisant le GsSortObject4(). Une grande superficie de travail doit être affectée avant de utiliser cette fonction comme les paquets peuvent croître dépendant du nombre et type de polygones. Cette superficie de travail est affectée utilisant le Le graphisme Intégré @@nnn 61 @@GsSetWorkBase() fonction, tandis que le @@GsGetWorkBase() fonction peut être employée déterminer combien de la superficie de travail a été employée pour la génération de paquet. Les paquets dans la superficie de travail de génération de paquet sont employés pendant attirer. Conséquemment, GsSortObject4() devrait n'être pas employé accéder la superficie de travail pendant attirer. Plutôt, double @@buffering devrait être employé à gérer l'accès de paquet en affectant deux @+séparé superficies de travail de génération de paquet. Commandant Des tables Les polygones l'un ou l'autre seront cachés ou visibles quand 3D graphisme seront exposés. Les polygones sont cachés quand ils sont obscurcis par autres polygones qui sont devant les le long du Z axe. Une commandant la table est un mécanisme pour contrôler l'étalage correct de polygones par un simples l'algorithme connu comme un Z-sort. Le Z-sorting assure que polygones seront attirés dans l'ordre correct si bien que ceux-là dans le dos seront obscurcis par ceux-là devant . Une commandant la table (@@OT) peut être pensée de comme un Z axe 'ruler'. Chaque marque d'échelle sur ce souverain peut tenir comme beaucoup les polygones comme requis. Le tri est basé en moyen Z valeur de polygones, et est exécutée en plaçant des polygones à l'échelle la marque sur le souverain correspondant à leur moyenne Z valeur. Les polygones sont transférés à la puce @+rendre dans l'ordre qu'ils étaient placés le long du souverain. Caché ainsi surfaces sont enlevés et polygones parus dans les correct commander comme progrès de dessin. @@GsOT Un 'GsOT' structure est employée gérer une commandant la table (@@OT). Le @@GsOT structure contient une baguette au @@OT (le 'org' membre) et un nombre de paramètres indiquant les attributs de L'OT. La résolution du Z axe (i.e. les marques de souverain) peuvent être précisées avec le membre 'length'. La longueur la boîte être établie à tout un de 14 niveaux de 2 1 à 2 14 . Le GsOT_TAG Un GsOT_TAG représente une échelle marque le long du Z souverain d'axe. Un @@OT est défini comme une collection de GsOT_TAGs avec le nombre d'éléments de la collection égale à 2 longueur . par exemple , si le membre 'length' a une valeur de 4, le réel @@OT sera une collection de 16 GsOT_TAGs (16 = 2 4 ). @@nnn Graphisme Intégré 62 @@OT @@Initialization Le @@GsClearOt() fonction est employée initialiser un @@OT. @@GsClearOt() prend trois arguments: 'offset', 'point' et 'otp'. 'otp' est une baguette au @@OT maître. ('offset' et 'point' sont décrits ultérieurement.) Quand un @@OT l'est initialisé n'est placé dans un état vide avec pas de polygones relié à lui. Un @@OT doit être initialisé chaque cadre, antérieurement à recourant. Le multiple @@OTS Le service de graphisme soutient l'emploi de multiple @@OTS. Le @@GsSortOt() fonction peut être employée fusionner et trier le multiple @@OTS dans un global @@OT. La typique Z valeur pour le local entier @@OT est emmagasiné dans le @@GsOT le membre 'point'. 'Point' est employé quand insérant et triant le local @@OT en le global @@OT. Utilisant le multiple @@OTS permet l'ordre de trier être contrôlé. Par exemple, vous pouvez trier dans des unités d'objet en préparant un local @@OT pour chaque objet. Ce local @@OTS sont alors trié et fusionné ensemble en un seul global @@OT. Cette technique est extrêmement utile si la profondeur le rapport entre proteste (i.e. qu'objets sont devant et derrière) est déjà connu. (Par exemple: quand vous regardez en bas d'un hélicoptère sur des voitures qui conduisent le long d'une route vous connaissez déjà que l'hélicoptère est devant toutes les voitures.) @@OT Compression Utilisant @@OTS augmente la vitesse de trier, mais @@OTS consomme une somme considérable de mémoire. Vous pouvez réduire une OT'S consommation de mémoire en faisant 'length' plus petit. Faisant cela, quoique, réduit le triant la résolution, et peut résulter en vacillant des polygones sur l'écran. @+diminution la somme de mémoire consommé par un @@OT sans réduire la résolution se peut utilisant un décalage. Décalant peut être employé quand vous connaissez que les Z valeurs des polygones à être triées sont tous plus haut qu'un certain évaluer ('x'). Décalant est réalisé en fixant le 'offset' paramètre de @@GsClearOt() à la valeur la plus basse ('x' ) . Avec décalant, le @@OT n'emploie pas en haut toute mémoire pour la partie de la table en dessous la valeur de décalage ('x'), ainsi réduisant la somme de mémoire @+consommer. Le graphisme Intégré @@nnn 63 La transformation Coordonnée & Calcul Léger De source La transformation Coordonnée Le @@PlayStation emmagasine tout le @@vertices des objets à être exposé comme 3D coordonne si l'image d'un l'objet, comme vu de points de vue différents, peut être généré uniquement par le calcul. Cela permet le le point de vue de jeu à être sélectionné librement comme l'un ou l'autre point de vue du joueur, ou le point de vue d'un du les caractères dans une scène. Dans l'ordre à exposer objets exprimé dans des termes de 3D coordonne sur un écran, 3D images requièrent d'être explicites comme 2D images par une transformation projective. La transformation projective est exécutée par multipliant le 3D matrice coordonnée par un 3 x 3 matrice de rotation et ajouter un 3D vecteur de traduction. Le le résultat est alors partagé par la distance formé le point de vue dans l'ordre à donner perspective (si objets davantage paraître loin plus petit). Par exemple, si l'objet à être exposé est décrit par le système coordonné (@@Xw, @@Yw, @@Zw), et (@@Xs, @@Ys, @@Zs) représente le système coordonné de l'écran théorique, l'équation suivante (Equation 1) exprime le calcul projectif de transformation. L'équation 1 @@Xs @@Ys e ' e" e ^ e ^ êZs u ` u ^ u ' u ' u ' = LE SW13 SW11, SW12, LE SW21, SW22,SW23 LE SW32,SW33 e ' e" e ^ e ^ êSW31, u ` u ^ u ' u ' u ' @@Xw @@Yw @@Zw e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' + @@SWX @@SWY @@SWZ e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' * @@Swij est le monde/ matrice @+théorique de transformation d'écran. Si vous voulez exposer plus que un objet, chacun duquel est indépendamment mobile, vous besoin d'attribuer un système coordonné (@@Xl, @@Yl, @@Zl) à chaque objet indépendant. Dans le @@PlayStation les trois types systèmes coordonnés sont référés à comme suit: (@@Xl, @@Yl, @@Zl) système coordonné Local (un système coordonné pour un objet particulier et centrait sur qui proteste) (@@Xw, @@Yw, @@Zw) système coordonné Mondial (un système coordonné réparé au monde dans lequel objets sont @+placer) (@@Xs, @@Ys, @@Zs) Théorique dépister le système coordonné (un système coordonné réparé à un écran théorique et @+centrer sur un point de vue) @@nnn Graphisme Intégré 64 @@Vertex coordonne sont habituellement exprimés dans des termes du système coordonné local, si la présente les transformations sont nécessaires dans l'ordre à exposer un objet sur un écran théorique. le local @@® monde @@® dépiste L'équation 1 (au-dessus) et Equation 2 (en dessous) exécute ensemble la transformation projective nécessaire le calcul. L'équation 3 montre le calcul combiné ensemble, tandis Qu'équation 4 le présente dans a réduit et simplifié former. L'équation 2 @@Xw @@Yw @@Zw e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' = @@WL @@WL 11,WL12,WL13 21,WL22,WL23 31,WL32,WL33 e ' e" e ^ e ^ êWL u ` u ^ u ' u ' u ' @@XL @@YL e ' e" e ^ e ^ êZL u ` u ^ u ' u ' u ' + @@WLX @@WLY e ' e" e ^ e ^ u ` u ^ u ' u ' êWLzu' L'équation 3 @@Xs @@Ys e ' e" e ^ e ^ êZs u ` u ^ u ' u ' u ' = @@SW LE SW13 SW11, SW12, LE SW21, SW22,SW23 e ' e" e ^ e ^ êSW31, u ` u ^ u ' u ' 32,SW33U' @@WL @@WL 11,WL12,WL13 21,WL22,WL23 e ' e" e ^ e ^ êWL31,@@WL u ` u ^ u ' u ' 32,WL33U' @@XL @@YL @@ZL e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' + LE SW13 SW11, SW12, LE SW21, SW22,SW23 LE SW32,Sw33 e ' e" e ^ e ^ êSW31, u ` u ^ u ' u ' u ' @@WLX @@WLY e ' e" e ^ e ^ êWLz u ` u ^ u ' u ' u ' + @@SWX @@SWY e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' SWZU' Le simplificateur cette équation donne: L'équation 4 @@Xs @@Ys e ' e" e ^ e ^ êZs u ` u ^ u ' u ' u ' = @@SL LE SL13 SL11, SL12, LE SL21, SL22,SL23 e ' e" e ^ e ^ êSL31, u ` u ^ u ' u ' 32,SL33U' @@XL @@YL @@ZL e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' + @@Trx Essayer @@Trz e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u'Integrated Graphisme @@nnn 65 @@SLIJ et @@Tr peut être déterminé utilisant le @@GsGetLs() fonction. Aussi, comme @+montrer dans L'équation 5 (en dessous), multipliant les théorique dépister des valeurs coordonnées par h/@@Zs appliquer une transformation perspective dans qu'objets paraissent être projetés dans le parallèle à l'écran théorique (i.e. la taille d'image sera @+écailler selon la distance du point de vue). @@nnn Graphisme Intégré 66 L'équation 5 @@Xss = @@Xs h @@Zs @@Yss = @@Ys h @@Zs * 'h' est la distance (projection) du point de vue à l'écran théorique. Le GsSortObject4() prises de fonction @@TMD données (qui contient seulement le système coordonné local) et crée le polygone attirant le paquet pour un polygone projeté à un écran théorique. C'est fait par précisant la matrice dans L'équation 2 dans le 'coord' membre du GsCOORDINATE2 structure, la matrice dans L'équation 4 utilisant le @@GsSetLsMatrix() fonction, et 'h' dans L'équation 5 utilisant le @@GsSetProjection() fonctionner. Les systèmes Coordonnés Hiérarchiques Les systèmes coordonnés hiérarchiques impliquent l'introduction d'une structure couche d'arbre en le coordonne d'un objet. Considérer, par exemple, le cas dans lequel la terre voyage dans une orbite autour le soleil, et la lune orbite autour la terre. Si le soleil est à l'origine du système coordonné mondial, il est loin plus facile à décrire la motion de la lune utilisant une terre système coordonné qui a la terre comme son l'origine, plutôt qu'utilisant le système coordonné mondial centrée sur le soleil. Dans ce cas, le meilleur approcher doit établir en haut une baguette au système coordonné de terre dans le 'super' membre du GsCOORDINATE2 la structure que le maître d'objet de lune référerait à . Cela indiquerait que la lune coordonnée le système est ensemble basé sur le système coordonné de terre (i.e. le système coordonné de lune est sous le le système coordonné de terre). Voit le diagramme en dessous. Le graphisme Intégré @@nnn 67 @@CMOON @@CEARTH @@CSUN @@CSUN { @@coord ... LE MONDE super; @@CEARTH { @@coord ... /* décrit la motion orbitale autour le soleil */ super @@CSUN; @@CMOON { @@coord ... /* décrit la motion orbitale autour la terre */ super @@CEARTH; Figurer: Un Système Coordonné Hiérarchique @@nnn Graphisme Intégré 68 Le calcul Léger De source Le calcul léger de source est employé déterminer la contribution de lumière de chaque source légère dans le monde. Le @@PlayStation soutient la présente trois méthodes pour le calcul léger de source: (L'annotation que le vecteur normal de ligne ou 'normal' est une imaginaire doublé perpendiculaire à l'un ou l'autre la surface d'a le polygone ou le polygone @@vertices (les points qui définissent la position du polygone). Parallèlement, la lumière le vecteur de source est une ligne imaginaire qui définit où la lumière dans une scène affichée à l'écran vient de.) @@· Crevaison ombrageant Dans cette méthode chaque polygone a un vecteur seul de ligne normale de sa surface (le 'flat' ou 'facé normale). La couleur et intensité est déterminée par l'intérieur - produit (mesure de l'angle) entre le visage normal et allumer - source vecteur. @@· @@Gouraud ombrageant Dans cette méthode chaque polygone @@vertex (chaque point qui est un 'corner' du polygone) a son propre normal doubler le vecteur. La couleur et intensité à chacun @@vertex est déterminé par le produit intérieur de le @@vertex normal et la source légère. La couleur et intensité à chacun @@vertex est alors @+interpoler rapprocher la contribution légère de source à travers le polygone. Cela produit a la graduation lisse de couleur et intensité à travers le polygone. @@· Profondeur signalant Cette méthode varie la couleur et intensité du polygone dépendant de la distance du le point de vue. Cela réalise un embrumant l'effet en faisant la couleur d'un polygone plus proche au l'arrière-plan colore le davantage loin il est du point de vue. Le chiffre suivant décrit le modèle sur lequel calculs légers de source sont basés. Le graphisme Intégré @@nnn 69 Figurer: Le calcul Léger De source Dans ce chiffre, point P représente un point sur la surface d'un objet . Calculer la source légère la contribution au point P les termes suivants sont employés: (@@Nx, @@Ny, @@Nz) = Le normal doubler le vecteur au point P. (R, G, B) = La couleur inhérente de l'objet. (@@Lx, @@Ly, @@Lz) = Le vecteur léger de source. (@@LR, @@LG, @@LB) = La source légère colore. (@@RBK, @@GBK, @@BBK) = l'arrière-plan (ambiant) allume. La présente est un exemple de la séquence légère de calcul de source dans le @@PlayStation si trois lumière les sources sont employées. (@@RR, @@GG, @@BB) représente les valeurs finales de couleur employaient quand point P est exposé. (1) Converti coordonne le vecteur normal de ligne en le système coordonné mondial. @@NWX @@NWY e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' NWZU' = @@WL @@WL @@WL 11,WL12,WL13 21,WL22,WL23 31,WL32,WL33 e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' @@Nx @@Ny e ' e" e ^ e ^ êNz u ` u ^ u ' u ' u ' (2) Obtenir le produit intérieur du vecteur léger de source et le vecteur normal de ligne. Normal doubler le vecteur (monde) @@· vecteur Léger de source @@® influence Légère de source (L) Le L1 Le L2 e ' e" e ^ e ^ êL3 u ` u ^ u ' u ' u ' = Le Lz1 Le Lz2 Le Lz3 Le Lx1, Ly1, Le Lx2, Ly2, Le Ly3, e ' e" e ^ e ^ êLx3, u ` u ^ u ' u ' u ' @@NWX @@NWY e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' NWZU' (3) Obtenir la couleur légère d'influence de source en multipliant le produit intérieur et la source légère colorer isolément pour chaque article. La source légère influence (L) x couleur Légère de source (@@Lr, @@Lg, @@Lb) @@® couleur Légère d'influence de source (@@LI) @@nnn Graphisme Intégré 70 @@LIR @@LIG e ' e" e ^ e ^ êLIb u ` u ^ u ' u ' u ' = Le Lr3 Le Lg3 Le Lr1, Lr2, Le Lg1, Lg2, Le Lb2, e ' e" e ^ e ^ êLb1, u ` u ^ u ' u ' Lb3u' Le L1 Le L2 e ' e" e ^ e ^ u ` u ^ u ' u ' êL3u' (4) Obtenir la couleur totale d'influence de l'environnement en ajoutant ensemble la source légère influencer la couleur et la couleur ambiante. La source légère influence la couleur (@@LI) + couleur Ambiante (@@BK) @@® couleur d'influence (@@LT) @@LTR @@LTG @@LTB e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' = @@LIR @@LIG @@LIB e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' + @@BKR @@BKG e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' BKBU' (5) Obtenir la couleur @+théorique d'écran en multipliant la couleur inhérente avec la couleur d'influence pour chaque article isolément. @@RR @@GG @@BB e ' e" e ^ e ^ e ^ u ` u ^ u ' u ' u ' = @@LTR @@LTG G* B* éR* e" e ^ e ^ e ^ u ` u ^ u ' u ' LTBU' L'emploi @@GsGetLw() à calculer la matrice mondiale locale. Dans l'ordre pour cela à être appliqué (comme dans le @@Wlij matrice dans L'équation 1, au-dessus) l'établissait utilisant intérieurement le @@GsSetLightMatrix() fonction. Etablir le vecteur léger de source et la source légère utilisant le @@GsSetFlatLight() fonction, et l'ambiante la couleur utilisant le @@GsSetAmbient() fonction. Quand tout l'au-dessus sont ensemble, emploie le GsSortObject4() fonction à exécuter le calcul léger de source. Le GsSortObject4() exécutera le calcul conformément aux équations donnera au-dessus. Créant Des paquets Le GsSortObject4() fonction exécute le calcul coordonné, lumière et transformation perspective le calcul de source sur des polygones défini dans @@TMD données. Les résultats sont convertis en attirer des paquets qui sont alors ajoutés à une table @+commander. Le graphisme Intégré @@nnn 71 Le GsSortObject4() fonction emploie le GsDOBJ2 structure à manier données d'objet (@@TMD données). Dans l'ordre pour le GsDOBJ2 structure à manier @@TMD données, le @@TMD données doivent être tracées à une adresse réelle utilisant le @@GsMapModelingData() fonction reliait alors à GsDOBJ2 utilisant le GsLinkObject4() fonction. Le GsSortObject4() fonction exécute la transformation coordonnée utilisant l'ensemble local de matrice d'écran avec le @@GsSetLsMatrix() fonctionne. Il exécute alors transformation perspective utilisant la distance de projection établir avec le @@GsSetProjection() fonction. Prochain, le GsSortObject4() fonction exécute la source légère le calcul utilisant l'ensemble de matrice légère locale mondiale avec le @@GsSetLightMatrix() fonction. Enfin, le Le GsSortObject4() fonction crée un paquet de dessin et utilisant les Z valeurs déterminé pendant coordonné la transformation, relie le paquet de dessin à une table @+commander. Le @@GsDrawOt() fonction peut être employée attirer un paquet de dessin qui a été relié à une table @+commander. @@GsDrawOt() déclarations aussitôt après l'exécution et dessin est exécuté dans l'arrière-plan. Postérieurement, le @@DrawSync() fonction peut être employée détecter quand dessin est complète. Proteste Le service de graphisme fournit le GsDOBJ2 structure à manier objets (@@TMD données). Le 'coord2' et 'attributé membres de GsDOBJ2 sont employés quand opérant sur des objets. 'coord2' est une baguette à un système coordonné GsCOORDINATE2. La position et orientation du l'objet sont contrôlés en fixant les paramètres pour GsCOORDINATE2. 'attributé est employé établir le les attributs de protester. Les listes suivantes les attributs qui peuvent être établis. La mode Légère De source Cet attribut détermine la méthode de calcul léger de source. Le calcul Léger De source DE Cet attribut estropie le calcul léger de source. Inhiber L'étalage Cet attribut estropie la création de paquet pour l'objet entier. Le cloisonnement Automatique ( subdivision de polygone) Quand permis, cet attribut cause tous les polygones contenu dans l'objet à subdiviser. Le le nombre de subdivisions peut être 2 x 2, 4 x 4, 8 x 8, 16 x 16, 32 x 32 ou 64 x 64. Subdivisant des polygones dans cette voie réduit la distorsion de texture et fragmentation de polygone. H-Blank une ligne compléte est affichée .............................. ................ Ecran ........ Début de l’affichage écran ici lignes par lignes . V-Blank toute les ligne horizontale ont été affichées Segments k0 ku k1 0x001fffff 0x801fffff 0xa01fffff 0x001fff00 0x801fff00 0xa01fff00 0x00090000 0x80090000 0xa0090000 0x00000000 0x800000000 xa0000000 Le système empile la superficie La superficie de système La superficie d'application (576KB) 0 5 10 15 R B G S Première line Seconde ligne Faire Schéma GPU / Buffer......... #0 #1 #2 #3 #30 #31 Initialiser Retourné les données du contrôleur dans tous paramètres Obtenir l'index double buffer Reinitialiser les pointeurs de l'entête de l'espace de création Nettoyer l'OT Calcule des matrices LS/LW Etablir les matrices lumineuses Calculer les objets et les établir dans l'OT Attendre pour V-blank Le Guide de l'Utilisateur Les logiciels de développement Câble Série de communication Site Web Yaroze Le CD de boot LA TV Le modem Carte Mémoire logiciel YAROZE le CD de développement Manette de jeu Schéma : Le système Net Yaroze Schéma : Les parties de la PlayStation Le R3000 CPU GTE Le contrôleur de périphérique Sortie Vidéo GPU Mémoire Principale 2 Mo Mémoire Tampon 1 Mo Sortie du son OS ROM 512 Ko SPU Mémoire Tampon 1 Mo MDEC Lecteur de CD-Rom PIO Décoder CD-ROM Mémoire Tampon 1 Mo SIO Manette Carte mémoire Contrôleur extèrieur