Darth_Fistro
|
|
« : 10 de Marzo de 2006, 03:31:22 pm » |
|
Como estoy hoy especialmente porculero, aquí vengo con una serie de cuestiones: -estaba empezando a teclear algunos juegos de revistas (paré hace unas semanas) para luego repartirlas en plan "nostálgico msx-club". Hoy mismo he recordado estar seguro de haber visto juegos como la rana del espacio y el Karate knight pero no recuerdo dónde. Sé que están el Peras, Penalty y el Jack Exploring en la web de Konamito. Aprovecho desde aquí para pedir permiso a Jordi para su inclusión (si no está por aquí, ya le mandaré un privado anyway) -Consejo: para aumentar por ejemplo el valor de una variable, ¿es mejor: ld hl,variable inc (hl) que ld a,(variable) inc a ld (variable),a? -No he usado aún el conjunto de registros duplicados. ¿Qué utilidad tienen? -¿Dónde puedo buscar info acerca de hacer tiros parabólicos y cosas de esas? Por ejemplo, rotar la pantalla (la tabla de nombres) a partir del centro de la misma 1º a izquierda o derecha. Ese tipo de cosas. -Por último, los snippets del antiguo foro. Quisiera ver el del scroll de texto de Robsy y el de disparar una bala siguiendo una trayectoria. Es que he perdido el directorio donde lo tenía, junto con la promo del Final Lap, que no encuentro por ningún lado Y eso es todo por ahora, a las 15:31 Ya se me ocurrirán más cosas, ya...
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
jltursan
|
|
« Respuesta #1 : 10 de Marzo de 2006, 05:17:36 pm » |
|
-Consejo: para aumentar por ejemplo el valor de una variable, ¿es mejor: ld hl,variable inc (hl)
que
ld a,(variable) inc a ld (variable),a? Depende de lo que hagas después con el contenido de la variable. Si no vas a operar con él es mejor la 1ª, si vas a hacer algo con él usa la 2ª ya que lo tendrás cargado en A. -No he usado aún el conjunto de registros duplicados. ¿Qué utilidad tienen? A veces son muy útiles para salvaguardar los valores de los registros estandar sin necesidad de meter un montón de PUSH/POP. EXX es el ejemplo perfecto, te ahorras mucho trajín con la pila si lo manejas con cuidado. EX AF,AF' es el más útil, es más rápido que un PUSH y te permite conservar el valor de A (más o menos ) -¿Dónde puedo buscar info acerca de hacer tiros parabólicos y cosas de esas? Por ejemplo, rotar la pantalla (la tabla de nombres) a partir del centro de la misma 1º a izquierda o derecha. Ese tipo de cosas. Páginas de Física o matemáticas. Si buscas "tiro parabólico" te saldrán miles de páginas con las formulas de los diferentes tiros, caidas libres y demás zarandajas. Las formulas de rotación son tema matemático (el amigo Sapphire seguro que sabe de eso) y también son bastante sencillas de encontrar. Los snippets los debe conservar Jon. Si no puede publicar los dos que comentas, yo puedo meter el de la trayectoria lineal y la versión original del scroll de texto
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
SapphiRe
Visitante
|
|
« Respuesta #2 : 10 de Marzo de 2006, 05:43:55 pm » |
|
Las formulas de rotación son tema matemático (el amigo Sapphire seguro que sabe de eso) y también son bastante sencillas de encontrar.
¿Quieres hacer un rotozoom? En SC1 sería relativamente sencillo de hacer (pixelacos de 8x8, eso sí), en SC3 también se podría. Buscaré las rutinas de rotozoom que hice en su día para PC (en ensamblador, por supuesto) e intentaré hacer un mini-tutorial con snippets. Pero primero el KV2, que va avanzando
|
|
|
En línea
|
|
|
|
Darth_Fistro
|
|
« Respuesta #3 : 10 de Marzo de 2006, 05:59:04 pm » |
|
¡Gracias por las prontas respuestas! Ahí va la ración habitual: y ¿Un rotoquéeee? ¿Mande? Bueno, ahora sé que se llama así Bueno, sí, quiero rotar la pantalla tomando el centro como eje, y no píxel a píxel, sino con caracteres, o sea que si se puede hacer fácilmente en sc1, se puede hacer también en sc2 Ahora mismo estoy con tonteridas pantallescas. Creo que aún no he entendido bien las instrucciones de transferencia de bloques. Tengo la pantalla en un buffer y quiero bajarla un renglón (scroll hacia abajo). Hago lo siguiente: ld hl,PANT_BUFFER ld de,PANT_BUFFER+32 ld bc,23*32 lddr Pero sólo veo la primera línea, eso sí, va cambiando su contenido, por lo que creo que estoy mostrando toda la pantalla pasando por la misma línea. Bueno, voy a estar aquí toda la tarde, tengo muchas cosas que probar
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
Darth_Fistro
|
|
« Respuesta #4 : 10 de Marzo de 2006, 06:04:18 pm » |
|
Por cierto,la rotación a la que me refiero no sólo es de 90 o 45 grados, sino aún más precisa (aunque ahora que lo pienso, 45º me vendría muy bien). Y J.L., si puedes publicar esos snippets, porfaplís (beneplácito de los autores por delante, of course)
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
Darth_Fistro
|
|
« Respuesta #5 : 10 de Marzo de 2006, 06:05:57 pm » |
|
Pero primero el KV2, que va avanzando Nunca he hecho una pantalla en KV2, pero creo que va siendo hora de aprender.
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
jltursan
|
|
« Respuesta #6 : 10 de Marzo de 2006, 06:35:07 pm » |
|
Ahora mismo estoy con tonteridas pantallescas. Creo que aún no he entendido bien las instrucciones de transferencia de bloques. Tengo la pantalla en un buffer y quiero bajarla un renglón (scroll hacia abajo). Hago lo siguiente:
ld hl,PANT_BUFFER ld de,PANT_BUFFER+32 ld bc,23*32 lddr Ah, tate, es que eso te hará cosas un poco raras. Lo que tendrías que hacer es algo así como : ld hl,PANT_BUFFER+22*32+31 ld de,PANT_BUFFER+23*32+31 ld bc,23*32 lddr Lo he hecho de corrido; pero creo que está bien
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
Darth_Fistro
|
|
« Respuesta #7 : 10 de Marzo de 2006, 06:59:28 pm » |
|
Asias Sigue igual, pero lo hice usando un buffer intermedio donde colgar el desplazamiento y de ahí vuelta al buffer original. No es nada elegante, pero acabo de leer el easymbler y creo que lo que pido no se puede hacer (si no me equivoco) Otra cosilla, ¿el tope en ensamblador estaría en la 61568?
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
MsxKun
|
|
« Respuesta #8 : 10 de Marzo de 2006, 08:11:53 pm » |
|
Otra cosilla, ¿el tope en ensamblador estaría en la 61568?
Toma, por usar decimales! Por cierto, q no recordaba q existia la instruccion lddr
|
|
|
En línea
|
-- She Bops!
|
|
|
jltursan
|
|
« Respuesta #9 : 10 de Marzo de 2006, 08:50:19 pm » |
|
Sigue igual, pero lo hice usando un buffer intermedio donde colgar el desplazamiento y de ahí vuelta al buffer original. No se si te pillo; pero si tienes la tabla de nombres en un buffer (PANT_BUFFER), haces ese LDDR y luego vuelcas a VRAM debería verse el scroll. El LDDR va restando 1 a HL,DE y BC, por eso el que pusiste no debía chutar, porque HL se perdía fuera del buffer nada más empezar. ¡Tu cuenta, hombre, cuenta, que por el Goonies II hacemos cualquier cosa : scroll abajo, arriba y de lado! Otra cosilla, ¿el tope en ensamblador estaría en la 61568? Yo también me uno a la tunda, que se que le gusta El límite en teoría te lo da HIMEM ($FC4A). Si se trata de una ROM (y no inicializas el disco ) tienes hasta $F37F para tí; descontando, claro está, lo que destines a pila y que situarás hábilmente con un LD SP al principio del programa. De todas formas es mejor si no subes tanto y te metes lo menos posible por las $Fxxx
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
Darth_Fistro
|
|
« Respuesta #10 : 11 de Marzo de 2006, 10:44:42 am » |
|
No se si te pillo; pero si tienes la tabla de nombres en un buffer (PANT_BUFFER), haces ese LDDR y luego vuelcas a VRAM debería verse el scroll. El LDDR va restando 1 a HL,DE y BC,
Tengo que probar otra vez entonces ¡Tu cuenta, hombre, cuenta, que por el Goonies II hacemos cualquier cosa : scroll abajo, arriba y de lado! No es para eso ni para scroll multidireccional, es una prueba tonta que estaba haciendo. Lo he hecho con un buffer intermedio, pero tengo que probarlo así Yo también me uno a la tunda, que se que le gusta Mira que sois... ¿contáis los polvos en hexadecimal (bueno, sí, porque para contar 2 da lo mismo uno que otro)? Pero, ¿y el sueldo? ¿y lo que cuesta un MSX2? ¿Para qué esa manía del hexadecimal? Ahora tengo que usar la calculadora del windows para hacerme una idea de esas cifras situarás hábilmente con un LD SP al principio del program
¿Qué utilidad tiene cambiar la dirección de la pila? (Lo que aprende uno en un día) Añadido: me autorespondo: para recuperarla si hay un error en el programa.
|
|
« Última modificación: 11 de Marzo de 2006, 10:46:26 am por Darth_Fistro »
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
jltursan
|
|
« Respuesta #11 : 11 de Marzo de 2006, 11:22:41 am » |
|
¿Qué utilidad tiene cambiar la dirección de la pila? (Lo que aprende uno en un día) Pues por ejemplo, si la pila está en la parte alta de la memoria cuando arranca tu ROM y aprovechas hasta el último byte de RAM, fijo que te la cargas y el programilla acabaría haciendo cosas raras. Si la resituas la tendrás perfectamente controlada y sabrás con seguridad a partir de que zona no puedes meter mano
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
jltursan
|
|
« Respuesta #12 : 12 de Marzo de 2006, 09:18:51 pm » |
|
-Por último, los snippets del antiguo foro. Quisiera ver el del scroll de texto de Robsy y el de disparar una bala siguiendo una trayectoria. Es que he perdido el directorio donde lo tenía, junto con la promo del Final Lap, que no encuentro por ningún lado Pues como ñapa y hasta que se repongan los originales, ahí tienes los snippets. El de scroll tenía un error que ahora mismo no recuerdo exactamente (un problema de desbordamiento de BUFFER); pero como la versión corregida no la guardo no he podido colgarla
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
Darth_Fistro
|
|
« Respuesta #13 : 13 de Marzo de 2006, 03:27:58 pm » |
|
Gracias, JL, voy ahora mismo a verlas Sigo con el tema asm con tu permiso: -Leyendo una msx-extra encuentro un artículo donde se menciona que los registros índice ocupan mucho y son lentos, y que es mejor usar hl+desplazamiento. En la realidad me encuentro con que a la hora de consultar tablas es muy cómodo, a no ser que para usar hl+desplazamiento, hay que copiar el trozo de la tabla en un buffer y no sé si compensa. ¿Deslíz de los de la msx-extra? -Ahora me estoy dando cuenta del valor de un puñetero byte, que parece ahora que valen su peso virtual en oro Tengo que depurar los programas porque ahora son un batiburrillo de bugs y bytes que, como funcionan, uno se queda maravillado, pero la verdad es que hay derroches por todos lados. ¡Gracias de nuevo!
|
|
|
En línea
|
MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
|
|
|
|