We're right on time to start with you, Daniele, with Game Boy Advance Hacking for RetroGamers.
That's what we are, RetroGamers here.
Okay. Thank you.
So, okay.
I don't have so much time because there are a lot of things to say,
but the slides are already online, so you can find all the links or whatever.
So, I have to rush some stuff, but you can use Internet.
I think that you know how it works, so you can use it to find everything.
So, let's start.
About me, I am part of the Italian League of Society.
I am a Bozzilla volunteer contributor, so I am a few years old.
That's a work press.
I have an Italian podcast and wrote a book about auto-contribute to open source buzz
and the experience in these projects in the last decade, I think.
I am old.
But let's just start about talking about the Game Boy Advance.
So, these are the technical details.
There are a lot of fun, interesting things.
I think that for time reason, we can just say which are the most important things.
That's the fact that can support four players by cable.
And also, the output of the cable just can support a ROM.
I mean, you can share a ROM to the Game Boy Advance and read it from the memory as an example.
There are also the peculiarity of two different CPUs because it supports also the Game Boy Pocket and Color games.
So, when you insert a different cart, you use a different hardware stuff.
So, it is more interesting for other gamers because with a single device, you just have also all the games for the Game Boy Pocket and Color,
not just only the Game Boy Advance.
And also, there are also emulators, we will see it for other console.
And one of the other things that the maximum capacity for the games was 32 megabytes.
These lights are like 32 megabytes, just to have an idea of the difference of size at the time.
And also, supported the first 3D, but in a screen, very time like this is not, I mean, so much beautiful for a lot of games.
It depends on the technology.
There were also the first games of this kind of thing.
So, it's just amazing that this device that's today, you can find it in your closet on a bay for, I don't know, 30 euros.
You can do it a lot of fun and doing a lot of things because for me, it was very fun during the COVID pandemic,
just digging more, hacking, changing things, modding software because it's something that everyone can do because it's very cheap today.
And probably you have also some of them at home.
I don't bring with them all the collection, but I think that there are people that saw someone with the Game Boy there.
So, I think that we understand.
So, in this case, the first things that you can do as mod are changing the shell.
It's not something difficult after all.
There is also, you can do USB-C battery right there.
They can put, instead of the battery that was at the time that you want to take the battery from the remote, the TV remote because you need the battery.
Now, you can have a rechargeable battery, technology.
And also, there are more cheap to get the HDMI high output, but they're very horrible.
There is also, you can use it as an SNS controller, a cartridge with an SD card with all the games that you want, on-brew whatever you want.
You can also change the speaker because one of the issues was the speaker that was very cheap.
You can change it.
And also, you can put an amplifier that improved the audio quality.
And also, the first things to do in this case of the Game Boy Vadan, but also the pocket and the color was the lights.
It's very horrible when you have the sun there and you don't see anything.
And it's still there, the same problem.
You can change it in these cases with a bit of the wiring.
It's very fun because you can get the screen for the GBA SP and put it there.
So you can have the back lights with very 20 or something like that.
And there are also modes that can let you to change the brightness of the screen.
Just moving something like that, you change the brightness.
There are a lot of modes around that you can install on your Game Boy.
Advanced, but also color.
I mean, a lot of these things are also for the color.
You just know to check the modes.
There's also other things like the Bluetooth controller remote with a specific cartridge with the Bluetooth.
And also, it's a cartridge with Wi-Fi so you can do it with a remote controller.
There are people that get, I have a lot of time, I mean, like us.
So, on view.
Okay, you can have with this cartridge, there are a lot of around emulators.
So you can have NES games here.
You can have Game Boy Pocket, Game Boy Color.
You can have the Sega Master System games there.
There are also other emulators for other games, but the capacity of these not let run also for issues of the screen.
This is very tiny.
There is also option that you can have because there are people we don't view that did that.
It's not by me.
Game with Wi-Fi support with the remote, with the Raspberry.
So you can have this game multiplayer there by internet.
And media output.
You can use it for Shift-Tan as a synthesizer.
So you could connect these to the keyboard and play out the sound exit there.
And there's also the Retro-Pie streaming.
I mean, there, I don't know how much sense has, but you can play with the Retro-Pie and the Crash Bandicoot or PlayStation 1 there.
I don't know much sense, but there is.
That's the funny part.
And there is also a huge database, ROM hacking, that you can find patches to a lot of ROMs around tools to mod ROM, a lot of things.
This is something that I didn't remember.
I was a kid.
I didn't know that.
In Italy, it wasn't so much famous.
I don't know in other countries, but this was this video format called a GBA video.
So you can have in a cart, I mean, Disney Toons, SpongeBob Toons in some episodes in a cart.
And look it there, because it's very famous.
They sold millions of those.
And someone on the Internet, because I say that game people a lot of time, put a 10-bit movie in a cartridge.
There is the video, so just there.
I'm not joking.
It's there.
So, MGBA, in my opinion, is the best emulator for a lot of reasons.
It's everywhere basically.
It's integrated as a retro rock.
And it's a part open source because there are some little for Game Boy that are there aren't.
As an interesting website that explained the issues they had on fixing some emulation issues with specific video games.
So, you know, there is an illogical version in Japan that created issues.
We have no idea, but it's explained where there was the problem.
So you can find a lot of these interesting posts in this website.
But also, for getting fun, there is also a scripting giant inside the emulator.
So you can do fun meetings.
And it's also the debugging giant that is important.
So, for recent times I have a video recorded, but you can do it at home, I mean.
And in this case I choose this game because Metal Slug, I think that everyone knows except Pokemon.
I think it's the most famous game.
And so, this is the video.
The game is starting with MGA.
I'm just opening the memory search.
I will look for the ammo points of the gun because I want to change it like infinity.
Like a trainer with today, we call it trainer at the time of the word cheat.
Now we are playing a bit.
We now with which gun I pose the game.
I have now a value I will search in the memory of the game.
Now I will change a bit the points.
I will search again, but this is just in this subset of memory.
So, from now I will get the memory.
So now these are the two, probably the values where it is the ammo points.
Now I'm getting the memory and changing the value there.
It's funny, I made a lot of like.
And now we have ammo.
So, and we can see from these that the memory is changing.
Very basically we are, it's something that we, everyone knows with memory, with the mullet, it works this way.
But it's very simple to do it with a lot of consoles or whatever.
With Gameboy it's more simple.
So, this is the Lua script that for MGA that does the same thing.
Automatically.
On MGA you can load this Lua script.
You see it's not simple, it's more simple.
We can, we have something that is executed not every single frame,
because there are too many frames in the game.
We just put like a maximum and we will write the console of the game and change the ammo.
In this way we have the maximum ammo points for the game.
So, it's an easy win.
And there are already scripts for Pokemon, these kind of things already in the repository of MGA.
You can develop it very easily because we can just set the memory address, write, read.
So, it's Lua.
I mean, it's a very simple script and joining that you can do a lot of things.
Well, I don't think there is anything else to explain.
So, this is a tool that I did during the pandemic.
I will say, okay, I'm on Linux.
I want to patch my ROM to have cheats because I want to get fun.
And there was this tool very old with wine to get in running.
I said, it would be very cool for me to learn a bit,
C++ getting the source code,
and updated for Linux and Mac OS and Windows with QT.
And I did it.
And at the end I got the source code, but the problem was very old.
So, before I had to get running on Windows XP in a virtual machine without error.
So, it was a very long task, but I did a new tool with a new interface that does the same things,
but is a multiplatform that let you inject into a game a trainer.
So, without doing the emulator before the starting game, you have the trainer.
You have to run.
So, this is on-brew development.
There are various tools to develop games.
This is a GB Studio.
There is a module for GBA.
There is also more languages that you can use to develop a ROM today.
You can have Rust, NIM, Zig, obviously C++, and Lua again.
But Lua is a scripting engine.
It's not something that you can compile.
Well, it's only one because Astyme did it.
So, we have now an engine that lets you to do a Lua game in a ROM.
So, basically you can write your script in Lua.
You build a ROM with inside your script Lua and run it in the emulator.
So, you can have a simple game with inside it.
So, you can get the crash of Lua inside the screen.
Something very strange, but you get that because this is a Lua.
And, you know, automatically you can have the assets, audio, images, this kind of things.
So, you have a tiny, horrible demo, not video game because it will be.
And there is also the code of GitHub, in my case.
This is a demo they did a few years ago.
This is me, horrible, I'd say.
But it's there that we have moving an image with any Lua inside.
And this works also here because you have the cart there.
So, the game works also in a real game by advanced.
It's not just the emulator.
So, this is the code of the game.
I don't know how much you can see, but it's very simple.
I will go very quickly.
We have, first of all, setting some texture.
We are setting the function to draw the image with the coordinates.
We have also a way to clean up the screen because when I have to switch the image,
I have to clean up all the screen, otherwise it will be like Liars.
Some stacks over there, we are just in case when press some buttons,
we are moving the images, rating the data like FPS, RAM, whatever.
That is not perfect because the join is worse.
So, the data that's saying with this function are not so much trustable,
but it's working.
So, someone did already the games with that.
And so, let's move on.
Also, for the game advanced, there are a lot of communities around.
We are talking about prototypes because at the time,
I don't know many remember, magazine, video games magazine,
the writers got usually games in advice to review it.
So, around there are cartridges with the demo, with alpha, beads, whatever,
so people are collecting them and put online.
So, we have here a prototype of Metal Slug for game advanced,
the XOBEDE V-FREV of the game we saw.
Robocop, never released, and this is QuakeTree,
rewritten from scratch for game advanced, never released,
with the source code is online.
And we have different projects that collect them, but also documenting them.
So, what there is inside the ROM that was unused as an example,
incomplete, they document everything, also for other consoles.
So, moving on.
We have also the compilations, people that have a lot more time,
want to do a compilation one-on-one to a game to generate a complete copy of the game
from a complete new code.
There was also for, it was Famous Mario 64 as an example,
but there are also for Game Boy.
And Pokemon people are more, has a lot more time than me,
and development again, all the games in G++, one-on-one,
all the games for Game Boy, also the Pimbal game for the Pokemon.
And there are also other games that they compilated,
so you can create your version in cheat code instead of assembly.
So, I think that is better.
So, there is also competition online every year, and a lot of them.
In this case, there is also the GBA gem with practice.
There is also this case, Community on Discord.
And there is also this one, the Retro Platform Gem, also for Windows 95,
these kind of things, and this included also the Game Boy Advance as an example.
So, if you have more time, you can do that, so games.
So, let's go fast with some examples of those.
We have this one.
It is an Open City building for GBA and Linux, with Nc++.
We have this one, a 60-PS game run 3D in C++.
This one is very cool, not because it's a localized in Italy,
but because it's so crazy that the Game Boy is amazing.
Your name is a Game Boy, it's cool.
But the point is that it is written in Lisp, so there is a compiler for Lisp.
There is Linux, Windows, GBA and PlayStation Portable, with multiplayer support on GBA,
in a game that is procedurally generated.
At the time, there wasn't something like,
okay, we have random maps every time, everything.
Now, you have Indigaboy Advance 2024.
So, you can have levels generated in Procedure.
It is the same one that brought the engine in Lua.
This one is the same after for this game.
In this case, it's written again in Lisp.
This one right on the screen, a QR code so you can share the map of the game
in a community online, of course, with a smartphone.
There is also Open Lara,
at the compilation of Lara Croft, one running on the Game Boy Advance.
But, of course, Doom is everywhere.
Why not again in GBA?
Because Doom, there was for GBA, in this case,
is the modern Pierre Doom, Boom, Port, compiled for GBA,
but it wasn't enough because someone added the support to create a GBA ROM
with your mods of the time.
So, you can start wars mod on GBA.
You have Counter Strike mod for Doom in your Game Boy Advance.
Time.
So, we are at the end.
I was russian, so I guess there are questions.
Just to say, these are true projects.
They can help you to understand because I have no idea how it works.
Assemblies, I studied these to understand.
And the idea, this is a Game Boy guide from modern game developer.
It's complete. There is a lot of things.
And this one is for Game Boy Color.
We are working on it, so localizing in Italian.
And we know from the community because this is the Game Boy dev community,
they organize all these gems.
And it's used from university to explain how it works as CPU
because at the end, the Game Boy is very simple.
Everyone can play with that.
So, it's very easy to teach how it works, assembly, basically.
So, you can find the tutorial step by step, or to write a Pong game.
And now I think there are asteroid, I think.
So, it's something from the community that can teach you how it works at Game Boy at the end.
And I think that for someone that never developed with C++,
it was interesting to understand how it worked at the time to do all these kind of things.
There are a lot of people that works a lot on the Game Boy.
You can find on Twitter, GitHub, a lot of people that develop game emulators,
but also developing a lot of games.
So, if you are just interested to understand how it is easy to do retro gaming,
that's so hacking because I say it's cheap, so I change the amplifier,
I change the screen, I change the battery, I change a lot of things just for fun.
I just understand how it works, a console.
But at the end, when you do these kind of things, you learn how it works as a computer, basically.
So, you can get fun just doing these kind of things and learning,
getting fun that is not okay, and getting fun developing a framework,
JavaScript that no one ever used, but something like, okay, I'm hacking a Game Boy.
So, you can say, okay, I'm not care of the Game Boy.
So, I just invite you to check the emulation world, what you can do.
The various communities around that are very active.
And just to get fun with something from Cheat Dude, but it was still today.
So, thank you.
Thank you.
We have time for one question or two, Maximum.
Anybody?
There is a question.
That's too far.
Hello, this is actually not a question at all.
Sorry, in the front of the camera.
So, this is actually not a question at all.
This is actually, I am the maintainer of the GBAsim tutorial.
Oh, cool.
And we actually have a bunch of people from the Game Boy and Game Boy Color development community in the back
who are currently saying hi.
Cool, cool.
So, we are very thankful for the shout outs.
And we would like to say that there is a lot of interaction between the Game Boy and Game Boy Advanced communities.
So, if you would like to use more high level languages, the Game Boy Advanced is great.
It's very modern.
If you want to use older languages, the Game Boy is also really nice.
And yeah, we have a lot of resources.
So, thank you everyone.
And hopefully, we will be the ones giving a talk next year.
Perfect.
Okay, finish it.
Okay, thank you everyone.