SoulofDeity Posted September 28, 2012 Share Posted September 28, 2012 Here's a list of programs I've written for Z64 modding dl2obj - converts display lists to wavefront obj's (also rips textures) dlpos - allows you to position, rotate, and scale display lists n64conv - a replacement for the tool in ZLE2's texture export folder; converts the files into .tga's. This was written because the tool that comes with ZLE is 16-bit and won't work on 64-bit pc's. tga2i4 - converts a 32-bit RGBA (uncompressed) .tga to an i4 texture tga2i8 - converts a 32-bit RGBA (uncompressed) .tga to an i8 texture tga2rgba16 - converts a 32-bit RGBA (uncompressed) .tga to a rgba16 (5551) texture tga2rgba32 - converts a 32-bit RGBA (uncompressed) .tga to a rgba32 (8888) texture A Quick Tutorial on Texture Replacement With My Utilities What you'll need: - Gimp - A decompressed rom - Rice's debug plugin (don't worry, this isn't a texture pack tut; its real texture replacement) - HxD hex editor 1. Run your rom and dump the textures you want to replace with Rice's plugin. 2. Open the texture in GIMP, go to Layer->Transparency->Add Alpha Channel 3. Go to File->Export and save as a .tga; make sure you uncheck the RLE compress checkbox. 4. Drag and drop your .tga file onto one of the converter scripts. Eg. if you dropped it on tga2I4 it would convert the image to I4 texture data. 5. Open the rom and texture data in HxD. 6. Hit Ctrl->A; Ctrl->C to copy the entire texture data. 7. On the rom file, hit Ctrl->F to open the search box, paste the data into the textbox, and change the combobox to Hex-values, then hit enter to search 8. If you converted the texture to the right format, it should have found the texture. Now you can just replace it with texture data from your own images converted to texture data. ---- Bonus: Using n64conv: 1. Place n64conv into the texture_export folder of ZLE2. 2. Drag and drop the raw files onto n64conv to convert them to .tga's. (it can do batch conversions, so you can drop multiple files on it at once) 3. Use my textures conversion utils to convert the tga's back Another project I'm working on, z64rip. It converts wavefront obj's into valve smd's (complete with skeleton and skinning) And of course, Hylian Cartographer, which is also in progress: On the Todo List for Hylian Cartographer: - 90% : Full-fledged 3d engine supports skeletal animations and capable of loading various file formats. - 80% : Automated display list replacer - 0% : Filesystem editor that support searching, extraction, replacement, and external file name loading Q/A: - q - What do you do when you're not working on these projects? - a - I work on one of my other projects; the Storm SDK / 3D Engine (which I plan on selling), and the Soul operating system which I'm not entirely sure I'm gonna release because at its current stage, I don't know if I can make it compete with Windows / Mac / Linux. - q - Do you ever take a break? - a - No. I'm autistic, and programming is how I express myself. To me, it's enjoyable. Its actually harder for me NOT to do something constructive with my time. 2 Link to comment Share on other sites More sharing options...
SanguinettiMods Posted September 28, 2012 Share Posted September 28, 2012 Like I said on ModShack all of these look really neat and I look forward to testing them. If you need anyone to test a beta, PM me and I'd be happy to. Link to comment Share on other sites More sharing options...
SoulofDeity Posted September 28, 2012 Author Share Posted September 28, 2012 Just so everyone knows, there'll probably be a lack of updates on Hylian Cartographer the next few days because I'm porting it to the Storm game engine. (a game engine I wrote that I eventually plan on selling). It'll be a step backwards for development, but the engine is faster, cross platform, less buggy, and far more flexible. Link to comment Share on other sites More sharing options...
SoulofDeity Posted October 1, 2012 Author Share Posted October 1, 2012 Aight, HC's source was getting really messy and hard to work with, so today I've been rewriting the engine from scratch and making some serious improvements. Changes To The Scene Hierarchy: New item type called mesh. Meshes contain vertex groups and are parented by objects. For the sake of simplicity, objects now contain their animations instead of them being in a separate resource tree Changes To The Class Structure:A new class type has been added for matrices that makes use of overloaded operators, custom indexing properties, and a fairly powerful library of functions allowing you manipulate matrices as a 3d transforms (translation, rotation, and scale). All scene objects (cameras, lamps, waterboxes, objects, etc.) now use matrices to store their transforms. The texture class has been replaced by the material class. Texture data is no longer stored after being loaded into OpenGL, materials are planned to have support for masks, bump/normal/specular maps, and they keep track of important information such as horizontal and vertical velocity. All classes have been separated into header and source files. People viewing the HC source tree should have no trouble finding what they're looking for. A new namespace has been added called HC_Math On a final note, I've decided that I don't plan to ever port Hylian Cartographer from .NET to another library such as the GTK. Every time I've tried to do so, I always get set back further and run into problems. Contributors can either do it themselves or people can just use WINE to emulate it (its been tested, it works). ;======================================= EDIT: Just to show that I'm not blowing false updates out my ass, here's the source to the CMatrix class I've been working on all day: Matrix.h Matrix.c It's not 100% complete yet, I still have to write the functions for retrieving the cofactor and inverse matrix then port the 3d transformation matrix functions from the Storm game engine; but even now it's a rather powerful library. Below is the usage. Initializers: CMatrix(void) - Creates an empty matrix CMatrix(rows, columns) - Creates a matrix of Rows*Columns in size (contains all 0's by default) CMatrix(list of lists of floats) - Creates a matrix using a list of lists of floats for the data CMatrix(matrix) - Creates a matrix that is a duplicate of the input Sizing:AddRows(number) - Appends number of rows to the matrix InsertRows(position, number) - Inserts number of rows at position in matrix RemoveRows(number) - Removes number of rows from the end of the matrix RemoveRows(position, number) - Removes number of rows at position from the matrix AddColumns(number) - Appends number of columns to the matrix InsertColumns(position, number) - Inserts number of columns at position in matrix RemoveColumns(number) - Removes number of columns from the end of the matrix RemoveColumns(position, number) - Removes number of columns at position from the matrix Operators:Matrix + value Matrix + list of lists of floats Matrix + matrix Matrix += value Matrix += list of lists of floats Matrix += matrix Matrix - value Matrix - list of lists of floats Matrix - matrix Matrix -= value Matrix -= list of lists of floats Matrix -= matrix Matrix * value Matrix * list of lists of floats (uses real matrix multiplication) Matrix * matrix (uses real matrix multiplication) Matrix *= value Matrix *= list of lists of floats (uses real matrix multiplication) Matrix *= matrix (uses real matrix multiplication) Matrix / value Matrix /= value Matrix Manipulation:Zero - fills the matrix with 0's Identity - turns the matrix into an identity matrix Transpose - returns the transpose of the matrix as a new matrix DeterminantN - gets the determinant of an N-sized matrix (used by Determinant, don't use this) Determinant - gets the determinant of the matrix Normalize - returns the normalized matrix as a new matrix An example use: HC_Math::CMatrix ^matrix = gcnew HC_Math::CMatrix(3, 3) // Create a 3x3 matrix matrix[0][0] = 1; matrix[0][1] = 4; matrix[0][2] = 7; // Row 1 - {1, 4, 7} matrix[1][0] = 4; matrix[1][1] = 5; matrix[1][2] = 8; // Row 2 - {4, 5, 8} matrix[2][0] = 3; matrix[2][1] = 6; matrix[2][2] = 9; // Row 3 - {3, 6, 9} double det = matrix->Determinate(); // det = determinant of the matrix (12) HC_Math::CMatrix ^nm = matrix->Normalize(); // nm = normalized matrix HC_Math::CMatrix ^tp = matrix->Transpose(); // tp = transpose matrix matrix *= matrix + matrix - matrix * 2; // matrix = matrix * (itself * 2) (extra math thrown in for the sake of example) 1 Link to comment Share on other sites More sharing options...
Jason777 Posted October 2, 2012 Share Posted October 2, 2012 Wow, I should really go back to Algebra II and PreCal to study matrices.. I've had Calculus II stuck in my head all year and it's a pain to bring back all that old knowledge Link to comment Share on other sites More sharing options...
SoulofDeity Posted October 2, 2012 Author Share Posted October 2, 2012 Wow, I should really go back to Algebra II and PreCal to study matrices.. I've had Calculus II stuck in my head all year and it's a pain to bring back all that old knowledge Honestly, I've always hated matrices. Some stuff just takes a ridiculous amount of effort to do, eg. determinants and cofactors...ugh...But still, they make maneuvering in 3d a breeze. Link to comment Share on other sites More sharing options...
Recommended Posts