Probando el TZXDuino [y CASDuino, MaxDuino,...]

Proyectos de hardware con sus esquemáticos y si llevan software en fuente

Moderadores: cacharreo, Fundadores

Reglas del Foro
Aquí solo tienen cabida proyectos de hardware que incluyan siempre al menos sus esquemáticos para poder reproducirlos si llevan componentes electrónicos, y si es posible los ficheros del programa en que se hacen, los diseños de las placas, los gerber, etc. Si llevan algún tipo de software asociado debe estar diponible el código fuente

Para los que no cumplen estas condiciones se debe postear en el foro de proyectos generales.
Avatar de Usuario
rcmolina
Demonio tercer orden
Demonio tercer orden
Mensajes: 515
Registrado: 07 Feb 2016, 10:27
Been thanked: 7 times

Re: Probando el TZXDuino

Mensaje por rcmolina »

@acf76es, por un lado había comentado en la rutina wave2 un trozo de código y no me dí cuenta que no había incrementado la posición del buffer para el byte bajo:

wbuffer[pos][workingBuffer] = highByte(workingPeriod - 1);
wbuffer[pos+1][workingBuffer] = lowByte(workingPeriod - 1);

Por otro lado, he cambiado la manera de extraer los bytes alto y bajo para guardarlos en el buffer, ahora uso rutinas standard highByte() y lowByte()

Y finalmente, descomentar el código comentado que había dejado de funcionar en la misma rutina wave2()
Avatar de Usuario
acf76es
Demonio tercer orden
Demonio tercer orden
Mensajes: 829
Registrado: 03 Nov 2014, 22:48
Ubicación: Cantabria
Has thanked: 1 time
Been thanked: 39 times

Re: Probando el TZXDuino

Mensaje por acf76es »

gracias por la info del bug rafa, es por esa zona la que realicé el ajuste de las pausas, hice una semicagada en relación a que las pausas, lo que hice fue que fueran para todos los bloques.

por otro lado, puedo confirmar que ahora funciona por la parte de Spectrum perfectamente:

probado XEVIOUS, KNIGTHLORE y GRYZOR (speedlock 7 creo recordar) con EXITO
tambien he probado un .tap y perfecto.

faltaría de probar las pausas de Amstrad pero esta ha de esperar otro dia.

Un saludo.
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 47 times

Re: Probando el TZXDuino

Mensaje por Spirax »

muchas gracias rcmolina.
esta semama estoy fuera y no lo puedo probar, pero la semana que viene si no lo han probado con spectrum, prometo probarlo y aportar otra sugerencia de cambio para las oled.....

el cambio propuesto hoy serviria para eleminar el parpadeo producido en el scroll por borrar y reescribir la linea.
si en vez de borrar añadimos espacios al final de la cadena a imprimir hasta completar la linea se elimina el parpadeo....
he modificado la funcion printtext añadiendo unas lineas y comentando las lineas que imprimen los espacios...
no tengo mucha experiencia programando solo lo justico, a lo mejor se puede mejorar mas pero la idea es esa no borrar la linea con espacios antes de imprimir para evitar el parpadeo.
si lo consideras oportuno puedes añadirlo a tu codigo
solo lo he probado con la oled, pero imagino que con la lcd funcionara igual.


edito:
ostras que pasa con los corchetes que no se ven en el codigo del post?
como se pega codigo desde el movil?
edito 2:
ya lo encontre borro el codigo fe este post que estaba mal y se ve en el post siguiente bien.
Última edición por Spirax el 14 Nov 2017, 01:36, editado 1 vez en total.
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 47 times

Re: Probando el TZXDuino

Mensaje por Spirax »

Código: Seleccionar todo

void printtext(char* text, int l) {  //Print text to screen. 
  char outtext[17]="";
  for(int i=0;i<16;i++)
    {
      if(i<strlen(text))  outtext[i]=text[i];
      else  outtext[i]=0x20;
    }
  text = outtext;
  
  
  #ifdef LCDSCREEN16x2
   // lcd.setCursor(0,l);
    // lcd.print(F("                    "));
    lcd.setCursor(0,l);
    lcd.print(text);
  #endif

   #ifdef OLED1306
      // sendStrXY("                    ",0,l);
      sendStrXY(text,0,l);
  #endif
Avatar de Usuario
rcmolina
Demonio tercer orden
Demonio tercer orden
Mensajes: 515
Registrado: 07 Feb 2016, 10:27
Been thanked: 7 times

Re: Probando el TZXDuino

Mensaje por rcmolina »

@Spirax, reconozco que esta parte no está muy currada, añadía estas líneas porque tras utilizar el menú se quedaba porquería.
Lo voy a modificar un poco teniendo en cuenta tus sugerencias. Gracias!.

;)
Avatar de Usuario
rcmolina
Demonio tercer orden
Demonio tercer orden
Mensajes: 515
Registrado: 07 Feb 2016, 10:27
Been thanked: 7 times

Re: Probando el TZXDuino

Mensaje por rcmolina »

+ Corregido el parpadeo del scroll, gracias @Spirax ;)

http://filecloud.io/dy29nj0ra
Última edición por rcmolina el 19 Nov 2017, 14:16, editado 5 veces en total.
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 47 times

Re: Probando el TZXDuino

Mensaje por Spirax »

que rapidez y eficacia. jjajaja
muchas gracias.

la semana que viene ya propongo un segundo cambio.
aunque este abra que ver como implementarlo ya que yo no uso el menu y me he desactivado la linea de estado del oled que se imprime en la linea 3.

los primeros cambios que hice fue que en vez de imprimir en la linea 0 y 1.
lo imprima en las lineas 0 y 2.
preguntareis porque.
porque las letras son muy pequeñas, para separalas y para centrarlo todo en la pantalla.
la semana que viene hago un superpost y explico los cambios que he echo yo para mi uso personal. por si se ve interesante para incluirlo.
lo dicho muchas gracias a rcmolina.
ah y si me animo os cuelgo dos foticos de como me han quedado montados. tengo uno con lcd y estoy terminando otro con oled. jejeje
Avatar de Usuario
rcmolina
Demonio tercer orden
Demonio tercer orden
Mensajes: 515
Registrado: 07 Feb 2016, 10:27
Been thanked: 7 times

Re: Probando el TZXDuino

Mensaje por rcmolina »

@Spirax, lo de la letra tiene una explicación .. es pura matemática. Me explico:

-La letra 8x8 es la que menos ocupa 96 x 8 =768 bytes , si pasamos a la de 16x8 que se usa en pantalla lcd pues doblamos necesidades y perdemos 1K (entre un 3-4%).
Si hay interés se puede cargar la fuente en el sketch y p.e. dejar una configuración de usuario para usar al gusto.

-He aprovechado esta mañana y he hecho algún ajuste más aparte de éste tras probar las cargas turbo. Al final el bug era bastante tonto, un "+" en vez de un OR "|".

-Inicialmente pensé en dos líneas en pantalla (y lo hice, alguno sabe que uso gafas y mi vista sufre para soldar :~( ), pero luego me pareció más interesante disponer de una línea de estado. Lo dicho se podría dejar configurable o incluso desde el propio menú ¿? No parece complicado.

-Lo de las fotos, siempre bienvenidas, soy un poco portera y me gusta ver los cacharritos del resto, igual sacamos alguna idea..

Gracias a tí por tus comentarios. Como pasa muchas veces me centré en la pantalla Oled (no imprimía porque faltaba un puñetero delay), y pasas de los pequeños detalles.
B-)
Avatar de Usuario
Spirax !Sinclair 1
Demonio tercer orden
Demonio tercer orden
Mensajes: 715
Registrado: 09 Oct 2017, 17:03
Ubicación: Leganes (Madrid)
Has thanked: 24 times
Been thanked: 47 times

Re: Probando el TZXDuino

Mensaje por Spirax »

jajaja.
el cambio que tengo echo es exactamento eso.
uso la fuente de 8x8 para no gastar mas memoria pero duplico los bit para usarlos 2 veces y que use dos lineas y quede de 8x16.
osea el bit 1 lo uso el el bit 1&2, el bit 2 en el 3&4, el bit 3 en 5&6 y el bit 4 en los bits 7&8 de la primera linea.
el bit 5 en los bits 1&2 de la segunda linea, el bit 6 en los bits 3&4, el bit 7 en los bits 5&6 y el bit 8 en los bits 7&8 de la segunda linea.
por que uso dos lineas de texto.
la linea 0 se imprime en la linea 0 y 1
y la linea 2 que se imprime en las lineas 2 y 3 del oled.

de echo como uso bucles para descomponer los bits, la impresion en letra grande es un pelin mas lenta por lo que el parpadeo era muy visible, por eso tambien busque la manera de quitarlo, jejeje.
como no me atrevi a interferir en los tiempos de carga, solo modifique la funcion sendstrXY ya que cuando se esta reproducinedo se una la funcion sendstr para los contadores.
me queda mu chulo ver el playing en letra grande en linea 0 y 1 y los contadores en pequeñito solo en la linea 0.
y el nombre del juego en grande con scroll en las lineas 2&3.
al no usar la letra grande mientras se reproduce no se alteran los tiempos por el posible retraso que pudiera haber introducido al descomponer cada letra en dos bytes.

el lunes sin falta te mando el codigo para que lo eches un vistazo y ves si interesa implementarlo. jejeje
a lo mejor se puede crear una segunda funcion senstrXY2 y usarla opcionalmente...

ya que solo lo he probado con una oled 128x32. y lo tengo encho en el tzxduino, pero sera igual para el maxduino. creo.
saludos.
Avatar de Usuario
rcmolina
Demonio tercer orden
Demonio tercer orden
Mensajes: 515
Registrado: 07 Feb 2016, 10:27
Been thanked: 7 times

Re: Probando el TZXDuino

Mensaje por rcmolina »

@Spirax, me tienes confundido :D menos mal que no sabias programar .. lo tuyo es de traca .. en dos días ya has bajado a código máquina y a bits :))

Venga, esas fotillos, a ver si pierden mucha resolución las letras :o
Responder

Volver a “Proyectos de hardware abiertos”