[Devlog] Vircon32: Creando mi propia consola

carra

#510 Pues oye, te parecerá que no aportas pero me has alegrado el día con ese comentario! Y además no todo el mundo tiene que programar, a la consola también le viene bien tener usuarios que simplemente la jueguen :wink:

3
B

.

1 1 respuesta
carra

#512 Gracias por contribuir! Sólo he visto la PR por encima, pero un par de cosas. Me imagino que esto de los github jobs requiere usar GitHub, si es así quizás no sea buena idea. Puede haber gente intentando hacer la build solo con Git y CMake. O incluso solo con CMake, si se bajan el repo en zip. Además yo (que al final soy el que tiene que mantener el repo) no conozco ese sistema con lo cual complicado por el momento...

Ya le echaré un ojo, pero va a tener que esperar unos días. La verdad es que ahora mismo estoy pasando una crisis de motivación más bien fuerte. No ya con la consola en concreto, sino en general. Pero bueno son temas personales que no voy a comentar en un foro... ya pasará.

1 2 respuestas
B

.

1
Ridote

#513 joder si tú tienes una crisis motivacional el resto dónd estamos, me cago en la leche. Anímate que eres un crack carra.

3 1 respuesta
carra

#515 Jaja sí, a ver en gamedev no me va mal. Ya en otras áreas de la vida... no soy muy crack :man_shrugging:

Pero bueno, ya que estamos os comparto cosas que estaba haciendo antes de que me diera la pájara. Por un lado, una ilustradora me dibujó portadas para dos de mis juegos. Las he usado para hacer un diseño de las etiquetas de los cartuchos. Por un lado 2048:

Y por otro Basic Platformer (este me gusta bastante cómo le ha quedado). Estas etiquetas son de 75 x 30 mm.

Luego por otro lado había empezado a diseñar las cajas de cartón para los juegos. Os pongo como ejemplo esta caja en miniatura de la SNES mini, que hice algún tiempo. Os puede servir para haceros una idea de cómo quedarán las cajas de los juegos.

Como veis estoy tomando como referencia las cajas de Super Nintendo. Al ser todo cartón, puedo poner los diseños online y cualquiera se podría hacer sus cajas de manera más o menos fácil.

8
B

.

1 respuesta
carra

#517 No lo conozco, ¿Qué ventaja tendría usar vcpkg frente a buscar los paquetes con CMake como ahora? No sé si esto se solapa con el sistema de AppImage que había propuesto DeathKhan.

Sobre estos sistemas yo comentaría un par de cosas. Lo primero que no querría complicar demasiado la build metiendo dependencias a sistemas nuevos, ya que puede haber gente que no maneja estos sistemas (yo el primero!). Cosas como CMake o Git lo pilota más o menos todo el mundo pero cuando vamos metiendo otros requisitos puede acabar siendo una barrera de entrada, aunque parezca que va a ser más fácil porque el proceso en sí corre más automático.

Lo segundo es que ahora mismo creo que lo más importante es centrarme en otras áreas de la consola. Al fin y al cabo el emulador en sí lo considero ya terminado, y mirando el proyecto en general, dedicarle tiempo no nos aporta tanto ahora mismo. Me parece más urgente poder hacer las mejoras al compilador y algunas librerías, así podría hacerse una segunda jam con menos barreras. También debería avanzar un poco las especificaciones porque, al final, son el núcleo de Vircon32.

La idea es que a día de hoy ciertas cosas importantes para la consola solo las voy a poder hacer yo, así que me tengo que gestionar bien el tiempo e ir primero a lo más importante. Más adelante, cuando los elementos básicos del proyecto vayan estando más completos, yo iré haciendo cada vez menos falta y no habrá mucho problema si queremos dedicarnos a pulir más lo que ya está hecho.

2 1 respuesta
B

.

1 1 respuesta
carra

#519 Pues me parece buena idea lo de compartir mi roadmap. Lo que manejo ahora mismo tiene esta pinta. Está claro que pueden surgir cambios pero lo básico está todo aquí.

Plan del proyecto a corto/medio plazo:

  • Compilador de C: Implementar definiciones parciales (funciones, structs, enums, unions)
  • Compilador de C: Implementar punteros a funciones y conversión de tipos explícita
  • Librerías de C: Implementar funciones de memoria dinámica (malloc, calloc, realloc, free)
  • Guías: Actualizar la guía del compilador y las APIs con los nuevos cambios
  • Especificación: Escribir documento para el chip de sonido
  • Librerías de C: Integrar la librería de dibujo de primitivas (líneas, círculos, etc)
  • Librerías de C: Crear librerías básicas para cosas como tilemaps o colisiones
  • Eventos: A partir de aquí se podría pensar en organizar la segunda jam
  • Versiones físicas: Crear prototipo de cartuchos con sus cajas y etiquetas
  • Versiones físicas: Diseñar e imprimir caja y manual para 2048 y Basic Platformer
  • Juegos: Terminar Triple Bubble usando la demo actual
  • Juegos: Crear un juego completo de tipo Arkanoid a partir de la demo actual

Ya a más largo plazo, y sin orden concreto:

  • Especificación: Completarla con los documentos que faltan
  • Especificación: Traducir todos los documentos al español
  • Emulador: Arreglarlo para que en Raspberry Pi use OpenGL por hardware
  • Emulador: Investigar si con Emscripten se puede crear una versión para navegador
  • Emulador: Investigar cómo crear un port para Libretro (usado en RetroPie y RecalBox)
  • Juegos: Hacer el port de Climb to the Top, desde la versión inacabada de PC
  • Versiones físicas: Hacer prototipos básicos de la consola con cartón
  • Versiones físicas: Diseñar carcasa y montaje de la consola para hacer prototipo
  • Versiones físicas: Diseñar caja y empaquetado de la consola

Como véis no me faltan cosas por hacer XD. Por suerte esto es un proyecto que siempre me he planteado a largo plazo con lo que no hay prisa. Aunque aún así siempre tengo que economizar el tiempo porque de momento tengo que trabajar, vivir y esas cosillas :)

La verdad que se agradece que haya gente que os intereséis y queráis ayudar. Si proponéis mejoras les intentaré echar un vistazo. Aunque la verdad, lo que mejor le vendría a la consola (al menos a día de hoy) es gente que quiera crear juegos o demos técnicas para demostrar lo que se puede hacer.

En cuanto al emulador en concreto, veréis que en el corto plazo no tenía pensado añadirle nada. De hecho una de las cosas que seguramente haga es una versión del emulador con MENOS cosas, las mínimas, para que sea muy sencillo entender el código y que cualquiera pueda entender cómo implementar Vircon si quiere hacer su propio emulador. A esta versión le quitaría (al menos) todo esto:

  • Las configuraciones (no habría opciones)
  • El soporte multi-idioma (solo inglés)
  • La configuración de controles (solo teclado, y fijo)
  • Los menús (usaría comandos tipo Load = CTRL+L)
  • Con todo esto se dejarían de usar varias librerías
  • Al usar menos librerías se simplifica la compilación
  • Reduciría al mínimo los logs y chequeos de errores

Como ya os podéis imaginar esta versión del emulador no sería la más práctica para jugar. Pero para eso ya está el principal. Este otro, con todas esas simplificaciones, va a ser mucho más accesible para quien quiera crear su propio emulador o herramientas, o simplemente entender Vircon sin leer las especificaciones.

7 1 respuesta
r0n1n-gklan

#520 Animo carra, vaya currazo llevas. Respecto a los bajones que comentas, de todo se sale. Mucho animo y con ganas de ir probando mas cositas que vayan saliendo.

Suerte!

1 1 respuesta
carra

#521 Gracias r0n1n. Aún tardaré un poco en tener algo nuevo para probar, no sé si ya has jugado al solitario que es lo último. Ahora en principio pasaré unas cuantas semanas haciendo trabajo del que "no se ve", antes de ponerme de nuevo con juegos.

carra

Ya he conseguido que el compilador permita separar las declaraciones de la implementación, tanto en funciones como en estructuras, uniones y enumerados.

Esta era una de las limitaciones importantes del lenguaje hasta ahora. Gracias a eso se podrán hacer cosas como esta que eran imposibles:

// declaraciones por adelantado
struct Nodo;
struct Lista;

// estructuras con punteros mutuos
struct Nodo
{
    Lista* Padre;
    Nodo* Siguiente;
    int Valor;
};

struct Lista
{
    Nodo* Inicio;
};

Lo mismo pasará con las funciones. Además ahora podríamos declarar los prototipos en un archivo separado (archivo.h) y tener las implementaciones en otro (archivo.c). Eso sí, en algún punto tendremos que incluir el archivo .c ya que el compilador actual no puede hacer compilación de varios elementos independientes (no tiene enlazador para unirlo después).

Todo esto está en GitHub pero no hay release aún: todavía estaré trabajando en añadir más cosas.

3
9 días después
carra

He creado un nuevo repositorio, para todo lo que vaya creando la comunidad:

https://github.com/vircon32/CommunityContent


Aquí podrá haber juegos, demos técnicas, librerías, custom bios... Cualquiera puede subir su contenido, y la idea es que se mantenga separado de lo que creo yo, que es más "lo oficial" ya que trato de que sirva de ejemplo: lo dejo muy pulido, con código bien organizado, muchos comentarios, etc...

En cambio lo que subáis otras personas no tiene por qué seguir esos estándares. Basta con que compile, funcione sin errores y siga unas reglas muy básicas.

5
carra

En Discord hay un chico que está bastante activo (el que ya hizo su propia BIOS). Ahora está haciendo un juego de esquivar peces, tiene buena pinta:

6 1 respuesta
Kalgator

#525 Pasate el discord :new_moon_with_face:

1 1 respuesta
carra

#526 Este es el link de invitación:
Servidor Fantasy Consoles 2.0

Dentro de allí, está en la sección Fantasy Consoles, canal vircon32

1 1 respuesta
Kalgator

#527 A costillear! :D

carra

Hay otra persona (Chandler Klüser) que también está haciendo cosas para Vircon32. Ha hecho un par de videos sobre la consola en su canal. Los videos están en portugués pero los subtítulos traducidos no están mal.

En este video explica el proceso básico para instalar el emulador, dev tools, y empezar a hacer programas. Y se hace un pequeño generador de números primos. El código tiene buena pinta, lo tiene en GitHub.

9 1 respuesta
neil90

#529 Es alucinante ver la progresión de tu proyecto. Y que esté generando movimiento con lo relativamente joven que es, en mi opinión es un indicador de un trabajo excelente. ¡Felicidades!

4 1 respuesta
carra

#530 Gracias! Sí, todo lleva tiempo. Al final es cosa de irlo moviendo y mejorando. Si la gente lo ve y le resulta interesante, alguien acabará haciendo alguna cosita. Pero muy poco a poco claro. Yo lo único que sé es que seguiré trabajando en ello :relaxed:

1 1 respuesta
Kalgator

#531 Cuando te montes en el dolar, acuerdate de nosotros :new_moon_with_face:

Que gusto te dará ver como la gente empieza a hacer cosillas de tu consola :D

1 1 respuesta
carra
#532Kalgator:

Cuando te montes en el dolar, acuerdate de nosotros

Igual cuando diseñe la consola le puedo poner algo tipo: Sponsored by: MediaVida gamedev ©

1 respuesta
Kalgator

#533 con un Jastro dimisión en forma de easter egg impresa en la PCB me conformo

1 respuesta
carra

#534 :rofl::rofl:

carra

He añadido una carpeta al repositorio para ir subiendo librerías para Vircon32:
https://github.com/vircon32/ConsoleSoftware/tree/main/Libraries

Estas librerías no formarán parte de la librería estándar (por lo que no vendrán incluidas en el compilador), pero serán fáciles de usar en cualquier proyecto porque cada una de ellas es un único archivo. Además, con cada una de ellas voy a ir incluyendo un pequeño programa de ejemplo para mostrar cómo utilizar sus funciones.

En este momento sólo están disponibles 2 librerías iniciales:

  • La librería para dibujar primitivas geométricas (líneas, círculos, etc) que mostré hace unas semanas. Ojo, esta requiere la BIOS versión 1.1. Si vuestro emulador no la tiene basta con descargaros ese archivo actualizado (StandardBios.v32) desde las DevTools de GitHub, o compilar la nueva bios.
  • Otra pequeña librería que permite imprimir números en pantalla en diferentes formatos, y también añadir números como texto a otras cadenas sin tener que convertir nada primero.

Aún no es gran cosa, pero en los próximos días voy a subir otras ya más útiles para hacer juegos.

1
carra

Si os acordáis de Chandler (el que creó un video hace unos días), ahora ha subido al repo un pequeño juego: Tic Tac Toe (3 en raya)


Es un juego sencillo pero se lo ha hecho en un solo día, así que no está mal!

4 1 respuesta
Jastro

#537 ya tienes un fan tocho :D

1
10 días después
carra

Por algo que me preguntaron en Discord, me di cuenta de que los programas de test no incluyen ninguno para probar los efectos básicos de un sonido (volumen, velocidad y loop). Así que he creado un nuevo programa para probar eso:

Además gracias a este programa he detectado 2 bugs en el sistema de sonido del emulador. No afectan a ningún programa actual que yo sepa, pero ya están arreglados en GitHub. Tengo pendiente crear una nueva release.

Es posible que también grabe un video explicando un poco lo que hacen los distintos programas de test que hay, y las cosas que permite probar cada uno.

6
Kalgator

@Carra no necesita beta testers, es multitarea

Para cuando CT "Vircon32" ?

4

Usuarios habituales