Fortaleza Reznor
¡Bienvenido a Fortaleza Reznor!
¿Que es Fortaleza Reznor?
Fortaleza Reznor es un foro de SMWH (Super Mario World Hacking) Aquí modificamos (hackeamos) el juego de Mario World a nuestro gusto y enseñamos a otros a saber a manejar el hacking de SMW usando la famosa herramienta "Lunar Magic".

¡Regístrate!
Únete a nuestra comunidad!, te ayudaremos en cada duda que tengas respecto al SMWH. Aparte podrás participar en eventos que hay en el foro y descargar los recursos que crean nuestros usuarios.

¡ANÍMATE! ¡Te divertirás en nuestro foro!

Atte:
La administracion.


¡Super Mario World Hacking en español! ¡Ayuda, tips, diversión y más!
 
ÍndiceMiembrosRegistrarseConectarseCalendarioFAQBuscar

Comparte | .
 

 Como agrego graficos y tilas de daño a un sprite

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
MetalYoshi94
Goomba
Goomba
avatar

Posts Posts : 28


MensajeTema: 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.
Volver arriba Ir abajo
J
Shelless Green Koopa
Shelless Green Koopa
avatar

Posts Posts : 9


MensajeTema: 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 Razz, necesitaras saber bastante as, para hacer este tipo de cosas y agregarle mas farmes a los spries
Volver arriba Ir abajo
MetalYoshi94
Goomba
Goomba
avatar

Posts Posts : 28


MensajeTema: 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
Volver arriba Ir abajo
Vampira Kawaii
Baby Red Yoshi
Baby Red Yoshi
avatar

Posts Posts : 1302


MensajeTema: 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.
Volver arriba Ir abajo
MetalYoshi94
Goomba
Goomba
avatar

Posts Posts : 28


MensajeTema: 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.
Volver arriba Ir abajo
Vampira Kawaii
Baby Red Yoshi
Baby Red Yoshi
avatar

Posts Posts : 1302


MensajeTema: 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).
Volver arriba Ir abajo
MetalYoshi94
Goomba
Goomba
avatar

Posts Posts : 28


MensajeTema: Re: Como agrego graficos y tilas de daño a un sprite    Miér Jun 12, 2013 8:49 pm

Gracias la verdad e seguido tus pasos y boy bien por el momento =)
cuando puedas publica la otra parte del tutorial

Ya aprendi a agregar las tilas de daño, me ha sido de mucha utilidad
ahora nada mas me faltaria aprender a agregar mas tilas de graficos para que el grafico del sprite cuadre prefecto con las tilas de daños


¡Gracias, espero la segunda parte :D!

Volver arriba Ir abajo
Vampira Kawaii
Baby Red Yoshi
Baby Red Yoshi
avatar

Posts Posts : 1302


MensajeTema: 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. Razz
Volver arriba Ir abajo
MetalYoshi94
Goomba
Goomba
avatar

Posts Posts : 28


MensajeTema: 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. Razz

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 =)
Volver arriba Ir abajo
Vampira Kawaii
Baby Red Yoshi
Baby Red Yoshi
avatar

Posts Posts : 1302


MensajeTema: 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.
Volver arriba Ir abajo
MetalYoshi94
Goomba
Goomba
avatar

Posts Posts : 28


MensajeTema: 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
Volver arriba Ir abajo
Vampira Kawaii
Baby Red Yoshi
Baby Red Yoshi
avatar

Posts Posts : 1302


MensajeTema: 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.
Volver arriba Ir abajo
Contenido patrocinado




MensajeTema: Re: Como agrego graficos y tilas de daño a un sprite    

Volver arriba Ir abajo
 

Como agrego graficos y tilas de daño a un sprite

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» Parche TC2012 V3
» Pruebas rendimiento RESIDENT EVIL 5 PC
» como bajar los graficos
» Como cambiar de marchas con el mando.
» Bajar graficos

Permisos de este foro:No puedes responder a temas en este foro.
Fortaleza Reznor ::  Ayuda y Recursos de SMW Hacking :: Foro de ayuda-