Hola a todos,
os dejo un nuevo módulo para bennu,
esta vez se trata de mod_mappy, un módulo de carga de mapas "fmp" creados con la herramienta mappy (http://tilemap.co.uk/mappy.php).
Es una adaptación de otra librería llamada SDLMappy que tiene el mismo objetivo pero para C++/SDL en vez de bennu.
Viene con el código fuente y con un "*.prg" de ejemplo, que también es una adaptación de un ejemplo de uso de SDLMappy.
aqportazo..
incluire este editor en el proximo bennupack..
y la dll ;D
Woooh, directo al disco duro para su estudio e integración en cierto motorcillo tileado, muchas gracias.
A ver si al abrirlo me entero mejor de qué es lo que hace, porque a simple vista, carga el mapa en memoria ¿y luego?
Mira el ejemplo.
Básicamente sirve para todo lo relaccionado con mapas.
Lleva soporte multicapa, fondo parallax, tiles animados, etc, hay mucha información acerca del formato en la página de mappy y también muchos tutoriales de como usar el programa.
Faltan cosas, y seguro que casi todo no va a ir, por ejemplo, actualmente, para que el sistema multi capa pueda tener varios niveles de z distintos en bennu,hay que hacer una piñuela: habría que crear n procesos, en cada uno cargar el fmp y controlar en cada uno una capa distinta del fmp.
karma++
Genial, felicidades.
Le echaré un ojo.
lo acabo de mirar, se ve genial.
karma++
funcionará a 32b?
Quote from: Prg on February 16, 2010, 01:43:15 AM
lo acabo de mirar, se ve genial.
karma++
funcionará a 32b?
Umn, pues no se, me limité a hacer funcionar el ejemplo de SDLMappy, me da la impresión de que no va a ir los 32 bits por lo que leí en la página web.
De todas formas, he visto que he usado SDLMappy1.0 que es del 2003 mientras que los de mappy actualizaron este SDLMappy a la versión 1.1 (este es del 2006, creo haber leído), estoy insertando este nuevo sdlmapy al mod. En cuanto lo tenga lo comparto, pero tampoco veo que tenga soporte de 32 bits, tendré que ver qué puedo hacer.
ah, muuuchas gracias por los karmas, hace mucho que no recibía ninguno y me estaba quedando atrás :D :D.
Lo he compilado en ubuntu y me va genial. ¿En general qué tal va de rendimiento con mapas grandes?.
En cuanto tengas la versión actualizada, ¡no dudes en subirla!
Veo bonitos los mapas que se pueden hacer, ¿Hay algún ejemplo que use un mapa además de la dll en sí misma?
Lo probaré cuando descanse un poquito del 3D :D
DCElso, de que modulos externos depende esta dll ?
Bueno, me confieso de una vez, es este tu modulo que he portado a Caanoo ;D, pero no encuentra el modulo por alguna dependencia xDDDD
umn, pues no tiene dependencias externas, a parte de libSDL y libbgdrtm.
Tiene que ser por otra cosa ¿Has tocado algo del código?
Pues no, bueno en el primer intento me lie con el import <vector>, pero al final consegui poner bien esta dependencia y compilar (ya que la toolchain de Caanoo tambien tiene estas cabeceras).
Tuve que cambiar el makefile para compilar en modo c++ por el tema este, pero se ha compilado con exito.
Una cosa, los loadings de una imagen .bmp que dependencias tienen ?
pues no se, las de bennu, ¿mod_map? o de alguna de las que dependa esta.
mira que a mi al principio me pasaba que los modulos C++ no me los reconocía bennu, y era debido a que hay que ponerle el extern C, a ver si van por ahí los tiros.
Pues los que compile para Windows con codeblocks no tuve problema si eran c++.
Aqui utilizó tu source tal cual (menos las rutas de las cabeceras), lo compilo con makefile en Linux, al menos que tenga que cambiar algo...
#include <vector>
//BennuGD functions
#include "include/bgddl.h"
extern "C"{
#include "include/libgrbase.h"
#include "include/xstrings.h"
}
#include "include/SDLMappy.h"
cagoen, entonces no se que falla, otro error para que bennu no te reconozca la libreria es que no la llames igual que como la llamaste dentro del .cpp, es decir, tiene que llamarse mod_mappy y que dentro del mod_mappy.cpp haya lo siguiente:
DLSYSFUNCS __bgdexport( mod_mappy, functions_exports) [] = {
No, si este ultimo he caido una vez y no vuelvo a caer xDDD
Lo siento tampoco es eso.
Me huele a temas del formato .bmp, o dll's que parecen estar en la distribución de Windows y no de Caanoo.
Por cierto otra cosa rara es que la de Windows ocupa 66,3 kb y la de Caanoo sólo 14,4 kb, y suelen ocupar parecido...
umn, nose, voy a compilarlo en linux y te digo.
Bueno, a mi no me ha dado ningún problema el port a linux. Quizás uno muy leve, de como usar los include de bennugd.
Ha sido compilar y probar, todo ok.
Mira a ver si te vale este código mejor.
Karma ;)
Lo que yo veo distinto es que creas tambien el objeto de SDL_Mappy, y los mezclas al final.
Mi makefile es el siguiente:
BASE_DEV=/home/geca/Geca/mod_mappy/caanoo_toolchain/gcc-4.2.4-glibc-2.7-eabi
PREFIX=$(BASE_DEV)/bin/arm-gph-linux-gnueabi-
BUILD_EXT=.so
PLATFORM=__ARM__
EXTRA_LIBS=
BENNU_CORE=/home/geca/Geca/mod_mappy
BENNU_BASE=/home/geca/Geca/mod_mappy/bennugd
BUILD_APP = mod_mappy$(BUILD_EXT)
CC := $(PREFIX)gcc
LD := $(PREFIX)gcc
AS := $(PREFIX)as
AR := $(PREFIX)ar
OBJECTS = mod_mappy.o
CFLAGS = -DTARGET_CAANOO -mcpu=arm926ej-s -mtune=arm926ej-s -O3 -DARM -D_ARM_ASSEM_ -I. -I$(BASE_DEV)/include -I$(BENNU_BASE)/core/include -I$(BENNU_BASE)/bgdrtm/include -I$(BENNU_BASE)/modules/libgrbase/ -I$(BENNU_BASE)/modules/libblit/ -I$(BASE_DEV)/arm-gph-linux-gnueabi/include/c++/4.2.4/ -I$(BASE_DEV)/include -fPIC
LDFLAGS = -shared -module -avoid-version -L$(BASE_DEV)/lib -L$(BENNU_BASE)/modules/libblit/.libs -lblit -L$(BENNU_BASE)/modules/libgrbase/.libs -lgrbase $(EXTRA_LIBS)
all: $(BUILD_APP)
$(BUILD_APP): $(OBJECTS) Makefile
$(CC) -o $@ $(OBJECTS) $(LDFLAGS)
%.o:%.cpp Makefile
$(CC) -c $(CFLAGS) $< -o $@
clean:
rm -f $(OBJECTS) $(BUILD_APP)
release: clean all
prueba a eliminar -lblib y a insertar "-lSDL -lbgdrtm"
Vale, de momento he tenido otro problema con mi disco duro de Windows, estoy backupeando, cuando termine me pongo.
Edit: No veo ese nombre en el makefile! Puedes cambiar tu la linea que dices y ponerla aqui ?
Gracias.
LDFLAGS = -shared -module -avoid-version -L$(BASE_DEV)/lib -L$(BENNU_BASE)/modules/libblit/.libs -lblit -L$(BENNU_BASE)/modules/libgrbase/.libs -lgrbase $(EXTRA_LIBS)
LDFLAGS = -shared -module -avoid-version -L$(BASE_DEV)/lib -L$(BENNU_BASE)/modules/libblit/.libs -lSDL -lbgdrtm -L$(BENNU_BASE)/modules/libgrbase/.libs -lgrbase $(EXTRA_LIBS)
Igual, mismo tamaño, mismo problema.
joe chico pues le pasa algo en canoo, ¿ pero usaste el código fuente último que compartí, el de linux?
Pensaba que era identico (le heche un ojo rápido). Lo voy a probar, ya te cuento.
si, es casi idéntico :)
Casi idéntico !!!! Me acabas de tomar el pelo, he ido por el portátil de Linux para nada ;D Si encuentras una diferencia no te quito el karma que ahora mismo me apetece quitarte :D
¿Algún ejemplo por ahí que use la librería?
Windgate, nose, peo las 3D te estan afectando :) Nos pides siempre cosas o haces siempre observaciones que se comentan varios posts arriba ;D
El ejemplo viene con la dll compilada, tanto la de Windows en la primera página, como la de Linux algunos posts atras...
Free, :'(, ya te dije que era la forma de como hacer los includes de bennuGD, antes hacía #include "bgdl.h" y ahora hace #include < bgdl.h > y así para todos los includes de bennu, para usar cadenas y otras funciones.
La diferencia es poca pero apreciable, con "" le dices al compilador que es una cabecera hecha por tí y con < > le dices al compilador que es una cabecera externa a tu proyecto.
Lo que no entiendo es qué es lo que te pasa, porque compilarte te compila para canoo ¿No? ¿el problema es luego al usarla con bgdc de canoo?
Intenta crear el .dcb de ejemplo en linux y luego intentar ejecutarlo en canoo insertando el mod_mappy.so para canoo que compilaste en la canoo.
Wind, efectivamente, en los dos códigos, tanto el de windows, como el de linux, tienen un directorio llamado prg donde va un prg de ejemplo de como usar mod_mappy.
Mappy es una aplicación (en versiones windows y linux) para generar archivos de mapas en un formato propietario. mod_mappy sirve para poder abrir y mostrar en pantalla los mapas hechos con Mappy y así poder usar estos mapas en tus juegos bennu.
No se porque me dices eso de los includes, eso fue de las pocas cosas que no se me han olvidado :)
Si, la tengo compilada, pero nose para que quieres que pruebe la de Linux, eso no va ayudar a que funcione la de Caanoo.
no te digo que pruebes la de linux, sino que compiles el .dcb en linux (por tanto para el bgdc de linux necesitarás la de linux) y luego lo ejecutes en canoo (por tanto para el bgdi de canoo necesitarás la de canoo).
Ha vale, aunque lo probé con el compilado en windows.
umn,, pues eso mismo me vale, y que resultados te dio?
Cual te imaginas ? Pues lo mismo, sino da error al compilar porque lo haces en un SO en el cual tiene la dll válida, pues te da error al ejecutarlo despúes porque no encuentra las funciones del modulo...
Y tienes el mod_mappy.so de canoo con todos los .so del runtime de bennu, no?
pues entonces debe de ser una dependencia con alguna librería del sistema de canoo, prueba a ponerle -lz -lc o algo así.
Sino, también, puedes probar a quitarle el -shared, a ver si te da algún undefinided refference la compilación.
Es lo que pienso, por eso te preguntaba por las dependencias. Tambien esta lo raro del tamaño que ocupa la mitad, y los modulos suelen tener tamaños parecidos entre varios SO.
Donde son esos cambios que comentas ? Parametros del dcb ?!
no, de la compilación para canoo, te acuerdas que te señalé en negrita un cambio en tu makefile? pues ahí mismo.
De este (http://sbock.net/upload/GPH_SDK-10.08_en.pdf) documento, extraigo que para compilar en caanoo necesitas cambiar lo siguiente en tu makefile:
BASE_DEV=/home/geca/Geca/mod_mappy/caanoo_toolchain/gcc-4.2.4-glibc-2.7-eabi
PREFIX=$(BASE_DEV)/bin/arm-gph-linux-gnueabi-
BUILD_EXT=.so
PLATFORM=__ARM__
BENNU_CORE=/home/geca/Geca/mod_mappy
BENNU_BASE=/home/geca/Geca/mod_mappy/bennugd
BENNU_RUNTIME=/home/geca/Geca/bgdrtm_caanoo
BUILD_APP = mod_mappy$(BUILD_EXT)
EXTRA_LIBS= -L$(BENNU_RUNTIME) -lgrbase -lbgdrtm
CC := $(PREFIX)gcc
LD := $(PREFIX)gcc
AS := $(PREFIX)as
AR := $(PREFIX)ar
OBJECTS = mod_mappy.o
CFLAGS = -DTARGET_CAANOO -DARM -D_ARM_ASSEM_ -I. -I$(BENNU_BASE)/core/include -I$(BENNU_BASE)/bgdrtm/include -I$(BENNU_BASE)/modules/libgrbase -I$(BASE_DEV)/DGE/include -I$(BASE_DEV)/DGE/include/SDL -I$(BASE_DEV)/include -Wall -O3 -fexceptions -fomit-frame-pointer -fPIC
LDFLAGS = -shared -module -avoid-version -L$(BASE_DEV)/DGE/lib/target -L$(BASE_DEV)/lib/target -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf -lDGE -lglport -lopengles_lite -lpng -lz -lts -lsmpeg –lfreetype -s $(EXTRA_LIBS)
all: $(BUILD_APP)
$(BUILD_APP): $(OBJECTS) Makefile
$(CC) -o $@ $(OBJECTS) $(LDFLAGS)
%.o:%.cpp Makefile
$(CC) -c $(CFLAGS) $< -o $@
clean:
rm -f $(OBJECTS) $(BUILD_APP)
release: clean all
En primer lugar, puede que tu error provenga de que no estabas enganchando con las libs runtime de bennu para caanoo.
Y en segundo lugar, del documento ese he extraído todas las librerías con las que enganchas con el sistema caanoo (fijo que todas no son necesarias pero poniendo todas aseguramos que vaya :D)
Prueba y me cuentas.
Funcione o no soy tu fan :). Karma.
Ya he compilado 2 modulos antes para Caanoo y funcionaban de la otra forma, ya te comento luego que ahora es party time :)
Pues entonces ahora lo vas a flipar, me he bajado las SDK de caanoo (http://sbock.net/upload/gphsdk1008.7z) y he compilado el mod_mappy cambiando el makefile del ejemplo adjunto en las sdl, el resultado es el siguiente, me gustaría que alguien intentase probar el ejemplo .prg que adjunto en la caanoo añadiendo el .so que también adjunto de mod_mappy.
Si ya me lo esperaba justo al entrar y ver que habia novedades en este post.
La proxima no te digo nada, roba curro xDDDD
Lo voy a probar ahorita en la Caanoo.
Funciona :)
Yo ya tenia el prg y todo adaptado para la Caanoo listo a distribuir (mapeado de los botones, resolución, instalación).
Así que si no te importa lo voy a publicar yo, como ya he hecho con los 2 anteriores modulos que porte a Caanoo, sólo que con tu modulo XDDDD
La proxima no te digo nada xDDD
En serio, muchas gracias, así da gusto :)
Mañana lo pruebo a compilar.
(http://forum.bennugd.org/index.php?action=dlattach;topic=1184.0;attach=1653)
http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,19,601 (http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,19,601)
Por fin he podido compilar el tuyo (cambiando rutas lógicamente), decirte que lo probé con el antiguo poniendo todas las dependencias y también la distinta configuración de CFLAGS, pero faltaba la lib DGE, y sin ella se generaba igual que antes.
Con el oficial, pues solo veo esta diferencia, y la so tiene unos 3kb mas, de todas formas me parece raro, ya que con los módulos anteriores no tuve problemas, es sin duda algo que se nos escapa.
Bueno, pues ya descanso en paz.
Gracias compi, por la nueva configuración para futuros compilados, no se que haría sin ti :)
pero te diste cuenta de que había una ruta mal en el Makefile? en las dos líneas de LIBS, en una pone algo como bgd_bin_target cuando debería ser bgd_bin_host, y viceversa (osea donde pone bgd_bin_host debería poner bgd_bin_target). pero curiosamente parece que no afecta al binario final :D. Luego resubo el proyecto con esta errata corregida.
mod_mappy caanoo src
deberia haber un repositorio donde se puedan subir los ports de las dlls
Esta dañado el zip.
Lo del repositorio deberia estar hace tiempo con todos los ports y versiones de cada modulo para distintos SO.
Quote from: l1nk3rn3l on December 12, 2010, 04:19:06 PM
deberia haber un repositorio donde se puedan subir los ports de las dlls
Tienes toda la razón.
recomiendo google code
o sourceforge (http://sourceforge.net/)
sourceforge cada dia apesta mas, hasta 3, 4 páginas hay que abrir para hacer la descarga que quieres.
google code me gusta, auqnue ya estuvo mejor, ahora necesitas abris 2 paginas para hacer tu descarga.