Page 3 of 4 FirstFirst 1 2 3 4 LastLast
Results 21 to 30 of 40

Thread: Reverse Engineering References

  1. #21

    Re: GBXModel Rendering Info

    This is some pretty cool research, have you seen anything that would cause this problem:

    If a model has vertices weighted to > 41 nodes, then the vertices will stretch.

    I could give you examples if you want.
    Reply With Quote

  2. #22
    Codesaurus Skarma's Avatar
    Join Date
    Apr 2009
    Location
    Columbus, OH
    Posts
    227

    Re: GBXModel Rendering Info

    Quote Originally Posted by Choking Victim View Post
    This is some pretty cool research, have you seen anything that would cause this problem:

    If a model has vertices weighted to > 41 nodes, then the vertices will stretch.

    I could give you examples if you want.
    Nope, I did this research a long time ago. If you could tell me where in the model structures this value is located, I could check it out. I barely know anything about modeling, just some direct3d stuff which helped greatly with this. Is a node another name for a single vertex?
    Reply With Quote

  3. #23
    and Masterz1337 too! Advancebo's Avatar
    Join Date
    May 2008
    Location
    Georgia, USA
    Posts
    2,012

    Re: GBXModel Rendering Info

    A node is like the central point of activity. Like the bones on the cyborg model, that controls the arms, legs, and body movement. Or the frames on a warthog, that controls the wheels, suspension, and chaingun.
    Reply With Quote

  4. #24
    Codesaurus Skarma's Avatar
    Join Date
    Apr 2009
    Location
    Columbus, OH
    Posts
    227

    Re: GBXModel Rendering Info

    Gotcha. Well, I really need to reverse more model functions so I can figure out stuff for my Forge project. I'll post all my research in this thread. I just need a bit more info to hunt down your problem asap.
    Reply With Quote

  5. #25
    Neanderthal Dwood's Avatar
    Join Date
    Sep 2008
    Location
    Wouldn't u like to know?
    Posts
    4,189

    Re: [Info]Console Command Function

    Must_spread_rep.
    Reply With Quote

  6. #26
    Taiko Drums = Win
    Join Date
    Sep 2006
    Location
    Longbranch, WA
    Posts
    2,692

    Re: [Info]Console Command Function

    Dude, keep it to one thread!
    Reply With Quote

  7. #27
    chilango Con's Avatar
    Join Date
    Aug 2006
    Location
    Victoria, BC, Canada
    Posts
    8,397

    Re: [Info]Console Command Function

    Skarma you are just awesome
    Reply With Quote

  8. #28
    chilango Con's Avatar
    Join Date
    Aug 2006
    Location
    Victoria, BC, Canada
    Posts
    8,397

    Re: [INFO] Reverse Engineering References

    Skarma, post all future information in this thread and edit the OP to include a link to that post. This way we can keep all of your information together under one release thread and people wont have to go searching for each one.
    edit: If you want me to give the thread a better name, just let me know.
    Last edited by Con; September 21st, 2009 at 07:16 PM.
    Reply With Quote

  9. #29
    Senior Member FireScythe's Avatar
    Join Date
    Sep 2006
    Location
    UK, England
    Posts
    321

    Re: [INFO] Reverse Engineering References

    This reminded me of a program I made to automatically build tag definitions from guerilla exported text files. It was originally built for kornmans old C# tag interface, but i've repurposed it to build definitions for OS. So the output isn't quite what you need but it might help somewhat.

    Things to note though, it doesn't put any pads or flag/enum values and it doesn't check for duplicate names. No error checking and such either, so no guarantees or warranties :P.
    Link.

    Use empty/new tags when you export from guerilla, and its best to not export from guerilla with one of every block and sub block added as guerilla crashes if you do.

    Typical I/O:
    In
    Code:
    biped    untitled
    3
      flags    word flags    0
      bounding radius    real    0.000000
      bounding offset    real point 3d    0.000000    0.000000    0.000000
      origin offset    real point 3d    0.000000    0.000000    0.000000
      acceleration scale    real    0.000000
      model    tag reference        mod2
      animation graph    tag reference        antr
      collision model    tag reference        coll
      physics    tag reference        phys
      modifier shader    tag reference        shdr
      creation effect    tag reference        effe
      render bounding radius    real    0.000000
      A in    enum    none
      B in    enum    none
      C in    enum    none
      D in    enum    none
      hud text message index    short integer    0
      forced shader permuation index    short integer    0
      attachments    block    1
       element 0
        type    tag reference        ÿÿÿÿ
        marker    string    
        primary scale    enum    none
        secondary scale    enum    none
        change color    enum    none
       end element 0
      widgets    block    1
       element 0
        reference    tag reference        ÿÿÿÿ
       end element 0
      functions    block    1
       element 0
        flags    long flags    0
        period    real    0.000000
        scale period by    enum    none
        function    enum    one
        scale function by    enum    none
        wobble function    enum    one
        wobble period    real    0.000000
        wobble magnitude    real    0.000000
        square wave threshold    real fraction    0.000000
        step count    short integer    0
        map to    enum    linear
        sawtooth count    short integer    0
        add    enum    none
        scale result by    enum    none
        bounds mode    enum    clip
        bounds    fraction bounds    0.000000    0.000000
        turn off with    short block index    NONE    -1
        scale by    real    0.000000
        usage    string    
       end element 0
      change colors    block    1
       element 0
        darken by    enum    none
        scale by    enum    none
        scale flags    long flags    0
        color lower bound    real rgb color    0.000000    0.000000    0.000000
        color upper bound    real rgb color    0.000000    0.000000    0.000000
        permutations    block    1
         element 0
          weight    real    0.000000
          color lower bound    real rgb color    0.000000    0.000000    0.000000
          color upper bound    real rgb color    0.000000    0.000000    0.000000
         end element 0
       end element 0
      predicted resources    block    1
       element 0
        type    enum    bitmap
        resource index    short integer    0
        tag index    long integer    0
       end element 0
      flags    long flags    0
      default team    enum    none
      constant sound volume    enum    silent
      rider damage fraction    real    0.000000
      integrated light toggle    tag reference        effe
      A in    enum    none
      B in    enum    none
      C in    enum    none
      D in    enum    none
      camera field of view    angle    0.000000
      camera stiffness    real    0.000000
      camera marker name    string    
      camera submerged marker name    string    
      pitch auto-level    angle    0.000000
      pitch range    angle bounds    0.000000    0.000000
      camera tracks    block    1
       element 0
        track    tag reference        trak
       end element 0
      seat acceleration scale    real vector 3d    0.000000    0.000000    0.000000
      soft ping threshold    real    0.000000
      soft ping interrupt time    real    0.000000
      hard ping threshold    real    0.000000
      hard ping interrupt time    real    0.000000
      hard death threshold    real    0.000000
      feign death threshold    real    0.000000
      feign death time    real    0.000000
      distance of evade anim    real    0.000000
      distance of dive anim    real    0.000000
      stunned movement threshold    real    0.000000
      feign death chance    real    0.000000
      feign repeat chance    real    0.000000
      spawned actor    tag reference        actv
      spawned actor count    short integer bounds    0    0
      spawned velocity    real    0.000000
      aiming velocity maximum    angle    0.000000
      aiming acceleration maximum    angle    0.000000
      casual aiming modifier    real fraction    0.000000
      looking velocity maximum    angle    0.000000
      looking acceleration maximum    angle    0.000000
      AI vehicle radius    real    0.000000
      AI danger radius    real    0.000000
      melee damage    tag reference        jpt!
      motion sensor blip size    enum    medium
      NEW HUD INTERFACES    block    1
       element 0
        unit hud interface    tag reference        unhi
       end element 0
      dialogue variants    block    1
       element 0
        variant number    short integer    0
        dialogue    tag reference        udlg
       end element 0
      grenade velocity    real    0.000000
      grenade type    enum    human fragmentation
      grenade count    short integer    0
      powered seats    block    1
       element 0
        driver powerup time    real    0.000000
        driver powerdown time    real    0.000000
       end element 0
      weapons    block    1
       element 0
        weapon    tag reference        weap
       end element 0
      seats    block    1
       element 0
        flags    long flags    0
        label    string    
        marker name    string    
        acceleration scale    real vector 3d    0.000000    0.000000    0.000000
        yaw rate    real    0.000000
        pitch rate    real    0.000000
        camera marker name    string    
        camera submerged marker name    string    
        pitch auto-level    angle    0.000000
        pitch range    angle bounds    0.000000    0.000000
        camera tracks    block    1
         element 0
          track    tag reference        trak
         end element 0
        unit hud interface    block    1
         element 0
          unit hud interface    tag reference        unhi
         end element 0
        hud text message index    short integer    0
        yaw minimum    angle    0.000000
        yaw maximum    angle    0.000000
        built-in gunner    tag reference        actv
       end element 0
      moving turning speed    angle    0.000000
      flags    long flags    0
      stationary turning threshold    angle    0.000000
      A in    enum    none
      B in    enum    none
      C in    enum    none
      D in    enum    none
      DON'T USE    tag reference        jpt!
      bank angle    angle    0.000000
      bank apply time    real    0.000000
      bank decay time    real    0.000000
      pitch ratio    real    0.000000
      max velocity    real    0.000000
      max sidestep velocity    real    0.000000
      acceleration    real    0.000000
      deceleration    real    0.000000
      angular velocity maximum    angle    0.000000
      angular acceleration maximum    angle    0.000000
      crouch velocity modifier    real    0.000000
      maximum slope angle    angle    0.000000
      downhill falloff angle    angle    0.000000
      downhill cutoff angle    angle    0.000000
      downhill velocity scale    real    0.000000
      uphill falloff angle    angle    0.000000
      uphill cutoff angle    angle    0.000000
      uphill velocity scale    real    0.000000
      footsteps    tag reference        foot
      jump velocity    real    0.000000
      maximum soft landing time    real    0.000000
      maximum hard landing time    real    0.000000
      minimum soft landing velocity    real    0.000000
      minimum hard landing velocity    real    0.000000
      maximum hard landing velocity    real    0.000000
      death hard landing velocity    real    0.000000
      standing camera height    real    0.000000
      crouching camera height    real    0.000000
      crouch transition time    real    0.000000
      standing collision height    real    0.000000
      crouching collision height    real    0.000000
      collision radius    real    0.000000
      autoaim width    real    0.000000
      contact points    block    1
       element 0
        marker name    string    
       end element 0
    out
    Code:
    #pragma region biped
    struct biped_group
    {
        #pragma region Attachments
        struct attachments_block
        {
            TAG_FIELD(tag_reference, type, "����");
            TAG_FIELD(tag_string, marker);
            TAG_FIELD(_enum, primary_scale);
            TAG_FIELD(_enum, secondary_scale);
            TAG_FIELD(_enum, change_color);
        };
        #pragma endregion
        #pragma region Widgets
        struct widgets_block
        {
            TAG_FIELD(tag_reference, reference, "����");
        };
        #pragma endregion
        #pragma region Functions
        struct functions_block
        {
            TAG_FIELD(long_flags, flags);
            TAG_FIELD(real, period);
            TAG_FIELD(_enum, scale_period_by);
            TAG_FIELD(_enum, function);
            TAG_FIELD(_enum, scale_function_by);
            TAG_FIELD(_enum, wobble_function);
            TAG_FIELD(real, wobble_period);
            TAG_FIELD(real, wobble_magnitude);
            TAG_FIELD(real_fraction, square_wave_threshold);
            TAG_FIELD(int16, step_count);
            TAG_FIELD(_enum, map_to);
            TAG_FIELD(int16, sawtooth_count);
            TAG_FIELD(_enum, add);
            TAG_FIELD(_enum, scale_result_by);
            TAG_FIELD(_enum, bounds_mode);
            TAG_FIELD(tag_string, bounds);
            TAG_FIELD(int16, turn_off_with);
            TAG_FIELD(real, scale_by);
            TAG_FIELD(tag_string, usage);
        };
        #pragma endregion
        #pragma region Change Colors
        struct change_colors_block
        {
            #pragma region Permutations
            struct permutations_block
            {
                TAG_FIELD(real, weight);
                TAG_FIELD(real_rgb_color, color_lower_bound);
                TAG_FIELD(real_rgb_color, color_upper_bound);
            };
            #pragma endregion
            TAG_FIELD(_enum, darken_by);
            TAG_FIELD(_enum, scale_by);
            TAG_FIELD(long_flags, scale_flags);
            TAG_FIELD(real_rgb_color, color_lower_bound);
            TAG_FIELD(real_rgb_color, color_upper_bound);
            TAG_TBLOCK(permutations, permutations_block);
        };
        #pragma endregion
        #pragma region Predicted Resources
        struct predicted_resources_block
        {
            TAG_FIELD(_enum, type);
            TAG_FIELD(int16, resource_index);
            TAG_FIELD(int32, tag_index);
        };
        #pragma endregion
        #pragma region Camera Tracks
        struct camera_tracks_block
        {
            TAG_FIELD(tag_reference, track, "trak");
        };
        #pragma endregion
        #pragma region NEW HUD INTERFACES
        struct new_hud_interfaces_block
        {
            TAG_FIELD(tag_reference, unit_hud_interface, "unhi");
        };
        #pragma endregion
        #pragma region Dialogue Variants
        struct dialogue_variants_block
        {
            TAG_FIELD(int16, variant_number);
            TAG_FIELD(tag_reference, dialogue, "udlg");
        };
        #pragma endregion
        #pragma region Powered Seats
        struct powered_seats_block
        {
            TAG_FIELD(real, driver_powerup_time);
            TAG_FIELD(real, driver_powerdown_time);
        };
        #pragma endregion
        #pragma region Weapons
        struct weapons_block
        {
            TAG_FIELD(tag_reference, weapon, "weap");
        };
        #pragma endregion
        #pragma region Seats
        struct seats_block
        {
            #pragma region Camera Tracks
            struct camera_tracks_block
            {
                TAG_FIELD(tag_reference, track, "trak");
            };
            #pragma endregion
            #pragma region Unit Hud Interface
            struct unit_hud_interface_block
            {
                TAG_FIELD(tag_reference, unit_hud_interface, "unhi");
            };
            #pragma endregion
            TAG_FIELD(long_flags, flags);
            TAG_FIELD(tag_string, label);
            TAG_FIELD(tag_string, marker_name);
            TAG_FIELD(real_vector3d, acceleration_scale);
            TAG_FIELD(real, yaw_rate);
            TAG_FIELD(real, pitch_rate);
            TAG_FIELD(tag_string, camera_marker_name);
            TAG_FIELD(tag_string, camera_submerged_marker_name);
            TAG_FIELD(angle, pitch_auto_level);
            TAG_FIELD(angle_bounds, pitch_range);
            TAG_TBLOCK(camera_tracks, camera_tracks_block);
            TAG_TBLOCK(unit_hud_interface, unit_hud_interface_block);
            TAG_FIELD(int16, hud_text_message_index);
            TAG_FIELD(angle, yaw_minimum);
            TAG_FIELD(angle, yaw_maximum);
            TAG_FIELD(tag_reference, built_in_gunner, "actv");
        };
        #pragma endregion
        #pragma region Contact Points
        struct contact_points_block
        {
            TAG_FIELD(tag_string, marker_name);
        };
        #pragma endregion
        
        #pragma region Fields
        TAG_FIELD(word_flags, flags);
        TAG_FIELD(real, bounding_radius);
        TAG_FIELD(real_point3d, bounding_offset);
        TAG_FIELD(real_point3d, origin_offset);
        TAG_FIELD(real, acceleration_scale);
        TAG_FIELD(tag_reference, model, "mod2");
        TAG_FIELD(tag_reference, animation_graph, "antr");
        TAG_FIELD(tag_reference, collision_model, "coll");
        TAG_FIELD(tag_reference, physics, "phys");
        TAG_FIELD(tag_reference, modifier_shader, "shdr");
        TAG_FIELD(tag_reference, creation_effect, "effe");
        TAG_FIELD(real, render_bounding_radius);
        TAG_FIELD(_enum, a_in);
        TAG_FIELD(_enum, b_in);
        TAG_FIELD(_enum, c_in);
        TAG_FIELD(_enum, d_in);
        TAG_FIELD(int16, hud_text_message_index);
        TAG_FIELD(int16, forced_shader_permuation_index);
        TAG_TBLOCK(attachments, attachments_block);
        TAG_TBLOCK(widgets, widgets_block);
        TAG_TBLOCK(functions, functions_block);
        TAG_TBLOCK(change_colors, change_colors_block);
        TAG_TBLOCK(predicted_resources, predicted_resources_block);
        TAG_FIELD(long_flags, flags);
        TAG_FIELD(_enum, default_team);
        TAG_FIELD(_enum, constant_sound_volume);
        TAG_FIELD(real, rider_damage_fraction);
        TAG_FIELD(tag_reference, integrated_light_toggle, "effe");
        TAG_FIELD(_enum, a_in);
        TAG_FIELD(_enum, b_in);
        TAG_FIELD(_enum, c_in);
        TAG_FIELD(_enum, d_in);
        TAG_FIELD(angle, camera_field_of_view);
        TAG_FIELD(real, camera_stiffness);
        TAG_FIELD(tag_string, camera_marker_name);
        TAG_FIELD(tag_string, camera_submerged_marker_name);
        TAG_FIELD(angle, pitch_auto_level);
        TAG_FIELD(angle_bounds, pitch_range);
        TAG_TBLOCK(camera_tracks, camera_tracks_block);
        TAG_FIELD(real_vector3d, seat_acceleration_scale);
        TAG_FIELD(real, soft_ping_threshold);
        TAG_FIELD(real, soft_ping_interrupt_time);
        TAG_FIELD(real, hard_ping_threshold);
        TAG_FIELD(real, hard_ping_interrupt_time);
        TAG_FIELD(real, hard_death_threshold);
        TAG_FIELD(real, feign_death_threshold);
        TAG_FIELD(real, feign_death_time);
        TAG_FIELD(real, distance_of_evade_anim);
        TAG_FIELD(real, distance_of_dive_anim);
        TAG_FIELD(real, stunned_movement_threshold);
        TAG_FIELD(real, feign_death_chance);
        TAG_FIELD(real, feign_repeat_chance);
        TAG_FIELD(tag_reference, spawned_actor, "actv");
        TAG_FIELD(short_bounds, spawned_actor_count);
        TAG_FIELD(real, spawned_velocity);
        TAG_FIELD(angle, aiming_velocity_maximum);
        TAG_FIELD(angle, aiming_acceleration_maximum);
        TAG_FIELD(real_fraction, casual_aiming_modifier);
        TAG_FIELD(angle, looking_velocity_maximum);
        TAG_FIELD(angle, looking_acceleration_maximum);
        TAG_FIELD(real, ai_vehicle_radius);
        TAG_FIELD(real, ai_danger_radius);
        TAG_FIELD(tag_reference, melee_damage, "jpt!");
        TAG_FIELD(_enum, motion_sensor_blip_size);
        TAG_TBLOCK(new_hud_interfaces, new_hud_interfaces_block);
        TAG_TBLOCK(dialogue_variants, dialogue_variants_block);
        TAG_FIELD(real, grenade_velocity);
        TAG_FIELD(_enum, grenade_type);
        TAG_FIELD(int16, grenade_count);
        TAG_TBLOCK(powered_seats, powered_seats_block);
        TAG_TBLOCK(weapons, weapons_block);
        TAG_TBLOCK(seats, seats_block);
        TAG_FIELD(angle, moving_turning_speed);
        TAG_FIELD(long_flags, flags);
        TAG_FIELD(angle, stationary_turning_threshold);
        TAG_FIELD(_enum, a_in);
        TAG_FIELD(_enum, b_in);
        TAG_FIELD(_enum, c_in);
        TAG_FIELD(_enum, d_in);
        TAG_FIELD(tag_reference, don_t_use, "jpt!");
        TAG_FIELD(angle, bank_angle);
        TAG_FIELD(real, bank_apply_time);
        TAG_FIELD(real, bank_decay_time);
        TAG_FIELD(real, pitch_ratio);
        TAG_FIELD(real, max_velocity);
        TAG_FIELD(real, max_sidestep_velocity);
        TAG_FIELD(real, acceleration);
        TAG_FIELD(real, deceleration);
        TAG_FIELD(angle, angular_velocity_maximum);
        TAG_FIELD(angle, angular_acceleration_maximum);
        TAG_FIELD(real, crouch_velocity_modifier);
        TAG_FIELD(angle, maximum_slope_angle);
        TAG_FIELD(angle, downhill_falloff_angle);
        TAG_FIELD(angle, downhill_cutoff_angle);
        TAG_FIELD(real, downhill_velocity_scale);
        TAG_FIELD(angle, uphill_falloff_angle);
        TAG_FIELD(angle, uphill_cutoff_angle);
        TAG_FIELD(real, uphill_velocity_scale);
        TAG_FIELD(tag_reference, footsteps, "foot");
        TAG_FIELD(real, jump_velocity);
        TAG_FIELD(real, maximum_soft_landing_time);
        TAG_FIELD(real, maximum_hard_landing_time);
        TAG_FIELD(real, minimum_soft_landing_velocity);
        TAG_FIELD(real, minimum_hard_landing_velocity);
        TAG_FIELD(real, maximum_hard_landing_velocity);
        TAG_FIELD(real, death_hard_landing_velocity);
        TAG_FIELD(real, standing_camera_height);
        TAG_FIELD(real, crouching_camera_height);
        TAG_FIELD(real, crouch_transition_time);
        TAG_FIELD(real, standing_collision_height);
        TAG_FIELD(real, crouching_collision_height);
        TAG_FIELD(real, collision_radius);
        TAG_FIELD(real, autoaim_width);
        TAG_TBLOCK(contact_points, contact_points_block);
        #pragma endregion
    };
    #pragma endregion
    Last edited by FireScythe; September 22nd, 2009 at 12:55 PM.
    Reply With Quote

  10. #30
    Codesaurus Skarma's Avatar
    Join Date
    Apr 2009
    Location
    Columbus, OH
    Posts
    227

    Re: [INFO] Reverse Engineering References

    Quote Originally Posted by FireScythe View Post
    it doesn't put any pads
    The only thing holding me back from using it. In Guerilla, some of the variable names are cutoff, so I might use it for those. I'm OCD when it comes to getting struct member offsets correct, which is why I like doing it manually and double check everything. I was even thinking about making a function to compare my struct sizes to the actual structs sizes, just to be sure I didn't miss anything lol!

    I got a weird system going on for reversing tags lol First I open Halo CE and start a server. Then I use a function I wrote that iterates through the map tag index thats loaded in virtual memory and prints out the addresses of every tag of a specified taggroup and it's tag path. Then I open a tag group I want to reverse in Guerilla and go to the address in a memory hex editor that was printed out for the equivelent tag I opened in guerilla. The reason I don't just view the tags in a binary hex editor, is because guerillas tag format is not the same as when its compiled into the map and makes it confusing. Plus seeing where the pointers actually point to in memory is very helpful, I don't have to go using magic algos, I can just go to the pointer address.

    For finding unknowns and padding, I changed variables in guerilla, saved the tag as a different name, then open both tags in a binary hex editor and switch back and forth looking for the changes lol. The way I do it is actually quite efficient for me even though it sounds rough

    I've reversed quite a few tags already, it's just a slow process when there are so many different tags and tag blocks. I will post all completed ones.

    Thanks for the info and app FireScythe. It will come in handy. Maybe you want to help with my Forge project, seeing as you are a very good coder. or maybe not
    Last edited by Skarma; September 22nd, 2009 at 02:21 PM.
    Reply With Quote

Thread Information

Users Browsing this Thread

There are currently 2 users browsing this thread. (0 members and 2 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •