|
| Como agrego graficos y tilas de daño a un sprite | |
| Autor | Mensaje |
---|
MetalYoshi94 Goomba
Posts : 28
| Tema: Como agrego graficos y tilas de daño a un sprite Dom Jun 09, 2013 11:55 am | |
| ¿Alguien sabe como agregar graficos a un sprite?
Ejemplo:
un sprite de 16x16 dejarlo como 32x32 solo editando el graphic routine del asm del sprite
Ya agrande mi sprite de 16x16 a 32x32 ¿como hago para que las tilas de daño queden como 32x32 y no como 16x16?
¿se entiende?
muchas gracias. |
| | | J Shelless Green Koopa
Posts : 9
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Dom Jun 09, 2013 12:38 pm | |
| Pues tu mismo te respondiste tu duda, con asm y modificando las rutinas del sprite, pero obviamente como cambia el tamaño se tendra que cambiar todo, basicamente se re hace todo el sprite , necesitaras saber bastante as, para hacer este tipo de cosas y agregarle mas farmes a los spries |
| | | MetalYoshi94 Goomba
Posts : 28
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Dom Jun 09, 2013 12:45 pm | |
| este es uno de los codigos del sprite 32x32 - Código:
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; graphics routine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TILEMAP dcb $80,$88,$CE,$C2 dcb $AC,$AE,$A8,$AA dcb $80,$88,$CE,$C2 dcb $AC,$AE,$A8,$AA X_OFFSET dcb $08,$F8,$08,$F8,$F8,$08,$F8,$08 ;‰EŒü‚«Žžƒ^ƒCƒ‹‚ÌxÀ•W/¶Œü‚«Žžƒ^ƒCƒ‹‚ÌxÀ•W Y_OFFSET dcb $F0,$F0,$00,$00 ;ƒ^ƒCƒ‹‚ÌyÀ•W
SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset cuando agrego mas dcb con la posicion del grafico el sprite se mantiene de 32x32 y no se expande su tamaño hacia los lados <-[]-> o hacia arriba, abajo me confunde. - Código:
-
NO_FLIP ORA $64 ; add in tile priority of level STA $0303,y ; store tile properties PLX INY ; \ increase index to sprite tile map ($300)... INY ; | ...we wrote 1 16x16 tile... INY ; | ...sprite OAM is 8x8... INY ; / ...so increment 4 times DEX BPL LOOP_START ¿Lo que dice INY son las tilas de daño? por lo que veo ahi 4 INY y el sprite es de 32x32 supongo que cada INY corresponde a 16x16 sumandolo por 4 seria 32x32 ¿Ayuda? xD |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Mar Jun 11, 2013 2:27 pm | |
| En realidad es bastante más complicado cambiar los gráficos. Tienes que saber suficiente ASM para editar correctamente el bucle que pone los gráficos del sprite en la memoria.
Otra cosa que necesitas hacer y es más simple es editar el archivo CFG que viene con el sprite para cambiar el radio de interacción del sprite con Mario y con objetos. Hacer esto con el CFG no soluciona el problema con los gráficos; la rutina de gráficos y la de interacción están separadas y ambas tienen que ser editadas (en realidad la de interacción no hay que editarla, sólo hay que cambiar un número en el archivo CFG).
Los INY que aparecen son en realidad utilizados para que las tilas de sprites que mandas a la pantalla no se sobrescriban unas a otras, lo que ocurriría sin esos "INY" es que algunas tilas no aparecerían en pantalla.
Es difícil explicar todo lo que tienes que hacer para hacer más grande tu sprite... Pero si en verdad quieres ese sprite de 32x32 puedo tratar de explicarlo. |
| | | MetalYoshi94 Goomba
Posts : 28
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Mar Jun 11, 2013 9:28 pm | |
| Por favor, estoy dispuesto a aprender me gustaria personalizar algunos sprites agregandole mas tamaño para hacer jefes y/o otras cosas
si tienes tiempo de explicarlo, estaria encantado =)
Gracias. |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Miér Jun 12, 2013 2:26 pm | |
| Ok. Se supone que tu sprite es de 16 x 16 pixeles, así que lo primero será hacer lo más fácil: editar el archivo CFG. Antes de eso bájate [Tienes que estar registrado y conectado para ver este vínculo] y aplícalo a un ROM sin editar. Ahora ejecuta el cfg_editor.exe (que viene con spritetool) y ve a File > Open: El programa te pedirá que elijas un archivo con terminación CFG. Elige el archivo que corresponde al sprite que quieres agrandar. Aparecerán algunos números en las casillas del editor y algunas casillas marcadas, todo esto sirve para definir algunas propiedades del sprite. Yo abrí el shyguy azul porque también es un sprite de 16 x 16. Ahora hay que revisar una casilla en específico, la que aparece junto al mensaje "Sprite Clipping Table Offset:". El dígito que aquí aparece es el que determina el radio de interacción del custom sprite con otros sprites, incluyendo a Mario. Dependiendo del valor que introduzcas en esta casilla desde el 0 hasta el 3F el sprite tendrá un tipo de interacción distinta. El 0 es para un sprite con interacción de aprximadamente 16x16 pixeles. Ahora abre el ROM con el parche que te pasé en un emulador. El juego parecerá algo común y corriente y aparecerás en el submapa de Yoshi's Island. Entra al nivel "Yoshi's Island 1". Te encontrarás con algo inusual, música de SMB3, un par de bloques grises y un bloque de agua con unos puntitos. La statusbar está ligeramente modificada, aunque al principio no lo notarás. Dentro del bloque de agua verás lo que en realidad es un sprite compuesto de cuatro pequeños puntos que sirven para delimitar su tamaño. Golpeando los dos bloques grises que hay en el extremo izquierdo puede modificar el tamaño del sprite, en al statubar en el lugar donde deberían estar las monedas verás cambiar la cantidad al mismo tiempo que cambias el tamaño del sprite con ayuda de los bloques grises. Busca un tamaño que se aproxime a ser de 32x32, a veces es buena idea tomar un tamaño ligeramente menor para darle un toque de realismo a la animación de contacto. Luego revisa el número que aparecerá en lugar de las monedas, ese número es el que debes colocar en el recuadro ya mencionado del cfg_editor. Ya sólo falta poner el número en el campo de editor de CFG y guardar el archivo: Me falta explicar cómo editar el archivo ASM, pero me gustaría saber si hay dudas hasta el momento antes de seguir (además el post quedó muy grande :V). |
| | | MetalYoshi94 Goomba
Posts : 28
| | | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Jue Jun 13, 2013 1:16 pm | |
| Bueno, me gustaría que pusieras el código del sprite para ver la rutina de los gráficos. Porque al juzgar por las tablas de valores que pusiste en el primer post parece que no es una rutina muy normal. |
| | | MetalYoshi94 Goomba
Posts : 28
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Jue Jun 13, 2013 10:04 pm | |
| - NoXuS9090 escribió:
- Bueno, me gustaría que pusieras el código del sprite para ver la rutina de los gráficos. Porque al juzgar por las tablas de valores que pusiste en el primer post parece que no es una rutina muy normal.
- Código:
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; graphics routine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; TILEMAP dcb $80,$88,$CE,$C2 dcb $AC,$AE,$A8,$AA dcb $80,$88,$CE,$C2 dcb $AC,$AE,$A8,$AA X_OFFSET dcb $08,$F8,$08,$F8,$F8,$08,$F8,$08 ;‰EŒü‚«Žžƒ^ƒCƒ‹‚ÌxÀ•W/¶Œü‚«Žžƒ^ƒCƒ‹‚ÌxÀ•W Y_OFFSET dcb $F0,$F0,$00,$00 ;ƒ^ƒCƒ‹‚ÌyÀ•W
SUB_GFX JSR GET_DRAW_INFO ; sets y = OAM offset LDA $157C,x ; \ $02 = direction ASL A ASL A STA $02 ; / LDA $14 LSR A LSR A LSR A AND #$03 ASL A ASL A STA $03 PHX LDX #$03
LOOP_START PHX TXA CLC ADC $02 TAX LDA X_OFFSET,x CLC ADC $00 ; \ tile x position = sprite y location ($01) STA $0300,y ; / PLX
LDA Y_OFFSET,x CLC ADC $01 ; \ tile y position = sprite x location ($00) STA $0301,y ; / PHX TXA CLC ADC $03 TAX LDA TILEMAP,x STA $0302,y PLX PHX LDX $15E9 LDA $15F6,x ; tile properties xyppccct, format LDX $02 ; \ if direction == 0... BNE NO_FLIP ; | ORA #$40 ; / ...flip tile NO_FLIP ORA $64 ; add in tile priority of level STA $0303,y ; store tile properties PLX INY ; \ increase index to sprite tile map ($300)... INY ; | ...we wrote 1 16x16 tile... INY ; | ...sprite OAM is 8x8... INY ; / ...so increment 4 times DEX BPL LOOP_START
PLX LDY #$02 ; \ 460 = 2 (all 16x16 tiles) LDA #$03 ; | A = (number of tiles drawn - 1) JSL $01B7B3 ; / don't draw if offscreen RTS ; return
Es el codigo de la abeja de donkey kong country 2 este sprite tiene un tamaño de 32x32
me gustaria que tenga el tamaño real que es de 50x50 Una imagen para que se entienda mejor
como vez en la imagen mi sprite es mucho mas chico que el original me gustaria dejarlo como el de 50x50
Gracias, espero que tenga solución =)
|
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Vie Jun 14, 2013 2:20 pm | |
| Bueno, entonces todo será más fácil de lo que creí. Aunque quizá lo mejor sea editar un poco la rutina de GFX de un sprite de 64x64. La verdad sería muy difícil explicar todo el proceso, así que sólo te dejaré un reemplazo para la rutina de gráficos. También puede que necesites del parche NoMoreSpriteTileLimits.asm - Código:
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; sprite graphics routine ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;===== TILE MAP AND X,Y DISPLACEMENT ======================================; ;1 ;2 ;3 ;4 ;5 ;6 ;7 ;8 ;9 ;10 ;11 ;12 ;13 ;14 ;15 ;16
TILEMAP dcb $80,$82,$84,$86,$A0,$A2,$A4,$A6,$C0,$C2,$C4,$C6,$E0,$E2,$E4,$E6 ;1st frame of animation dcb $88,$8A,$8C,$8E,$A8,$AA,$AC,$AE,$C8,$CA,$CC,$CE,$E8,$EA,$EC,$EE ;2nd frame of animation dcb $86,$84,$82,$80,$A6,$A4,$A2,$A0,$C6,$C4,$C2,$C0,$E6,$E4,$E2,$E0 ;1st frame of animation (reverse) dcb $8E,$8C,$8A,$88,$AE,$AC,$AA,$A8,$CE,$CC,$CA,$C8,$EE,$EC,$EA,$E8 ;2nd frame of animation (reverse)
YDISP dcb $F8,$F8,$F8,$F8,$08,$08,$08,$08,$18,$18,$18,$18,$28,$28,$28,$28 ;1st frame of animation
XDISP dcb $F0,$00,$10,$20,$F0,$00,$10,$20,$F0,$00,$10,$20,$F0,$00,$10,$20 ;1st frame of animation ;==========================================================================;
SPRITE_GRAPHICS
JSR GET_DRAW_INFO LDA $13 LSR ;\ A AND #$04 ; | N ASL ; | I ASL ; | MATION PHA LDA $157C,x STA $02 BNE IHAS PLA CLC ADC #$20 BRA PLOP IHAS PLA PLOP STA $03 ;/
LDX #$00 ;Reset OAM
OAM_Loop
LDA $00 CLC ADC XDISP,x STA $0300,y ;Xpos
LDA $01 CLC ADC YDISP,x STA $0301,y ;Ypos
PHX TXA CLC ADC $03 TAX LDA TILEMAP,x STA $0302,y
LDX $15E9 ; LDA $15F6,x ; get palette info
LDX $02 BNE CHEEZBURGR ORA #$40 CHEEZBURGR PLX ORA $64 STA $0303,y ;Properties
INY INY INY INY INX CPX #$10 BNE OAM_Loop
LDX $15E9 ;Restore sprite index LDY #$02 ;16x16 LDA #$0F ;Number of tiles to draw - 1 (0F) JSL $01B7B3 ;Finish OAM Write
RTS Bueno, lo que tienes que hacer ahora es editar las tablas de TILEMAP. Son 4 tablas, los comentarios de cada tabla señalan que cada una es para un frame distinto, las dos últimas son para cuando el sprite mira a la dirección opuesta.
Cada línea está compuesta de 12 números que son las 12 tilas. El número de tila correspondiente a cada cuadro de 16x16 en el nivel lo puedes ver en el editor de tilas de 8x8 de Lunar Magic. Son sólo los últimos dos dígitos:La primera línea comienza con 4 dígitos que corresponden a las cuatro tilas superiores cuando el sprite mira a la izquierda, luego las cuatro de la segunda fila, las cuatro de la tercera y las cuatro de la última.
La segunda línea tiene el mismo formato pero es el segundo frame de animación.
La tercera línea, es lo mismo, pero para el sprite mirando en la dirección opuesta, así que debes considerar que las tilas invierten su orden cada cuatro números y que las tilas estrán horizontalmente volteadas.
La cuarta línea corresponde al segundo cuadro de animación cuando el sprite mira a la derecha. Son las mismas tilas que la segunda línea pero con el oreden alterado como en la tercera.La paleta del sprite será determinada por el archivo CFG, así que asegurate de que el archivo señale que tu sprite usa esa paleta. Seguramente necesitarás usar para los gráficos un BIN que abarque todo un slot de gráficos para sprites. Si hay dudas de algún tipo, no dudes en postear. EDIT: Olvida todo eso de editar las tablas, en este caso bastará con que cambies la rutina de gráficos y sobre escribas los gráficos de [Tienes que estar registrado y conectado para ver este vínculo] con los graficos de la abeja. |
| | | MetalYoshi94 Goomba
Posts : 28
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Vie Jun 14, 2013 10:39 pm | |
| Al insertar el sprite me da error al reemplazar el codigo del graphic routine |
| | | Lumiel Iggy Koopa
Posts : 1519
| Tema: Re: Como agrego graficos y tilas de daño a un sprite Lun Jun 17, 2013 1:36 pm | |
| ¿Qué error exactamente? Probablemente haya que renombrar algunas etiquetas en el código. |
| | | Contenido patrocinado
| Tema: Re: Como agrego graficos y tilas de daño a un sprite | |
| |
| | | | Como agrego graficos y tilas de daño a un sprite | |
|
Temas similares | |
|
| Permisos de este foro: | No puedes responder a temas en este foro.
| |
| |
| Donaciones |
Quieres ayudar al foro? Siéntete libre de donar la cantidad que quieras!
|
|