Fractales en el Dragon!

BBC, Dragon, Sam Coupé, Oric ...
Avatar de Usuario
robcfg
Amiga 2500
Amiga 2500
Mensajes: 2148
Registrado: 07 May 2009, 15:34
Sistema Favorito: Amstrad CPC
primer_sistema: Atari 800XL/600XL
Ubicación: Estocolmo
Gracias dadas: 868 veces
Gracias recibidas: 172 veces
Contactar:

Fractales en el Dragon!

Mensajepor robcfg » 26 Ago 2013, 15:46

Hace unos dias estaba mirando un código sencillito en Basic que se publicó hace tiempo en el CPCWiki, y me di cuenta de que programitas que representaran fractales en Dragon basicamente no hay.

Así que me puse manos a la obra, modifiqué y adapté el código para el Dragon, y ahora se pueden generar vistosas imágenes de Mandelbrot y Julia en varios modos de pantalla y paletas de colores.

De lo que estoy más orgulloso es del dither de colores, que da la impresión de tener más de 4 colores. Lo malo es que, como esta hecho en basic puro y duro, pues tarda lo suyo. Eso si, al terminar la imagen, la podeis grabar en cinta o disco para compartirla o visualizarla.

Podeis descargaron el programa en texto plano, cinta o disco aquí.

Espero que os guste!
Adjuntos
K3FRAC10_MANDE_3_1_32.png
Ejemplo de conjunto Mandelbrot en PMode 3, 4 colores
K3FRAC10_MANDE_3_1_32.png (6.88 KiB) Visto 9549 veces

SyX
Commodore 128
Commodore 128
Mensajes: 77
Registrado: 15 Mar 2010, 12:44
Gracias dadas: 2 veces
Gracias recibidas: 7 veces

Re: Fractales en el Dragon!

Mensajepor SyX » 26 Ago 2013, 15:50

¡¡¡MOLAAAAAAAAAAAAAAAAAA!!!! :D

Un fantástico trabajo, ¡Enhorabuena! :)

Conectado
Avatar de Usuario
alt
Amiga 2500
Amiga 2500
Mensajes: 4187
Registrado: 07 Sep 2004, 21:52
Ubicación: madrid
Gracias dadas: 1040 veces
Gracias recibidas: 1767 veces
Contactar:

Re: Fractales en el Dragon!

Mensajepor alt » 26 Ago 2013, 21:19

...y que no para de hacer el friqui, el tío... :-D

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Fractales en el Dragon!

Mensajepor mcleod_ideafix » 26 Ago 2013, 22:14

¿Cuánto te tarda? Porque yo recuerdo haber hecho eso mismo con el ZX81 para probar a ver qué tal iba el Memopak HRG (un módulo de gráficos de alta resolución para ZX81)...
Imagen

Y creo que se llevó toda la noche :D
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
robcfg
Amiga 2500
Amiga 2500
Mensajes: 2148
Registrado: 07 May 2009, 15:34
Sistema Favorito: Amstrad CPC
primer_sistema: Atari 800XL/600XL
Ubicación: Estocolmo
Gracias dadas: 868 veces
Gracias recibidas: 172 veces
Contactar:

Re: Fractales en el Dragon!

Mensajepor robcfg » 27 Ago 2013, 18:44

Pues sacandolo en monocromo a 256x192, que es una resolucion parecida a la del zx81 con el pack ese (y haciendo dither de las bandas) se lleva unas 5 horas.

Tengo que ver de optimizar el algoritmo y pasarlo a ensamblador a ver que tal va.

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Fractales en el Dragon!

Mensajepor mentalthink » 27 Ago 2013, 19:59

Iba a hacer la misma pregunta del tiempo, 5h buff, esto estaría chulo saberlo con un C64 que tiene el chip customizado de gráficos, supongo que los tiempos deberian ser menores, no?¿

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Fractales en el Dragon!

Mensajepor mcleod_ideafix » 27 Ago 2013, 20:21

mentalthink escribió:Iba a hacer la misma pregunta del tiempo, 5h buff, esto estaría chulo saberlo con un C64 que tiene el chip customizado de gráficos, supongo que los tiempos deberian ser menores, no?¿

La última vez que miré, el chip gráfico del C64 no incorporaba una GPU que pudiera hacer cálculos en paralelo con la CPU, así que aunque más rápido que el ZX81 seguro, no tiene por qué ser más rápido que el Dragon :P

De hecho, de acuerdo con un benchmark que ejecuté en varios ordenadores, y en que se mide sobre todo la velocidad de cálculos en punto flotante y la velocidad de ejecución de bucles en BASIC, me da a mi que el Dragon sería más rápido que el C64 (siempre hablo de BASIC, y usando la misma resolución ambos). Más aun cuando el C64 no dispone de comandos en BASIC para poder pintar un triste punto en alta resolución en pantalla, así que a la lentitud del cálculo del conjunto de Mandelbrot en sí, únele que hay que hacer en BASIC el cálculo de la dirección de pantalla a partir de las coordenadas, y alterar la memoria con POKE de forma adecuada.

Otra cosa sería hacerlo en C/M. Ahí ya no sabría decirte quien gana.

El benchmark (pincha en ella para verla centrada, y luego en la lupa del + para verla a tamaño completo)
benchmark_saxpy_micros8bits.png
benchmark_saxpy_micros8bits.png (296.36 KiB) Visto 9438 veces
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mentalthink
Amiga 2500
Amiga 2500
Mensajes: 2840
Registrado: 11 Abr 2010, 15:06
Gracias dadas: 45 veces
Gracias recibidas: 14 veces

Re: Fractales en el Dragon!

Mensajepor mentalthink » 27 Ago 2013, 22:43

Bueno esta vez insconciente de mi hablaba en serio, no me referia a GPU ni coñas, lo que pasa que siendo un procesador específico para gráficos, por eso he supuesto que debería ser más rápido, en Basic ya vemos que no... Esto si ha alguién le sobra el tiempo y sabe de ASM de varios sistemas estaría bien por curiosidad.

Porque lo que yo entiendo de ese chip del Commodore es que en realidad la carga le va a el, y la CPU como que se queda libre de cosas... es por eso lo he pensao, pero a saber si algo que tiene que estar tanto rato calculando como que es mucho más lento...

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Fractales en el Dragon!

Mensajepor mcleod_ideafix » 27 Ago 2013, 22:55

mentalthink escribió:lo que pasa que siendo un procesador específico para gráficos, por eso he supuesto que debería ser más rápido

El VIC-II del C64 no es ningún tipo de procesador. Es un controlador gráfico muy sencillo, cuya única aceleración consiste en poder sobreimpresionar sprites en pantalla y poder desplazarla. Por lo demás, la pantalla no es más que un framebuffer almacenado en memoria. El procesador del C64 (el 6510) es quien tiene que hacer todos los cálculos para a partir de las coordenadas X,Y averiguar qué bit de qué byte de pantalla hay que encender o apagar. Igualito que, por ejemplo, lo que debe hacer el Spectrum, el Dragon o el Amstrad.

Para lo que es pintar puntos, estos equipos junto con el C64 se comportan de la misma forma, y si alguno pinta más rápido que otro, será porque puede calcular la dirección de pantalla más rápido. En BASIC lo que pasa es que el del C64 es tan pobre que no tiene comandos para pintar puntos, así que los cálculos que los demás equipos hacen en C/M en respuesta a los comandos PLOT, PSET, etc, en el C64 tienes que hacerlo tooodo en BASIC.

El MSX es cosa aparte: al tener el frame buffer en memoria no direccionable, salvo a través de IN y OUT, el cálculo de la dirección le cuesta más o menos lo mismo que a los demás, pero el acceso a memoria para encender o apagar el pixel le cuesta más que a los otros.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Habi
Dragon 32
Dragon 32
Mensajes: 27
Registrado: 29 Jul 2012, 14:04
Sistema Favorito: Amstrad PCW
primer_sistema: Spectrum +2
consola_favorita: Vectrex
Primera consola: Atari 2600
Gracias dadas: 30 veces
Gracias recibidas: 4 veces
Contactar:

Re: Fractales en el Dragon!

Mensajepor Habi » 27 Ago 2013, 22:57

robcfg escribió:Hace unos dias estaba mirando un código sencillito en Basic que se publicó hace tiempo en el CPCWiki, y me di cuenta de que programitas que representaran fractales en Dragon basicamente no hay.


Vaya, al final lo has publicado: ¡enhorabuena! =D>

Pues para continuar con el tema os voy a subir otro programa de fractales, también para Dragón, que hice en Mayo; éste dibuja una fractal llamada "curva Dragón".

xRoar.jpg
xRoar.jpg (32.33 KiB) Visto 9406 veces


Está en ensamblador, ocupa 124 bytes y tarda casi dos segundos en pintarla; el código es aún mejorable, por si alguien quiere ponerse a ello. ;)

TV-Tano.JPG
TV-Tano.JPG (52.25 KiB) Visto 9406 veces


También tengo una versión para 6309 / CoCo3 (más del doble de rápida) por si alguien la quiere para algo.

Un saludo.
Adjuntos
Fuentes y programa.zip
Fuentes y programa
(9.28 KiB) Descargado 373 veces


Volver a “Otros microordenadores”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados