
#define ASCII_TO_MARIO(asc) (((asc) >= '0' && (asc) <= '9') ? ((asc) - '0') :              \
((asc) >= 'A' && (asc) <= 'Z') ? ((asc) - 'A' + 0x0A) :       \
((asc) >= 'a' && (asc) <= 'z') ? ((asc) - 'a' + 0x24) : 0x00)

#define ARRAY_SIZEE(x) (sizeof(x) / sizeof(*x))

const char* gPraccyWarpVarNames[] = {
    "uFUCKYWARPS",
    "uSEQIND",
    "uSETWARP",
    "uCASTLEMOVEMENT",
    "uWARPINFO",
"uTEXT1",
"uTEXT2",
"uTEXT3",
"uTEXT4",
"uTEXT5",
"uTEXT6",
"uTEXT7",
"uTEXT8",
"uTEXT9",
"uTEXT10",
"uTEXT11",
"uTEXT12",
"uTEXT13",
"uTEXT14",
"uTEXT15",
"uTEXT16",
"uTEXT17",
"uTEXT42",
"uTEXT18",
"uTEXT19",
"uTEXT20",
"uTEXT21",
"uTEXT22",
"uTEXT23",
"uTEXT24",
"uTEXT25",
"uTEXT26",
"uTEXT27",
"uTEXT28",
"uTEXT29",
"uTEXT30",
"uTEXT31",
"uTEXT32",
"uTEXT33",
"uTEXT34",
"uTEXT35",
"uTEXT36",
"uTEXT37",
"uTEXT38",
"uTEXT39",
"uTEXT40",
"uTEXT41",
"uSEQ",
"uREPEAT",
"uNONE"
};

const char* gPraccyWarpNames[] = {
    "Fuckywarps",
    "Seq index",
    "Warp index",
    "Castlemovement",
    "Warpinfo",

    "Spawn",
    "MHV exit",
    "TTT exit",
    "Transgender",
    "OW2",
    "SI exit",
    "MM exit",
    "B2 exit",
    "BLL exit",
    "SSL exit",
    "OW3",
    "SW exit",
    "PDT exit",
    "Hallway",
    "Hallway2",
    "CS entrance",
    "CS exit",
    
    "Init / US",
    "US / RRD",
    "RRD / MHV",
    "MHV / B1",
    "B1 / Trans",
    "Trans / OW2",
    "OW2 / AET",
    "AET / SRF",
    "WC / PHH",
    "PHH / TTT",
    "TTT / Trans",
    "Trans / OW2",
    "OW2 / SI",
    "SI",
    "MM",
    "B2",
    "BLL",
    "SSL",
    "OW3",
    "SW",
    "PDT",
    "Hallway",
    "Hallway2",
    "CS entrance",
    "CS exit",

    "Sequence",
    "Repeat",
    "None"
};

int main() {
    printf("%02x\n", ASCII_TO_MARIO('A'));
    for (int i = 0; i < ARRAY_SIZEE(gPraccyWarpNames); i++) {
        printf("const u8 %s[] = {", gPraccyWarpVarNames[i]);
        char *c = gPraccyWarpNames[i];
        char d;
        while ((d=*(c++)) != '\0') {
            unsigned char e = (d == '/') ? 0xFA : ((d == ' ') ? 0x9E : ASCII_TO_MARIO(d));
            printf("0x%02x,", e);
        }
        printf("0xFF}; // %s\n", gPraccyWarpNames[i]);
    }
}