Tocadiscos arcade

Foro dedicado a máquinas recreativas de salón, máquinas de construcción propia y réplicas.
Avatar de Usuario
jotego
Amstrad PC 1640
Amstrad PC 1640
Mensajes: 634
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: 19 veces
Gracias recibidas: 25 veces

Tocadiscos arcade

Mensajepor jotego » 06 Oct 2014, 15:00

Hola a todos,

Quizá por la fiebre del evento del sábado de va-de-retro o por todos los magníficos documentales de música de videojuegos que está sacando RedBull, se me ocurrió hacer un tocadiscos arcade. La idea es hacer un programa para el arcade en cuestión que sustituye la ROM principal de código y que reproduce las músicas una tras otra. En algunos juegos ya sabréis que se puede entrar en el modo test, buscar el código de la música en el menú de test y reproducirla. Esta idea serviría para aquellos títulos en que no está disponible ese modo y para aquellos en los que sí lo está pero uno quiere que suenen todas las canciones una detrás de otra.

He hecho una pequeña prueba con el Ghosts'n Goblins. Este código toca los primeros 4 segundos de las principales melodías. Hay que ensamblarlo y grabar el resultado como gg3.bin. Entonces reemplazamos el original gg3.bin (que tendréis en un archivo gng.zip de vuestro directorio de ROMs) e invocamos "mame gng". MAME avisará de que el CRC está mal -claro, hemos cambiado una ROM- pero arrancará igual. Una vez arrancado sonará una música y cuatro segundos después otra, etc.

¡A ver qué os parece!

Código: Seleccionar todo

; GnG music player
; concept test by jotego. Contact twitter @topapate
; Assemble with target name "gg3.bin". Replace the gg3.bin used in MAME
; with this file. Run MAME, ignore the CRC error message and the program
; will run, playing GnG melodies directly without the game.

   org $8000
sound_latch equ $3A00
frames      equ $0000
seconds      equ $0002
current      equ $0004
init:   orcc #$FF   ;Disable all interrupts
      leas [$200]   ;Stack
      clra
      tfr a,dp
      clrb
      leay [frames]
      std ,y
      std   seconds
      leax [sound_latch]
      lda   #$2B   ; Main theme      
      sta ,x
      andcc #$00
wait:   ldb   seconds+1
      cmpb #4      ; play 4 seconds and then move to next tune
      blt   wait
      inca      ; gone over one full minute
      cmpa #$30
      blt l1
      lda   #$2B
l1:      sta   ,x      ; update tune
      clrb
      stb   seconds+1
      bra wait

irqsrv:   lda ,y
      inca      
      cmpa #60
      beq   marco
      sta   ,y
      rti
marco:   clra
      sta   ,y
      ldd   seconds
      incb
      adca #0
      std   seconds
      rti
; interrupt vectors:            
   org   $8000+$7FF8
   dw   irqsrv
   org $10000-2
   dw   init   


Y el fichero ya ensamblado y listo para usarse aquí

Volver a “Máquinas recreativas”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado