![]() Register - Login |
||
| Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users Ranks - Rules/FAQ - JCS - Stats - Latest Posts - Color Chart - Smilies |
||
| Jul - Posts by messiaen |
| Pages: 1 2 3 4 5 6 7 8 9 10 ... 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
| messiaen Catgirl Level: 61 Posts: 857/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
Originally posted by Metal_Man88 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
|
| messiaen Catgirl Level: 61 Posts: 858/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| Indeed, you are really confused! Textures should work properly if they are in .BMP or .PNG format (not so sure about jpeg) and the material file is correctly generated (you can try and find errors in the log file), no hex editing is required. |
| messiaen Catgirl Level: 61 Posts: 859/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| In order to make a correct list, you should check your data against the "Control.h" file generated by SRip: it will tell you the number of instruments in each set and if there are repeated instruments. There is some old post of mine in the Music Editing thread about it. Also, you should check a very wide range of pitches, so you can know for sure what's the instrument. |
| messiaen Catgirl Level: 61 Posts: 860/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
I should re-check sometime JPEG-related errors. By the way, I assume you are using the Obj Export plugin I recommended, not the built-in (in SketchUp Pro) exporter.Originally posted by Me-me Just did a quick research and I think I found how to change it. Go to 0x454C1A in your ROM with your favorite hex editor. You'll see "FAD0 0104 1238", which are respectively the initial X, Y and Z pos expressed as 16-bit integers. Replace it and it should work. If it works, I'll integrate this into the importer. |
| (post in restricted forum) |
| messiaen Catgirl Level: 61 Posts: 862/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| sdff |
| messiaen Catgirl Level: 61 Posts: 863/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
trash please ![]() |
| messiaen Catgirl Level: 61 Posts: 864/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| So this weekend I had some time to work again on the new music importer and decided to unveil it a bit more and explain how the importing process will work. First, for those wondering, what the heck is MusicXML? MusicXML is a XML-based music notation format designed by Recordade so that different music notation programs can swap data around, since each one of the leading notation programs use their own different proprietary formats. The reason I chose MusicXML as input is because it's an easy format to deal using .NET C# Xml libraries. Dealing with MIDI files would be harder since it can get incredible messy, especially in polyphonic settings. On other hand, this new music importer will be highly dependant of whatever music notation software you use to convert MIDI -> MusicXML. One disadvantage of working with MusicXML is that it doesn't usually handle MIDI events such as pitch bends, volume/modulation changes (unless this is somehow incorporated in the notation, such as crescendo/decrescendo or dynamic signs). Still, it's a huge improvement over the old mml2m64, which due to the limitations of MML format couldn't deal with chords in the same channel and complex rhythms. So, what are these notation programs I'm talking about? Unfortunately, the best three are all commercial products: Finale, Sibelius and Encore (by far the easiest to use). There is also a free, open source alternative, MuseScore, which can get decent results on simpler files but may mess up on more complex ones. Let me show you a bit the steps of the importing process, using the Final Fantasy 7 Highwind theme (just because I used it in this video). First, I downloaded two MIDI versions of it from vgmusic.com. Before converting to MusicXML, it's important to choose the cleaner version, in which you can't spot obvious notation mistakes: First MIDI File in MuseScore: ![]() First MIDI File in Encore: ![]() Second MIDI File in MuseScore (much neater!): ![]() Second MIDI File in Encore: ![]() Even without expert knowledge on music notation, it should be clear that the second file is much better than the first. Now it's time to export to MusicXML (important tip: if it LOOKS good, it will probably be imported nicely) and open it with the importer interface: ![]() In the importer interface, you can map each part to a specific instrument (depending on which instrument set you choose) and assign other parameters such as volume, pan and transposition. You can choose the same part twice, ie, if you want a specific part to be played by two instruments at once. Once everything is set, the .m64 file is generated and you can insert it into the game (haven't worked yet into the inserter interface). Before anyone asks, no estimated release date!, but I'll try to keep you guys updated and if someone wants to send a MusicXML file I can try and see how well it works and explaing why it will or won't work. |
| messiaen Catgirl Level: 61 Posts: 865/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| I did more extensive tests and found out how to change the initial position. Actually, the initial position isn't set by a warp object, but rather by a Level Script command! [2B] [0C] [01] 00 [00 B4] [xx xx] [yy yy] [zz zz] Byte 0: Command Byte 1: Lenght Byte 2: Act Byte 3: Unused (padding) Byte 5-6: Mario Rotation (only Y axis?) Remaining bytes: X,Y, Z (signed 16-bit) position. What the warp objects do is to replace the initial warp position on an act-basis. For some reason, when first starting the game, the initial warp objects are somehow ignored. I will incorporate this into a further release of the level importer. |
| messiaen Catgirl Level: 61 Posts: 866/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| The file you sent to me is a very good candidate for a nice import: neatly organized subdivisions and not too much polyphony in the same staff. By the way, did you use MuseScore? The only part that doesn't work very well are the harp glissandi, that maybe would need a minor rewrite (in the music notation) in order to work 100%. It would be nice to try the same MIDI file with other notation programs (if you have access to them). Here is the result: evo.mp3. This is how my settings looked like: ![]() That reminds me I have to adjust the volume parameter, it needs more precision since samples have very different volumes, depending on which range you use them. Pan (balance between L and R channel) can also be used for that purpose. One problem is that the resulting file was way too big, which can result in crashes. I have to check, but I'm pretty sure your original MIDI repeats twice. In order to deal with that, you have to find the point where the music starts to repeat, cut everything after that and let the game loop it. Another item in my "To Do" list is an introduction setting, in case your file needs to loop after a few measures of introduction. |
| messiaen Catgirl Level: 61 Posts: 867/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| Unfortunately, we don't know that much yet about the camera on SM64. There are multiple camera settings and structs, and sometimes the game shifts between different cameras (each with their particular settings) so a LOT of code would have to be rewritten (which could maybe increase the sync problems?). My bet is that you should look at some of the gu (Graphical Utilities) UltraLib functions (guPerspective and guPerspectiveF may perhaps give you some control about what you're looking for). I know very little about actual N64 programming, so perhaps Marshall could give you some help on this. One thing you should definetely check is Nagra's Mario Resource (you can find it at the Dextrose forum), which may help you navigate through the game code. There's also a master.cod file included which lists address for some of the UltraLib gu functions. |
| messiaen Catgirl Level: 61 Posts: 868/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| Yes, transposition in this case means moving all the notes in a specific part up or down in pitch (by semitones), so a value of "12" means shift it up twelve semitones, or one octave. To shift down, negative values are used. Naturally, only integer values are valid (I'm sorry, no microtones support hehe). It's a good tool in case your song doesn't fit the range of a specific instrument. I'm trying to deal with syncronization errors, I'll probably need some rounding algorithm so that even if the division fails for some reason in the end of each measure all parts are in sync. |
| messiaen Catgirl Level: 61 Posts: 869/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| Damn, dextrose-forum.com (I think that was the domain after the last move) seems to be down. It would be a real shame if nobody archived the forums/tools there. If you don't find your master.cod file, you can use this version of IDA PRO (UltraLib signature files included). Just load a savestate of whatever version of Mario 64 you are using and it should find most UltraLib functions. If you are using the US 1.0 version, here are addresses of gu functions from Nagra's master.cod file: 0x80324c20,guOrthoF 0x80324d74,guFrustum 0x80324de0,guPerspectiveF 0x80325010,guPerspective 0x803258d0,guRotateRPYF 0x80325924,guRotateRPY 0x80329450,guMtxF2L 0x80329550,guMtxIdentF Nemu can be quite handy if you want to test doing some changes or check how these functions are called. |
| messiaen Catgirl Level: 61 Posts: 870/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| People always overlook this part: Warning: this conversion will only work for RAM addresses which range from 0x80246000 to about 0x80333000 So, you can't patch that hair modifier code using this method. Instead, one should use the more traditional method, that is, using a hex editor to search where/if those RAM values are found in the ROM and them modify them. |
| messiaen Catgirl Level: 61 Posts: 871/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| Read the instructions at my site again, it sounds ike you haven't instaled Visual C++ Redistributable package. |
| messiaen Catgirl Level: 61 Posts: 872/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| You haven't triangulated your object in Blender. It says in your post you did toggle the "triangulate" option, but I'm 100% sure you didn't (or somehow didn't use this feature properly, I don't use Blender so I don't know) |
| messiaen Catgirl Level: 61 Posts: 873/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
Originally posted by DarkSpacer That is incorrect. My program simply ignores the last vert of a quad and instead draw a single triangle out of it. The visual effect is very obvious (and has been already taked about in many pages of this thread). I opened ZeroOne's .obj file, and while it does contain triangles, there are also some quads on it, so my initial diagnostic was correct. |
| messiaen Catgirl Level: 61 Posts: 874/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| ChanceMcMichael, Conte de Contis, Vinnyboyler: Nice work all of you! Looking forward to see more. |
| messiaen Catgirl Level: 61 Posts: 875/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| I get it now, I'm actually using a modified version of that .obj exporter plug-in (the one I used to include in previous versions of the Level Importer). The original erroneously uses "mapKd" instead of "map_Kd" to specify textures. I will include support to the incorrect version in the next version or simply provide the modified plug-in again, if the author allows me to. Also, it's "map_Kd", not "Map_Kd" (it's case sensitive). |
| messiaen Catgirl Level: 61 Posts: 876/1085 EXP: 1795237 For next: 81359 Since: 11-20-07 Since last post: 197 days Last activity: 183 days |
|
||
| This "level importer" started in a weekend with messy coding, even to MY low standards on that respect. There are many bad stuff I don't feel like redoing simply because it works in the current state. I doubt someone will improve it much or add new functionality if I release the source code, so its best just to suggest it to me and if it's feasible I''ll do it when I have some time. If you are really curious, here's the source code. Again, I'm highly ashamed of it, I could probably cut 1k lines by properly arranging data into arrays instead of doing switch statements, variable names are terrible, etc etc etc. Multi-area support would require many modifications to the ROM layout (probably expanding it to 64MB) and some jor changes in the GUI and importer code. Currently, TT64 doesn't support areas (it's hardcoded for a few levels), so there's no sense working on it yet. As for the "map_Kd" stuff, you can just correct the Ruby .obj exporter pluging yourselves, just open it in notepad, search for "mapKd" and replace to "map_Kd". The author of that plug-in probably did some confusion with the name. |
| Pages: 1 2 3 4 5 6 7 8 9 10 ... 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
| Jul - Posts by messiaen |
![]() |
Acmlmboard - 07/23/2013 b378.03 ©2000-2013 Acmlm, Xkeeper, Inuyasha, et al. |
| Query execution time: | 0.190391 seconds |
| Script execution time: | 0.076591 seconds |
| Total render time: | 0.266982 seconds |