¿Qué me recomendais?

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

¿Qué me recomendais?

Mensaje por Alxinho » Vie Jun 07, 2013 7:29 am

Llevo un tiempecillo asimilando el assembler con el curso de Sromero para aprender esta forma de programar más profesional y me gustaría comprarme un libro en español pero no se cuál. ¿Hay alguno en especial que sea el mejor o cualquiera me vale?
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

Avatar de Usuario
oblo
Sabreman
Mensajes: 327
Registrado: Lun Feb 07, 2011 9:53 am

Re: ¿Qué me recomendais?

Mensaje por oblo » Vie Jun 07, 2013 8:56 am

En mis años mozos me puse con el curso de Microhobby; no es un libro como tal pero se aprende bastante. Ya más en español poca cosa, aunque si te vale en inglés hay unos cuantos en WoS.

salu2

Avatar de Usuario
JBGV
Manic Miner
Mensajes: 279
Registrado: Vie Feb 11, 2011 9:16 am

Re: ¿Qué me recomendais?

Mensaje por JBGV » Vie Jun 07, 2013 9:07 am

Hola, yo también consulto el curso de SRomero y el Libro de "Código máquina zx spectrum" de indescomp.

En WOS y en la página del Trastero del spectrum tienes un montón de libros completamente digitalizados :D, yo rebusco por alli.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: ¿Qué me recomendais?

Mensaje por susso » Vie Jun 07, 2013 9:50 am

Por aquí:
http://wiki.speccy.org/cursos/ensamblador/indice
Esto es más entretenido que hacer sudokus.
¡Bienvenido amigo!
EDITADO:
Ah! Vale! que es el mismo de sromero.
En Amazon he visto alguno de segunda mano in inglis, pero si tienes una tablet, no hay nada mejor que descargarte los de micro hobby y estudiarlo en la cama como yo. =o)

Enviado con Tapatalk

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: ¿Qué me recomendais?

Mensaje por susso » Vie Jun 07, 2013 9:59 am

Perdón por añadir un post seguido:
Aquí tengo algo muy interesante para cuando quieras animar sprites con desplazamientos de 1, 2 o x pixels, puedes aplicarlo de forma inmediata por cada frame o precalculadas, tendrás que considerar también posteriormente las máscaras si lo aplicas, pero he aprendido mucho sólo con estudiar estas microrutinas:
http://www.chilliant.com/z80shift.html


Enviado con Tapatalk

Z80user
Manic Miner
Mensajes: 215
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha
Contactar:

Re: ¿Qué me recomendais?

Mensaje por Z80user » Vie Jun 07, 2013 8:44 pm

Para rematar la faena te recomiendo también los "artículos de discusion" de este foro :-D (por llamarlos de alguna forma)

Son acerca de optimizaciones, no todas ellas incluidas en los documentos de SRomero.

Curso ASMZ80 XV: Gráficos en Spectrum (III): Sprites Lowres
viewtopic.php?f=6&t=2129

Curso ASM Z80 (XIII): "Gráficos en el Spectrum (I): la VRAM"
viewtopic.php?f=6&t=2105

Curso ASM Z80 (XII): "Las interrupciones del uP Z80"
viewtopic.php?f=6&t=2093

Curso ASM Z80 (XI): "Lectura del teclado en el Spectrum"
viewtopic.php?f=6&t=2085

Curso ASM Z80 (X): "Compresión y Descompresión RLE"
viewtopic.php?f=6&t=1332

Aquí un par de rutinas que libere para graficos, para imprimir en cualquier lugar de la pantalla en 42 columnas (empieza a imprimir a partir de una posición múltiplo de 8 pixels e imprime un texto en 42 columnas, para poder dejar un margen, o escribir en bocadillos y que el texto tenga un color, independientemente de en que columna se empieze a escribir.

En este utilizo algunas técnicas y uso la instrucción RRD/RLD que es algo rara de encontrar en un programa, esta perfectamente documentada, y los warning son que es posible cambiar los JR por JP si la dirección de continue comienza en una dirección por la que es factible ahorrar algún tiempecillo y bytes.

// WARNING
// procurar que continue caiga en la direccion #xx14 o #xx2C
// podemos ahorrar unos cuantos bytes y T-States

Y el otro es una "competicion" para direccionar una dirección en la pantalla.
http://z80user.zobyhost.com/foro/viewfo ... b16a196c65

También hay la rutina para el compresor descompresor RLE que esta en el "tontorial" de SRomero que por alguna razón no me lo certifica :-D
Agradecemos a Z80user su aportación, y aunque advertimos a los lectores que no podemos certificar el código, lo listamos para quien le pueda resultar de interés.
Lo cual me resulto curioso, un certificado para decir que una rutina funciona. MICROSOFT HELP ME, ejem ROMERO CERTIFICAMELO :-D
http://z80user.zobyhost.com/foro/viewfo ... b16a196c65

NOTA: a los tutoriales les llamo "tontoriales" no solo al de SRomelo "ni los tonto lo leen" (lease RED DWARF para mas información)
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: ¿Qué me recomendais?

Mensaje por Alxinho » Vie Jun 07, 2013 9:10 pm

Buah! Menuda faena me habéis dado entre todos! :D Y yo encantado ...

Por lo primero que tengo que empezar creo es por el inglés :lol:

Voy a ir rapiñando de aquí y de allá y supongo que con el tiempo algo aprenderé.

Gracias a todos!
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: ¿Qué me recomendais?

Mensaje por susso » Vie Jun 07, 2013 10:43 pm

Y yo! Y yo!


Enviado con Tapatalk

Z80user
Manic Miner
Mensajes: 215
Registrado: Vie Jun 08, 2007 9:42 am
Ubicación: En un lugar de la mancha
Contactar:

Re: ¿Qué me recomendais?

Mensaje por Z80user » Vie Jun 07, 2013 11:30 pm

El Ingles es una ayuda para todo, pero no creo que tengas que dejar los tontoriales en español, yo la verdad empeze con el ensamblador del 80x86 con un libro dedicado a el, el ensamblador de Spectrum osease del Z80 con las MICROFICHAS, que sin ser perfectas son estupendas (no hay instrucciones indocumentadas)

En tontorial de Ensamblador de la micro hobby, creo que lo lei algo por encima pero no demasiado, las microfichas eran un material mucho mas preciado para mi, te recomiendo tenerlas a mano son muy útiles.

Una cosa muy practica también es tener un emulador a mano como el ZX-Spin (lo digo por el depurador) que te permite editar e introducir un nemocodigo para poder ejecutarlo, y así poder comprobar las banderas de estado, para los valores que quieres, cuando no sabes si realmente se activara una bandera o lo hará su homónimo C en lugar de NC por ejemplo, con tanto JR, CALL y JP, para las banderas prefiero apostar a un caballo ganador que creer o leer algo mal, mas vale prevenir que lamentar.

Otra cosa es que como con todos los lenguajes de programación hay formas de hacer las cosas "normales", "optimas", "rápidas" y "rebuscadas".

Yo me identifico dentro de las "rebuscadas" le busco los 3 pies al gato cuando hago una rutina, y esto me cuesta un monton de tiempo, pero hago una rutina como a mi me gusta, rápida y compacta, Metalbrain creo que es como yo, quizás sin ser tan rebuscado, o rehago las rutinas una y otra vez varias veces, la de impresión de graficos no se la de veces que la rehize completamente.

Hay otra gente que con que funcionen se dan por satisfechos "normales" el ensamblador es muchísimo mas rápido que el BASIC, porque optimizarlo si con la ganancia sobra para hacerlo perfectamente.

A mi por ejemplo, me llena mas hacer algo que ocupe poco, pero no el mínimo, pero que si alguien intenta hacer algo mejor que yo le cueste hacerlo. A otros les gusta mas hacer juegos como churros sin importar (demasiado) si el juego puede funcionar mejor como los Mojones que los sacan como churros (y son geniales).

A lo que me refiero, es que programar en ensamblador es bueno, puedes hacer virguerías con el, puedes hacer cosas que sean rápidas, que ocupen poco, y que funcionen que es lo mas importante, no importa como lo hagas, si haces una rutina para imprimir un texto como la mía que lo hace rápido, o como la que me ofreció Winston (también impresión de 42 columnas) que tiene controles para el texto.

Y una cosa mas aunque es difícil ver a primera vista
bucle JR bucle
puede se una forma de bloquear un programa, pero también de pausarlo, hay una rutina de interrupciones que se puede ejecutar simultáneamente, recuerda poner DI para poder disponer de toda la potencia del Z80 si la necesitas y volver a poner EI cuando termines y crea una rutina de interrupciones cuando crees un videojuego, ganaras mucho, podrás agregar sonido, contadores y demás en ella, y crear el juego por debajo que corre independientemente con la instrucción HALT puedes sincronizar ambas ejecuciones, y también como he visto alguna vez con un "bucle JR bucle" pero la rutina de interrupciones tiene que cambiar esto

Si bienes del BASIC puedes omitir los primeros 16 KB de memoria y empezar a partir de la dirección de memoria 32768, con un CLEAR 32767 para dejarte memoria para tu programa, que además correrá algo mas rápido y suele ser un numero muy fácil de recordar, luego el típico RANDOMIZE USR 32768 o similares PRINT USR 32768 :-D suerte, y si necesitas ayuda/consejo, pregunta por aquí, algunos estamos algo locos a veces.
Si vas a tirar Hardware, primero pregunta si alguien lo puede recuperar.
No abandones un ordenador en un vertedero, donalo a alguien.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: ¿Qué me recomendais?

Mensaje por susso » Sab Jun 08, 2013 12:34 am

¿Tenéis a mano algún link de los ciclos y tamaños reales de las instrucciones del z80 en un spectrum? No recuerdo donde lo vi.
Gracias.


Enviado con Tapatalk

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: ¿Qué me recomendais?

Mensaje por Alxinho » Sab Jun 08, 2013 9:50 am

¿Podrías compartir tu rutina de impresión, tu print personal? Supongo que sirve para los sprites de un juego ¿no?
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: ¿Qué me recomendais?

Mensaje por susso » Sab Jun 08, 2013 11:02 am

Bueno, yo tengo algo así, ten en cuenta que estoy empezando, son para sprites de 2 bytes de ancho, con máscara pero sin desplazamientos, fijate que se repite 2 veces una parte de la rutina (los 2 bytes del sprite por línea) para evitar saltos y por tanto ciclos, se puede optimizar mucho, cualquier aportación que me hagais bienvenido.

Código: Seleccionar todo

printm
   ld de,prueba ;sprite
   ld hl,scanline
   ld b,16      ;sprite de 16 de altura
_bucle:
   push hl
   ld a,(hl)
   inc l ;peligro, posibilidad de carry sin sumar a h
   ld h,(hl)
   ld l,a ;hl pant
   ex de,hl

   ld a,(de)   ;2 bytes
   and (hl)
   inc hl
   or (hl)
   inc hl
   ld (de),a
   inc e ;peligro, posibilidad de carry sin sumar a h
   
   ld a,(de)   ;2 bytes
   and (hl)
   inc hl
   or (hl)
   inc hl
   ld (de),a
   inc e ;peligro, posibilidad de carry sin sumar a h

   ex de,hl
   pop hl
   inc hl
   inc hl
   djnz _bucle  ;b=b-1 y salta si no es cero
   ret

prueba:
   DEFB   224, 31,  7,248,192, 32,  3,  4
   DEFB   128, 64,  1,  2,  0,128,  0,  1
   DEFB     0,128,  0,  1,  0,156,  0, 57
   DEFB     0,130,  0, 65,  0,154,  0, 89
   DEFB     0,152,  0, 25,  0,128,  0,  1
   DEFB     0,128,  0,  1,  0,144,  0,  9
   DEFB     0,143,  0,241,128, 64,  1,  2
   DEFB   192, 32,  3,  4,224, 31,  7,248

scanline:
  DW $4000, $4100, $4200, $4300, $4400, $4500, $4600, $4700
  DW $4020, $4120, $4220, $4320, $4420, $4520, $4620, $4720
  DW $4040, $4140, $4240, $4340, $4440, $4540, $4640, $4740
  DW $4060, $4160, $4260, $4360, $4460, $4560, $4660, $4760
  DW $4080, $4180, $4280, $4380, $4480, $4580, $4680, $4780
  DW $40A0, $41A0, $42A0, $43A0, $44A0, $45A0, $46A0, $47A0
  DW $40C0, $41C0, $42C0, $43C0, $44C0, $45C0, $46C0, $47C0
  DW $40E0, $41E0, $42E0, $43E0, $44E0, $45E0, $46E0, $47E0
  DW $4800, $4900, $4A00, $4B00, $4C00, $4D00, $4E00, $4F00
  DW $4820, $4920, $4A20, $4B20, $4C20, $4D20, $4E20, $4F20
  DW $4840, $4940, $4A40, $4B40, $4C40, $4D40, $4E40, $4F40
  DW $4860, $4960, $4A60, $4B60, $4C60, $4D60, $4E60, $4F60
  DW $4880, $4980, $4A80, $4B80, $4C80, $4D80, $4E80, $4F80
  DW $48A0, $49A0, $4AA0, $4BA0, $4CA0, $4DA0, $4EA0, $4FA0
  DW $48C0, $49C0, $4AC0, $4BC0, $4CC0, $4DC0, $4EC0, $4FC0
  DW $48E0, $49E0, $4AE0, $4BE0, $4CE0, $4DE0, $4EE0, $4FE0
  DW $5000, $5100, $5200, $5300, $5400, $5500, $5600, $5700
  DW $5020, $5120, $5220, $5320, $5420, $5520, $5620, $5720
  DW $5040, $5140, $5240, $5340, $5440, $5540, $5640, $5740
  DW $5060, $5160, $5260, $5360, $5460, $5560, $5660, $5760
  DW $5080, $5180, $5280, $5380, $5480, $5580, $5680, $5780
  DW $50A0, $51A0, $52A0, $53A0, $54A0, $55A0, $56A0, $57A0
  DW $50C0, $51C0, $52C0, $53C0, $54C0, $55C0, $56C0, $57C0
  DW $50E0, $51E0, $52E0, $53E0, $54E0, $55E0, $56E0, $57E0

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 6 invitados