TinySprite codigo

Page 1/2
| 2

Par lolohardware

Supporter (6)

Portrait de lolohardware

01-02-2016, 12:32

hola!

Pues después de muuuuuchoooos años me ha vuelto a picar el gusanillo de hacer cosillas con el msx, recordando mis tiempos con el basic me he puesto a hacer alguna cosilla y resulta que no me acuerdo de muchas cosas....
También me he puesto con el tema del asembler, empecé un tutorial de Pere Vila, pero lo dejó en lo mejor ..... y mientras acabo de entender y asimilar todo pues voy a refrescar todo esto haciendo algo en basic.

Como ahora hay herramientas magnificas para facilitar la cosa, me puse con el editor TinySprite ha crear algunas cosillas.
Pero me encuentro que no se usar el código que genera:

140 DATA *
10000 REM -- LOAD SPRITES
10010 S=BASE(9)
10020 READ R$: IF R$="*" THEN RETURN ELSE VPOKE S,VAL(R$):S=S+1:GOTO 10020

(he omitido los datas de los sprites)
con esto se supone que leo los datos del sprite, previamente desde un gosub y vuelve.
pero ahora como hago el PUT SPRITE ?? no se el numero de sprite etc.

la verdad es que en mis tiempos no dominaba el tema del VPOKE etc... era todo mas artesanal...

alguien me puede echar un cable??
Gracias!!!

!login ou Inscrivez-vous pour poster

Par cybernoid

Rookie (19)

Portrait de cybernoid

01-02-2016, 13:44

Hola,

Yo también estoy tela de oxidado, pero a ver si no me equivoco... si me equivoco ya me corregirán los masters !! Smile

Los define en orden en el que los hayas diseñado, el primer sprite sera el 1 el segundo el 2 etc, etc.

Base(9) si no recuerdo mal es el la posición donde el MSX almacena los patrones de los sprites, por lo tanto según el código BASIC que pegas los va definiendo según el orden en el que los diseñas.

Saludos,

Par erpirao

Paragon (1334)

Portrait de erpirao

01-02-2016, 17:08

si no recuerdo mal, tenías que difinir el sprite con "SPRITE(x)=a$", asi defines el sprite (1) como uno
put sprite numerosprite (x,y),color,plano (un sprite por plano)

Par jrcp_kun

Paragon (1410)

Portrait de jrcp_kun

14-02-2016, 20:40

lo primero saber si el sprite es 8x8 o lo amplias a 16x16.
luego haz como dice erpirao .

en CM si necesitas ayuda pon aqui el codigo que tb es facil.

Par yodh

Champion (475)

Portrait de yodh

14-02-2016, 21:42

El capítulo del funcionamiento de los VPOKE no sé si me lo pasé sin leer ya que me parecía complicado o en ese momento no lo entendía o es que ni tan siquiera llegué a esas páginas... sea como sea me gustaría saber jrcp_kun (o quien quiera contestar Big smile ), si programando con VPOKEs todo es ´como´ más directo, a ver si me explico: pokeas directamente en las direcciones finales (el problema está en que se tiene que tener claro dónde están esas direcciones etc.). También tenía entendido que haciendo la programación por ese sistema se conseguía más velocidad... pero ya digo que no tengo mucha idea de eso.

Con respecto a las diferentes versiones de los SPRITES del MSX... yo empecé haciendo sprites ´monocolor´ en el SVI-728, luego vi que se podía cambiar cada línea horizontal de cada sprite... y ahí me quedé (no sé hacer más). Ahora compruebo que se puede cambiar cada punto individualmente ¡fantástico! El TinySprite me lo he mirado un poco por encima. A ver si tengo tiempo y lo hago más a fondo. Smile

Par jrcp_kun

Paragon (1410)

Portrait de jrcp_kun

19-02-2016, 21:56

enviame un privado con lo que quieres hacer y te ayudo
con vpokes puedes hacer todo.
sabes donde estan las namtbl, clrtbl, sprtbl ,etc y el modo de pantalla que quieres usar y es directo.

Par lolohardware

Supporter (6)

Portrait de lolohardware

25-02-2016, 18:12

Hola, no se como enviarte un privado..... no encuentro donde, o igual no puedo por ser nuevo ?

Par yodh

Champion (475)

Portrait de yodh

29-02-2016, 00:40

Pues todas las herramientas que se tengan para tener o conseguir más velocidad en los programas son bienvenidas. Yo para lo que pretendo hacer con el juego Cavernator me es suficiente (de momento), con lo que sé (de basic). De todas formas sería interesante saber qué manual, libro, sitio de internet etecé es el más completo y fácil de leer sobre la programación de VPOKES, para que en el momento que se tenga un poco de tiempo libre echarle un ojo.

En mi caso, los VPOKES tendrían que aprovechar las nuevas características del MSX2... creo recordar que yo tengo algún libro que explican los VPOKES (unas pocas páginas), pero todo es para la primera generación.
Gracias jrcp_kun Smile

Par Jose E. Robayo

Supporter (15)

Portrait de Jose E. Robayo

05-03-2016, 11:49

yo lo estoy intentando pero no me sale... he usado el codigo de tinysprite, pero al intentar poner el sprite en screen 4, no sale, yo creo que la direccion de ver los sprites es correcta, pero ya estoy loco, me podeis ayudar?

10 ' --- Slot 0
20 ' color 15
30 DATA FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
40 DATA FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
50 DATA *

100 SCREEN 4
110 VPOKE 7680,50
120 VPOKE 7681,50
130 VPOKE 7882,0
290 GOTO 290

10000 REM -- LOAD SPRITES
10010 S=BASE(9)
10020 READ R$: IF R$="*" THEN RETURN ELSE VPOKE S,VAL("&H"+R$):S=S+1:GOTO 10020

Par arnold_m

Master (173)

Portrait de arnold_m

05-03-2016, 19:25

Quizás hayas olvidado poner un GOSUB para para cargar los sprites:

140 GOSUB 10000

En screen 4 y siguientes cada linea de un sprite puede tener su proprio color.
Los colores son leídos de una tabla de 512 bytes antes la tabla con las coordinadas y los números de los sprites.
Si hay ceros en aquella tabla el sprite es transparente, o sea invisible.
Puedes rellenar una parte de la tabla con colores de sprites así:

150 GOSUB 11000
11000 REM COLOR SPRITES
11010 C=BASE(23)-512
11020 FOR L=0 TO 7: VPOKE C+L, 15-L:NEXT L
11030 RETURN

Par mohai

Paragon (1031)

Portrait de mohai

14-09-2016, 20:43

Voy a resucitar este hilo y echar un poco de luz.
Para usar el código que genera TinySprite (que por cierto, nunca he usado), tendreis que poner el modo de pantalla SCREEN antes de definir los sprites.
Si cambias de SCREEN despues de definir los sprites, se perderán
Por eso se usa el comando BASE, para que la rutina sea válida en cualquier SCREEN.
Lo de definir sprites usando la instrucciones SPRITE$ o VPOKEs es cuestión de gustos. Supongo que con VPOKEs la rutina es mas rápida.
También se podrían poner los sprites en pantalla usando los VPOKEs. Supongo que el código será mas rápido pero menos vistoso.
El comando para poner los sprites por pantalla es PUT SPRITE. Por ejemplo:

PUT SPRITE 0,(128,127),11,1

Recordar que el número del final (que es opcional) es el patrón de sprite que hayamos definido antes. Si se omite, se toma el mismo del plano de sprite que estemos mostrando.
Esto es útil si queremos mostrar varios planos de sprite con el mismo patrón.
Digo esto último, porque a menudo se nos olvida este parámetro y creo que es muy útil.

Para las dudas, te recomendaría que miraras algún manual de MSX BASIC. Personalmente creo que los de Mitsubishi son los mejores.

salu2

Page 1/2
| 2