#include <stdio.h>
char brawlChar(unsigned char c1, unsigned char c2)
{
if (c1 == 0xFF)
{
return (char) (c2 + 0x20);
}
else if ((c1 == 0x30 || c1 == 0x00) && c2 == 0x00)
{
return ' ';
}
else
{
return (char) NULL;
}
}
int main(int argc, char *argv[])
{
/* assume proper usage */
int i;
unsigned char printc = (char) NULL;
unsigned char printc2 = (char) NULL;
FILE *fp_i = fopen(argv[1], "rb");
if(fp_i == NULL) {
printf("Error opening input file %s.\n", argv[1]);
exit(-1);
}
// Drop the first 10 bytes
for(i = 0; i < 0x0A; i++) {
fgetc(fp_i);
}
// Print the stage description
for(i = 0; i < 21; i++) {
printc = fgetc(fp_i);
printc2 = fgetc(fp_i);
printc = brawlChar(printc, printc2);
if (printc != (char) NULL)
{
printf("%c", printc);
}
}
printf("\n");
// Drop the next several bytes
for(i = 0; i < 20; i++) {
fgetc(fp_i);
}
// Print stage style
// 0 = nature
// 1 = factory
// 2 = remains
printf("%d\n", fgetc(fp_i));
// Print stage size
// 0 = small
// 1 = medium
// 2 = large
printf("%d\n", fgetc(fp_i));
// Print number of blocks
printf("%d\n", fgetc(fp_i));
// Skip unknown byte
fgetc(fp_i);
// Print music ID
printc = fgetc(fp_i);
printc2 = fgetc(fp_i);
printf("%x%x\n", printc, printc2);
// Skip unknown bytes
fgetc(fp_i);
fgetc(fp_i);
// Print the stage name
for(i = 0; i < 16; i++) {
printc = fgetc(fp_i);
printc2 = fgetc(fp_i);
printc = brawlChar(printc, printc2);
if (printc != (char) NULL)
{
printf("%c", printc);
}
}
printf("\n");
// For our purposes, we are done here (block placement info follows)
return 0;
}