News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: [3DS] FABTEX files on Pokémon Art Academy  (Read 649 times)

Hareon

  • Newbie
  • *
  • Posts: 1
    • View Profile
    • E4T
[3DS] FABTEX files on Pokémon Art Academy
« on: August 28, 2020, 09:34:59 pm »
I'm on a project to translate the game Pokémon Art Academy to brazilian portuguese, but I don't know how can I acess the graphics for translation.

They're on fabtex extension files. Someone know if there a program to export/import to edit the graphics?

Edit: Added a link for some files: https://drive.google.com/drive/folders/1t_Xv5pz9lN0JuthSUfucwBBm9fMBkRYJ?usp=sharing
« Last Edit: August 29, 2020, 10:15:51 pm by Hareon »

Anime_World

  • RHDN Patreon Supporter!
  • Jr. Member
  • *****
  • Posts: 32
    • View Profile
Re: [3DS] FABTEX files on Pokémon Art Academy
« Reply #1 on: August 31, 2020, 07:45:34 pm »
I made contact with Hareon and developed a tool for unpacking the containers and decoding the LZ4C chunks.
Basically the structure of the container is composed of 4 parameters:
Code: [Select]
0x0: magic
0x4: size
0x8: description
0xC: content
that are repeated constantly and hierarchically. So you have inside content, other block and another block inside this block content (inception?)... btw

On some magic types description is a string and size is the length.
On other types size is the length of content which can be a string or binary data.

Sample of Container Tree:
Code: [Select]
ROOT
╚══ ['FBRC', 571744, 'BNDL']
    ╠══ ['LIST', 562, 'FILE']
    ║   ╠══ ['LIST', 522, 'DATA']
    ║   ║   ╚══ ['USER', 509, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 20, 'particle_star.fabtex']
    ╠══ ['LIST', 726, 'FILE']
    ║   ╠══ ['LIST', 688, 'DATA']
    ║   ║   ╚══ ['USER', 676, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 17, 'glow_white.fabtex']
    ╠══ ['LIST', 920, 'FILE']
    ║   ╠══ ['LIST', 884, 'DATA']
    ║   ║   ╚══ ['USER', 871, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 15, 'vignette.fabtex']
    ╠══ ['LIST', 988, 'FILE']
    ║   ╠══ ['LIST', 944, 'DATA']
    ║   ║   ╠══ ['FBRC', 920, 'XML ']
    ║   ║   ║   ╠══ ['HEAD', 16, b'...']
    ║   ║   ║   ╚══ ['LIST', 884, 'DATA']
    ║   ║   ║       ╠══ ['ATRS', 100, b'...']
    ║   ║   ║       ╠══ ['CAT', 606, 'STAB']
    ║   ║   ║       ╠══ ['NODS', 150, b'...']
    ║   ║   ║       ╠══ ['SDAT', 450, b'...']
    ║   ║   ║       ╚══ ['SOFF', 136, b'...']
    ║   ║   ╚══ ['USER', 932, 'XMLD']
    ║   ╚══ ['NAME', 24, 'Title_Screen_Anim.fabxml']
    ╠══ ['LIST', 1206, 'FILE']
    ║   ╠══ ['LIST', 1162, 'DATA']
    ║   ║   ╚══ ['USER', 1150, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_01_JP.fabtex']
    ╠══ ['LIST', 1400, 'FILE']
    ║   ╠══ ['LIST', 1356, 'DATA']
    ║   ║   ╚══ ['USER', 1343, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_04_JP.fabtex']
    ╠══ ['LIST', 1570, 'FILE']
    ║   ╠══ ['LIST', 1526, 'DATA']
    ║   ║   ╚══ ['USER', 1513, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_04_UK.fabtex']
    ╠══ ['LIST', 1570, 'FILE']
    ║   ╠══ ['LIST', 1526, 'DATA']
    ║   ║   ╚══ ['USER', 1513, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_04_US.fabtex']
    ╠══ ['LIST', 1680, 'FILE']
    ║   ╠══ ['LIST', 1636, 'DATA']
    ║   ║   ╚══ ['USER', 1624, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_01_UK.fabtex']
    ╠══ ['LIST', 1680, 'FILE']
    ║   ╠══ ['LIST', 1636, 'DATA']
    ║   ║   ╚══ ['USER', 1624, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_01_US.fabtex']
    ╠══ ['LIST', 1856, 'FILE']
    ║   ╠══ ['LIST', 1812, 'DATA']
    ║   ║   ╚══ ['USER', 1799, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_02_JP.fabtex']
    ╠══ ['LIST', 1938, 'FILE']
    ║   ╠══ ['LIST', 1894, 'DATA']
    ║   ║   ╚══ ['USER', 1881, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_03_JP.fabtex']
    ╠══ ['LIST', 2220, 'FILE']
    ║   ╠══ ['LIST', 2176, 'DATA']
    ║   ║   ╚══ ['USER', 2164, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_02_UK.fabtex']
    ╠══ ['LIST', 2220, 'FILE']
    ║   ╠══ ['LIST', 2176, 'DATA']
    ║   ║   ╚══ ['USER', 2164, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_02_US.fabtex']
    ╠══ ['LIST', 2420, 'FILE']
    ║   ╠══ ['LIST', 2376, 'DATA']
    ║   ║   ╚══ ['USER', 2364, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_03_UK.fabtex']
    ╠══ ['LIST', 2420, 'FILE']
    ║   ╠══ ['LIST', 2376, 'DATA']
    ║   ║   ╚══ ['USER', 2364, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'logo_sheen_03_US.fabtex']
    ╠══ ['LIST', 2480, 'FILE']
    ║   ╠══ ['LIST', 2440, 'DATA']
    ║   ║   ╚══ ['USER', 2427, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 20, 'stroke_red_01.fabtex']
    ╠══ ['LIST', 3676, 'FILE']
    ║   ╠══ ['LIST', 3640, 'DATA']
    ║   ║   ╚══ ['USER', 3628, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 16, 'copyright.fabtex']
    ╠══ ['LIST', 3898, 'FILE']
    ║   ╠══ ['LIST', 3858, 'DATA']
    ║   ║   ╚══ ['USER', 3845, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 20, 'stroke_red_02.fabtex']
    ╠══ ['LIST', 4288, 'FILE']
    ║   ╠══ ['LIST', 4248, 'DATA']
    ║   ║   ╚══ ['USER', 4235, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 20, 'paper_foongus.fabtex']
    ╠══ ['LIST', 4656, 'FILE']
    ║   ╠══ ['LIST', 4612, 'DATA']
    ║   ║   ╠══ ['FBRC', 4588, 'XML ']
    ║   ║   ║   ╠══ ['HEAD', 16, b'...']
    ║   ║   ║   ╚══ ['LIST', 4552, 'DATA']
    ║   ║   ║       ╠══ ['ATRS', 1184, b'...']
    ║   ║   ║       ╠══ ['CAT', 1930, 'STAB']
    ║   ║   ║       ╠══ ['NODS', 1410, b'...']
    ║   ║   ║       ╠══ ['SDAT', 1266, b'...']
    ║   ║   ║       ╚══ ['SOFF', 644, b'...']
    ║   ║   ╚══ ['USER', 4600, 'PANM']
    ║   ╚══ ['NAME', 24, 'TitleScreen_Edit.fabpanm']
    ╠══ ['LIST', 4786, 'FILE']
    ║   ╠══ ['LIST', 4750, 'DATA']
    ║   ║   ╚══ ['USER', 4737, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 16, 'bridge_02.fabtex']
    ╠══ ['LIST', 4978, 'FILE']
    ║   ╠══ ['LIST', 4938, 'DATA']
    ║   ║   ╚══ ['USER', 4925, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 20, 'stroke_red_03.fabtex']
    ╠══ ['LIST', 5008, 'FILE']
    ║   ╠══ ['LIST', 4970, 'DATA']
    ║   ║   ╚══ ['USER', 4958, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 18, 'paper_shape.fabtex']
    ╠══ ['LIST', 5762, 'FILE']
    ║   ╠══ ['LIST', 5726, 'DATA']
    ║   ║   ╚══ ['USER', 5714, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 16, 'bridge_01.fabtex']
    ╠══ ['LIST', 6292, 'FILE']
    ║   ╠══ ['LIST', 6250, 'DATA']
    ║   ║   ╚══ ['USER', 6238, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 21, 'stroke_blue_01.fabtex']
    ╠══ ['LIST', 7748, 'FILE']
    ║   ╠══ ['LIST', 7704, 'DATA']
    ║   ║   ╚══ ['USER', 7692, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 23, 'paper_charmander.fabtex']
    ╠══ ['LIST', 7922, 'FILE']
    ║   ╠══ ['LIST', 7880, 'DATA']
    ║   ║   ╚══ ['USER', 7868, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 22, 'stroke_green_01.fabtex']
    ╠══ ['LIST', 7970, 'FILE']
    ║   ╠══ ['LIST', 7928, 'DATA']
    ║   ║   ╚══ ['USER', 7915, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 21, 'stroke_blue_02.fabtex']
    ╠══ ['LIST', 8300, 'FILE']
    ║   ╠══ ['LIST', 8260, 'DATA']
    ║   ║   ╚══ ['USER', 8248, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 20, 'paper_sylveon.fabtex']
    ╠══ ['LIST', 8500, 'FILE']
    ║   ╠══ ['LIST', 8462, 'DATA']
    ║   ║   ╚══ ['USER', 8450, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 18, 'paper_snivy.fabtex']
    ╠══ ['LIST', 9458, 'FILE']
    ║   ╠══ ['LIST', 9416, 'DATA']
    ║   ║   ╚══ ['USER', 9403, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 22, 'stroke_green_02.fabtex']
    ╠══ ['LIST', 9462, 'FILE']
    ║   ╠══ ['LIST', 9420, 'DATA']
    ║   ║   ╚══ ['USER', 9407, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 21, 'stroke_blue_03.fabtex']
    ╠══ ['LIST', 10502, 'FILE']
    ║   ╠══ ['LIST', 10460, 'DATA']
    ║   ║   ╚══ ['USER', 10448, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 22, 'stroke_green_03.fabtex']
    ╠══ ['LIST', 21860, 'FILE']
    ║   ╠══ ['LIST', 21816, 'DATA']
    ║   ║   ╠══ ['FBRC', 21792, 'XML ']
    ║   ║   ║   ╠══ ['HEAD', 16, b'...']
    ║   ║   ║   ╚══ ['LIST', 21756, 'DATA']
    ║   ║   ║       ╠══ ['ATRS', 8140, b'...']
    ║   ║   ║       ╠══ ['CAT', 3598, 'STAB']
    ║   ║   ║       ╠══ ['NODS', 9990, b'...']
    ║   ║   ║       ╠══ ['SDAT', 2582, b'...']
    ║   ║   ║       ╚══ ['SOFF', 996, b'...']
    ║   ║   ╚══ ['USER', 21804, 'PLYT']
    ║   ╚══ ['NAME', 24, 'TitleScreen_Edit.fabplyt']
    ╠══ ['LIST', 53074, 'FILE']
    ║   ╠══ ['LIST', 53036, 'DATA']
    ║   ║   ╚══ ['USER', 53024, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 17, 'bg_long_02.fabtex']
    ╠══ ['LIST', 53194, 'FILE']
    ║   ╠══ ['LIST', 53156, 'DATA']
    ║   ║   ╚══ ['USER', 53143, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 17, 'bg_long_01.fabtex']
    ╠══ ['LIST', 77334, 'FILE']
    ║   ╠══ ['LIST', 77300, 'DATA']
    ║   ║   ╚══ ['USER', 77287, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 14, 'logo_JP.fabtex']
    ╠══ ['LIST', 112442, 'FILE']
    ║   ╠══ ['LIST', 112408, 'DATA']
    ║   ║   ╚══ ['USER', 112396, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 14, 'logo_UK.fabtex']
    ╠══ ['LIST', 112442, 'FILE']
    ║   ╠══ ['LIST', 112408, 'DATA']
    ║   ║   ╚══ ['USER', 112396, 'LZ4C', b'...']
    ║   ╚══ ['NAME', 14, 'logo_US.fabtex']
    ╚══ ['NUM ', 4, 40]
PS: If an moderator can move this topic to correct section, i will so glad.

« Last Edit: September 01, 2020, 08:54:57 pm by Anime_World »