IPB

Bienvenido, invitado ( Identificarse | Registrarse )

Perfil
Foto del Usuario
Rating
 
Opciones
Opciones
Declaración Personal
Neo_Amrax no tiene declaración personal.
Información Personal
Neo_Amrax
Recuerda mi rango... Smod!
100 años
Hombre
Botmania HQ
Nacido Ene-1-1908
Intereses
Sin información
Estadísticas
Ingresó: --
Visitas al Perfil: 236*
Visto Última Vez: 25th September 2008 - 02:45 PM
Hora Local: Nov 22 2008, 07:05 AM
157 mensajes (0 Mensajes por día)
Información de Contacto
AIM Sin información
Yahoo Sin información
ICQ Sin información
MSN Pidemelo por MP xD
Contact Privado
* Visitas al perfil actualizadas cada hora

Neo_Amrax

SMod

***


Temas
Mensajes
Comentarios
Amigos
Mi Contenido
28 Dec 2007
Pues eso, necesito un "Dice mod" para phpbb2, si puede ser NO el de: [dice]2d10[/dice] o algo asi... no me interesa porque se puede trucar xD
17 Nov 2007
Debian GNU/Linux
Empresa: Proyecto Debian
Primera aparición: agosto de 1993
Predecesor: N/A
Última v. estable: 4.0 (Etch)
web de la distro

Fedora Core
Empresa: Proyecto Fedora
Primera aparición: noviembre de 2003
Predecesor: Fedora Linux / Red Hat Linux
Última v. estable: ver 7 / 31 (Mayo 2007)
web de la distro (Inglés)


Gentoo
Empresa: Fundación Gentoo
Primera aparición: marzo de 2002
Predecesor: Enoch
Última v. estable: 2007.0
web de la distro(Inglés)

Mandriva Linux
Empresa: Mandriva
Primera aparición: julio de 1998
Predecesor: Mandrake Linux/Conectiva & Lycoris Xls
Última v. estable: 2008.0
web de la distro(Inglés)

Rxart
Empresa: Pixart
Primera aparición: octubre de 2001
Predecesor: rxart / rxart linux
Última v. estable: 3.2
web de la distro

Slackware Linux
Empresa: Patrick Volkerding
Primera aparición: julio de 1993
Predecesor: SLS
Última v. estable: 12.0
web de la distro(Inglés)

SUSE Linux
Empresa: Novell, OpenSUSE
Primera aparición: marzo de 1994
Predecesor: Jurix
Última v. estable: 10.3
web de la distro

Ubuntu
Empresa: Canonical Ltd.
Primera aparición: octubre de 2004
Predecesor: Debian
Última v. estable: 7.10 (Gusty Gibbon)
web de la distro



Nota1: Rxart no tiene versión gratuita, su precio es de 16€
Nota2: SUSE dispone de una versión profesional de 51.95€


Si veo algo mas que poner, lo actualizaré wink.gif
17 Nov 2007
vamos a ver, ya que el otro tema se nos fue de las manos, abro este para debatir sobre el mundo del futbol


aviso importante, como vea a alguien desvirtuar cierro el post, sin miramientos, ha quedado claro??

os dejo postear wink.gif ya que a mi no me gusta el fútbol
16 Nov 2007
Una vez instalado el SDK y Cygwin, teniendo actualizadas todas las librerías, podremos empezar a plantearnos qué es lo que queremos hacer y cómo. Doy por supuesto que habrá gente que lea este tutorial con unos mínimos conocimientos de C o C++, y gente que no. Con él intentaré mostraros la base de cómo estructurar vuestros propios proyectos para PSP. Se intentarán dar los primeros pasos; eso si, para los no iniciados en programación, quiero comentarles que el C no es el mejor lenguaje para empezar a programar.

Organizando nuestros proyectos

Lo primero será crear una jerarquía de las carpetas para organizar nuestros proyectos. Abre una consola bash con el CYGWIN, y teclea mkdir projects y pulsa Enter. Los soportes de este comando "mkdir" parten de "MaKe DIRectory" y creará un directorio, o la carpeta, en su directorio de funcionamiento actual. Bien, ahora tenemos una carpeta nueva para todos nuestros proyectos, navegamos en ella tecleando cd projects. Ahora creamos otro directorio para un proyecto específico. Por ejemplo mkdir helloworld. Y pasamos al nuevo directorio con el comando cd helloworld.

Nota: Recordar a los no iniciados en el bash, para ver el contenido de una carpeta usamos el comando ls. Para ver los todos comandos del bash, usamos el comando help. Y el comando man (usado adecuadamente, ver help), nos dara una explicación detallada de cada comando. No es imprescindible conocerlos todos, pero el ls es basico.

Ahora deberemos hacernos con un editor de textos. Realmente no importa cual uses, puedes usar el Notepad, Wordpad, el que prefieras; yo me quedo con el UltraEdit. Es preferible usar un editor que sea capaz de identificar el código fuente de C/C++ debido a la que la sintaxis se destaca, las opciones quedan más claras (mucha gente de la scene usa Dev-C++ ). Pero lo dicho, no importa cuál uses, siempre que sepas utilizarlo.

Ahora crearemos un archivo nuevo llamado main.c en nuestro directorio helloworld. Este va a contener el código fuente de nuestro programa.

Apunte

Por si alguno no sabe qué es el código de fuente (y sé que habrá algunos), el código de fuente es lo que escribimos para crear un programa. Se escribe de una manera en que los seres humanos pueden entender. En la mayoría de los lenguajes, el código fuente necesita ser convertido a un formato que el ordenador (o en nuestro caso, la PSP) pueda entender. Éstos se llaman los lenguajes compilados, y englobaríamos C y C++ en esta categoría (la conversión se hace con el recopilador que instalamos previamente, el SDK). Hay algunos otros lenguajes de programación que utilizan lo que se llama un intérprete para leer el código fuente y compilan el código automáticamente. Éstos se llaman lenguajes scripting (un ejemplo de lenguaje scripting es PHP).

Los primeros pasos

Bien, ya tenemos el archivo que llevara nuestro código fuente. Ahora necesitamos comenzar a escribirlo. La primera parte del programa debe contener comentarios para decir a cualquier persona que lea nuestro código cuál es el objetivo del programa, cuándo fue escrito, y quién es el autor. Los comentarios son las líneas del código fuente que se omiten del binario compilado (o saltado por el intérprete en lenguajes scripting). Los comentarios son una parte muy importante del código, porque cuando tú (o algún otro) los vuelve a leer para corregir el código fuente más adelante, no recordará todas las intrincaciones del programa. Así pues, puedes dejar notas en forma de comentarios. Los comentarios se señalan con los caracteres // y /* . En cualquier momento cuando ves // sabes que el resto de la línea será un comentario. /* se usa como principio del comentario, el compilador no hará caso de su código hasta que alcanza el final, marcado con */. Un apunte interesante, cuando tenemos algun error en el codigo, al compilar podemos intentar omitirlo marcando esa linea como comentario.

Así pues, vamos a empezar nuestro programa; vamos a dejar un comentario al principio acerca de lo que hace, cuándo fue creado, y quién es su autor.

// Hola Mundo - mi primera Aplicacion para PSP

/*
Este programa fue creado por (aquí iria tu nombre) el (aquí iria la fecha)
Es una simple aplicacion "Hola Mundo".
*/

La siguiente parte del programa es donde decimos a recopilador qué archivos son principales (header) y cuáles se incluyen para utilizar en nuestro programa. Básicamente #include copia el código del archivo que indiques en el header del programa. Esto permite que crees un programa simple, mientras que usas el código avanzado que ya esta escrito. El directorio include puede incluir cualquier archivo header que viniera con el compilador (o que agregues al compilador), o los archivos header específicos para el proyecto en el cual estes trabajando. La forma de indicar cuál de éstos quieres incluir se marca con < > para incluir un archivo o si utilizamos " " comillas para hacerlo. Menorque y mayorque incluyen un archivo del recopilador include el directorio, y las comillas incluyen un archivo del mismo directorio que el archivo, incluyendo ellas. Incluiremos dos archivos en nuestro programa. El primero es pspkernel.h. Este archivo deberá incluirse en cada programa que escribas para el PSP. Contiene todo lo específico del código para PSP. Tu programa no funcionará en la PSP si no incluyes este archivo. El segundo archivo que vamos a incluir es pspdebug.h. Este archivo contiene varias funciones útiles para eliminar errores de tus programas, pero incluye específicamente la función que vamos a utilizar para escribir el texto a la pantalla. Así pues, agregamos este código a nuestro programa.

#include <pspkernel.h>
#include <pspdebug.h>

Ahora diremos a la PSP algo sobre el programa. Ésto no es realmente importante (tu programa compilaría sin él), pero es siempre una buena opción para mejorar la compatibilidad. La primera cualidad es el nombre del programa, pero no es realmente el nombre del programa que aparecerá (cambiaremos eso más adelante). Los otros valores son otras cualidades (licencia ajustada solamente), versión importante, y versión de menor importancia. Dejaremos todos los éstos a excepción del nombre como valores por defecto. Así pues, agregamos la línea siguiente al programa:

PSP_MODULE_INFO("Hola Mundo", 0, 1, 1);

Vamos a instalar la función que utilizaremos para escribir en pantalla. Este paso es opcional, pero hace que los programas basados texto sean mucho más fáciles de escribir. Una buena base en esa línea (simplificar la escritura), trata en cambiar la función en que se construye en la PSP, llamada pspDebugScreenPrintf por algo que sea mucho más fácil de teclear. Esta función se utiliza para escribir a la pantalla, y ya la veremos más adelante. Lo que vamos básicamente a hacer aquí es redefinir printf en vez de pspDebugScreenPrintf, para que cada vez que utilizamos printf el recopilador lo trate como si hubiéramos tecleado pspDebugScreenPrintf. Definimos dicho parámetro en nuestro programa:

#define printf pspDebugScreenPrintf

Bien, el bloque siguiente de código es bastante complicado. Las buenas noticias son que por ahora no necesitamos entenderlo. Dejo una breve explicación de lo que lo hace (dejaremos la sintaxis real y la explicación línea por línea para más adelante). Lo que esta parte del código contiene son básicamente las funciones que serán llamadas por nuestro programa. Las funciones instalarán el programa para funcionar en la PSP y permitirán que no nos preocupemos de si la PSP se bloquea o para salir del programa cuando lo deseemos (pulsando Home). Seguimos añadiendo lineas a nuestro programa:

/* Llamada de salida */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}

/* Llamada thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;

cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();

return 0;
}

/* Configura llamada thread y vuelve a su thread id */
int SetupCallbacks(void) {
int thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}

return thid;
}

Ahora vamos a definir la función principal. Cada programa en C y C++ necesita una función principal. Aquí es desde donde se ejecuta el código. Funciones de C (y algo de C++) en el paradigma proceedural. Esto significa que el código entra en una trayectoria linear. Por ejemplo, tenemos el código siguiente.

//No pongas esto en el programa.
//Solo es un ejemplo.

int myFunction() {
//Print Out 'A'
return 0;
}
int main() {
//Print Out 'B'
myFunction();
//Print Out 'C'
return 0;
}

Los comentarios (ve al principio este turorial si no recuerdas que son los comentarios) suelen hacer lo que dicen. El programa imprimirá B entonces, imprimirá A y, para acabar, C, porque el recopilador comienza en la función principal. Imprime B, entonces ve la llamada myFunction que se define sobre él y va allí, ve que necesita imprimir A y después vuelve a donde dejó apagado e imprime C. Todos tus programas (hasta que pasemos a C++ avanzado) seguirán esta estructura linear. Así pues, la función main es vital para nuestro programa. Para definir una función, utilizamos la estructura siguiente: [tipo de retorno] [nombre]() de la función {. El tipo de retorno es lo que enviará la función de nuevo al programa. Para el main siempre debe ir precedida por int (que estará esperando para ser reinterpretado). El nombre de la función es su nombre para la función principal, y obviamente será nombrado como main. Así pues, definimos la función poniendo la línea siguiente en nuestro programa.

int main() {

Ahora necesitamos agregar dos líneas mas al sistema para limpiar la pantalla y utilizar esas funciones que pusimos anteriormente (las que dijimos que no hacia falta saber que hacian exactamente). Aunque no necesitamos conocer esas funciones de trabajo, es importante conocer los conceptos de cómo llamar funciones. Es realmente muy simple. Acabamos de poner el nombre de la función con paréntesis en el extremo (y si tomamos cualquier parámetro, los pondremos entre paréntesis, pero detallaremos eso más adelante). Cada línea en nuestro programa necesitará un punto y coma al final. La razón de esto es porque el compilador no ve ningún espacio blanco. Entre las líneas, podríamos tener 100 líneas vacías, y el compilador ni se enteraria. Esto es útil porque permite que nos ajustaremos el formato del código cómo deseemos, de una forma que podamos entender. Podemos agrupar líneas juntas, o hacer paragrafos segun bloeues de funciones de nuestro programa. Pero, alternadamente, al terminar una línea, necesitamos un punto y coma. Agregaremos estas dos líneas a nuestro programa, que poco a poco va cogiendo forma:

pspDebugScreenInit();
SetupCallbacks();

Por fin ha llegado la hora de escribir nuestro propio código, en el cual realmente podremos ver los resultados que de en nuestra PSP. ¿Recuerdas cuando definimos pspDebugScreenPrintf como printf? Bien, ahora es el momento de utilizar dicha función. La forma en que imprimiremos el texto en la pantalla será llamando la función del printf con un parámetro (ya dije que lo miraríamos más adelante). Un parámetro es una variable que podemos pasar a una función para su uso. Nos servirá de caso práctico más adelante, cuando estemos escribiendo nuestras propias funciones. Así pues, para mostrar printf en la salida a la pantalla, necesitamos pasarle una secuencia. Haremos salir Hola Mundo pasando esa secuencia a la función. Printf es una función de gran alcance porque podremos también utilizarla para hacer salir otras variables por la pantalla. Pasaríamos éstos como otros parámetros, pero como todo, vendrá a su debido tiempo. Por ahora, imprimiremos Hola Mundo en la pantalla, que ya es un avance:

printf("Hola Mundo");

Ahora necesitamos acabar algunos detalles, y entonces nuestro código de fuente estará listo para ser compilado. Necesitamos detener brevemente nuestro programa de modo que podamos ver la salida. Si no lo hiciéramos así, apenas podríamos ver el texto y volveríamos rápidamente al menú de la PSP. Nunca conseguiríamos ver nuestra hermosa frase en la pantalla porque se borraría tan rápidamente que no nos daría tiempo a leerla. Así pues, agregaremos la siguiente línea para detener brevemente el programa, hasta pulsar el botón Home y enviar al usuario de nuevo al menú principal de la PSP.

sceKernelSleepThread();

Ahora necesitamos dar a nuestra función un valor de retorno; recordad cuando definimos ("int main()"), dijimos al compilador que volviera un número entero. Le decimos que vuelva a 0 (que es un cero, no un O mayúscula') teclando la siguiente línea:

return 0;

Y finalmente, terminamos la función poniendo el símbolo de cierre:

}

¡Y eso es todo! Ahora tenemos que decirle al compilador cómo deseamos compilar este proyecto creando un makefile. Crea un archivo nuevo llamado makefile sin el extensión. Una vez creado, lo abrimos con nuestro editor, e introducimos las siguientes lineas.

TARGET = hello
OBJS = main.o

CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hola Mundo

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

Podremos utilizar este makefile como base para todos nuestros futuros proyectos simples. Necesitaremos a veces agregar bibliotecas o el whatnot a este archivo, pero por ahora nos funcionará bien éste. Básicamente, dice al compilador que tome main.c y lo construya usando el PSPSDK en un archivo con extensión pbp que la PSP pueda leer. Sólo necesitaremos cambiar, en el caso que queramos usar el makefile en otros proyectos, la línea donde dice PSP_EBOOT_TITLE = Hola Mundo. Podemos cambiar donde dice Hola Mundo al título que queramos para futuros programas, ese será el nombre que aparecerá en el menú de juego de la PSP cuando seleccionemos el homebrew.

Una vez lo tenemos todo, abrimos un bash shell de CYGWIN en el directorio de projects/helloworld. Teclea make y en el bash debe mostrarte algo de información. Te dirá si tu código fuente tiene algún error que lo haga incompilable. Generalmente, si le da algunas advertencias, no muestra mucho texto. Los errores son para lo que se revise el código por posibles errores, las advertencias son apenas los puntos posibles que podrían causar Bugs. ¡Si no te ha mostrado ningun error, ¡¡Felicidades!! Hemos creado con éxito y compilado nuestra primera aplicación para la PSP. Seguro que estás ardiendo en deseos de probarlo en tu PSP. Así pues, copiamos C:/cygwin/home/yourUserName/projects/helloworld/EBOOT.PBP en una carpeta con el nombre que queramos en la carpeta PSP/GAME de la PSP e intentamos cargarlo como si se tratara de otro homebrew.

Nota: Recordad que para que funcione en firmware 1.50 habria que instalarle el Kxploit, con el PSP Brew es muy fácil. Para firmwares 2.0 no hace falta.

Fuente:Betapsp



Espero que os sea útil wink.gif
14 Nov 2007
que os parece este gran titulo de Ngen? yo ayer ya lo probé en castellano en el pc de mi padre y es un puntazo, sigue teniendo la esencia de COD de toda la vida, pero son un salto brutal, impaciente por alquilarlo para mi ps3 cuando lo vea ^-^

lo mejor de todo es que deja de ser ambientado en la 2ª guerra mundial para situarse en un conflicto mas actual.

En Pc, después de la tipica misión de primer contacto con el juego, puedes elegir 4 modos de dificultad, el primero no os lo recomiendo ¬¬ la CPU hace la mayoria del trabajo, y no tienes que hacer casi nada... eso si, es mas realista y todo, pero no das un palo al agua...

los efectos de luz estan muy conseguidos, como las sombras, lo que me deja algo que desear es un poco los colores, falta gamma de colores, una parecida a la que tiene TimeShift, y el mundo seria perfecto xDDDDDD


un saludo ^^
Últimos Visitantes


8 Oct 2008 - 20:27


20 May 2008 - 14:43


27 Nov 2007 - 19:42


24 Nov 2007 - 18:06


19 Nov 2007 - 13:57


10 Nov 2007 - 12:51


6 Nov 2007 - 20:19

Comentarios
Otros usuarios no han dejado comentarios para Neo_Amrax.

Amigos
No hay amigos para mostrar.
Versión Lo-Fi Fecha y Hora actual: 22nd November 2008 - 07:05 AM