Fortaleza Reznor
[Tutorial] Como hacer Custom Blocks FLVP3jF¡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.
Fortaleza Reznor
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


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

Comparte
 

 [Tutorial] Como hacer Custom Blocks

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
lx5
Moderador Global
Moderador Global
lx5

Posts Posts : 2130


[Tutorial] Como hacer Custom Blocks Empty
MensajeTema: [Tutorial] Como hacer Custom Blocks   [Tutorial] Como hacer Custom Blocks EmptyMar Abr 02, 2013 2:27 pm

Hola gente de FR, este dia les enseñare a crear sus propios custom blocks para el Super Mario World. Ojala comprendan el tutorial y puedan hacer custom blocks geniales.

Antes de comenzar el tutorial, necesitan las siguientes cosas:
- Un archivo de texto
- El Block Tool Super Deluxe
- Un ROM de Super Mario World
- Conocimientos basicos de ASM
- Paciencia, mucha paciencia


Leccion 1 - Primeros pasos para hacer el custom block

Para comenzar tu custom block debes renombrar tu archivo de texto a BloqueCustom.asm, despues abre el archivo .asm con el bloc de notas y pega lo siguiente lo siguiente:

db $42

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP MarioCape : JMP MarioFireBall
JMP MarioCorner : JMP MarioBodyInside : JMP MarioHeadInside

MarioBelow:
MarioAbove:
MarioSide:

SpriteV:
SpriteH:

MarioCape:
MarioFireBall:

MarioCorner:
MarioBodyInside:
MarioHeadInside:
RTL


Esto es la base que ocuparas para hacer tus custom blocks, de seguro no tienes idea de que significa cada cosa, asi que te lo explicare:

db $42
Este codigo es para señalar los nuevos offsets del BTSD, estos son: MarioCorner, MarioBodyInside y MarioHeadInside, no es necesario del todo en un bloque, pero hay que tenerlo si quieres compartirlo. Ademas, a veces puede haber algunos pequeños problemas si no tiene el db $42 al principio.

JMPs
Los JMPs que estan al principio es para dar un brinco al label señalado, el orden de los labels es como esta ahi arriba: MarioBelow, MarioAbove, MarioSide, SpriteV, SpriteH, MarioCape, MarioFireBall, MarioCorner, MarioBodyInside, MarioHeadInside.

Nota:
A los labels anteriormente mencionados puedes renombrarlos como quieras, aqui un ejemplo:

JMP Mario : JMP Mario : JMP Mario : JMP Sprite : JMP Sprite : JMP Cape : JMP Fire
JMP Mario : JMP Mario : JMP Mario

Mario:
Sprite:
Cape:
Fire:
RTL


Puedes ponerle cualquier nombre que quieras a las labels, con tal que sepas y recuerdes para que es cada una.

Labels
Las labels es el texto que esta enseguida de algun JMP, por ejemplo, MarioBelow, ese es un label, son vitales para hacer un custom block, no las olvides!.

Nota: Despues de los JMPs, las labels pueden estar acomodadas de cualquier manera, por ejemplo

db $42

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP MarioCape : JMP MarioFireBall
JMP MarioCorner : JMP MarioBodyInside : JMP MarioHeadInside

MarioBelow:
MarioAbove:
MarioSide:
MarioCorner:
MarioBodyInside:
MarioHeadInside:

MarioCape:
MarioFireBall:
SpriteV:
SpriteH:
RTL


RTL
Esto indica el fin del codigo, cuando el codigo llega a este punto deja de interactuar con Mario o Sprites.

Leccion 2 - Añadiendo mas codigo

Ahora vamos a codear el custom block, para empezar, necesitamos ir a la [Tienes que estar registrado y conectado para ver este vínculo] y buscar alguna direccion RAM para nuestro bloque, para este tutorial tomare la direccion $7E:0DBF que es la que controla las monedas del jugador.
El bloque te dara 5 monedas si tienes 10 monedas, si no, solo te dara una, tambien hara diferente sonido.

db $42

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP MarioCape : JMP MarioFireBall
JMP MarioCorner : JMP MarioBodyInside : JMP MarioHeadInside

MarioBelow:
MarioAbove:
MarioSide:
MarioCorner:
MarioBodyInside:
MarioHeadInside:
LDA $0DBF ;Con esto cargamos la direccion RAM de las monedas, las direcciones del bank 7E pueden ser cargadas sin tener que poner $7E0DBF.
CMP #$0A ;Checamos si Mario tiene 10 monedas...
BEQ Monedas ;Si tiene exactamente 10 monedas nos vamos al label "Monedas", si no es asi, el codigo continua normalmente.
;LDA $0DBF ;Esta parte del codigo es innecesaria si ya habias cargado la RAM de las monedas anteriormente sin haber cargado alguna otra cosa en A.
CLC ;Opcode utilizado para la operacion matematica de sumar.
ADC #$01 ;Aqui va el numero de monedas que vas añadir, en este caso seria 1.
STA $0DBF ;Al final cargas el valor anterior en la RAM de monedas.
RTL ;Fin del codigo.

Monedas:
;LDA $0DBF ;Igual que lo anterior, esto es innecesario, pero si quieren, incluyanlo.
CLC ;Opcode utilizado para la operacion matematica de sumar.
ADC #$05 ;Aqui va el numero de monedas que vas añadir, en este caso seria 5.
STA $0DBF ;Al final cargas el valor anterior en la RAM de monedas.
;RTL ; Aqui seria el fin del codigo, pero como no hay mas codigo abajo y hay un RTL, no es necesario incluirlo.
MarioCape:
MarioFireBall:
SpriteV:
SpriteH:
RTL ;Como no queremos que el bloque interactue con la capa, fireballs de mario y los sprites las labels se dirigiran a un RTL


Asi seria el codigo del bloque, ahora procede a insertarlo y pruebalo.

Leccion 3 - Utilizando subrutinas

Existen varias subrutinas para bloques, algunas muy simples, pero otras demasiado complejas. En esta leccion te enseñare como usarlas.

Lista de subrutinas:
Hacer desaparecer el bloque al tomarlo:
 
Hacer que el bloque tenga un efecto como si rompieras un Turn Block con un spinjump:
 
Hacer que el bloque deje un rastro de estrellitas:
 
Hacer que el bloque deje un rastro de humo:
 
Hacer que el bloque cambie al siguiente Map16:
 
Hacer que el bloque haga aparecer un sprite normal:
 
Hacer que el bloque haga aparecer un custom sprite:
 
Hacer que el bloque cheque a un sprite en especifico:
 
Hacer que el bloque cheque a un custom sprite en especifico:
 
Hacer que el bloque haga aparecer un score sprite:
 
Hacer que el bloque genere un bounce sprite:
 

Wow, demasiadas subrutinas, no es necesario que las uses todas, solo usas si son totalmente necesarias. Para llamar a una subrutina solo basta con llamarla con JSL NombreDeLaRutina, por ejemplo, queremos que el bloque que hicimos anteriormente deje un rastro de estrellitas y que desaparezca.

db $42

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP MarioCape : JMP MarioFireBall
JMP MarioCorner : JMP MarioBodyInside : JMP MarioHeadInside

MarioBelow:
MarioAbove:
MarioSide:
MarioCorner:
MarioBodyInside:
MarioHeadInside:
LDA $0DBF ;Con esto cargamos la direccion RAM de las monedas, las direcciones del bank 7E pueden ser cargadas sin tener que poner $7E0DBF.
CMP #$0A ;Checamos si Mario tiene 10 monedas...
BEQ Monedas ;Si tiene exactamente 10 monedas nos vamos al label "Monedas", si no es asi, el codigo continua normalmente.
;LDA $0DBF ;Esta parte del codigo es innecesaria si ya habias cargado la RAM de las monedas anteriormente sin haber cargado alguna otra cosa en A.
CLC ;Opcode utilizado para la operacion matematica de sumar.
ADC #$01 ;Aqui va el numero de monedas que vas añadir, en este caso seria 1.
STA $0DBF ;Al final cargas el valor anterior en la RAM de monedas.


JSL Desaparece ;Se va a la subrutina que hace desaparecer el bloque.

JSL DisplayGlitter ;Se va a la subrutina que deja un rastro de estrellitas.


RTL ;Fin del codigo.

Monedas:
;LDA $0DBF ;Igual que lo anterior, esto es innecesario, pero si quieren, incluyanlo.
CLC ;Opcode utilizado para la operacion matematica de sumar.
ADC #$05 ;Aqui va el numero de monedas que vas añadir, en este caso seria 5.
STA $0DBF ;Al final cargas el valor anterior en la RAM de monedas.


JSL Desaparece ;Se va a la subrutina que hace desaparecer el bloque.

JSL DisplayGlitter ;Se va a la subrutina que deja un rastro de estrellitas.


;RTL ; Aqui seria el fin del codigo, pero como no hay mas codigo abajo y hay un RTL, no es necesario incluirlo.
MarioCape:
MarioFireBall:
SpriteV:
SpriteH:
RTL ;Como no queremos que el bloque interactue con la capa, fireballs de mario y los sprites las labels se dirigiran a un RTL.

;Aqui abajo es un buen lugar para colocar las subrutinas.

DisplayGlitter:
LDA $7F
ORA $81
BNE ReturnLoop
LDY #$03 ; \ Find free sprite effect slot
LoopStart:
LDA $17C0,y ; |
BEQ CreateGlitter ; | Branch if one found
DEY ; |
BPL LoopStart ; /
ReturnLoop:
RTL

CreateGlitter:
LDA #$05
STA $17C0,Y
LDA $9A
AND #$F0
STA $17C8,Y
LDA $98
AND #$F0
STA $17C4,Y
LDA $1933
BEQ ADDR_00FD97
LDA $9A
SEC
SBC $26
AND #$F0
STA $17C8,Y
LDA $98
SEC
SBC $28
AND #$F0
STA $17C4,Y
ADDR_00FD97:
LDA #$10
STA $17CC,Y
RTL

Desaparece:
PHY
LDA #$02 ; Replace block with block # 25
STA $9C
JSL $00BEB0 ; Make the block disappear.
PLY
RTL


Ahora el bloque desaparece y deja un rastro de estrellitas al ser tomado.

Agradecimientos

Bueno gente de FR este fue el tutorial de como hacer custom blocks, en verdad quiero agradecer a Wiiq de SMWC por hacer su tutorial de bloques ya que gracias a su tutorial pude aprender ASM, ojala a ustedes les sirva este tutorial y si hacen algun bloque pueden postear sus resultados aqui, tambien si tienen alguna duda pueden postear aqui. Diviertanse haciendo sus bloques custom.

~TheLX5

__________________________________________________
Si tienes Wii U, Wii, 3DS o DS, ¡postea en tus friend codes en [Tienes que estar registrado y conectado para ver este vínculo] tema para hacernos amigos!
Espacio en renta.
Volver arriba Ir abajo
IvanSword
Yellow Masked Koopa
Yellow Masked Koopa
IvanSword

Posts Posts : 1197


[Tutorial] Como hacer Custom Blocks Empty
MensajeTema: Re: [Tutorial] Como hacer Custom Blocks   [Tutorial] Como hacer Custom Blocks EmptyMiér Abr 03, 2013 5:05 pm

Muy buen tutorial lx gracias a tu tutorial ya podre hacer mis experimentos locos :D
Volver arriba Ir abajo
https://www.fortalezareznor.com/
Mr m
Boo
Boo
Mr m

Posts Posts : 351


[Tutorial] Como hacer Custom Blocks Empty
MensajeTema: Re: [Tutorial] Como hacer Custom Blocks   [Tutorial] Como hacer Custom Blocks EmptyMiér Abr 03, 2013 6:48 pm

buen tutorial, quiza le sirva a los menos experimentados
Volver arriba Ir abajo
Contenido patrocinado




[Tutorial] Como hacer Custom Blocks Empty
MensajeTema: Re: [Tutorial] Como hacer Custom Blocks   [Tutorial] Como hacer Custom Blocks Empty

Volver arriba Ir abajo
 

[Tutorial] Como hacer Custom Blocks

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

 Temas similares

-
» [Tutorial] - Como hacer un ''GIF''.
» Tutorial detallado de como hacer una armadura con Resina,fibra y PVC(ejemplo custom PRE VIZSLA Death watch)
» Como hacer armadura Jango fett o Boba fet (metal o aluminio)
» Como hacer para que eBolivia tenga mas poblacion
» EHH ALGUIEN sabe como hacer una cosa

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