Hello.
I need some models of monsters from this game. I tried printscreen rippers (3DVia printscreen, GameAssassin, GLintercept,OpenGLextractor and other), but none of them worked. So now I am trying to rip them from the rom. But it seems that all models are in one archive called monmodels.pac. Is there a way do decompress this type of archives? Here is the link to the file http://www.mediafire.com/?nufglqm5jx1elvh.
.pac is something of a generic extension on the DS and this would appear to be another format with the extension.
Still I had a look
No magic stamp ( 0000 05 though)
Filenames (0d between each name)- 146 0d in total. Some file names have a 60 in front of it which translates as ' and others have 05 again although this corresponds to the "subdirectories" idea below.
What I guess is an offset and size list
Subdirectories do seem to exist or at least there are gaps in the names with a full 16 bytes of 00 (which I replaced with and equivalent length of #
Contained within are a bunch of compressed narc files (type 11 compression)- if the .lz did not give it away the 11 at the start and stuff after would have. Oddly there is a compressed form of narc called carc but it is what it is.
As all the files were compressed on a per file basis (nicer in some ways as the last .pac format was compressed as a whole file). I can at least search for BTAF (one of the strings inside NARC files) and get a rough list
Wouldn't you know- 146 hits. That might ruin my subdirectories idea though.
I probably could do better but I will stick with that for now (BTAF is always in the same location so it is a simple subtraction to get to the start of a file). Unlike most other .pac formats there does seem to be padding (standard 0000) with each thing starting at a multiple of 200 hex.
I am lazy this evening so spreadsheet time. Going to want to merge the sizes list, curiously there is 148 entries there (more than the names and less than the extra lines although the extras stand out like a sore thumb)
A quick snippet of the spreadsheet for the time being
(location of file, location according to header and size according to header)
If I am not mistaken the file location would be 1000hex out which lines up nicely with the start of the first file (having it count from the start of the first file and ignore the header is very common practice) and the next entry would appear to be sizes as well (again note the existence of padding). I do have to worry about the phantom/extra entries but we will spare that for a moment (it does not appear for 64 entries which is odd as it does not line up with the #### entries and again there are only two of them although they are both obvious).
As much as I enjoy pulling things apart I am here with an intention beyond pulling things apart today so as I felt especially bored this evening I knocked together a very quick and dirty method to grab things for you (anybody wishing to comment on the level of pointless extra work I added to the batch file you might wish to save yourself the time- I only cobbled it together from commands I used for this)
Make a directory for your monmodel.pac file and put a copy in there
Go to http://crackerscrap.com/
Click projects
get filecutter
Extract it to the directory
Go to http://code.google.c...h2.zip&can=2&q=
Extract the exe file and stick it in the directory
Copy and paste the following code section into a batch file (any old text file but with the extension .bat ) and stick it in the directory
Run it from the same directory as filecutter and monmodel.pac will spawn a bunch of narc files in a folder called decompressed.
From here you can run narctool if you so desire, personally I would pack them into a .nds file and let crystaltile2 handle it (although crystaltile2 can handle them directly too if you prefer). I had a quick scan and it seems you might not be dealing with standard 3d model formats.
Example though representative names from a random narc file ('m7736.narc)
m7736_mdl.bin
m7736_mdlanm.bin
The NARC files look fairly standard but I actually did not check them properly beyond opening a handful in crystaltile2. I did a strings dump though and the example above netted a few nice things
On top of this that I saw most had two files in (one m[numbers in the file]_mdl.bin and another m[numbers in the file]_mdlanm.bin) but some had those and m[numbers in the file]_texanm.bin - presumably model, animation and texture animation (if it exists). Good news is there does not appear to be further compression but the bad news is you are dealing with a custom format (it could be a cut down format but I doubt it).
Afraid I find 3d model format reverse engineering a scary gig at this point on a Sunday evening so I will leave it to you. I had the quickest (truly two minutes with tile editor without any use of a hex editor to direct me) of scans to try and grab some textures but came up short. I might have to return though as I missed out on getting to pull apart NSBMD and would like a 3d format for the docs if nothing else.
edit- later that evening.
I got more even more bored and extracted every narc file (turns out the pokemon narctool did not want to work but I have several more versions that did work, crystaltile2 and narcexplorer did admirably though but they are not command line that I can see)- one list of filenames of the resulting mess
Of special interest is likely to be m6639_visanm.bin (no other "extension" like it) and I also see there is a matanm (material animation?) too with the mdlanm, mdl and texanm.
Edit another
Did a bit of looking and m7091_mdl.bin is the smallest model and if the internal names to not deceive me* it contains a handful of various 3d primitives. If this is the case then they have potentially almost handed the format on a silver platter. I do have a sizes list and I did drop the .bin part in favour of the "extensions" there (m9331_mdl.bin is now m9331.mdl and m9331_mdlanm.bin is now m9331.mdlanm and so forth) and if you really want I can share batch files for it all. There are 146 model files, 146 mdlanm and significantly less of the others (26 texanm, 45 matanm and 1 vis)
* list of the useful results of the string search (after this it is random luck that leads to a string by the looks of things)
0x00000000 0x00000004 YIMD
0x00000007 0x00000004 a2Tv
0x0000000E 0x00000006 xV2211
0x00000084 0x00000006 blinn1
0x000000DC 0x00000006 blinn2
0x00000134 0x00000008 lambert2
0x0000018C 0x00000008 lambert3
0x000001E4 0x00000008 lambert5
0x0000023C 0x00000008 lambert6
0x00000294 0x00000005 m7091
0x000002FC 0x0000000A pCylinder1
0x00000364 0x0000000C pCylinder1_1
0x000003CC 0x0000000A pCylinder2
0x00000434 0x0000000C pCylinder2_1
0x0000049C 0x00000007 pPlane1
0x00000504 0x00000008 pSphere2
0x0000056C 0x00000008 pSphere4
0x000005D4 0x00000008 pSphere5
0x0000063C 0x0000000C polySurface1
FAST619thanks a lot! You really helped me! I'll try this later. And yeah thanks again.
UPD:
OK I managed to open narc files with Narc Explore 2.0. Inside these archives are 2, sometimes 3 files - " *archivename*_mdl.bin " - I guess that's geometry, " *archivename*_mdlanm.bin " I guess that this is animation and in some archives are files called " *archivename*_textanim.bin " - I think that this is texture animation ( very few monsters in WC have it, thats why it is not in all the archives).
Monday morning (edit- apparently it turned afternoon by a bit of a way, oh well) is far nicer for ROM hacking although I still do not like the fomat much. I am now working with the unpacked files (one of the later versions of narctool and another batch file saw to that). Just models for now- animations, colours, textures and such will come later although I might have a look at the animations later as they could give a clue as to the arrangements.
As a rule of thumb anything demanding of resources on an embedded system of low power like the DS such as sound or 3d will tend to fall close to the hardware ( http://nocash.emubas...tionsbyvertices ) however I see lambert (which I should have picked up on last night) which I hope does not mean use of a lambert function on a matrix and if indeed they can define round objects things get interesting. Lambert however is in many mdl files but not all.
On top of this for now I will assume Cartesian points (what you use on a standard graph) rather than polar (a distance and an angle from a fixed point) or something. No idea what level/manner of fixed or floating point and signing that might exist in the format.
Mathematics lesson is not getting it done though so reverse engineering the format.
It looks like there are at least three header sections.
Main header
Sub header (lambert is commmon here). Appears to be composed of end to end entries 58h long.
Parts header. Section leader and sections following all end to end and all 68h long (with what might be 40h given over to the item name- at least in all I saw the first 40h only had the name and 00 padding).
What could then be the files themselves (I have not managed to get around to drilling down into these yet or even much of the second and third headers beyond what you see and locating them). At a glance there are two broad types (first fairly dense and random and the latter with a lot of 00 values and with some patterns in numbers) but I am assigning no deeper meaning to that for now.
Header presumably for the file itself- starts with YIMD and usually runs for about E0h. It is slightly proportional to file size but m7403 has a lot of subfiles but in total is only 83K which is smaller than most of the other models. An apparent pointer is found at 24h and appears to point to the start of the next section.
The start of the header is always
I do not want to call magic stamp other than the YIMD and maybe 2211 as it could be something useful but that does not change in this game.
After this there is a value like ??** where ?? is anything and ** is 02 03 or 04 with 03 being more common by a good way.
At 20h there appears to be a value that says how many lambert/blinn/phong sections there are to come unless there are none in which case that number gets somewhat larger. I do not want to call this right now as it does not appear to always hold (sometimes there are extra sections although no lambert or anything).
At 24h there appears to be a pointer to the first lambert or equivalent.
At 30h there appears to be a value for the amount of sections in the model names section (that is to say all the models plus the world_root or whatever). However I saw a few that did not follow this.
At 34h there appears to be a pointer to the start of the item names section.
At 40h there is something
At 44h though there is what appears to be the end of the item names section/start of the models or at least something new.
The next few bytes appear to be somewhat variable in length (although many have the same length) after which we lead into the counting section.
I then looked to see how many sections appeared in the file proper and it appears to account for them. m9119 has 47 (decimal) sections or 2f hex sections and before the lambert part numbers count up to it although that only leaves 30h at most to do anything with before the lambert section (or in this case doutai- a romanisation of a Japanese word for movement/body and similar terms).
Sub header (where lambert and some other things like doutai, blinn, phong (unknown if this corresponds to blinn and phong the 3d lighting/shading methods) and cha seem to be housed). Usually ends where group? , world_root or the name of the file is put.
Sections header- names of parts and presumably some data on them plus the overall group name. It might be said the names have 40h assigned to them which is odd but again I am not here to judge. This also means each section appears to be 68h long starting with the name of the item "part".
In the meantime one handy cut out and keep guide.
Location (hex) Length (hex) Meaning Header 0 18 Start of file and identical for all 18 4 Unknown (**?? where ?? is 02, 03 or 04 with 03 being the most common) 1c 4 unknown 20 4 Amount of subheader sections (normally) 24 4 Location of subheader 28 4 unknown 2c 4 unknown 30 4 amount of entries in item header (items+1)- normally (occasionally larger)* 34 4 location of item header 38 4 unknown 3c 4 unknown- always 6000 0000 40 4 unknown 44 4 start of model section (or end of item header) 48 variable? unknown Previous See 30 Counting up for every proper item entry (4 bytes per entry) save when 30 is “wrong” Subheader See 24 58 per entry Name and unknown values Item header 68 Section lead name and unknown values (a bit different to proper entries) 68 per entry Name (possibly 40h long) and unknown data File start See 44 *m8817 being a good example
Edit- looking around this afternoon I found a video of some summon animations.
http://www.youtube.com/watch?v=ccqzbFvC3Vg
Now I have an idea of what I should be seeing in the end. Probably also worth their time porting this 3d engine/custom making it for it as well (NSBMD would not appreciate this sort of thing).
Thanks for your reply.
Maybe I'm bit egotistical, but how is your progress? Even though it was my request I really stuck right now, so all I can do is leave it to the profi.
Hey I'm new to ripping models from games and I loved the Yu-Gi-Oh! tv series when I was younger so I decided to make this my first project!
Problem is I have nooo idea what I am supposed to do after turned all the files into .bin's The two of you seemed to have gotten it,
Mind helping me out?
At this point I am not entirely sure what to do with the bin files- they are a custom format unlike the standard nsbmd format the vast majority of other DS games that use 3d use some version of (and we have several tools to deal with http://www.propl.nl/random/NSBTXExtractor.zip and http://filetrip.net/f28230-nsbmd-tool-1-0.html being the main two and I guess something like MKDS course modifier or lowlines' console tool for when those fall short*).
Back on topic this means it is reverse engineering time for a custom (and what looks to be quite high level) 3d format including textures and animated textures for them which is a pretty in depth hack and if the hints the strings have given are anything to go by my knowledge of 3d methods and techniques needs to be improved before I tackle it properly.
*others that are hear via a search for NSBMD and having the tools not do what you want might be interested in http://gbatemp.net/topic/319635-extracting-textures-from-an-nsbmd-file/
Hey I'm new to ripping models from games and I loved the Yu-Gi-Oh! tv series when I was younger so I decided to make this my first project!
Problem is I have nooo idea what I am supposed to do after turned all the files into .bin's The two of you seemed to have gotten it,
Mind helping me out?
I did nothing, FAST6191 did everything. To rip these models tool that can open those bins is needed. I'm more 3D modeller than programist, so there is no much help from me. But if you want to rip some Yu-gi-oh 3d models you can use Yu-gi-oh! Wheelie Breakers and bbres viewer, or Yu-gi-oh! Falsebound Kingdom + Dolphin + 3D ripper DX. But there are very few of them in these games.
.bin much like .dat is a generic extension used across computing for countless different formats and concepts. There was originally a bit of tendency to use them for binaries (as in the thing that largely houses code to run on the processor) but there is so much else out there now (like this for instance) I would not even consider it without additional evidence.
Additionally as mentioned this appears to be a quite high level custom format (blinn phong is a lighting/shader/reflection model that as far as I know and the docs I have read say the DS hardware does not have any hardware level support form and as mentioned above lambert functions can be used to map 3d points) meaning the person that gets to reverse engineer it is probably going to want both high and low level knowledge of 3d graphics, low file reverse engineering abilities, fairly in depth knowledge of the DS 3d hardware and knowledge of how to make high level 3d work on very limited hardware like the DS. Once that is done you still have the animation, textures and texture animations to do as well but those should not be too bad.
It's time to see what surprise PlayStation has in store for the future, with its PS5 Technical Presentation broadcast. Will we see a PS5 Pro? Or will it be something...
Information on the successor to the Nintendo Switch has been hard to come by, as with the launch of a new console, Nintendo is keeping things to themselves for now...
Poke Transporter GB is a homebrew app for the GBA that serves to bridge the gap between the old and new games, providing a way to pull Pokemon from the Game Boy and...
Super Mario Eclipse is an extensive and perhaps the most ambitious mod for Super Mario Sunshine yet. After close to 5 years in development, v1.0 of the mod is now...
A popular hack of Pokemon Emerald utilising the public decompilation project, Pokemon Elite Redux has just had its 2.1 update go live this week. For those who haven't...
"Black Myth: Wukong" has been one of the most anticipated games in this later half of 2024 due to the development team's focus and love for its unique background...
Sony have announced that their new hero shooter Concord will be going offline on September 6th 2024 and that sales of the game have been immediately halted with Sony...
Some Call of Duty fans online have been eagerly waiting for the upcoming release of a very interesting and promising mod for Modern Warfare Remastered, called "H2M"...
Hand Held Legend is a well established and quite popular company that's been around for more than a decade and focuses on controllers, upgrades and replacements for...
With a Switch 2 reveal hopefully on the horizon, the question is how much will Nintendo ask for the base model at launch and what will their launch offerings be...
It's time to see what surprise PlayStation has in store for the future, with its PS5 Technical Presentation broadcast. Will we see a PS5 Pro? Or will it be something...
Information on the successor to the Nintendo Switch has been hard to come by, as with the launch of a new console, Nintendo is keeping things to themselves for now...
With a Switch 2 reveal hopefully on the horizon, the question is how much will Nintendo ask for the base model at launch and what will their launch offerings be...
The first teaser for the upcoming Minecraft movie, creatively titled A Minecraft Movie has released.
Starring Jack Black as Steve and an expanded cast that includes...
Sony have announced that their new hero shooter Concord will be going offline on September 6th 2024 and that sales of the game have been immediately halted with Sony...
After limited PlayStation exclusivity, Final Fantasy XVI is being released on other platforms. The game's Steam and Epic Games Store versions will launch on September...
"Black Myth: Wukong" has been one of the most anticipated games in this later half of 2024 due to the development team's focus and love for its unique background...
Hand Held Legend is a well established and quite popular company that's been around for more than a decade and focuses on controllers, upgrades and replacements for...
Poke Transporter GB is a homebrew app for the GBA that serves to bridge the gap between the old and new games, providing a way to pull Pokemon from the Game Boy and...
Some Call of Duty fans online have been eagerly waiting for the upcoming release of a very interesting and promising mod for Modern Warfare Remastered, called "H2M"...
Did someone actually shoot at trump with intent, because all reports say there was a shooting "near Trump's golf course", but there are shootings "near" stuff every day, what makes this so special?
He was hiding behind bushes with an AK rifle waiting on trump at his golf course, and secret service spotted him and fired couple rounds when he ran off. The actual shooter never fired.
Okay so from what the news are reporting, the guy was just hanging out, and the SchutzStaffel started shooting at him, he didn't return fire, and instead ran to his car and tried to escape.