Band Brothers DX
From auby.no
Contents |
Introduction
Band Brothers DX is the sequel to Band Brothers, both Japanese only releases. Nintendo have shown the original Band Brothers in English, but that was a long time ago and we haven't heard about it since.
Gameplay
New features
DX builds on the original, and uses a lot of the same artwork and background / menu music. The midi samples also seem about the same, not that much different. Gameplay has gotten numerous changes, some of which are:
- Tempo change markers (<<, >>)
- Guitar type play (somewhat like Jam Sessions)
- karaoke mode (yay for Japanese karaoke)
- Bigger and better editor
- Downloadable songs over WiFi
Most menus can now be navigated with the arrow keys as well, which imo is a good thing as I prefer using buttons. Song selection is now a left / right affair, as opposed to the vertical list from the first game. Faster to use but not as stylish. You can also search after song title by inputting parts of the name.
Song selection
I've played most of the songs by now, and to be perfectly honest, I think the song selection it sucks. The amount of classic (thus royalty free) music, is way too high, as they're all very boring, and the rest lack the awesomeness that was BB. I can only hope that the 200 downloadable songs will offer something better, preferably 100 J-Pop and 100 game theme songs. I can dream...
Timing
Timings seem identical to the original, meaning pretty tight. How well you do is now spelled out with text as you hit notes. "Great", "Good", "Bad" will hover out depending on how well you do.
Nintendo Wii speaker channel
Next to the manual is a single sheet of paper with a code on it. This code allows you to download a Speaker Channel to your Wii. The Speaker Channel allows DSes in the same room as the Wii (Max is 8, I think) as a speaker, providing better and louder sound. It also displays karaoke. As my Japanese-fu is weak, I have not been able to figure out how to install it yet, and from what I can gather it can only be done on Japanese Wii. I will look into a homebrew solution to install and/or run this channel ASAP.
English friendliness
I'd rank DX as less English friendly than the original, as there is more text in general, and Barbara Bat rarely shuts up. Pressing the A button continously usually does the trick though, and gets you into gameplay sooner or later. The manual is also entirely Japanese and won't help you much.
Once you get to the main menu there are three choices (from what I can gather):
- Single player (here you can unlock songs)
- Free play / multiplayer
- Wifi download service
Selecting a part to play is now actually a bit easier, thanks to a new feature. When you select a part with the pen, or use the arrow keys to select one, the volume of the selected part will increase. This makes it a lot easier than before.
English patch
I am currently developing an English patch. It's progressing well, and when it's done most if not all of the menus will be in English. Stay tuned for more info on this. Song titles will also be replaced with roman characters (and proper English name where applicable.)
A little teaser:
Difficulty
When you boot it for the first time you get a tutorial, somewhat like the very easy mode on the original. You only need to tap the rhythm, any button works. After this however, you get thrown into full button play on your 2nd song. this is a much steeper curve, I guess they expect people to have played the first one. You also need to use the L and R buttons for octave and sharps after only a few songs. A good change in my opinion, but might be difficult for new players.
Single player is a linear thing, where you play gigs to earn stars. A 100% is worth much more than lower scores, so try to do well if you want to progress quickly.
Technical information
As with the previous one, I will do my best to reverse engineer various parts of BB DX. The work I did on the original will come in handy, as there are many similarities.
Tools
Source code will be released later, and is available on request. If you have a special interest in these right now, send me an e-mail.
- gak2mid - Takes an uncompressed song and converts it to midi. Named after the folder containing the songs on the card.
- sav2gak - Unpacks a save file to individual gak files. These can further converted to midi through gak2mid
- mid2gak - Planned. Once I have enough info about the song header (wouldn't mind some help there) I will write a midi to gak converter.
- tex2png - Converts in game textures to PNG format
- png2tex - Converts PNGs back to texture format
- bbpatch - Replaces a file in the rom by simply supplying the rom and a modified file. No offsets or anything required.
tex2png, png2tex and bbpatch are the primary tools I use while developing the English patch. As the English translation is out of my hands and not going very fast, I've decided to release my tools. You can download these here: http://www.auby.no/files/bbdx/bbtools.rar
songs
Single player
Every song in the main part of the game is stored in the folder called "Snd\Gak". All the files are the same size, 32 512 bytes, making the 48 songs in the game take up ~1.4MByte of space on the card. Most of them do not actually use all that space though, and the rest is padded. The songs are numbered, and also contains a short form of the name of the song. A full list of the song files can be seen here: Band Brothers DX Song list
As part of figuring out how the songs work, I've written a gak -> midi converter so I can actually *hear* if my theories are correct. You can get the current midi files from the songs in the game here:
Many have errors etc, to be expected.
Editable songs
Examples you can edit are stored in "Snd\ArrangeGak". There are two sub folders, "beat3", and "beat4", which has 3/4 and 4/4 songs in that order.
Downloadable songs
Downloadable songs are stored in the save, which on DS cards in general have been EEPROM, as was the case for BB. I will get back to this later. There are already more than 200 songs available, but you can only store 100 of them. You also can't delete any to download new ones, but this is something I will definitely look into.
Japanese developer Yasu has written a tool to inject songs into the BB DX save. You can find it here. http://home.usay.jp/pc/etc/nds , or if you have trouble navigating, direct link: http://home.usay.jp/pc/etc/nds/bdxtool0806300030.zip
I haven't had time to test this yet, but forums indicate it works fine. Also works to insert songs from the original BB. If you use an original card you would also need a tool to read and write the save, and I don't know of any that supports the BB FX save chip yet.
I do have a save dump though, and I have taken a look at it. The save chip is actually 8 MByte, a first for DS games. Every song in the save takes up 0x8000 bytes, and they're aligned perfectly throughout the save. (not surprising.) Songs are compressed with lz77.
Song compression
Info in this section is still being figured out and might contain errors.
Songs stored on the save are compressed, without any good reason as far as I can see. The save is 8 MByte which makes for 256 0x8000 slots. Not all are used for songs, I expect the rest are for high scores. First is a 0x40 byte DLC header, which contains uninteresting info. Next is the *uncompressed* header, size 0x1a0, which is the same format as the on card songs. After that comes the regular file, as seen on card, except that it's all lz77 compressed. Once unpacked, parts gain the same offsets they have on card, and thus also follows the format below.
Some progress:
I have improved my apps, and all songs in the saves should now be detected and converted, uploaded in the folders above.
Song format
Instead of typing the somewhat complex format into the Wiki, I have made a C(++) header that you can use in Hex Workshop to browse the files, or in your own C(++) application:
http://www.auby.no/band2/gakfile.h
Update 2008.07.04 Major update to header file. Comments and tempo specs added. Instruments and other small parts as well.
It's still work in progress, and if you have any info about the unknown parts contact me asap.
Part format
The actual part format is the same as BB, with some additions for new gameplay styles. I am still working on this, but here is some info:
NB: There are no time or tempo info inside the parts. Everything here is just notes you actually play.
Each note is one (1) byte. Every byte sets the note value of 1/16th of a beat. If there are no notes it just takes up empty space. The actual note values are MIDI values, which imo clearly shows how they track these songs in house :P
Notes lasting more than 1/16th of a beat (most notes do) have the MSB set to 1 to indicate they are continuing an already playing note. Thus, a 1 beat long middle C would be 0x3CBCBCBC.
Non MIDI-valid values (see http://www.harmony-central.com/MIDI/Doc/table2.html) have special meaning. BB DX probably adds more.
-------------------------------------------------
value | meaning
-------------------------------------------------
0x00 | break, empty
-------------------------------------------------
0xff | Next 3 notes are triplets. This extends
the length of the next 3 notes or breaks
by 1 / 3rd.
Graphics formats
Every menu in the game are stored twice in the rom: as part of a large texture used for the 3d engine, and secondly, as a tiled image used for the 2d engine. I have written tools to convert to and from textures, but only from 2d at the moment. The 2d format is only used when the menu is selected, that is, if there are four items, and you select one, three will be rendered with the texture and the selected one will be rendered with the 2d engine.
Texture as converted by tex2png. Note the bleeding at the bottom; this is no issue, as this isn't use anywhere. The source data is like that. This png also properly contains an alpha channel for transparent pixels, and each of these textures will be used as base for the translated ones.
Textures
Replacing the textures already works fine. Note that from the description above, the menus will only be replaced when not selected. For a first version of the English patch this will be perfectly fine, but I do plan to replace the 2d data as well later. Textures are in general 256 pixels wide.
Most of the textures are 256 color with a palette. The palette can have 256 entries, but most have a few less. If you're replacing the graphics, be sure to not use more colors than the original image, otherwise the palette won't fit. My tools will warn in case you are trying to do this, and won't allow replacing file with larger ones. Palettes are stored as ARGB in 1:5:5:5 format.
2D graphics
Most if not all of the 2D graphics used for menus are stored as tiled 4 bit images. tex2png now supports this format, and will output a PNG such as:
Note that some colors are ugly because there are 16 distinct palettes in the palette file, and I have no way to know which one is required for each tile. This won't be a problem though, as we will replace the entire image and palettes when we translate these. The 2D images have 8x8 tiles, with 4 bit palette look up index for each pixel. Width of the 2D texture is 256 in all the files I have tried.
