Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
 

Autor Hilo: TUTORIAL 1985ALTERNATIVO SOBRE PROGRAMACION EN C DE LA GAMEBOY (Leído 51135 veces)

livekraft

  • Humano
  • Mensajes: 12
  • All your base are belong to us
    • Vive en mi mente.
Lo guardaré en el marcador del navegador para leer con calma todo por la mañana.

Mills

  • Humano
  • Mensajes: 6
Espero que no esté abandonado este hilo :)

Yo empecé a programar en C con GBDK, ni soy programador ni nada parecido, pero conseguí cosas muy buenas.

Hice esa demo tan fea, que intenta imitar a "second reality" que lei unos mensajes atras... (y los puristas del ASM casi me mandan a la hoguera jaja), pero bueno, se demostró que algo se podia hacer con este GBDK.

He llegado a "dominar" un poco la creación de mapas y de mod's con el software de antonio, pero uno tiene sus límites.

Voy a poner un link con todo el source de lo que conseguí.

Primero del "second reality": en el utilicé todo lo que sabía del GBDK. Lo estaba mejorando, pero como todos los efectos al final son videos imitando los efectos originales, es muy costoso ir frame a frame componiendolos. Asi que si a alguien le interesa, aquí lo dejo, esta desordenado y no funcionan todas las escenas, hay que ir probando una a una con la variable "program" porque las fui cambiando.

El video final es solo una sucesion de imagenes que dibujan la pantalla completa, y es lento, Pero algunas de las escenas pueden utilizar solo un set de tiles, y después reordenarlos para formar frames a 60FPS. Un programa que puede convertir un video en un set de tiles y varios mapas, es el "cosmigo pro motion" pero no es gratis y aun consiguiendolo, no he sido capaz de convertir un video para Game Boy.


El segundo es el efecto highcolour, que puede mostrar imágenes con muchos colores en GBC, para convertir la imagen se necesita el highcolor converter, espero que aún esté por la red.

El tercero es una escena con vectores, a medias....

El cuarto es un ejemplo de como reproducir wav en gameboy, hay una carpeta con conversores, las instrucciones creo que están en inglés.

El último es un efecto que se ve en muchos demos, para mover cada scan line de forma independiente y producir efectos como ondas o en este caso un efecto 3D.

Todos han llegado a funcionar en mi game boy color con un cartucho usb de 8 Megas(dividido en dos memorias de 4, asi que un demo de 8 no se puede cargar, pero ningun juego original era mayor de 4...).

https://dl.dropboxusercontent.com/u/757056/GBC/TESTS.rar


Todos los sources son un poco desastre, además yo no soy programador jaja, pero espero que sirvan, y desde luego se pueden mejorar mucho y hacerlos más rápidos.

Existe un optimizador para GBTD y GBMB llamado Gameman039a.exe para reducir el tamaño de imagenes convertidas en fondos.


Por cierto, nunca conseguí el scroll en mapas grandes, me da error en la parte que no comprendo... justamente aqui:
Código: [Seleccionar]
set_bkg_tiles( 0, tempa, 22, 1, &(map_data+Cnt));


Ese & da error y los mapas los he creado con las mismas herramientas y estan declarados igual que en el ejemplo, a ver si me ayudais, porque pensaba hacer un "mario" con un fondo bastante grande.

Saludos
última modificación: 12 Noviembre 2015, 19:56:41 por Mills

Mills

  • Humano
  • Mensajes: 6
Tomando ideas de este tutorial, de la parte de scroll, conseguí hacerlo en la game boy con GBDK, aunque de manera un poco diferente.

Lo que he hecho, es rellenar sólamente una columna/fila, (la que va a aparecer en la pantalla). Además lo hace en dos fases o frames, ya que si lo hago en uno, es demasiado lento para GBDK.

De momento funciona solo es scroll hacia adelante, como en el primer super mario land, sin posibilidad de volver hacia atrás. Pero no hay impedimento para que funcione en todas direcciones, de hecho lo he probado para medir el uso de cpu, aunque no se vea bien.

[ Guests cannot view attachments ]

En la imagen adjunta, vemos un mapa de 128x128 moviendose, y la CPU utilizada, tanto en DMG(verde) como en CGB (naranja) con diferentes supuestos:

1-No está rellenando columnas  /filas
Tenemos practicamente toda la CPU libre.

2-Está rellenando sólamente una columna / fila
Cada 8 frames ,al movernos 8 píxeles, rellena una columna o una fila que va a aparecer en la pantalla. Esto ocurre si nos movemos sólamente en una única dirección (horizontal o vertical).

Si estamos en CGB, necesitamos casi el doble de CPU, para rellenar también las paletas de cada posición.

3-Está rellenando una columna y una fila
Esto ocurre si nos movemos en dos direcciones a la vez, (en diagonal), con lo que rellenamos la columna y la fila que van a aparecer, y requiere mas o menos el doble de CPU.

Optimización
Podemos hacer que cada línea se dibuje en un máximo de 4 frames, ya que si nos movemos en diagonal, necesitaremos 8 frames, 4 para una fila y los 4 siguientes para una columna por ejemplo.



Subiré el source mañana o pasado :)
última modificación: 18 Noviembre 2015, 20:49:09 por Mills

Colivenc

  • Humano
  • Mensajes: 5
Primero de todos felicitar al autor del hilo por su excelente trabajo.

Buenas me presento, soy un programador que ha empezado a hacer sus pinitos con esta consola. No se si el hilo sigue vivo, pero os aseguro de que lo visito asiduamente.

Os paso un vídeo de mi proyecto, o mas bien, mis primeras pruebas conteste SDK
https://www.youtube.com/watch?v=CA_iFVuBfGo

A margen de eso, me estoy encontrado con problemas para usar la función malloc(), directamente peta todo, pese a que compila (Con advertencias) Si alguien pudiera echarme un cable se lo agradecería.

Saludos

luckpro

  • T-7T
  • Mensajes: 481
    • Lubiterum
No he usado aun el sdk de gameboy, pero dime que te ocurre con el malloc a ver si puedo ayudarte en algo.

Colivenc

  • Humano
  • Mensajes: 5
No he usado aun el sdk de gameboy, pero dime que te ocurre con el malloc a ver si puedo ayudarte en algo.
Bueno sencillamente que el compilador lanza el warning "function 'malloc' implicit declaration", pese que aque tengo añadidas las librías <stdlib.h> y luego el juego peta por todos lados.

luckpro

  • T-7T
  • Mensajes: 481
    • Lubiterum
A mi nunca me ha dado un error parecido pero por el mensaje y por lo que comenta la gente por internet se ve que...

- o estas llamando al malloc antes de incluir la stdlib.

- o estas modificando la definición del malloc después de incluir la stdlib (quizás alguna otra lib que incluyas la este modificando) recuerda que la definición de malloc es void *malloc(size_t) si tus libs no deberían tener otra cosa diferente. Entra dentro de tu stdlib a ver que tiene.

- o tienes el include del malloc dentro de un ifdef o condicionales de este tipo.


De todas formas es un warning no un error. ¿Te falla siempre cuando ejecuta el malloc? ¿has probado a poner un numero más pequeño de memoria, 2 o 3 bytes (lo mismo esta petando por sobrescribir memoria que no debe)?


Ánimo, a ver si lo puedes solucionar.

Colivenc

  • Humano
  • Mensajes: 5
A mi nunca me ha dado un error parecido pero por el mensaje y por lo que comenta la gente por internet se ve que...

- o estas llamando al malloc antes de incluir la stdlib.

- o estas modificando la definición del malloc después de incluir la stdlib (quizás alguna otra lib que incluyas la este modificando) recuerda que la definición de malloc es void *malloc(size_t) si tus libs no deberían tener otra cosa diferente. Entra dentro de tu stdlib a ver que tiene.

- o tienes el include del malloc dentro de un ifdef o condicionales de este tipo.


De todas formas es un warning no un error. ¿Te falla siempre cuando ejecuta el malloc? ¿has probado a poner un numero más pequeño de memoria, 2 o 3 bytes (lo mismo esta petando por sobrescribir memoria que no debe)?


Ánimo, a ver si lo puedes solucionar.

No hay solución. Es tan sencillo como se usando el GBDK no se pueden alojar datos en el heap.



Jose81

  • Humano
  • Mensajes: 1
Buenas, alguien tendrá un link funcional del paquete con extras?

RetroSwan

  • Humano
  • Mensajes: 2
Saludos a todos. Lo primero dar las gracias por este hilo. desde que escuché un antiguo podcast donde se hablaba de este hilo, me entró la curiosidad, y aunque nunca he programado, para mi un "hola mundo" -también a raíz de ésto he leído/visto algo de programación e C- ha sido toda una satisfacción. El problema es que los enlaces del principio están caídos y aunque he podido buscarlos por otros sitios, no encuentro el "pandocs.txt" que se supone que es una especie de manual de la librería de Nintendo. estaría muy agradecido si alguien lo resubiera o me lo mandara.
Muchísimas gracias por despertarme la curiosidad


Zael

  • T-600
  • Mensajes: 5 220
  • El Caloret
¡Hola @RetroSwan, bienvenido a FaseBonus! Como tú dijiste, por desgracia parece que los enlaces de este hilo están ya caducados.

Si estás interesado en programar para Gameboy te recomiendo que le preguntes al compañero Imanolea, que está programando un juego tremendo llamado Last Crown Warriors. Aquí puedes ver el hilo de su juego...




Seguro que él te podrá dar enlaces de documentación y tutoriales para programar en C en Gameboy. Si no consigues contactar con él a través del Foro búscalo a través de su blog, Twitter o demás, seguro que podrá ayudarte.

Y si te decides a empezar algún proyecto no dudes ponerlo por aquí en el Foro, aunque está un poco "caído" ya aún quedamos unos cuantos con ganas de compartir hobbies por aquí.

¡Saludos y bienvenido!



P.D.: Si quieres, también puedes presentarte formalmente y contarnos un poco más sobre ti y tus aficiones en el hilo de presentaciones del Foro... ¡Bienvenido!  :)