You are not logged in.
Pages: 1
I've been working on a Pokémon Pinball (GBC) disassembly project, and a lot of progress has been made on it. The GitHub repository is here: https://github.com/huderlem/pokepinball
Feel free to join in. I'm finding it pretty easy going because the game is a lot less complex than a traditional pokemon RPG game.
Special thanks to Danny-E 33 for cleaning some stuff up early and yenatch for the music.
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
I would like to do one TCG. I see more strategy.
Offline
Offline
I think I just hit a milestone for the pokepinball disassembly. All known routines in the game have been dumped. main.asm clocks out at roughly 42,000 lines. The next general step is to label/dump the graphics-related data that are hardcoded in the routines.
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
That's impressive. I will probably see what I can contribute soon. Feel free to contribute the the tcg disassembly. I haven't touched it in a while, just because i finished what I was mostly interested in; music, cards, decks, text and graphics. And I get bored with just dumping asm.
Offline
Yeah, dumping the routines is pretty bland...but necessary. I'll look into the tcg project in the future, but not in the short term because I'm not super familiar with the game.
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
Here's something fun: https://youtu.be/wL2qeDQjozQ
Eventually, I think it would be cool to make a "Pokemon Pinball Gen 2" game.
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
Fun fact:
The Pokedex entries appear in the exact same order with the exact same text as Red/Blue version (Rhydon, Kangaskhan, Nidoran_M, Clefairy, and so on). I think the data was literally copy-pasted from whatever text file they were using for Red/Blue development.
It's not that interesting... but it's fun to stumble upon this kind of thing.
Last edited by ShantyTown (2015-09-20 03:49:28)
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
I've started writing a tool that will edit stage tiles and collision maps. Here's an early screenshot of the collision mask functionality:
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
Some recent progress on the disassembly:
I've been slowly going through all of the unlabeled static pointers and dumping/labeling the data they point to. This is basically "the plan" until everything has been labeled. Unfortunately, there are still about 800 unlabeled pointers.
I also discovered that each pokemon has its own collision mask when trying to catch it in Catch'em mode. I expected all of the pokemon to simply share a circular collision mask. If you want to take a look, you can find those here: https://github.com/huderlem/pokepinball … /mon_masks
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
In Pokemon Pinball, there is a bonus reward where two Pikachus can save your ball in the bottom corners of the stage. When they are in the act of propelling the ball upward, a raw audio clip is played that sounds like "Piiiiii-Kaaaaaaa". It turns out that both Pokemon Pinball and Pokemon Yellow Version share the same code that plays audio clips. Additionally, Pokemon Pinball borrows two Pikachu sound clips from Yellow Version.
In the ROM, the actual sound data is stored as 1-bit pcm. "pcm" stands for pulse-code-modulation, which is a fancy way of saying "sound wave amplitudes". Since the pcm is only 1-bit, each sample in wave is either maximum or minimum amplitude--"on or off". Of course, this results in a very low-quality sound. That's okay, because the GameBoy wasn't designed to play pcm audio.
Then how does Pokemon Pinball/Yellow play the pcm data? The playback routine writes volume data to the GameBoy's wave channel (channel 3). The logic goes like this:
Read single 1-bit pcm sample
Write either 100% or 0% volume to the wave channel
Wait a set number of CPU cycles
Repeat until the pcm data is over
Now that we know the audio's data structure (1-bit pcm) and how the game interprets that data, we should be able to do two things:
Convert the 1-bit pcm data from the game into a .wav file
Convert an arbitrary .wav file into 1-bit pcm data tha the game can understand
Converting 1-bit pcm data into a .wav file is trivial, and it turns out converting a .wav into a 1-bit pcm stream is also pretty straightforward. This allows us to use .wav files in the pokepinball and pokeyellow projects. At compile time, the .wav files are converted into the 1-bit pcm format using a python script.
Here are the .wav files ripped from the games:
https://github.com/pret/pokeyellow/tree … achu_cries
https://github.com/pret/pokepinball/tre … ound_clips
This also allows you to replace any of Pikachu's cries in Pokemon Yellow, for example, with your own recorded voice. Here's me testing that out:
https://www.youtube.com/watch?v=pChFdI2NnjQ
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
Oh wow, that's really impressive! I was always curious how Yellow managed to pull that off. I forgot Pinball did it too.
I am not very active on this forum. I only pop in from time to time.
Offline
Here's a fun animated gif showing the ROM coverage of pokepinball over time: http://i.imgur.com/ZR6a7EW.gif
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
Here's a fun animated gif showing the ROM coverage of pokepinball over time: http://i.imgur.com/ZR6a7EW.gif
That needs some defragmentation :P
Hacks Gameboy 8-bit music in Pokémon Gen I & II, composes 8-bit music in LSDJ and FamiTracker.
“God created the Earth, but the Dutch created the Netherlands.”
Offline
I changed the Pokedex so that it shows you the ball that you caught the pokemon with:
Pokemon seen/owned flags are just stored as flags, so I had to update the logic for that data to store the pokeball type when capturing a pokemon.
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
That's actually really cool
I am not very active on this forum. I only pop in from time to time.
Offline
This disassembly is nearing "completion", meaning there are only 19 INCBINs from baserom.gbc remaining. I've been working pretty hard on that recently--I think there were ~300 INCBINs 3 months ago. Once the baserom.gbc dependency is removed, I'll work on taking moving stuff out of main.asm, since it's currently 53,000 lines long. After that, I'll probably make some fun hacks with it to weed out any possibly-missed hardcoded pointers.
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
The disassembly is now "complete", meaning there are no more INCBINs from baserom.gbc!
My hacks: Pokémon Maize, Pokémon Red: Battle Factory
Offline
Pages: 1