Here's what you'll need for this tutorial: -Sonic Adventure DX (duh) -A hex editor and some skill in using it - I use Hex Workshop -3DS Max (a version between 9 and 2008) and some skill in using it -<a href="http://x-hax.cultnet.net/dudetools/KrxImpExp-max2009-Jun-18-2008.7z" target="_blank">Kerrax's ASC import plugins for 3DS Max (jun 18th 2008 revision)</a> -<a href="http://forums.sonicretro.org/index.php?showtopic=17491" target="_blank">Dude's model tools v1.3</a> -OBJ2VT, available in <a href="http://x-hax.cultnet.net/modeltools.rar" target="_blank">this rar</a> -patience for screwing things up, as you'll do it a lot 1) First you'll need to get the models out of the game and into 3DS Max. To do this, drag and drop sonic.exe onto sadxmdl2_levelASC.exe from Dude's tools. You'll get a file called out.asc. 2) Open up out.asc in 3DS Max. You'll notice right away that the level is rotated weirdly. This is unfortunately something you'll have to deal with - don't rotate it! 3) Find the object you want to edit. Feel free to morph the objects into things completely different - but ONLY EDIT THE VERTICES, AND KEEP IT IN THE SAME PLACE. Keep in mind that the UVs (texture definitions per poly) don't change as well, so avoid stretching faces too much and stuff like that. 4) When you're done, create an instance copy of the object you just edited. Move it to 0,0,0 coordinates. 5) Select only the object you moved to 0,0,0. Go to File > Export Selected and export it as a WaveFront object (.OBJ). Make sure the "Rotate Model" box is UNCHECKED. Don't close 3DS Max just yet. 6) Drag and drop that OBJ file onto OBJ2VT. A new file will be made called out.vt. Open that up in your hex editor. 7) MAKE A COPY OF SONIC.EXE. Do this EVERY TIME you change ANYTHING, in case you screw something up. Open up sonic.exe in your hex editor. Note) <a href="http://x-hax.cultnet.net/Docs/MDL_FS2.png" target="_blank">This may help you with steps 8 and 9 if you're experienced with hex stuff.</a> 8) Hard part. In 3DS Max, get the name of the object you edited, and take the number out of it (e.g. 12643760). Take this and go to this decimal offset in sonic.exe in your hex editor. Jump 4 bytes forward. Take this unsigned long and subtract 0x400000 from that, and go to that offset. Take the unsigned long here and subtract 0x400000 from THAT, and jump to it again. You are now at the vertex data. Select all the data from out.vt and make note of how many bytes it is (in hex) and copy it. Go back to sonic.exe, and at the location we just jumped to, select a block exactly that many bytes long and paste. 9) We're not done yet. Go back to the offset (e.g. 12643760) and jump 8 bytes forward. You are now at the position data. Go back to 3DS Max and move the model to the exact place you want it. Get the X position. Put it at this location as a float. Jump 4 bytes forward and repeat for Y, and then 4 more forward for Z. The next 3 floats are the rotation data in BAMS 10) Save. At this point if you did everything right you should get the object in game, but it may (probably will) have glitchy collision. In 3DS Max, make a sphere that as exactly as possible covers the entire object while being as small as possible. 11) Take the original number (12643760 again) and ADD 0x400000 to it, and search for if in sonic.exe. When you have found it you are at the Object pointer in the <a href="http://x-hax.cultnet.net/Docs/Layoutspec.txt" target="_blank">Collision struct</a>. If you don't understand that, jump back 24 bytes. This float is the X location of your sphere. 4 Bytes forward is the Y as a float, and 4 bytes later is the Z as a float. 4 bytes forward from this is the radius of the sphere. 12) You should be done, hopefully. Go back to step 3 to do more geometry edits. Then make an object layout with <a href="http://info.sonicretro.org/SETedit" target="_blank">SETedit</a>!