Advertisement
General_101

JMSv2 Writeup WIP

Mar 15th, 2018
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.83 KB | None | 0 0
  1. Description: JMSv2 is a general encompassing term used by myself to describe versions of the .JMS related to Halo 2 .JMS importing.
  2. (See versions 8205-8210 for JMSv2 examples.) Examples of this format can be discovered by using the Tag Extractor's "extract import info" command
  3. to retrive the import files held by the default H2EK tags. Files that have been packaged do not hold these import files.
  4. In this document I will go over the file structure and try to be as descriptive as I can.
  5. At time of writing it is not known if specifc .JMS versions disable or enable specifc features, but going outside the 8197-8210 range will cause an unknown version error.
  6. It is not known if the file versions extend beyond this range.
  7.  
  8. .JMS files in Halo 2 are unicode files that are laid out in a specific manner. Halo CE .JMS(8197-8204 are accepted by tool although it must undergo modifications.
  9. Files must be converted to unicode and have some sections written different such as the material flag section in CE. See the H2Codez manual for more details.
  10. JMSv2 files are much the same with them needing to be unicode but they also have a different layout compared to .JMS(CE) or .ASS.
  11. Every single section must be filled with data. Even if that data is 0. If you do not include say the 0 for markers you will get a "end of file" error.
  12. The file uses tabs for instead of space for items next to each other. Spaces in your file will give you pharsing errors.
  13. Let us begin with the first section
  14.  
  15. This is pretty straight forward here.
  16. >>>>>>>>>>>>>>>>
  17. ;### VERSION ### (Header)
  18. 8210 (Version number. The number defined will determine how tool treats the file.)
  19. ; <8197-8210> (Comment defined by a ;. These are ignored by tool)
  20. >>>>>>>>>>>>>>>>
  21.  
  22. The next section will now be able the object orgin or more commonoly known as frame or b_levelroot.
  23. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  24. ;### NODES ### (Header)
  25. 1 (Gives the number of nodes laid out by the exporter that tool has to go through. Having the wrong amount can cause "end of file" errors.)
  26. ; <name> (The name of object origin)
  27. ; <parent node index> (The index of the object starting at -1. This can be followed by a node with an index of 0 for a child node. This will be seen in things like rigged models)
  28. ; <default rotation <i,j,k,w>> (Rotations are a quaternion with a default definition of 0.0000000000.)
  29. ; <default translation <x,y,z>> (Translation is the location of the object in the world with a default definition of 0.0000000000)
  30.  
  31. ;NODE 0 (A header that describes what item is being laid out with a index. Index goes in increments of 1 per item starting from 0 though this is just a comment and is not needed.)
  32. b_pelvis (The name of our object origin.)
  33. -1 (The parent node index with -1 being null.)
  34. 0.4999988079 0.5000004768 0.4999994934 -0.5000011921(The rotation of our object in quaternion. The default values for this will always be "0.0000000000 0.0000000000 0.0000000000 1.0000000000")
  35. 1.4614276886 0.0000029225 44.0024833679 (The location of a vertice in space. The default for this will always be "0.0000000000 0.0000000000 0.0000000000")
  36. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  37.  
  38. This section will cover materials.
  39. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  40. ;### MATERIALS ### (Header)
  41. 1 (Gives the number of materials laid out by the exporter.)
  42. ; <name> (Name of our material.)
  43. ; <[???] [LOD] [Permutation] [Region]>(A few options here for a person to look at. The first is a number surrounded by parentheses. It is unknown what this number is or any effects it may have. Testing on it gave no answer and currently it is considered to yield no effects. No hypothesis on the usage of this number as application appears to be completely random. One file can have a single material with this number starting at 1 while another starting a 3 with no 1 or 2 in sight. The next is a level of detail setting. It is a capital L followed by a number with the number ranging from the standard 1-6 seen in the editor. It's likely that both the so far brought up options only affect the render_model tag and since the model-render command doesn't exist then these two should be considered deprecated with no need to worry about including them in a potential exporter. The)
  44.  
  45. ;MATERIAL 0 (A header that describes what item is being laid out with a index. Index goes in increments of 1 per item starting from 0 though this is just a comment and is not needed.)
  46. cov_battery_shiny (example name)
  47. (1) L5 base object (example unknown, example level of detail, example permutation, and example region)
  48. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  49.  
  50. This section will cover markers.
  51. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  52. ;### MARKERS ### (Header)
  53. 1 (Gives the number of materials laid out by the exporter.)
  54. ; <name> (Name of our marker. Name must be unique otherwise it will be ignored as a duplicate marker.)
  55. ; <node index> (The index of the node that the marker is parented to.)
  56. ; <rotation <i,j,k,w>> (The rotation of our object in quaternion. The default values for this will always be "0.0000000000 0.0000000000 0.0000000000 1.0000000000")
  57. ; <translation <x,y,z>> (Translation is the location of the object in the world with a default definition of 0.0000000000)
  58. ; <radius> (The size of the marker)
  59.  
  60. ;MARKER 0 (A header that describes what item is being laid out with a index. Index goes in increments of 1 per item starting from 0 though this is just a comment and is not needed.)
  61. drool2 (Example name. I am assuming that if the model-render command existed then this would act as more of a group name and would allow duplicates. Markerks on levels only seem to accept unique names.)
  62. 6 (Example node index.)
  63. -0.0256266929 -0.4670926630 -0.0289750062 -0.8833618760(Example rotation.)
  64. 3.5272619724 0.4587731361 -2.0605127811 (Example translation.)
  65. (Random fucking space for some reason. Not sure why this is here but it seems to be in every file I've seen with markers.)
  66. -1.0000000000 (Example Radius. This was most likely only a model-render option as this does not seem to be an option in the scenario_structure_bsp tag. More testing will be needed to see if this option does actually have an effect on markers in the sbsp tag.)
  67. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  68.  
  69. This section will cover instance xref paths. While it has instance in the name it appears unrelated atm. A more accurate writing of this section would be enviroment xref paths as this does not deal with instance geometry but enviroment objects which are scenery tags.
  70. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  71. ;### INSTANCE XREF PATHS ### (Header)
  72. 1 (Gives the number of enviroment objects laid out by the exporter.)
  73. ; <path to .MAX file> (The path to a .MAX file. This file is used to find the location of the JMS files in data based on the path or the compiled tags. This list can then be referenced in the block below. Testing so far seems to indicate that finding the path is all the .MAX file is used for.
  74. ; <name>
  75.  
  76. ;XREF 0
  77. C:\Program Files (x86)\Microsoft Games\Halo 2 Map Editor\data\objects\multi\object\render\object.max
  78. object
  79. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement