1. JackMacWindows

    OP JackMacWindows Advanced Member
    Newcomer

    Joined:
    Jan 16, 2016
    Messages:
    52
    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 (2.1) is available for Windows x64, Mac, and Linux: https://github.com/MCJack123/UnkrawerterGBA/releases/tag/2.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 module file format. These files can be played in any tracker program supporting XM files, such as OpenMPT or Winamp.

    As of 2.1 I'd say the accuracy of the rip is >99%. Everything has gone perfectly for me so far, except for one portion of a song which had some weird pitching effects that caused a slight audio glitch. This may have been caused by the pattern itself, and not the conversion.

    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 Gameboy.

    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.
     
    Last edited by JackMacWindows, Sep 14, 2020
    zfreeman, mte90, Chano and 4 others like this.
  2. Sterophonick

    Sterophonick GBAtemp Fan
    Member

    Joined:
    Jul 17, 2018
    Messages:
    314
    Country:
    United States
    Oh damn! This is incredible!
     
  3. FAST6191

    FAST6191 Techromancer
    Reporter

    Joined:
    Nov 21, 2005
    Messages:
    31,498
    Country:
    United Kingdom
    Missed this one the other day (must have been scrolling too fast).

    Anyway glad to see this format have a tool made.
     
  4. JackMacWindows

    OP JackMacWindows Advanced Member
    Newcomer

    Joined:
    Jan 16, 2016
    Messages:
    52
    Country:
    United States
    Last edited by JackMacWindows, Jul 25, 2020
  5. JackMacWindows

    OP JackMacWindows Advanced Member
    Newcomer

    Joined:
    Jan 16, 2016
    Messages:
    52
    Country:
    United States
  6. FAST6191

    FAST6191 Techromancer
    Reporter

    Joined:
    Nov 21, 2005
    Messages:
    31,498
    Country:
    United Kingdom
    "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"?
     
  7. JackMacWindows

    OP JackMacWindows Advanced Member
    Newcomer

    Joined:
    Jan 16, 2016
    Messages:
    52
    Country:
    United States
    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.
     
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - UnkrawerterGBA, Krawall, engine