ROM Hack A way to get a single rom out of a compilation/collection pack?

ShadowOne333

QVID PRO QVO
OP
Editorial Team
Joined
Jan 17, 2013
Messages
12,212
Trophies
2
XP
34,071
Country
Mexico
Good day, community!

I have always wondered if there is a way to "extract" a single rom out of a compilation package like the 2 in 1 packages from the GBA or the Konami Collection packages seen in the Gameboy Color.

I always wanted to just get the roms of the Castlevania Adventure games (since they are colourized) and have them as single roms instead of the Collection rom.

Does anyone know a way on how to do that?
Or even a way to just boot directly into the game I want without going to the selection menu?
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,348
Country
United Kingdom
Singling out a game on a GBA or earlier system (one without a filesystem) is very hard to do effectively. Making it boot to a given screen/game is usually far easier though seldom done, there are some oddities (something like the phantasy star collection on the GBA would have to be approached slightly differently) but for the most part it should not be that hard.
If it is a straight up emulation of a game (as happened on a lot of Wii virtual console stuff, also a lot of what sega have done over the years) then it is more viable to extract a game. I will note quite a few devs have somewhat odd ROM formats compared to scene and whatever.

Equally if it is a 2 in 1 game then most of the time you will be told to just get the originals, if for not other reason than a lot of those ? in 1 games are 256Mbit which makes things harder to fiddle with on flash carts and rarely fix bugs or add anything new.

Anyway the very first GBA assembly hack anybody really does is finding the binary, other than a few oddities (like the phantasy star collection mentioned earlier) it is quite easy and works the same for basically every game. I reckon you are looking at doing something similar to that, or possibly similar to those doing an scene style intro for a game (wait for the game to set itself up and then jump somewhere else, in this case to the start screen of the secondary game).
The first bytes in a game are the first instruction run by the GBA. This is usually a jump to the end of the binary, in your disassembler there will some instruction some 8 or so after that first jump lands to something in the 08?????? region. That 08?????? region is the binary proper. What will happen at some point after the menu is it will jump to the game you selected and that will be done with a jump to somewhere. Find this somewhere and make a jump to that happen earlier in the game (like just before it would have shown the selection menu) and you have your hack.

There are a few variations on the theme that some might do (mainly playing a macro or subverting button presses to always end up at the same thing) but first of all I would go for the method I just described, it should work and if it does not (sometimes a selection screen is more than a selection screen, just like a FMV can mask a load screen).

I am waffling. The short version is you are going to need basic assembly (know what a jump is and the basic ideas of assembly and program IO) and tracing skills (basically http://www.romhacking.net/documents/361/ ) to try this.
 

ShadowOne333

QVID PRO QVO
OP
Editorial Team
Joined
Jan 17, 2013
Messages
12,212
Trophies
2
XP
34,071
Country
Mexico
Singling out a game on a GBA or earlier system (one without a filesystem) is very hard to do effectively. Making it boot to a given screen/game is usually far easier though seldom done, there are some oddities (something like the phantasy star collection on the GBA would have to be approached slightly differently) but for the most part it should not be that hard.
If it is a straight up emulation of a game (as happened on a lot of Wii virtual console stuff, also a lot of what sega have done over the years) then it is more viable to extract a game. I will note quite a few devs have somewhat odd ROM formats compared to scene and whatever.

Equally if it is a 2 in 1 game then most of the time you will be told to just get the originals, if for not other reason than a lot of those ? in 1 games are 256Mbit which makes things harder to fiddle with on flash carts and rarely fix bugs or add anything new.

Anyway the very first GBA assembly hack anybody really does is finding the binary, other than a few oddities (like the phantasy star collection mentioned earlier) it is quite easy and works the same for basically every game. I reckon you are looking at doing something similar to that, or possibly similar to those doing an scene style intro for a game (wait for the game to set itself up and then jump somewhere else, in this case to the start screen of the secondary game).
The first bytes in a game are the first instruction run by the GBA. This is usually a jump to the end of the binary, in your disassembler there will some instruction some 8 or so after that first jump lands to something in the 08?????? region. That 08?????? region is the binary proper. What will happen at some point after the menu is it will jump to the game you selected and that will be done with a jump to somewhere. Find this somewhere and make a jump to that happen earlier in the game (like just before it would have shown the selection menu) and you have your hack.

There are a few variations on the theme that some might do (mainly playing a macro or subverting button presses to always end up at the same thing) but first of all I would go for the method I just described, it should work and if it does not (sometimes a selection screen is more than a selection screen, just like a FMV can mask a load screen).

I am waffling. The short version is you are going to need basic assembly (know what a jump is and the basic ideas of assembly and program IO) and tracing skills (basically http://www.romhacking.net/documents/361/ ) to try this.

Wow, thank you so much for the answer.
I see most of your explanation is referring to GBA games, could the same principle be applied to GBC compiled games and just make the direct jump to one of the games through assembly?
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,348
Country
United Kingdom
Other than the specifics on how to find the binary it pretty much applies to any hack like this for a multipack game, a bonus mode you want to jump to*, a level skip (though there are often better options here as the game should allow you to launch such things from within software) or even something like you want to jump directly to a sound test for any game on any console. For the most part you want to jump to a game or jump to the command sequence that leads to that part of the game.

*I probably should make one for that English GBA tetris game. The game was not great but the bonus mode was more or less classic tetris.
 
  • Like
Reactions: ShadowOne333

ShadowOne333

QVID PRO QVO
OP
Editorial Team
Joined
Jan 17, 2013
Messages
12,212
Trophies
2
XP
34,071
Country
Mexico
Other than the specifics on how to find the binary it pretty much applies to any hack like this for a multipack game, a bonus mode you want to jump to*, a level skip (though there are often better options here as the game should allow you to launch such things from within software) or even something like you want to jump directly to a sound test for any game on any console. For the most part you want to jump to a game or jump to the command sequence that leads to that part of the game.

*I probably should make one for that English GBA tetris game. The game was not great but the bonus mode was more or less classic tetris.

Great, so I will start to read some more and then try it out in one game.
Don't forget to let me know how the GBA Tetris hack goes for you.
 

ShadowOne333

QVID PRO QVO
OP
Editorial Team
Joined
Jan 17, 2013
Messages
12,212
Trophies
2
XP
34,071
Country
Mexico
Oh also, I think it would be cool to implement such idea to the Super Mario Advance titles, to just cut the BS and boot straight to the game without having to choose between the actual main game and the Mario Bros. remake (which all 4 Advance games have and is in no way "unique").

So yeah, just the 4 MArio Advance games and the Konami Collection titles (to boot directly into the Castlevania games) are in my plans. :)
Let's see how well I can do with the assembly...
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • TwoSpikedHands @ TwoSpikedHands:
    Do I restart now using what i've learned on the EU version since it's a better overall experience? or do I continue with the US version since that is what ive been using, and if someone decides to play my hack, it would most likely be that version?
  • Sicklyboy @ Sicklyboy:
    @TwoSpikedHands, I'll preface this with the fact that I know nothing about the game, but, I think it depends on what your goals are. Are you trying to make a definitive version of the game? You may want to refocus your efforts on the EU version then. Or, are you trying to make a better US version? In which case, the only way to make a better US version is to keep on plugging away at that one ;)
  • Sicklyboy @ Sicklyboy:
    I'm not familiar with the technicalities of the differences between the two versions, but I'm wondering if at least some of those differences are things that you could port over to the US version in your patch without having to include copyrighted assets from the EU version
  • TwoSpikedHands @ TwoSpikedHands:
    @Sicklyboy I am wanting to fully change the game and bend it to my will lol. I would like to eventually have the ability to add more characters, enemies, even have a completely different story if i wanted. I already have the ability to change the tilemaps in the US version, so I can basically make my own map and warp to it in game - so I'm pretty far into it!
  • TwoSpikedHands @ TwoSpikedHands:
    I really would like to make a hack that I would enjoy playing, and maybe other people would too. swapping to the EU version would also mean my US friends could not legally play it
  • TwoSpikedHands @ TwoSpikedHands:
    I am definitely considering porting over some of the EU features without using the actual ROM itself, tbh that would probably be the best way to go about it... but i'm sad that the voice acting is so.... not good on the US version. May not be a way around that though
  • TwoSpikedHands @ TwoSpikedHands:
    I appreciate the insight!
  • The Real Jdbye @ The Real Jdbye:
    @TwoSpikedHands just switch, all the knowledge you learned still applies and most of the code and assets should be the same anyway
  • The Real Jdbye @ The Real Jdbye:
    and realistically they wouldn't

    be able to play it legally anyway since they need a ROM and they probably don't have the means to dump it themselves
  • The Real Jdbye @ The Real Jdbye:
    why the shit does the shitbox randomly insert newlines in my messages
  • Veho @ Veho:
    It does that when I edit a post.
  • Veho @ Veho:
    It inserts a newline in a random spot.
  • The Real Jdbye @ The Real Jdbye:
    never had that i don't think
  • Karma177 @ Karma177:
    do y'all think having an sd card that has a write speed of 700kb/s is a bad idea?
    trying to restore emunand rn but it's taking ages... (also when I finished the first time hekate decided to delete all my fucking files :wacko:)
  • The Real Jdbye @ The Real Jdbye:
    @Karma177 that sd card is 100% faulty so yes, its a bad idea
  • The Real Jdbye @ The Real Jdbye:
    even the slowest non-sdhc sd cards are a few MB/s
  • Karma177 @ Karma177:
    @The Real Jdbye it hasn't given me any error trying to write things on it so I don't really think it's faulty (pasted 40/50gb+ folders and no write errors)
  • DinohScene @ DinohScene:
    run h2testw on it
    +1
  • DinohScene @ DinohScene:
    when SD cards/microSD write speeds drop below a meg a sec, they're usually on the verge of dying
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    Samsung SD format can sometimes fix them too
  • Purple_Heart @ Purple_Heart:
    yes looks like an faulty sd
  • Purple_Heart @ Purple_Heart:
    @Psionic Roshambo i may try that with my dead sd cards
    +1
  • Psionic Roshambo @ Psionic Roshambo:
    It's always worth a shot
  • TwoSpikedHands @ TwoSpikedHands:
    @The Real Jdbye, I considered that, but i'll have to wait until i can get the eu version in the mail lol
    TwoSpikedHands @ TwoSpikedHands: @The Real Jdbye, I considered that, but i'll have to wait until i can get the eu version in the...