Jump to content

N64 Scene Header Binary Format


luigiisdead
 Share

Recommended Posts

zscene Header u32 scene_header_tag u32 scene_header_size u32 scene_size u32 scene_cfg u32 scene_name_index u32 scene_obj_link_num u32 scene_env_link_num u32 scene_cam_link_num u32 scene_light_link_num u32 nintendo_extension_block_size u32 user_extension_block_size

 

 

i discovered this from the info file when i opened it in the NIFF editor. from what i know, the tool says NIFF is Nintendo Intermediate File Format, and shows what makes up the whole scene header.

 

u32 scene_obj_link_index(0) ... u32 scene_obj_link_index(scene_obj_link_num - 1) u32 scene_env_link_index(0) ... u32 scene_env_link_index(scene_env_link_num - 1) u32 scene_cam_link_index(0) ... u32 scene_cam_link_index(scene_cam_link_num - 1) u32 scene_light_link_index(0) ... u32 scene_light_link_index(scene_light_link_num - 1) NintendoExtensionBlock UserExtensionBlock

 

Scene Area Memory Map

 

u32 scene_header_tag Tag indicating scene header. Set the following flag.

 

TAG_SCENE_HEADER 0x00010000 u32 scene_header_size Size of SceneHeader u32 scene_size Size of SceneList u32 scene_cfg Setting of drawing a whole scene. The following flags are currently defined.

 

SCENE_CFG_VIDEO_NTSC 0x00000000

SCENE_CFG_VIDEO_PAL 0x00000001

SCENE_CFG_VIDEO_MPAL 0x00000002

SCENE_CFG_GAMMA 0x00000004

SCENE_CFG_DITHER 0x00000008

SCENE_CFG_DIVOT 0x00000010

Setting VI for converting scene to N64 data.

SCENE_CFG_VIDEO_NTSC:Pre-view by NTSC environment.

SCENE_CFG_VIDEO_PAL:Pre-view by PAL environment.

SCENE_CFG_VIDEO_MPAL: Pre-view by MPAL environment.

SCENE_CFG_GAMMA:Enable GAMMA correction.

SCENE_CFG_DITHER:Enable to use Dither filter.

SCENE_CFG_DIVOT:Enable Divot.

SCENE_CFG_VIDEO_*Flag should be defined one by one.

SCENE_CFG_GAMMA, SCENE_CFG_DITHER and SCENE_CFG_DIVOT can be set simultaneously. For example, when all of flags are used by the NTSC environment, set the following:

 

 

SCENE_CFG_VIDEO_NTSC | SCENE_CFG_GAMMA

| SCENE_CFG_DITHER | SCENE_CFG_DIVOT

= 0x0000001c u32 scene_name_index Index number of scene name in NameList u32 scene_obj_link_num Total number of Obj nodes linking directly from Scene node. u32 scene_env_link_num Total number of Env nodes linking directly from Scene node. u32 scene_cam_link_num Total number of Cam nodes linking directly from Scene node. u32 scene_light_link_num Total number of Light nodes linking directly from Scene node. u32 nintendo_extension_block_size If extension data is created on the Nintendo 64 side, the extension data is stored in NintendoExtensionBlock. Specify the block size.

Set the following flag if extension data is not used (default).

 

NINTENDO_EXT_BLOCK_NONE 0x00000000 u32 user_extension_block_size If extension data is created on the user side, the extension data is stored in UserExtensionBlock. Specify the block size.

Set the following flag if extension data is not used.

 

USER_EXT_BLOCK_NONE 0x00000000 u32 scene_obj_link_index Index number of Obj node linked directly from Scene node. u32 scene_env_link_index Index number of Env node linked directly from Scene node. u32 scene_cam_link_index Index number of Cam node linked directly from Scene node. u32 scene_light_link_index Index number of Light node linked directly from Scene node. NintendoExtensionBlock If extension data is created by NINTENDO, the extension data is stored in NintendoExtensionBlock. UserExtensionBlock If extension data is created on the user side, the extension data is stored in UserExtensionBlock.

 

 

Copied this from the scene structure window in the help file. Could you guys use this? i can post more when i discover more about the's game's structure. from the looks of it, i think zeth would like like this, he could add rooms to ura without replacing anything. but so far, i have yet to acctually use the tools other than for looking at zscenes with it. once i get them figured out, i'll post more info. Just think about. we may never need to use hex editors for OoT hacking ever again. i feel proud of myself for finding this.

 

just doing some editing where i may have typed wrong, or messed up.

Link to comment
Share on other sites

it's official, no homebrew stuff. there are tools for dumping 64dd stuff, i know it looks like giberish, but i'm lookng more into it. It believe it or not, i downloaded it from emoparadise dot me.

 

Another tool that comes with the sdk is a neat texture tool allowing you to 4 or 16 bit textures, and the sdk's readme even has a link to an official n64 compiler. more info coming as soon as i wake up more

Link to comment
Share on other sites

It might be official, sure, but it doesn't have anything to do with a Zelda scene. Scenes as used in Zelda do not contain video mode settings, and neither do they start with 0x00010000 as TAG_SCENE_HEADER in the text you pasted indicates.

 

Nothing in the leaked SDKs is specific to Zelda to my knowledge. Texture editors and stuff can probably be used for hacking, but beyond that? Nope.

Link to comment
Share on other sites

aw crap. well, it was an effort. too bad we can't use it.

oohhh, i think this is just info on stuff like light settings or something. Probably no good for modding, but for development it's worth noting anyways.

 

[OffTopic]

spinout which is better between c, c++, and python? i've learned a bit about c++ while making my emulator which has been halted for a while. i'm using eclipse to do it since when i install visual (insert programming language) i can never find it, even though i found it in xp. T-T windows 7, why do you have 2 confuze meh?

 

 

[edit]

@ Spinout

 

the NIFF thing is the file format nintendo uses hence the name Nintendo intermediate File Format. It basically contains the zscene, zmap, objects, actors, scripts, light settings, headers, textures, regional video formats, and other stuff. I think that maybe if i were to write a NiFF file for OoT, i could possibly rewrite scene files with it, extract them with a hex editor (mostly the header in my case, i found some neat stuff while messing with it) and possibly import the new scene. But, that's just a theory that i have yet to test out first. I also made a 64DD ROM image using a normal n64 ROM. it swaps the boot loader and whatnot to what the DD uses, but i can't really prove anything about that until i can either get a dev 64DD or an emulator for the DD.

 

SCENE_CFG_VIDEO_NTSC | SCENE_CFG_GAMMA

| SCENE_CFG_DITHER | SCENE_CFG_DIVOT

= 0x0000001c u32 scene_name_index Index number of scene name in NameList u32 scene_obj_link_num Total number of Obj nodes linking directly from Scene node. u32 scene_env_link_num Total number of Env nodes linking directly from Scene node. u32 scene_cam_link_num Total number of Cam nodes linking directly from Scene node. u32 scene_light_link_num Total number of Light nodes linking directly from Scene node. u32 nintendo_extension_block_size If extension data is created on the Nintendo 64 side, the extension data is stored in NintendoExtensionBlock. Specify the block size.

Set the following flag if extension data is not used (default).

I'm also looking into this, to see if i may be able to mess with the display on certain maps by messing with the gamma settings and dither settings. I noticed something that may be worth testing and noting, if 0x000001C is the offset where the scene's display settings are, then maybe we could make use of colored lighting and whatnot. Probably not real important stuff, and i may not be accurate on this, but so far this is what i've come up with.

Link to comment
Share on other sites

aw crap. well, it was an effort. too bad we can't use it.

oohhh, i think this is just info on stuff like light settings or something. Probably no good for modding, but for development it's worth noting anyways.

 

[OffTopic]

spinout which is better between c, c++, and python? i've learned a bit about c++ while making my emulator which has been halted for a while. i'm using eclipse to do it since when i install visual (insert programming language) i can never find it, even though i found it in xp. T-T windows 7, why do you have 2 confuze meh?

 

 

[edit]

@ Spinout

 

the NIFF thing is the file format nintendo uses hence the name Nintendo intermediate File Format. It basically contains the zscene, zmap, objects, actors, scripts, light settings, headers, textures, regional video formats, and other stuff. I think that maybe if i were to write a NiFF file for OoT, i could possibly rewrite scene files with it, extract them with a hex editor (mostly the header in my case, i found some neat stuff while messing with it) and possibly import the new scene. But, that's just a theory that i have yet to test out first. I also made a 64DD ROM image using a normal n64 ROM. it swaps the boot loader and whatnot to what the DD uses, but i can't really prove anything about that until i can either get a dev 64DD or an emulator for the DD.

 

 

 

I'm also looking into this, to see if i may be able to mess with the display on certain maps by messing with the gamma settings and dither settings. I noticed something that may be worth testing and noting, if 0x000001C is the offset where the scene's display settings are, then maybe we could make use of colored lighting and whatnot. Probably not real important stuff, and i may not be accurate on this, but so far this is what i've come up with.

 

Posted ImageI know what NIFF is. (Did you miss this?)

 

None of this information means anything for OoT/MM - if it did, n64 zelda hacking would have changed over a year ago when I (and xdaniel) looked through the N64 SDK which (obviously) includes NIFF among other development tools Nintendo sent out with the SDK. As for the DD stuff I *believe* that it is a tool which just builds a DD ROM, and it is building a blank ROM for you. It is absolutely useless as there are more 64drives and everdrive64s around which give the N64 MUCH more potential than the DD and are cheaper and still supported.

 

C is king. Python if the program is only going to be run once and you need to get it out quickly (i.e. building a database base d off of oot)

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.