Anuncios Google

Tutorial 02 Como Compilar Nuestro Codigo Con Cygwin

Tutoriales Avanzados Homebrewes

Hola a todos veo que seguis interesados en hacer vuestros propios programas para PSP. Pues una vez que tenemos instalado el compilador CYGWIN (si no lo teneis instalado, revisad el inicio del tutorial usando el menu derecho de la web) nos tendriamos que poner a programar como locos pensando que ya esta todo hecho. Pero no es asi porque si no hacemos unas determinadas cosas cuando le pasemos nuestro codigo al compilador no sabe para que dispositibo queremos portar nuestro codigo (PC NDS, PSP, Etc..) y lo mas importante que librerias y archivos van a formar este programa. Esto lo hacemos mediante el archivo MAKEFILE.

Todo programa que hagais tiene que tener su MAKEFILE. Este archivo se puede hacer con cualquier editor de textos que tenga soporte para UNIX. Teneis que usarlo en UNIX dado que el CYGWIN es un compilador de UNIX portado a WINDOWS. Bueno sin mas dilaciones vamos a lo que nos importa: empezamos con el compilador.

Mirad cuando instalamos CYGWIN se forman unas carpetas dentro de la carpeta X:\CYGWIN donde X es la unidad conde habeis instalado el CYGWIN. En mi caso F:\CYGWIN dentro de CYGWIN. Tenemos que buscar la carpeta HOME y dentro de esta encontraremos una carpeta con tu nombre de usuario. La direccion sera asi X:\CYGWIN\HOME\USUARIO en mi caso la direccion queda asi F:\CYGWIN\HOME\KALTORAK.

Esta carpeta es la que usaremos para poner nuestro codigo dentro de otra carpeta con el nombre que querais. Por ejemplo PRUEBA1. Metemos la carpeta con el codigo en esta direcion porque cuando cargamos el CYGWIN nos lleva directamente a ella. Asi nos ahorramos tener que estar moviendonos por los directorios del disco duro. Pero si no os gusta poner lo hay pues nada os tocara andar moviendos por los directorios, por ejemplo si poneis vuestro codigo en el raiz osea en X:\EJEMPLO donde X es la unidad donde lo habeis puesto y EJEMPLO el directorio que habeis creado para almacenar los archivos con el codigo, una vez que cargais el CYGWIN tendriais que poner esto para ir a ese directorio CD X:\. Una vez en la unidad tendrais que poner CD EJEMPLO y ya estariais en el directorio deseado. Se puede hacer asi perfectamente pero yo soy muy vago y prefiero no tener que andar moviendome por todos los directorios de al unidad, por eso meto las carpetas con el codigo en X:\CYGWIN\HOME\USUARIO donde X es la unidad y USUARIO vuestro NICK. Asi una vez que cargo el CYGWIN solo tengo que hacer CD EJMEPLO y listo ya estoy dentro de la carpeta del codigo. ¿Simple verdad?.

Una vez aclarado esto vamos a mirar el MAKEFILE que uso yo para mis proyectos. La verdad es que no voy a hacer un tutorial exahustivo sobre como crear un MAKEFILE porque la verdad se escapa un poco de lo que aqui pretendo enseñaros y la verdad hay muy buenos tutoriales en la red sobre como se crean los archivos MAKEFILE. Pero no os preocupeis que os voy a enseñar lo mas importante para que ya podais programar todas o por lo menos la mayor parte de vuestras aplicaciones. Yo siemple uso el mismo MAKEFILE solo le hago pequeñas variaciones que os voy a explicar a continuacion.

Mirad aquí teneis el codigo que yo uso para mi archivo MAKEFILE:

TARGET = Prueba1
PSPSDK = $(shell psp-config --pspsdk-path)
PSPBIN = $(PSPSDK)/../bin
OBJS = main.o
JOY = YES
CFLAGS = -Wall -Wno-long-long -G0 -O2 -DJOY_$(JOY)
CFLAGS += $(shell $(PSPBIN)/sdl-config --cflags)
LIBS = -lstdc++ -lSDL $(shell $(PSPBIN)/sdl-config --libs)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Prueba1
include $(PSPSDK)/lib/build.mak

Vereis que no es tanto como parecia al principio. La verdad los MAKEFILE asutan un poco al principio y mucha gente se echa para atras con tal de no lidiar con ellos pero la verdad una vez que tienes su estructura principal definida solo es cambiar una cosa aquí y otra alli y listo que eso es lo que vamos a hacer ahora. Este tipo de archivos no tiene extension, osea su nombre es Makefile y listo.

El archivo MAKEFILE le dice al compilador los archivos que van a formar el codigo, las librerias que se tienen que mezclar con ese codigo para que este funcione y la forma de salida que tendra este codigo para poder usarse en un PC,NDS,PSP,Etc.. asi como la direccion en la que se encuentran dichas librerias y los ejecutables que usa el compilador para tales fines. Sin mas empiezo a explicar las partes que cambiaremos habitualmente.

TARGET = Prueba1

Mirad esta parte del codigo es la encargada de darle el nombre a los archivos una vez compilados: le pone el nombre al .ELF por eso no pongais nombres raros poned nombres descriptivos de pocas letras y sin signos raros u os dara error a la hora de compilar.

PSPSDK = $(shell psp-config --pspsdk-path)
PSPBIN = $(PSPSDK)/../bin
CFLAGS = -Wall -Wno-long-long -G0 -O2 -DJOY_$(JOY)
CFLAGS += $(shell $(PSPBIN)/sdl-config --cflags)
include $(PSPSDK)/lib/build.mak

Estas lineas de codigo le dicen al compilador donde tiene que Buscar las librerias y demas, asi como definiciones que vamos a usar en nuestro codigo. De esto no se toca nada, ya esta listo para usarse.

OBJS = main.o

Esta linea es muy importante porque aquí le decimos al compilador los archivos que van a formar nuestro codigo osea los archivos .C. Por ejemplo mi codigo tienes dos archivos de C que son main.c y movimiento.c pues tendria que poner esta linea de esta manera.

OBJS = main.o movimiento.o

Cambiando la extension .C por .O para que el compilador sepa que esos archivos los tiene que compilar como objetos y asi con todos los archivos de codigo que formen nuestro programa.

JOY = YES

Esta linea activa el uso del JOY en las SDL osea nos permite usar las teclas asi que siemple la incluimos tal cual.

LIBS = -lstdc++ -lSDL $(shell $(PSPBIN)/sdl-config --libs)

Si la linea OBJS es importante esta tambien lo es muchisimo porque en ella se incluyen las librerias que vamos a LINKAR a nuestro codigo, asi como su direccion, por eso esta linea es tan importante. Mirad en este ejemplo estamos diciendole al compilador que nuestro codigo para funcionar necesita las librerias STDC++ y SDL si en nuestro codigo por ejemplo usasemos tambien SDL_TTF y SDL_IMAGE pues esta linea tendria que quedar asi:

LIBS = -lstdc++ -lSDL -lSDL_ttf -lfreetype -lSDL_image$(shell $(PSPBIN)/sdl-config --libs)

Y asi con todas las librerias que usemos en nuestro codigo, ¿muy simple verdad?.

EXTRA_TARGETS = EBOOT.PBP

Esta linea simplemente le dice al compilador que el ejecutable tiene que ser EBOOT.PBP. Como en nuestros proyectos siempre o casi siempre va a ser asi pues nada la poneis tal cual y listo

PSP_EBOOT_TITLE = Prueba1

Y por fin llegamos a esta linea que es super descriptiva asi que no va a hacer mucha falta esplicarla pero por si acaso esta linea lo que hace es ponerle el titulo a la aplicación que hemos hecho. Ese titulo es el que se ve en la PSP cuando nos ponemos sobre el icono de nuestra aplicación.

Con esto a grandes rasgos teneis todo lo que hace falta para modificar un archivo MAKEFILE muy simple. Si quereis saber mas pues lo dicho anteriormente en la RED hay verdaderas maravillas en cuanto a manuales sobre archivos MAKEFILE.

Una vez tengais creado el archivo Makelife lo poneis junto con vuestro codigo en la carpeta en la que lo tengais guardado. Acto segido cargais el CYGWIN y vais al directorio en el que se encuentre el codigo. Por ejemplo asi:

CD EJEMPLO

Y poneis make y automaticamente el compilador se pone a trabajar. Si el codigo esta bien os generara varios archivos, el importante es EBOOT.PBP que es el que copiaremos en nuestra psp para ejecutar la aplicación.

Y listo con esto queda visto el tema de compilar nuestras aplicaciones. Los tutoriales que voy ha hacer vendran con su codigo y su Makefile listos para compilar asi que solo tendreis que copiarlos en X:\CYGWIN\HOME\USUARIO donde X es la unidad donde teneis instalado el CYGWIN y USUARIO es vuestro NICK y listo lo compilais y a jugar.

Un saludo

Kaltorak

4.5
Tu voto: Ninguno Votos totales: 4.5 (10 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de terresman

donde puedo

donde puedo descargarme el programa CYGWIN

Imagen de Unicorn

Como dice arriba

Imagen de Metallica

Muy bueno el tuto. Una duda:

Me parece muy bueno el tuto, de echo voy a ponerme a ver si hago algo xD. Me gustaría "portear" algunos juegos abandonware de PC, ¿Necesito descompilarlos primero no??? Un salu2 a todos!


Mi última entrada de bitácora: Reseña sobre PS Vita

Imagen de kaltorak

Hola Metallica

Lo primero que tienes que tener es el codigo fuente del juego que quieras portar una vez lo tengas y siempre y cuando sea en sdl podrias compilarlo y resolver los fallos de compilacion y despues modificar paso a paso los problemas de visualizacion que te surjan por que supongo que los graficos estaran echos para otro tipo de resolucion  tambien tendra que redefinir las teclas para la configuracion de la  PSP pero esto no vale por ejemplo si tienes un juego ya compilado y lo quieres pasar dado que dudo mucho que puedas descompilarlo en c ?????

Un saludo
KAltorak

 


Imagen de Metallica

Gracias por responder tan rápido!

Gracias, ¿pero como obtengo el código fuente si no me lo proporciona la compañia que lo desarrolló en su momento?? Debe de haber alguna manera de obtenerlo no?? Hay algún decompilador "sencillo" que pueda usar?? Gracias!


Mi última entrada de bitácora: Reseña sobre PS Vita

Imagen de Metallica

A ver.

No se si me explico. Yo lo que quiero hacer es cojer juegos abandonware que corrían en MS-DOS, descompilarlos y volverlos a compilar en un EBOOT para correrlos en mi negrita. (Suena facil no? xD) Para eso necesito un decompilador de C no? (Ya me he bajado alguno, estoy peleandome con el a ver si saco algo) Si alguien me puede recomendar alguno sencillo, me sería de gran ayuda. Gracias a todos!!!


Mi última entrada de bitácora: Reseña sobre PS Vita

Imagen de kaltorak

Dificil tienes la cosa

Sip la verdad es que es dificil que consigas el codigo fuente de un juego de alguna compañia mas o menos importante dado que se lo guardan como oro en paño puedes probar a hacer un interprete como has echo muchos estilo a los de maniac mansion y demas pero eso se escapa de mis conocimientos y por lo que creo tambien de las tuyos otra opcion que tienes es hacer el codigo tu mismo desde cero por ejemplo mi KOPBANPSP se vasa en el sokoban pero no tengo dicho codigo fuente lo he creado de cero y con un poco de prectica tu tambien podras hacer alguna cosa chula ;) otra opcion es buscar por la red algun codigo del juego que quieres hacer que sea libre que lo halla echo otra persona y modificarlo a tu antojo

Un saludo
KAltorak


Imagen de Metallica

Uf... no creo k pueda "crear" esos juegos xD

Los juegos en cuestión (por si a alguien le interesa) son los street rod 1 y 2 y el stunts (los podeis encontrar en, por ejemplo www.abandonia.com o en alguna página similar de juegos abandonware. Creo que esas compañías ya cerraron, por lo que es imposible conseguir el código fuente (creo)... Por eso intento descompilar a ver si puedo hacer algo, para luego, con tu tuto y algo + de ayuda, hacer resurgir esos clasicos (os animo a que probeis esos juegos, los graficos no es k sean de lo mejor pero son juegos divertidos como pocos, en serio). Un saludo!!!


Mi última entrada de bitácora: Reseña sobre PS Vita

Imagen de kaltorak

Chungo chungo

Sip lo tienes chungo no creo que sea posible conseguir esos codigos y en caso de que los consiguieras dudo muchisimo que usen SDL usaran librerias sullas o en todo caso como mucho allegro que es lo que corria por aquellas epocas asi que tendrias que portar todo o casi todo el codigo a PSP no conozco tu nivel de C pero aun asi veo dificil que puedas hacerlo sin el codigo fuente y aun con el te costara vastante tiempo pero que no se diga animo si lo consigues yo sere de los primeros en disfrutar como un moco con ellos en mi negrita

Un saludo y espero que lo consigas
Kaltorak

 


Imagen de Metallica

Ok.

Nivel de C/C++ = 0 :(

 

 

 

 

P.D: Creo que buscaré algún libro tipo "C/C++ para dummies"

!Sigue con tu guia!!!! 


Mi última entrada de bitácora: Reseña sobre PS Vita

Imagen de kaltorak

Nuevas opciones

Hola Metllica

Hola Metllica

con tus conocimientos en C creo que deveras bajar un poco el liston programar no es como otras cosas que se pueden hacer en PC que con algun programa haces tal o cual cosa y listo empieza mejor por algun juego sencillo del que tengas el codigo fuente y modificalo poco a poco hasta conseguir hacer algo mas o menos chulo ;)

un saludo
kaltorak.

 


Imagen de Metallica

Una duda

¿El makefile lo hago con cygwin o con un programa de codigo C??? Gracias!!

Imagen de kaltorak

Hola Metallica

el archivo makefile tienes que hacerlo con un editor de textos yo por ejemplo uso el ultraedit pero puedes hacerlo con cualquier editor de texto aun que seria recomendable que te permitiera grabar en formato unix ;)

Un saludo
Kaltorak

 


Imagen de Metallica

Muchas gracias kaltorak!!

Gracias tio!!!

 

 

 

 

 

P.D: Creo que ya se como voy a conseguir el código fuente (Descompiladores POWA!!!) xD 


Mi última entrada de bitácora: Reseña sobre PS Vita

jajaj

qe divertido como los comentarios se van asiendo para la derecha

cuendo le responden a algun usuario 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.