Preguntilla de programación de Arcades

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Preguntilla de programación de Arcades

Mensajepor mentalthink » 25 Jul 2014, 09:29

Quería haceros está pregunta más que nada por curiosidad referente a las máquinas Arcades...

El asunto es, haya por lo 80 a la par que Spectrum Amsgtrad y demás, las máquina Arcade se programaban en general en ASM, o sabéis si las compañias tenian algún lenguaje propio, lo digo, porque al ser el Hardware normalmente más potente que en los ordenadores domésticos quizás hacían uso de alguna herramienta especifica...

Supongo que a finales de los 80 y 90, cuando estába el Final Fight y máquinas de ese estilo la programación sería C o alguna cosa asi no?¿.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: Preguntilla de programación de Arcades

Mensajepor mcleod_ideafix » 25 Jul 2014, 09:49

Por lo que sé, los arcades de la época del PacMan y similares (es decir, principios de los 80) se programaban directamente en ensamblador.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Ivanzx
Amiga 1200
Amiga 1200
Mensajes: 1620
Registrado: 05 Abr 2007, 19:39
Gracias recibidas: 22 veces
Contactar:

Re: Preguntilla de programación de Arcades

Mensajepor Ivanzx » 25 Jul 2014, 09:55

mcleod_ideafix escribió:Por lo que sé, los arcades de la época del PacMan y similares (es decir, principios de los 80) se programaban directamente en ensamblador.


Y en z80, si no me equivoco? Por eso tenemos el Pac-Man emulator para Spectrum, y me imagino que bastantes de estas recreativas primigenias podrian ser emuladas igual :)

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Preguntilla de programación de Arcades

Mensajepor na_th_an » 25 Jul 2014, 10:00

No es tan fácil. Se pudo hacer con Pacman porque era sencilla y dejaba tiempo de frame sin hacer nada que se pudo utilizar para emular el hardware gráfico (que además era muy sencillo).

Que yo sepa, todo lo que esté basado en 68000 (desde Pong hasta NeoGeo / CPS2) o menos está programado en ensamblador y, marginalmente, en C. A medida que los procesadores centrales y GPUs fueron más potentes, se fue pasando a C.

Como en las consolas, vaya.

Avatar de Usuario
Rapido
Dragon 32
Dragon 32
Mensajes: 26
Registrado: 14 May 2004, 19:40
Sistema Favorito: Commodore Amiga
primer_sistema: C64
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica

Re: Preguntilla de programación de Arcades

Mensajepor Rapido » 25 Jul 2014, 11:16

La gran mayoría de los juegos de la época de los 80 fueros programados en assembler, excepto algún que otro juego que fue programado en C, por ejemplo Marble Madnes,( esto facilito luego el port a las plataformas de 16 bits , amiga, genesis de sega.) Como curiosidad, también cabe reseñar que un puñado de juegos de la década de los 70 y principios de los 80 fueros programados en Bliss, lenguaje de mas alto nivel que apareció antes que C.

Saludos.

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Preguntilla de programación de Arcades

Mensajepor jotego » 25 Jul 2014, 12:26

Mi experiencia analizando el código fuente de tres juegos de recreativa: Ghosts'n Goblins, Gryzor y Combat School es que los tres muy probablemente se programaron en ensamblador. De haber sido en C, el código desensamblado seguramente tendría un uso mayor de la pila y de llamadas a funciones.

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Preguntilla de programación de Arcades

Mensajepor mentalthink » 25 Jul 2014, 21:54

Vaya gracias a todos por vuestras respuestas todas muy interesantes...

Curioso lo del Bliss que comenta rápido, en esa Época si que daba por hecho que todo sería en ASM.

Y sobre lo que comentas Jotego, como se saben esas cosillas, como se sabe que si es C o C++ hay más llamadas a la pila y tal, que yo quiero saber esos intringulis que se me escapan, bueno y todo lo que no sé... >| >|

Avatar de Usuario
explorer
MSX Turbo R
MSX Turbo R
Mensajes: 443
Registrado: 11 May 2014, 17:10
Sistema Favorito: Atari ST
primer_sistema: Atari 800XL/600XL
consola_favorita: Atari 2600
Primera consola: Atari 2600
Ubicación: Valladolid, España
Gracias dadas: 2 veces
Gracias recibidas: 162 veces
Contactar:

Re: Preguntilla de programación de Arcades

Mensajepor explorer » 25 Jul 2014, 23:16

Yo he desensamblado parte de las ROM del Pengo (Sega, 1982) y puedo decirte que lo hicieron en ensamblador.

Ahora bien... la mayor parte de los compiladores modernos de C admiten la incorporación de la función asm(), que permite escribir en lenguaje ensamblador dentro del propio código C. Eso permite hacer el núcleo del programa en C, y dejar las partes de acceso al hardware o partes críticas en el tiempo, interrupciones... para hacerlas en ensamblador.

Hoy en día se puede programar para ese hardware con el compilador ZCC. Por ejemplo, en esta página hay enlaces a herramientas y ejemplos de cómo programar en el hardware del Pac-Man y del Pengo. Aquí hay más.

Lo malo es que... a esas páginas y herramientas le quedan dos telediarios para que desaparezcan. Parece que no hay mucho interés, lo cuál es una pena.
Pero seguro que hay otras herramientas en otros sitios (pero que no he sido capaz de encontrar).

Imagen

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Preguntilla de programación de Arcades

Mensajepor na_th_an » 25 Jul 2014, 23:46

mentalthink escribió:Vaya gracias a todos por vuestras respuestas todas muy interesantes...

Curioso lo del Bliss que comenta rápido, en esa Época si que daba por hecho que todo sería en ASM.

Y sobre lo que comentas Jotego, como se saben esas cosillas, como se sabe que si es C o C++ hay más llamadas a la pila y tal, que yo quiero saber esos intringulis que se me escapan, bueno y todo lo que no sé... >| >|


Echando un vistazo al código, un programador de ensamblador puede reconocer las trazas de una generación automática de código: Si todos los bucles son iguales, si hay repetición de bloques de código, si ves que se utiliza mucho la pila...

Por ejemplo, cuando una función de C necesita variables locales hace espacio en la pila, nada más empezar. Si por un lado ves que el programa tiene muchas "subrutinas" y todas o casi todas empiezan reservando espacio en la pila y luego en el código ves muchos accesos a la parte de la pila que se ha reservado, es casi seguro que ese programa estuvo escrito en C u otro lenguaje similar y que el código que ves lo ha generado un compilador.

Cuando programas ensamblador a mano, sabes qué quieres hacer y buscas la mejor forma de hacerlo. Un compilador puede contar con un optimizador para intentar mejorar algo el código que genera, pero por lo general se limita a traducir lo mejor que puede de forma, digamos, puramente sintáctica. Tú a lo mejor vas a hacer un bucle y reaprovechas un registro para el índice y para generar un puntero... pero para el compilador todas las variables son iguales y probablemente haga un acceso a memoria para guardar el índice. De la misma manera, si sabes que vas a seguir operando con el mismo operando durante un tiempo, te lo guardas en un registro y vas almacenando los resultados parciales en el mismo registro... Un compilador (sin optimizar, que ahora los optimzadores son bastante listos), por lo general, irá a la pila a buscar el valor, lo pasará a un registro, le hará la operación, y lo volverá a almacenar... para cada operación, aunque vayan todas seguidas.

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Preguntilla de programación de Arcades

Mensajepor mentalthink » 26 Jul 2014, 00:03

Gracias Explorer si El czz y el zcc los conozco pero el de C++ lo veo un poco lio, incluso más que lo poco que se de ASM... supongo que una alternativa es usar Basic compilado, que curiosamente el otro día encontré una web que hacen un profundo examen a un Basic y parece que va bastante bien, de hecho hice un par de pruebas y es muy rápido FABACOm creo que es, eso si en el emulador hace un poco el cabra, supongo que en la máquina real debe ir bien...

Nathan gracias por la explicación, creo que he pillao bien lo que me querías comentar... es curioso como cuando se ven las cosas desde dentro no son tan extremadamente complejas como parecen...

Gracias de nuevo a todos.


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados