Compresion

Programando el Amstrad en Ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.

De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
halcon357
Lechoncillo
Lechoncillo
Mensajes: 11
Registrado: Dom 04 Nov , 2012 7:00 pm

Compresion

Mensajepor halcon357 » Vie 06 May , 2016 9:26 pm

Buenas a todo el gremio de ensamblador,alguien podria poner alguna pequeña rutina de compresion de un sprite de 8 por 8 pixel.

gg
I am The Forum
I am The Forum
Mensajes: 2290
Registrado: Mié 13 Dic , 2006 10:48 am

Re: Compresion

Mensajepor gg » Jue 12 May , 2016 8:54 pm

Para un sprite de ese tamaño, con su máscara y todo, no tengo nada específico. Sin conocer exactamente lo que quieres hacer es difícil pronunciarse, pero yo en tu lugar no descartaría los compresores existentes, como el exomizer.
Saludos,
gg.

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Compresion

Mensajepor ronaldo » Jue 12 May , 2016 10:22 pm

De hecho, un sprite de 8x8 píxeles en modo 0 te ocupa 32 bytes. A 32 bytes no le vas a ganar apenas nada comprimiéndolo, y no te va a compensar el coste de descomprimirlo (tienes que almacenarlo comprimido en algún sitio y disponer de 32 bytes en otro sitio para descomprimirlo).

Cuando apliques compresión, lo ideal es que utilices buffers de un tamaño considerable, donde merezca la pena guardar datos comprimidos. Por ejemplo, si tienes un juego que tenga 20 pantallas tileadas y cada pantalla te ocupa 1K, almacenar las 20 pantallas comprimidas puede hacer que pases de 20K a 12K por ejemplo. A eso le sumas 1K del buffer donde guardarás cada pantalla una vez descomprimida y tienes 13K frente a 20K originales. Ahí compensa.

Al final, la compresión, como todo, es un coste/beneficio. Tienes que hacer cuentas para saber si te compensa.

halcon357
Lechoncillo
Lechoncillo
Mensajes: 11
Registrado: Dom 04 Nov , 2012 7:00 pm

Re: Compresion

Mensajepor halcon357 » Vie 13 May , 2016 6:50 pm

ya pero yo estoy verde en esto del ensamblador,yo lo que digo es modo de ejemplo por que no se como se hace una rutinilla de compresion.de todas forma gracias a los dos.

gg
I am The Forum
I am The Forum
Mensajes: 2290
Registrado: Mié 13 Dic , 2006 10:48 am

Re: Compresion

Mensajepor gg » Sab 14 May , 2016 2:10 pm

En mi opinión, el problema de tu consulta va más allá del ensamblador. Yo pondría el acento en la manera de codificar datos ocupando menos espacio y sin pérdida de información. Esa es la parte complicada, no el programa.

Hasta ahora solo he diseñado funciones propias para esto en dos ocasiones:

La primera fue para comprimir las pantallas de un juego en Basic y me limité a calcular cuantas veces consecutivas aparecía cada uno de los gráficos, guardando solo el número de repeticiones y el número del gráfico. Muy simple, como puedes ver, pero también efectivo gracias a que los gráficos se repetían con bastante frecuencia.

La segunda (que empleo todavía), es para fuentes de texto en modo 0. Lo que hago es reducir el número de colores a cuatro (de 0 a 3), por lo que solo necesito dos bits para definir un punto, lo que me permite almacenar en un byte la información de cuatro puntos, en lugar de los dos que contendría cada byte normalmente en ese modo. Es tan simple que codifico directamente las fuentes así, por lo que solo tengo la rutina que prepara los datos para la impresión en pantalla.

Ambos son casos muy concretos y por eso preparé funciones propias. Para el resto uso los compresores existentes.
Saludos,
gg.


¿Quién está conectado?

Usuarios navegando por este Foro: Ahrefs [Bot]


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic