Jump to content
COMBATSIM Forum

mikew

Charter Member
  • Posts

    4,798
  • Joined

  • Last visited

  • Days Won

    12

Posts posted by mikew

  1. Mike really is working hard isn't he? Unless he is a corporate spy trying to steal all of The Dude's trade secrets! WELL YOU WILL NOT SUCCEED IN KIDNAPPING ME!!! ;)

    Ah, just as I suspected!

    The entity known as 'Donster' is a cleverly constructed semi-autonomous script. Looks like I've triggered its self-defence mechanism.

    Hmmn, need to rethink my approach.....

  2. As stated before, I'm ignoring these for now:

    blodshad.3

    esprit.3

    fx_trail.3

    ianflat.3

    manshad.3

    pantheri.3

    I don't know what to do with the 0019 in mm24hind yet, but this is how I'm treating the others in the parser:

    001f- same as 0077

    0032- same as 0088,008e etc

    0036- occupies 4 bytes, ie 0036XXXX

    005a- same length as 0002

    0074- same as 0054 ie single word

    0085- occupies 4 bytes, ie 0085XXXX

    008c- same as 0054, ie single word

    Note, that I have looked into what these actually do, just determined the space they take up so the parser can move on.

    Oh, and great work with those helicopters. :thumbsup:

    Whether it's worth it or not is somewhat subjective. Personally, I've gone about as far as I want to go with individual EF2000 .3 files, although I intend to find out if there are others hidden in the did.dat file as part of the general extraction effort.

  3. On page 24 of this thread Krycztij posted a list of .3 files that he couldn't find.

    I've taken this list, calculated the hash of each filename, and cross referenced it to a list of all extracted files...and obtain the following:

    chi767 88d20333 noname1051
    
    rus767 88bd9923 noname1047
    
    ball_3 86ffda09 Does not exist
    
    ball_2 86ff8709 Does not exist
    
    ball_4 87002d09 Does not exist
    
    ball_1 86ff3409 Does not exist
    
    ball_5 87008009 Does not exist
    
    debris10 ac88eaa9 noname10096
    
    echo1 7916d10d noname12219
    
    echo2 7917240d noname12220
    
    echo3 7917770d noname12221
    
    echo4 7917ca0d noname12222
    
    echo5 79181d0d noname12223
    
    echo6 7918700d noname12224
    
    echo7 7918c30d noname12225
    
    f22 57912b01 Does not exist
    
    flak 63045e0b noname11099
    
    flare 7b1cf715 noname12333
    
    awc_sa11 a4290651 noname8274
    
    awc_sa6 966b4d29 noname3924
    
    awc_tri1 a2875d51 noname7889
    
    awc_tri2 a287b051 noname7890
    
    awc_tri3 a2880351 noname7891
    
    fcarr 75b0a205 noname11873
    
    fsam 6017e50b noname10980
    
    fshipl 8b0e262d noname1227
    
    fships 8b106b2f noname1229
    
    ftank 7bfadf15 noname12374
    
    cloud2c1 a8bd76e5 noname9245
    
    cloud2c2 a8bdc9e5 noname9246
    
    cloud2c3 a8be1ce5 noname9247
    
    cloud2c4 a8be6fe5 noname9248
    
    cloud2i1 a95eece5 noname9360
    
    cloud2i2 a95f3fe5 noname9361
    
    cloud2i3 a95f92e5 noname9362
    
    cloud2i4 a95fe5e5 noname9364
    
    cloud2m2 a9cae3e5 noname9447
    
    cloud2m3 a9cb36e5 noname9450
    
    cloud2m4 a9cb89e5 noname9453
    
    cloud2m1 a9ca90e5 noname9445
    
    cloud2s1 aa6c06e5 noname9599
    
    cloud2s2 aa6c59e5 noname9600
    
    cloud2s3 aa6cace5 noname9602
    
    cloud2s4 aa6cffe5 noname9604
    
    wakem_1 9e50ab15 Does not exist
    
    rdplab_1 af48a525 noname10655
    
    poo 554e0301 noname10857
    
    lerx 60b4e307 Does not exist
    
    video 7be24d07 noname12362
    
    video_10 aff56419 Does not exist
    
    map1 61aac805 noname11024
    
    map2 61ab1b05 noname11025
    
    map3 61ab6e05 noname11026
    
    map4 61abc105 noname11027
    
    map5 61ac1405 noname11028
    
    map6 61ac6705 noname11029
    
    map7 61acba05 noname11030
    
    map8 61ad0d05 noname11031
    
    map9 61ad6005 noname11032
    
    con_djib a9575859 noname9349
    
    con_egyp a506be5d noname8453
    
    con_ertr a479ee5d noname8340
    
    con_ethp a4a9775b noname8391
    
    con_reds a773d853 noname8978
    
    con_saud aa7b3055 noname9611
    
    con_smli a23d4551 noname7821
    
    con_suda a72fd159 noname8950
    
    con_yeme a5802755 noname8561
    
    chapmiss a3dbbda5 noname8216
    
    crotmiss a1466ca5 noname7649
    
    jernmiss a31a6845 noname7994
    
    mlrsmiss a6773565 noname8786
    
    pat1miss aae83b55 noname9709
    
    rolamiss aa98b815 noname9650
    
    sa11miss abeea615 noname9947
    
    sa17miss a397f435 noname8137
    
    sa_6miss aa5ba115 noname9577
    
    ss23miss a0b14635 noname7532
    
    man 59a84703 noname10910
    
    line 63294c05 noname11107
    
    chi747 889c3133 noname1036
    
    test 62161a07 noname11047
    
    test1 7d0f970d noname12439
    
    test2 7d0fea0d noname12440
    
    tbigfact a1a0a147 Does not exist
    
    tbgfa180 a830be45 Does not exist
    
    tbigf_90 a2326121 Does not exist
    
    tbigfa90 ad205641 Does not exist
    
    eri747 89577f23 noname1096
    
    il76 6b03cb09 noname11351
    
    att_base ac351355 noname10021
    
    horn 674d5f0d noname11235
    
    rus747 8887c723 noname1026
    
    som747 89e40503 noname1144
    
    su331 711f5411 Does not exist
    
    sud747 8c1cc223 noname1347
    
    chi_cntr ad00b57d noname10209
    
    chi_oilb a26fe375 noname7874
    
    chi_oils a2756677 noname7876
    
    egy_cntr a85d8c7d noname9168
    
    egy_oilb adccb575 noname10372
    
    egy_oils add23877 noname10374
    
    eri_cntr a9bb135d noname9431
    
    eri_oilb af2a3c55 noname10627
    
    eri_oils af2fbf57 noname10639
    
    eth_cntr a46aae5d noname8326
    
    eth_oilb a9d9d755 noname9481
    
    eth_oils a9df5a57 noname9483
    
    fra_cntr a3f9005d noname8241
    
    fra_oilb a9682955 noname9371
    
    fra_oils a96dac57 noname9375
    
    rus_cntr a662575d noname8775
    
    rus_oilb abd18055 noname9924
    
    rus_oils abd70357 noname9935
    
    sau_cntr a5c4453d noname8625
    
    sau_oilb ab336e35 noname9786
    
    sau_oils ab38f137 noname9795
    
    som_cntr a74a941d noname8957
    
    som_oilb acb9bd15 noname10149
    
    som_oils acbf4017 noname10160
    
    sud_cntr afb0125d noname10697
    
    sud_oilb a51f4055 noname8481
    
    sud_oils a524c357 noname8484
    
    uk_cntr 99fba81d noname5161
    
    uk_oilb 9f6ad115 noname7156
    
    uk_oils 9f705417 noname7169
    
    yem_cntr ae38083d noname10441
    
    yem_oilb a3a73635 noname8156
    
    yem_oils a3acb937 noname8163
    
    starter 9827a55b noname4539
    
    wpnlift 91d4d703 noname2365
    
    arbarms1 ab04b895 noname9730
    
    arbarms2 ab050b95 noname9731
    
    umdurman a6f2ff23 noname8906
    
    arbcoms1 a117a5b5 noname7598
    
    arbcoms2 a117f8b5 noname7600
    
    slnt_90 9b539b19 noname5617
    
    kings_aj ac0a132f noname9981
    
    arbewrs1 a08cc8b5 noname7488
    
    arbewrs2 a08d1bb5 noname7489
    
    arbewrs3 a08d6eb5 noname7491
    
    arbewrs4 a08dc1b5 noname7492
    
    arbinds2 a61253b5 noname8698
    
    arbrefs1 a5927fad noname8572
    
    arbrefs2 a592d2ad noname8573
    
    arbrefs3 a59325ad noname8574
    
    arbrefs4 a59378ad noname8575
    
    arbsups1 a8a81eb5 noname9226
    
    arbsups2 a8a871b5 noname9228
    
    iantest 9575c137 Does not exist
    
    f0agm65g a90f0073 noname9307
    
    f0agm65h a90f5373 noname9308
    
    f0agm88 97d77739 noname4432
    
    f0aim9x 9059093b noname1857
    
    f0decoy 99f7d037 noname5151
    
    f0jdam 889fd513 noname1037
    
    f0lau68 9a84132b noname5317
    
    f0mk82f 98d0f723 noname4753
    
    f0mk82r 98d4db23 noname4761
    
    f0mk83f 98ebe023 noname4806
    
    fpagm65h a64dedb3 noname8762
    
    fpaim12c ace990b7 noname10200
    
    fpaim12r acee6db7 noname10201
    
    fpjdam 8a584e23 noname1180
    
    fpjsow 8eb3972b noname1603
    
    fpmk20 8ee17721 noname1614
    
    f1agm65h ad844c73 noname10321
    
    f1jdam 81e6b913 noname241
    
    f2agm65h a1f94a73 noname7779
    
    f2jdam 8b2d9813 noname1234
    
    f3agm65h a66e4373 noname8783
    
    f3jdam 84747c13 noname501
    
    fxagm65h a9f5bfb3 Does not exist
    
    fxjsow 88eaa82b noname1068
    
    fxrocket afbc508b Does not exist
    
    fyagm65h ae6ab8b3 noname10473
    
    fzbomb 870dfa29 noname857
    
    fzjsow 8b786b2b noname1269
    
    fzjsowap a818feab noname9113
    
    fzjsowar a819a4ab noname9117
    
    fzjsowas a819f7ab noname9119
    
    fzjsowat a81a4aab noname9120
    
    fzlau68 9d23e24b noname6325
    
    fzjbomb 903b7249 noname1801
    
    yaim_9s 9f616f1b Does not exist
    
    ymk82 709ee601 Does not exist
    
    zagm88 847c8419 noname504
    
    zdecoy 869cdd17 noname801
    
    zjsow 7915c90b noname12218
    
    zlau68 8729200b noname872
    
    zmk82r 8579e803 noname659
    
    zmk82f 85760403 noname658
    
    xagm86n 9b383433 noname5575
    
    xalarm 82ca2015 noname303
    
    xbomblet ac6d314b noname10067
    
    xdecoy 82a66317 noname286
    
    xjsow 7688060b noname11927
    
    xmav_ir 9f02880f Does not exist
    
    xmk83f 819a7303 noname219
    
    xs5_rock a3531613 noname8064
    
    xs_eagle a432e92d noname8292
    
    xub32_57 aa501903 noname9563
    
    zmav_ir 92f9070f Does not exist
    
    zagm84a 93e82233 noname3088
    
    zagm86n 94222b33 noname3157
    
    zaim120c a476b56b noname8337
    
    zaim_9x 915e501b noname2187
    
    zalarm 86c09a15 noname820
    
    zb8w 6aac6603 noname11338
    
    zfuelo 8cd8f617 noname1387
    
    zgbu24 8c82b80b noname1363
    
    zjdam 74ba8003 noname11823
    
    zmk83f 8590ed03 noname679
    
    zpod 6a940e01 noname11336
    
    zs5_rock ac3d0813 noname10024
    
    zs_eagle ad1cdb2d noname10243
    
    zub32_57 a33a1003 noname8041
    
    eri_cont a1d3d35b Does not exist
    
    eth_cont ac83695b Does not exist
    
    brdm2 788cb715 Does not exist
    
    misfix 7b5ca10b Does not exist
    
    

    'Does not exist' means that the hash was not found, and the file is not likely contained in did.dat.

    To demonstrate that this works, here's 'noname1047'...or as we now know 'rus767.3':

    rus767.jpg

  4. Just looked at this, and it appears to be an exception and IMHO not worth spending time over...like many EF2000 .3 files.

    I suggest you delete it from the list....at least for now.

    EDIT:

    Ignore that last statement. mi24.3 and mi26.3 exhibit the same format. Maybe just take the first two LODs for now?

    The only file I have a problem with parsing (except for the 6 files I eliminated earlier) is mm24hind.3. I don't know what to do with the bytes after the 0019:

    ..
    
    0566; 007200de00dd00e000df    ; Flat Shaded Quad, Palette:180  Vertices: 222,221,224,223
    
    0567; 007200df00e000dd00de    ; Flat Shaded Quad, Palette:180  Vertices: 223,224,221,222
    
    0568; 007100e100e000e2    ; Flat Shaded Triangle, Palette:180  Vertices: 225,224,226
    
    0569; 007100e200e000e1    ; Flat Shaded Triangle, Palette:180  Vertices: 226,224,225
    
    0570; 0019    ;
    
    0571; 0000    ;
    
    0572; 0019    ;
    
    0573; 00d6    ;
    
    0574; 00d9    ;
    
    0575; 000100b400da00de    ; Line, Palette:180  Vertices: 218,222
    
    0576; 000100b400de00e0    ; Line, Palette:180  Vertices: 222,224
    
    0577; 000100b400e100e2    ; Line, Palette:180  Vertices: 225,226
    
    0578; 0000    ;
    
    0579; 000200420054004e0053    ; Flat Shaded Triangle, Palette:66  Vertices: 84,78,83
    
    0580; 004c3b423c00    ; Triangle Vertex Colours:59,66,60
    
    0581; 004d004a0053004f    ;
    
    0582; 004c423c4200    ; Triangle Vertex Colours:66,60,66
    
    ..

  5. Thanks.

    I can't tell from that what the problem is, but I'm collecting these fault reports.

    I've heard only good things about nGlide, but never tried it. dgVoodoo works fine for me, sinceI only have a 1280x1024 monitor.

    I seem to remember a problem with the Direct3D version when pressing F12 with Nvidia video cards. Maybe nGlide is emulating this a bit too well.

  6. Interesting :popcornsmilie: Obviously, the lookup table is sorted by the unknown indices' values, which have been interpreted as signed integers (80000000, which corresponds to -2,147,483,648 decimally, first; 7FFFFFFF, which corresponds to +2,147,483,647 decimally, last). Could also be Huffman coding. No, that's not efficient enough.

    The unknown indices would seem to be a hash of the filename, and I've managed to recreate the process for a least one file, coltab.dat which is the first file extracted from did.dat.

    This stuff is a real pain to work with, so in case I can't be bothered looking at this again here's some crude Python code which emulates the TAW subroutine. The subroutine is fed with the string 'coltabA' where the last 'A' may be a key for the '.dat'....or of course, something else.

    This would appear to be a one way process, meaning we can't get the filename from the hash. If we know the name of a missing file, it should now be possible to locate.

    instring='coltabA'     #The first file TAW reads is coltab.dat, 'A' may be a key for '.dat'
    
    length=len(instring)
    
    if length>15:
    
        length=15
    
    
    var=83          #53 hex.....a variable from elsewhere, may not be constant but 0x53 for coltab
    
    mod=1048571     #ffffb hex
    
    temp=0
    
    i=0             #loop variable
    
    h=0             #a bitmap, where 1 is added from the right if char code > the last one, 0 otherwise
    
    while i<length:
    
        t=instring[i]  #read in char
    
        f=ord(t)    #Treat as decimal
    
        if f==95:    #Test for the underscore '_'
    
            temp-=i  #Not sure about this, need to try a filname with '_'
    
        else:
    
            if i>0:
    
                if f>oldf:
    
                    h=h*2+1
    
                else:
    
                    h=h*2
    
                temp=((var*temp)+f) % mod
    
            else:
    
                temp=f
    
        oldf=f
    
        i+=1
    
    a=length and 15
    
    a=a*268435456   #shift 28 bits to the left
    
    b=temp*256      #shift 8 bits to the left
    
    hash=a^b^h      #xor them 
    
    print instring, hex(hash)   

  7. … should I just ignore them?

    Yes, if it means that we can see what they look like quickly...but from those screen shots of TFX, I don't think those clouds would have looked very 'state of the art' in 1995 when EF2000 was released.
  8. ....and cloud1.3,cloud2.3 etc are interesting indeed.

    I've only looked at the the parsed output, but this looks like an attempt at volumetric clouds using spheres. That's the first time I've seen anything like this before the '7fff' at the start of the header. Here's 'cloud1.3':

    header ;fc6807d00fa017701f4012c013887fff000000000000000000000002000300030000000e00da01a60290037a037a037a000f
    
    0000; 003f000400c4    ;  If 003f (Time??) test(4), Jump to line 18
    
    0001; 00620000003200000014    ; Vertex :0  X=50  Y=0  Z=20
    
    0002; 006800500136    ; Vertex :1  X=130  Y=0  Z=330
    
    0003; 0068fe5cffe2    ; Vertex :2  X=-290  Y=0  Z=300
    
    0004; 00680366fe16    ; Vertex :3  X=580  Y=0  Z=-190
    
    0005; 0068fddafefc    ; Vertex :4  X=30  Y=0  Z=-450
    
    0006; 0068fe020096    ; Vertex :5  X=-480  Y=0  Z=-300
    
    0007; 0068ff2402bc    ; Vertex :6  X=-700  Y=0  Z=400
    
    0008; 006801ea00d2    ; Vertex :7  X=-210  Y=0  Z=610
    
    0009; 006802d0ffe2    ; Vertex :8  X=510  Y=0  Z=580
    
    0010; 006800c8fe48    ; Vertex :9  X=710  Y=0  Z=140
    
    0011; 006800d2fd94    ; Vertex :10  X=920  Y=0  Z=-480
    
    0012; 0068fdeeff38    ; Vertex :11  X=390  Y=0  Z=-680
    
    0013; 0068fcf4ff60    ; Vertex :12  X=-390  Y=0  Z=-840
    
    0014; 0068fe7a02da    ; Vertex :13  X=-780  Y=0  Z=-110
    
    0015; 006800be038e    ; Vertex :14  X=-590  Y=0  Z=800
    
    0016; 0061000f0000    ;
    
    0017; 005f000f00700000015e00700001012c00700002012c00700003012c00700004012c0070000500fa0070000600fa0070000700fa0070000800fa0070000900fa0070000a00c80070000b00c80070000c00c80070000d00c80070000e00c8    ;
    
    0018; 0000    ;
    
    0019; ffff000f    ;
    
    0020; 003f000400c4    ;  If 003f (Time??) test(4), Jump to line 38
    
    0021; 00620000003200000014    ; Vertex :0  X=50  Y=0  Z=20
    
    0022; 006800500136    ; Vertex :1  X=130  Y=0  Z=330
    
    0023; 0068fe5cffe2    ; Vertex :2  X=-290  Y=0  Z=300
    
    0024; 00680366fe16    ; Vertex :3  X=580  Y=0  Z=-190
    
    0025; 0068fddafefc    ; Vertex :4  X=30  Y=0  Z=-450
    
    0026; 0068fe020096    ; Vertex :5  X=-480  Y=0  Z=-300
    
    0027; 0068ff2402bc    ; Vertex :6  X=-700  Y=0  Z=400
    
    0028; 006801ea00d2    ; Vertex :7  X=-210  Y=0  Z=610
    
    0029; 006802d0ffe2    ; Vertex :8  X=510  Y=0  Z=580
    
    0030; 006800c8fe48    ; Vertex :9  X=710  Y=0  Z=140
    
    0031; 006800d2fd94    ; Vertex :10  X=920  Y=0  Z=-480
    
    0032; 0068fdeeff38    ; Vertex :11  X=390  Y=0  Z=-680
    
    0033; 0068fcf4ff60    ; Vertex :12  X=-390  Y=0  Z=-840
    
    0034; 0068fe7a02da    ; Vertex :13  X=-780  Y=0  Z=-110
    
    0035; 006800be038e    ; Vertex :14  X=-590  Y=0  Z=800
    
    0036; 0061000f0000    ;
    
    0037; 005f000f00700000012c0070000100fa0070000200fa0070000300fa0070000400fa0070000500c80070000600c80070000700c80070000800c80070000900c80070000a00960070000b00960070000c00960070000d00960070000e0096    ;
    
    0038; 0000    ;
    
    0039; ffff000f    ;
    
    0040; 003f000400e2    ;  If 003f (Time??) test(4), Jump to line 58
    
    0041; 00620000003200000014    ; Vertex :0  X=50  Y=0  Z=20
    
    0042; 006800500136    ; Vertex :1  X=130  Y=0  Z=330
    
    0043; 0068fe5cffe2    ; Vertex :2  X=-290  Y=0  Z=300
    
    0044; 00680366fe16    ; Vertex :3  X=580  Y=0  Z=-190
    
    0045; 0068fddafefc    ; Vertex :4  X=30  Y=0  Z=-450
    
    0046; 0068fe020096    ; Vertex :5  X=-480  Y=0  Z=-300
    
    0047; 0068ff2402bc    ; Vertex :6  X=-700  Y=0  Z=400
    
    0048; 006801ea00d2    ; Vertex :7  X=-210  Y=0  Z=610
    
    0049; 006802d0ffe2    ; Vertex :8  X=510  Y=0  Z=580
    
    0050; 006800c8fe48    ; Vertex :9  X=710  Y=0  Z=140
    
    0051; 006800d2fd94    ; Vertex :10  X=920  Y=0  Z=-480
    
    0052; 0068fdeeff38    ; Vertex :11  X=390  Y=0  Z=-680
    
    0053; 0068fcf4ff60    ; Vertex :12  X=-390  Y=0  Z=-840
    
    0054; 0068fe7a02da    ; Vertex :13  X=-780  Y=0  Z=-110
    
    0055; 006800be038e    ; Vertex :14  X=-590  Y=0  Z=800
    
    0056; 0061000f0000    ;
    
    0057; 0060000f000000700000012c00000070000100fa00000070000200fa00000070000300fa00000070000400fa00000070000500c800000070000600c800000070000700c800000070000800c800000070000900c800000070000a009600000070000b009600000070000c009600000070000d009600000070000e0096    ;
    
    0058; 0000    ;
    
    0059; ffff000f    ;
    
    0060; 003f000400e2    ;  If 003f (Time??) test(4), Jump to line 78
    
    0061; 00620000003200000014    ; Vertex :0  X=50  Y=0  Z=20
    
    0062; 006800500136    ; Vertex :1  X=130  Y=0  Z=330
    
    0063; 0068fe5cffe2    ; Vertex :2  X=-290  Y=0  Z=300
    
    0064; 00680366fe16    ; Vertex :3  X=580  Y=0  Z=-190
    
    0065; 0068fddafefc    ; Vertex :4  X=30  Y=0  Z=-450
    
    0066; 0068fe020096    ; Vertex :5  X=-480  Y=0  Z=-300
    
    0067; 0068ff2402bc    ; Vertex :6  X=-700  Y=0  Z=400
    
    0068; 006801ea00d2    ; Vertex :7  X=-210  Y=0  Z=610
    
    0069; 006802d0ffe2    ; Vertex :8  X=510  Y=0  Z=580
    
    0070; 006800c8fe48    ; Vertex :9  X=710  Y=0  Z=140
    
    0071; 006800d2fd94    ; Vertex :10  X=920  Y=0  Z=-480
    
    0072; 0068fdeeff38    ; Vertex :11  X=390  Y=0  Z=-680
    
    0073; 0068fcf4ff60    ; Vertex :12  X=-390  Y=0  Z=-840
    
    0074; 0068fe7a02da    ; Vertex :13  X=-780  Y=0  Z=-110
    
    0075; 006800be038e    ; Vertex :14  X=-590  Y=0  Z=800
    
    0076; 0061000f0000    ;
    
    0077; 0060000f000100700000012c00010070000100fa00010070000200fa00010070000300fa00010070000400fa00010070000500c800010070000600c800010070000700c800010070000800c800010070000900c800010070000a009600010070000b009600010070000c009600010070000d009600010070000e0096    ;
    
    0078; 0000    ;
    
    0079; ffff    ;
    
    0080; 0070    ;
    
    0081; 0070    ;
    
    0082; 0070    ;
    
    

  9. One general comment about the EF2000 .3 files is that we have names for some which cannot possibly be used in the game, which may indicate that all .3 files in did.dat are loaded. This may help understand the extractor.

    Some of these files clearly don't belong in the game and it may be that some malformed/corrupt files are included. For this reason, it's probably not worth chasing down an opcode that only appears in one file.

    Having said that, the 007f opcode in the file frigate2.3 is interesting.

    As far as I know, this is the only file that contains the 007f opcode. TAW has no problem interpreting it and draws a spaceship.

    I thought maybe that this comes from DID's previous game 'Inferno', but I've extracted one .3 file from Inferno's did.dat and it looks like it could come from ef2000 or TAW.

    Anyway, the 007f opcode takes this form:

    2330; 007f0000000100310064ffceff9c    ;
    
    2331; 0000    ;
    ..and this explicitly defines a vertex, and could be replaced by 0062 opcodes:
    006200310064ffceff9c

  10. Great!

    When I was looking at the EF .3 files last month, the following files I gave up on parsing for now:

    blodshad.3 (contains an odd number of bytes)

    esprit.3

    fx_trail.3

    ianflat.3

    manshad.3

    pantheri.3

    The rest I could at least parse into text.

    Note that some (0000 ?) .3 files end with the sequence 002000200020. In EF2000 there can be other values than 0020 which can show up as 'false' opcodes.

    I'll try and find some examples, but I have to work today so time is limited.

  11. Getting better all the time!

    Not so good news from the filename front. :( I think the names come from various places depending on the type, with some being explicitly defined in f22.dat.

    Still need to work out how the name is linked to a particular file in did.dat though, so there's still hope.

  12. I'm not convinced that there is anything special about the 0075 opcode. It seems to be a an instruction to load a single vertex into something, while for multiple vertices with contigious indices, the 0061 opcode is used.

    Even a simple model, like this part of tent_2.3 uses 0075 and 0061:

    0047; 00620007000bfffdfff8    ; Vertex :7  X=11  Y=3  Z=-8
    
    0048; 0064ffea    ; Vertex :8  X=-11  Y=3  Z=-8
    
    0049; 00660010    ; Vertex :9  X=-11  Y=3  Z=8
    
    0050; 006b00160006    ; Vertex :6  X=11  Y=3  Z=8
    
    0051; 006a00010003ffef0002    ; Vertex :2  X=12  Y=0  Z=-9
    
    0052; 006d00120005    ; Vertex :5  X=12  Y=0  Z=9
    
    0053; 006bffe80004    ; Vertex :4  X=-12  Y=0  Z=9
    
    0054; 006dffee0003    ; Vertex :3  X=-12  Y=0  Z=-9
    
    0055; 006100030007    ;
    
    0056; 00750006    ;
    
    0057; 00750002    ;
    
    0058; 00750005    ;
    
    0059; 00750004    ;
    
    0060; 00750003    ;
    
    0061; 009f00080038010300cc009e0009000800030004    ;
    
    0062; 009f00080036010300ca009e0008000700020003    ;
    
    0063; 009f00080032010300ca009e0006000900040005    ;
    
    0064; 009f00080034010300c8009e0007000600050002    ;
    
    0065; 009f00080035010300ce009e0008000900060007    ;
    
    0066; 0000    ;

    I can't explain what's up with the Apache though....

  13. No, the names are obtained by running the game inside a debugger and setting a breakpoint in the function where the files are read in. At a certain point, the offset and size can be read from the EAX and EBX registers while ESP points to the filename which 'magically' appears on the stack.

    This only works for files used in the game, so we don't have names for the 2000 or so of the 12588 files in did.dat.

    Today, I've been trying to find out where the name comes from, but it's a thankless task...

×
×
  • Create New...