Bajo un océano de bits, mes VII

Por Javier Albizu, 8 Agosto, 2018
Lentamente pero con paso firme (y frases hechas) continuamos avanzando y extendiendo esto. Porque al ponerme a picar código se me había olvidado que tenía por ahí la idea de no limitarme a C++ y hacer también algo con Python1 (para quien también está disponible SDL).
Dicho y hecho, ya logré crear mi ventanita con un gráfico en SDL1, SDL2, SFML, OpenGL y PySDL.
Una vez conseguido eso, tocaba pensar en los siguientes pasos. Más concretamente dos de ellos; Las animaciones y la estructura /claridad /reutilización del código.

Hasta el momento estaba trabajando con un único archivo pero, sólo con lo que llevaba, ya estaba empezando a ocupar mucho. Cada vez que tocaba algo para hacer una prueba era un tanto complejo el acotar dónde empezaba una cosa y terminaba otra.

Así pues, y volviendo a curso de SDL como referencia, he tratado de definir las clases que me puedan ser necesarias. Esto es, analizar con un poco más de experiencia sobre mis hombros lo que aparecía en el juego de ejemplo, y comenzar a escribir con mis propias palabras y estructura mental las agrupaciones de funciones.

Por el momento tengo dos clases: Pantalla y Controles, pero Pantalla ya ha crecido y voy a ir dividiéndola en otras subclases como puedan ser las generación de imágenes o fuentes. Para terminar con el bucle del menú también tengo que crear otra clase para los sonidos, pero esto no cae dentro del paraguas de “lo que se muestra en el monitor”.

Ya he conseguido recrear la animación del logo del Traz con SDL. Lo he hecho de tres maneras distintas, lo que me ha ayudado a entender algunas de las estructuras gráficas de esta biblioteca2; las superficies, los rectángulos y el “blit”. Cosas que no terminaba de entender sólo con su lectura.

Entre tanto, también he dado con una herramienta que me permita extraer los gráficos de un disco virtual de Commodore3, aunque aún me quedan cosas por terminar de centrar. No he logrado encontrar la ubicación de todos los gráficos y las fuentes o el logo no las he visto por ningún lado, así que para lo que he hecho he seguido utilizando los pantallazos que saqué el mes pasado. Las fuentes me las tendré que hacer también desde cero.

Por otro lado, de los gráficos que sí que he extraído no todos ellos parecen tener la proporción que se muestra en el juego, así que asumo que utilizaron algún truco de código para cambiar esa proporción. Pero al menos sí que tengo a mi disposición las animaciones de los enemigos.
Tampoco he visto dónde se encuentran los sonidos, pero eso no será demasiado difícil de sacar del emulador, ya que permite grabar el audio de las partidas a mp3.

Para llegar hasta este punto he vuelto a retomar la lectura de cosas relacionadas con el Commodore4, algo sobre lo que hay todo un mundo ahí fuera. También he encontrado que hay diferentes versiones volcadas del Traz volcadas por la red5, una de las cuales incluye la imagen de carga del juego. Otra cosa más a incluir.

Como el Pisuerga pasa por Valladolid, también he llegado hasta lugares sin relación aparente con el tema, pero igualmente interesantes. Lugares como estos en los que te presentan el proceso de creación de un emulador de GameBoy6. Web a las que igual vuelvo dentro de un tiempo.

Y han llegado las vacaciones. El asueto del trabajo remunerado pero no de los deberes autoimpuestos.
Durante estos días he continuado con todos los retos que tengo activos, aunque he de reconocer que con un ritmo un poco menor. En tirar de los datos del móvil ha hecho que racione un poco la búsqueda de soluciones a los problemas con los que me he ido encontrando, pero he ido derivando parte del tiempo a la lectura de temas relacionados. Materias como pueda ser el funcionamiento de la propia máquina7.

Porque este es un tema muy importante. Algo que me debería ayudar a ganar perspectiva y que, como de costumbre, provoca que quiera profundizar más. Otra cosa que también consiguen estos viajes al pasado es confirmar lo que sólo asumes. Ratificar esa gran verdad que afirma que todos los conceptos que los “visionarios” afirman “inventar” o “descubrir” en la actualidad ya estaban ahí desde hace mucho.
Quizás su presencia adopte formas más toscas y complejas, quizás los hombros de los gigantes sobre los que viajamos sean tan anchos que a veces no somos capaces de ver dónde terminan, pero desde la posición adecuada puedes ver todo el panorama.

Y más o menos esto será todo por hoy. Aún tengo pendiente el tema del escalado de los gráficos con SDL1, pero parece que puede haber una vía8. La probaré cuando tenga ya listos todos los elementos de la pantalla de inicio.

Enlaces:

1. PySDL2
- Crear una ventana con PySDL
- Sprite, texture and pixel surface routines

2. SDL y los gráficos
- SDL_Surface
- SDL_Rect
- SDL_BlitSurface

3. Extrayendo gráficos de un Snapshot de C64
- SpritePad
- Exporting sprites via vice and spritepad

4. Leyendo sobre el Commodore
- Ripping sidtunes
- N0STALGIA C64 TOOLS
- Working with Maps, Tiles, Chars and Compression
- C64 Sprite / Charset Ripper
- Graphics Extractor and Inserter
- Spritemate - browser based sprite editor for the Commodore 64
- Spritemate - browser based sprite editor for the Commodore 64
- C64 Sprites
- How "oldschool" graphics worked Part 1 - Commodore and Nintendo
- How "oldschool" graphics worked Part 2 - Atari and Apple
- CGA Graphics - Not as bad as you thought!

5. Traz en CSDB
- Búsqueda general
- Ficha general
- TRAZ +7DH

6. Emulando Gameboys
- Writing a Game Boy emulator, Cinoop
- BGB (GameBoy emulator/debugger)

7. Libros y más cosas sobre el Commodore
- Anatomy of the Commodore 64
- Supermon
- Entrevista a Jim Butterfield
- Supermon en Github

8. Escalando gráficos
SDL - Pixel Access
SDL - Scale Surface

El contenido de este campo se mantiene privado y no se mostrará públicamente.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.