Já parou pra pensar que algumas Romhacks possuem um bloco que age diferente dos normais? É porque aquele bloco foi programado e inserido externamente. Desde um bloco invisível que avance de fase para uma piranha vermelha que mate Yoshi, não importa: as opções são infinitas. Mas o mais importante do que criar é simplesmente inserir um bloco. Siga-me os bons!
Os objetos vanilla:
O jogo original possui uma certa variedade de blocos pré-adicionados na memória pra serem usados como objetos. Basta acessar o menu do Lunar Magic que eles estarão lá. Mas com blocos personalizados é um pouco diferente pois você precisa reservar um Tile da Map16 da sua ROM para guardar as informações da ID do seu bloco.
Um pouco sobre a Map16:
Imagine uma folha enorme em branco, organizada por blocos pequenos. Cada um desses blocos é um objeto, apesar que alguns chamam de Tile. O conjunto de vários tiles formam o que o povo chama de Tileset. Cada objeto pré-programado possui uma função básica, como machucar o jogador ou simplesmente ficar invisível. É possível identificar certos blocos visualmente, entretanto cabe ao desenvolvedor escolher o melhor gráfico.
Porém os blocos que você encontra na internet são programados para exercer uma rotina específica, algo que o jogo original não consegue fazer. Será preciso preparar a sua ROM para que ela possa receber esse tipo de material. Recomendo expandir a sua ROM de Super Mario World para no mínimo 2MB, evitando assim erros desnecessários.
Baixando e inserindo novos blocos:
Vamos supor que você já baixou um bloco... tipo esse aqui. Mas você não sabe inserir porque não faz noção que precisa baixar a ferramenta GPS antes. Baixe a ferramenta e extraia na pasta raiz do seu projeto. Agora faça uma cópia da sua ROM e cole dentro da pasta da ferramenta. Se tudo der certo vai ficar semelhante á essa imagem:
Você não tá ficando doido pois é bem fácil de inserir. Todos os blocos que você baixar irão pra pasta Blocks e se eles precisarem de um novo documento de código auxiliar vai pra Routine. Aí você abre o arquivo de texto List.txt e adiciona da seguinte forma: [ID da Map16] + [Nome do bloco.asm].
Exemplo: 307:130 EndLevel.asm
Para inserir de fato essa lista o óbvio precisa ser feito.
Basta arrastar a sua ROM para dentro do gps.exe e pronto!
E agora? Como eu sei que funcionou?
Antes de mais nada você precisa conferir se um novo arquivo ROM.dsc apareceu. Estou usando ROM como exemplo pra fazer sentido mas o arquivo vai ter o nome que você colocar. O importante é descobrir que se surgiu um novo arquivo na extensão [.dsc]. Se não apareceu é porque alguma coisa deu errado na hora de tentar inserir.
Agora se deu tudo certo basta arrastar a cópia da sua ROM e o novo arquivo para a pasta raiz do seu projeto. Toda vez que você inserir novos blocos será preciso efetuar esse mesmo ritual de copiar e colar, não tem segredo. Sempre bom lembrar de testar bem os blocos antes de efetuar a troca definitiva pra não se arrepender mais tarde.
Em breve vamos aprender como fazer o nosso próprio bloco.
Até a próxima!