I was playing Dragon Blaze the other day on MAME and thought how much easier it would be if your ship sucked in the coins a la Shikigami (and while we´re at it, make the head of your dragon rider glow so you can see your damn hitbox on that deformed sprite!).
From then on I thought about what I would change about my favourite shmups. From little gameplay tweaks like glowing hitboxes, increased/decreased ship speeds, to heavy modifications like current Cave characters in Dodonpachi (or the DDP ships in newer games, like the hidden characters in Raizing games), and I wondered, if ANYONE thought about or even tried hacking and modding a shmup rom.
I guess everyone has met one or another hacked NES rom like Super Mario with penises, Paperboy with bloody knifes or Megaman 2 with penises and bloody knifes. That kind of hacks. I guess changing sprites in a NES rom is a bit simpler than doing this in the code of Battle Garegga. But is it possible to modify, lets say, DoDonpachi and change the level layout, increase the enemy fire rate, or even create new ship types?
Creating new bullet patterns, making "Arrange modes"?
Or adding newer shmup concepts to older games, like polarity (as in Ikaruga) or bullet buzzing? Please note that I am NOT saying that those games should actually be changed since most good shmups are meant to played in a specific way and have well thought out level designs. Its more a question about making experiments.
I know that modifing a game is something that must be done with caution, and I wondered if anyone tried this. I myself do not have any more programming knowledge than the "Happy Birthday mom"-QBasic lines I did when was fourteen. I don`t know if anyone out there wants to smash my head with a brick when I talk about fussing around with the rom of a game they love to death (and own the PCB). I guess emulation is a quite debateable topic, but I can`t stop thinking about this (well, I can actually, but you know what I want to say).
Any thoughts?
Shmup rom hacking
-
Icarus
- Posts: 7321
- Joined: Mon Jan 31, 2005 2:55 am
- Location: England
To modify the graphics in an arcade ROM set, you would need to know how the graphical data is stored in those particular ROMs, how to extract them (if they can be extracted), how best to edit them and how to re-insert them without corrupting the existing code. While it is quite easy in a Fami or Super Fami game as all the ROM code is found in one large file, - those ROMs that everyone loves to look for - with arcade games these graphic files can be found spread across several different ROMs.
Then there is the problem of running the new graphical data through current code. I dont know if re-inserting a new graphic may cause a particular game to stop functioning (perhaps because the game code is looking for a particular kind of sprite?) because I've never actually tried to graphic hack an arcade ROM. Who knows? Might work, might not. Depends on the graphics and the data that accesses them.
Also, you have to take in to consideration that more recent games might have some kind of encryption routines to protect the original code from being pirated. For example, CPS2 games, for a long time, were unemulated because of some heavy-duty encryption. The Seibu SPI games (Raiden Fighters 1, 2 and Jet, and Viper Phase One) have some very nasty encryption that has only recently been broken. The hardware system that Cave uses for Daioujou, Espgaluda, Ketsui etc etc is currently unemulatable because of such encryption. These encryption routines may indirectly stop you from extracting and reinserting bits of code from the original ROM data, and from modifying the program code itself.
Finally, if you wished to mess with the game's original programming - to add polarity to Radiant Silvergun, for example, or to tweak the Dragon Shoot attack in Dragon Blaze so the dragon reflects the bullets it crashes into when you dismount from it - you will need to have your hands on the ORIGINAL code, the code that only the developers of the original game have access to. You can add some basic things like a different life counter, slightly altered rank countdown and so on via Cheats in MAME, or by using an Action Replay on a console, but to do some of the more complex things like add new concepts to an older game, you will have to rewrite the original form of code.
...
</rant>
So yeah... ROM hacking. When it comes to something simple like a graphic hack, then yeah, can be done, as long as you know how to extract and re-insert the data without screwing up the existing ROM data. For something like level restructuring, unless your stages are stored in a tile-by-tile format like... say... Super Metroid, then no, not unless you have access to the developer's codebase. And with adding new concepts and tweaks, the most basic stuff can be AR'ed (so to speak) while more radical changes again require the original codebase.
Then there is the problem of running the new graphical data through current code. I dont know if re-inserting a new graphic may cause a particular game to stop functioning (perhaps because the game code is looking for a particular kind of sprite?) because I've never actually tried to graphic hack an arcade ROM. Who knows? Might work, might not. Depends on the graphics and the data that accesses them.
Also, you have to take in to consideration that more recent games might have some kind of encryption routines to protect the original code from being pirated. For example, CPS2 games, for a long time, were unemulated because of some heavy-duty encryption. The Seibu SPI games (Raiden Fighters 1, 2 and Jet, and Viper Phase One) have some very nasty encryption that has only recently been broken. The hardware system that Cave uses for Daioujou, Espgaluda, Ketsui etc etc is currently unemulatable because of such encryption. These encryption routines may indirectly stop you from extracting and reinserting bits of code from the original ROM data, and from modifying the program code itself.
Finally, if you wished to mess with the game's original programming - to add polarity to Radiant Silvergun, for example, or to tweak the Dragon Shoot attack in Dragon Blaze so the dragon reflects the bullets it crashes into when you dismount from it - you will need to have your hands on the ORIGINAL code, the code that only the developers of the original game have access to. You can add some basic things like a different life counter, slightly altered rank countdown and so on via Cheats in MAME, or by using an Action Replay on a console, but to do some of the more complex things like add new concepts to an older game, you will have to rewrite the original form of code.
...
</rant>
So yeah... ROM hacking. When it comes to something simple like a graphic hack, then yeah, can be done, as long as you know how to extract and re-insert the data without screwing up the existing ROM data. For something like level restructuring, unless your stages are stored in a tile-by-tile format like... say... Super Metroid, then no, not unless you have access to the developer's codebase. And with adding new concepts and tweaks, the most basic stuff can be AR'ed (so to speak) while more radical changes again require the original codebase.

-
Frederik
- Posts: 2554
- Joined: Sun Nov 06, 2005 7:14 pm
Thanks for the reply Icarus. I already thought that such things might be more complicated than I thought... for instance that you have to have the source code to modify things rather than just the rom dump.
On the other hand, playing Ketsui might be just a matter of patience, wait until they break the encryption, which is a great thing to hear. Thanks a bunch!
On the other hand, playing Ketsui might be just a matter of patience, wait until they break the encryption, which is a great thing to hear. Thanks a bunch!
-
zakk
- Posts: 1410
- Joined: Wed Jan 26, 2005 6:04 am
- Location: New York, NY
- Contact:
Theoretically one could do such changes without access to the source code. You just have to either 1) understand the assembly language of the given chip(s) very well or 2) have a decompiler AND understand the whacky code it would produce.
It wouldn't be easy. You'd need the guy with the magical 3rd eye and motivation and time to do it. So basically, it's out of reach for most people and the people who can do it probably have no desire to spend their time doing such things.
Also re: Ketsui. Good luck there. The incomplete dump was 'removed by request' from Mame, and no further work will be done on it. I imagine Ketsui would have the same fate.
It wouldn't be easy. You'd need the guy with the magical 3rd eye and motivation and time to do it. So basically, it's out of reach for most people and the people who can do it probably have no desire to spend their time doing such things.
Also re: Ketsui. Good luck there. The incomplete dump was 'removed by request' from Mame, and no further work will be done on it. I imagine Ketsui would have the same fate.
-
Frederik
- Posts: 2554
- Joined: Sun Nov 06, 2005 7:14 pm
"Removed by request"--- from whom? The most dissappointing thing about it is that it was never ported. Is the encryption THAT bad or were there other driving forces behind this?
Anyways, after watching a couple of superplays, this game seems way too hard (and darkish-industrial themed) for me. It`s got the most mindbending bullet curtains I have ever seen in any shmup so far (and now I understand how those "Ketsui"-BulletML scripts in rRootage have been inspired), but rather than hoping for it being emulated and then punishing myself with it I go back to the many great shmups that are already emulated and appreciate them more. I can be glad that emulation got me that many classics for free!
Anyways, after watching a couple of superplays, this game seems way too hard (and darkish-industrial themed) for me. It`s got the most mindbending bullet curtains I have ever seen in any shmup so far (and now I understand how those "Ketsui"-BulletML scripts in rRootage have been inspired), but rather than hoping for it being emulated and then punishing myself with it I go back to the many great shmups that are already emulated and appreciate them more. I can be glad that emulation got me that many classics for free!
-
PsikyoFan
- Posts: 102
- Joined: Wed Jan 26, 2005 8:55 pm
Hacking the sprites for Dragon Blaze would be a doddle. There's nothing special about the sprites on those Psikyo boards (e.g. RLE like Suprnova, or variable sized sprites). It also doesn't require them to pass checksums to boot etc. They do have two depths of tiles mixed in the same roms (4-bit and 8-bit) and the gfx are loaded into 32-bit addresses with 16-bits coming from each of the two roms that make up a pair.
Surely the most interesting bit is determining the hitboxes of the non-player objects.
I wouldn't like to write the code to make coins converge on the player, but that seems reasonably doable if it was done in a really crappy way (constant velocity, no path prediction or acceleration/deceleration).
Just a case of determining where the list of curret coin objects is kept and modifying their positions once a frame before rendering.
Creating new levels etc is a lot of work and not worth the bother IMHO.
Surely the most interesting bit is determining the hitboxes of the non-player objects.
I wouldn't like to write the code to make coins converge on the player, but that seems reasonably doable if it was done in a really crappy way (constant velocity, no path prediction or acceleration/deceleration).
Just a case of determining where the list of curret coin objects is kept and modifying their positions once a frame before rendering.
Creating new levels etc is a lot of work and not worth the bother IMHO.
-
PsikyoFan
- Posts: 102
- Joined: Wed Jan 26, 2005 8:55 pm
As request by the copyright holders, which we respect. We obviously wouldn't want to harm PS2 sales.FrederikJurk wrote:"Removed by request"--- from whom? The most dissappointing thing about it is that it was never ported. Is the encryption THAT bad or were there other driving forces behind this?
The emulation wasn't going any further for at least a couple of years.
The "encryption" isn't what it seems. The main thing is the ARM co-processors which don't have an external rom making it very hard to dump the game code. Leter games use this processor to run the majority of the code as it is superior to the main M68000.