ZX Dandanator! Mini

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.
Responder
Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: ZX Dandanator Mini! Beta

Mensaje por antoniovillena »

dandare escribió: Antonio, con tu permiso, me quedo con la idea de "gastar" dos bytes más de la pila, que reduzco bastante el tamaño del código. Voy además a darle una vuelta a cargar antes el AF (ahora lo cargo al final del todo), a ver si me ahorro hasta esos dos bytes como tú en el v4.
Por supuesto que tienes mi permiso, faltaría más.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: ZX Dandanator Mini! Beta

Mensaje por dandare »

antoniovillena escribió:Por supuesto que tienes mi permiso, faltaría más.
Gracias Antonio :-] ,

He estado revisando tu código (SNA2Kart) a ver cómo lo habías hecho y me surgen algunas dudas. Si te parece oportuno, te agradecería que me las aclararas un poco

Para devolver el control al juego SNA, haces un JP (HL) después de haber cargado el SP en HL . correcto?
  • - Pierdes el valor de HL del SNA?
    - No veo dónde cargas el registro R. Está por algún lado?
    - Veo que estableces siempre el modo IM2, ¿es así?
    - Cuándo y dónde señalizas para cargar la ROM del 48k, tampoco lo veo ::?
    - como vuelves con JP, no se carga el contenido de IFF2 a IFF1. Esto no afecta?
En fin, que lo más probable es que no me esté enterando bien del código y por eso me surgen tantas dudas :| .
Imagen
Imagen
Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: ZX Dandanator Mini! Beta

Mensaje por antoniovillena »

No me importaría ayudarte cuando publiques tus fuentes. Sé que es muy desconfiado por mi parte, pero ya he tenido malas experiencias en el pasado.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: ZX Dandanator Mini! Beta

Mensaje por dandare »

Entendido Antonio, gracias
Imagen
Imagen
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: ZX Dandanator! Mini

Mensaje por dandare »

antoniovillena escribió:No me importaría ayudarte cuando publiques tus fuentes. Sé que es muy desconfiado por mi parte, pero ya he tenido malas experiencias en el pasado.
Hola, añado mis fuentes. Seguro que son optimizables porque yo de Z80 se poco, pero funcionan correctamente.

Disculpa que me quedé algo despistado con el comentario. La verdad es que, como he dicho en varias ocasiones, soy muy nuevo en este foro y en este mundillo en general y carezco de esas experiencias negativas que comentas. Por otro lado, lamento si las preguntas que he estado haciendo no eran adecuadas o has interpretado que eran para copiarte algo (que supongo que esas son tus malas experiencias). Nada más lejos de la realidad en este caso, me interesaba por tu código y ponía en común contigo algunas dudas, ideas, enfoques, de manera pública y abierta para que quedara constancia en el foro por si a alguien le pudiera interesar ahora o más adelante. En realidad no estaba buscando que desatascaras algo o me ayudaras a acabar algo, si no que era con un interés más "académico", por aprender de los que saben, vamos :)
En mi breve participación en el foro he sido siempre muy transparente con la información, código, esquemas, hasta el punto de que Flopping me ha "abroncado" un poco por ponerla tan a la vista :|. Entiendo que vuestra experiencias pasadas os llevan a ser algo más cautos, acepto vuestro criterio y lo respeto.

Expuesto el tema, yo seguiré preguntando, porque soy muy preguntón :)) y, con toda la tranquilidad del mundo, me podéis mandar a paseo cuando queráis.

y sin más dilación, el código (que se ve algo regular al cortar y pegar):

Los fuentes Z80 definitivos estarán disponibles antes de que se envíen los kits.
Última edición por dandare el 03 Jun 2016, 20:31, editado 2 veces en total.
Imagen
Imagen
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9971
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 122 times
Contactar:

Re: ZX Dandanator! Mini

Mensaje por flopping »

Supongo que antoniovillena, te ha hecho el comentario, no por que copies su codigo, que a el particularmente no creo que le importe, si no, por que ha ocurrido mas de una vez, que hay gente que pregunta y saca cosas que en principio iban a ser "publicas", apoyandose en la ayuda de los demas y de repente, ya no es publico el tema y se dedican a vender esos conocimientos en forma de cacharro o demas.

Como es evidente no es el caso tuyo, pero entenderas que algunos usuarios sean reticentes de facilitar sus conocimientos, sin tener muestras de una buena fe, e insisto, no es por ti, es por norma general y en base a malas experiencias, no creo que nadie se vaya a hacer rico vendiendo cacharros para spectrum o demas sitemas, pero si que deja mal sabor de boca ayudar a alguien y ver que luego no pone a disposicion publica esa ayuda, si no que la utiliza para beneficio propio.

Por eso te decia que publiques tus cosas de forma que solo sean visibles por nuestros usuarios, asi evitaremos que cualquiera pueda beneficiarse del trabajo de los demas, eso no quita que algun usuario de este foro, use esos conocimientos para su propio beneficio, que tambien ha ocurrido, pero por lo menos ya sabemos con quien nos jugamos los cuartos y a quien no debemos de ayudar desinteresadamente.

En fin es triste decirlo, pero no todo el mundo es tan altruista como nos pensamos, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: ZX Dandanator! Mini

Mensaje por dandare »

Gracias Flopping, entendido perfectamente. Soy tan inocente en estos temas que ni se me había ocurrido el escenario que dices de pedir información y luego no publicarla para vender un cacharro :|
La única razón que se me podía ocurrir para no publicar algo es el "pudor" porque sea un poco chapucerillo, como seguro que es el código del Z80 que he puesto arriba :)
Imagen
Imagen
Avatar de Usuario
merlinkv
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 6370
Registrado: 06 Abr 2015, 23:08
Ubicación: Madrid / Europa del Este
Has thanked: 117 times
Been thanked: 324 times
Contactar:

Re: ZX Dandanator! Mini

Mensaje por merlinkv »

Lo cierto es que es una pena que haya un mogollón de oportunistas que piensan únicamente en hacer dinero a costa de lo que sea y, sobre todo, a costa del esfuerzo de otros. Pero, por desgracia, hasta en los curros pasa lo mismo ... un compañero en el que confías te roba las ideas, diseños, etc. y lo vende como producto de "su genialidad".... Te la juegan y a partir de ahí, te vuelves desconfiado, a mí me ocurrió en el pasado y la verdad es que se hace dificil volver a confiar.

Yo no tengo ni idea de como programar o diseñar muchísimas de las cosas que hacéis para "nuestros viejos cacharros". Pero gracias a vosotros tengo la suerte de aprender muchas cosas útiles y poder comprar periféricos que son casi imprescindibles y eran impensables en la época ... en fin, solo espero que no nos salga ningún сукин сын que se aproveche de vuestro esfuerzo y nos fastidie a todos.
No sé como será la tercera Guerra Mundial. Pero sí sé como será la cuarta: Con palos y piedras.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
Avatar de Usuario
antoniovillena
Demonio segundo orden
Demonio segundo orden
Mensajes: 1596
Registrado: 02 Abr 2013, 19:06
Been thanked: 1 time

Re: ZX Dandanator Mini! Beta

Mensaje por antoniovillena »

dandare escribió: He estado revisando tu código (SNA2Kart) a ver cómo lo habías hecho y me surgen algunas dudas. Si te parece oportuno, te agradecería que me las aclararas un poco

Para devolver el control al juego SNA, haces un JP (HL) después de haber cargado el SP en HL . correcto?
  • - Pierdes el valor de HL del SNA?
Claro. Después del salto JP (HL) hay 9 bytes de código. Este código es generado por genMenu.c, por eso no se ve en los fuentes del .asm. Tendrías que usar un debuger para verlo, es algo como:

Código: Seleccionar todo

        ld      hl, xxxx
        ld      sp, xxxx
        di/ei
        jr      +33
Donde xxxx son valores extraídos del snapshot (parte de registros), y di/ei se carga en función del iff que indicaba el snapshot. Como cada snapshot necesita 35 bytes extra para completar la ROM, que es lo que ocupa cada entrada en la tabla, al ser 10 juegos necesitamos 350 bytes extra de tabla en la ROM 0. El primer snapshot estaría en ROM 1/2/3, el segundo en ROM 4/5/6, etc... Entonces el salto relativo jr +33 salta justo al jr de la siguiente entrada de la tabla, que tendrá otro salto igual, así hasta llegar al décimo este décimo tiene un jr +0 y la instrucción que viene después es un "jp start1", (start1 apunta a $000F) donde se encuentran estas instrucciones:

Código: Seleccionar todo

start1  ld      a, $9f
        ld      (0), a
Lo que hacen es paginar la ROM 31, que es donde está la ROM del 48K parcheada. Como ves, para hacer esta paginación he necesitado el registro A, con lo cual requiero 2 bytes extra de la pila del snapshot para almacenarlo. Tras estas 2 instrucciones acabamos con PC=$0013 en la ROM parcheada, que contendría estas 2 instrucciones:

Código: Seleccionar todo

        pop     af
        ret
Es decir, recupero de la pila AF y PC, con lo cual salto directamente al juego (primera instrucción del snapshot).
dandare escribió: - No veo dónde cargas el registro R. Está por algún lado?
No. Se puede cargar, y no sería muy complicado prever el valor contando el número de instrucciones, pero raramente lo usan los juegos así que no merece la pena cargarlo.
dandare escribió: - Veo que estableces siempre el modo IM2, ¿es así?
No. En spectrum está también el modo IM 0/1, pero por el propio hardware son exactamente el mismo, con lo que hay 2 modos. Al principio del código fuerzo el IM 1, y tras el primer POP, donde extraigo el registro I y el modo IM hago lo siguiente:

Código: Seleccionar todo

        pop     hl
        ld      a, l
        ld      i, a
        dec     h
        jr      nz, gamen6
        im      2
gamen6  
Vamos, que el IM 2 sólo se produce cuando h vale 1. Cuando h vale 0 se queda el IM 1 que estaba.
dandare escribió: - Cuándo y dónde señalizas para cargar la ROM del 48k, tampoco lo veo ::?
Pues es el último paso de cargar un snapshot, como te he explicado antes. Y también se puede elegir como última opción del menú, en tal caso el código es este:

Código: Seleccionar todo

        ld      a, $9f
        ld      bc, 0
        push    bc
        jp      $fffe
Y en $fffe continúan estas instrucciones:

Código: Seleccionar todo

    ld    (bc), a
    ret
La primera provoca la paginación (cualquier escritura a ROM lo hace) y la segunda salta a $0000, lo cual provoca un reset e inicializa la ROM.
dandare escribió: - como vuelves con JP, no se carga el contenido de IFF2 a IFF1. Esto no afecta?
[/list]

El contenido de IFF2 no lo restauro. Esto sólo afecta si el snapshot se produce estando dentro de una NMI, lo cual es bastante improbable.
dandare escribió: En fin, que lo más probable es que no me esté enterando bien del código y por eso me surgen tantas dudas :| .
Te sugiero que recortes los primeros 16K de la ROM, cojas un emulador y lo depures. No te funcionará, ya que el emulador no implementa esta paginación, pero al menos verás la secuencia de ejecución completa.

Respecto a mi comentario sobre malas experiencias, lo digo por gente que pide ayuda en el foro para su proyecto personal, pero después no libera su código. Lo cual, independientemente de que lo venda o no, no se aprovecha en el futuro porque es un proyecto cerrado.
Avatar de Usuario
dandare
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3718
Registrado: 09 Feb 2016, 15:09
Ubicación: I Register
Been thanked: 6 times

Re: ZX Dandanator! Mini

Mensaje por dandare »

Súper clarito todo Antonio, gracias. Como se nota que estas muy suelto con el Z80
Claro, me volvía loco al no ver el código que generas desde C y no viendo el "truco" de la ROM original parcheada. :)

Entendida y compartida también la motivación del código abierto. Un saludo!
Imagen
Imagen
Responder

Volver a “Proyectos de hardware abiertos”