notameowcelot Posted April 2 Share Posted April 2 (edited) Crimson Skies: High Road to Revenge uses some version of DirectX .x in binary which has been presumably compressed. This was previously nearly cracked, but not completely, on Xentax many years ago...completely lost now. The 2001 prototype uses the uncompressed version of the .x format, which also isn't yet reversed... I've included both 2001 prototype and 2003 .x formats in hopes they can be understood. The 2001 version is prefixed as such, and contains the original source (maya binary) that the .x was presumably compiled from - in hopes it could be used for referencing how the .x should look. My hopes are the 2001 .x can be used to help further refine the 2003 .x reversing, and make sure it's more accurate As a side note the AirplaneHR_Devastator comes from a pre-release build. It's possible there's still some differences from the retail .x format, though unlikely, given the time between the build and release. AirplaneHR_Devastator.7z Edited April 2 by notameowcelot Link to comment Share on other sites More sharing options...
notameowcelot Posted April 2 Author Share Posted April 2 Here is an image of how the 2001-devastator should look: keep in mind I have not attached textures, forgot to - those are in a separate post I made a few minutes earlier though. Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 4 Engineer Share Posted April 4 (edited) Checked for one sub mesh only. 2001-devastator obj file (File/SaveAs mesh) might need face culling (F4 in Noesis). The AirplaneHR (2nd picture) requires more fiddling. Edited April 4 by shak-otay Link to comment Share on other sites More sharing options...
notameowcelot Posted April 7 Author Share Posted April 7 On 4/4/2024 at 11:26 PM, shak-otay said: Checked for one sub mesh only. 2001-devastator obj file (File/SaveAs mesh) might need face culling (F4 in Noesis). The AirplaneHR (2nd picture) requires more fiddling. Not sure what's going on there. Bad normals maybe? The source .mb doesn't have anything like that. If it helps, I've converted it to .fbx so you can load it up in Blender to preview. There's no source file for the 2003 devastator that I'm aware of, unfortunately. devastator.7z Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 7 Engineer Share Posted April 7 How did you get it as .fbx? And if you have why should we trick around with .x? (When trying MeshConvert from the DirectX SDK with 2001-devastator.x it says: "can't load",) Link to comment Share on other sites More sharing options...
notameowcelot Posted April 7 Author Share Posted April 7 6 hours ago, shak-otay said: How did you get it as .fbx? And if you have why should we trick around with .x? (When trying MeshConvert from the DirectX SDK with 2001-devastator.x it says: "can't load",) It's from the .mb I attached in the original upload - maya binary file. The developers left some sources files in the original 2001 prototype, which obviously are missing from the retail 2003 version. This is also one of the only ones present, unfortunately. The retail .x files still need to be reverse engineered as a result. Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 7 Engineer Share Posted April 7 You'll need a script to get all the 50 parts of 2001-Devastator.x file. Backface culling enabled in blender after .obj import. But that's not sufficient. Link to comment Share on other sites More sharing options...
notameowcelot Posted April 7 Author Share Posted April 7 1 hour ago, shak-otay said: You'll need a script to get all the 50 parts of 2001-Devastator.x file. Backface culling enabled in blender after .obj import. But that's not sufficient. Would it be possible to treat these as submeshes? Seems that's what it's supposed to be, when in the .mb especially Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 7 Engineer Share Posted April 7 (edited) When I wrote "parts" I meant "sub meshes". Or what do you mean exactly? (Maybe there's a hierarchy, didn't check that.) Btw, here's the part that I named "2nd". One of the 49 (?) parts at least. Edited April 7 by shak-otay Link to comment Share on other sites More sharing options...
notameowcelot Posted April 7 Author Share Posted April 7 (edited) 24 minutes ago, shak-otay said: When I wrote "parts" I meant "sub meshes". Or what do you mean exactly? (Maybe there's a hierarchy, didn't check that.) Btw, here's the part that I named "2nd". One of the 49 (?) parts at least. Looks like, if we're going by the .x internal stuff, the individual submeshes retain their names. These appear after 'Frame' in the .x files, and before 'FrameTransformMatrix'. Doesn't seem like there's a hierarchy. For example 'prop_fast_1' and 'gun_1' are the names for relevant submeshes. The .mb and exported .fbx corroborate this as well. I'm not sure if it's rigged, but it doesn't look like it has any sort of armature or skeleton. Edited April 7 by notameowcelot Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 10 Engineer Share Posted April 10 (edited) Seems there are counts included in the face index block which need to be taken into account. So above shown part looks like so: Edited April 10 by shak-otay Link to comment Share on other sites More sharing options...
notameowcelot Posted April 10 Author Share Posted April 10 12 hours ago, shak-otay said: Seems there are counts included in the face index block which need to be taken into account. So above shown part looks like so: Awesome work so far! This the 2003 model or the 2001 one? Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 11 Engineer Share Posted April 11 (edited) The 2001 one. vertex start= Address +6 , vertex count 1a6 304 tip of hull 3097 1150 hull dcee 326 cockpit 10ee9 24 1142c 160 wing 12d98 24 132d9 58 13d22 80 14aa5 160 wing 16412 26 169a3 76 17698 26 17c27 24 1816a 160 19ad3 58 1a51c 80 1b29d 76 1bf91 24 1c4d7 4 1c70d 4 1c941 48 1d225 48 1db05 326 cockpit 20d00 216 propeller 22f55 216 2513b 98 26151 98 27167 98 2817d 98 29193 98 2a1a9 98 2b1bf 98 2c1d5 98 2d1f0 160 2eb5c 36 2f290 36 2f9bf 48 30274 128 pilot's head? 31711 118 32a2e 24 32f5e 4 33196 4 333ce 4 33606 4 33838 4 33a6a 4 33c9c 4 33ece 4 34100 4 34332 4 34564 4 Edited April 11 by shak-otay Link to comment Share on other sites More sharing options...
notameowcelot Posted April 11 Author Share Posted April 11 I see! When it comes to making this stuff readable, would it be better to make a Noesis plugin to read the .x formats, or something else (e.g. Blender)? Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 11 Engineer Share Posted April 11 (edited) If Durik comes up with a 40 lines Noesis script there's usually no argument for other solutions.😀 Airplane_HR, cage: Edited April 11 by shak-otay 1 Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 11 Engineer Share Posted April 11 last number in each line: vertex count 0. 23c 1401, rocket_launcher.tga, 4 1. 38a 1401, rocket_launcher.tga, 16 2. 6d6 1401, rocket_launcher.tga, 16 3. a22 1401, rocket_launcher.tga, 16 4. d6e 1401, rocket_launcher.tga, 34 5. 1367 1401, rocket_launcher.tga, 24 6. 17fc 1401, rocket_launcher.tga, 36 7. 1e33 1401, rocket_launcher.tga, 38 8. 24ee 1401, rocket_launcher.tga, 20 9. 289b 1401, rocket_launcher.tga, 21 10. 2d5e 1401, rocket_launcher.tga, 21 11. 32eb 1401, rocket_launcher.tga, 144 12. 4af7 1401, rocket_launcher.tga, 8 13. 4cec 1401, rocket_launcher.tga, 8 14. 4f40 1401, rocket_launcher.tga, 28 15. 54e2 1401, rocket_launcher.tga, 64 16. 5f90 1401, rocket_launcher.tga, 28 17. 64cb 1401, rocket_launcher.tga, 20 18. 694a 1801, devastator_landgear.tga, 20 19. 6d1c 1801, devastator_landgear.tga, 14 20. 7007 1801, devastator_landgear.tga, 14 21. 72f1 1801, devastator_landgear.tga, 44 22. 7aa9 1801, devastator_landgear.tga, 64 23. 86b7 1801, devastator_landgear.tga, 20 24. 8a87 1801, devastator_landgear.tga, 14 25. 8d70 1801, devastator_landgear.tga, 14 26. 9058 1801, devastator_landgear.tga, 44 27. 9800 1801, devastator_landgear.tga, 64 28. a3e7 1801, devastator_landgear.tga, 20 29. a79c 1801, devastator_landgear.tga, 20 30. ab6b 1801, devastator_landgear.tga, 14 31. ae53 1801, devastator_landgear.tga, 14 32. b13a 1801, devastator_landgear.tga, 44 33. b8e1 1801, devastator_landgear.tga, 64 34. c463 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 20 35. cc3f f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 20 36. d418 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 38 37. e28b f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 38 38. f102 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 39. f83d f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 40. ff5a 1401, Prop_devastator.tga, 117 41. 11561 1401, Prop_devastator.tga, 117 42. 12b67 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 28 43. 135ff f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 28 44. 14091 1401, Prop_devastator.tga, 43 45. 1491e f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 46. 1504f f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 47. 15780 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 48. 15eb1 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 49. 165e2 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 50. 16d13 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 51. 17444 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 52. 17b75 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 18 53. 182a8 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 12 54. 187a3 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 15 55. 18da0 f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 12 56. 1929b f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 15 57. 1b84b f0f, devastator.tga, 19 - Airplane_dmg_2.tga, 19 - Airplane_dmg_3.tga, 17 - devastator~n.tga, 1104 58. 34749 1701, devastator_spinner.tga, 65 59. 35396 1101, devastatorHR.tga, 200 60. 37faf 1601, devastatorHR_Cage.tga, 971 61. 4134b 1701, Devastator_cockpit.tga, 675 62. 47896 1803, Devastator_Seatback.tga, 15 - SH_grime01.tga, 120 63. 48b41 1611, aagun_player_flak.tga, 24 - aagun_player_flak~a.tga, 204 64. 4aaa1 1401, Prop_devastator.tga, 43 Link to comment Share on other sites More sharing options...
Engineer Durik256 Posted April 11 Engineer Share Posted April 11 (edited) On 4/7/2024 at 1:35 PM, shak-otay said: (When trying MeshConvert from the DirectX SDK with 2001-devastator.x it says: "can't load",) fmt_DirectX.zip << using my DirectX plugin for Noesis, (which I shared on xentax), it also gave the error "ImportError: Normal face count does not match vertex face count.", just by commenting out the errorб its opens it. but there seems to be a lack of polygons on the wings. xD EDIT: ah, I think I see the problem. there are polygons with more than 4 indexes EDIT2: I modified xfile_fmt.py specifically for *.x (2001) files of this game Edited April 11 by Durik256 1 Link to comment Share on other sites More sharing options...
notameowcelot Posted April 11 Author Share Posted April 11 (edited) 3 hours ago, Durik256 said: fmt_DirectX.zip << using my DirectX plugin for Noesis, (which I shared on xentax), it also gave the error "ImportError: Normal face count does not match vertex face count.", just by commenting out the errorб its opens it. but there seems to be a lack of polygons on the wings. xD EDIT: ah, I think I see the problem. there are polygons with more than 4 indexes EDIT2: I modified xfile_fmt.py specifically for *.x (2001) files of this game awesome! is there any chance you could investigate the 2003 version? as that is the most recent (retail) version of the game which I do need files from. I'll send some more samples if needed also testing the modified xfile fmt you sent doesn't seem to work..gives that importerror you described before 😞 Edited April 11 by notameowcelot Link to comment Share on other sites More sharing options...
Engineer Durik256 Posted April 11 Engineer Share Posted April 11 15 minutes ago, notameowcelot said: also testing the modified xfile fmt you sent doesn't seem to work..gives that importerror you described before 😞 because you should comment out this line that gives the error. (line 362, 363, 364 inside xfile_parser.py) (this is also described in the message) or replace to 'print' if numFaces != len(mesh.posFaces): print("Normal face count does not match vertex face count.") Link to comment Share on other sites More sharing options...
notameowcelot Posted April 11 Author Share Posted April 11 Just now, Durik256 said: because you should comment out this line that gives the error. (line 362, 363, 364 inside xfile_parser.py) (this is also described in the message) or replace to 'print' if numFaces != len(mesh.posFaces): print("Normal face count does not match vertex face count.") oh yep! just figured that out, my bad Link to comment Share on other sites More sharing options...
notameowcelot Posted April 21 Author Share Posted April 21 (edited) been a bit busy, but here's a batch of models I've found from the 2001 prototype that don't seem to import with the current Noesis tools - specifically Metropolis.x - textures make the zip too large so I can't send them unfortunately. (m3-models.7z) also, I've attached a few different 2003 (june prototype, should still have parity with retail) models in the hopes they can be properly reversed through Noesis. still can't quite figure them out on my end due to the weird stuff going on there, but hoping someone else can figure 'em out (2003-models.7z) a particularly curious thing is that a lot of models related to maps seem to have their extensions set as x_(originalfilename) - which would probably make it a lot harder to mess with in Noesis unless they're all renamed to .x? i've attached textures for one model (cin hr dev) which is in its' own folder for the 2003 stuff - but let me know if you want more textures for the others, and I'll send em over! cheers 😄 m3-models.7z 2003-models.7z Edited April 21 by notameowcelot Link to comment Share on other sites More sharing options...
Engineer shak-otay Posted April 21 Engineer Share Posted April 21 (edited) CH_boss_zep, some sub meshes: Edited April 21 by shak-otay Link to comment Share on other sites More sharing options...
notameowcelot Posted April 21 Author Share Posted April 21 2 hours ago, shak-otay said: some sub meshes: oh awesome! that's the sh boss zep right? Link to comment Share on other sites More sharing options...
notameowcelot Posted April 23 Author Share Posted April 23 (edited) got an awesome find on my end - was able to get in contact with someone that had the original Xentax Noesis .x plugin for 2003 retail mentioned in my OP - it's pretty unfinished from what I know, uv's aren't correctly grabbed and some submeshes are positioned incorrectly...guess just gotta figure out how to integrate it into the existing .x plugin @Durik256 made? it also doesn't get materials or textures I think, and probably bad normals from looking at the previews original py is attached - hope this helps! P.S., I should note there's .anm files for animations for these .x files that I'd like to look into as well, should I make a separate thread for those? CrimsonSkies_Xbox_X.py Edited April 23 by notameowcelot Link to comment Share on other sites More sharing options...
notameowcelot Posted April 23 Author Share Posted April 23 quick note as well while I'm investigating the plugin - some .x files don't work as well, SH_Cloud1 and SH_Redsky for example. bundled 'n sent! 2003-badmodels.7z Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now