PDA

Ver la versión completa : programar para caanoo (si existe para linux, por qué no en caanoo?)



warmarin
29/09/2011, 00:01
saludos a la comunidad!

no pretendo que me expliquen como programar para la caanoo, sólo quisiera que me den una respuesta o una idea sobre la programación en la caanoo, respecto a una pregunta, pero antes haré un rápido perfil para que se contextualizar mi situación.

no soy programador, de hecho estudio odontología, asi q mis ideas sobre programar son muy vagas, solo entiendo html básico, aunque quisera entender algo mas para aportar y no ser mas que un "parásito" de los programas y emuladores, portados y compilados para caanoo..

mi pregunta es nace despues de pensar lo siguiente: caanoo trabaja en base a linux y opengl, y por lo que muchos saben en linux hay buenos programas para emular, jugar, trabajar que son archiconocidos y probados, por ej. visualboy advance, zsnes, psx emulator, etc y decenas más, por qué no son portados a caanoo?? siendo que si estan para linux nativamente en versiones x86, o es que el lenguaje de programacion es distinto?? requieren otras librerias??? cual es la limitante?? muchos de los anteriores corren bastante bien en computadores arcaicos poco menos poderosos que la caanoo???

GameMaster
29/09/2011, 00:17
Si estan portados, la mayoria.
Se basa en linux, pero portar muchos programas no es tan facil, porque la consola no tiene un linux de ventanas instalado como ubuntu, etc..
Es Unix, y hay que crear los GUI's para los emus partiendo de ningun entorno visual.

El resto es porque la consola no puede con todo lo que ves en un PC con linux logicamente.

warmarin
29/09/2011, 00:31
vba en linux puede correr sobre la consola sin gui. zsnes tambien si no me equivoco, incluso hay una version de DOS, y ambos corrian bien en mi viejo viejo pc de 266 mhz 32 mb ram... no creo que la gui sea la limitante ni la potencia de la caanoo :/ gpsp funciona con una gui bien pobre, pero funciona.

GameMaster
29/09/2011, 01:25
Pero que ya estan en la consola, encima que un Pentium no es un ARM. Te aconsejo a leerte mas hilos de Gp32spain, todo esto esta mas que hablado..

juanvvc
29/09/2011, 02:32
mi pregunta es nace despues de pensar lo siguiente: caanoo trabaja en base a linux y opengl, y por lo que muchos saben en linux hay buenos programas para emular, jugar, trabajar que son archiconocidos y probados, por ej. visualboy advance, zsnes, psx emulator, etc y decenas más, por qué no son portados a caanoo?? siendo que si estan para linux nativamente en versiones x86, o es que el lenguaje de programacion es distinto?? requieren otras librerias??? cual es la limitante?? muchos de los anteriores corren bastante bien en computadores arcaicos poco menos poderosos que la caanoo???

En Caanoo se programa en los mismos lenguajes que en PC. Los problemas son otros:

- Falta de potencia, memoria y pantalla de Caanoo. Pocos juegos Linux de los últimos 10 años se ven bien en pantallas de 320x240.
- No todas las librerías pueden meterse en Caanoo. GameMaster ya te ha dicho algunas de ellas: las que dependen del sistema de ventanas. OpenGL tampoco puede usarse, es una versión reducida y no del todo compatible: Caanoo utiliza OpenGL ES.
- No es verdad que corriesen en "computadores arcaicos menos poderosos que Caanoo". Tu antiguo Pentium 266MHz con 32MB de Ram es mucho más poderoso que Caanoo. Créeme. En el foro se ha explicado cien veces por qué no se pueden comparar megahercios. VirtualBoy, por ejemplo, ha sido portado a Caanoo. Lo encontrarás en gp32x.com. Pero ya te aviso que funciona insufriblemente lento, tan lento que no es útil.
- Los programas que están optimizados para funcionar en PCs antiguos no funcionarán jamás en Caanoo. Es el caso de Zsnes, que incluye código rápido que solo funciona en ordenadores Pentium de 32 bits. Zsnes ya tiene problemas en ordenadores modernos de 64 bits, que son hermanos de los de 32 bits, imagina en un procesador totalmente diferente como el de Caanoo.

Por otro lado, el 90% de los emuladores y juegos que hay ahora mismo en Caanoo se han portado desde Linux para PC. Se escogieron los que le gustaban a alguien, los que eran más fáciles de portar y los que funcionarían razonablemente bien. Si no hay más es porque o bien los juegos necesitan mucha más memoria que la que tiene Caanoo, o bien porque nadie se ha interesado en hacerlo.

warmarin
29/09/2011, 03:59
gracias, eso aclara muchas cosas, pero desilusiona de cierta manera...

hardyx
29/09/2011, 10:56
Los procesadores ARM como el que lleva la Caanoo no son comparables a un Intel o a un AMD de sobremesa. Su objetivo es ser eficientes en energía y en consumo de memoria, que es lo que necesitan las consolas y móviles.

Sobre los programas de Linux, pasarlos a Caanoo es un proceso que requiere cambiar muchas cosas como la resolución, los botones y sustituir librerías por otra más livianas. Los emuladores de PC además, muchos usan ensamblador de Intel y optimizaciones para PC, todo eso habría que rehacerlo. Hay mucho software portado de Linux en Caanoo y sus antecesoras, pero no es trivial.

Aún asi, hay ports muy buenos y muy trabajados, y estas consolas abiertas son un reto muy interesante para los programadores. Porque en PC la memoria y la velocidad de la cpu se ignoran mucha veces, en estos sistemas hay que optimizar y usar la imaginación.

warmarin
30/09/2011, 19:33
usar la imaginacion ! hahaha

gracias a todos por la orientacion!
PD: ojalá que la proxima consola de gph, venga con android para aumentar el n°de posibles desarrolladores, o q la psvita sea barata y con una graaaaaaan scene

SplinterGU
01/10/2011, 02:49
saludos a la comunidad!

no pretendo que me expliquen como programar para la caanoo, sólo quisiera que me den una respuesta o una idea sobre la programación en la caanoo, respecto a una pregunta, pero antes haré un rápido perfil para que se contextualizar mi situación.

no soy programador, de hecho estudio odontología, asi q mis ideas sobre programar son muy vagas, solo entiendo html básico, aunque quisera entender algo mas para aportar y no ser mas que un "parásito" de los programas y emuladores, portados y compilados para caanoo..

mi pregunta es nace despues de pensar lo siguiente: caanoo trabaja en base a linux y opengl, y por lo que muchos saben en linux hay buenos programas para emular, jugar, trabajar que son archiconocidos y probados, por ej. visualboy advance, zsnes, psx emulator, etc y decenas más, por qué no son portados a caanoo?? siendo que si estan para linux nativamente en versiones x86, o es que el lenguaje de programacion es distinto?? requieren otras librerias??? cual es la limitante?? muchos de los anteriores corren bastante bien en computadores arcaicos poco menos poderosos que la caanoo???

no se que quieres programar, pero por tu mensaje supongo que queres lanzarte a programar un emulador o portarlo... yo te diria que si solo tenes experiencia en html, empieces por algo simple... yo te recomiendo mi lenguaje... se llama bennugd... me extraña que nadie aca te lo haya mencionado... pero bueno, puedes hacer juegos con el y algunas otras cosas...

ah, caanoo no se basa solo en opengl, puedes programar cosas graficas sin usar opengl.

Neodreamer
02/10/2011, 00:35
No quiero desilusionarte mas xo si aclararte el tema. Android tampoco es linux sin mas en lo q se refiere a programar. Sino xq no hay ya un bennugd? Es cierto q usa una version del kernel de linux xo volvemos a lo mismo q en caanoo, arquitectura distinta, todo cambia. Pc son x86 y consolas y moviles son ARM basados en risc.
Mirate como ejemplo los mac de apple actuales intel y los antiguos risc powerpc. Habia q compilar una version, otra o mixta "universal".
Mas o menos es eso, sumandole librerias distintas, etc.

SplinterGU
02/10/2011, 05:58
No quiero desilusionarte mas xo si aclararte el tema. Android tampoco es linux sin mas en lo q se refiere a programar. Sino xq no hay ya un bennugd? Es cierto q usa una version del kernel de linux xo volvemos a lo mismo q en caanoo, arquitectura distinta, todo cambia. Pc son x86 y consolas y moviles son ARM basados en risc.
Mirate como ejemplo los mac de apple actuales intel y los antiguos risc powerpc. Habia q compilar una version, otra o mixta "universal".
Mas o menos es eso, sumandole librerias distintas, etc.

no te entendi nada que quisiste escribir...

si hay un bennugd para android... no lo mantengo yo, pero si lo mantienen usuarios de la comunidad que formo parte...

que yo sepa, android tiene un linux/unix por debajo... pero todo el frontend es java... pero puede que me equivoque...

juro que leo y releo tu mensaje, pero no entiendo que quisiste escribir... que es "xo"?

GameMaster
02/10/2011, 11:06
No quiero desilusionarte mas xo si aclararte el tema. Android tampoco es linux sin mas en lo q se refiere a programar. Sino xq no hay ya un bennugd? Es cierto q usa una version del kernel de linux xo volvemos a lo mismo q en caanoo, arquitectura distinta, todo cambia. Pc son x86 y consolas y moviles son ARM basados en risc.
Mirate como ejemplo los mac de apple actuales intel y los antiguos risc powerpc. Habia q compilar una version, otra o mixta "universal".
Mas o menos es eso, sumandole librerias distintas, etc.

Que calidad de profesionales tenemos por aqui xDD

Neodreamer
02/10/2011, 13:20
La respuesta era para warmarin. Xo=pero (mala costumbre de escribir rapido).

SplinterGu, ya se q, si hay sdl adaptadas se podra practicamente portar bennugd (ó ya se ha hecho), lo q intentaba explicar es exactamente lo mismo q ha dicho hardyx mas arriba, q no es facil comparar rendimientos en una y otra plataforma por temas de instrucciones y demas. Por cierto, donde dices q esta la version de bennugd de android? suelo entrar en tu foro para ver la evolucion del de psp y el de android pero no sabia q ya habia algo.

Y como bien dices, android usa un framework de java y un kernel basado en unix/linux. Solo intentaba explicarle q algo desarrollado para un procesador risc x el conjunto de instrucciones q maneja este, no se puede portar asi como asi a uno intel. Sino, tendriamos juegos de consolas en pc, moviles, etc y no esos "ports" distintos en cada una.
Al menos asi me lo estan explicando a mi en electronica. Al tener unas instrucciones distintas cada procesador, SplinterGu, no tendriamos q, emular las instrucciones del otro procesador haciendo al port mas lento aun? No se si me explico ahora.
Tenemos un mac ppc, un mac intel, para q el intel ejecute hoy en dia una aplicacion ppc necesita de Rosetta, un emulador de ppc para intel, asique no creo que ande tan desencaminado en mi explicacion.

p.d: gamemaster, no entiendo tu comentario y no se si estas siendo sarcastico... (solo intento aclararle cosas a otro miembro del foro)

fuente: http://es.wikipedia.org/wiki/Rosetta_%28software%29

GameMaster
02/10/2011, 14:56
No es español ?

juanvvc
02/10/2011, 15:16
No es español ?

Posiblemente fuese un español demasiado normativo. Prueba así:


Q klidad d profesionals tnmos x aqi Bs TQM

Neodreamer
02/10/2011, 15:29
Tío, contigo me parto... Lo de no es español me ha sonado igual de mal q lo anterior. Y lo anterior parecía totalmente sarcástico porque ni yo me creo profesional del tema ni me creo que sepa mas que nadie. Ademas, visto que splinter no me entendia, dude de lp que me habian explixado a mi. Insisto en que solo pretendía aclararle la duda según lo que me habían explicado a mi en clase precisamente esta semana.

SplinterGU
02/10/2011, 15:33
La respuesta era para warmarin. Xo=pero (mala costumbre de escribir rapido).

SplinterGu, ya se q, si hay sdl adaptadas se podra practicamente portar bennugd (ó ya se ha hecho), lo q intentaba explicar es exactamente lo mismo q ha dicho hardyx mas arriba, q no es facil comparar rendimientos en una y otra plataforma por temas de instrucciones y demas. Por cierto, donde dices q esta la version de bennugd de android? suelo entrar en tu foro para ver la evolucion del de psp y el de android pero no sabia q ya habia algo.

Y como bien dices, android usa un framework de java y un kernel basado en unix/linux. Solo intentaba explicarle q algo desarrollado para un procesador risc x el conjunto de instrucciones q maneja este, no se puede portar asi como asi a uno intel. Sino, tendriamos juegos de consolas en pc, moviles, etc y no esos "ports" distintos en cada una.
Al menos asi me lo estan explicando a mi en electronica. Al tener unas instrucciones distintas cada procesador, SplinterGu, no tendriamos q, emular las instrucciones del otro procesador haciendo al port mas lento aun? No se si me explico ahora.
Tenemos un mac ppc, un mac intel, para q el intel ejecute hoy en dia una aplicacion ppc necesita de Rosetta, un emulador de ppc para intel, asique no creo que ande tan desencaminado en mi explicacion.

p.d: gamemaster, no entiendo tu comentario y no se si estas siendo sarcastico... (solo intento aclararle cosas a otro miembro del foro)

fuente: http://es.wikipedia.org/wiki/Rosetta_%28software%29

ahora si entendi... que susto!

bien, con respecto a los programas de ARM en Intel o la inversa... todo depende... si queres correr un binario compilado en ARM en Intel o al revez, no vas a poder, eso es mas que logico... pero si tu programacion esta pensanda en cosas no nativas de tu arquitectura (o tiene las excepciones bien determinadas con condicionales de precompilacion), puedes tranquilamente generar una version binaria de tu mismo programa en la plataforma que sea...
tambien puedes evitar hacer binarios nativos y al desarrollar usar algun engine o maquina virtual.

no se si me explique bien... pero si bien es cierto lo que dices, tambien es cierto que esa certeza es relativa...

Neodreamer
02/10/2011, 15:44
Te explicas bastante bien ;) gracias.
De echo las cosas de android si son facilmente ejecutables en linux o muy portables porque son .java practicamente.

La caanoo tiene algun emulador de java o maquina java incluida como la de flash?
Seria muy complicado hacer algo asi? xq como digo realmente teniendo el source de las aplicaciones android, si son mas faciles de portar (refiriendome a juegos y apps sencillas, no cosas del sistema q usen la api del sdk de androdi evidentemente... como intentes cargar el calendario de android en caanoo, me da q ni java ni leches...creo)

No me has dicho donde puedo ver esa version de bennugd no oficial para android (con no oficial me refiero a no portada x ti)
Buscare por tus lares a ver si veo algo nuevo. Gracias

SplinterGU
02/10/2011, 15:53
que yo sepa caanoo no tiene maquina virtual de java... pero quizas me equivoque...

no todas las aplicaciones java son realmente 100% portables, algunas usan un SDK diferente... pero suponiendo que lo sean, desde java tambien puedes ejecutar extensiones en codigo nativo del procesador... se llaman jni (java native interface)... de esto se aprobechan muchas aplicaciones como ser el scummvm para android o mismo bennugd...

con respecto al link de android, hay algunos hilos al respecto...

http://forum.bennugd.org/index.php?topic=2394.msg46874#msg46874

http://forum.bennugd.org/index.php?topic=1221.180

simplemente pon android en el buscador del foro y te apareceran algunos links o pregunta a josebita que es quien se encarga del port... aun le debo ayuda en dicha version... a ver si estos dias me pongo... que se lo debo.

Neodreamer
02/10/2011, 15:56
Gracias por la info y links.
X cierto lo q si vi hace unos dias es q habias sacado ya algo para dingoo no? Me alegro. Se ve q poco a poco va creciendo cada vez mas. Enhorabuena.

Drumpi
02/10/2011, 19:35
Y como bien dices, android usa un framework de java y un kernel basado en unix/linux. Solo intentaba explicarle q algo desarrollado para un procesador risc x el conjunto de instrucciones q maneja este, no se puede portar asi como asi a uno intel. Sino, tendriamos juegos de consolas en pc, moviles, etc y no esos "ports" distintos en cada una.
Al menos asi me lo estan explicando a mi en electronica. Al tener unas instrucciones distintas cada procesador, SplinterGu, no tendriamos q, emular las instrucciones del otro procesador haciendo al port mas lento aun? No se si me explico ahora.
Tenemos un mac ppc, un mac intel, para q el intel ejecute hoy en dia una aplicacion ppc necesita de Rosetta, un emulador de ppc para intel, asique no creo que ande tan desencaminado en mi explicacion.

Más o menos eso está bien explicado, pero falla en una cosa: si el código está en C y existe compilador para esa arquitectura, da igual que tenga bytecode distinto, pues ya se encarga el compilador de pasar de lenguaje de alto nivel a un binario eficiente :D:D:D
El problema viene cuando se desciende de nivel, a ensamblador o a instrucciones propias de la arquitectura (que suelen venir en alguna dll... programadas a bajo nivel).

Otra cosa es Android: es como java, pero no es java, porque tiene unas clases especiales para interactuar con el sistema operativo o algo así. Es como Java para móviles: es java, pero no es lo mismo J2SE que J2ME.

Respecto al hilo, puede parecer que hacer un port de Linux PC a Linux Caanoo es trivial... y lo es, siempre que uses las librerías disponibles: aqui no hay servidor X como tal, se usa OpenGL SE 1.1 y no el OpenGL de PC, y no hay teclado con el que trabajar. Además se usa una resolución de 320x240 y un procesador que, aunque no sea comparable a un PC, es de sólo 750MHz máximo, sin apoyo de tarjeta gráfica, ni de sonido ni de FPU... a menos que se usen instrucciones específicas del sistema para usar el HW específico que incorpora el microcontrolador, por lo que volvemos a lo de antes: necesitas unas librerías específicas para usar parte del HW, por lo que tienes que adaptar el código.


La caanoo tiene algun emulador de java o maquina java incluida como la de flash?
Seria muy complicado hacer algo asi? xq como digo realmente teniendo el source de las aplicaciones android, si son mas faciles de portar (refiriendome a juegos y apps sencillas, no cosas del sistema q usen la api del sdk de androdi evidentemente... como intentes cargar el calendario de android en caanoo, me da q ni java ni leches...creo)

Se hizo una VM para Wiz, pero no sé si se portó a Caanoo. Se comenta que tiene muy poca potencia y no es del todo compatible.
Sin embargo, es curioso, porque me parece recordar que la CPU tiene Jazelle, que permite ejecutar instrucciones java de forma nativa, pero ya se comentó que no existe documentación a menos que alguien suelte un buen fajo de billetes.