Tools‎ > ‎zzconvert‎ > ‎

zzconvert manual

Conversion Options
  • Tiny textures: A novelty feature that scales textures down to a very small size. This has no use unless you intend for your import to rely on a texture pack.
  • Link hierarchy: Link's skeleton uses a slightly different format than enemies and NPCs, so you must enable this option if you're converting a custom Link. Animations are also omitted.
  • C output: The locations of models, animations, skeletons, and assembly textures will be printed using #defines, making for easier integration into custom actors.
  • Play-as data: Embeds information meant to be processed by zzplayas within the resulting .zobj. Ideal for automated Link replacements, but unnecessary otherwise.
  • Fix UV overflows: Fixes weird stretchy textures caused by SketchUp.
  • Use MTL colors: Uses primitive color defined in settings for each material. Unused in most cases.
  • Scale: The value by which to increase the size of the geometry and skeletal data. For models made in Blender, this is usually a value of at least 1000.
  • Base Offset: All offsets in the file will be written relative to the offset given instead of the default 0. Additionally, if you specify a ram segment in the base offset (ex. 0x04005000), that will be used instead of the default 06.

Texture Naming Conventions

    ZZFORCE0x0    Specify start address to be 0x0, 0x4000, etc
                  during conversion, if possible

    ZZBANK0x0     Point to specified address instead of texture.
                  ex. 0x08000000 for Link's eyes, 0x09000000 for mouth
                  RAM addresses are also supported

    ZZPALX        Name textures that are meant to share palettes such
                  that ZZPAL0 matches one group, ZZPAL1 another, etc

    ZZRGBA16      Force a texture to use RGBA16 format.
                  If the resulting block exceeds the N64's limit,
                  it will fall back to an indexed color format.

    ZZNOCULL      Disable culling for all geometry using this texture


    ZZSKIP        Don't write this texture to the .zobj
.
                  Perfect for textures residing within gameplay_keep

    ZZTUNIC       Modulate "environment" color to texture. Use this for
                  Link's tunic, gauntlets, and the bottle. This is less
                  flexible than the ZZENV material naming convention, since
                  it will be applied to all materials using this texture.


Warning/Error Codes

    A000          Data for an animation exceeds the game's 5 KB limit.
                  Simplify the animation or it may be unstable in-game.


Mesh Naming Conventions

    riggedmesh    Only one of these may exist inside a rigged object.
                  This determines which geometry will be the main body
                  of the object

    ZZLMTX        Force limb matrix reference at start of DL;
                  required for Gauntlets, Iron/Hover Boots, and masks

    ZZBMTX        Force billboarding along all axes;
                  required for Hookshot Aiming Reticle



Material Naming Conventions

    ZZENV         Modulate "environment" color to texture. Use this for
                  Link's tunic, gauntlets, and the bottle

    TEXGEN        Enable texgen on a material
   
    NOCULL        Disable culling on a material

    ZZNOAA        Disable anti-aliasing (visible only on hardware)

    ZZDECAL       Use decal texture property


Assembly-Controlled Textures

    Link/NPC eyes and mouths are assembly-controlled textures that
    change in real time. To set geometry to use these properties, map
    a single eye or mouth texture to it. In this example, eyes.png.
    Then, in the same folder as eyes.png, create a texture named
    eyes_ZZBANK0x08000000.png. Replace 0x08000000 with whatever RAM
    segment
is intended to be used to store the actual texture pointer.

Collision

Group names ending in _COLLISION are treated as collision. In such a group, the properties of the many triangles within are based on the names of the materials to which they are assigned. Color-coding each material will make it easier for you to tell which triangles behave in which ways. You can use multiple settings in the material name to apply multiple collision flags, just separate them with any of the following characters: .,|#:;

For example, a climbable metal grate that you can fire arrows through would be named something like this: IGNORE_AMMO#SOUND_CERAMIC#WALL_VINES

Here are all the options:


// Ignore Settings

    // Camera can pass through collision
    IGNORE_CAMERA
   
    // Link, enemies, etc. can pass through collision
    IGNORE_ENTITY
   
    // Deku Seeds, Arrows, Bombchus, etc. can pass through collision
    IGNORE_AMMO
   

// Sound Settings

    // Earth/Dirt
    SOUND_DIRT
   
    // Sand
    SOUND_SAND
   
    // Stone
    SOUND_STONE
   
    // Stone (wet)
    SOUND_STONE_WET
   
    // Shallow water
    SOUND_SPLASH
   
    // Shallow water (lower-pitched)
    SOUND_SPLASH_1
   
    // Underbrush/Grass
    SOUND_GRASS
   
    // Lava/Goo
    SOUND_LAVA
   
    // Earth/Dirt (duplicate)
    SOUND_DIRT_1
   
    // Wooden
    SOUND_WOOD
   
    // Packed Earth/Wood
    SOUND_DIRT_PACKED
   
    // Earth/Dirt (duplicate)
    SOUND_DIRT_2
   
    // Ceramic
    SOUND_CERAMIC
   
    // Loose Earth/Dirt
    SOUND_DIRT_LOOSE
   
    // Earth/Dirt (duplicate)
    SOUND_DIRT_2
   
    // Earth/Dirt (duplicate)
    SOUND_DIRT_2
   

// Floor Settings

    // Voids Link out, returns you to the last *scene* you entered
    FLOOR_VOID_SCENE /* formerly FLOOR_PIT_SMALL */
   
    // Voids Link out, returns you to the last *room* you entered
    FLOOR_VOID_ROOM  /* formerly FLOOR_PIT_LARGE */
   
    // Instead of jumping, climb down
    FLOOR_JUMP_VINE
   
    // TODO: Elaborate on what 'Stop all momentum in the air' means
    FLOOR_AIR_STOP
   
    // Instead of jumping, step off the platform into falling state
    FLOOR_JUMP_FALL
   
    // Instead of jumping, activate diving animation/state
    FLOOR_JUMP_DIVE
   
    // Floor Settings (SPECIAL)
   
        // Lava
        FLOOR_LAVA
       
        // Lava (TODO: What's the difference?)
        FLOOR_LAVA_1
       
        // Sand
        FLOOR_SAND
       
        // Ice
        FLOOR_ICE
       
        // No Fall Damage
        FLOOR_NOFALLDMG
       
        // Quicksand, passable on horseback
        FLOOR_QUICKHORSE
       
        // Quicksand
        FLOOR_QUICKSAND
       
        // Steep Surface (causes Link to slide)
        FLOOR_STEEP
       

// Wall Settings

    // Ledge grabbing impossible? (TODO: Confirm, elaborate better)
    WALL_NOGRAB
   
    // Ladder
    WALL_LADDER
   
    // Ladder (Top), makes Link climb down onto a ladder
    WALL_LADDER_TOP
   
    // Climbable Vine Wall
    WALL_VINES
   
    // Wall used to activate/deactivate crawling
    WALL_CRAWL
   
    // TODO: What's the difference?
    WALL_CRAWL_1
   
    // Pushblock
    WALL_PUSHBLOCK
   
    // Wall Damage
    WALL_DAMAGE
   

// Ungrouped Settings

    // Spawns "blood" particles when struck (used in Jabu-Jabu's Belly) (TODO: Walls, floors, or both?)
    SPECIAL_BLEEDWALL
   
    // Instantly void out on contact
    SPECIAL_INSTAVOID
   
    // Causes Link to look upwards (TODO: What does that even mean?) (TODO: Walls, floors, or both?)
    SPECIAL_LOOKUP
   
    // Epona can't walk on the polygon
    NOHORSE
   
    // Paths? Decreases surface height in raycast function by 1
    RAYCAST
   
    // Hookshot
    HOOKSHOT
   
    // Waterbox
    WATERBOX
    // optionally, WATERBOX_%d_%d_%d (WATERBOX_LIGHT_CAMERA_ROOM)
    // light = environment/lighting setting to use while camera is inside waterbox
    // camera = fixed camera setting to use
    // room = room where waterbox is active (optional; if unset, will be active in all rooms)
   
// Settings requiring numbers

    // WARP_%d: Scene Exit Table Index
    WARP_
   
    // CAMERA_%d: Mesh Camera Data Index ID
    CAMERA_
   
    // ECHO_%d: TODO: Confirm if this controls sound echo, music echo, etc.
    ECHO_
   
    // LIGHTING_%d: TODO: Confirm if this controls sound echo, music echo, etc.
    LIGHTING_
   
    // CONVEYOR_%d_%d_INHERIT: CONVEYOR_direction_speed_INHERIT
    // direction range 0 - 360
    // speed range 0.none, 1.slow, 2.medium, 3.fast
    // INHERIT is optional; if enabled, a 0-speed conveyor triangle will have the speed of the conveyor triangle stepped on immediately before it
    CONVEYOR_

  Â