Hacking Make your own rumble game for EZ-FLASH OMEGA Definitive Edition

EZ-Flash2

Official EZ-FLASH Stuff
OP
Member
Joined
Jul 16, 2003
Messages
1,103
Trophies
3
XP
3,445
Country
China
For our new EZ-FLASH OMEGA Definitive Edition, only one game on the GBA platform, Drill Dozer, can support rumble, an awkward situation.
So we considered that we could hack the existing game, so that the game can send commands to the rumble register under specific conditions, so that the GBA can get the experience which close to the modern consoles.

So far we have come to a certain conclusion that this idea is feasible.

Here's an IPS patch for Final Fight EU, md5=d8453317272826159fefcf254f25ada4, patched md5=006cff08cbc28f8f018a9fa26d737cc5

When you launch the patched game on EZ-FLASH OMEGA Definitive Edition, you will feel the rumble when you hit the enemy or been hit.

This is just a preliminary test piece, we are in the process of compiling technical information and teaching procedures.
 

Attachments

  • Final Fight One.zip
    289 bytes · Views: 348
  • rumble_tutorial.zip
    290 KB · Views: 434

EZ-Flash2

Official EZ-FLASH Stuff
OP
Member
Joined
Jul 16, 2003
Messages
1,103
Trophies
3
XP
3,445
Country
China
add King of Fighters EX2 US ips
original ROM md5 = 6be741eea41598baeed52e4dd7ddb9f5
patched ROM md5 = 14608d7c8c47100c094fd1be704fa980

--------------------- MERGED ---------------------------

Have you documented the protocol?

In the process of writing, at the same time will also provide the protocol of RGB LED, with the rhythm game should be nice.
 

Attachments

  • King of Fighters EX2, The - Howling Blood(US).ips.zip
    745 bytes · Views: 297
  • Like
Reactions: timdmackey

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,282
Country
United Kingdom
Can I be the first to get you to tear your hair out and ask for pokemon?
I think I am funny if nothing else.

Seriously though nice to see. Do we have a list of GBA games that used it?
https://web.archive.org/web/20181012084701/http://problemkaputt.de/gbatek.htm#gbacartrumble mentions drill dozer and warioware but I am not sure what else there was. Hopefully we can also get it for the GBC emulators for those few games.

As far as protocol goes is it likely to be a run at high/med/low power for X seconds/frames type of deal or are we going to have to also hack in a command to disable it later (or a counter on vblank I guess)?
 

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,282
Country
United Kingdom
I might see about rewriting that as a more general approach (others reading the guide details starting with a cheat location, tracing RAM writes, hooking an instruction responsible for that, means of calculating jumping to a new location depending upon ARM or THUMB where the provided code sample given in the document is to be placed).

In this case the example is to make any change for Mario (rom 0025, http://www.advanscene.com/html/Releases/dbreleases.php?id=0025 ) to the total score will fire the rumble command. Nice guide if you are new to it all. If you already know how to find a suitable target, hook a program, jump (or branch if we are to use GBA parlance) to a new section to run some nice extras and then jump back then the new section to run nice extras is not explained (though if it is all there in that snippet you can probably figure out what it does to fire rumble and stop it again, or just use it yourself).


For those following the guide then
"5、 Find a suitable empty address in the ROM, here is 3E7900,copy the data in patch.bin to here."
This is usually quite easy in GBA games (Mother 3 is probably the only exception you are likely to meet in normal commercial games, though some hacks might also trouble things). Anyway at the end of the ROM is usually a bunch of blank space that gets trimmed off (you know it is blank because it is either 00 or FF where a normal game will be something else*).
Or you can add them; unlike many older systems then any GBA game can be made to 32 megabytes/256Mbit just by padding it out yourself with 00 or FF values to get there, or to one of the lesser sizes if you would rather not fill up your SD card needlessly. No annoyances like you might have for if trying that for NES mappers, GB/GBC memory bank controllers or SNES hirom-lorom and special chips.

*technically the game could use the 00 or FF values as game data, indeed trimming one of the Teenage Mutant Ninja Turtles games appears to break them because of this. The list of troubled games here is pretty much just TMNT and Riviera I think it was.
 
  • Like
Reactions: cearp and Ryccardo

DrunkenMonk

Well-Known Member
Member
Joined
Sep 30, 2007
Messages
523
Trophies
1
Age
31
XP
1,749
Country
United Kingdom
Doesn't this mean technically you could add rumble onto games that never originally had rumble too?

Also do the patches work similarly to the GBC? Would the patched goomba emulator included also facilitate that?
 
Last edited by DrunkenMonk,

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,282
Country
United Kingdom
Doesn't this mean technically you could add rumble onto games that never originally had rumble too?

Also do the patches work similarly to the GBC? Would the patched goomba emulator included also facilitate that?

You can, indeed several have (the example tutorial for Mario and example patch for Final Fight One both being games that never had it) and seems some more in Chinese forums we get to go fish out.

GB/GBC wise I am not sure what Goomba, or the modified version here, uses to detect whether the game has rumble; technically you can use the header ( https://bgb.bircd.org/pandocs.htm#thecartridgeheader ) but if it is hardcoded for those games already with it then that is a different matter.

If you really wanted I guess you could edit (hack or source code, dealer's choice) the GBA aspect of the Goomba code (or any other emulator) to do something as well -- somewhere in there will be the internal emulated GB/GBC memory (or other system) so find some variable in the memory space for that and do a similar monitor and fire off the GBA rumble command when it detects a change/variable range it likes. Or double up on hacks and have the GB/GBC games send up a flag to their internal memory that the GBA code always watches for and have that trip the rumble (will need a GB/GBC hack rather than a cheat session but spares you having to do a check to see what game is running on goomba (or other emulator) thing lest you load another game and get false positives or have to do a list of games and locations to watch within the already pretty packed goomba code.
 
  • Like
Reactions: Sterophonick

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,282
Country
United Kingdom
could somebody make rumble for tetris on lineclear?
Which tetris? There are a few on the GBA, more if you count homebrew (and you should -- lockjaw/tetanus on drugs by tepples is probably the best version of Tetris on the GBA). Most of the good homebrew is not really open source so you will likely have to do that as a ROM hack.
Tetris worlds, give or take popular mode ( https://gamefaqs.gamespot.com/gba/481095-tetris-worlds/cheats , hold L and press select on the main screen), being the worst that is not a 5 minute homebrew job and not a version I am terribly excited to play though it is also the main one known to the English speaking world.


Anyway I doubt I will have time too soon. Though it would be a fairly nice hack to do. Line clear has a few approaches (you could try to key off a graphical flourish, audio, internal game state or score) but I would probably go with score/line count and find what added to the score/line counter (set a break on write/bpw in your debugger and it will likely flash up when you do it) and also have it fire off the rumble command/jump to the rumble area while it is at it.

Edit.
For the sake of a list. I assume we are skipping Dr Mario, panel de pon variations (tetris attack) and whatnot.
Tetris Worlds is the main NA/EU version of Tetris. Again not my favourite of any version by a long shot, made marginally more tolerable with the hidden mode.
Minna no Soft Tetris is a Japanese effort and one of my favourite versions of Tetris going anywhere.
https://tetris.fandom.com/wiki/Minna_no_Soft_Series:_Tetris_Advance

Lockjaw
https://web.archive.org/web/20120311175439/http://www.pineight.com/lj/dl

Plus whatever you can get running in emulators -- the NES and GB/GBC both having great little emulators for the GBA. The DS also brings a bunch of good stuff here that a bit of GBA rumble is not likely to tear me away afrom.
 

Baggins

Well-Known Member
Member
Joined
Jan 27, 2017
Messages
280
Trophies
0
Age
44
XP
314
Country
United States
Reverse engineer the built in rumble to GC in games like to work on the Omega DE?

Full list is....

Mario & Luigi Super STar Saga
Pokemon Pinball: Ruby and Sapphire
Super Mario 4 Adavnce: Super Mario Bros 3.
Shikakui Atama o Maruku Suru. Advance - Kanji, Keisan
Shikakui Atama o Maruku Suru. Advance - Kokugo, Sansuu, Shakai, Rika
Summon Night - Craft Sword Monogatari - Hajimari no Ishi

Of course there being an english patch to turn the last one into SUmmon Night Swordcraft 3....
 
Last edited by Baggins,
  • Like
Reactions: Home_Rowed

DrunkenMonk

Well-Known Member
Member
Joined
Sep 30, 2007
Messages
523
Trophies
1
Age
31
XP
1,749
Country
United Kingdom
Reverse engineer the built in rumble to GC in games like Mario & Luigi Super STar Saga, and Pokemon Pinball: Ruby and Sapphire to work on the Omega DE?
possible, but this isn't a request thread lol. This is a "this is how you start looking into the idea of doing this yourself" thread. I personally wanted to add rumble into games that never had rumble e.g pokemon games, rumble would essentially just match secondary/tertiary sounds and not music, but I couldn't be bothered to figure out how. Maybe try properly later.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Sorry for accidentally bending over