Jump to content
COMBATSIM Forum

Recommended Posts

Okay, we have an urgent problem here: The order of drawing.

I've got 90 % of the terrain geometry up and running, but it doesn't show because many terrain tiles are listed behind buildings in SSDs, causing the terrain to overdraw the buildings. While .3 files gave a rendering order through program branching, we have yet to find that order for SSDs.

Computing the distance to the .3's center and drawing back-to-front does not work either because the terrain's center is also the SSD's center and therefore still occludes half of the buildings.

Here's a screenshot of King Abdulaziz International Airport from below, proving that everything's drawn:

below.png

And that's from above, with the terrain overdrawing everything:

above.png

We won't be able to do any fine tuning until we get that rendering order correct :(

And here's how the .3 files are positioned in the SSD, because I couldn't find that information in your scripts, Mike:

There is one entry for each object in the zero-terminated list behind block 7 (your scripts list it as Block4_Pointer_1). These mean:

  • 0007 <3index> — the model is the <3index>'th entry in block 6; its position is 0/0/0 without any rotation or scaling.
  • 0008 <3index> <XYZindex> — the model is the <3index>'th entry in block 6; its position is the <XYZindex>'th coordinate in block 3.

If a model's scaling in block 6 is positive, then the model must be upscaled by that value. If it is negative, it must be downscaled through multiplying by 1 ÷ -value.

Link to post
Share on other sites
  • Replies 1.1k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

DKD … you've written an excellent article on how TAW handles the red****.ini files in the TAW Wiki; I should just have rtfm :rolleyes: I just re-discovered it when looking for information on SSDs.

Not to interrupt while the Order of the Fifty Pound HeadsTM is getting hot, but I would like to reiterate my request to populate the TAW Wiki with your findings as soon as you have actionable data. I would do it, but you guys are on a completely different level than me and I couldn't hope to go through all of these posts to find the relevant information.

And now, back to your regularly scheduled program...:thumbsup:

Link to post
Share on other sites

TAW's internals are already difficult to describe in code, and I bet they're even more difficult to describe in English ;) But yes, if I'm stuck and cannot write on improving the viewer, I'll look into posting some findings in the Wiki :)

Concerning the regularly scheduled program: I'm currently looking into SSDs whose rendering order is inherently correct by accident to do some testing. abtw_1ro.SSD is a nice hit already:

twn.png

For this screenshot, I've implemented a distance scale factor which can be used to toggle overall detail level. Here, it's 0.3, meaning that detail is kept thrice the distance.

As you can see at the arrow, there are minor problems with some polygons. I guess this is some problem with render states not being reset when a new model is rendered; I'm certain it can be fixed quickly.

Someone mentioned in some thread whose title I can't recall that TAW draws the terrain first, then buildings, then mobile units. Is there any knowledge on how TAW's engine seperates terrain from buildings in the same SSD? This could already solve my overdraw problem …

Link to post
Share on other sites

I've always considered the first word of the .3 file as giving this information. The numbers are increasingly negative the further away you expect an object to be.

The conversion list:

-10 ; 707.3

-3 ; a101.3

-5236 ; a50.3

-19 ; abdostem.3

-1024 ; abtw_1ra.3

-1024 ; abtw_1ro.3

-1024 ; abtw_2ra.3

-1024 ; abtw_2ro.3

-435 ; abu.3

-1024 ; abusim2.3

-1024 ; abu_sim.3

-1024 ; abydos.3

0 ; acmidebs.3

-1024 ; aden_a.3

-1024 ; aden_b.3

-1024 ; aden_c.3

-1024 ; aden_d.3

-1024 ; aden_e.3

-1024 ; aden_f.3

-1024 ; aden_g.3

-1024 ; aden_h.3

-1024 ; aden_i.3

-1024 ; aden_j.3

-1024 ; aden_k.3

-1024 ; aden_l.3

-1024 ; aden_m.3

-1024 ; aden_n.3

-1024 ; aden_o.3

-1024 ; aden_p.3

-1024 ; aden_q.3

-65 ; adi1_180.3

-60 ; adis1p90.3

-60 ; adis1_90.3

-57 ; adis2180.3

-65 ; adisper1.3

-57 ; adisper2.3

-81 ; aihq_180.3

-81 ; air_hq.3

-1024 ; almubraz.3

-1024 ; amada.3

-54 ; amadatem.3

-24 ; ammobild.3

-20 ; amobl90.3

-20 ; amobl_90.3

-8 ; amx_10rc.3

-113 ; amyhq90.3

-130 ; amy_hq.3

-9 ; an70.3

-29 ; anglo.3

-33 ; antenna.3

-4 ; apache1.3

-1024 ; arablc_1.3

-1024 ; arablc_2.3

-1024 ; arablc_3.3

-1024 ; arablc_4.3

-1024 ; arabli_1.3

-1024 ; arabli_2.3

-1024 ; arabli_3.3

-1024 ; arabli_4.3

-1024 ; arablm01.3

-1024 ; arablm02.3

-1024 ; arablm03.3

-1024 ; arablm04.3

-1024 ; arablm05.3

-1024 ; arablm06.3

-1024 ; arablm07.3

-1024 ; arablm08.3

-1024 ; arablm_1.3

-1024 ; arabls_1.3

-1024 ; arabls_2.3

-1024 ; arabls_3.3

-1024 ; arabls_4.3

-1024 ; arbarms3.3

-1024 ; arbarms4.3

-1024 ; arbcoms3.3

-1024 ; arbcoms4.3

-1024 ; arbinds3.3

-1024 ; arbinds4.3

-1024 ; arbsups3.3

-1024 ; arbsups4.3

-31 ; arleigh.3

-1024 ; asmera_a.3

-1024 ; asmera_b.3

-1024 ; asmera_c.3

-1024 ; asmera_d.3

-1040 ; aswan_a.3

-1040 ; aswan_b.3

-1024 ; aswan_c.3

-1040 ; aswan_d.3

-1040 ; aswan_e.3

-1024 ; aswan_f.3

-1040 ; aswan_g.3

-1040 ; aswan_h.3

-1024 ; aswan_i.3

-1024 ; aswan_j.3

-1040 ; aswan_k.3

-1040 ; aswan_l.3

-1040 ; aswan_m.3

-1472 ; aswan_n.3

-1040 ; aswan_o.3

-1024 ; aswan_p.3

-1024 ; aswan_q.3

-1024 ; aswan_r.3

-1024 ; aswan_s.3

-1024 ; aswan_t.3

-1024 ; aswan_u.3

-1024 ; asyut.3

-1024 ; asyut_a.3

-1024 ; asyut_b.3

-1024 ; asyut_c.3

-1024 ; asyut_d.3

-1024 ; asyut_e.3

-1024 ; asyut_f.3

-1024 ; asyut_g.3

-1024 ; asyut_h.3

-1024 ; asyut_i.3

-10 ; atgtrail.3

-33 ; atna_180.3

-33 ; atna_90.3

-1024 ; at_taif.3

-2 ; aurora1.3

-5 ; avengr.3

-11 ; awcircle.3

-9 ; awc_707.3

-10 ; awc_767.3

-3 ; awc_a10.3

-5236 ; awc_a50.3

-9 ; awc_an70.3

-4 ; awc_apac.3

-2 ; awc_auro.3

-11 ; awc_b2.3

-4 ; awc_bhwk.3

-13 ; awc_c17.3

-17 ; awc_c747.3

-5 ; awc_chin.3

-5 ; awc_cobr.3

-3 ; awc_coma.3

-4 ; awc_dark.3

-10 ; awc_e3.3

-9 ; awc_ec13.3

-6 ; awc_ef20.3

-4 ; awc_f117.3

-5 ; awc_f14.3

-6 ; awc_f15.3

-6 ; awc_f16.3

-6 ; awc_f16u.3

-6 ; awc_f18.3

-7 ; awc_f22.3

-15 ; awc_gala.3

-2 ; awc_harr.3

-3 ; awc_hawk.3

-16 ; awc_il76.3

-16 ; awc_il78.3

-3 ; awc_jast.3

-4 ; awc_ka50.3

-3 ; awc_lear.3

-5 ; awc_mi24.3

-6 ; awc_mi26.3

-4 ; awc_mi28.3

-5 ; awc_mi40.3

-7 ; awc_mig2.3

-4 ; awc_mira.3

-7 ; awc_mya1.3

-5 ; awc_rafa.3

-6 ; awc_stal.3

-3 ; awc_su25.3

-7 ; awc_su27.3

-7 ; awc_su34.3

-7 ; awc_su35.3

-7 ; awc_tier.3

-4 ; awc_torn.3

-9 ; awc_tri.3

-2 ; awc_tu30.3

-7 ; awc_u2.3

-3 ; awc_v22.3

-11 ; awind.3

-9 ; aw_mig21.3

-5 ; aw_mig27.3

-6 ; aw_mig31.3

-11 ; b2.3

-22 ; bang.3

-46 ; barrack.3

-22 ; barracks.3

-35 ; bdb90.3

-4 ; bedford1.3

-31 ; bfct90.3

-31 ; bfct_180.3

-31 ; bfct_90.3

-31 ; bigfact.3

-4 ; blakhawk.3

-82 ; bldr90.3

-108 ; bldr_180.3

-82 ; bldr_90.3

-15 ; bmissile.3

-9 ; bmp_3.3

-7 ; bmz.3

-2 ; bmzmiss.3

-1024 ; boxcnt1l.3

-1024 ; boxcnt1r.3

-1024 ; boxcnt2l.3

-1024 ; boxcnt2r.3

-1024 ; boxcnt3l.3

-1024 ; boxcnt3r.3

-1024 ; boxcnt4l.3

-1024 ; boxcnt4r.3

-1024 ; boxy1c_1.3

-1024 ; boxy1c_2.3

-1024 ; boxy1c_3.3

-1024 ; boxy1c_4.3

-1024 ; boxy1i_1.3

-1024 ; boxy1i_2.3

-1024 ; boxy1i_3.3

-1024 ; boxy1i_4.3

-1024 ; boxy1s_1.3

-1024 ; boxy1s_2.3

-1024 ; boxy1s_3.3

-1024 ; boxy1s_4.3

-4 ; brdm_2.3

-36 ; brk90.3

-18 ; brks90.3

-22 ; brks_180.3

-46 ; brk_180.3

-73 ; build.3

-73 ; build180.3

-93 ; build90.3

-109 ; builder.3

-93 ; build_90.3

-1024 ; buraydah.3

-1024 ; bursud_a.3

-1024 ; bursud_b.3

-1024 ; bursud_c.3

-1024 ; bursud_d.3

-25 ; b_dock.3

-35 ; b_dubl_1.3

-48 ; b_park.3

-38 ; b_tank_1.3

-53 ; b_tank_2.3

-13 ; c17.3

-37 ; cabin.3

-52 ; cabn90.3

-37 ; cabn_180.3

-52 ; cabn_90.3

-2 ; canopy.3

-7 ; car.3

-4 ; carige.3

-18 ; carpark.3

-12 ; chaff.3

-6 ; chair.3

-6 ; chalenge.3

-5 ; chaparal.3

-53 ; charles.3

-17 ; CHI747.3

-10 ; chi767.3

-124 ; chimny_1.3

-182 ; chim_tnk.3

-5 ; chinook1.3

-262 ; chm_tnk2.3

-1024 ; cit1arl1.3

-1024 ; cit1arl2.3

-1024 ; cit1_rd1.3

-1024 ; cit1_rd2.3

-1024 ; cit1_rl1.3

-1024 ; cit1_rl2.3

-1024 ; cloud1c1.3

-1024 ; cloud1c2.3

-1024 ; cloud1c3.3

-1024 ; cloud1c4.3

-1024 ; cloud1i1.3

-1024 ; cloud1i2.3

-1024 ; cloud1i3.3

-1024 ; cloud1i4.3

-1024 ; cloud1m1.3

-1024 ; cloud1m2.3

-1024 ; cloud1m3.3

-1024 ; cloud1m4.3

-1024 ; cloud1s1.3

-1024 ; cloud1s2.3

-1024 ; cloud1s3.3

-1024 ; cloud1s4.3

-18 ; cmbk_90.3

-8 ; cmbl_90.3

-22 ; cmhq_90.3

-15 ; cntl90.3

-12 ; cntl_180.3

-15 ; cntl_90.3

-5 ; cobra1.3

-3 ; comanch1.3

-18 ; combunk.3

-8 ; commsbui.3

-13 ; commshq.3

-30 ; cont180.3

-30 ; contower.3

-1 ; contrail.3

-12 ; control.3

-52 ; cont_90.3

-136 ; cool_n.3

-80 ; crain.3

-7 ; crate.3

-80 ; crn90.3

-80 ; crn_180.3

-80 ; crn_90.3

-6 ; crotale.3

-52 ; cstr90.3

-77 ; cstr_180.3

-52 ; cstr_90.3

-1024 ; ctclfc_1.3

-1024 ; ctclfc_2.3

-1024 ; ctclfc_3.3

-1024 ; ctclfc_4.3

-1024 ; ctclfi_1.3

-1024 ; ctclfi_2.3

-1024 ; ctclfi_3.3

-1024 ; ctclfi_4.3

-1024 ; ctclfs_1.3

-1024 ; ctclfs_2.3

-1024 ; ctclfs_3.3

-1024 ; ctclfs_4.3

-1024 ; ctrcnl_1.3

-1024 ; ctrcnl_2.3

-1024 ; ctrcnl_3.3

-1024 ; ctrcnl_4.3

-1024 ; ctrcnr_1.3

-1024 ; ctrcnr_2.3

-1024 ; ctrcnr_3.3

-1024 ; ctrcnr_4.3

-1024 ; ctrest_1.3

-1024 ; ctrest_2.3

-1024 ; ctrest_3.3

-1024 ; ctrest_4.3

-1024 ; ctrokc_1.3

-1024 ; ctrokc_2.3

-1024 ; ctrokc_3.3

-1024 ; ctrokc_4.3

-1024 ; ctroki_1.3

-1024 ; ctroki_2.3

-1024 ; ctroki_3.3

-1024 ; ctroki_4.3

-1024 ; ctroks_1.3

-1024 ; ctroks_2.3

-1024 ; ctroks_3.3

-1024 ; ctroks_4.3

-1024 ; ctscnl_1.3

-1024 ; ctscnl_2.3

-1024 ; ctscnl_3.3

-1024 ; ctscnl_4.3

-1024 ; ctscnr_1.3

-1024 ; ctscnr_2.3

-1024 ; ctscnr_3.3

-1024 ; ctscnr_4.3

-1024 ; ctsests1.3

-1024 ; ctsests2.3

-1024 ; ctsests3.3

-1024 ; ctsests4.3

-1024 ; ctsest_1.3

-1024 ; ctsest_2.3

-1024 ; ctsest_3.3

-1024 ; ctsest_4.3

-1024 ; ctsndc_1.3

-1024 ; ctsndc_2.3

-1024 ; ctsndc_3.3

-1024 ; ctsndc_4.3

-1024 ; ctsndi_1.3

-1024 ; ctsndi_2.3

-1024 ; ctsndi_3.3

-1024 ; ctsndi_4.3

-1024 ; ctsnds_1.3

-1024 ; ctsnds_2.3

-1024 ; ctsnds_3.3

-1024 ; ctsnds_4.3

-69 ; ctyb90.3

-81 ; ctyblk1.3

-56 ; ctyblk2.3

-56 ; ctyb_180.3

-69 ; ctyb_90.3

-17 ; cyl90.3

-15 ; cylindri.3

-17 ; cyl_90.3

-77 ; c_store.3

-1024 ; dam1b.3

-1024 ; dam2b.3

-1024 ; dam_1.3

-1024 ; dam_2.3

-1024 ; dara.3

-50 ; darabr90.3

-4 ; darkstar.3

-50 ; darobr90.3

-27 ; dave.3

-50 ; da_ra_br.3

-50 ; da_ro_br.3

-1024 ; dcplct_1.3

-1024 ; dcplct_2.3

-1024 ; dcrdct_1.3

-1024 ; dcrdct_2.3

-1024 ; dcrlct_1.3

-1024 ; dcrlct_2.3

-3 ; deadf22.3

-8 ; debris1.3

0 ; debris11.3

0 ; debris12.3

-1 ; debris13.3

-1 ; debris14.3

0 ; debris15.3

0 ; debris16.3

-2 ; debris17.3

-5 ; debris18.3

-4 ; debris19.3

-6 ; debris2.3

-4 ; debris20.3

-1 ; debris21.3

-1 ; debris22.3

-14 ; debris3.3

-17 ; debris4.3

-29 ; debris5.3

-26 ; debris6.3

-12 ; debris7.3

-24 ; debris8.3

-26 ; debris9.3

-27 ; debs.3

-6 ; decoal.3

-1 ; delimo.3

-15 ; dergach.3

-1024 ; dericc_1.3

-1024 ; dericc_2.3

-1024 ; dericc_3.3

-1024 ; dericc_4.3

-1024 ; derice_1.3

-1024 ; derice_2.3

-1024 ; derice_3.3

-1024 ; derice_4.3

-1024 ; derics_1.3

-1024 ; derics_2.3

-1024 ; derict_1.3

-1024 ; derict_2.3

-1024 ; derict_3.3

-1024 ; derict_4.3

-1024 ; dericx_1.3

-280 ; derrick.3

-1024 ; desal_1.3

-1024 ; desal_2.3

-1024 ; desal_3.3

-1024 ; desal_4.3

-1024 ; desarms1.3

-1024 ; desarms2.3

-1024 ; desarms3.3

-1024 ; desarms4.3

-1024 ; descoms1.3

-1024 ; descoms2.3

-1024 ; descoms3.3

-1024 ; descoms4.3

-1024 ; desewrs1.3

-1024 ; desewrs2.3

-1024 ; desewrs3.3

-1024 ; desewrs4.3

-1024 ; desinds1.3

-1024 ; desinds2.3

-1024 ; desinds3.3

-1024 ; desinds4.3

-1024 ; desoas_1.3

-1024 ; despmps1.3

-1024 ; despmps2.3

-1024 ; desrefs1.3

-1024 ; desrefs2.3

-1024 ; desrefs3.3

-1024 ; desrefs4.3

-1024 ; desrtc_1.3

-1024 ; desrtc_2.3

-1024 ; desrtc_3.3

-1024 ; desrtc_4.3

-1024 ; desrth_1.3

-1024 ; desrth_2.3

-1024 ; desrth_3.3

-1024 ; desrti_1.3

-1024 ; desrti_2.3

-1024 ; desrti_3.3

-1024 ; desrti_4.3

-1024 ; desrtm_1.3

-1024 ; desrtm_2.3

-1024 ; desrtm_3.3

-1024 ; desrtm_4.3

-1024 ; desrts_1.3

-1024 ; desrts_2.3

-1024 ; desrts_3.3

-1024 ; desrts_4.3

-1024 ; dessec_1.3

-1024 ; dessups1.3

-1024 ; dessups2.3

-1024 ; dessups3.3

-1024 ; dessups4.3

-1024 ; desvil_1.3

-6 ; detrain.3

-64 ; dfhq_90.3

-8 ; dhow.3

-19 ; dish90.3

-19 ; dishes.3

-19 ; dish_180.3

-19 ; dish_90.3

-1024 ; dis_1rwy.3

-1024 ; djibouti.3

-1024 ; djibou_a.3

-1124 ; djibou_b.3

-1024 ; djibou_c.3

-1024 ; djibou_d.3

-1024 ; djibou_e.3

-1024 ; djibou_f.3

-1024 ; djibou_g.3

-1024 ; djibou_h.3

-1024 ; djibou_i.3

-1024 ; djibou_j.3

-1024 ; djibou_k.3

-1024 ; djibou_l.3

-1024 ; djibou_m.3

-1024 ; djibou_n.3

-1024 ; djibou_o.3

-68 ; dnky90.3

-68 ; dnky_90.3

-1024 ; dntw_1ra.3

-1024 ; dntw_1ro.3

-1024 ; dntw_2ra.3

-1024 ; dntw_2ro.3

-29 ; dock_90.3

-15 ; domebui.3

-19 ; dome_90.3

-63 ; donkey.3

-255 ; drk90.3

-27 ; drums.3

-27 ; drum_180.3

-37 ; drum_90.3

-1024 ; dstw_1ra.3

-1024 ; dstw_1ro.3

-1024 ; dstw_2ra.3

-1024 ; dstw_2ro.3

-1024 ; dswhtc_1.3

-1024 ; dswhtc_2.3

-1024 ; dswhtc_3.3

-1024 ; dswhtc_4.3

-1024 ; dswhti_1.3

-1024 ; dswhti_2.3

-1024 ; dswhti_3.3

-1024 ; dswhti_4.3

-1024 ; dswhtm_1.3

-1024 ; dswhts_1.3

-1024 ; dswhts_2.3

-1024 ; dswhts_3.3

-1024 ; dswhts_4.3

-1024 ; dunarms1.3

-1024 ; dunarms2.3

-1024 ; dunarms3.3

-1024 ; dunarms4.3

-1024 ; duncoms1.3

-1024 ; duncoms2.3

-1024 ; duncoms3.3

-1024 ; duncoms4.3

-1024 ; dunesc_1.3

-1024 ; dunesc_2.3

-1024 ; dunesc_3.3

-1024 ; dunesc_4.3

-1024 ; dunesi_1.3

-1024 ; dunesi_2.3

-1024 ; dunesi_3.3

-1024 ; dunesi_4.3

-1024 ; dunesm_1.3

-1024 ; dunesm_2.3

-1024 ; dunesm_3.3

-1024 ; dunesm_4.3

-1024 ; duness_1.3

-1024 ; duness_2.3

-1024 ; duness_3.3

-1024 ; duness_4.3

-1024 ; dunewrs1.3

-1024 ; dunewrs2.3

-1024 ; dunewrs3.3

-1024 ; dunewrs4.3

-1024 ; duninds1.3

-1024 ; duninds2.3

-1024 ; duninds3.3

-1024 ; duninds4.3

-1024 ; dunpmps1.3

-1024 ; dunpmps2.3

-1024 ; dunrefs1.3

-1024 ; dunrefs2.3

-1024 ; dunrefs3.3

-1024 ; dunrefs4.3

-1024 ; dunsups1.3

-1024 ; dunsups2.3

-1024 ; dunsups3.3

-1024 ; dunsups4.3

-4 ; dust.3

-9 ; ec130.3

-18 ; echo1b.3

-18 ; echo1g.3

-18 ; echo1gr.3

-18 ; echo1r.3

-18 ; echo1y.3

-18 ; echo2b.3

-18 ; echo2g.3

-18 ; echo2gr.3

-18 ; echo2r.3

-18 ; echo2y.3

-18 ; echo3b.3

-18 ; echo3g.3

-18 ; echo3gr.3

-18 ; echo3r.3

-18 ; echo3y.3

-18 ; echo4b.3

-18 ; echo4g.3

-18 ; echo4gr.3

-18 ; echo4r.3

-18 ; echo4y.3

-18 ; echo5b.3

-18 ; echo5g.3

-18 ; echo5gr.3

-18 ; echo5r.3

-18 ; echo5y.3

-18 ; echo6b.3

-18 ; echo6g.3

-18 ; echo6gr.3

-18 ; echo6r.3

-18 ; echo6y.3

-18 ; echo7b.3

-18 ; echo7g.3

-18 ; echo7gr.3

-18 ; echo7r.3

-18 ; echo7y.3

-18 ; echo8.3

-18 ; echo8b.3

-18 ; echo8g.3

-18 ; echo8gr.3

-18 ; echo8r.3

-18 ; echo8y.3

-18 ; echo_can.3

-1024 ; edfu.3

-6 ; ef20001.3

-17 ; egy747.3

-10 ; egy767.3

-1024 ; el_sibu.3

-17 ; ERI747.3

-10 ; eri767.3

-17 ; eth747.3

-10 ; eth767.3

-39 ; explane1.3

-98 ; explane2.3

-39 ; explanew.3

-1 ; extbblt1.3

-21 ; ex_can_l.3

-3 ; ex_debri.3

-24 ; ex_hit.3

-93 ; ex_land.3

-98 ; ex_land1.3

-2 ; ex_nblt1.3

-2 ; ex_nblt2.3

-2 ; ex_nblt3.3

-2 ; ex_nblt4.3

-2 ; ex_nblt5.3

-38 ; ex_plane.3

-1 ; ex_tbblt.3

-68 ; ex_vol.3

-5 ; ex_water.3

-24 ; ex_whit.3

-120 ; f0aim12c.3

-120 ; f0aim12r.3

-120 ; f0mk20.3

-4 ; f117a.3

-5 ; f141.3

-6 ; f15.3

-6 ; f15e.3

-6 ; f161.3

-6 ; f16ub.3

-6 ; f181.3

-164 ; f1agm65g.3

-292 ; f1agm88.3

-221 ; f1aim12c.3

-227 ; f1aim12r.3

-188 ; f1aim9x.3

-270 ; f1decoy.3

-120 ; f1lau68.3

-160 ; f1mk20.3

-172 ; f1mk82f.3

-164 ; f1mk82r.3

-220 ; f1mk83f.3

-3 ; f22clegy.3

-3 ; f22clsau.3

-3 ; f22clus1.3

-3 ; f22clus2.3

-12 ; f22egypt.3

-120 ; f22pylon.3

-3 ; f22s1egy.3

-3 ; f22s1sau.3

-3 ; f22s1us1.3

-3 ; f22s1us2.3

-12 ; f22saudi.3

-3 ; f22simp2.3

-12 ; f22usa1.3

-12 ; f22usa2.3

-304 ; f22_23.3

-304 ; f22_24.3

-104 ; f22_25.3

-104 ; f22_26.3

-160 ; f22_27.3

-160 ; f22_28.3

-320 ; f22_29.3

-320 ; f22_30.3

-216 ; f22_31.3

-216 ; f22_32.3

-299 ; f22_39.3

-299 ; f22_40.3

-274 ; f22_41.3

-372 ; f22_42.3

-490 ; f22_43.3

-628 ; f22_44.3

-856 ; f22_45.3

-1124 ; f22_46.3

-299 ; f22_47.3

-299 ; f22_48.3

-164 ; f2agm65g.3

-292 ; f2agm88.3

-221 ; f2aim12c.3

-227 ; f2aim12r.3

-188 ; f2aim9x.3

-270 ; f2decoy.3

-120 ; f2lau68.3

-160 ; f2mk20.3

-172 ; f2mk82f.3

-164 ; f2mk82r.3

-220 ; f2mk83f.3

-164 ; f3agm65g.3

-292 ; f3agm88.3

-270 ; f3decoy.3

-126 ; f3lau68.3

-160 ; f3mk20.3

-172 ; f3mk82f.3

-164 ; f3mk82r.3

-220 ; f3mk83f.3

-43 ; fact90.3

-38 ; factory1.3

-43 ; fact_90.3

-38 ; ferry.3

-2 ; figsplas.3

-34 ; fireh180.3

-34 ; firehous.3

-34 ; fireh_90.3

-4 ; first_p.3

-1435 ; fmnt1c_1.3

-1435 ; fmnt1c_2.3

-1435 ; fmnt1c_3.3

-1435 ; fmnt1c_4.3

-1435 ; fmnt1i_1.3

-1435 ; fmnt1i_2.3

-1435 ; fmnt1i_3.3

-1435 ; fmnt1i_4.3

-1435 ; fmnt1m_1.3

-1435 ; fmnt1s_1.3

-1435 ; fmnt1s_2.3

-1435 ; fmnt1s_3.3

-1435 ; fmnt1s_4.3

-2435 ; fmnt2c_1.3

-2435 ; fmnt2c_2.3

-2435 ; fmnt2c_3.3

-2435 ; fmnt2c_4.3

-2435 ; fmnt2i_1.3

-2435 ; fmnt2i_2.3

-2435 ; fmnt2i_3.3

-2435 ; fmnt2i_4.3

-2435 ; fmnt2m_1.3

-2435 ; fmnt2s_1.3

-2435 ; fmnt2s_2.3

-2435 ; fmnt2s_3.3

-2435 ; fmnt2s_4.3

-1024 ; forstc_1.3

-1024 ; forstc_2.3

-1024 ; forstc_3.3

-1024 ; forstc_4.3

-1024 ; forsti_1.3

-1024 ; forsti_2.3

-1024 ; forsti_3.3

-1024 ; forsti_4.3

-1024 ; forstm_1.3

-1024 ; forsts_1.3

-1024 ; forsts_2.3

-1024 ; forsts_3.3

-1024 ; forsts_4.3

-122 ; fpagm65g.3

-122 ; fpagm84a.3

-120 ; fpagm88.3

-132 ; fpaim9x.3

-120 ; fpdecoy.3

-197 ; fpfuel.3

-125 ; fpgbu24.3

-120 ; fplau68.3

-120 ; fpmk82f.3

-120 ; fpmk82r.3

-120 ; fpmk83f.3

-17 ; fra747.3

-10 ; fra767.3

-1024 ; frtw_1ra.3

-1024 ; frtw_1ro.3

-1024 ; frtw_2ra.3

-1024 ; frtw_2ro.3

-4 ; ftanker.3

-8 ; fuel_bag.3

-164 ; fxagm65g.3

-252 ; fxagm84a.3

-292 ; fxagm88.3

-221 ; fxaim12c.3

-227 ; fxaim12r.3

-188 ; fxaim9x.3

-270 ; fxdecoy.3

-392 ; fxfuel.3

-291 ; fxgbu24.3

-220 ; fxjdam.3

-120 ; fxlau68.3

-160 ; fxmk20.3

-172 ; fxmk82f.3

-164 ; fxmk82r.3

-220 ; fxmk83f.3

-14 ; fx_chaff.3

-4 ; fx_flare.3

-50 ; fx_hit.3

-50 ; fx_miss.3

-98 ; fx_smoke.3

-164 ; fyagm65g.3

-252 ; fyagm84a.3

-292 ; fyagm88.3

-221 ; fyaim12c.3

-221 ; fyaim12r.3

-171 ; fyaim9x.3

-241 ; fygbu24.3

-220 ; fyjdam.3

-160 ; fymk20.3

-172 ; fymk82f.3

-164 ; fymk82r.3

-220 ; fymk83f.3

-2 ; fzagm65g.3

0 ; fzagm84a.3

-2 ; fzagm88.3

-2 ; fzaim12c.3

-2 ; fzaim12r.3

-2 ; fzaim9x.3

0 ; fzdecoy.3

0 ; fzfuel.3

0 ; fzgbu24.3

0 ; fzjdam.3

-1 ; fzmk20.3

0 ; fzmk82f.3

-1 ; fzmk82r.3

0 ; fzmk83f.3

-2 ; fzrocket.3

-1 ; f_truck.3

-4 ; g6.3

-15 ; galaxy1.3

-45 ; gateway.3

-10 ; gb_blue.3

-10 ; gb_gren.3

-10 ; gb_red.3

-1024 ; gen_1rwy.3

-1024 ; gen_2rwy.3

-12 ; gepard.3

-15 ; gmissile.3

-1024 ; gonder.3

-15 ; grmiss.3

-10 ; gtatrail.3

-29 ; h2dr180.3

-32 ; h2dr_90.3

-48 ; habo.3

-27 ; haci180.3

-32 ; haci90.3

-32 ; haci_90.3

-28 ; hang2dr.3

-35 ; hangangl.3

-27 ; hangcirc.3

-35 ; hangl180.3

-43 ; hangl_90.3

-22 ; hangs90.3

-18 ; hangsmal.3

-30 ; hardened.3

-42 ; hardhang.3

-1024 ; hargey_a.3

-1024 ; hargey_b.3

-2 ; harrier.3

-3 ; hawk1.3

-41 ; hdha90.3

-42 ; hdha_180.3

-41 ; hdha_90.3

-30 ; hdnd_180.3

-28 ; hdnd_90.3

-2420 ; heavenly.3

-9 ; hercules.3

-5 ; hide.3

-19 ; hopital.3

-117 ; horus.3

-3 ; humvee.3

-1024 ; hurghada.3

-19 ; hut1n_90.3

-16 ; hut2n_90.3

-15 ; hut_1n.3

-16 ; hut_2n.3

-1 ; ian_0.3

-2 ; ian_1.3

-2 ; ian_2.3

-2 ; ian_3.3

-2 ; ian_4.3

-3 ; ian_5.3

-3 ; ian_6.3

-2 ; ian_7.3

-2 ; ian_8.3

-175 ; ib_spray.3

-175 ; ib_wake.3

-16 ; il78m.3

-51 ; invince.3

-1024 ; island_1.3

-1024 ; island_2.3

-1024 ; island_3.3

-1024 ; island_4.3

-34 ; ivan.3

-10 ; j707.3

-3 ; jast1.3

-80 ; jedca180.3

-122 ; jedca90.3

-1024 ; jeddah_a.3

-1024 ; jeddah_b.3

-1024 ; jeddah_c.3

-1024 ; jeddah_d.3

-1024 ; jeddah_e.3

-1024 ; jeddah_f.3

-1024 ; jeddah_g.3

-1024 ; jeddah_h.3

-1024 ; jeddah_i.3

-1024 ; jeddah_j.3

-1024 ; jeddah_k.3

-1024 ; jeddah_l.3

-1024 ; jeddah_m.3

-1024 ; jeddah_n.3

-1024 ; jeddah_o.3

-85 ; jed_cago.3

-84 ; jed_pav.3

-228 ; jed_t90.3

-4 ; jernas.3

-80 ; jt1y_180.3

-80 ; jt1y_90.3

-45 ; jt2y_90.3

-7 ; jug.3

-4 ; ka501.3

-25 ; kalabsh1.3

-166 ; karnak.3

-24 ; kc135.3

-52 ; kha1h_90.3

-80 ; kha1_han.3

-67 ; kha2ha90.3

-92 ; kha2_180.3

-1024 ; khami_a.3

-1024 ; khami_b.3

-1024 ; kharto_a.3

-1030 ; kharto_b.3

-1024 ; kharto_c.3

-1024 ; kharto_d.3

-1024 ; kharto_e.3

-1030 ; kharto_f.3

-1030 ; kharto_g.3

-1024 ; kharto_h.3

-1030 ; kharto_i.3

-1024 ; kharto_j.3

-1024 ; kharto_k.3

-1024 ; kharto_l.3

-1024 ; kharto_m.3

-1024 ; kharto_n.3

-1024 ; kings_a.3

-1024 ; kings_aa.3

-1024 ; kings_ab.3

-1024 ; kings_ac.3

-1024 ; kings_ad.3

-1024 ; kings_ae.3

-1024 ; kings_af.3

-1024 ; kings_ag.3

-1024 ; kings_ah.3

-1024 ; kings_ai.3

-1024 ; kings_b.3

-1024 ; kings_c.3

-1024 ; kings_d.3

-1024 ; kings_e.3

-1024 ; kings_f.3

-1024 ; kings_g.3

-1024 ; kings_h.3

-1024 ; kings_i.3

-1024 ; kings_j.3

-1024 ; kings_k.3

-1024 ; kings_l.3

-1024 ; kings_m.3

-1024 ; kings_n.3

-1024 ; kings_o.3

-1024 ; kings_p.3

-1024 ; kings_q.3

-1024 ; kings_r.3

-1024 ; kings_s.3

-1024 ; kings_t.3

-1024 ; kings_u.3

-1024 ; kings_v.3

-1024 ; kings_w.3

-1024 ; kings_x.3

-1024 ; kings_y.3

-1024 ; kings_z.3

-1024 ; kom_ombo.3

-1024 ; kula.3

-77 ; kuzntsov.3

-25 ; lafay.3

-8 ; lcac.3

-8 ; learjet1.3

-80 ; learjet1.3old

-57 ; lgst90.3

-80 ; lgst_180.3

-57 ; lgst_90.3

-632 ; lg_store.3

-783 ; li2_asyu.3

-941 ; li2_atta.3

-546 ; li2_aziz.3

-491 ; li2_gen1.3

-379 ; li2_gen2.3

-906 ; li2_kham.3

-574 ; li2_khar.3

-730 ; li2_luxo.3

-163 ; li2_riya.3

-153 ; lig_alsf.3

-19 ; lig_cd5b.3

-15 ; lndp_180.3

-143 ; lndp_90.3

-1600 ; logo.3

-87 ; ltipjoin.3

-53 ; lux_c180.3

-87 ; lux_c90.3

-126 ; lux_con.3

-139 ; lux_h_90.3

-139 ; lux_radr.3

-52 ; lux_r_90.3

-52 ; lux_t180.3

-900 ; lux_t90.3

-3 ; l_lerx.3

-7 ; m1.3

-7 ; m109.3

-1024 ; m163_vul.3

-1024 ; marib2.3

-60 ; maribdam.3

-1024 ; mastaba.3

-1024 ; mecca.3

-5 ; medina.3

-6 ; mi241.3

-4 ; mi261.3

-5 ; mi281.3

-9 ; mi401.3

-9 ; mig211.3

-4 ; mig211_p.3

-5 ; mig25.3

-5 ; mig27.3

-7 ; mig271.3

-6 ; mig291.3

-7 ; mig31.3

-4 ; mig351.3

-25 ; mirage1.3

-1024 ; mistrail.3

-7 ; mitsiwa.3

-1024 ; mlrs.3

-1024 ; mont1c_1.3

-1024 ; mont1c_2.3

-1024 ; mont1c_3.3

-1024 ; mont1c_4.3

-1024 ; mont1i_1.3

-1024 ; mont1i_2.3

-1024 ; mont1i_3.3

-1024 ; mont1i_4.3

-1024 ; mont1m_1.3

-1024 ; mont1s_1.3

-1024 ; mont1s_2.3

-1024 ; mont1s_3.3

-2000 ; mont1s_4.3

-2000 ; mont2c_1.3

-2000 ; mont2c_2.3

-2000 ; mont2c_3.3

-2000 ; mont2c_4.3

-2000 ; mont2i_1.3

-2000 ; mont2i_2.3

-2000 ; mont2i_3.3

-2000 ; mont2i_4.3

-2000 ; mont2m_1.3

-2000 ; mont2s_1.3

-2000 ; mont2s_2.3

-2000 ; mont2s_3.3

-71 ; mont2s_4.3

-1024 ; mosk1.3

-1024 ; multil_1.3

-1024 ; multil_2.3

-1025 ; multil_3.3

-1024 ; multil_4.3

-1024 ; multir_1.3

-1024 ; multir_2.3

-1024 ; multir_3.3

-7 ; multir_4.3

-12 ; mya17.3

-1024 ; nanuchk.3

-1024 ; naval_1.3

-1024 ; naval_2.3

-1024 ; naval_3.3

-25 ; naval_4.3

0 ; nav_hq.3

-28 ; neil_10.3

-5000 ; neutrash.3

-64 ; newhoriz.3

-1024 ; nimitz.3

-1024 ; nlarbc_1.3

-1024 ; nlarbc_2.3

-1024 ; nlarbc_3.3

-1024 ; nlarbc_4.3

-1024 ; nlarbn_1.3

-1024 ; nlarbn_2.3

-1024 ; nlarbn_3.3

-1024 ; nlarbn_4.3

-1024 ; nlarbs1a.3

-1024 ; nlarbs1b.3

-1024 ; nlarbs1c.3

-1024 ; nlarbs1d.3

-1024 ; nlarbs2a.3

-1024 ; nlarbs2b.3

-1024 ; nlarbs2c.3

-7500 ; nlarbs2d.3

-250 ; nvg_hori.3

-15 ; oil1.3

-184 ; oil2.3

-184 ; oil3.3

-250 ; oil4.3

0 ; oil5.3

0 ; oilexp_1.3

0 ; oilexp_2.3

-37 ; oilexp_3.3

-28 ; oilrig.3

-30 ; oliver.3

-5 ; osa2.3

-5 ; para.3

-7 ; patriot1.3

-26 ; patriot2.3

-30 ; pillar.3

-38 ; pillar2.3

-25 ; pillar3.3

-15 ; pillar4.3

-30 ; pillar5.3

-51 ; pillar6.3

-19 ; pipe1.3

-1024 ; pipe2.3

-1024 ; pldstc_1.3

-1024 ; pldstc_2.3

-1024 ; pldstc_3.3

-1024 ; pldstc_4.3

-1024 ; pldste_1.3

-1024 ; pldste_2.3

-1024 ; pldste_3.3

-1024 ; pldste_4.3

-1024 ; pldstn_1.3

-1024 ; pldstn_2.3

-1024 ; pldstn_3.3

-1024 ; pldstn_4.3

-1024 ; pldsts_1.3

-1024 ; pldsts_2.3

-1024 ; pldstt_1.3

-1024 ; pldstt_2.3

-1024 ; pldstt_3.3

-1024 ; pldstt_4.3

-1024 ; pldunc_1.3

-1024 ; pldunc_2.3

-1024 ; pldunc_3.3

-1024 ; pldunc_4.3

-1024 ; pldune_1.3

-1024 ; pldune_2.3

-1024 ; pldune_3.3

-1024 ; pldune_4.3

-1024 ; pldunn_1.3

-1024 ; pldunn_2.3

-1024 ; pldunn_3.3

-1024 ; pldunn_4.3

-1024 ; plduns_1.3

-1024 ; plduns_2.3

-1024 ; pldunt_1.3

-1024 ; pldunt_2.3

-1024 ; pldunt_3.3

-1024 ; pldunt_4.3

-1024 ; plpldn_1.3

-1024 ; plpldt_1.3

-1024 ; plrddn_1.3

-1024 ; plrddt_1.3

-1024 ; plrldn_1.3

-1024 ; plrldt_1.3

-13 ; plrvdt_1.3

-15 ; polelite.3

-1024 ; pomornk.3

-1024 ; port_1.3

-1024 ; port_2.3

-1024 ; port_3.3

-109 ; port_4.3

-23 ; powstn.3

-18 ; prfb90.3

-23 ; prfb_180.3

-48 ; prfb_90.3

-48 ; prk90.3

-48 ; prk_180.3

-37 ; prk_90.3

-89 ; pwrline.3

-89 ; pwst90.3

-110 ; pwst_90.3

-98 ; pyraflat.3

-36 ; pyrastep.3

-34 ; pyra_dar.3

-34 ; qtr_180.3

-8 ; quarters.3

-5 ; radar.3

-27 ; rafale1.3

-775 ; ramgate.3

-27 ; ramsm2_2.3

-10 ; ramspace.3

-1024 ; rc135.3

-1024 ; rdarbc_1.3

-1024 ; rdarbc_2.3

-1024 ; rdarbc_3.3

-1024 ; rdarbc_4.3

-1024 ; rdarbe_1.3

-1024 ; rdarbe_2.3

-1024 ; rdarbe_3.3

-1024 ; rdarbe_4.3

-1024 ; rdarbn_1.3

-1024 ; rdarbn_2.3

-1024 ; rdarbn_3.3

-1024 ; rdarbn_4.3

-1024 ; rdarbs_1.3

-1024 ; rdarbs_2.3

-1024 ; rdarbt_1.3

-1024 ; rdarbt_2.3

-1024 ; rdarbt_3.3

-1024 ; rdarbt_4.3

-1024 ; rddstc_1.3

-1024 ; rddstc_2.3

-1024 ; rddstc_3.3

-1024 ; rddstc_4.3

-1024 ; rddste_1.3

-1024 ; rddste_2.3

-1024 ; rddste_3.3

-1024 ; rddste_4.3

-1024 ; rddstn_1.3

-1024 ; rddstn_2.3

-1024 ; rddstn_3.3

-1024 ; rddstn_4.3

-1024 ; rddsts_1.3

-1024 ; rddsts_2.3

-1024 ; rddstt_1.3

-1024 ; rddstt_2.3

-1024 ; rddstt_3.3

-1024 ; rddstt_4.3

-1024 ; rddunc_1.3

-1024 ; rddunc_2.3

-1024 ; rddunc_3.3

-1024 ; rddunc_4.3

-1024 ; rddune_1.3

-1024 ; rddune_2.3

-1024 ; rddune_3.3

-1024 ; rddune_4.3

-1024 ; rddunn_1.3

-1024 ; rddunn_2.3

-1024 ; rddunn_3.3

-1024 ; rddunn_4.3

-1024 ; rdduns_1.3

-1024 ; rdduns_2.3

-1024 ; rddunt_1.3

-1024 ; rddunt_2.3

-1024 ; rddunt_3.3

-1024 ; rddunt_4.3

-1024 ; rdforc_1.3

-1024 ; rdforc_2.3

-1024 ; rdforc_3.3

-1024 ; rdforc_4.3

-1024 ; rdfore_1.3

-1024 ; rdfore_2.3

-1024 ; rdfore_3.3

-1024 ; rdfore_4.3

-1024 ; rdforn_1.3

-1024 ; rdforn_2.3

-1024 ; rdforn_3.3

-1024 ; rdforn_4.3

-1024 ; rdfors_1.3

-1024 ; rdfors_2.3

-1024 ; rdfort_1.3

-1024 ; rdfort_2.3

-1024 ; rdfort_3.3

-1024 ; rdfort_4.3

-1024 ; rdpldn_1.3

-1024 ; rdpldt_1.3

-10 ; rdplfo_1.3

-1024 ; rdr90.3

-1024 ; rdrdab_1.3

-1024 ; rdrddn_1.3

-1024 ; rdrddt_1.3

-1024 ; rdrdfo_1.3

-1024 ; rdrlab_1.3

-1024 ; rdrldn_1.3

-1024 ; rdrldt_1.3

-1024 ; rdrlfo_1.3

-1024 ; rdrvab_1.3

-1024 ; rdrvdt_1.3

-10 ; rdrvfo_1.3

-200 ; rdr_90.3

-300 ; rdseamap.3

-104 ; rd_bridg.3

-113 ; red0600.ini

-50 ; red0800.ini

-85 ; red1000.ini

-12 ; red1200.ini

-198 ; red1400.ini

-22 ; red1600.ini

-25 ; red1800.ini

-22 ; red2000.ini

-1024 ; redmoon.ini

-1024 ; rednomo.ini

-1024 ; ref_1.3

-1024 ; ref_2.3

-1024 ; ref_3.3

-1024 ; ref_4.3

-1024 ; ref_5.3

-1024 ; ref_6.3

-1024 ; res90.3

-1024 ; resid_1.3

-1024 ; res_90.3

-1024 ; riyadh_a.3

-1024 ; riyadh_b.3

-1024 ; riyadh_c.3

-1024 ; riyadh_d.3

-1024 ; riyadh_e.3

-1024 ; riyadh_f.3

-1024 ; riyadh_g.3

-1024 ; riyadh_h.3

-1024 ; riyadh_i.3

-1024 ; riyadh_j.3

-1024 ; riyadh_k.3

-1024 ; riyadh_l.3

-1024 ; riyadh_m.3

-1024 ; riyadh_n.3

-111 ; riyadh_o.3

-156 ; riyadh_p.3

-156 ; riy_a.3

-331 ; riy_b.3

-156 ; riy_c.3

-1024 ; riy_d.3

-1024 ; riy_e.3

-1024 ; riy_f.3

-1024 ; riy_g.3

-1024 ; riy_h.3

-1024 ; riy_i.3

-1024 ; riy_pav.3

-1024 ; riy_t180.3

-1024 ; riy_t90.3

-1024 ; riy_towr.3

-1024 ; riy_trm.3

-1024 ; rlarbc_1.3

-1024 ; rlarbc_2.3

-1024 ; rlarbc_3.3

-1024 ; rlarbc_4.3

-1024 ; rlarbe_1.3

-1024 ; rlarbe_2.3

-1024 ; rlarbe_3.3

-1024 ; rlarbe_4.3

-1024 ; rlarbj_1.3

-1024 ; rlarbj_2.3

-1024 ; rlarbj_3.3

-1024 ; rlarbj_4.3

-1024 ; rlarbn_1.3

-1024 ; rlarbn_2.3

-1024 ; rlarbn_3.3

-1024 ; rlarbn_4.3

-1024 ; rlarbs_1.3

-1024 ; rlarbs_2.3

-1024 ; rlarbt_1.3

-1024 ; rlarbt_2.3

-1024 ; rlarbt_3.3

-1024 ; rlarbt_4.3

-1024 ; rldstc_1.3

-1024 ; rldstc_2.3

-1024 ; rldstc_3.3

-1024 ; rldstc_4.3

-1024 ; rldste_1.3

-1024 ; rldste_2.3

-1024 ; rldste_3.3

-1024 ; rldste_4.3

-1024 ; rldstj_1.3

-1024 ; rldstj_2.3

-1024 ; rldstj_3.3

-1024 ; rldstj_4.3

-1024 ; rldstn_1.3

-1024 ; rldstn_2.3

-1024 ; rldstn_3.3

-1024 ; rldstn_4.3

-1024 ; rldsts_1.3

-1024 ; rldsts_2.3

-1024 ; rldstt_1.3

-1024 ; rldstt_2.3

-1024 ; rldstt_3.3

-1024 ; rldstt_4.3

-1024 ; rldunc_1.3

-1024 ; rldunc_2.3

-1024 ; rldunc_3.3

-1024 ; rldunc_4.3

-1024 ; rldune_1.3

-1024 ; rldune_2.3

-1024 ; rldune_3.3

-1024 ; rldune_4.3

-1024 ; rldunj_1.3

-1024 ; rldunj_2.3

-1024 ; rldunj_3.3

-1024 ; rldunj_4.3

-1024 ; rldunn_1.3

-1024 ; rldunn_2.3

-1024 ; rldunn_3.3

-1024 ; rldunn_4.3

-1024 ; rlduns_1.3

-1024 ; rlduns_2.3

-1024 ; rldunt_1.3

-1024 ; rldunt_2.3

-1024 ; rldunt_3.3

-1024 ; rldunt_4.3

-1024 ; rlforc_1.3

-1024 ; rlforc_2.3

-1024 ; rlforc_3.3

-1024 ; rlforc_4.3

-1024 ; rlfore_1.3

-1024 ; rlfore_2.3

-1024 ; rlfore_3.3

-1024 ; rlfore_4.3

-1024 ; rlforj_1.3

-1024 ; rlforj_2.3

-1024 ; rlforj_3.3

-1024 ; rlforj_4.3

-1024 ; rlforn_1.3

-1024 ; rlforn_2.3

-1024 ; rlforn_3.3

-1024 ; rlforn_4.3

-1024 ; rlfors_1.3

-1024 ; rlfors_2.3

-1024 ; rlfort_1.3

-1024 ; rlfort_2.3

-1024 ; rlfort_3.3

-1024 ; rlfort_4.3

-1024 ; rlpldn_1.3

-1024 ; rlpldt_1.3

-1024 ; rlplfo_1.3

-15 ; rlrdab_1.3

-25 ; rlrddn_1.3

-1024 ; rlrddt_1.3

-1024 ; rlrdfo_1.3

-1024 ; rlrlab_1.3

-1024 ; rlrldn_1.3

-1024 ; rlrldt_1.3

-1024 ; rlrlfo_1.3

-1024 ; rlrvab_1.3

-1024 ; rlrvdt_1.3

-1024 ; rlrvfo_1.3

-1024 ; rmissile.3

-1024 ; roktrail.3

-1024 ; roky1c_1.3

-1024 ; roky1c_2.3

-1024 ; roky1c_3.3

-1024 ; roky1c_4.3

-1024 ; roky1i_1.3

-1024 ; roky1i_2.3

-1024 ; roky1i_3.3

-1024 ; roky1i_4.3

-1055 ; roky1m_1.3

-1024 ; roky1s_1.3

-1024 ; roky1s_2.3

-1024 ; roky1s_3.3

-1024 ; roky1s_4.3

-1024 ; roky2c_1.3

-1024 ; roky2c_2.3

-1500 ; roky2c_3.3

-1500 ; roky2c_4.3

-1500 ; roky2i_1.3

-1500 ; roky2i_2.3

-1500 ; roky2i_3.3

-1500 ; roky2i_4.3

-1500 ; roky2m_1.3

-1500 ; roky2s_1.3

-1500 ; roky2s_2.3

-1500 ; roky2s_3.3

-1500 ; roky2s_4.3

-1500 ; roky3c_1.3

-1500 ; roky3c_2.3

-5 ; roky3c_3.3

-70 ; roky3c_4.3

-87 ; roky3i_1.3

-70 ; roky3i_2.3

-87 ; roky3i_3.3

-23 ; roky3i_4.3

-440 ; roky3m_1.3

-440 ; roky3s_1.3

-1600 ; roky3s_2.3

-17 ; roky3s_3.3

-17 ; roky3s_4.3

-10 ; roland.3

-1024 ; roof3.3

-1024 ; roof90.3

-1024 ; roof_180.3

-1024 ; roof_90.3

-1024 ; ropucha.3

-1024 ; rpk1_180.3

-1024 ; rpk3_180.3

-1024 ; rtipjoin.3

-1024 ; ruin.3

-1024 ; rus747.3

-1024 ; rus767.3

-1024 ; rvarbc_1.3

-1024 ; rvarbc_2.3

-1024 ; rvarbc_3.3

-1024 ; rvarbc_4.3

-1024 ; rvarbe_1.3

-1024 ; rvarbe_2.3

-1024 ; rvarbe_3.3

-1024 ; rvarbe_4.3

-1024 ; rvarbn_1.3

-1024 ; rvarbn_2.3

-1024 ; rvarbn_3.3

-1024 ; rvarbn_4.3

-1024 ; rvarbs_1.3

-1024 ; rvarbs_2.3

-1024 ; rvarbt_1.3

-1024 ; rvarbt_2.3

-1024 ; rvarbt_3.3

-1024 ; rvarbt_4.3

-1024 ; rvdstc_1.3

-1024 ; rvdstc_2.3

-1024 ; rvdstc_3.3

-1024 ; rvdstc_4.3

-1024 ; rvdste_1.3

-1024 ; rvdste_2.3

-1024 ; rvdste_3.3

-1024 ; rvdste_4.3

-1024 ; rvdstn_1.3

-1024 ; rvdstn_2.3

-1024 ; rvdstn_3.3

-1024 ; rvdstn_4.3

-1024 ; rvdsts_1.3

-1024 ; rvdsts_2.3

-1024 ; rvdstt_1.3

-1024 ; rvdstt_2.3

-1024 ; rvdstt_3.3

-1024 ; rvdstt_4.3

-1024 ; rvforc_1.3

-1024 ; rvforc_2.3

-1024 ; rvforc_3.3

-1024 ; rvforc_4.3

-1024 ; rvfore_1.3

-1024 ; rvfore_2.3

-1024 ; rvfore_3.3

-1024 ; rvfore_4.3

-1024 ; rvforn_1.3

-1024 ; rvforn_2.3

-1024 ; rvforn_3.3

-1024 ; rvforn_4.3

-1024 ; rvfors_1.3

-1024 ; rvfors_2.3

-1024 ; rvfort_1.3

-1024 ; rvfort_2.3

-1024 ; rvfort_3.3

-1024 ; rvfort_4.3

-400 ; rvpldt_1.3

-400 ; rvplfo_1.3

-400 ; rvrdab_1.3

-400 ; rvrddt_1.3

-400 ; rvrdfo_1.3

-400 ; rvrlab_1.3

-400 ; rvrldt_1.3

-400 ; rvrlfo_1.3

-400 ; rvrvab_1.3

-400 ; rvrvdt_1.3

-400 ; rvrvfo_1.3

-400 ; rwyend02.3

-400 ; rwyend06.3

-400 ; rwyend07.3

-400 ; rwyend09.3

-400 ; rwyend11.3

-400 ; rwyend13.3

-400 ; rwyend14.3

-1000 ; rwyend16.3

-1600 ; rwyend17.3

-1600 ; rwyend20.3

-2400 ; rwyend24.3

-400 ; rwyend25.3

-400 ; rwyend26.3

-400 ; rwyend27.3

-400 ; rwyend31.3

-400 ; rwyend32.3

-400 ; rwyend34.3

-400 ; rwyend35.3

-400 ; rwymid00.3

-400 ; rwymid01.3

-400 ; rwymid02.3

-400 ; rwymid03.3

-400 ; rwynd15l.3

-350 ; rwynd15r.3

-900 ; rwynd16c.3

-6 ; rwynd16l.3

-2 ; rwynd16r.3

-82 ; rwynd18.3

-85 ; rwynd33l.3

-1024 ; rwynd33r.3

-1024 ; rwynd34c.3

-1024 ; rwynd34l.3

-1024 ; rwynd34r.3

-1024 ; rwynd36.3

-1024 ; rymq_180.3

-17 ; r_lerx.3

-10 ; sa17.3

-4 ; sabot.3

-4 ; salinate.3

-1024 ; sam_base.3

-1024 ; sana_a.3

-1024 ; sana_b.3

-1024 ; sana_c.3

-1024 ; sana_d.3

-1024 ; sana_e.3

-258 ; sana_f.3

-12 ; sau747.3

-47 ; sau767.3

-1 ; sa_11.3

-175 ; sa_6.3

-175 ; sea.3

-104 ; sea1.3

-104 ; sea2.3

-63 ; sea3.3

-175 ; sea4.3

-19 ; sea5.3

-93 ; seated.3

-82 ; ses.3

-3 ; silo2.3

-19 ; simpsmok.3

-19 ; skyn90.3

-1 ; skyn_90.3

-1 ; sky_180.3

-1 ; sky_2.3

-19 ; sky_90.3

-3 ; sky_n1.3

-10 ; slava.3

-10 ; slnt90.3

0 ; slnt_180.3

-20 ; smbblt1.3

-9 ; smoke1.3

-46 ; smoke2.3

-6 ; smoke3.3

-46 ; smoke4.3

-50 ; smoke5.3

-12 ; smokew.3

-16 ; sm_nblt1.3

-16 ; som747.3

-18 ; som767.3

-18 ; sound.3

-15 ; spytrawl.3

-14 ; ss23.3

-14 ; stak_con.3

-30 ; stallion.3

-30 ; stkc_180.3

-30 ; stkc_90.3

-30 ; stna_90.3

-3 ; stnb90.3

-7 ; stnb_90.3

-7 ; stnc90.3

-7 ; stnc_90.3

-7 ; stone_1.3

-7 ; stone_2.3

-17 ; stone_3.3

-10 ; storage.3

-18 ; strg90.3

-5 ; strg_180.3

-5 ; strg_90.3

-748 ; su251.3

-803 ; su271.3

-710 ; su301.3

-556 ; su341.3

-511 ; su351.3

-800 ; su371.3

-690 ; SUD747.3

-576 ; sud767.3

-900 ; s_prefab.3

-11 ; t80.3

-11 ; t80changed.3

-11 ; taxi_asy.3

-12 ; taxi_att.3

-7 ; taxi_azi.3

-25 ; taxi_gen.3

-1024 ; taxi_gn2.3

-1024 ; taxi_kha.3

-1024 ; taxi_khr.3

-1024 ; taxi_lux.3

-1024 ; taxi_ri2.3

-4 ; tent_1.3

-3 ; tent_2.3

-18 ; tent_3.3

-20 ; tent_4.3

-19 ; tier2.3

-10 ; tiptrail.3

-38 ; tluxor.3

-1 ; tnkter_1.3

-4 ; tnkter_2.3

-40 ; tnkter_3.3

-5 ; tnkter_4.3

-2 ; tornado1.3

-1024 ; tractor.3

-35 ; trainsta.3

-35 ; trawler.3

-35 ; tree_n1.3

-37 ; tree_n2.3

-46 ; tree_n3.3

-37 ; trk1.3

-1024 ; trnsmk.3

-1024 ; trns_90.3

-1024 ; truck_n.3

-1024 ; tu300.3

-34 ; tukh.3

-46 ; twna90.3

-28 ; twna_180.3

-7 ; twna_90.3

-33 ; twnb90.3

-4 ; twnb_180.3

-25 ; twnb_90.3

-17 ; twn_cst1.3

-10 ; twn_cst2.3

-17 ; twn_cst3.3

-10 ; twn_cst4.3

-38 ; twn_n1.3

-40 ; twn_n2.3

-103 ; type23.3

-60 ; u21.3

-3 ; udaloy.3

-260 ; ufo2.3

-25 ; ufo_1.3

-34 ; uk_747.3

-28 ; uk_767.3

-81 ; usa747.3

-27 ; usa767.3

-81 ; usalt.3

-76 ; usa_cntr.3

-76 ; usa_oilb.3

-76 ; usa_oils.3

-78 ; v221.3

-40 ; vasi.3

-78 ; vila90.3

-34 ; vila_180.3

-27 ; vila_90.3

-76 ; vilb90.3

-40 ; vilb_180.3

-3 ; vilb_90.3

-43 ; vilc90.3

-1024 ; vilc_180.3

-1024 ; vilc_90.3

-1024 ; vild90.3

-1024 ; vild_180.3

-1024 ; vild_90.3

-1024 ; vil_1.3

-1024 ; vil_2.3

-1024 ; vil_3.3

-1024 ; vil_4.3

-1024 ; vrcpt.3

-1024 ; wake.3

-1024 ; wakec_1.3

-33 ; wakec_2.3

-39 ; wakec_3.3

-33 ; wakec_4.3

-39 ; wakei_1.3

-4 ; wakei_2.3

-52 ; wakei_3.3

-152 ; wakei_4.3

-152 ; wakes_1.3

-152 ; wakes_2.3

-1 ; wakes_3.3

-33 ; wakes_4.3

-33 ; ware1.3

-96 ; ware90.3

-180 ; ware_180.3

-92 ; ware_90.3

-146 ; warrior.3

-126 ; wasp.3

-126 ; well.3

-98 ; well90.3

-90 ; well_90.3

-124 ; w_delimo.3

-124 ; w_house1.3

0 ; w_house2.3

-100 ; xagm65g.3

-104 ; xagm84a.3

-76 ; xagm86.3

-99 ; xagm88.3

-200 ; xaim120c.3

-208 ; xaim120r.3

-144 ; xaim_9x.3

-220 ; xasraam.3

-198 ; xb8w.3

-132 ; xcrv7.3

-152 ; xdecoy.3

-1160 ; xdurand.3

-1160 ; xecm.3

-224 ; xfab250.3

-120 ; xfab500.3

-82 ; xfueli.3

-82 ; xfuelo.3

-176 ; xgbu24.3

-176 ; xjdam.3

-127 ; xkab1500.3

-138 ; xkab500l.3

-129 ; xkh29t.3

-100 ; xkh31a.3

-48 ; xkh58.3

-900 ; xkh59m.3

-104 ; xlau68.3

-1 ; xmk82f.3

-17 ; xmk82r.3

-10 ; xr27_er.3

-15 ; xr27_et.3

0 ; xr73.3

-3 ; xr77.3

-3 ; xr77r.3

-1024 ; xrbk500.3

0 ; xrocket.3

-90 ; xsam.3

-3 ; xtiald.3

0 ; ycannon.3

0 ; yem747.3

0 ; yem767.3

0 ; ymissile.3

0 ; zagm86.3

0 ; zaim120r.3

-5 ; zasraam.3

-5 ; zawyet.3

-5 ; zbomblet.3

-5 ; zdecoy.3

-5 ; zdurand.3

-5 ; zecm.3

-5 ; zfab250.3

-4 ; zfab500.3

-4 ; zfueli.3

-2 ; zkab1500.3

-17 ; zkab500l.3

-7 ; zkh29t.3

-2 ; zkh31a.3

-75 ; zkh58.3

-37 ; zkh59m.3

-65 ; zr27_er.3

-51 ; zr27_et.3

-65 ; zr73.3

-34 ; zr77.3

-33 ; zr77r.3

-15 ; zrocket.3

-19 ; zsam.3

-15 ; zsu_23_4.3

-129 ; ztiald.3

-31 ; _1msk90.3

-33 ; _1msk_90.3

-31 ; _1pp90.3

-11 ; _1pp_180.3

-17 ; _1pp_90.3

-214 ; _1wh90.3

-71 ; _1wh_180.3

Link to post
Share on other sites

Okay, we have an urgent problem here: The order of drawing.

I've got 90 % of the terrain geometry up and running, but it doesn't show because many terrain tiles are listed behind buildings in SSDs, causing the terrain to overdraw the buildings. While .3 files gave a rendering order through program branching, we have yet to find that order for SSDs.

Computing the distance to the .3's center and drawing back-to-front does not work either because the terrain's center is also the SSD's center and therefore still occludes half of the buildings.

We won't be able to do any fine tuning until we get that rendering order correct :(

The Block 2 functions have yet to be illuminated. Just wondering if it could possibly be related to rendering order with the Block 2 value being the primary determinant and the .3-file 1st word being either secondary or legacy?

Adulaziz

08080808080800000000

00000808080001010101

01080808080808080808

08080808000101010100

00080808080808080000

00000000000000000000

00000000000000000000

00000000000000000000

00000000000000000000

00000000000000000000
*Block 5 	      *Block 2  *3-File Header 1st Word


c204;    JED_T90	08	-228 

bc04;    JED_CAGO	08	-85

b304;    LUX_C90	08	-87

b904;    JEDCA90	08	-122

c304;    LUX_T90	08	-900

c404;    W_HOUSE2	08	0

3104;    LIG_ALSF	00	-153

b104;    LIG_CD5B	00	-19

b104;    LIG_CD5B	00	-19

3104;    LIG_ALSF	00	-153

3104;    LIG_ALSF	00	-153

3104;    LIG_ALSF	00	-153

b604;    LUX_RADR	08	-139

a804;    FIREHOUS	08	-34

2c04;    FIREH_90	08	-34

c504;    RWYND16C	00	-900

c604;    RWYND34C	01	-1024

c704;    RWYND34R	01	-1024

c804;    RWYND16L	01	-6

c904;    RWYND16R	01	-2

ca04;    RWYND34L	01	-1024


cf04;    TAXI_AZI	01	-7

Link to post
Share on other sites

Looking at that list actually discredits the 'first word' theory since a lot of those numbers don't make any sense.

There is some merit in the 'Block 2' theory, although the engine would have to differentiate between objects (particularly buildings) having the same index. This could probably be done with the origins of each model.

A clue may be to look at the in-game behaviour where there are certainly problems, especially buildings which can be seen behind terrain in certain circumstances.

Also, in the Luxor take-off training mission, the runway lights can be seen through the hanger the F22 starts off in front of.

I've missed a few days, so is the focus now on ssd?

There is another block (Targets) later on in the file which may have something to do with this, although so far I've assumed it has more to do with a higher level function...


54415247504f5300 0000 3800 4afcb0ff6803 0000

54415247504f5300 0000 3100 0400b0ffbb03 0000

54415247504f5300 0000 3000 4cfeb0ffe8fd 0000

54415247504f5300 0000 3100 c302b0ff3801 0000

54415247504f5300 0000 3800 edfcb0ffc6ff 0000

54415247504f5300 0000 2d00 dd02b0ff8501 0000

54415247504f5300 0000 3700 61feb0ff37ff 0000

54415247504f5300 0000 3500 7103b0ffe6ff 0000

54415247504f5300 0000 3500 74feb0ff97fe 0000

54415247504f5300 0000 3800 4efdb0ffc5fe 0000

54415247504f5300 0000 3200 2303b0ffcf00 0000

54415247504f5300 0000 3200 d9feb0ff82fc 0000

54415247504f5300 0000 3800 c4fcb0ff9503 0000

54415247504f5300 0000 3200 e8feb0ff5bfc 0000

54415247504f5300 0000 3200 0f03b0ff0301 0000

54415247504f5300 0000 2a00 2003b0ff8f00 0000

54415247504f5300 0000 2a00 1bffb0ff1cfc 0000

54415247504f5300 0000 2a00 3003b0ff6400 0000

54415247504f5300 0000 2a00 e3ffb0ff8903 0000

54415247504f5300 0000 3100 bbfeb0ff73fd 0000

54415247504f5300 0000 3100 a7ffb0ff9703 0000

54415247504f5300 0000 2a00 0dffb0ff42fc 0000

54415247504f5300 0000 3300 f7feb0ffaeff 0000

54415247504f5300 0000 3300 d501b0ffed00 0000

54415247504f5300 0000 3300 a5fab0ff8300 0000

54415247504f5300 0000 5200 dcffb0ff6203 0000

54415247504f5300 0000 5200 f5feb0ff73fc 0000

54415247504f5300 0000 5200 35ffb0ff39fc 0000

54415247504f5300 0000 5200 f1feb0ff44fd 0000

54415247504f5300 0000 5200 0a03b0ffe300 0000

54415247504f5300 0000 5200 9802b0ff0501 0000

54415247504f5300 0000 5200 0000b0ff6f03 0000

54415247504f5300 0000 fe00 b700b0ff8efe 0000

54415247504f5300 0000 fe00 1b01b0ff55fe 0000

54415247504f5300 0000 fe00 c700b0fffafd 0000

54415247504f5300 0000 fe00 eaffb0ff3a00 0000

54415247504f5300 0000 fe00 5500b0ff7801 0000

54415247504f5300 0000 fe00 0a00b0ff6001 0000

The line starts with the ASCII string 'TARGPOS' and ends with the target coordinates.It's the sixth word in each line that I don't understand yet, and looking at it here, I don't see how it can be used for the rendering sequence.

Link to post
Share on other sites

@DrKevDog: These could indeed be flags for models. I still have to compare them to block 6, which actually instantiates models at a certain position.

Looking at that list actually discredits the 'first word' theory since a lot of those numbers don't make any sense.

Well, these do indeed make sense: They are always close to the largest coordinate; not only to the model's, but also in to the model context's, so I guess it's a subtractor for the viewer distance on "jump if distance above" flags. I.e.: If a model switches to a lower LOD at a distance of 100, you don't want to use the distance to the model's center but the distance to its largest extent. And that value seems to be given in the 1st word. It may not be precise for all models, but as we know, TAW has some problems with missing and popping-up LOD, too.

There is some merit in the 'Block 2' theory, although the engine would have to differentiate between objects (particularly buildings) having the same index. This could probably be done with the origins of each model.

I agree to your last sentence. There are very few, if not to say any, cases where buildings overlap — and the same goes for terrain tiles. So, sorting them by distance to their origin would be sufficient for back-to-front rendering imho. The block 2 flags could be such an indicator, but I'll have to match them to block 6 instances first.

I've missed a few days, so is the focus now on ssd?
There wasn't any progress on the few still-unknown instructions (at least, the progress wasn't as rapid as before)

There is another block (Targets) later on in the file which may have something to do with this, although so far I've assumed it has more to do with a higher level function...

[…]

The line starts with the ASCII string 'TARGPOS' and ends with the target coordinates.It's the sixth word in each line that I don't understand yet, and looking at it here, I don't see how it can be used for the rendering sequence.

Seems bogus to me, too. For the start, I'll stick to analyzing block 2.

There is also another theory to be considered: As we know, some flags control whether terrain is drawn (0007 or 007C?) and other flags control whether buildings or aircraft is drawn (0083?). It could also be possible that TAW runs through all files with no flag enabled but the one that is required to render terrain, then again runs through all files with the buildings flag enabled, etc. until everything is drawn. That method looks like much overhead to me (doing the sorting and setting up parameters three or four times), but I've already stopped wondering about ten pages ago :)

Link to post
Share on other sites

One would think that rendering speed was paramount, bearing in mind that the underlying engine predates the 3D graphics card era. So, I would tend to rule out a multipass process. Been wrong before though.. :)

The .3 file format has been around at least since 1993's TFX and may go back to the Amiga days since data is stored in big-endian format.

The ssd 'Block2' was introduced in F22-ADF and is not present in EF2000, although the significance of this is not yet known.

Link to post
Share on other sites

Just catching up on some earlier posts....

And here's how the .3 files are positioned in the SSD, because I couldn't find that information in your scripts, Mike:

There is one entry for each object in the zero-terminated list behind block 7 (your scripts list it as Block4_Pointer_1). These mean:

  • 0007 <3index> — the model is the <3index>'th entry in block 6; its position is 0/0/0 without any rotation or scaling.
  • 0008 <3index> <XYZindex> — the model is the <3index>'th entry in block 6; its position is the <XYZindex>'th coordinate in block 3.

If a model's scaling in block 6 is positive, then the model must be upscaled by that value. If it is negative, it must be downscaled through multiplying by 1 ÷ -value.

Ah yes,sorry. The ssd parser is still quite crude and lacks comments. :(

Let us know if there are other areas that you are interested in, since we may have some idea what they do.

The terms 'Block1' etc, are mainly historical and represent our way of breaking down the binary file. The game probably doesn't see things the same way.

Link to post
Share on other sites

Okay. If block 2 wasn't present in EF 2000, then I doubt it has anything to do with culling. Another thing that came to mind: There are five kinds of .3 files (0000, 0020, 0083, 0087 and 00A3). Each of them is used for a specific kind of models, e.g. most planes are 0083 and most terrain is 00A3. If I'm lucky, this could already be sufficient information …

Anyway, here's a few screenshots from files with minimal overdraw. Looking good already.

abydos.png

allofthelights.png

I noticed many buildings having their lights enabled even at noon … there's really much to find out about the time of day still.

aswan.png

desrefs1.png

Link to post
Share on other sites

Looking VERY good! :thumbsup:

There's still quite a few things to explain with the .3 files, particularly the header. We still have to work out where the bytecode starts for each LOD in 0083/0087 amongst other things. In fact, most of the header is still unexplored.

Depends whether we want 100% or 'good enough' understanding....

Link to post
Share on other sites

Looking VERY good! :thumbsup:

There's still quite a few things to explain with the .3 files, particularly the header. We still have to work out where the bytecode starts for each LOD in 0083/0087 amongst other things. In fact, most of the header is still unexplored.

Depends whether we want 100% or 'good enough' understanding....

I agree that it looks good, however, I can't help but recall Krycztij's previous statement re: "If block 2 wasn't present in EF 2000, then I doubt it has anything to do with culling.". Comparing the 5 specific model types to their precursors in EF2000 and using the 17th word in the header, there are only 2 basic file types (0000, 0004) which would, it would seem to me, be insufficient information to support the rendering order process in EF2000? In EF2000 and TAW, there appears to be, at least with the TAW 0087 weapons files, an association between the 17th, 18th and 19th header words. I'm trying to establish a pattern with the 18th word which might be related... :popcornsmilie:

Link to post
Share on other sites

I agree that it looks good, however, I can't help but recall Krycztij's previous statement re: "If block 2 wasn't present in EF 2000, then I doubt it has anything to do with culling.". Comparing the 5 specific model types to their precursors in EF2000 and using the 17th word in the header, there are only 2 basic file types (0000, 0004) which would, it would seem to me, be insufficient information to support the rendering order process in EF2000? In EF2000 and TAW, there appears to be, at least with the TAW 0087 weapons files, an association between the 17th, 18th and 19th header words. I'm trying to establish a pattern with the 18th word which might be related... :popcornsmilie:

Good Luck!

I had another look at the EF2000 .3 files the other day and tried to hammer my parser into accepting them, which I was able to do except for 6 files which, apart from the header don't resemble other .3 files at all.

Even though we haven't extracted all the files with names from did.dat, there are still over 2000 files. Many of them, I'm guessing, are not used in the game even though they are called up for extraction.

Source code is included (if any C++ programmers are present). You need Visual C++ 2010 and the current DirectX SDK to build it (just include them into an empty console application project). Better don't look at the renderer, it's a big miss :rolleyes: All the "magic" and relevant information can be found in TAW_3_Processor.hpp and at the beginning of main.cpp.

Not that I'm a C++ programmer, but I thought I'd try to build this anyway. Tried to get away with using VC++ 2008, but as instructed, I needed to install VC++ 2010 to get it to work. Must be using some of the new C++0x stuff?
Link to post
Share on other sites

I agree that it looks good, however, I can't help but recall Krycztij's previous statement re: "If block 2 wasn't present in EF 2000, then I doubt it has anything to do with culling.". Comparing the 5 specific model types to their precursors in EF2000 and using the 17th word in the header, there are only 2 basic file types (0000, 0004) which would, it would seem to me, be insufficient information to support the rendering order process in EF2000? In EF2000 and TAW, there appears to be, at least with the TAW 0087 weapons files, an association between the 17th, 18th and 19th header words. I'm trying to establish a pattern with the 18th word which might be related... :popcornsmilie:

We need to crack those headers …!

I'm implementing the very first word as a logical model diameter at the very moment.

It's also a pity the hard-coded texture names are not always padded to eight characters with zeroes. (I'm packing eight characters into one 64-bit integer to identify textures — that's

significandly easier than string handling when managing textures.) As if loading the headers wasn't difficult already, it's these details that make it annoying :rolleyes:

I just found out: The second block of a .3 starts at word [16]. The 16 words before have the format

[unknown number]

[LOD distances, up to four]

0000 0000 7FFF

five unknown numbers

0002 0003 0003

padding (0000) until the 33rd word
I could not yet test it on all files (just on random terrain / pylon / weapon / plane / building files), but it seems to work out. Here's the source code in case you want to port it to your scripts:

void readFirst16Words(

	WinAPI::File & file

) {

	assert(0 == file.currentOffset());


	// The first 16 words of the file have the format

	//		<?> (<LOD distance>)[?] 0000 0000 7FFF (<?>)[?] 0002 0003 0003 (0000)[?]

	//	The meaning of the values in the 7FFF block is unknown. The zero bytes at the end are certainly padding.

	// This structure is parsed with a finite state machine.


	struct State { enum Value {

		expecting000000007FFF,	// reading the words before 0000 0000 7FFF

		expecting00007FFF,		// reading 0000 0000 7FFF

		expecting7FFF,

		expecting000200030003,	// reading the words inside the 7FFF block

		expecting00030003,		// reading 0002 0003 0003

		expecting0003,

		expecting17thWord,		// reading the 0000 padding until the 17th word is reached

		complete

	}; };


	State::Value	currentState(State::expecting000000007FFF);

	auto			currentWordsIndex(0u); // requesting the file pointer's value would be overhead

	do {


		// Read and process the next word, mind endianness

		auto const currentWord(bigEndian(file.next<Word>()));

		switch(currentState) {


			case State::expecting000000007FFF:

				if(0x0000 == currentWord) {

					currentState = State::expecting00007FFF;

				} else {

					currentState = State::expecting000000007FFF;

				}

				break;


			case State::expecting00007FFF:

				if(0x0000 == currentWord) {

					currentState = State::expecting7FFF;

				} else {

					currentState = State::expecting000000007FFF;

				}

				break;


			case State::expecting7FFF:

				if(0x7FFF == currentWord) {

					currentState = State::expecting000200030003;

				} else {

					currentState = State::expecting000000007FFF;

				}

				break;


			case State::expecting000200030003:

				if(0x0002 == currentWord) {

					currentState = State::expecting00030003;

				} else {

					currentState = State::expecting000200030003;

				}

				break;


			case State::expecting00030003:

				if(0x0003 == currentWord) {

					currentState = State::expecting0003;

				} else {

					currentState = State::expecting000200030003;

				}

				break;


			case State::expecting0003:

				if(0x0003 == currentWord) {

					currentState = State::expecting17thWord;

				} else {

					currentState = State::expecting000200030003;

				}

				break;


			case State::expecting17thWord:

				if(16 == currentWordsIndex) {

					currentState = State::complete;

				} else {

					if(0x0000 != currentWord) {

						Exception::Throw("invalid header (padding not zero)");

					}

				}

				break;


		} // switch state


		++currentWordsIndex;

	} while((State::complete != currentState) && (17 > currentWordsIndex));


	if(State::complete != currentState) {

		// We reached the 17th word without success. The header is invalid.

		Exception::Throw("invalid header (overflown)");

	}


	return;

}

I had another look at the EF2000 .3 files the other day and tried to hammer my parser into accepting them, which I was able to do except for 6 files which, apart from the header don't resemble other .3 files at all.
If EF2000's format is not too different from TAW's, it should be easy for me to implement it, too. Just give me the information you have sometime (I'm currently all buzy implementing .SSD's).

Not that I'm a C++ programmer, but I thought I'd try to build this anyway. Tried to get away with using VC++ 2008, but as instructed, I needed to install VC++ 2010 to get it to work. Must be using some of the new C++0x stuff?
Just very basic C++0x features; automatic typing and static assertions. If there's need to port it back to C++97, this won't be a problem. I do, however, plan to employ C++0x features when the infrastructure becomes more complicated — but since the viewer is very plain at the moment (IIRC, it doesn't even use dynamic memory allocation), there is no critical need for them yet.
Link to post
Share on other sites

While that describes the structure up to the 16th word, it doesn't really explain it. Not much happens in this region though except for the ninth word, like in these 0083 files:

f9c01770000000007fff00000000000000fa000000020003000300000000000000830007000400050006000000000000002000000020000000200000008d rwymid02.3

fffe009603e8000000007fff00000000fc1800000000000200030003000000000083009a000700040005000600000000002000000020000000200000001e awc_harr.3

fffd00fa000000007fff000000000000fc180000000200030003000000000000008300070004000500060000000000000020000000200000002000000123 f22clsau.3
...and here's all the 0020s. It may help to see them in the same place:
fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0906 0906 0906 0000 0000 0000 0000 0000 0000 0000 215445585f320000 2b50 00 01 02 03 08 09 0a 0b 001e asyut_b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0a68 0a68 0a68 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 0f 0c 0d 0e 04 05 06 07 0030 asyut_c.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0b88 0b88 0b88 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 04 05 06 07 01 00 03 02 0030 asyut_f.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 07ce 07ce 07ce 0000 0000 0000 0000 0000 0000 0000 215445585f320000 2b50 00 01 02 03 08 09 0a 0b 001e asyut_g.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 093e 093e 093e 0000 0000 0000 0000 0000 0000 0000 215445585f320000 2b50 00 01 02 03 08 09 0a 0b 001e asyut_i.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 1774 1774 1774 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 08 09 0a 0b 04 05 06 07 005a cit1arl1.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 15f4 15f4 15f4 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 0f 0c 0d 0e 04 05 06 07 005a cit1arl2.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 10b4 10b4 10b4 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 09 0a 0b 08 0c 0d 0e 0f 0058 dam1b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 10b2 10b2 10b2 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 09 0a 0b 08 0c 0d 0e 0f 0058 dam2b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 801c 801c 801c 0000 0000 0000 0000 0000 0000 0000 215445585f323500 2b58 08 09 0a 0b 0c 0d 0e 0f 00e7 dam_1.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 8160 8160 8160 0000 0000 0000 0000 0000 0000 0000 215445585f323500 2b58 08 09 0a 0b 0c 0d 0e 0f 00e7 dam_2.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0d5e 0d5e 0d5e 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 04 05 06 07 0c 0d 0e 0f 0044 khami_b.3

fbfa 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0b66 0b66 0b66 0000 0000 0000 0000 0000 0000 0000 215445585f333500 2b5e 04 05 06 07 08 0b 0a 09 002a kharto_b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0690 0690 0690 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0019 kharto_c.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0654 0654 0654 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0019 kharto_e.3

fbfa 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0bfc 0bfc 0bfc 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 0c 0d 0e 0f 07 04 05 06 0033 kharto_i.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 1176 1176 1176 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 0c 0d 0e 0f 07 04 05 06 0058 kharto_l.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 067e 067e 067e 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0019 kharto_m.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 140c 140c 140c 0000 0000 0000 0000 0000 0000 0000 215445585f333100 2b5d 00 01 02 03 0c 0d 0e 0f 0032 kom_ombo.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 10bc 10bc 10bc 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5e 08 09 0a 0b 04 05 06 07 0058 marib2.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 2514 2514 2514 0000 0000 0000 0000 0000 0000 0000 215445585f323500 2b58 0c 0d 0e 0f 0f 0c 0d 0e 006f maribdam.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 06c2 06c2 06c2 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0019 riyadh_a.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 06ce 06ce 06ce 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0019 riyadh_b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 08d4 08d4 08d4 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 08 09 0a 0b 0f 0c 0d 0e 001e riyadh_d.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0712 0712 0712 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 04 05 06 07 00 01 02 03 0019 riyadh_e.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 093c 093c 093c 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 04 05 06 07 01 00 03 02 001e riyadh_f.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0a2c 0a2c 0a2c 0000 0000 0000 0000 0000 0000 0000 215445585f333500 2b5e 04 05 06 07 08 0b 0a 09 001e riyadh_g.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0a9a 0a9a 0a9a 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 04 05 06 07 01 00 03 02 001e riyadh_i.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 09d4 09d4 09d4 0000 0000 0000 0000 0000 0000 0000 215445585f333500 2b5e 0b 08 09 0a 0b 08 09 0a 001e riyadh_j.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 06b0 06b0 06b0 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 0c 0d 0e 0f 00 01 02 03 0019 riyadh_k.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0640 0640 0640 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 04 05 06 07 00 01 02 03 0019 riyadh_l.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0aee 0aee 0aee 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 00 01 02 03 00 01 02 03 001e riyadh_n.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 0ad2 0ad2 0ad2 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 0c 0d 0e 0f 07 04 05 06 001e riyadh_o.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 118e 118e 118e 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 04 05 06 07 0c 0d 0e 0f 0056 sana_b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 09c8 09c8 09c8 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 0c 0d 0e 0f 07 04 05 06 001e sana_c.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 06c4 06c4 06c4 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 08 09 0a 0b 00 01 02 03 0019 sana_d.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 0020 0028 06e4 06e4 06e4 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0019 sana_f.3

Link to post
Share on other sites
While that describes the structure up to the 16th word, it doesn't really explain it.
My thinking is, to know what the numbers mean we must first find out what's their type. Once we have identified signed and unsigned numbers, and probably their ranges, we can find out where they correlate with vertex numbers, texture indices, position dimensions, etc.

It may help to see them in the same place:
It certainly does help! :thumbsup: Could you list all headers of all files, sorted by type? I'm sure anything we find in the headers is 2B-aligned (what do you think?), so a space after every fourth digit would be helpful, too …

Edit: Also, I've lost sight a little :banghead: The first block of the .3 file contains an unknown word at the beginning, but the next (up to four) nonzero values are the distances of the LOD's, of course!

Link to post
Share on other sites

I've edited my earlier post to add some arbitrary formatting to the list of '0020' files.

After the '0020' 17th word, the 18th word is 0028. This gives the distance in bytes to the start of the bytecode. As all these headers are the same length, it might be a coincidence.

The 19th,20th & 21st words then give a number which seems proportional to the length of the file. Note that at the very end of the '0020' files is a footer sequence '002000200020' which is where these numbers may point to. In the following '00a3' list, these 0020s occur in the header.

After the hardcoded texture, I've elected to join the next 2 bytes in to one word of the form '2bXX' for now. Then come 8 seemingly separate bytes each in the range 00 to 0f....then finally the number of vertices as a word.

All the '0020' and '00a3' files are terrain, although the reverse isn't true. eg 'aswan_e' is a '0083'

I've shortened this list since the forum won't accept the whole thing. I've included the couple of instances where the 9th word isn't '07d0'.

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 08 09 0a 0b 04 05 06 07 0000 0020 0000 0020 0000 0020 0000 005a abtw_1ra.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 08 09 0a 0b 04 05 06 07 0000 0020 0000 0020 0000 0020 0000 0058 abtw_1ro.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 0f 0c 0d 0e 04 05 06 07 0000 0020 0000 0020 0000 0020 0000 005a abtw_2ra.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333000 2b5d 0c 0d 0e 0f 07 04 05 06 0000 0020 0000 0020 0000 0020 0000 0058 abtw_2ro.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 0c 0d 0e 0f 07 04 05 06 0000 0020 0000 0020 0000 0020 0000 0058 abusim2.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323500 2b58 08 09 0a 0b 0c 0d 0e 0f 0000 0020 0000 0020 0000 0020 0000 001e abu_sim.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 09 0a 0b 08 0c 0d 0e 0f 0000 0020 0000 0020 0000 0020 0000 003a abydos.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 04 05 06 07 03 00 01 02 0000 0020 0000 0020 0000 0020 0000 0032 aden_a.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f313900 2b51 08 09 0a 0b 04 05 06 07 0000 0020 0000 0020 0000 0020 0000 0058 aden_b.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 00 01 02 03 00 01 02 03 0000 0020 0000 0020 0000 0020 0000 0032 aden_c.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0000 0020 0000 0020 0000 0020 0000 001e aden_d.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323100 2b51 0c 0d 0e 0f 0f 0c 0d 0e 0000 0020 0000 0020 0000 0020 0000 001e aden_e.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f313900 2b51 0c 0d 0e 0f 07 04 05 06 0000 0020 0000 0020 0000 0020 0000 001e aden_f.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323100 2b51 0c 0d 0e 0f 0f 0c 0d 0e 0000 0020 0000 0020 0000 0020 0000 001e aden_g.3

..

fbf0 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333300 2b5e 0c 0d 0e 0f 07 04 05 06 0000 0020 0000 0020 0000 0020 0000 005a aswan_l.3

fbf0 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 0a 0b 08 09 0e 0d 0c 0f 0000 0020 0000 0020 0000 0020 0000 0029 aswan_m.3

fa40 1f40 0000 0000 7fff 0000 0000 0000 03e8 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0000 0020 0000 0020 0000 0020 0000 005e aswan_n.3

fbf0 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f333400 2b5f 0a 0b 08 09 0e 0d 0c 0f 0000 0020 0000 0020 0000 0020 0000 005a aswan_o.3

..

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0000 0020 0000 0020 0000 0020 0000 0019 jeddah_f.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323000 2b51 04 05 06 07 0d 0e 0f 0c 0000 0020 0000 0020 0000 0020 0000 001e jeddah_g.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 0c33 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f323800 2b52 00 01 02 03 00 01 02 03 0000 0020 0000 0020 0000 0020 0000 0019 jeddah_h.3

fc00 1f40 0000 0000 7fff 0000 0000 0000 07d0 0000 0002 0003 0003 0000 0000 0000 00a3 000e 000b 000c 000d 0000 0000 0000 0000 0000 0000 0000 215445585f313900 2b51 0c 0d 0e 0f 07 04 05 06 0000 0020 0000 0020 0000 0020 0000 001e jeddah_i.3

..

Link to post
Share on other sites

On their way via e-mail....

Looking at '0000' now. The 18th word gives the number of bytes to the start of the byte code, then there are always 6 words, of which up to three give the start of each LOD followed by the three words noted for '0020' which appear to point to the end of file.

All '0000' files have a '002000200020' footer.

Link to post
Share on other sites

Great, thank you.

I guess it's alright to interpret the 18th word in 0020 files as the bytecode offset; we have the same in 0000 files. The three equal words are fascinating — they're not even at all (the numbers in the 7FFF block at the beginning, on the other hand, are often 1000 or 2000 decimal). These point to the 0020 0020 0020 footer at the end of the file, just like in 0000.

Okay — I guess the format of 0000 and 0020 is identical, it's only that 0020 by accident doesn't have more than one LOD:

  • 0000 / 0020
  • offset of the first LOD relative to current position, in bytes (pointing to the number of vertices, the bytecode starts one word behind)
  • same as above, if there are 2 or more LOD's
  • same as above, if there are 3 or more LOD's
  • same as above, if there are 4 LOD's
  • three words with the offset of the footer relative to the current position, in bytes
  • zero padding until the first LOD begins
  • LOD #1
  • LOD #2, if there are 2 or more LOD's
  • LOD #3, if there are 3 or more LOD's
  • LOD #4, if there are 4 LOD's
  • the 0020 0020 0020 footer

Link to post
Share on other sites

....slight adjustment to that list. Just trying to work out if I can quantify the 'some' below. :)

  • 0000 / 0020
  • offset of the first LOD relative to current position, in bytes (pointing to the number of vertices, the bytecode starts one word behind)
  • same as above, if there are 2 or more LOD's
  • same as above, if there are 3 or more LOD's
  • same as above, if there are 4 LOD's
  • three words with the offset of the footer relative to the current position, in bytes
  • zero padding until the first LOD begins

  • For 0000, if there is a hardcoded texture there are 4 padding words, then the texture name, then 'some' padding before the number of vertices in first LOD

  • LOD #1
  • LOD #2, if there are 2 or more LOD's
  • LOD #3, if there are 3 or more LOD's
  • LOD #4, if there are 4 LOD's
  • the 0020 0020 0020 footer

EDIT:

Maybe it doesn't matter how much padding is after the terminating zero of the texture name. Just as well, since I can't explain why these should be so different unless the minimum padding size is one word:

.. 0022 01d0 01d0 01d0 0000 0000 0000 00000000000000002154415849574159000000000010 adis1_90.3

.. 001e 3da6 3da6 3da6 0000 0000 0000 0000000000000000215452475f3139000021 aihq_180.3

Link to post
Share on other sites
EDIT:

Maybe it doesn't matter how much padding is after the terminating zero of the texture name. Just as well, since I can't explain why these should be so different unless the minimum padding size is one word:

.. 0022 01d0 01d0 01d0 0000 0000 0000 00000000000000002154415849574159000000000010 adis1_90.3

.. 001e 3da6 3da6 3da6 0000 0000 0000 0000000000000000215452475f3139000021 aihq_180.3

We have to differ between 0000 and 0020 here. In 0000, there is absolutely arbitrary zero padding after the texture name (sometimes none at all, like in your second example). In 0020, on the other hand, there are always five words. Any idea what that block means? 2b50, 2b52, 2b58, 2b5e, 2b5f … these values are very close, but I can't see any sense in them.
Link to post
Share on other sites

...and finally, a quick look at 0083/0087 which seem to follow a common format.

Up to the 0083/0087 17th word, the format is the same as the other types. The only interesting feature being the various values assigned to the 9th word.

Immediately following the 17th word are a block which is padded out to seven words. Of this block, up to 3 words should give the offsets to the start of each extra LOD, although as yet, I haven't got the numbers to add up.

These offsets are always followed by 4 words, eg '0007000400050006' which somehow seem linked to the offset to the first LOD.

What happens now, depends on whether there is a hardcoded texture. If it exists, there are 4 padding words before the texture name. Sometimes. there appears to be 'too much' padding after the texture name. In this case, each value in the block of 4 bytes mentioned earlier is incremented by one. ie '000c0009000a000b' instead of '000b00080009000a' which is evidence that these are some sort of offset.

Then this sequence '002000000020000000200000'is always present immediately before the number of vertices in the first LOD.

Some examples, starting with the 17th word:

2 LODs with texture and 'too much' padding

.... 0083 0086 000c0009000a000b 0000 0000 0000000000000000215441534b45523200000000 002000000020000000200000 0017 707.3


2 LODs, no texture

.... 0083 008e 0007000400050006 0000 0000 002000000020000000200000 0018 a50.3


4 LODs, no texture

.... 0083 027a 0093 002b 0007000400050006 002000000020000000200000 0004 amobl90.3


1 LOD, texture

.... 0083 000b00080009000a 0000 0000 0000 0000000000000000214d4f425f320000 002000000020000000200000 00fc amx_10rc.3

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...