tinysprite

Página 1/3
| 2 | 3

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

22-01-2015, 22:03

he realizado un sprite que usa los 4 slots con diferentes colores y el tiny sprite me define un código o varios según le pida.
como reproduzco eso?? no hay rutina como en msx1.

msx2
!palette
FFFFFF,000000,21C842,FF2424,2448FF,7D76FC,FFB6B6,42EBF5,FC5554,FF7978,D4C154,6D0000,B64824,C95BBA,CCCCCC,FFFFFF
#Slot 0
................
............1111
..........113333
........11333333
.......1333333FF
......13333BBFFF
.....13331111111
.....13313333333
.....11111111111
.....1611166F166
....16661666F166
....1C661666FF66
.....1CC66661666
......1166111CCC
.......1C6611111
.......11CC66111
#Slot 1
................
1...............
31..............
331.............
3331............
FB31............
11131...........
333131..........
111111..........
1F61161.........
1F61661.........
FF616C1.........
6166C1..........
C1161...........
116C1...........
66C1............
#Slot 2
......133111CCCC
.....13333FFF...
.....1333FFFF333
.....13331FF1133
......1114114411
.111111444777441
1BEEEE141177AAA1
1BBBBB11447ABBB1
1E11111447BBBBB1
1F11111111BBBBBB
1E111111111BBBBB
11111EEEEE1BFFFF
.1111F11111F1111
....1E11111F1111
....111111133333
.....11111.11111
#Slot 3
C1131...........
133331..........
3FFF331.........
1FFFF31.........
11FF11111.......
1414711EE1......
14AAA71BB1......
14BBBA11111.....
11BBB1111111....
11BBBB1EEEE1....
11FFFF111111....
11BBBBF11111....
33BBB1F11111....
133333.1111.....
311111..........
1...............

o sino asi

; --- Slot 0
; mask 0
DB $00,$00,$00,$00,$00,$00,$03,$03
DB $07,$00,$00,$04,$03,$00,$00,$00
DB $00,$0F,$0F,$3F,$03,$1F,$80,$7F
DB $FF,$08,$08,$0C,$00,$07,$80,$60
; attr 0
DB $00,$01,$02,$02,$0C,$0B,$02,$02
DB $01,$08,$08,$0C,$0C,$0C,$0C,$0C
; mask 1
DB $00,$00,$00,$00,$00,$00,$07,$07
DB $00,$02,$07,$03,$00,$00,$00,$00
DB $00,$00,$3F,$FF,$FF,$07,$FF,$FF
DB $00,$3B,$7B,$7F,$F7,$C0,$60,$18
; attr 1
DB $00,$00,$41,$41,$42,$44,$41,$41
DB $00,$46,$46,$46,$46,$46,$46,$46
; mask 2
DB $00,$00,$00,$00,$01,$01,$00,$00
DB $00,$05,$08,$08,$04,$03,$01,$01
DB $00,$00,$00,$00,$FF,$E7,$00,$00
DB $00,$CC,$8C,$8C,$08,$38,$1F,$87
; attr 2
DB $00,$00,$00,$00,$41,$42,$00,$00
DB $00,$41,$41,$41,$41,$41,$41,$41
; mask 3
DB $00,$00,$00,$00,$00,$03,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$E7,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
; attr 3
DB $00,$00,$00,$00,$00,$41,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
;
; --- Slot 1
; mask 0
DB $00,$80,$80,$C0,$E0,$C0,$10,$E8
DB $FC,$40,$40,$C4,$08,$80,$10,$20
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
; attr 0
DB $00,$01,$02,$02,$02,$0B,$02,$02
DB $01,$08,$08,$0C,$0C,$0C,$0C,$0C
; mask 1
DB $00,$00,$C0,$E0,$F0,$80,$F8,$FC
DB $00,$64,$6C,$E8,$B0,$10,$20,$C0
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
; attr 1
DB $00,$00,$41,$41,$41,$44,$41,$41
DB $00,$46,$46,$46,$46,$46,$46,$46
; mask 2
DB $00,$00,$00,$00,$00,$A0,$00,$00
DB $00,$DA,$D2,$D2,$44,$68,$C8,$10
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
; attr 2
DB $00,$00,$00,$00,$00,$42,$00,$00
DB $00,$41,$41,$41,$41,$41,$41,$41
; mask 3
DB $00,$00,$00,$00,$00,$B0,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
; attr 3
DB $00,$00,$00,$00,$00,$41,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00
;
; --- Slot 2
; mask 0
DB $00,$00,$00,$00,$00,$01,$00,$7C
DB $00,$40,$40,$07,$04,$04,$00,$07
DB $0F,$38,$78,$30,$4C,$FE,$30,$1E
DB $40,$3F,$00,$CF,$10,$10,$1F,$DF
; attr 0
DB $0C,$0C,$0C,$0C,$04,$04,$03,$0A
DB $03,$0B,$04,$04,$0E,$0E,$02,$01
; mask 1
DB $01,$03,$03,$03,$03,$00,$3D,$7C
DB $41,$40,$40,$07,$7F,$0B,$0F,$00
DB $80,$F8,$FF,$B3,$B3,$38,$30,$2E
DB $C0,$00,$1F,$DF,$FF,$FF,$FF,$00
; attr 1
DB $42,$42,$42,$42,$41,$42,$44,$43
DB $44,$44,$4A,$4A,$41,$41,$41,$00
; mask 2
DB $03,$07,$07,$07,$00,$7E,$7C,$00
DB $40,$FF,$BF,$F8,$00,$00,$00,$00
DB $F0,$F8,$FF,$FF,$00,$39,$0E,$E0
DB $3E,$C0,$FF,$3F,$00,$00,$00,$00
; attr 2
DB $41,$41,$41,$41,$00,$41,$4A,$44
DB $4A,$41,$41,$41,$00,$00,$00,$00
; mask 3
DB $00,$00,$00,$00,$00,$00,$C2,$83
DB $BE,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$C1,$21
DB $3F,$00,$00,$00,$00,$00,$00,$00
; attr 3
DB $00,$00,$00,$00,$00,$00,$41,$41
DB $41,$00,$00,$00,$00,$00,$00,$00
;
; --- Slot 3
; mask 0
DB $80,$78,$70,$78,$30,$01,$39,$40
DB $38,$01,$3C,$3E,$3A,$7C,$80,$80
DB $00,$00,$00,$00,$00,$80,$80,$00
DB $00,$E0,$00,$00,$00,$00,$00,$00
; attr 0
DB $0C,$02,$0C,$0C,$0E,$08,$0A,$04
DB $0A,$04,$0E,$0B,$0B,$02,$02,$01
; mask 1
DB $10,$FC,$FC,$7C,$FF,$59,$05,$3C
DB $FF,$3D,$FF,$02,$02,$FD,$FC,$00
DB $00,$00,$00,$00,$80,$80,$80,$00
DB $F0,$E0,$F0,$00,$00,$E0,$00,$00
; attr 1
DB $42,$41,$42,$42,$41,$44,$43,$4A
DB $41,$4A,$41,$44,$44,$41,$41,$00
; mask 2
DB $78,$00,$FE,$FE,$00,$09,$44,$BB
DB $00,$FE,$00,$C3,$C2,$00,$00,$00
DB $00,$00,$00,$00,$00,$80,$00,$E0
DB $00,$10,$00,$F0,$00,$00,$00,$00
; attr 2
DB $41,$00,$41,$41,$00,$42,$44,$41
DB $00,$41,$00,$41,$42,$00,$00,$00
; mask 3
DB $00,$00,$00,$00,$00,$AE,$86,$00
DB $00,$00,$00,$00,$C7,$00,$00,$00
DB $00,$00,$00,$00,$00,$40,$40,$00
DB $00,$00,$00,$00,$F0,$00,$00,$00
; attr 3
DB $00,$00,$00,$00,$00,$41,$41,$00
DB $00,$00,$00,$00,$41,$00,$00,$00

Login sesión o register para postear comentarios

Por Warchild

Paragon (1280)

Imagen del Warchild

22-01-2015, 22:18

Supongo que es para usar en ensamblador, ¿no?

Usa la segunda forma que pones, las lineas DB se correspondería con los Datas en Basic. Tienes que copiar esos datos a VRAM, patrones y colores cada cosa en su sitio.

¿Le has echado un ojo al tutorial que hay en la página de Dimension Z? Esta parte está muy bien explicada y con ejemplos claros y fáciles, te lo recomiendo.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

23-01-2015, 07:13

La 2a parte es asm si.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

23-01-2015, 07:47

Si, lo unico que me liaba es el mask. Si alguien lo teclea creo que le gustara el diseño del sprite. Y seria 16x16. Osea screen 5,2 o 5,3 ampliado

Por Warchild

Paragon (1280)

Imagen del Warchild

23-01-2015, 08:09

Pues justamente estamos con el mismo tema... a ver si luego puedo sentarme un rato y compartimos avances.

Por jrcp_kun

Paragon (1410)

Imagen del jrcp_kun

23-01-2015, 08:24

Me guataria sabes si usais algun compilador de basic para probar en el pc y no tener que meter todo a pelo desde el emulador.
Gracias

Por AxelStone

Prophet (2956)

Imagen del AxelStone

23-01-2015, 10:20

Justamente entraba a preguntar lo mismo pero en su versión Basic, el mensaje es el mismo, que no hay rutina como en MSX1. Te genera un montón de lineas en Basic con los DATA y las máscaras, pero no te dice como mostrarlo. ¿Alguien que lo haya usado?

Gracias.

Por Warchild

Paragon (1280)

Imagen del Warchild

23-01-2015, 13:46

Avorejam...

jrcp_kun, entra en http://www.dimensionzgames.com/?page_id=70

Descarga los tutos con la documentación y en dos días estarás moviendo sprites a diestro y siniestro en ensamblador :)
Luego para hacerlo en MSX2 hay que tener en cuenta otras cosas, pero es mejor aprender con este tuto e ir mirándote las rutinas para MSX2 (por ejemplo segun en qué dirección de la vram quieras trabajar, la bios del msx1 no te va a servir)

AxelStone, en otras respuestas se te ha indicado donde mirar esas cosas (portar, por ejemplo). Llámame pesado si quieres, pero avanzarías más leyendo que preguntando un dato que luego no eres capaz de aplicar porque con ese simple dato seguirás perdido. En la docu está todo, direcciones vram de los patrones, colores y atributos de los sprites. Y en el manual de Basic seguro vas a encontrar ejemplos de cómo definir sprites. Ejemplos sencillos pero suficientes para un primer contacto. Mira otros listados y encontrarás distintas formas de hacer lo mismo, definir sprites. No sé si has visto en el foro en inglés que me ofrecí a ayudarte. A tí seguro que esto te cunde más que a mí, y yo sé que si consigues avanzar 10 pasos, yo fijándome mucho podré avanzar uno... pero suman once, que no está mal :P Así que no te cortes, vas muy bien pero te aseguro que la info que estás necesitando la tienes a mano y la puedes mirar, lo que te ahorra tener que esperar a que alguien te responda y te de un dato que luego te puede costar relacionar con el resto. Hazme casillo y repasa la docu. No te preocupes que no por eso se te acabarán las preguntas... oO al contrario... pero seguro que las respuestas las aprovecharás más y mejor :)

Por AxelStone

Prophet (2956)

Imagen del AxelStone

23-01-2015, 14:06

Warchild wrote:

AxelStone, en otras respuestas se te ha indicado donde mirar esas cosas (portar, por ejemplo). Llámame pesado si quieres, pero avanzarías más leyendo que preguntando un dato que luego no eres capaz de aplicar porque con ese simple dato seguirás perdido.

No hombre, se agradecen pesados como tu, la verdad es que eres de los más activos del foro Wink . A ver, el libro de Basic MSX2 me lo terminé ya, vamos que se definir sprites multicolor, moverlos por pantalla y demás, en ese sentido no tengo dudas. Sin embargo siempre que escarvas aparecen dudas y en el libro hecho de menos 2 cosas:

1.- Explicación sobre la operación OR de colores, para mejorar el aspecto.
2.- Cómo definir y usar las máscaras en los sprites.

La página que dices la estuve mirando un rato, y hay cosas que he aprendido (ya entiendo bastante mejor el mapa de memoria, aunque sigo teniendo lagunas). Peeeero amigo, topamos de nuevo con el escaso tiempo y con la directriz de no reinventar la rueda: estoy convencido que alguien ha tenido que usar ya el TinySprite, así que sería de agradecer que compartiera ese conocimiento Wink

Yo desde luego colaboro en lo (poco) que puedo, aquí soy el novato y cada día aprendo algo nuevo. Mismamente en el hilo de los scrolles para MSX2+ puse mis averiguaciones, y lo seguiré haciendo Smile

Un saludo.

Por Warchild

Paragon (1280)

Imagen del Warchild

23-01-2015, 14:50

El empuje de los que están aprendiendo es el mayor aporte, que yo creo que a estos ordenadores los cubrían con aprendicina, porque hasta a los torpunos como yo nos dan ganas Smile

Los Sprites, puedes hacerlo con dos bucles. Uno para los patrones y otro para los colores. Leer dato y vpokearlo. Algo así:

10 FOR K=0 to (Sprites*32):READ A:VPOKE &H3800+K, A:NEXT K
20 FOR K=0 to (Sprites*16):READ A:VPOKE &H1C00+K, A:NEXT K

Espero haberlo puesto correctamente. Este ejemplo sería para Screen 4. En las lineas data, primero pon todos los patrones y después los colores.

Con lo de la máscara no sé a qué te refieres, quizá es porque TinySprite pone algo de "mask" en el listado que saca. ¿Es eso? Si es eso, son los datos de color (que incluyen el bit OR y otros de los que ya habrás leído)

Si el bit OR es 1 se realiza la operación (Color1 or color2) y el resultado será el color para esa linea.
Creo que en la sección Wiki hay unas tablas y algunos consejos a tener en cuenta a la hora de posicionar los colores en la paleta. A ver si lo localizo luego.

Por Warchild

Paragon (1280)

Imagen del Warchild

23-01-2015, 14:55

Página 1/3
| 2 | 3