Revision 2018, part deux 20180408-2040

Sigo atando cabos, y ya estoy en el ecuador del segundo trimestre, así que iré al grano:




Condense, el grupo autor de la demo "Phx" de la que hablaba hace unos días, ha publicado el código fuente de la misma. Echadle un vistazo, es una lectura interesante, aunque bastante desordenada.



"I-Ball 2" (1987 Firebird) for Atari ST by Wally Beben

He publicado las versiones nuevas de UZ80 y CHIPNFSX tras hacer algunas pruebas y decidir que los problemas que me preocupaban ya están resueltos. De propina, una adaptación más; algunos la reconoceréis de haberla oído en la parte secreta de la demo "École Buissonière".


Revision 2018 20180406-1848

Se me plantean problemas de cara al futuro inmediato: la UNED por un lado, en la que tengo muchas cosas que hacer (algunas inmediatas, para el postgrado en curso; otras, relativas a asuntos pasados, pero que permanecen abiertos), la búsqueda de trabajo, donde aun con mis pobres expectativas no puedo dejar de moverme, y los dos eventos de finales de abril: Amstrad Eterno Barcelona y Retro Madrid. ¿Tendré tiempo para todo? ¿Se perderá algo por el camino?


"Isometrikum", Vanity; 1st oldschool intro


"Phx", Condense; 2nd oldschool demo


"Onescreen Colonies", Vanity; 4th oldschool demo

Mientras tanto se ha celebrado una nueva edición del certamen Revision, y el Amstrad CPC ha estado representado con una fuerza sorprendente: ahora mismo aún es posible ir a Pouet.net y ver que la lista de las diez demos más notables del momento ("Top of the Month") todavía contiene las tres producciones para CPC mostradas en el certamen: "Phx" (quinto puesto), "Isometrikum" (octavo) y "Onescreen Colonies" (décimo). Curiosamente, la demo para C64 "We Come in Peace" de Fairlight y Censor Design, a pesar de haber ganado el primer premio en la categoría oldschool demo, es menos popular en Pouet.net: es solamente la novena en la lista.



"Pacmania" (Amstrad CPC, Spectrum 128, Atari ST): Pacman's Park

Finalmente, tras descubrir que compilar BOSCONIA.CHP provocaba errores, he reescrito por completo las rutinas de exportación de datos de CHIPNSFX y también he añadido a UZ80 la capacidad de reservar memoria sobre la marcha en lugar de trabajar con búferes de tamaño constante. No obstante, no sé si debería publicar ya estas nuevas versiones o si tendría que hacer más experimentos para evitar la desagradable sorpresa descubierta gracias a la canción de "Bosconian" y "Raster Runner".


Otros dos parches más 20180327-1320

A raíz de la corrección anterior que añadía algo de control a la expansión de macros, he retocado el análisis de secuencias de escape de UZ80 para que provoque errores fatales cuando se le dan combinaciones que se salen del estándar: por ejemplo "\N", que es rechazado, a diferencia de "\n", que genera el carácter LF, de valor 10.

load = $170
type = 0
exec = 0

; AMSDOS
 org load-$80
 ds 18
 dw type
 ds 1
 dw load
 ds 1
 dw last-load,exec
 ds 36
 dw last-load
 ds 1
 dw type+(load>>8)+(load&255)+2*((last-load)>>8)+2*((last-load)&255)+(exec>>8)+(exec&255)
 ds 59
; BASIC
 dw boot-$-2,1,$1C83,boot,$C001
filename db "2H"
filename_ db ": run to toggle 208K mode, push Shift and Control to format disc."
 ds 3

boot ld a,($BC9B)
 cp $DF
 ret nz ; DISC INSTEAD OF TAPE?
 ld hl,($BC9B+1)
 inc hl
 inc hl
 ld a,(hl) ; AMSDOS' ROM NUMBER
 ld (select03+2),a
 ld (format06+2),a
 ld hl,($BE7D)
 ld a,h
 or l
 ret z ; AMSDOS COMPATIBLE ROM?

 ld e,(hl) ; CURRENT DISC DRIVE
 push de
 ld a,$C1 ; DEFAULT DATA FORMAT
 db $DF
 dw select03
 ld hl,5 ; A=0,BC=0,DE=^XDPB+19
 add hl,de
 pop de
 cp (hl)
 jr z,main
 ld (hl),a ; SET DYNAMIC FORMAT
quit ld de,last
 jp $BC9B ; CAT
main dec (hl) ; SET 208K FORMAT
 push hl
 pop ix
 ld (ix-24),40  ; RECORDS/TRACK (36)
 ld (ix-19),209 ; ++KBYTES/SIDE (179)
; ld (ix-11),b;0 ; CATALOG TRACK
; ld (ix-9),$C1  ; 1ST SECTOR ID
 inc (ix-8);,10 ; SECTORS/TRACK (9)
; 20130830: GAP#3 7/22 FAIL!!!
 ld (ix-7),1    ; GAP#3 RD/WRT (42)
 ld (ix-6),37-1 ; GAP#3 FORMAT (82)
; 20140708: http://demoniak-contrib.forumactif.com\
; /n62-la-structure-des-pistes-d-une-disquette-sur-cpc
 ld a,21 ; PRESS SHIFT...
 call $BB1E
 ld a,c
 sub 160 ; ...AND CONTROL!
 jr nz,quit

 ld d,a
 ld a,"["
 call $BB5A
doatrack ld hl,last
 push hl
 ld c,2
 ld a,$C1
dosector ; CHRNCHRN...
 ld (hl),d
 inc hl
 ld (hl),b
 inc hl
 ld (hl),a
 inc hl
 ld (hl),c
 inc hl
 add 5 ; C1C6...
 ld (hl),d
 inc hl
 ld (hl),b
 inc hl
 ld (hl),a
 inc hl
 ld (hl),c
 inc hl
 sub 4 ; C6C2...
 cp $C6
 jr nz,dosector ; 16,27,38,49,5A*6B
 pop hl
 db $DF
 dw format06
 ret nc
 ld a,"#"
 bit 0,d
 call nz,$BB5A
 inc d
 ld a,d
 cp 42
 jr c,doatrack
 ld hl,filename
 ld de,last
 ld b,filename_-filename
 call $BC8C
 ld hl,load
 ld de,last-load
 xor a
 call $BC98
 call $BC8F
 ld a,"]"
 call c,$BB5A; OK
filedone jp $BC92
select03 dw $C039
 db 7
format06 dw $C042
 db 7

 ds $270-$
last
 end

Es buen momento para incluir las fuentes corregidas de 2H.BAS, programa que escribí en su momento para crear y utilizar disquetes con un formato DATA aumentado de 178k a 208k a base de usar 42 pistas de 10 sectores en vez de 40 de 9, que publiqué en cpcwiki.eu/forum y que UZ80 compila a la perfección, cabecera de AMSDOS incluida.



"Pacmania" (Amstrad CPC, Spectrum 128, Atari ST): Block Town

También he aprovechado para simplificar una de las condiciones del "player" de CHIPNSFX y para añadir cinco canciones, de las que cuatro son la banda sonora de Ben Daglish para la conversión de "Pacmania" a cargo de Teque Software y publicada por Grandslam. Es interesante: ninguna de las conversiones de "Pacmania" incluye el tema de "Sandbox Land"; todas se limitan a repetir el de "Block Town".


Dos parches 20180324-1330

Por un lado he publicado una segunda versión de UZ80 para corregir un par de fallos: no reconocer las instrucciones OUTD y OUTI (sus sinónimos OTD y OTI sí estaban bien) y reaccionar erróneamente al utilizar una macro con menos parámetros de los que originalmente habían sido definidos en la cabecera de la misma.



"Rasterscan" (Amstrad CPC) 1987 Mastertronic

Por el otro he presentado una versión menor de CHIPNSFX para corregir un error que ocurría en ocasiones muy raras al utilizar XX80 en la sección de ruido de un instrumento. Además, como de costumbre, he añadido más canciones, de las que la más nueva es una adaptación de la extravagante banda sonora de Jas C. Brooke para "Rasterscan", juego que además acabo de añadir a la lista de "compactajes".


Ganas de morir... de nervios 20180321-2100

Es oficial, acabo de publicar la primera versión de UZ80, que espero que sea de vuesto agrado. Probadlo, maltratadlo, queredlo, odiadlo, alabadlo, insultadlo... al ritmo de una cancioncilla de Ben Daglish pasada por el tamiz de CHIPNSFX.



"Death Wish 3" (Amstrad CPC, Spectrum 128) 1987 Gremlin Graphics

Vale la pena comentar que la canción de la versión de Commodore 64 es ligeramente distinta, y no solamente por las razones obvias de usar un chip de sonido que no es el que el CPC y el 128 tienen en su interior. Debe de pertenecer a la época en la que Daglish ya tenía mucha soltura pero aún no hacía canciones que podían ser tocadas sin cambios en todos los 8 bits.

P.S.: Anoche cambié sin querer el nombre del archivo de UZ80 y el resultado fue que dejó de poder ser descargado. Ya está corregido.


"LED Storm" y UZ80 20180317-0150

El clima ha sido tormentoso y me he pasado mucho más tiempo del previsto en casa. No me falta quehacer pero agradecería poder salir a la calle con ciertas garantías de sol y calma, o al menos con poca lluvia y menos viento. Al menos esto significa más tiempo para labores musicales que tanto os gustan, así que aquí tenéis un poco de Tim Follin: sus tres pistas para "LED Storm" en Spectrum, de las que dos también sonaron en C64.



Main theme



Introduction



High scores

Por lo demás UZ80 ya funciona perfectamente, detecta más errores que AS80 (algunos de ellos escondidos en las profundidades de "Justin" desde hace doce años) y encima corre más deprisa: UZ80 tarda entre la mitad ("Frogalot") y la quinta parte ("Hire Hare") de lo que consume AS80 para compilar mis juegos para los concursos de CPC RetroDev.


MinGW GCC 4.9.2-tdm-1 (-O2)
'as80 -inqx3 frogalot.s80 -onul': 5.008000/130= 0.038523 seconds
'as80 -inqx3 hirehare.s80 -onul': 5.070000/ 47= 0.107872 seconds
'as80 -inqx3 basketcs.s80 -onul': 5.007000/146= 0.034295 seconds
'uz80 -q frogalot.s80 -onul': 5.008000/286= 0.017510 seconds
'uz80 -q hirehare.s80 -onul': 5.007000/238= 0.021038 seconds
'uz80 -q basketcs.s80 -onul': 5.008000/276= 0.018145 seconds
'as80 -inqx3 frogalot.s80 -onul': 8.034000/213= 0.037718 seconds
'as80 -inqx3 hirehare.s80 -onul': 8.018000/ 75= 0.106907 seconds
'as80 -inqx3 basketcs.s80 -onul': 8.018000/238= 0.033689 seconds
'uz80 -q frogalot.s80 -onul': 8.003000/459= 0.017436 seconds
'uz80 -q hirehare.s80 -onul': 8.019000/387= 0.020721 seconds
'uz80 -q basketcs.s80 -onul': 8.003000/454= 0.017628 seconds
'as80 -inqx3 frogalot.s80 -onul': 10.015000/262= 0.038225 seconds
'as80 -inqx3 hirehare.s80 -onul': 10.047000/ 93= 0.108032 seconds
'as80 -inqx3 basketcs.s80 -onul': 10.030000/294= 0.034116 seconds
'uz80 -q frogalot.s80 -onul': 10.000000/568= 0.017606 seconds
'uz80 -q hirehare.s80 -onul': 10.015000/479= 0.020908 seconds
'uz80 -q basketcs.s80 -onul': 10.000000/559= 0.017889 seconds
'as80 -inqx3 frogalot.s80 -onul': 16.022000/416= 0.038514 seconds
'as80 -inqx3 hirehare.s80 -onul': 16.099000/149= 0.108047 seconds
'as80 -inqx3 basketcs.s80 -onul': 16.021000/466= 0.034380 seconds
'uz80 -q frogalot.s80 -onul': 16.006000/906= 0.017667 seconds
'uz80 -q hirehare.s80 -onul': 16.005000/765= 0.020922 seconds
'uz80 -q basketcs.s80 -onul': 16.022000/891= 0.017982 seconds
TinyCC TCC 0.9.27 (x86)
'as80 -inqx3 frogalot.s80 -onul': 5.024000/131= 0.038351 seconds
'as80 -inqx3 hirehare.s80 -onul': 5.070000/ 47= 0.107872 seconds
'as80 -inqx3 basketcs.s80 -onul': 5.023000/147= 0.034170 seconds
'uz80 -q frogalot.s80 -onul': 5.008000/257= 0.019486 seconds
'uz80 -q hirehare.s80 -onul': 5.007000/201= 0.024910 seconds
'uz80 -q basketcs.s80 -onul': 5.008000/255= 0.019639 seconds
'as80 -inqx3 frogalot.s80 -onul': 8.018000/207= 0.038734 seconds
'as80 -inqx3 hirehare.s80 -onul': 8.065000/ 74= 0.108986 seconds
'as80 -inqx3 basketcs.s80 -onul': 8.019000/233= 0.034416 seconds
'uz80 -q frogalot.s80 -onul': 8.003000/416= 0.019238 seconds
'uz80 -q hirehare.s80 -onul': 8.018000/320= 0.025056 seconds
'uz80 -q basketcs.s80 -onul': 8.003000/401= 0.019958 seconds
'as80 -inqx3 frogalot.s80 -onul': 10.000000/258= 0.038760 seconds
'as80 -inqx3 hirehare.s80 -onul': 10.093000/ 93= 0.108527 seconds
'as80 -inqx3 basketcs.s80 -onul': 10.015000/291= 0.034416 seconds
'uz80 -q frogalot.s80 -onul': 10.000000/513= 0.019493 seconds
'uz80 -q hirehare.s80 -onul': 10.015000/400= 0.025038 seconds
'uz80 -q basketcs.s80 -onul': 10.000000/503= 0.019881 seconds
'as80 -inqx3 frogalot.s80 -onul': 16.037000/412= 0.038925 seconds
'as80 -inqx3 hirehare.s80 -onul': 16.037000/148= 0.108358 seconds
'as80 -inqx3 basketcs.s80 -onul': 16.005000/463= 0.034568 seconds
'uz80 -q frogalot.s80 -onul': 16.006000/825= 0.019401 seconds
'uz80 -q hirehare.s80 -onul': 16.021000/642= 0.024955 seconds
'uz80 -q basketcs.s80 -onul': 16.006000/806= 0.019859 seconds

Cuando haya escrito la documentación lo publicaré, y además es muy posible que incluya las fuentes, que para variar me parecen suficientemente limpias y ordenadas, además de comentadas para que cualquiera pueda leerlas. Pero primero terminaré los deberes de la UNED.


Seis de seis 20180305-1815

La última nota resultó ser la mejor de todas: 85%. No puedo quejarme, no; pero tampoco voy a olvidar el tiempo dedicado a todos los deberes y el mes y medio que me pasé estudiando para los exámenes de Febrero. Supongo que tendré que hacer lo mismo durante este segundo trimestre si quiero aspirar a resultados igual de buenos.



"Puzznic" 1990 Ocean



"Chambers of Shaolin" 1989 Thalion



"Tangram" 1991 Thalion

Los primeros deberes del segundo trimestre deben ser entregados el jueves, dentro de tres días; y antes hay que hacer algunos trámites. Mientras tanto voy a colocar aquí un poco más de música adaptada de originales de Jonathan Dunn y Jochen Hippel aprovechando que acabo de corregir un fallo en CHIPNSFX.


Marzo ventoso, etc. 20180301-2115

Febrero se despidió con una gran nevada que sin embargo no tardó en derretirse; Marzo comienza con una tempestad que intercala lluvia y viento, lo que hasta cierto punto coincide con el pronóstico del viejo refrán. En una semana empezará el plazo de revisión de los exámenes de Febrero, así que la sexta asignatura ya no puede hacerme esperar mucho tiempo más.



"Nebulus" 1988 Hewson



"Nemesis the Warlock" 1987 Martech



"Titanic" 1988 Topo Soft

Mientras tanto un poco de música de la que os gusta: una revisión de "Nebulus" de J.Dave Rogers y dos adaptaciones nuevas, "Nemesis the Warlock" de Rob Hubbard y "Titanic" de Gominolas. Además he empezado a escribir un ensamblador de Z80, de nombre provisional UZ80, porque ya estoy más que cansado de los bugs de AS80 en la evaluación de expresiones, tales como creer que (IX-1-1) es igual a (IX-0) porque 1-1=0...


Eliminación Salvaje de Cortocircuitos 20180221-1220

Ya sé otras dos notas más (Modelado+Simulación y Nubes) y ambas son buenas. Otras dos más y el primer trimestre habrá terminado oficialmente. ¡Más me vale que sigan siendo buenas!



"Eliminator" (1988 Hewson) cover by Madmax (Atari ST)



"Savage" (1988 Probe) intro by Jas C. Brooke (Amstrad CPC)



"Short Circuit" (1987 Ocean) by Jonathan Dunn (?) (Amstrad CPC)

Aprovecho el alivio de las buenas noticias para sacar una versión nueva de CHIPNSFX con la famosa mejora de los vibratos profundos (ya es posible hacer tambores de verdad) y algunas canciones nuevas más, de las que destacan estas tres: la adaptación para Atari ST de Jochen Hippel "Madmax" de la canción de Jeroen Tel "Maniacs of Noise" para "Eliminator" en el Commodore 64 (sí, es una versión de una versión de una versión), la introducción de "Savage" en el Amstrad CPC por Jas C. Brooke (en su primer trabajo firmado públicamente; antes había hecho "Lazer Tag" pero solamente se veía su nombre al examinar el código) y el tema principal de "Short Circuit" también en el CPC, por un autor desconocido que sin embargo debe de ser Jonathan Dunn (corregidme si me equivoco).


Nueve vidas 20180218-1030

Ya sé una de las notas: he aprobado el examen de Sistemas Operativos de Dispositivos Móviles (una asignatura sobre Android e iOS, para entendernos). Es un problema menos. Ahora necesito saber los resultados de los otros cinco. De todas formas no puedo distraerme mucho mientras espero porque el segundo trimestre comenzó hace un par de días.



arpeggio X7C



arpeggio 0X7

Mientras tanto sigo explorando el asombroso mundo del Atari ST en mi búsqueda de músicas para enriquecer la biblioteca de CHIPNSFX, y así es como me he topado con un título muy curioso: "Nine Lives" (1990 Arc Development?), que es una mezcla de "La Pulga" de Paco Suárez y juegos de la época como "Sleepwalker" publicado por Ocean. No consta el autor de la música; un sitio menciona a Fred Gray pero no sé qué pensar. En cualquier caso, como la canción hace uso de arpeggios de cuatro pasos, he hecho dos versiones, una que elimina el primer paso del arpeggio (X7C) y otra que elimina el último (0X7) aprovechando en ambos casos que el primero y el último son armónicos entre sí (0-C).


[ ◀ MODERNOS ] [ ▲ ] [ ▶ ANTIGUOS ]