ROM Hack UnkrawerterGBA: A tool to rip Krawall engine music from GBA games

JackMacWindows

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
53
Trophies
0
XP
237
Country
United States
Recently I ran across an old GBA game I had that I remember really enjoying the music to. I fired up GBAMusRiper, but it turned out this game didn't use the Sappy engine that most GBA games used. Luckily, it said in the credits that it used the Krawall engine, which I had stumbled across in my search to figure out how to rip the music.

Since I couldn't find any converters to rip music from Krawall games, I decided to make my own. Introducing UnkrawerterGBA, a tool to rip music from games that use the Krawall engine.

The latest release (3.1) is available for Windows x64, Mac, and Linux: https://github.com/MCJack123/UnkrawerterGBA/releases/tag/3.1

The source code is up on GitHub: https://github.com/MCJack123/UnkrawerterGBA

To use it, just run it from the command line with the path to the ROM file. You can specify the output directory with option -o. There are some other options you can use which are listed in the readme in the repository. When run, it will show the addresses of the instrument and sample lists, as well as all of the modules it found. Then it will extract all of the songs into separate files in the XM or S3M module file format. These files can be played in any tracker program supporting XM or S3M files, such as OpenMPT or Winamp.

As of 3.1 I'd say the accuracy of the rip is >99%. Everything has gone perfectly for me so far, and I have had no significant issues with rips.

I've uploaded a sample comparison for one of the songs I ripped. Here's the original (as recorded with VBA @ 44kHz), and here's a ripped version with no modifications whatsoever.

If you're using OpenMPT for playback, I recommend setting the resampling setting (in the General tab) to Linear for the most accurate sound reproduction. While Krawall uses no interpolation by default, this doesn't sound very good in OpenMPT, and linear interpolation improves the audio quality without removing some of the "crunch" that you'd hear from the Game Boy.

Here is a list of games that use the Krawall engine. I have had success ripping all of these games using UnkrawerterGBA. This list may not be complete since some ROMs may have removed the Krawall signature, but all of the games below contain a Krawall signature.
1359 - The Sims (J)
1431 - Franklin the Turtle (E)
1441 - Digimon Racing (J)
1467 - Digimon Racing (E)
1503 - Harry Potter and the Prisoner of Azkaban (U)
1546 - Harry Potter to Azkaban no Shuujin (J)
1633 - Digimon Racing (U)
1751 - The Lord of the Rings - The Third Age (U)
1757 - The Urbz - Sims in the City (E)
1812 - The Urbz - Sims in the City (J)
1850 - Lord of the Rings - Uchitsu Kuni Daisanki (J)
1912 - Robots (U)
1926 - Robots (E)
2096 - Board Game Classics (U)
2122 - Board Game Classics (E)
2128 - Koala Brothers (E)
2146 - 2 in 1 - Spy Hunter & Super Sprint (U)
2177 - Horse and Pony - Let's Ride 2 (E)
2205 - The Sims 2 (U)
2206 - Care Bears - The Care Quests (E)
2224 - Shrek SuperSlam (U)
2236 - Shrek SuperSlam (E)
2244 - 2 in 1 - Spy Hunter & Super Sprint (E)
2245 - The Chronicles of Narnia - The Lion, The Witch and The Wardrobe (U)
2257 - Sea World - Shamu's Deep Sea Adventure (U)
2262 - Franklin's Great Adventure (E)
2265 - Franklin The Turtle (U)
2266 - Care Bears - Care Quest (U)
2268 - Land Before Time - Into the Mysterious Land (E)
2280 - Elf Bowling 1 & 2 (U)
2314 - GBADev 2004Mbit Competition (U)
2340 - Ice Age 2 - The Meltdown (U)
2353 - Ice Age 2 - The Meltdown (E)
2355 - Let's Ride! Dreamer (U)
2379 - The Land Before Time - Into the Mysterious Beyond (U)
2380 - Franklin's Great Adventures (U)
2389 - The Koala Brothers - Outback Adventures (U)
2390 - Juka and the Monophonic Menace (E)
2402 - 3 in 1 - Candy Land, Chutes and Ladders, Memory (U)
2403 - 3 in 1 - Life, Yahtzee, Payday (U)
2424 - Babar - To the Rescue (U)
2432 - Premier Action Soccer (E)
2435 - Pirates of the Caribbean - Dead Man's Chest (U)
2465 - Babar - To the Rescue (E)
2468 - Robots (J)
2479 - LEGO Star Wars II - The Original Trilogy (U)
2483 - LEGO Star Wars II - The Original Trilogy (E)
2514 - 2 in 1 - Uno & Skip-Bo (U)
2524 - Bratz - Forever Diamondz (U)
2525 - Dora the Explorer - Dora's World Adventure (U)
2543 - Uno 52 (U)
2544 - Scurge Hive (E)
2546 - Bratz - Forever Diamondz (G)
2554 - Marvel - Ultimate Alliance (U)
2559 - Juka and the Monophonic Menace (U)
2560 - Scurge Hive (U)
2576 - Bionicle - Heroes (U)
2579 - Bionicle - Heroes (E)
2586 - Eragon (E)
2587 - Eragon (U)
2593 - Die Biene Maja Klatschmohnwiese in Gefahr (G)
2639 - Bratz Babyz (E)
2646 - Bratz Babyz (U)
2647 - Marvel Ultimate Alliance (E)
2664 - Shamu's Deep Sea Adventures (E)
2667 - Bratz - Forever Diamondz (E)
2679 - Best Friends - My Horse (E)
2680 - Pippa Funell 2 (E)
2681 - 2 in 1 - Uno & Skip-Bo (E)
2701 - Zoey 101 (U)
2708 - Uno Freefall (U)
2719 - Uno 52 (E)
2731 - Postman Pat and the Greendale Rocket (E)
2740 - Paard & Pony - Paard in Galop (E)
2746 - Cocoto - Kart Racer (E)
2748 - Uno Free Fall (E)
2761 - Cocoto Platform Jumper (E)
2762 - Harry Potter And The Order Of The Phoenix (U)
2763 - 2 In 1 - Pferd And Pony (Mein Pferdehof) & Lass Uns Reiten 2 (G)
2768 - Crash of the Titans (U)
2769 - The Legend of Spyro - The Eternal Night (U)
2771 - Bratz - The Movie (U)
2779 - Bratz - The Movie (G)
2781 - Crash of the Titans (E)
2782 - Bratz - The Movie (E)
2795 - The Bee Game (U)
2796 - The Legend of Spyro - The Eternal Night (E)
2797 - Harry Potter Collection (E)
2799 - Let's Ride - Friends Forever (U)
2800 - Word Safari - The Friendship Totems (U)

If you're a developer and would like to extend the current functionality for a fork or your own program, you're welcome to do so. A header file is included in the repository for easy embedding into other programs. The program is licensed under the MIT license, so as long as you keep the license notice you can do whatever you want.

EDIT 7/21/20: Added info about find_krawall_offsets.
EDIT 7/22/20: Added info about final UnkrawerterGBA tool.
EDIT 7/25/20: Updated for 1.0 release.
EDIT 8/14/20: Updated for 1.1 release.
EDIT 8/18/20: Updated for 2.0 release.
EDIT 9/14/20: Updated for 2.1 release.
EDIT 10/09/20: Updated for 3.0 release.
EDIT 10/18/20: Updated for 3.1 release.
 
Last edited by JackMacWindows,

JackMacWindows

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
53
Trophies
0
XP
237
Country
United States
"pretty much all ROM files that use Krawall"
Homebrew aside is there anything you are missing or is this more of a "in case they find a Japanese v1.1 of something one day"?

I scanned through a collection of GBA ROMs for a Krawall signature (looks like "$Id: Krawall" in the ROM) and ripped the music from any that had the signature. (This yielded the list in the OP.) It was able to rip all of those ROMs successfully, so unless there's some older game that uses some different format and doesn't have the signature, it should work with all Krawall games. The code is based off the source for the latest version, which in my experience is the most common. That version is from 2005, so any homebrew made since then should definitely work. (I did test it on one homebrew that happened to be in the collection - the GBADev 2004Mbit Competition - and it ripped 11 modules. There might be more, but I didn't try to rip with a lower threshold.)

One thing to note is that for games that use versions before 2004-07-07, a slightly different format was used for patterns that was broken in 1.x. 2.0 fixed this for any game with the signature and date, but games that have those older versions and have the signature stripped will have to have the UnkrawerterGBA source modified to set the version manually. (One game I've found to be like this is The Sims Bustin' Out. Interestingly, its Japan release, just called The Sims, does have the signature, even though they are pretty much the same besides language.) I'll release a fix soon that adds a manual override for the Krawall version, for games that use the old versions and have no signature.
 

JackMacWindows

Well-Known Member
OP
Newcomer
Joined
Jan 16, 2016
Messages
53
Trophies
0
XP
237
Country
United States
Double-posting again to mention that UnkrawerterGBA is now at version 3.0! This version introduces the ability to rip modules to S3M files. This is a huge improvement for ROMs that originally used S3M files and effects. S3M music that previously needed XM compatibility fixes can now be ripped to S3M files without needing those hacks, improving the quality of the rip. S3M compatibility is automatically detected by default. You can get it at https://github.com/MCJack123/UnkrawerterGBA/releases/tag/3.0.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
    N @ natedogwoof: i have twilight menu