Proyecto de Sistemas Distribuidos 20150709-2222

Parece increíble pero el proyecto del miniblog hecho con Java RMI avanza a pasos agigantados; ya solamente necesito resolver la cuestión de la gestión de sesiones y callbacks, y con suerte mañana todo funcionará por primera vez.

Mientras tanto pienso en un posible método con un byte previo a cada N bytes donde cada bit indica si un byte es opaco o no:

{ ; ----
 ld a,(bc)
 ld (de),a
 inc [b]c
 inc [d]e
} = 2+2+1+1 = 6 [+2!] µs ; 4 bytes

{ ; HL=^MASKFLIP
 ld a,(bc)
 ld l,a
 ld a,(de)
 and (hl)
 or l
 ld (de),a
 inc [b]c
 inc [d]e
} = 2+1+2+2+1+2+1+1= 12 [+2!] µs ; 8 bytes

{ ; HL=^MASKFLIP+256
 ld a,(bc)
 ld l,a
 ld a,(hl)
 ld (de),a
 inc [b]c
 dec [d]e
} = 2+1+2+2+1+1 = 9 [+2!] µs ; 6 bytes

{ ; HL=^MASKFLIP
 ld a,(bc)
 ld l,a
 inc h
 ld l,(hl)
 dec h
 ld a,(de)
 and (hl)
 or l
 ld (de),a
 inc [b]c
 dec [d]e
} = 2+1+1+2+1+2+2+1+2+1+1= 12 [+2!] µs ; 11 bytes

para 6 bytes max,
* derecho: 6*4=24; 6* 8=48; 64*(24+48)/2= 2304
* reves..: 6*6=36; 6*11=66; 64*(36+66)/2= 3264

para 8 bytes max,
* derecho: 8*4=32; 8* 8=64; 256*(32+64)/2= 12288
* reves..: 8*6=48; 8*11=88; 256*(48+88)/2= 17408

20:47 04/07/2015

El código de control podría ser algo así:
{
 ld a,(bc)
 inc [b]c
 add a
 add lo JUMPTABLE
 ld l,a
 adc hi JUMPTABLE
 sub l
 ld h,a
 push hl
 ld h,hi MASKFLIP
 ret
} = 2+1+1+2+1+2+1+1+4+2+3= 20 [+1!] µs; 14 bytes
...
{ jp XXXX } = 5 µs; 3 bytes

Óptimos nuevos contra genéricos viejos:

* 25+12= 37 µs > 2*12= 24 (154,16%)
* 25+24= 49 µs > 4*12= 48 (102,08%)
* 25+36= 61 µs < 6*12= 72  (84,72%)

* 50+48=  98 µs > 4*24=  96 (102,08%)
* 50+60= 110 µs < 5*24= 120  (91,66%)
* 50+72= 122 µs < 6*24= 144  (84,72%)

 ld a,(bc) ; 2
 inc [b]c ; 1/2
 and a ; 1
 jr z,$+3 ; 3/2
 ld (de),a ; 2
 inc [d],e ; 1/2
 
 8/11

21:14 04/07/2015

No sé si tiene tanto sentido como parece tenerlo en mi cabeza. En general el método solamente parece mejorar el dibujo "bruto" de sprites cuando éstos son de más de 5 bytes de anchura (es decir, cuando miden tres caracteres o más). ¿Será suficiente para mover todos los sprites de "Parasol Stars" sin que el CPC se desplome agotado?


MadriSX 2015 20150630-1850

Tras saludar a través de Internet a la gente de MadriSX en su nueva edición, me planteo la siguiente cuestión: ¿podré ir a RetroSanabria 2015? ¡A saber!, me dije al principio. Pero posteriormente he decidido que no me vale la pena. No he sido capaz de encontrar referencias del certamen, y en consecuencia no sé a lo que debo atenerme, ni me apetece correr riesgos, que uno ya se ha llevado unas cuantas desilusiones.

Por lo demás ya tengo todas las notas de Junio. Con la excepción de Lenguajes II, que ya sabía que iba a suspender (repetiré el proyecto durante el verano y estudiaré el examen junto al de Sistemas de Bases de Datos, suspendido en Febrero) las notas han sido francamente buenas: Informática Gráfica 98%; Sistemas en Tiempo Real 80%; Fundamentos de Robótica 72%; Seguridad 86%. No puedo quejarme, no.

Eso sí, más me vale que entregue pronto el proyecto de Sistemas Distribuidos, y que me distraiga menos con noticias tales como las restauraciones de "Commando" y "Ghosts 'n' Goblins" para Commodore 64; tampoco puedo seguir aplazando las versiones para CPC de "Duck Out", "Fix-it Felix Jr." y muy especialmente "Parasol Stars". ¡Y aún debo muchos dibujos!


El regreso de los compactajes 20150620-2035

Regresan los compactajes, esta vez con dosis especial de juegos españoles.

Los primeros dos son Oberon 69 y Star Bowls, ambos producidos por el grupo freelance Diabolic, pero vendidos por compañías distintas, G.LL. en 1990 el primero y Zigurat en 1991 el segundo. Oberon 69 es seguramente el mejor de sus juegos para CPC, que por desgracia no es mucho decir ya que su catálogo es muy escueto e incluye bodrios como G.P. Formula 1 Simulator, plagio de la música de Rescate Atlántida incluido.

Los otros ocho son el catálogo de Positive, compañía barcelonesa si bien recuerdo (en contraste con el resto del software español que se hacía casi todo él en Madrid) que tenía una profesionalidad bajísima: si Dinamic fuese un periódico, Positive sería un fanzine.

Aproveché para corregir bugs en Oberon 69 (reset en ordenadores con 128k) y Star Bowls (problemas con el joystick) y para añadirles pokes. No me molesté en probar suerte con los juegos de Positive, pues son demasiado malos para merecer esforzarse en sacarles punta.

Mención especial para Enchanted, publicado por Positive en 1989 entre sus primeros juegos, que tiene el dudoso honor de ser fácilmente un pinball aún peor que el famoso Score 3020 de Topo Soft: al menos éste podía terminarse, aun con muchísimo tedio y mucho abuso del "tilt"; aquél es simplemente y llanamente injugable.


Primera nota 20150619-1150

Ya sé la primera nota final de Junio: Informática Gráfica, examen 6 + ejercicios 3,8 = ¡9,8! No está nada mal para empezar. Los demás exámenes pueden haber sido un desastre (Lenguajes II, nos veremos en Septiembre para el proyecto y el examen) pero ya tengo un sobresaliente que incluso podría convertirse en matrícula de honor para Cuarto según dónde decidan poner el baremo.

Mientras tanto "Duck Out" se acerca a la primera versión pública. Ya he reunido todo el código compartido por las fases en un solo bloque general: ahora el juego ocupa 5 kB menos. También he metido las tres canciones, anteriormente "ripeadas", de "My Hero" (1985 Sega/Coreland) y han quedado aceptablemente bien, aunque ahora ya sí me queda muy poco espacio (menos de 320 bytes) para añadir más cosas.

De paso he decidido que el juego pueda mostrar hasta cuatro enemigos al mismo tiempo, aprovechando que el motor gráfico aún tiene potencia para aguantar un sprite adicional, en vez de los tres con los que se conformaba la lentísima versión original para Spectrum. Así los jugadores más osados tendrán más oportunidades para ganar puntos y recuperar energía. De paso, el marcador que indica la posición relativa dentro del mapa ahora destaca igual en fondos blancos y negros.


Fin de los exámenes 20150613-1200

Los exámenes han terminado: las cosas no iban a ser fáciles y antes de emprenderlos hube de tomar decisiones muy graves, pero no me esperaba que se fuesen a juntar tantas cosas de las que prefiero no acordarme nunca más. Por tanto, es buen momento para intentar pensar en algo menos triste y reanudar las aficiones que hacen la vida un poco más llevadera.

Así que empezaré mostrando cómo "Duck Out" se presentó en RetroMadrid Days 2015 hace exactamente una semana. El público lo recibió bien: en Zona de Pruebas leo "Ese Duck Out para CPC. Qué ganas de echarle en guante. Jejejeje" lo me alegra un poco. Ojalá el juego final consiga ser lo que el original no logró.

Dicho sea de paso, para que se vea bien cuándo el protagonista es herido por los enemigos y proyectiles, su sprite ya no parpadea en blanco (lo que queda mal ante las paredes blancas) sino en gris hecho con el patrón blanco y negro. El algoritmo es un poco simplón, pero no está mal para empezar.


HTML5 IBXM (III) 20150606-2050

Y ahora, ¿oís algo?

IBXM-MICROMOD
...
▶ PLAY
■ STOP

No solamente el autor original de IBXM me hizo caso e introdujo las correcciones necesarias para que IBXM funcionase completamente, sino que además aquí tenemos algo aún más ligero: IBXM Micromod, un intérprete de ficheros MOD (los módulos musicales inventados por los legendarios "M.K.", Mahoney y Kaktus, para Amiga) que cabe en menos de 20k y que toca perfectamente el inolvidable "Space Debris" de otro memorable amiguero, Markus "Captain" Karloonen.


HTML5 IBXM (II) 20150530-1750

¿Oís algo ahora?

IBXM
...
▶ PLAY
■ STOP

He corregido por mi cuenta el "bug" de IBXM con las canciones de Scream Tracker: no era consciente de que existen pistas separadoras; en su lugar el programa estaba asumiendo que estas pistas representaban un salto a la pista #254. Disfrutad de la creatividad de Peter "Skaven" Hajba y su memorable "Deep in her eyes" de 1994.

while (module.sequence[seqPos]==0xFE) { seqPos++; } /* CNG 20150530 */ var pattern = module.patterns[module.sequence[seqPos]];


HTML5 IBXM 20150529-1205

¿Oís algo?

IBXM
...
▶ PLAY
■ STOP

Si vuestro navegador es capaz de interpretar HTML5 correctamente y puede generar sonido, escucharéis "Lost in belief", canción de 1995 de Big Jim (Five Musicians). La librería musical es IBXM, publicada por Martin "Mumart" Cameron en Pouet ayer mismo. Funciona aceptablemente bien (varios ficheros S3M de Skaven se atascan tras el primer compás, a saber por qué) y con una simple reducción de espacios cabe en 48k. Moved el cursor por encima de los botones "Play" y "Stop" para probarlos.


Semanas de pesadilla 20150519-1126

Proyectos, exámenes, estudiar mucho, volverme loco... menos mal que en menos de cinco minutos puedo añadir cosillas que ocupan poco (ocho bytes) y rinden mucho:

Descansen en paz el pobre colirrojo tizón trágicamente muerto el viernes ante mis propios ojos y el pichón hambriento y moribundo de hoy por la mañana ante los de mi madre.


"Duck Out", WIP 20150506 20150507-0104

"Duck Out" es slapstick y necesita efectos especiales adecuados:

Agradecimientos a DrJavi por sugerir el punto de partida.


[ ◀ MODERNOS ] [ ▲ ] [ ▶ ANTIGUOS ]