Esta publicación es parte de una serie llamada Ingeniería Inversa de un juego de Game Boy Advance. Lee la introducción aquí. Lea la publicación anterior aquí.
Sígueme en Twitter para más diversión de computadora 🐦
Como vimos antes, alargar el puente alterando la memoria en la VRAM solo duró por un frame. ¡Vamos a entender por qué esto pasa y cómo podemos mantener nuestras tiles vivas!
El primer paso es entender mejor la sección de la memoria que estamos trabajando, en este caso VRAM (0600~0601). Para esto, gasté un poco de tiempo “jugando” con él para ver cómo se comportaba…
This post is part of a series entitled Reverse Engineering a Gameboy Advance Game. Read the introduction here. Read the previous post here.
Specifically for this last part, it isn’t necessary to have read the previous ones — but I strongly recommend it because they are top-notch.
And so, we finally arrived at our last post in this long series. It’s hard to believe that, finally, I’m writing the closing chapter about this project that I started at the end of 2017, and only now, at the beginning of 2020, I’m closing it.
It’s even strange to write it because…
Esta publicación es parte de una serie llamada Ingeniería Inversa de un juego de Game Boy Advance. Lee la introducción aquí.
Sígueme en Twitter para más diversión de computadora 🐦
Bueno, nuestro objetivo es crear un editor de niveles, ¿verdad? Pero eso es muy complicado y hay un millón de cosas que hacer. Así que vamos a empezar con algo más obvio: ¡vamos a crear algunas tiles en el mapa!
Algo importante de un proyecto de ingeniería inversa es “encontrar y repetir los patrones.” Es más fácil solo repetir un patrón que crear o borrar algo. Osea que en vez…
Read it in English here! 🇺🇸
Leia isso em Português aqui! 🇧🇷
Versión en español traducida por Puckman 💙
Siempre intento venir con proyectos personales; son básicamente una gran manera de tener algo para pasar el tiempo y para estudiar algo diferente de lo que normalmente hacemos cada día. El año pasado, puse un montón de amor en un proyecto compilatorio, y este año no sería diferente: mi investigación sería centrada en encontrar algo que codificar y para estudiar que requiera entender los conceptos de algún área de Ciencia de Computadora — y eso puede convertirse en un proyecto emocionante…
This post is part of a series entitled Reverse Engineering a Gameboy Advance Game. Read the introduction here. Read the previous post here.
Follow me on Twitter to more computer fun 🐦
After our glorious trajectory doing reverse engineering on the game Klonoa, we finally achieved our aim: we created a web app to customize its levels, klo-gba.js!
From now on it’s usable because we can create new challenges in the game. But there is a limitation on our current implementation: when it saves a custom level, the next one won’t work anymore. …
Leia isso em português aqui! 🇧🇷
¡Léelo en español aquí! 🇪🇸
All posts translated by Benjamin Stauffer and me 💙
I’m always trying to come up with personal projects; they’re basically a great way to get some distraction and to study something different from what we normally do on a day-to-day basis. Last year, I put a lot of love on a compiler project, and this year couldn’t be any different: my research was focused on finding something cool to code and to study that required understanding the fundamentals of some area of Computer Science — and that could evolve…
This post is part of a series entitled Reverse Engineering a Gameboy Advance Game. Read the introduction here. Read the previous post here.
Follow me on Twitter to more computer fun 🐦
We dove deep into reverse engineering and only touched a little bit on JS in the past couple of chapters… but this post will be completely different: let’s go down the slope of web development, so applying everything we discovered to our level editor.
Hereafter I will point out the most relevant decisions in the programming of klo-gba.js, justifying why it had to be so, what I gained…
This post is part of a series entitled Reverse Engineering a Gameboy Advance Game. Read the introduction here. Read the previous post here.
Follow me on Twitter to more computer fun 🐦
In our last post, we ended up extracting the level tilemap, however, a level has more than just the tilemap. Another important feature is its objects, such as diamonds and monsters. As was already explained in the third chapter, the objects are mapped in a section of memory called the OAM (Object Attribute Memory). …
Essa postagem faz parte da série intitulada Engenharia Reversa num jogo de Gameboy Advance. Leia a introdução aqui. Leia a postagem anterior aqui.
Especificamente para essa última postagem, não é preciso ter lido as outras — apesar de eu recomendar muito, por serem só o filé.
E então, enfim chegamos aqui na nossa última postagem de nossa longa série. É até difícil de acreditar que enfim estou escrevendo a conclusão desse projeto da qual comecei final de 2017, e somente agora, no começo de 2020, devo encerrá-lo.
É até estranho de escrever isso, pois várias coisas mudaram em minha vida…
This post is part of a series entitled Reverse Engineering a Gameboy Advance Game. Read the introduction here. Read the previous post here.
Follow me on Twitter to more computer fun 🐦
Cool! At last we managed to extract the tilemap of the level, which is fantastic by itself… but it’s still not sufficient for what we’re aiming to achieve, right? So let’s move forward! Let’s plot the tilemap!
But we have the following challenge: the dump of the tilemap is a linear vector, while the level is a two-dimensional matrix. Therefore we need to find the value that determines…