Maplestory 2

The Original Forum. Game archives, full of resources. How to open them? Get help here.
User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Sun May 27, 2018 3:33 am

Nif models are able to be opened and exportedin Noesis.
Image
Image

Image
Image

Image
Aka Wunkolo

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Wed May 30, 2018 7:17 pm

Put all my code up on github.

Includes an expander and a flattener and works for all four file PackStream versions, including the elusive OS2F/PS2F.

https://github.com/Wunkolo/Maple2Tools

For reader's sake here's all the mapped out structures:

Code: Select all

struct PackStreamVer1 // MS2F
{
public:
	std::uint32_t Pad;                    // Always zero

	std::uint64_t FATCompressedSize;      // DEFLATE length
	std::uint64_t FATEncodedSize;         // Base64 length

	std::uint64_t FileListSize;           // Uncompressed size
	std::uint64_t FileListCompressedSize; // DEFLATE length
	std::uint64_t FileListEncodedSize;    // Base64 length

	std::uint64_t TotalFiles;             // Total Files
	std::uint64_t FATSize;                // Uncompressed size
};
static_assert(
	sizeof(PackStreamVer1) == 0x3C,
	"sizeof(PackStreamVer1) != 0x3C"
);

struct PackStreamVer2 // NS2F
{
public:
	std::uint32_t TotalFiles;             // Total Files

	std::uint64_t FATCompressedSize;      // DEFLATE length
	std::uint64_t FATEncodedSize;         // Base64 length
	std::uint64_t FATSize;                // Uncompressed size

	std::uint64_t FileListCompressedSize; // DEFLATE length
	std::uint64_t FileListEncodedSize;    // Base64 length
	std::uint64_t FileListSize;           // Uncompressed size
};
static_assert(
	sizeof(PackStreamVer2) == 0x34,
	"sizeof(PackStreamVer2) != 0x34"
);

struct PackStreamVer3 // OS2F/PS2F
{
	std::uint32_t TotalFiles;             // Total Files
	std::uint32_t Pad;                    // Always Zero

	std::uint64_t FATCompressedSize;      // DEFLATE length
	std::uint64_t FATEncodedSize;         // Base64 length

	std::uint64_t FileListCompressedSize; // DEFLATE length
	std::uint64_t FileListEncodedSize;    // Base64 length
	std::uint64_t FileListSize;           // Uncompressed size

	std::uint64_t FATSize;                // Uncompressed size
};
static_assert(
	sizeof(PackStreamVer3) == 0x38,
	"sizeof(PackStreamVer3) != 0x38"
);

// Haven't verified these myself.
enum class CompressionType : std::uint32_t
{
	Deflate = 0xEE000009,
	Png     = 0xEE000000,
	Usm     = 0xFF000000
};

struct PackFileHeaderVer1 // MS2f
{
public:
	std::uint32_t Pad1;
	std::uint32_t FileIndex;
	CompressionType Compression;
	std::uint32_t Pad2;
	std::uint64_t Offset;
	std::uint64_t EncodedSize;
	std::uint64_t CompressedSize;
	std::uint64_t Size;
};
static_assert(
	sizeof(PackFileHeaderVer1) == 0x30,
	"sizeof(PackFileHeaderVer1) != 0x30"
);

struct PackFileHeaderVer2 // NS2F
{
public:
	CompressionType Compression;
	std::uint32_t FileIndex;
	std::uint32_t EncodedSize;
	std::uint64_t CompressedSize;
	std::uint64_t Size;
	std::uint64_t Offset;
};
static_assert(
	sizeof(PackFileHeaderVer2) == 0x24,
	"sizeof(PackFileHeaderVer2) != 0x24"
);

struct PackFileHeaderVer3 // OS2F/PS2F
{
public:
	CompressionType Compression;
	std::uint32_t FileIndex;
	std::uint32_t EncodedSize;
	std::uint32_t Pad;
	std::uint64_t CompressedSize;
	std::uint64_t Size;
	std::uint64_t Offset;
};
static_assert(
	sizeof(PackFileHeaderVer3) == 0x28,
	"sizeof(PackFileHeaderVer3) != 0x28"
);
Aka Wunkolo

Mikuhl
ultra-n00b
Posts: 2
Joined: Wed Oct 10, 2018 7:43 pm

Re: Maplestory 2

Post by Mikuhl » Wed Oct 10, 2018 7:47 pm

The game has released today, October 10th. I would love to see more research. Looking to build a companion app.

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Thu Oct 11, 2018 3:38 am

Can confirm that my dumper still works with public release of the game.

Though there are these"m2u" files though that are used for user-generated content. I'll poke around the .exe for some info.

https://ugc.maplestory2.nexon.net/item/ ... 105471.m2u
Last edited by DEElekgolo on Thu Oct 11, 2018 8:45 am, edited 1 time in total.
Aka Wunkolo

Mikuhl
ultra-n00b
Posts: 2
Joined: Wed Oct 10, 2018 7:43 pm

Re: Maplestory 2

Post by Mikuhl » Thu Oct 11, 2018 4:13 am

Image

Possible constants from decompiling the luapack.o?

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Thu Oct 11, 2018 8:50 am

DEElekgolo wrote:Can confirm that my dumper still works with public release of the game.

Though there are these"m2u" files though that are used for user-generated content. I'll poke around the .exe for some info.

https://ugc.maplestory2.nexon.net/item/ ... 105471.m2u
Turns out to just be a simple zlib compression on a DDS texture.
Image
Image
Aka Wunkolo

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Fri Oct 12, 2018 7:54 am

Here's a bunch of UGC meshes that should make skinning and such a lot easier
https://www.mediafire.com/file/d40pdpb9 ... .11.18.zip
Aka Wunkolo

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Sun Oct 14, 2018 10:33 pm

DEElekgolo wrote:
DEElekgolo wrote:Can confirm that my dumper still works with public release of the game.

Though there are these"m2u" files though that are used for user-generated content. I'll poke around the .exe for some info.

https://ugc.maplestory2.nexon.net/item/ ... 105471.m2u
Turns out to just be a simple zlib compression on a DDS texture.
Image
Image
Turns out this vulnerability on Nexon's part is the cause of a lot of the UGC theft that has been going on lately. Where people are very easily able to just sniff an m2u url and decompress it to steal each other's textures.
Hope Nexon cleans this up at some point in the future. I won't be focusing on UGC stuff.
Aka Wunkolo

Doctor Loboto
mega-veteran
mega-veteran
Posts: 192
Joined: Mon Oct 06, 2008 2:52 am
Has thanked: 17 times
Been thanked: 2 times

Re: Maplestory 2

Post by Doctor Loboto » Tue Oct 23, 2018 4:45 am

This is pretty awesome except for the fact there's no compiled Windows build and I can't for the life of me figure out how to compile it myself...

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Fri Oct 26, 2018 7:20 am

Doctor Loboto wrote:This is pretty awesome except for the fact there's no compiled Windows build and I can't for the life of me figure out how to compile it myself...
Just added a precompiled windows build:
https://github.com/Wunkolo/Maple2Tools/ ... s/tag/v1.0
Aka Wunkolo

jjlovemaple
ultra-n00b
Posts: 3
Joined: Wed Nov 28, 2018 8:00 am

Re: Maplestory 2

Post by jjlovemaple » Wed Nov 28, 2018 8:13 am

Thank you for your amazing tool! May I ask what tool/software do you use to show the animation? I was trying to export the nif files to obj files for blender, but the texture information was completely lost (I think) let alone skeleton/bones.

Thanks again

User avatar
DEElekgolo
beginner
Posts: 35
Joined: Thu Dec 23, 2010 9:49 am
Has thanked: 6 times
Been thanked: 18 times

Re: Maplestory 2

Post by DEElekgolo » Wed Nov 28, 2018 8:56 am

Noesis!
I exported an FBX from it which maintains the rigging and bones
Aka Wunkolo

jjlovemaple
ultra-n00b
Posts: 3
Joined: Wed Nov 28, 2018 8:00 am

Re: Maplestory 2

Post by jjlovemaple » Wed Nov 28, 2018 5:09 pm

DEElekgolo wrote:Noesis!
I exported an FBX from it which maintains the rigging and bones
thank you so much! when I try to import fbx to blender 2.79, it said blender only support fbx version more than 7000 while the fbx version I import is 6100. Shall I just abandon this blender?

jjlovemaple
ultra-n00b
Posts: 3
Joined: Wed Nov 28, 2018 8:00 am

Re: Maplestory 2

Post by jjlovemaple » Thu Nov 29, 2018 5:35 pm

jjlovemaple wrote:
DEElekgolo wrote:Noesis!
I exported an FBX from it which maintains the rigging and bones
thank you so much! when I try to import fbx to blender 2.79, it said blender only support fbx version more than 7000 while the fbx version I import is 6100. Shall I just abandon this blender?
I think I find a solution, all you need is autodesk fbxconverter to convert the 6100 version fbx files, then blender can read the bones, but still lost texture info for some reasons.

MissNya
ultra-n00b
Posts: 1
Joined: Sat Dec 01, 2018 5:05 pm
Has thanked: 1 time

Re: Maplestory 2

Post by MissNya » Sun Dec 02, 2018 2:55 am

Hiya, I just wanted to say thanks a lot for making this tool! I've got a question about some of the animations; I've been using Noesis to preview a few things and I've noticed that some animations will either play like they do in game, or just slightly wiggle around while t-posed. Is there something else I need to do to get them to animate properly or another program besides Noesis I should be using?

Post Reply