Home

LibWiiEsp: Manual de instalación y uso Ezequiel Vázquez de la Calle

image

Contents

1. 7 moO 9 Include immediately after the copyright notices a license notice giving the public permission to use the Modified Version under the terms of this License in the form shown in the Addendum below G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document s license notice H Include an unaltered copy of this License I Preserve the section Entitled History Preserve its Title and add to it an item stating at least the title year new authors and publisher of the Modified Version as given on the Title Page If there is no section Entitled History in the Document create one stating the title year authors and publisher of the Document as given on its Title Page then add an item describing the Modified Version as stated in the previous sentence 29 J Preserve the network location if any given in the Document for public access to a Transparent copy of the Document and likewise the network locations given in the Document for previous versions it was based on These may be placed in the History section You may omit a network location for a work that was published at least four years before the Document itself or if the original publisher of the version it refers to gives permission K For any section Entitled Acknowledgements or Dedications Preserve the Title of the section and preserve in the section all the substance and tone
2. 0 license published by Crea tive Commons Corporation a not for profit corporation with a principal place of business in San Fran cisco California as well as future copyleft versions of that license published by that same organization Incorporate means to publish or republish a Document in whole or in part as part of another Document An MMC is eligible for relicensing if it is licensed under this License and if all works that were first published under this License somewhere other than this MMC and subsequently incorporated in whole or in part into the MMC 1 had no cover texts or invariant sections and 2 were thus incorpo rated prior to November 1 2008 The operator of an MMC Site may republish an MMC contained in the site under CC BY SA on the same site at any time before August 1 2009 provided the MMC is eligible for relicensing ADDENDUM How to use this License for your documents To use this License in a document you have written include a copy of the License in the document and put the following copyright and license notices just after the title page Copyright YEAR YOUR NAME Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in the section entitled
3. 82 gt lt conf gt lt ieo val or apps ni ipang into log mivel m SS lt alpha valor 0xFFOOFFFF gt lt fps valor 25 gt lt galeria valor apps wiipang xml galeria xml gt lt lang valor apps wiipang xml lang xml defecto english gt jugadores pls tel po pas pys 9 pi lt conf gt En este archivo de configuraci n se establece que el sistema de logging registrar todos los eventos que sucedan en el sistema el color transparente ser el magenta se correr la aplicaci n a 25 fotogramas por segundo se indican los archivos XML de la galer a y el sistema de idiomas se establece el ingl s como idioma por defecto y se prepara la consola para trabajar con dos mandos asociados respectiva mente a un jugador identificado por el c digo pj y otro identificado por pj2 4 4 2 El bucle principal La clase base Juego proporciona adem s un m todo que ejecuta un bucle principal sencillo Este m todo es virtual de tal manera que si el programador necesita otra forma de gestionar su aplicaci n se le permite redefinirlo en su clase derivada 25 El m todo run es el que se encarga de controlar este bucle principal En primer lugar llama al m todo cargar que es virtual puro y debe ser definido en la clase derivada de Juego En esta funci n debe ejecutarse todo lo que se necesite antes de que se entre en el bucle Despu s se inicializa la bandera de salida con un valor falso y se establece
4. Cabe destacar que en el caso de que las plantillas ofrecidas no se adaptaran a las necesidades del videojuego que tenemos en mente siempre podemos personalizar la clase que corresponda al derivarla o bien modificando la clase original desde el c digo fuente de la biblioteca En esta secci n del manual vamos a desgranar los detalles necesarios para poder sacar el m ximo jugo a estas tres plantillas que nos facilitar n el desarrollo de nuestro videojuego 4 1 Sistemas de coordenadas En primer lugar hay que comprender c mo funcionan los distintos sistemas de coordenadas que nos encontraremos a la hora de crear el universo de nuestro videojuego La siguiente imagen ilustra los tres sistemas que pueden darse a la vez en el juego Figura 2 Distintos sistemas de coordenadas en el universo del juego La imagen al completo representa un escenario completo de un juego Este escenario es el univer so del juego en s tiene forma rectangular y su esquina superior izquierda es el origen de coordenadas siendo la X positiva hacia la derecha y la Y hacia abajo Todos las parejas de coordenadas en cualquiera 15 de los tres sistemas que se emplean se refieren al punto superior izquierdo del objeto al que pertenecen las coordenadas En la imagen se distinguen las coordenadas relativas al escenario con el color amarillo El rect ngulo verde que se aprecia en el centro de la imagen representa la parte del escenario que se muestra en la panta
5. covers must also clearly and legibly identify you as the publisher of these copies The front cover must present the full title with all words of the title equally prominent and visible You may add other material on the covers in addition Copying 28 with changes limited to the covers as long as they preserve the title of the Document and satisfy these conditions can be treated as verbatim copying in other respects If the required texts for either cover are too voluminous to fit legibly you should put the first ones listed as many as fit reasonably on the actual cover and continue the rest onto adjacent pages If you publish or distribute Opaque copies of the Document numbering more than 100 you must either include a machine readable Transparent copy along with each Opaque copy or state in or with each Opaque copy a computer network location from which the general network using public has access to download using public standard network protocols a complete Transparent copy of the Document free of added material If you use the latter option you must take reasonably prudent steps when you begin distribution of Opaque copies in quantity to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy directly or through your agents or retailers of that edition to the public It is requested but not required that you contact the authors of t
6. el contador de ciclos del procesador a cero este contador se utiliza para mantener constante el valor de los fotogramas por segundo tras lo cual se entra en el bucle principal El bucle principal actualiza al principio de cada fotograma el estado de todos los mandos conec tados a la consola ejecuta el m todo virtual puro frame y despu s finaliza el fotograma y controla la tasa de FPS En este m todo frame se incluir n todos los detalles de la ejecuci n de cada fotograma y devolver un valor booleano falso si la ejecuci n debe continuar siendo el valor de retorno verdadero en el caso de que el programa deba terminar Un detalle m s en el caso de que ocurriera una excepci n en el transcurso de la ejecuci n del pro grama sta ser registrada por el sistema de logging siempre que ste est activado al menos en el nivel error identificador 1 y despu s se saldr de la aplicaci n Por ltimo destacar el hecho de que tanto si se necesita una gesti n del bucle principal diferente o un mayor n mero de funciones el hecho de tener que derivar de la clase Juego implica la posibilidad de crear tantos m todos como sea necesario y la redefinici n opcional del m todo run nos permite ejecutar estos nuevos m todos de la manera que mejor se adec e a nuestras necesidades 26 5 GNU Free Documentation License Version 1 3 3 November 2008 Copyright 2000 2001 2002 2007 2008 Free Software Foundation Inc
7. include Warranty Disclaimers next to the notice which states that this Licen se applies to the Document These Warranty Disclaimers are considered to be included by reference in this License but only as regards disclaiming warranties any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License 2 VERBATIM COPYING You may copy and distribute the Document in any medium either commercially or noncommercially provided that this License the copyright notices and the license notice saying this License applies to the Document are reproduced in all copies and that you add no other conditions whatsoever to those of this License You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute However you may accept compensation in exchange for copies If you distribute a large enough number of copies you must also follow the conditions in section 3 You may also lend copies under the same conditions stated above and you may publicly display copies 3 COPYING IN QUANTITY If you publish printed copies or copies in media that commonly have printed covers of the Do cument numbering more than 100 and the Document s license notice requires Cover Texts you must enclose the copies in covers that carry clearly and legibly all these Cover Texts Front Cover Texts on the front cover and Back Cover Texts on the back cover Both
8. sonido size sizeof s16 relleno Como puede verse en el ejemplo se calcula en primer lugar el relleno necesario para que la memoria que ocupa el archivo binario a cargar sea m ltiplo de 32 bytes a continuaci n se reserva la memoria alineada a 32 bytes utilizando la funci n memalign en lugar de malloc y el ltimo paso tras leer la informaci n desde el archivo consiste en realizar el volcado expl cito de informaci n desde la cach de lectura a la memoria utilizando la funci n DCFlushRange esta funci n reibe la direcci n de memoria a la que se quiere realizar el volcado y el tama o de sta 3 5 Depuraci n con LibWiiEsp Con toda la informaci n anterior descrita en este manual y la referencia completa de la biblioteca se puede comenzar a desarrollar un videojuego sencillo Como en todo proceso de desarrollo de software ocurrir n errores y aqu es donde se hace patente la falta de medios disponibles para depurar el c digo 12 Existen dos tipos de errores que podremos encontrarnos a la hora de programar para Nintendo Wii que corresponden con las fases de compilaci n y ejecuci n A continuaci n vamos a plantear c mo solucionar los posibles errores que pueden surgir en cada uno de estos momentos 3 5 1 Errores de compilaci n En la fase de compilaci n suelen ocurrir sobretodo errores de sintaxis aunque tambi n es posible que ocurran errores de enlazado si las rutas hasta los archivos de cabeceras o las bi
9. wiiload bien configurado con la IP de la consola La otra manera de hacerlo que es la necesaria para poder distribuir el programa es guardar el eje cutable en un directorio de la tarjeta SD de la consola cuya ruta debe ser apps XXX boot dol donde XXX es el nombre unix de nuestra aplicaci n importante que no contenga espacios N tese que tanto el nombre boot dol como el hecho de que el directorio que lo contiene est dentro del directorio apps es obligatorio Debido a las caracter sticas de HomeBrew Channel podemos acompa ar nuestro ejecutable con una imagen que servir de icono para la aplicaci n debe tener formato PNG llamarse icon png y tener un tama o de 128 p xeles de ancho y 48 de alto y un fichero XML con la informaci n que deseemos apor tar sobre el programa debe ser un XML con un formato concreto llamado meta xml Ambos ficheros la imagen y el archivo de datos deben ir en el mismo directorio que el ejecutable Una referencia sobre los nodos del fichero de datos meta xml que acompa a a una aplicaci n se puede encontrar a continuaci n lt xml version 1 0 encoding UTF 8 standalone yes gt lt app version 1 gt lt name gt El nombre de la aplicacion lt name gt lt coder gt Autor o autores del codigo de la aplicacion lt coder gt lt version gt La version de la aplicacion lt version gt lt release_date gt Dia de lanzamiento Formato AAAAMMDD lt release_date gt lt short_description gt Coment
10. AKE clean C lib S S dir done SRM fr BUILD OUTPUT elf OUTPUT dol x SOURCE DEPENDS S OBUS O d Si OULPUM Pr dOl SOCOUTEU T elf OUTPUT elf S OBJS include S DEPENDS En el primer bloque que aparece en el ejemplo se definen una serie de variables que indican los directorios que forman parte del proyecto LOCALLIBS debe recoger los nombres separados por un es pacio de los directorios principales de cada biblioteca externa que se vaya a emplear en la compilaci n La variable PROJECT indica el nombre completo del proyecto y TARGET el nombre sin extensi n del ejecutable que se generar Para que el programa pueda ser ejecutado con HomeBrew Channel se recomienda que se nombre boot Por ltimo BUILD indica el directorio que se crear cuando se ordene la compilaci n del proyecto para almacenar todos los ficheros objeto del proyecto SOURCE es el direc torio donde est n todos los archivos fuente y DEPSDIR es donde se generar n los archivos que indican las dependencias entre m dulos del sistema que debe ser el mismo directorio que BUILD A continuaci n se deben importar las reglas de compilaci n para Nintendo Wii tanto las necesarias para utilizar las herramientas de DevKitPPC como las propias de LibWiiEsp Para ello antes hay que limpiar las reglas impl citas existentes lo cual se consigue con la instrucci n SUFFIXES El bloque de tres instrucci
11. Free Documentation License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns See http www gnu org copyleft Each version of the License is given a distinguishing version number If the Document specifies that a particular numbered version of this License or any later version applies to it you have the option of following the terms and conditions either of that specified version or of any later version that has been published not as a draft by the Free Software Foundation If the Document does not specify a version number of this License you may choose any version ever published not as a draft by the Free Software Foundation If the Document specifies that a proxy can decide which future versions of this License can be used that proxy s public statement of acceptance of a version permanently authorizes you to choose that version for the Document 11 RELICENSING Massive Multiauthor Collaboration Site or MMC Site means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works A public wiki that anybody can edit is an example of such a server A Massive Multiauthor Collaboration or MMC contained in the site means any set of copyrightable works thus published on the MMC site CC BY SA means the Creative Commons Attribution Share Alike 3
12. GNU Free Documentation License 32 If you have Invariant Sections Front Cover Texts and Back Cover Texts replace the with Texts line with this with the Invariant Sections being LIST THEIR TITLES with the Front Cover Texts being LIST and with the Back Cover Texts being LIST If you have Invariant Sections without Cover Texts or some other combination of the three merge those two alternatives to suit the situation If your document contains nontrivial examples of program code we recommend releasing these examples in parallel under your choice of free software license such as the GNU General Public License to permit their use in free software 33
13. LibWiiEsp Manual de instalaci n y uso Ezequiel Vazquez de la Calle Version 0 9 2 Licencia Este documento ha sido liberado bajo Licencia GFDL 1 3 GNU Free Documentation License Se incluyen los t rminos de la licencia en ingl s al final del mismo Copyright c 2011 Ezequiel Vazquez de la Calle Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 3 or any later version published by the Free Software Founda tion with no Invariant Sections no Front Cover Texts and no Back Cover Texts A copy of the license is included in the section entitled GNU Free Documentation License Indice 1 Instalaci n del entorno de desarrollo 2 Estructura de un proyecto con Lib WiiEsp 2 1 Estructura de directorios gt ssassn caso hehe ba ed bald ae wk waa aa Za ELATCNIVO MAKeJe io tii ea ek amp Gm Raita Me das a a ew ae 2 3 Ejecucion Del programa s s os mee ogee aa we ae aie ee ee Ek Go we 3 Consideraciones sobre programar con LibWiiEsp IL Big Endid sc od wb ea o e a aa aE a me 3 2 Los upos d datos x cana do wade as Badd oa be dae oa Gade eae eo 3 3 La alineaci n de lOs datos ocio i wy oe Bode we afd ee ar a a a ee 3 4 Alineaci n de datos que usan DMA 20 0 0000 eee ee eee 3 3 Depuraci n con LIDWUESP se s eos e s ee a a e a ae Ge BE ee Sd li Errores d compilaciom s s amaa a wo a Gale ea a a 33 2 Errores deejecu
14. SOURCE sre DEPSDIR S BUILD Reglas de compilacion O UE EME include DEVKITPPC wii_rules include DEVKITPPC libwiiesp_rules Generar una lista con todos los ficheros objeto del proyecto CPPFILES notdir wildcard S SOURCE cpp OFILES CPPETLES Ccpp gt 0 OBJS addprefix CURDIR BUILD OFILES Variables para la compilacion INCLUDE foreach dir LOCALLIBS Ilib dir I LIBOGC_INC LIBPATHS L LIBOGC_LIB L CURDIR BUILD VPATH SOURCE foreach dir LOCALLIBS lib dir LIBS LIBWIIESP_LIBS ltinyxml lbullet OUTPUT CURDIR TARGET LD CXX Flags para la compilacion CXXFLAGS g ansi Wall MACHDEP INCLUDE std c 0x OPTIONS MMD MP MF LDFLAGS g MACHDEP W1 Map notdir map Objetivos PHONY all BUILD libs LOCALLIBS listo run clean alii so BULED Fibs eS OUTPUT do M di sito S BUILD el d BUILD mkdir p S BUILD libs LOCALLIBS echo Bibliotecas externas listas LOCALLIBS MAKE no print directory silent C lib mv lib a BUILD CURDIR BUILD 0 CURDIR SOURCE cpp CXX MMD MP MF S DEPSDIR x d CXXFLAGS c lt o 0 IHS TOS S RM SOURCE g OUTPUT elf map ae wiiload TARGET dol clean for dir in LOCALLIBS do M
15. ador respecto a la alineaci n de los datos podemos con siderar el siguiente ejemplo struct ejemplo u8 entero US Lon O La estructura ejemplo no se representar igual compilando en una plataforma Intel que en la Wii ya que en la primera entero se situar en la posici n O de la memoria y otro ocupar de la posici n 1 hasta la 5 Sin embargo en nuestra consola entero ocupar el mismo lugar la posici n 0 pero la variable otro necesitar estar alineada a su tama o es decir ocupar las posiciones 4 a 7 de la memoria y las posiciones entre entero y otro se rellenar n con ceros para asegurar que el entero de 32 bits est alineado Esto revierte tanto en la cantidad de memoria ocupada como en el hecho de que si el procesador encontrara un dato desalineado e intentara leerlo se producir a un error en el sistema Para solventar este inconveniente se debe jugar inteligentemente con las declaraciones de las varia bles de tal manera que se organicen los datos de forma alineada 11 w 3 4 Alineaci n de datos que usan DMA Este es otro caso en el que influye la necesidad de alinear los datos con los que se trabaja El pro cesador de la Nintendo Wii trabaja con datos cacheados pero no as los perif ricos la tarjeta SD los dispositivos USB o el lector DVD Adem s estos perif ricos trabajan con una alineaci n fija de 32 by tes y si no se contempla este detalle se pueden producir errores de machacamient
16. ario que se muestra en el menu principal No se recomienda que sea mayor de 30 caracteres lt short_description gt lt long_description gt Descripcion detallada del programa lt long_description gt lt app gt V 0 YN DH RF WN 3 Consideraciones sobre programar con LibWiiEsp A la hora de programar para una plataforma cerrada como es Nintendo Wii hay que tener una serie de aspectos en cuenta debido a la arquitectura concreta que tiene el hardware de la consola Es muy importante tener en cuenta estos detalles ya que en caso contrario se pueden producir errores 0 com portamientos inesperados como texturas que se pisan entre s en la memoria principal o excepciones propias del sistema A continuaci n se describen todos esos peque os detalles a tener en cuenta que si bien s lo suponen un cambio en algunos h bitos a la hora de programar nos aseguran que todo ir bien al menos en lo que al funcionamiento del hardware se refiere 3 1 Big Endian Lo primero que hay que tener en cuenta es que la representaci n de los datos en la consola Nintendo Wii se realiza con Big Endian al contrario que las plataformas Intel la arquitectura no la marca del procesador que utilizan Little Endian para almacenar la informaci n Cuando un dato ocupa m s de un byte se puede organizar de mayor a menor peso esto ser a Big Endian o bien de menor a mayor peso que es la organizaci n en Little Endian Un ejemplo muy claro es la
17. aying it can be distributed under the terms of this License Such a notice grants a world wide royalty free license unlimited in duration to use that work under the conditions stated herein The Document below refers to any such manual or work Any member of the public is a licensee and is addressed as you You accept the license if you copy modify or distribute the work in a way requiring permission under copyright law A Modified Version of the Document means any work containing the Document or a portion of it either copied verbatim or with modifications and or translated into another language A Secondary Section is a named appendix or a front matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document s overall subject or to related matters and contains nothing that could fall directly within that overall subject Thus if the Document is in part a textbook of mathematics a Secondary Section may not explain any mathematics The relationship could be a matter of historical connection with the subject or with related matters or of legal commercial philosophical ethical or political position regarding them The Invariant Sections are certain Secondary Sections whose titles are designated as being those of Invariant Sections in the notice that says that the Document is released under this License If a section does not fit the abov
18. be added by or through arrangements made by any one entity If the Document already includes a cover text for the same cover previously added by you or by arrangement made by the same entity you are acting on behalf of you may not add another but you may replace the old one on explicit permission from the previous publisher that added the old one The author s and publisher s of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version 5 COMBINING DOCUMENTS You may combine the Document with other documents released under this License under the terms defined in section 4 above for modified versions provided that you include in the combination all of the Invariant Sections of all of the original documents unmodified and list them all as Invariant Sections of your combined work in its license notice and that you preserve all their Warranty Disclaimers The combined work need only contain one copy of this License and multiple identical Invariant Sections may be replaced with a single copy If there are multiple Invariant Sections with the same name but different contents make the title of each such section unique by adding at the end of it in parentheses the name of the original author or publisher of that section if known or else a unique number Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of
19. bles internas de posici n Desde este estado y dependiendo de las condiciones que se cumplan se puede pasar a los estados MOVER si el jugador pulsa el bot n de movimiento o CAER si no existe colisi n entre el actor y el escenario En el primero nuestro actor modifica su posici n horizontal en base a su velocidad en este eje y en el segundo se cambia la posici n vertical hacia abajo en base tambi n a la velocidad del actor respecto al eje vertical Desde estos dos estados puede llegarse a MOVER EN CAIDA que es una combinaci n de ambos movimiento en ambos ejes Puede comprobarse que en cada estado se proporciona un comportamiento para el actor y una serie de condiciones para que sucedan cambios de estado del actor La manera de comportarse del actor para cada estado debe programarse en el m todo actualizar de la clase derivada de Actor que controla a ste sin embargo las comprobaciones sobre el cumplimiento de condiciones que deben satisfacerse para ejecutar un cambio desde un estado a otro puede realizarse en el m todo correspondiente de la clase que controle el escenario actualizarPj para los actores jugadores o actualizarNpj en el caso de los actores controlados por la m quina o bien en el propio m todo de actualizaci n del actor ya que ste tiene un atributo que es una referencia al nivel en el que participa Se recomienda optar por la 18 primera opci n para as separar el comportamiento del actor seg n el e
20. bliotecas de enlace est tico no son correctas El compilador nos avisar de cualquier tipo de error que ocurra tanto en el preprocesado como en la compilaci n propiamente dicha y en el enlazado As pues prestando atenci n alos mensajes que pueda proporcionarnos el compilador sobre los errores o avisos que se den podremos depurar el c digo fuente de nuestra aplicaci n Sobre los mensajes de enlazado el enlazador nos proporcionar informaci n suficiente para saber qu ha fallado durante esta operaci n pero si se sigue al pie de la letra este manual especialmente la instalaci n del entorno y la creaci n del makefile no deber a haber ning n problema 3 5 2 Errores de ejecuci n En la fase de ejecuci n es cuando tenemos verdaderos problemas para depurar nuestra aplicaci n y es que apenas hay herramientas que puedan facilitarnos el conocer el estado de los objetos del sistema el contenido de las variables etc LibWiiEsp proporciona un sistema de registro de eventos del sistema la clase Logger que permite que escribamos un log de errores avisos e informaci n variada La forma de trabajar con esta clase es muy sencilla y todos los detalles pueden consultarse en su documentaci n ver referencia completa de la biblioteca Pero hay ocasiones en que los errores en tiempo de ejecuci n requieren m s precisi n que una serie de mensajes que aportemos desde nuestro propio c digo ya que el uso de la clase Logger est reco
21. cion ses asta a ieac a a a he aa el a 4 Plantillas de Lib WiiEsp 4 1 Sistemas de coordenadas socne se siopa Ey doe a e on OR ee A2 VACIO RR AO 4 2 1 Cargando losdat sde UN actor ss 2228 e s a eee ew 4 2 2 Definir el comportamiento de un actor ooo a AS NIVES ii e e e Ee i Ee res BG Aw we OM 4 341 Partes de Un nivel ia e ie wae a we a ee el ws 4 3 2 Creaci n de un escenario con Tiled oo 2 2 ee 4 3 3 Implementando una clase que controle escenarios AAs Jago vas orcos a doe Paid Y Pa ad a a eS OS 44 1 Inicralizaci n de la consola ioe s eie ee be ene ee e a we 44 2 El bucle principal Za s dia eae ee be BE A ee Be EA we Boo 5 GNU Free Documentation License 10 10 11 11 12 12 13 13 15 15 16 16 17 19 19 21 22 24 25 25 27 Indice de figuras 1 Ejemplo de pantalla de error en tiempo de ejecuci n 2 ooo o o 13 2 Distintos sistemas de coordenadas en el universo del juego 15 3 Sencillo aut mata de ejemplo para el comportamiento de un actor 18 4 Distintas partes de UN escenario ss s e ecs coeca oia e a a i a e a 19 5 Ejemplo de tileset formado por 6 tiles de 32x32 pixeles 20 6 Ejemplo de escenario con tiles atravesables y no atravesables 20 Indice de cuadros 1 Tipos de datos que se deben emplear al programar para Wii 11 Resumen Debido a las diferencia
22. como los enemigos controlados por la m quina los items que recogemos cada una de las balas en el caso de un juego de disparos tambi n es un actor Entrando en el apartado t cnico un actor se representa como un objeto que tiene una pareja de coor denadas x y respecto al origen del escenario una velocidad en p xeles por fotograma tanto vertical como horizontal un conjunto de estados cada uno de los cuales tiene asociada una animaci n y varias figuras de colisi n y un indicador sobre qu estado de los posibles es el actual A continuaci n se explican los diversos aspectos a tener en cuenta a la hora de crear un actor uti lizando la clase abstracta que proporciona LibWiiEsp En primer lugar tenemos que crear una clase derivada de Actor En el constructor de nuestra clase derivada no debemos olvidar pasarle al constructor de Actor la cadena de caracteres con la ruta absoluta hasta el archivo de datos desde el que se cargan los datos del actor y una referencia al nivel en el que participar Adem s tenemos que definir el m todo actualizar que es un m todo virtual puro y en el cual tenemos que definir el comportamiento del actor dependiendo de su estado actual Ambos aspectos se explican con detalle en los siguientes apartados 4 2 1 Cargando los datos de un actor Cada actor que se cree derivando la clase Actor cargar toda la informaci n relativa a l a trav s del m todo cargarDatosIniciales definido en la pro
23. del tileset asociado al nivel Internamente cada capa de dibujo se di vide en una rejilla de cuadros filas y columnas donde cada celda tiene las mismas dimensiones que un tile y en ella se coloca un tile concreto Una de las dos capas del escenario la llamada PLATAFORMAS se caracteriza en que cuando LibWiiEsp la carga en memoria asigna a cada tile una figura de colisi n de su mismo tama o de tal manera que los tiles que componen esta capa de dibujo pueden interactuar con los actores del juego Por otro lado la capa denominada ESCENARIO est compuesta por tiles que no tienen asociada ninguna figura de colisi n y nicamente se a aden al nivel con el objetivo de mejorar visualmente el escenario Generalmente esta distinci n entre tiles con figura de colisi n asociada y sin ella se utiliza para definir los tiles que pueden ser atravesados por los actores del juego aquellos que no tienen asociada una figura de colisi n y los que no permiten que los actores los atraviesen que son los que s tienen figura de colisi n asociada Figura 6 Ejemplo de escenario con tiles atravesables y no atravesables Por ltimo nos encontramos con el ltimo tipo de objetos que necesitamos para definir un escenario que son los actores que participan en el nivel Se distinguen los actores controlados por los jugadores y 20 los que son dirigidos por la maquina Como ya se ha comentado en la secci n de los actores stos tendr n definido
24. dores insert std make_pair i gt jugador p else if i tipo actor bicho Bichos p new Bicho i gt xml this P MONIC ies G xr i ya ee Bact one s pushiback p Stemporalycike ana 5 En el ejemplo el programador ha definido dos clases derivadas de Actor denominadas Personaje y Bicho En el m todo implementado se recorre la estructura temporal de datos de actores del escenario y 22 se crea un actor a partir de la clase correspondiente seg n el tipo de actor que se haya indicado desde Ti led se mueve el actor hasta su posici n en el escenario y por ltimo se inserta en la estructura adecuada jugadores en el caso de los actores controlados por un jugador en la que hay que indicar tambi n el c digo identificador del jugador concreto o _actores para los actores controlados por la m quina Es importante recordar que este m todo cargarActores se debe llamar desde el constructor de la clase derivada de Nivel con la intenci n de que la creaci n de los actores se realice en el momento de cargar el escenario Adem s es recomendable vaciar la estructura temporal cuando se finalice el proceso El siguiente paso en la generaci n de esta clase derivada es implementar los m todos de actualiza ci n del nivel que se deber an llamar en cada fotograma del programa A continuaci n se indican cu les son y qu funcionalidad se espera que tengan En el m todo actualizarPj se debe actualiza
25. e definition of Secondary then it is not allowed to be designated as Invariant The Document may contain zero Invariant Sections If the Document does not identify any Invariant Sections then there are none The Cover Texts are certain short passages of text that are listed as Front Cover Texts or Back Cover Texts in the notice that says that the Document is released under this License A Front Cover Text may be at most 5 words and a Back Cover Text may be at most 25 words 27 A Transparent copy of the Document means a machine readable copy represented in a format whose specification is available to the general public that is suitable for revising the document straight forwardly with generic text editors or for images composed of pixels generic paint programs or for drawings some widely available drawing editor and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters A copy made in an otherwise Transparent file format whose markup or absence of markup has been arranged to thwart or discourage subsequent modification by readers is not Transparent An image format is not Transparent if used for any substantial amount of text A copy that is not Transparent is called Opaque Examples of suitable formats for Transparent copies include plain ASCII without markup Texin fo input format LaTeX input format SGML or XML using a publicly ava
26. era partici n de la tarjeta SD de la consola debe tener un sistema de ficheros FAT establecer el sistema de logging leer el archivo de configuraci n y a partir de ste iniciar todos los aspectos de la consola que vamos a utilizar El proceso de inicializaci n llegados a este punto es el siguiente 1 Inicializar la pantalla el sistema de mandos el sonido y las fuentes de textos en este orden 2 Establecer el color transparente y los fotogramas por segundo que tendr la aplicaci n 3 Cargar los identificadores de los jugadores y asociar un mando con cada uno de ellos 4 Cargar en memoria todos los recursos multimedia que se indiquen en el archivo XML de la galer a 5 Cargar en memoria las etiquetas de texto del soporte de idiomas Cuando creamos una clase derivada de Juego hay que llamar al constructor de la clase base pas n dole como par metro la ruta absoluta en la tarjeta SD del archivo de configuraci n Por otro lado el destructor de la clase base se encarga de liberar la memoria ocupada por la estructura que almacena los objetos de la clase Mando y de llamar a la funci n exit hecho obligatorio para que la pila de la funci n atexit se ejecute al salir del programa esto es muy importante ya que en caso contrario nos encontraremos con una pantalla de error por no haber apagado los sistemas de la consola Un ejemplo del archivo XML de configuraci n es el siguiente lt 2xml version 1 0 encoding gt UTE
27. es o las figuras de colisi n consultar las secciones correspondientes en la referencia de la biblioteca Muy importante Los estados en los cuales puede encontrarse un actor vienen definidos por los que aparezcan en este archivo de datos y es imprescindible que definamos el estado normal al menos en las animaciones ya que es el estado que un actor toma por defecto y si no se encontrara entre los datos del actor se producir a un error en el sistema Para m s informaci n sobre la carga de datos iniciales consultar la documentaci n de la clase Actor 4 2 2 Definir el comportamiento de un actor El comportamiento de un actor como ya se ha comentado depende del estado en el que se encuentre A la hora de crear una clase derivada de Actor se deber an implementar tantos m todos como estados se hayan definido en el archivo de datos del actor de tal manera que cada uno de estos m todos corresponda con el comportamiento esperado en cada uno de los estados Por ejemplo si tenemos un actor con tres estados normal caer y mover tendr amos tres nuevos m todos llamados estado_normal estado_caer y estado_mover En cada una de estas funciones habr a que implementar el comportamiento deseado de nuestro actor para ese estado concreto En el siguiente c digo se muestra un ejemplo del m todo estado_mover que se encargar a de desplazar horizontalmente al actor void estado_mover void mover x _vx y 17 Implementand
28. he Document well before redistri buting any large number of copies to give them a chance to provide you with an updated version of the Document 4 MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above provided that you release the Modified Version under precisely this License with the Modified Version filling the role of the Document thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it In addition you must do these things in the Modified Version A Use in the Title Page and on the covers if any a title distinct from that of the Document and from those of previous versions which should if there were any be listed in the History section of the Document You may use the same title as a previous version if the original publisher of that version gives permission B List on the Title Page as authors one or more persons or entities responsible for authorship of the modifications in the Modified Version together with at least five of the principal authors of the Document all of its principal authors if it has fewer than five unless they release you from this requirement State on the Title page the name of the publisher of the Modified Version as the publisher Preserve all the copyright notices of the Document Add an appropriate copyright notice for your modifications adjacent to the other copyright notices
29. ilable DTD and standard conforming simple HTML PostScript or PDF designed for human modification Examples of transpa rent image formats include PNG XCF and JPG Opaque formats include proprietary formats that can be read and edited only by proprietary word processors SGML or XML for which the DTD and or proces sing tools are not generally available and the machine generated HTML PostScript or PDF produced by some word processors for output purposes only The Title Page means for a printed book the title page itself plus such following pages as are needed to hold legibly the material this License requires to appear in the title page For works in formats which do not have any title page as such Title Page means the text near the most prominent appearance of the work s title preceding the beginning of the body of the text The publisher means any person or entity that distributes copies of the Document to the public A section Entitled XYZ means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language Here XYZ stands for a specific section name mentioned below such as Acknowledgements Dedications Endorsements or History To Preserve the Title of such a section when you modify the Do cument means that it remains a section Entitled XYZ according to this definition The Document may
30. ista a escenario Capa de patrones donde dibujaremos los tiles atrabvesables plataformas Capa de patrones donde dibujaremos los tiles no atrabvesables es decir los que tendr n asociada una figura de colisi n 21 a actores Capa de objetos donde situaremos todos los actores que participen en el nivel En este punto ya estamos en disposici n de comenzar a dibujar nuestro escenario Es recomenda ble comenzar por la capa de tiles no atravesables continuar decorando con los tiles atravesables y por ltimo establecer la posici n de los actores Para situar un actor en el escenario insertamos un objeto en el lugar que deseemos y lo redimensionamos adecuadamente para que se vea correctamente c mo quedar a su posici n inicial Seguidamente hacemos clic con el bot n derecho en el actor y pulsamos en Propiedades del objeto Se mostrar un di logo en el que debemos indicar en el campo Tipo el tipo del actor que comenzar aqu dato necesario a la hora de distinguir qu clase derivada de Actor hay que instanciar y adem s la propiedad xml cuyo valor debe ser la ruta absoluta hasta el archivo XML que contiene la informaci n de este tipo de actor en la tarjeta SD de la Nintendo Wii Adem s si el actor es controlado por un jugador debemos a adir tambi n la propiedad jugador con el c digo identificativo del jugador que jugar con este actor como valor A la hora de definir los distintos actores se puede utilizar el ca
31. l nos indica que el error se ha producido en la l nea 27 del fichero fuente actor cpp de Lib WiiEsp Un detalle a comentar es que para salir de la pantalla de error que se muestra en la Figura 1 basta con pulsar el bot n Reset de la consola lo que nos devolver al HomeBrew Channel En resumen con la herramienta addr2line y la clase Logger podemos ir realizando una decente depuraci n de nuestra aplicaci n que aunque hay que reconocer que no es muy c modo es mejor que ir dando palos de ciego 14 4 Plantillas de LibWiiEsp Con todo lo visto hasta el momento en este manual es posible comenzar el desarrollo de nuestra apli caci n ya que tenemos las herramientas preparadas sabemos qu hay que tener en cuenta a la hora de utilizarlas y adem s contamos con las clases de LibWiiEsp que nos facilitan mucho la vida a la hora de cargar recursos multimedia establecer el soporte de idiomas acceder a la tarjeta SD de la consola dibujar texturas y animaciones en pantalla etc Pero el punto m s interesante de LibWiiEsp adem s de la abstracci n que nos proporciona a la hora de trabajar con estos subsistemas de la videoconsola est formado por las tres plantillas clases abs tractas que ofrece para facilitar el desarrollo de un videojuego Estas plantillas que son Actor Nivel y Juego permiten crear los distintos tipos de actores y niveles adem s de la clase principal de nuestro programa de una manera sencilla y efectiva
32. la decisi n final sobre esta estructura de directorios pero debido a todo lo que hay que tener en cuenta a la hora de desarrollar con LibWiiEsp sobretodo en lo referente a la compilaci n y enlazado de los archivos que componen un proyecto voy a presentar en esta secci n un ejemplo de proyecto vac o que quedar a listo para comenzar el desarrollo Adem s de tratar la estructura de directorios tambi n mostrar y explicar el c digo de un archivo makefile que pueda trabajar con esta organizci n para el proyecto 2 1 Estructura de directorios En primer lugar hay que crear un directorio base donde almacenar todo lo relativo a nuestro proyecto La localizaci n de este directorio en el sistema es indiferente de tal manera que para el ejemplo lo haremos en nuestro directorio home con las instrucciones mkdir juego cd juego Una vez dentro la siguiente estructura de directorios ser a m s que suficiente para albergar todos los componentes del proyecto a doc Documentaci n del proyecto a lib Bibliotecas externas que se vayan a utilizar en el proyecto Aqu se debe guardar cada biblio teca en un directorio separado En cada directorio debe existir un archivo makefile el cual compile la biblioteca y genere un archivo de enlazado est tico a adem s los archivos de cabecera de la biblioteca externa tienen que estar justo bajo este directorio principal de la biblioteca externa a media En este directorio se colocar n
33. lla actua como si fuera una ventana desplazable La pareja de coordenadas x y en amarillo de este rect ngulo indica la posici n de desplazamiento de la pantalla o scroll respecto al punto 0 0 del escenario Jugando con el scroll conseguimos que la pantalla se mueva sobre el escena rio y muestre la parte que queramos de ste Por otro lado el v rtice superior izquierdo de la pantalla es el origen de otro sistema de coordenadas que indica la posici n de un objeto un actor por ejemplo dentro de la visualizaci n en pantalla Teniendo en cuenta estos dos sistemas de coordenadas se entiende f cilmente que el actor el rec tangulo rojo tenga una pareja de coordenadas que indiquen su posici n en el escenario coordenadas en amarillo y otra pareja de coordenadas en verde que denotan su posici n en la pantalla Sin embargo las coordenadas de un actor respecto a la pantalla no se almacenan si no que se calculan restando su posici n en el escenario amarillo menos la posici n del desplazamiento de la pantalla coordenadas amarillas de la pantalla Adem s el v rtice superior izquierdo del rect ngulo que representa al actor es el origen de un tercer sistema de coordenadas que se utiliza como referencia para las cajas de colisi n asociadas al actor 4 2 Actores Un actor es un objeto que tiene entidad propia dentro del universo del videojuego En este sentido son actores tanto los protagonistas manejados por los jugadores
34. los distintos tipos de objetos que se cargan en un escenario En primer lugar se encuentran las propiedades del nivel que son una serie de cadenas de caracteres que indican c digos de recursos en la galeria de medias del sistema las propiedades del nivel son la imagen de fondo que es fija y permite dibujar un paisaje est tico en la ltima capa de dibujo la pista de m sica asociada a un nivel y la imagen del tileset Pueden a adirse m s propiedades seg n el videojuego que estemos desarrollando pero la lectura y carga de esta informaci n deber ser programada en el constructor de la clase derivada Figura 4 Distintas partes de un escenario 19 Llegados a este punto es necesario explicar brevemente los conceptos de tile y tileset Un tile es una imagen peque a generalmente cuadrada o rectangular que se utiliza para componer un escenario en un videojuego en dos dimensiones En un mismo escenario se emplean numerosos tiles que se recogen en una nica imagen organizados como una tabla es decir en filas y columnas Esta imagen que almacena todos los tiles utilizados en un mismo escenario es lo que conocemos por tileset Figura 5 Ejemplo de tileset formado por 6 tiles de 32x32 pixeles Continuando con los tipos de objeto que componen un escenario en segundo lugar tenemos la propia composici n de ste que est formada por dos capas de dibujo en las que se define la composici n del escenario en s a partir de los tiles
35. lse if _jugadores pj1 gt y _scroll_y lt screen gt alto 4 MONE Crocro MAS EPA yascrolMmys TabsiGjugadore ste pa etal viele iF y Por supuesto quiero remarcar que los m todos de ejemplo son precisamente eso ejemplos muy sen cillos cuya finalidad es que sirvan de gu a para comprender c mo se trabaja con la plantilla de niveles de LibWiiEsp y a partir de los cuales poder desarrollar los m todos de actualizaci n necesarios al derivar la clase abstracta Nivel se pueden a adir los m todos que se consideren necesarios 4 4 Juego La clase abstracta Juego es la tercera y ltima plantilla que LibWiiEsp ofrece para facilitar el desa rrollo de videojuegos para Nintendo Wii Es muy sencilla y consiste en dos partes principales El cons tructor se encarga de inicializar la consola a partir de la informaci n que se introduzca en el archivo de configuraci n de la aplicaci n y el m todo run ejecuta el bucle principal del programa A continua ci n se aportan todos los detalles relativos a esta plantilla para construir la clase principal de nuestro videojuego 24 An e Uv N e VD o Ny A 4 4 1 Inicializaci n de la consola Como ya se ha comentado la inicializaci n de todos los sistemas de la consola Nintendo Wii se realiza en el constructor de la clase Juego que recibe como par metro la ruta absoluta en la tarjeta SD de un archivo XML de configuraci n Esta inicializaci n consiste en montar la prim
36. lt http fsf org gt Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed Preamble The purpose of this License is to make a manual textbook or other functional and useful document free in the sense of freedom to assure everyone the effective freedom to copy and redistribute it with or without modifying it either commercially or noncommercially Secondarily this License preserves for the author and publisher a way to get credit for their work while not being considered responsible for modifications made by others This License is a kind of copyleft which means that derivative works of the document must them selves be free in the same sense It complements the GNU General Public License which is a copyleft license designed for free software We have designed this License in order to use it for manuals for free software because free software needs free documentation a free program should come with manuals providing the same freedoms that the software does But this License is not limited to software manuals it can be used for any textual work regardless of subject matter or whether it is published as a printed book We recommend this License principally for works whose purpose is instruction or reference 1 APPLICABILITY AND DEFINITIONS This License applies to any manual or other work in any medium that contains a notice placed by the copyright holder s
37. mendado en casos de comportamiento inesperado del programa pero no de errores como tal Exception BSI occurred GPROO SECDE2A6 GPROG BO4FBESE GPR16 00990151E GPR24 00009091 GPRO1 89182390 GPROY GO3BBB40 GPR1 80C936E8 GPRZS 90000037 GPROZ BO0BAAGS GPRIO 80095040 GPRIG FFFFFFFF GPR26 893BC A0 GPRO3 89181AE8 GPR11 DFSSSDES GPR1Y B007FO28 GPR2 B93BCISO GPRO4 GOSBBB48 GPR12 68200628 AA 00009000C GPROS B9IBBCIS GPR13 89097A20 GPR21 8007F03B GPR29 9090000D GPRO6 00000009 GPR14 0000151E GPR22 0000000D GPR3O 803BBB48 GPRO SECDE2A6 GPRIS 00000037 GPR23 801B23E4 GPR31 89192089 LR 89054158 SRRO 8905a178 SRR1 00002032 MSR 09999999 DAR DFOIIDEA DSISR 040000009 STACK DUMP NI gt SS 89812484 gt 89998440C gt 896043cc gt 88033374 gt 86633314 CODE BUMP 899852178 81908990904 55908903A 419E6174 78E69991 8665ai88 3198900904 AE 8 FEFFF8 E AN E 8 C900068 Figura 1 Ejemplo de pantalla de error en tiempo de ejecuci n 13 Cuando ocurre un error de ejecuci n en la Nintendo Wii sta nos presentar una pantalla de error parecida a la imagen de la figura 1 En esta pantalla de error pueden apreciarse tres partes principales A la hora de localizar en qu parte de nuestro c digo se ha provocado este error necesitamos fijarnos en la secci n STACK DUMP es decir la segunda Esta parte del mensaje de error nos detalla la traza de llamadas a funci n que se han realizado hasta llegar a la llamada que ha producido el er
38. mpo Nombre del di logo de propie dades de un actor para identificarlo en tiempo de dise o del escenario 4 3 3 Implementando una clase que controle escenarios Una vez tenemos creados uno o varios escenarios cuyo comportamiento la gesti n de transiciones entre los estados de los distintos actores que participan en l el movimiento o no del scroll de la pan talla sobre el escenario etc es com n el ltimo paso para poder disfrutar de ellos es definir una clase derivada de la abstracta Nivel que controle todos los detalles del nivel Cada clase derivada definir una gesti n distinta de un grupo de varios escenarios El primer paso para crear una clase derivada de la abstracta Nivel es implementar el m todo virtual cargarActores Como se detalla en la documentaci n de la clase en el constructor se cargan todos los tiles del escenario se toma la imagen de fondo y del tileset desde la galer a y se leen los datos de inicializaci n de cada actor participante almacen ndose en una estructura temporal La definici n de este m todo debe recorrer esta estructura temporal de datos de actores creando para cada ocurrencia un actor de la clase derivada de Actor correspondiente tal y como se aprecia en el siguiente ejemplo void cargarActores void for Temporal iterator i _temporal begin i _temporal end i aia eo acu alUGagdom ian Personaje p new Personaje i gt xml this PRMON ET gt al S34 2 _Juga
39. nado criterio Como ejemplo se muestra la siguiente funci n que actualizar a el estado de todos los actores no jugadores 23 void actualizarNpj void for Actores iterator i _actores begin i _actores end i Estado NORMAL puede pasar a CAER if i gt estado normal if not colision i xi gt setEstado caer Estado CAER puede pasar a NORMAL if i gt estado caer if colisionVertical x i i gt setEstado normal 1 Actualizacion del actor i gt actualizar y El ltimo m todo a implementar es actualizarEscenario en el que se espera que se implementen todos los dem s detalles relativos al escenario que necesiten ser actualizados a cada fotograma del juego El siguiente ejemplo muestra una implementaci n que nicamente actualiza el scroll de la pantalla sobre el escenario seg n la posici n horizontal del jugador cuyo c digo identificador es pj void actualizarEscenario void if _jugadores pj1 gt x _scroll_x gt screen gt ancho 2 moverScroll _scroll_x abs _jugadores pj1 gt velX _scroll_y else if _jugadores pj1 gt x _scroll_x lt screen gt ancho 4 moverseroll ascrolllex abs Jugadores Mpg o Sid Es ecrol lay if _jugadores pj1 gt y _scroll_y gt screen gt alto 2 MOvVerScrolin mscrollex SsCrolNliy r abs Jugadores pail Si e
40. ne asig nada la consola Nintendo Wii en la red local A continuaci n podemos recargar el fichero de configuraci n bashrc para tener listas las varibles de entorno mediante la orden source bashrc Llegados a este punto el ltimo paso para que el entorno de desarrollo funcione correctamente con LibWiiEsp es instalar la biblioteca propiamente dicha Existen dos maneras de realizar esto o bien po demos descargar la versi n estable publicada en la forja o tambi n compilando el c digo disponible desde sta Para el primer caso basta con descargar el paquete comprimido desde la p gina principal de la Forja del proyecto http forja rediris es projects libwiiesp copiarlo al directorio opt devkitpro y descomprimirlo all Para compilar la biblioteca a partir de los fuentes debemos ejecutar las siguientes l neas siempre que se hayan instalado previamente las dependencias svn co https forja rediris es svn libwiiesp trunk libwiiesp cd libwiiesp make install Y despu s de la instalaci n de la biblioteca ya tenemos preparado nuestro sistema para comenzar con el desarrollo de videojuegos en dos dimensiones para Nintendo Wii 2 Estructura de un proyecto con LibWiiEsp Una vez instalado correctamente el entorno de desarrollo para utilizar LibWiiEsp el siguiente paso es crear la estructura de archivos y directorios necesarios para trabajar con un nuevo proyecto para Nintendo Wii Por supuesto queda en manos del programador
41. o de datos al realizar dos lecturas consecutivas desde perif ricos Adem s cuando leemos un dato desde un perif rico se corre el riesgo de machacar el contenido de la cach del procesador por lo que es imprescindible volcar expl citamente los datos le dos en la memoria es decir asegurar de que la lectura se ha realizado completamente antes de realizar cualquier otra acci n Es muy sencillo evitar esta situaci n y es preparando la memoria en la que se almacenar n los datos le dos desde el perif rico de tal manera que est alineada a 32 bytes y su tama o sea m ltiplo de 32 Para ilustrar c mo hacer esto se muestra un ejemplo a continuaci n Abrimos el archivo mediante un flujo ifstream archivo archivo open SD apps wiipang media sonido pcm ios binary Obtener el tamano del sonido archivo seekg 0 ios end ul6 size archivo tellg archivo seekg 0 ios beg Calcular el relleno que hay que aplicar a la memoria reservada para que su tamano sea multiplo de 32 u8 relleno size x sizeof s16 32 Reservar memoria alineada utilizamos memalign en lugar de malloc sl6 sonido s16 memalign 32 size sizeof s16 relleno Realizar la lectura de datos desd 1 periferico Utilizar chars como tipo de lectura ces por Compatibilidad con beat archivo read charx sonido size Fijar los datos leidos en la memoria evita machacamiento en la cache DCFlushRange
42. o de esta manera un m todo por cada estado tinicamente habria que definir el m todo virtual puro actualizar para que seg n el estado actual del actor se ejecute la funci n correspondiente Lo ideal es organizar el comportamiento del actor en un aut mata finito determinado donde se es pecifiquen los estados posibles y las transiciones que pueden darse entre los distintos estados Hay que mencionar que los cambios de estado se realizar n desde una clase derivada de Nivel que ser el escena rio donde los actores se encontrar n El motivo de esta decisi n no es otro que la falta de conocimiento que tiene un actor sobre lo que ocurre a su alrededor en el escenario del juego informaci n que s est disponible en todo momento en la clase que se encarga de gestionar ste Se deja de pulsar el bot n de mov Pulsado bot n de movimiento No hay colisi n Colisi n con No hay colisi n con el escenario con el escenario Colisi n cor escenario escenario Se deja de pulsar el bot n de mov MOVER EN CAIDA Pulsado bot n de movimiento Figura 3 Sencillo aut mata de ejemplo para el comportamiento de un actor En la figura 3 puede apreciarse un sencillo ejemplo de aut mata finito determinado formado por cuatro estados y que define el comportamiento de un actor controlado por un jugador a trav s de un mando El actor comienza en el estado denominado NORMAL en el que no sufre ninguna modifica ci n de sus varia
43. o ideal es crear un directorio dentro de opt y otorgarle a ste los permisos necesarios pero es posible realizar la instalaci n en nuestro direc torio home de tal manera que s lo nuestro usuario pueda acceder a estas herramientas Suponiendo que se escoge la primera opci n se crea el directorio en opt y se le asignan permisos para que todos los usuarios del sistema puedan hacer uso de lo que en l se almacene sudo mkdir opt devkitpro sudo chmod 777 opt devkitpro A continuaci n hay que descargar las herramientas que sirven de base para LibWiiEsp que son el conjunto de compiladores bibliotecas y binarios DevKitPPC y la biblioteca de bajo nivel libOgc en su versi n 1 8 4 junto con la modificaci n de libFat 1 0 7 compatible con ella Ambos recursos se encuentran disponibles en la forja del proyecto en el paquete Dependencias Se deben descargar en el directorio que acabamos de crear cd opt devkitpro wget http forja rediris es frs download php 2316 devkitPPC_r21 i686 linux tar bz2 wget http forja rediris es frs download php 2315 libogc 1 8 4 and libfat 1 0 7 tar gz El siguiente paso es descomprimir ambos ficheros y si no queremos tener ocupado espacio innece sariamente eliminarlos Las instrucciones para ejecutar estas acciones son tar xvjf devkitPPC_r21 i686 linux tar bz2 tar xvzf libogc 1 8 4 and libfat 1 0 7 tar gz rm devkitPPC_r21 i686 linux tar bz2 libogc 1 8 4 and libfat 1 0 7 tar gz Despu s de esto e
44. of each of the contributor acknowledgements and or dedications given therein L Preserve all the Invariant Sections of the Document unaltered in their text and in their titles Section numbers or the equivalent are not considered part of the section titles M Delete any section Entitled Endorsements Such a section may not be included in the Modified Version N Do not retitle any existing section to be Entitled Endorsements or to conflict in title with any Invariant Section O Preserve any Warranty Disclaimers If the Modified Version includes new front matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document you may at your option designate some or all of these sections as invariant To do this add their titles to the list of Invariant Sections in the Modified Version s license notice These titles must be distinct from any other section titles You may add a section Entitled Endorsements provided it contains nothing but endorsements of your Modified Version by various parties for example statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard You may add a passage of up to five words as a Front Cover Text and a passage of up to 25 words as a Back Cover Text to the end of the list of Cover Texts in the Modified Version Only one passage of Front Cover Text and one of Back Cover Text may
45. ones que viene a continuaci n se encarga de almacenar en variables una lista de todos los archivos cpp que se encuentran en el directorio de fuentes y otra lista con la ruta absoluta de los ficheros objeto que se generar n al compilar es decir archivos con extensi n o en la carpeta indicada por la variable BUILD El cuarto bloque de instrucciones recoge los directorios donde se encuentran los archivos de cabe ceras externas los almacena en la variable INCLUDE los directorios en los cuales hay que buscar las bibliotecas de enlazado est tico guardados en la variable LIBPATHS establece el VPATH crea la lista de bibliotecas a enlazar est ticamente tomando la variable LIBWHESP_LIBS para contar con todo lo que necesita un ejecutable generado con LibWiiEsp pero se le debe a adir adem s lo necesario para enlazar tambi n las bibliotecas externas y por ltimo indica la ruta absoluta hasta el ejecutable sin extensi n y define el enlazador que se utilizar El bloque siguiente establece los flags de compilaci n necesarios para generar un ejecutable de extensi n elf que posteriormente se transformar a otro con extensi n dol Y justo despu s comienzan los objetivos del makefile que se describen a continuaci n a all Crea un ejecutable dol a partir del c digo fuente que se encuentre en el directorio indicado en la variable SOURCE Es el objetivo por defecto al ejecutar make BUILD Crea el directorio donde se crear n
46. pia clase base Actor al cual se llama desde el cons tructor de sta clase y que recibe la ruta absoluta en la tarjeta SD de un archivo XML con un formato como el siguiente 16 v e e lt xml version 1 0 encoding UTF 8 gt ACO EV X SEV VU VED O MU a oa gt lt animaciones gt lt animacion estado normal img chief sec 0 filas 1 columnas 6 mecca gt lt animacion estado mover img chief sec 0 1 2 3 4 filas 1 columnas 6 retardo 3 gt lt animacion estado muerte img chief sec 5 filas 1 columnas 6 Retardo OS lt animaciones gt lt colisiones gt lt Be et angulo estado normal x27 EA SS IS My SS SI ASA gt lt circulo estado normal cx 41 cy 13 radio 8 gt lt reecr angulo estado moves rta AO SS ARS ISSN OG AI 7 A QUO lt circulo estado mover cx 41 cy 13 radio 8 gt lt sinfigura estado muerte gt lt colisiones gt lt actor gt En el archivo XML anterior pueden observarse dos grandes bloques uno para las animaciones y otro para las figuras de colisi n A cada estado en el ejemplo hay tres normal mover y muerte le corres ponde una nica animaci n pero puede tener ninguna una o varias figuras de colisi n En el caso de que un estado concreto no tenga ninguna figura de colisi n asociada basta con introducir un nodo con el nombre sinfigura y su correspondiente atributo estado Para m s informaci n sobre las animacion
47. por tile de 20 tiles de ancho por 16 tiles de alto Una vez establecidos estos par metros pulsamos en aceptar A continuaci n hay que cargar en la herramienta la imagen que contiene el tileset Para ello pul samos en Mapa y despu s en Nuevo conjunto de patrones Se abrir un di logo en el que debemos introducir el nombre que le daremos a la imagen esto es un dato interno de Tiled y el valor introducido aqu no es relevante la propia imagen y las medidas que tendr un tile ancho y alto en p xeles Un detalle a tener en cuenta en nuestra imagen no debe haber separaci n entre los tiles ni tampoco margen Al introducir estos datos hacemos clic en Aceptar y ya tendremos el tileset listo para dibujar el mapa Como siguiente punto hay que introducir las tres propiedades del escenario Nos vamos a Mapa y entonces a Propiedades del Mapa e introducimos en la lista estas propiedades imagen_fondo Su valor es el c digo que tendr la imagen de fondo del escenario en la galer a de recursos del sistema imagen_tileset Su valor es el c digo que tendr la imagen del tileset del escenario en la galer a de recursos del sistema musica Su valor es el c digo que tendr la pista de m sica del escenario en la galer a de recursos del sistema Tras introducir las propiedades pulsamos en Aceptar y procedemos a preparar las tres capas de dibujo de nuestro escenario que deben llamarse obligatoriamente como se describe en la l
48. quire changing the actual title 9 TERMINATION You may not copy modify sublicense or distribute the Document except as expressly provided under this License Any attempt otherwise to copy modify sublicense or distribute it is void and will automatically terminate your rights under this License However if you cease all violation of this License then your license from a particular copyright hol der is reinstated a provisionally unless and until the copyright holder explicitly and finally terminates your license and b permanently if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation Moreover your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means this is the first time you have received notice of violation of this License for any work from that copyright holder and you cure the violation prior to 30 days after your receipt of the notice 31 Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License If your rights have been terminated and not permanently reinstated receipt of a copy of some or all of the same material does not give you any rights to use it 10 FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new revised versions of the GNU
49. r el estado de un nico actor jugador atendiendo tanto al mando concreto que tenga asociado en la estructura _jugadores como a la situaci n del escenario Un ejemplo sencillo podr a ser void actualizarPj const std stringg jugador const Mandos m Estado NORMAL puede pasar a MOVER if _jugadores jugador gt estado normal if m pressed Mando BOTON_ARRIBA or m pressed Mando BOTON_ABAJO _Jugadores jugador gt setEstado mover Estado MOVER puede pasar a NORMAL if _jugadores jugador gt estado mover if m pressed Mando BOTON_ARRIBA _Jugadores jugador gt invertirDibujo true s16 vel_x _jugadores jugador gt velX Soe veils gt 0 Wiel 6 gt SL _Jugadores jugador gt setVelX vel_x else if m pressed Mando BOTON_ABAJO _jugadores jugador gt invertirDibujo false s16 vel_x _jugadores jugador gt velX a all ss lt 0 vel_x 1 _jugadores jugador gt setVelxX vel_x else _Jugadores jugador gt setEstado normal Actualizar el actor en base a su nuevo estado actual _jugadores jugador gt actualizar Por otro lado el m todo actualizarNpj debe recorrer la estructura en la que se almacenan los actores controlados por la maquina y actualizar los que se consideren oportunos aqui se deja en manos del programador el actualizar todos los actores s lo los que est n en pantalla o los que cumplan un determi
50. representaci n del n mero m gico que emplean los archivos de im genes formadas por mapas de bits tambi n conocidos como bitmaps Este n mero es en su representaci n decimal 19778 Si esta cifra la representamos en sistema hexadecimal con Little Endian el resultado ser a 0x4D42 sin embargo en un sistema que utilice Big Endian esta cifra se representar a como el hexadecimal 0x424D en la memoria principal As pues como consecuencia de esto siempre que queramos cargar un archivo binario una imagen una pista de m sica etc en la consola Nintendo Wii tenemos dos opciones o bien modificamos la representaci n del archivo en la plataforma de origen que normalmente ser un ordenador con arquitec tura Intel para que el recurso est ya representado como Big Endian o podemos utilizar las funciones del espacio de nombres endian que se proporcionan en el archivo de cabecera util h de LibWiiEsp Este espacio de nombre aporta las siguientes dos funciones que se encargan de transformar variables de 16 o 32 bits entre Little Endian y Big Endian soportan ambas transformaciones ul6 inline swapl16 ul6 a return a lt lt 8 a gt gt 8 u32 inline swap32 u32 a return a lt lt 24 a lt lt 8 amp OxOOFFO000 a gt gt 8 amp OxOOOOFFOO a gt gt 24 As pues nicamente utilizando estas dos funciones con cada dos o cuatro bytes cuando queramos cargar un recurso desde la tarjeta SD podremos evitar lo
51. rks in the aggregate which are not themselves derivative works of the Document If the Cover Text requirement of section 3 is applicable to these copies of the Document then if the Document is less than one half of the entire aggregate the Document s Cover Texts may be placed on covers that bracket the Document within the aggregate or the electronic equivalent of covers if the Document is in electronic form Otherwise they must appear on printed covers that bracket the whole aggregate 8 TRANSLATION Translation is considered a kind of modification so you may distribute translations of the Document under the terms of section 4 Replacing Invariant Sections with translations requires special permission from their copyright holders but you may include translations of some or all Invariant Sections in addi tion to the original versions of these Invariant Sections You may include a translation of this License and all the license notices in the Document and any Warranty Disclaimers provided that you also inclu de the original English version of this License and the original versions of those notices and disclaimers In case of a disagreement between the translation and the original version of this License or a notice or disclaimer the original version will prevail If a section in the Document is Entitled Acknowledgements Dedications or History the re quirement section 4 to Preserve its Title section 1 will typically re
52. ror estando cada elemento de la traza representado por una direcci n de memoria en hexadecimal Esta informacion es muy til ya que podemos localizar a qu l nea de nuestro c digo fuente co rresponde cada llamada con una utilidad incluida en DevKitPPC y esta es la utilidad powerpc eabi addr2line Se puede localizar en la carpeta opt devkitpro devkitPPC bin si se ha seguido este manual para instalar LibWiiEsp Lo m s c modo es crear un enlace simb lico a esta utilidad en el directorio principal de nuestro proyecto aunque tambi n se puede a adir el directorio devkitPPC bin a la ruta don de el sistema busca ejecutables Siguiendo el ejemplo de la figura 1 si queremos saber a qu archivo y qu l nea de c digo pertenece la direcci n 0x8001 1f54 basta con ejecutar la siguiente l nea de c digo en el directorio principal del proyecto powerpc eabi addr2line e boot elf f 0x80011 54 Para que esta utilidad funcione debemos tener en el directorio donde la ejecutamos una copia del ejecutable elf generado por nuestro proyecto el mismo que hemos ejecutado en la consola y que nos ha dado el mensaje de error de la Figura 1 El par metro e recibe el nombre de este ejecutable elf y el par metro f es la direcci n de memoria en hexadecimal que ha producido el error Un ejemplo del resultado de la ejecuci n de la utilidad addr2line puede ser el siguiente Actor home rabbit Escritorio libwiiesp src actor cpp 27 Lo cua
53. s existentes entre el desarrollo para un PC ordinario y una videoconsola en este caso para Nintendo Wii se hace patente la necesidad de recoger todos esos detalles que siendo sencillos de solventar pueden suponer m s de un quebradero de cabeza a un programador sin ning n tipo de experiencia en la programaci n para Wii Adem s la propia construcci n de LibWiiEsp implica una serie de consideraciones a tener en cuenta a la hora de sacarle el m ximo rendimiento El objetivo de este documento es recoger todos los pormenores que un programador debe tener en cuenta a la hora de crear un videojuego para la consola utilizando LibWiiEsp como herramienta 1 Instalaci n del entorno de desarrollo Para comenzar el desarrollo de un videojuego para Wii utilizando como herramienta LibWiiEsp es necesario instalar en el sistema todas las dependencias que la biblioteca necesita Esta secci n del manual detalla paso a paso la instalaci n de estas dependencias en un sistema GNU Linux de 32 bits siendo el proceso pr cticamente el mismo para sistemas de 64 bits nicamente cambia la versi n de las herramientas base que deber ser en este caso la adecuada para 64 bits Para sistemas Windows tambi n es posible desarrollar con LibWiiEsp pero este manual no cubre este tipo de arquitec turas En primer lugar hay que crear una carpeta accesible para todos los usuarios del sistema donde ir n emplazadas las herramientas y dependencias de LibWiiEsp L
54. s necesario establecer algunas variables de entorno para que el sistema sepa d nde localizar estas herramientas que acabamos de instalar Las dos primeras consisten en la ruta hasta el directorio base devkitpro y hasta el directorio donde se encuentran las herramientas como tal concre tamente devkitpro devkitPPC La tercera variable de entorno indica la direcci n IP de nuestra Nintendo Wii dentro de la red local dato necesario para ejecutar correctamente las aplicaciones que se desarrollen sin que haga falta copiar el ejecutable en la tarjeta SD de la consola cada vez que se genere uno nuevo Para establecer estas variables de entorno basta con editar el archivo de configuraci n bashrc del usuario con el que vayamos a desarrollar utilizando LibWiiEsp Si por alguna causa fuera necesario que todos los usuarios del sistema tengan que usar estas herramientas el archivo de configuraci n a editar ser a etc bashrc o su equivalente en el sistema por ejemplo para una distribuci n Ubuntu 10 10 de 32 bits el archivo es etc bash bashrc Suponiendo que s lo nuestro usuario va a desarrollar utilizando LibWiiEsp las instrucciones para establecer estas variables de entorno ser an echo export DEVKITPRO opt devkitpro gt gt bashrc echo export DEVKITPPC DEVKITPRO devkitPPC gt gt bashrc echo export WIILOAD tcp 192 168 X X gt gt bashrc Un detalle en estas instrucciones 92 68 X X se debe sustituir por la direcci n IP que tie
55. s problemas derivados de los distintos sistemas de representaci n Para un ejemplo pr ctico sobre el uso de estas dos funciones ver el c digo fuente de la clase Imagen de LibWiiEsp 10 Rw Ne 3 2 Los tipos de datos A la hora de programar para Nintendo Wii se utilizan siempre estos tipos de datos Tipo de dato Descripci n Rango u8 Entero de 8 bits sin signo 0 a 255 s8 Entero de 8 bits con signo 127 a 128 ul6 Entero de 16 bits sin signo rango 0 a 65535 s16 Entero de 16 bits con signo 32768 a 32767 u32 Entero de 32 bits sin signo O a OxffffFEFF s32 Entero de 32 bits con signo 0x80000000 a Ox 7fffffff u64 Entero de 64 bits sin signo O a OxffEEEEEEEEEEEEEF s64 Entero de 64 bits con signo 0x8000000000000000 a Ox 7ffffftttttttttt 32 Flotante de 32 bits f64 Flotante de 64 bits Cuadro 1 Tipos de datos que se deben emplear al programar para Wii Todos los tipos de datos disponibles se encuentran en opt devkitpro libogc include gctypes h 3 3 La alineaci n de los datos Otro detalle importante que se debe contemplar a la hora de programar para Nintendo Wii es que el procesador de la consola necesita alinear los datos conforme a su tama o Es decir si vamos a trabajar con un entero de 32 bits 4 bytes s lo se pueden almacenar en posiciones de memoria m ltiplos de cuatro 0 4 8 12 Lo mismo ocurre con variables de 16 o 64 bits Para ilustrar el comportamiento del proces
56. stado y las transiciones posibles entre stos 4 3 Niveles Un nivel representa el escenario donde los actores ya est n controlados por un jugador o por la maquina interact an entre s y con los componentes de dicho nivel Al igual que ocurre con los actores LibWiiEsp proporciona una clase base para crear niveles de una manera sencilla y r pida que permite dise ar cada nuevo escenario utilizando el software Tiled editor de mapas de tiles Hay que distinguir entre los conceptos de escenario y nivel Para LibWiiEsp un nivel es una clase derivada de la clase abstracta Nivel y que define varios escenarios que se comportan de la misma forma siendo cada escenario un mapa de tiles generado con Tiled en el que se especifica la disposici n de los tiles y los actores que participan Con esto se consiguen varias ventajas En primer lugar definiendo una sola vez el comportamiento de un tipo de escenario en una clase derivada de Nivel se pueden generar m ltiples escenarios cuya l gica sea la implementada en esta clase Por otro lado este sistema permite que en un mismo videojuego se puedan intercalar f cilmente escenarios con comportamientos distintos como ejemplo se puede pensar en las t picas fases de bonus de cl sicos como Street Fighter en las que se debe destruir un coche o varios barriles en lugar de luchar contra otro oponente controlado por la m quina 4 3 1 Partes de un nivel Un nivel se compone de tres partes que son
57. su comportamiento seg n el estado en el que se encuentren en un momento determinado Sin embargo las transiciones entre distintos estados es conveniente realizarlas en el correspondiente m todo de actualizaci n de la clase que gestiona el escenario a pesar de que se pueden hacer desde la clase del actor 4 3 2 Creaci n de un escenario con Tiled El proceso de creaci n de un escenario a partir de la herramienta Tiled es muy sencillo En su p gina oficial http www mapeditor org podemos descargar la ltima versi n o dependiendo de si el sistema en el que nos encontremos en mi caso al redactar este manual una Ubuntu 10 10 dispone de esta utilidad en los repositorios se puede instalar con la siguiente orden sudo apt get install tiled Una vez instalado ejecutamos Tiled y pulsamos en el bot n Nuevo Se abrir una ventana en la que se nos preguntan algunos par metros del nuevo mapa de tiles Seleccionamos proyecci n ortogonal el ancho y alto en p xeles de cada tile y el ancho y alto medido en n mero de tiles que tendr el escenario Las medidas de un tile deben ser m ltiplos de 8 p xeles debido a los requisitos para la carga de texturas con LibWiiEsp siendo un tama o recomendable es 32x32 p xeles por tile La resoluci n que utiliza la Nintendo Wii en un sistema PAL y proporci n 4 3 es de 640 p xeles de ancho por 528 de alto por lo que el tama o m nimo del escenario deber a ser si utilizamos la medida 32x32 p xeles
58. the combined work In the combination you must combine any sections Entitled History in the various original docu ments forming one section Entitled History likewise combine any sections Entitled Acknowledge ments and any sections Entitled Dedications You must delete all sections Entitled Endorsements 30 6 COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License and replace the individual copies of this License in the various documents with a single copy that is included in the collection provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects You may extract a single document from such a collection and distribute it individually under this License provided you insert a copy of this License into the extracted document and follow this License in all other respects regarding verbatim copying of that document 7 AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works in or on a volume of a storage or distribution medium is called an aggregate if the copyright resulting from the compilation is not used to limit the legal rights of the compilation s users beyond what the individual works permit When the Document is included in an aggregate this License does not apply to the other wo
59. todos los archivos que contengan recursos multimedia que vayan a ser empleados en el proyecto De momento s lo est n soportados im genes bitmap de 24 bits de color directo fuentes de texto soportadas por FreeType2 efectos de sonido en formato PCM y pistas de m sica mp3 src Aqu van los archivos fuente del proyecto a xml Archivos de datos del proyecto Como m nimo aqu se encontrar n el archivo que describe los recursos multimedia que se cargar n en la galer a de medias el archivo del soporte de idiomas y el archivo de configuraci n del programa 2 2 El archivo makefile La estructura de directorios y los detalles que la acompa an como las restricciones de estructura ci n a la hora de utilizar bibliotecas externas en el proyecto se han definido as para trabajar con un archivo de compilaci n makefile concreto Este archivo de compilaci n implica una serie de modificaciones considerables en comparaci n con uno que genere un ejecutable para PC en entornos GNU Linux por lo que va a detallarse su funciona miento secci n a secci n El objetivo de este makefile es generar un ejecutable con extensi n dol que puede lanzarse en una videoconsola Nintendo Wii A continuaci n se muestra un sencillo ejemplo de makefile compatible con la estructura de directorios planteada en el punto anterior Informacion configurable LOCALLIBS tinyxml bullet PROJECT Wii Pang TARGET boot BUILD build
60. todos los ficheros objetos del proyecto libs y LOCALLIBS Se encargan de compilar las bibliotecas externas de empaquetarlas en ficheros de enlace est tico y mover stos al directorio de los ficheros objeto wo CURDIR BUILD o Genera un fichero objeto en el directorio BUILD por cada m dulo que se encuentre en el directorio de los ficheros fuentes listo Objetivo que limpia un archivo de extensi n elf map a run Lanza la utilidad wiiload para enviar el ejecutable a la Nintendo Wii sta debe tener abierto el HomeBrew Channel y estar conectada a la red local con la misma direcci n IP que se indic en la variable de entorno WIILOAD de otro modo no ejecutar el programa clean Objetivo que limpia de archivos temporales el proyecto Elimina la carpeta donde se alma cenan los ficheros objeto y ejecuta tambi n los objetivos clean de cada biblioteca externa La ltima parte de este ejemplo se encarga de comprobar que se cumplan las dependencias de los m dulos a compilar de generar un ejecutable elf a partir de los m dulos objeto del proyecto y en ltimo lugar de crear el ejecutable definitivo dol a partir del archivo elf 2 3 Ejecuci n del programa Una vez generado nuestro programa existen dos maneras de ejecutarlo en la videoconsola La prime ra ya descrita es lanzarlo a trav s del objetivo make run para lo cual necesitamos tener correctamente conectada la Nintendo Wii a la red local y

Download Pdf Manuals

image

Related Search

Related Contents

PR3-2 Annexe 22 Manuel  General Specifications  User Manual - Single Point Controller, Hydrogen Sulphide,H  VX-6R Technical Supplement - The Repeater Builder`s Technical  3月号  取扱説明書 KR71REK - Black & Decker Service Technical Home Page  B.A.S.I.S. Exit Hardware Trim Shear Pin Replacement Kit Instructions  b32-fra-limitations FINAL (2  Philips waterproof beard trimmer BT5260/33  補助金事務取扱説明書(PDF 4684KB)  

Copyright © All rights reserved.
Failed to retrieve file