Register - Login
Views: 99794715
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
05-03-22 05:17:51 AM
Jul - General Game/ROM Hacking - Any -complete- NSBMD documentation? New poll - New thread - New reply
Next newer thread | Next older thread
xdaniel
980
Level: 64


Posts: 425/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 03-07-13 01:37:59 PM Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


Alright, so I've been looking into hacking Etrian Odyssey for the DS. I've figured out a lot of how the floor maps work (older screenshot), including how stairs, treasure chests and all that are defined, and I've started to look into event scripting, which might be quite a daunting task to figure out completely.

Another thing I figured some things out about is the floor's appearance, meaning what 3D model(s) to use for which map tile, how to rotate the models, etc. A big problem with that, however, is that I can't seem to find any really complete documentation on the DS' NSBMD model format. I do have an incomplete and buggy renderer written, but I have no idea how materials work, some polygons seem to be misplaced/distorted and a lot of it is guesswork.

I know of lowlines' documents - mainly http://llref.emutalk.net/docs/?file=xml/bmd0.xml#xml-doc - but they're not very clear about the meanings of things, and missing ex. infos about materials. The kiwi.ds NSBMD doc - http://sites.google.com/site/kiwids/nsbmd.html - is equally unclear and incomplete. There's also the sources to existing programs, like kiwi.ds' NSBMD viewer or MKDS Course Modifier, but especially the latter's is a total mess, and while it's also written in C#, I'd need to import a lot of its code into my project to make it work, plus I'd rather write the renderer myself anyway.

tl;dr: Does anyone know of any complete documentation on NSBMD files, or some clean source code I could read for reference?


____________________
cu xdaniel - Follower of the Church of Madoka


"What color is your BLOOD?!?"

xdaniel
980
Level: 64


Posts: 426/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 03-12-13 10:11:03 PM Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


Alright, uh, thanks to people who messaged me, I got my hands on some... better documentation. Well, part of the SDK, in fact. That, more study of the DS parts of GBATEK and a few other tools' sources, and a lot of experimentation yielded this a few minutes ago:



It works reasonably well for EO's mostly static models (as well as ex. Mario Kart DS' courses), but everything with just a tiny bit more ex. matrix stack usage glitches out pretty badly. I am sorta motivated to improve it to also render - as examples of other stuff I tried - character models from Snowboard Kids DS and Viewtiful Joe properly, but for now it's good enough.


____________________
cu xdaniel - Follower of the Church of Madoka


"What color is your BLOOD?!?"

Arisotura
Member
Level: 49


Posts: 11/614
EXP: 881167
For next: 2716

Since: 02-24-13

From: your dreams

Since last post: 101 days
Last activity: 60 days

Posted on 03-12-13 10:20:29 PM Link | Quote
Not bad.

About matrix stack and all, I remember that SM64DS's models have something for that. Basically, in display lists, matrix push commands refer to IDs that are mapped via a series of tables to a geometry node. The transform settings of that node are then used to render all the oncoming geometry.

NSBMD's must use something similar.

Another possibility is that the models are made to render with certain transforms that are only present at runtime. Given how model files generally work, it's not likely, though.
xdaniel
980
Level: 64


Posts: 427/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 03-13-13 01:33:32 AM (last edited by xdaniel at 03-13-13 04:50:44 PM) Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


I know how that would work in principle - I'm more or less used to hierarchies, matrices & co. from Zelda OoT -, but I'm having trouble with the mapping. I presume it's the "structured byte code" stuff that describes the nodes, material and shape IDs, etc. and that I'm either not parsing it correctly, or that I'm not correctly using the data from it.

It's less of a problem with the dungeon models of Etrian Odyssey as there's minimal matrix stack usage, and what is there - mainly for each side of the double doors IIRC - works fine with the way I'm I suppose "faking" it right now: calculating a transformation matrix for each node, and (if the node has a parent node ID that isn't its own ID) multiplying it with the parent node's matrix, while simply ignoring each node's stack ID and restore ID. Then I just use the resulting matrix to transform each vertex.

Anything that actually uses any matrix commands in display lists (although I believe I've only come across Restore Matrix (0x14) so far, none of the others...?) does something like this, ex. from Snowboard Kids:





Edit: YES! YES!



...BUT! There's still things that aren't implemented or that are glitchy. Nancy's and Koyuki's models from Snowboard Kids appear to be fine, Viewtiful Joe's does too, Blaze's from Sonic Rush does (Sonic crashes the program during texture loading for some reason), but ex. Sakura's from that 3D Naruto fighter looks really awful. I think her's depends on this weighted envelope matrix stuff (or whatever...) and the NodeMix SBC command, which I'm 99% I am emulating wrongly.



Edit: Haven't fixed NodeMix, but at least made the glitchyness go away by just writing an identity matrix to the stack... will need to fix this if I ever want animation to work, tho, I'm guessing. Feeling reminded of my struggle with Wind Waker's actor models here...




____________________
cu xdaniel - Follower of the Church of Madoka


"What color is your BLOOD?!?"

E-scope12
Random nobody
Level: 5


Posts: 1/4
EXP: 447
For next: 82

Since: 10-09-13


Since last post: 8.5 years
Last activity: 8.5 years

Posted on 10-09-13 03:09:54 PM Link | Quote
Originally posted by xdaniel
Alright, uh, thanks to people who messaged me, I got my hands on some... better documentation. Well, part of the SDK, in fact. That, more study of the DS parts of GBATEK and a few other tools' sources, and a lot of experimentation yielded this a few minutes ago:



It works reasonably well for EO's mostly static models (as well as ex. Mario Kart DS' courses), but everything with just a tiny bit more ex. matrix stack usage glitches out pretty badly. I am sorta motivated to improve it to also render - as examples of other stuff I tried - character models from Snowboard Kids DS and Viewtiful Joe properly, but for now it's good enough.


What program are you using? Can you take a look at the Coraline DS Models & fix them because they don't load correctly. http://www.mediafire.com/download/hpww9vwmkb53rki/Coraline_NSBMD_Character_Models.zip
xdaniel
980
Level: 64


Posts: 486/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 10-27-13 01:14:55 AM Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


Originally posted by E-scope12
What program are you using? Can you take a look at the Coraline DS Models & fix them because they don't load correctly. http://www.mediafire.com/download/hpww9vwmkb53rki/Coraline_NSBMD_Character_Models.zip

Late reply, to someone with a single post... who hasn't been here since a day after his only post. But whatever... no need to fix something that isn't broken (or at least not as horrible as other viewers apparently are) - ex. CorB_A.nsbmd:



I oughta release all this junk someday...


____________________
cu xdaniel -- Follower of the Church of Madoka -- @xdanieldzd (Twitter) -- stapled tech (YouTube)



It doesn't even matter if there is no hope, as the madness of the system grows

Hiccup
Member
Level: 57


Posts: 351/772
EXP: 1475464
For next: 10464

Since: 05-19-09


Since last post: 110 days
Last activity: 18 hours

Posted on 10-27-13 05:08:24 PM Link | Quote
I would prefer released junk over unreleased junk. Even if it is junk (which I don't believe it is).

____________________
New Super Mario Bros Beta Replica
E-scope12
Random nobody
Level: 5


Posts: 2/4
EXP: 447
For next: 82

Since: 10-09-13


Since last post: 8.5 years
Last activity: 8.5 years

Posted on 11-01-13 06:47:47 PM Link | Quote
Originally posted by xdaniel
Originally posted by E-scope12
What program are you using? Can you take a look at the Coraline DS Models & fix them because they don't load correctly. http://www.mediafire.com/download/hpww9vwmkb53rki/Coraline_NSBMD_Character_Models.zip

Late reply, to someone with a single post... who hasn't been here since a day after his only post. But whatever... no need to fix something that isn't broken (or at least not as horrible as other viewers apparently are) - ex. CorB_A.nsbmd:



I oughta release all this junk someday...


Thank you for fixing those models. I still want to know the name of the program you are using to view the nsbmd models. I would like to try the program.
xdaniel
980
Level: 64


Posts: 489/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 11-01-13 09:33:06 PM Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


It has no real name, it's a program I've written myself, and it's one that I haven't released yet. I'll do so eventually, I guess, but it's not a priority for me right now, plus it still doesn't support animation at all and has problems with certain display list commands...


____________________
cu xdaniel -- Follower of the Church of Madoka -- @xdanieldzd (Twitter) -- stapled tech (YouTube)



It doesn't even matter if there is no hope, as the madness of the system grows

E-scope12
Random nobody
Level: 5


Posts: 3/4
EXP: 447
For next: 82

Since: 10-09-13


Since last post: 8.5 years
Last activity: 8.5 years

Posted on 11-01-13 10:09:35 PM Link | Quote
Originally posted by xdaniel
It has no real name, it's a program I've written myself, and it's one that I haven't released yet. I'll do so eventually, I guess, but it's not a priority for me right now, plus it still doesn't support animation at all and has problems with certain display list commands...


I have a name to give it. Call it the NSBMD Model viewer. I hope that helps.
Hiccup
Member
Level: 57


Posts: 355/772
EXP: 1475464
For next: 10464

Since: 05-19-09


Since last post: 110 days
Last activity: 18 hours

Posted on 11-02-13 01:53:51 PM Link | Quote
Please no.

That's already in use by at least two other applications!

____________________
New Super Mario Bros Beta Replica
E-scope12
Random nobody
Level: 5


Posts: 4/4
EXP: 447
For next: 82

Since: 10-09-13


Since last post: 8.5 years
Last activity: 8.5 years

Posted on 11-03-13 01:04:00 AM (last edited by E-scope12 at 11-03-13 01:51:08 AM) Link | Quote
Originally posted by Hiccup
Please no.

That's already in use by at least two other applications!
Then what should we call it? Does this also support an .obj exporter with textures?
einstein95
Member
Level: 37


Posts: 79/318
EXP: 326206
For next: 12047

Since: 04-11-13


Since last post: 3.3 years
Last activity: 3.3 years

Posted on 11-03-13 07:38:35 AM Link | Quote
How about "DS NSBMD viewer" or how about leaving it unnamed as that is trivial at the moment and instead congratulating the developer on what an awesome program this is looking to be!

____________________
The more I type, the less gooder it sounds does.
xdaniel
980
Level: 64


Posts: 493/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 11-03-13 10:43:01 AM Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


It's called "C:\Users\Daniel\Documents\Visual Studio 2010\Projects\NSBMDViewer\NSBMDViewer.sln and C:\Users\Daniel\Documents\Visual Studio 2010\Projects\NitroRender\NitroRender.sln" - AKA it does not have a name beyond the project titles (for the viewer GUI and the library that does the rendering) that Visual Studio projects require. I'll name it something else someday, but it's really not important at all right now.

As for .obj exporting, it currently can export models to a custom-ish format I'm using for another project, which of course would be pretty useless for everyone else. I'll eventually look into some other format, such as .obj.


____________________
cu xdaniel -- Follower of the Church of Madoka -- @xdanieldzd (Twitter) -- stapled tech (YouTube)



It doesn't even matter if there is no hope, as the madness of the system grows

robotortoise
Random nobody
Level: 5


Posts: 1/4
EXP: 431
For next: 98

Since: 05-22-14


Since last post: 6.6 years
Last activity: 6.4 years

Posted on 05-22-14 04:57:51 AM Link | Quote
Hello xdaniel!

I'm from the #zelda TCRF IRC, and I've been asking for days how to view and export DS models and animations. einstein95 helped me find a viewer, but it wouldn't work well for Spirit Tracks. Maybe for other games. IDK.

Anyways, then I tried to do the same for Twilight Princess. I wanted Puppet Zelda's animations and model. I could export the model, sure, but the animations weren't exportable. And to top it off, there was an ugly layer of dev text over the 3D viewer, so I had to keep restarting it.


So what I'm saying is.....there's no good Nintendo DS model or BMD model viewers.

If you don't want to work on either, that's fine, but.....I'd like it if you'd at least release the old version of this DS model viewer. There are no easy-to-use alternatives.

Google "phantom hourglass models" or "spirit tracks models" and you'll see what I mean. There's just no easy way to view either.

Twili showed me your incredible work on the Nintendo 3DS CMB viewer, and I hope you can continue that.

-Robotortoise [Palutena's Bro]
xdaniel
980
Level: 64


Posts: 548/982
EXP: 2153583
For next: 60514

Since: 12-04-08

Pronouns: he/they
From: Germany

Since last post: 25 days
Last activity: 43 min.

Posted on 05-22-14 01:32:15 PM Link | Quote


>>ESTABLISHING LINK...DONE.    >>FETCHING POST DATA...DONE.    >>EXECUTING POSTDISP.BIN...


I have actually kept working on the NSBMD viewer, or rather expanded it into a viewer for the filesystem, etc., and even posted a few newer shots in the generic screenshot thread (like this one) and on Twitter (like that one).

Neither the "old" viewer, nor the "extended" one support anything other than rendering NSBMD models, tho: no animations - outside of preliminary texture animation -, no proper model exporting, etc., so I guess it would be kinda useless in its current state for you anyway? I am planning to implement that stuff, and eventually release a build capable of ex. model exporting, but it's still a long way off, I think.

A GCN BMD/BDL viewer... is unlikely from me. I did write Wind Viewer tho, as a specialized WW/TP map editor which obviously does support BMDs/BDLs, so if anyone wants to rip out its rendering code (J3Dx.cs) and turn it into a stand-alone viewer, feel free to. See the active repository on GitHub by pho, Abahbob, etc.


____________________
cu xdaniel -- Follower of the Church of Madoka -- @xdanieldzd (Twitter) -- stapled tech (YouTube)



It doesn't even matter if there is no hope, as the madness of the system grows

robotortoise
Random nobody
Level: 5


Posts: 2/4
EXP: 431
For next: 98

Since: 05-22-14


Since last post: 6.6 years
Last activity: 6.4 years

Posted on 05-23-14 04:09:01 PM Link | Quote
Awesome!
Next newer thread | Next older thread
Jul - General Game/ROM Hacking - Any -complete- NSBMD documentation? New poll - New thread - New reply


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

31 database queries, 6 query cache hits.
Query execution time: 0.081558 seconds
Script execution time: 0.030872 seconds
Total render time: 0.112430 seconds