Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

HalfBrick Studios Fruit Ninja/Mortar Engine *.UISCREEN

Featured Replies

  • Author
  • Localization

LolHacksRule, posted Mon May 24, 2021 12:21 am (64241)


The game previously used XML files, but as Fruit Ninja PIB, UISCREEN files are used which is a binary form of a screen XML. I tried to document the format. Anyone want to help me with it? Thanks.

Code:
//------------------------------------------------
//--- 010 Editor v10.0.2 Binary Template
//
//      File: Halfbrick Studios Fruit Ninja/Mortar Engine UI Screen Binary File
//      Authors: LolHacksRule
//      Version: 1
//      Purpose: Gets data out of the binary.
//      Category: Deserializing
//      File Mask: FSIU
//      ID Bytes:
//      History:
//------------------------------------------------

struct UIScreenFileBin {
    struct UIScreenFileHeader {
        char   UIScreenFileHdrStr[4]; //Should be UISF/FSIU
        if (UIScreenFileHdrStr == "UISF")
        BigEndian();
        else if (UIScreenFileHdrStr == "FSIU")
        LittleEndian();
        //isLE = true;
        byte   unk;
        byte   unkCnt;
        byte   unkCnt2;
        byte   unkCnt3;
        byte   unkCnt4;
        byte   unkCnt5;
        byte   unkCnt6;
        byte   unkCnt7;
        //if (isLE = true);
        byte   unknown[32];
        byte   dummy[8];
    } UISFHeader;

    //UISB

    struct UIScreenBlock {
        char   UIScreenBlockHdrStr[4];
        int    UIScreenVersionStrSize;
        char   UIScreenVersionStr[UIScreenVersionStrSize];
        //char   UIScreenSKUStr;
   
        //if (isLE = true)
   
        struct UIStringTableBlock {
            char   UISTHdrStr[4];
            int    UISTDummy;
            int    UISTDummy2;
            int    UISTStringSize;
            char   UIScreenVersionStr[UISTStringSize];
            byte   UISTUnkBytes[23];
            byte   UISTUnkBytes2[25];
            } UISTBlock;
   
        struct UIComponent {
            char   UICOMPStr[4];
            int    UICOMPUNK;
            } UICOMPBlock;
   
        struct UIComponentHeader {
            char   UICOMPHdrStr[4];
            byte   UICOMPHdrUNK[13];
            } UICHHdr;

        string nextBlock;
   
        //struct UITab {
            //char UITABHdrStr[3];
            //byte UITabUNK[29];
            //} UITabContent;
   
        //struct UITab2 {
            //char UITAB2HdrStr[3];
            //byte UITab2UNK[17];
            //} UITab2Content;

        if (nextBlock = "SPMC")

            struct UISPMC {
            } UISPMCContent;

            nextBlock;
   
        /* else if (nextBlock = "UICH")

        struct UIComponentHeader2 {
            char   UICOMPHdr2Str[4];
            byte   UICOMPHdr2UNK[13];
            } UICH2Hdr;

            nextBlock;
   
        else if (nextBlock = "TAB")

            struct UITab3 {
                char UITAB3HdrStr[3];
                byte UITab3UNK[17];
            } UITab3Content;

            nextBlock;
   
        else if (nextBlock = "UIME")
   
            struct UIMetadataEnd {
                char UIMetaHdrStr[4];
                byte unk[20];
            } UIMetaEnd;
           
            nextBlock;
           
        else if (nextBlock = "MAIUBAIU")
            struct UIUNKASHECK {
            byte zero[4];
            } UIUNKASHECKEND;

            nextBlock;
   
            else if (nextBlock = "UISE")
   
                struct UIScreenEndHeader {
                char   UIScreenEndHdrStr[4];
            } UIScreenEnd; */
        } UIScreenBlockContent;
} UIScreenFile;
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.