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.
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.
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)
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,