I’m going to release 3View publicly in the current state (+ the fixed oilrig lights), including DLL interface and source code, tomorrow.
If you find serious bugs / flaws in the meantime, please report.
Archived from http://community.combatsim.com/topic/29871-3view/
I’m going to release 3View publicly in the current state (+ the fixed oilrig lights), including DLL interface and source code, tomorrow.
If you find serious bugs / flaws in the meantime, please report.
Nothing serious so far, but I notice that I get a Windows error (at work right now, so can’t tell you the exact details) if I exit a SSD session with the DLL.
It could of course have something to do with my Python code, but I don’t see a problem if I exit a .3 session.
It isn’t really a practical problem, as I’m exiting anyway. 🙂
Not reproducing here. How are you closing the SSD session? With a manual call to closeSSDSession() or are you waiting for the user input to return false?
I’m just closing the window by pressing the X in the top right corner … so I’d sort of expect something to complain. I just notice that I can get away with this without comment in a .3 session, but not a SSD session.
A need to refine my exiting techniques though, as it almost seems that closeSSDSession() isn’t needed as it tends to close anyway if I don’t refresh with a draw comand within a certain time.
closeSSDSession() must not be called if processSSDSessionInput() returned 0 (if the user closed the window). You use it to close the window from the program’s side of the interface; closing from the user’s side is handled automatically by processSSDSessionInput().
Would it be okay to host package in our box, or would there be undesired side-effects (like our internal files being visible to others)?
KrycztijI’m going to release 3View publicly in the current state (+ the fixed oilrig lights), including DLL interface and source code, tomorrow.
If you find serious bugs / flaws in the meantime, please report.
Pjotr,
I am unsure as to how you define "flaws", and I most certainly do not find anything I would consider a flaw or serious. However, I find the .raw texture code to be quite limiting, in its current form, with respect to progressive texture modification efforts. I need access to much larger texture definitions:
Although I have yet to feel comfortable that I understand all of the TFX texture code, I am comfrotable with much of the 24 and 32bit processes. I would suggest expanding the taw-raw code as follows:
// 12 KiB .raw files contain 64×64 r8g8b8 texels in sRGB color space. Unused in the // original game, but designed for high-fidelity sky backgrounds. // (e.g. explosions). typedef RGB RAW12KiB[64][64]; // 192 KiB .raw files contain 256×256 r8g8b8 texels in sRGB color space. Unused in the // original game, but designed to be used for texture augmentation typedef RGB RAW192KiB[256][256]; // 768 KiB .raw files contain 512×512 r8g8b8 texels in sRGB color space. Unused in the original game, but designed for high-fidelity sky backgrounds. typedef RGB RAW384KiB[512][512]; // 512 lines of 512 pixels each
Thanks 🙂
Unfortunately, I don’t think I can complete this until tomorrow — the new texture types need to be added to the 3d_file parser and to the renderer. It would, however, be of great help if you could tell me what slot number accepts the new types (e.g. slots 400–419: 129 KiB raw) and if you could send me a few sample shapes / textures / INIs for testing 🙂
KrycztijcloseSSDSession() must not be called if processSSDSessionInput() returned 0 (if the user closed the window). You use it to close the window from the program’s side of the interface; closing from the user’s side is handled automatically by processSSDSessionInput().
Home now, so can give further details:
If I run this code, that depends on the user to exit, I get a Windows error 0xc0000002:
from ctypes import * lib=cdll.LoadLibrary('3view.dll') s=c_wchar_p('f22.ssd') sesh=lib.openSSDSession(s) p=lib.processSSDSessionInput(sesh,0) while p: p=lib.processSSDSessionInput(sesh,0) lib.drawSSDSession(sesh)
If I use the program to close 3view after a while, it exits cleanly … eg this:
from ctypes import * lib=cdll.LoadLibrary('3view.dll') s=c_wchar_p('f22.ssd') sesh=lib.openSSDSession(s) x=0 p=lib.processSSDSessionInput(sesh,0) while x < 10000: p=lib.processSSDSessionInput(sesh,0) lib.drawSSDSession(sesh) x+=1 lib.closeSSDSession(sesh)
mikewIf I run this code, that depends on the user to exit, I get a Windows error 0xc0000002:
while p: p=lib.processSSDSessionInput(sesh,0) lib.drawSSDSession(sesh)
This loop will call drawSSDSession() even if processSSDSessionInput() returned zero, meaning that the session has already been destroyed. It should be if(p) lib.drawSSDSession(sesh).
But this has lead me to another error: for processSSDSessionInput(), the 2nd parameter is still swapped. I fixed it for .3’s, but forgot it for .ssd’s. Grmpf. Going to fix this now.
Well, that’s embarassing.
crap happens 🙂 And after all, it helped me find another bug!
I don’t mean to rush, but I’ve got the final packages ready. Tomorrow is my last day off work, so I guess it’s better to publish immediately.
Right off: There’s three parts in the source code which do not originate in my own work:
The Direct3D headers — no problem. They are derived from the official headers, but I have invested lots of time into restructering them, and apart from some comments, they don’t have much in common any more.
John_Doe’s RA decompression code — no problem at all. Not only have I invested much work into improving it, he is also mentioned in the opening credits, which was the only condition when he originally posted it.
My string format function.
The last one is a copy of Visual C++ CRT’s snprintf_s() implementation. It has been modified heavily by me, adding features like counted strings and stripping off needless features. Nontheless, one can recognize it’s not originally written by me.
I tried to find out which license applies to the original code, but there was nothing to find. The original code is part of the Visual C++ package, and whatever is developed with their tools is free to distribute. Furthermore, it’s the source code for MSVCR100.DLL, which I am explicitly permitted to distribute. But that’s for the DLL itself; its source code is nowhere mentioned. I even downloaded multiple Visual Studio packages and read dozens of licenses, but nothing applied.
I don’t know if distributing that one file is perfectly legal. It is very unlikely that anyone ever notices it, let alone wonders about its license. Also, I’m trying to get rid of that code; I just didn’t have the time to rewrite it yet. So, I’ll upload it and it’ll be replaced with the next version. Just wanted to let you know.
P.S.: Wow, this forum censores itself. I wrote s**t happens, but it was automatically altered to crap happens … 😄
I downloaded the source+dll from the public link, but have a problem with the dll in that I have no control using the mouse, apart from closing the window. I don’t have time to try rebuilding it from source this evening.
KrycztijUnfortunately, I don’t think I can complete this until tomorrow — the new texture types need to be added to the 3d_file parser and to the renderer. It would, however, be of great help if you could tell me what slot number accepts the new types (e.g. slots 400–419: 129 KiB raw) and if you could send me a few sample shapes / textures / INIs for testing 🙂
It has been a while since I spent any real time on those textures / shapes and .inis, so I’ll have to collect the lot but I’ll get them to you.
KrycztijBut this has lead me to another error: for processSSDSessionInput(), the 2nd parameter is still swapped. I fixed it for .3’s, but forgot it for .ssd’s. Grmpf. Going to fix this now.
mikewI downloaded the source+dll from the public link, but have a problem with the dll in that I have no control using the mouse, apart from closing the window. I don’t have time to try rebuilding it from source this evening.
Consider: zero means do not consider mouse and keyboard
. You need to pass 1 there, just like with the .3 sessions.
Ah, I must have been using the dll from before you fixed it for the .3s
.
I need to tidy up my folders again.
mikewUsing that error message, I can find some of the texture loading code and see that there is a fixed limit of 250 of those textures. This limit could be increased, although there may be memory allocation side effects …
… but the next check in the code is for NPOT textures where the width and height is compared with minimum 32 and maximum 512.So, theoretically, we could have 250 512x512 AGP textures.
It occurred to me that maximizing the texture surfaces would be the best solution. Is the above just a theoretical possibility? Have you been able to confirm that changing the NPOT values will give us the potential for 250 512x512 texture slots?
I can’t remember writing that this morning! … although I vaguely remember something along those lines some time ago. Can you post that error message
again?
The classic line is that memory is the second thing to go...
(although my experience with computers suggest it is often the first 😄)
My apologies for the date discrepancy, I was hurried.
Original thread:
http://community.combatsim.com/topic/25920-taw-terrain-format/page__st__680#entry5140936
AUTO:005B83F9 loc_5B83F9: ; CODE XREF: sub_5B83DC+138j AUTO:005B83F9 sub ebp, 0C8h AUTO:005B83FF cmp ebp, 0FAh AUTO:005B8405 jl short loc_5B8415 AUTO:005B8407 push offset aErrorMaxsystem ; "ERROR : MAXSYSTEMTEXTURES needs increas"... AUTO:005B840C call ds:off_683A98 AUTO:005B8412 add esp, 4 AUTO:005B8415 AUTO:005B8415 loc_5B8415: ; CODE XREF: sub_5B83DC+29j AUTO:005B8415 cmp esi, 20h AUTO:005B8418 jnz loc_5B8519 AUTO:005B841E AUTO:005B841E loc_5B841E: ; CODE XREF: sub_5B83DC+140j AUTO:005B841E ; sub_5B83DC+14Cj ... AUTO:005B841E cmp edi, 20h AUTO:005B8421 jnz loc_5B855A AUTO:005B8427 AUTO:005B8427 loc_5B8427: ; CODE XREF: sub_5B83DC+181j AUTO:005B8427 ; sub_5B83DC+18Dj ... AUTO:005B8427 test ebx, ebx AUTO:005B8429 jnz short loc_5B8439 AUTO:005B842B push offset aNoFilename_ ; "No filename." AUTO:005B8430 call ds:off_683A98 AUTO:005B8436 add esp, 4
AUTO:005B8519 loc_5B8519: ; CODE XREF: sub_5B83DC+3Cj AUTO:005B8519 cmp esi, 40h AUTO:005B851C jz loc_5B841E AUTO:005B8522 cmp esi, 80h AUTO:005B8528 jz loc_5B841E AUTO:005B852E cmp esi, 100h AUTO:005B8534 jz loc_5B841E AUTO:005B853A cmp esi, 200h AUTO:005B8540 jz loc_5B841E AUTO:005B8546 push ebp AUTO:005B8547 push offset aWidthSpecified ; "Width specified for texture %d is not a"... AUTO:005B854C call ds:off_683A98 AUTO:005B8552 add esp, 8 AUTO:005B8555 jmp loc_5B841E AUTO:005B855A ; --------------------------------------------------------------------------- AUTO:005B855A AUTO:005B855A loc_5B855A: ; CODE XREF: sub_5B83DC+45j AUTO:005B855A cmp edi, 40h AUTO:005B855D jz loc_5B8427 AUTO:005B8563 cmp edi, 80h AUTO:005B8569 jz loc_5B8427 AUTO:005B856F cmp edi, 100h AUTO:005B8575 jz loc_5B8427 AUTO:005B857B cmp edi, 200h AUTO:005B8581 jz loc_5B8427 AUTO:005B8587 push ebp AUTO:005B8588 push offset aHeightSpecifie ; "Height specified for texture %d is not "... AUTO:005B858D call ds:off_683A98 AUTO:005B8593 add esp, 8 AUTO:005B8596 jmp loc_5B8427 AUTO:005B859B ; ---------------------------------------------------------------------------
I will see what I can do with this later this evening.
OK, here’s what that decompiles to … and this must have been what I was looking at before.
signed int __userpurge sub_5B83DC<eax>(int a1<eax>, int a2<edx>, int a3<ebx>, int a4) { int ST08_4_0; // ST08_4@0 int v5; // ebx@1 int v6; // ebp@1 int v7; // edi@1 int v8; // esi@1 int v9; // ebp@2 char v10; // cl@8 int v11; // ST08_4@8 int v13; // eax@8 int v14; // eax@10 __int16 v15; // ax@14 int v16; // eax@26 v6 = a1; v8 = a2; v7 = a3; v5 = a4; if ( !dword_6FC0F4 ) sub_5B6AB0(); v9 = v6 - 200; if ( v9 >= 250 ) off_683A98("ERROR : MAXSYSTEMTEXTURES needs increasing.", ST08_4_0); if ( v8 != 32 ) { if ( v8 != 64 ) { if ( v8 != 128 ) { if ( v8 != 256 ) { if ( v8 != 512 ) ((int (*)(const char *, ...))off_683A98)("Width specified for texture %d is not a power of 2.", v9); } } } } if ( v7 != 32 ) { if ( v7 != 64 ) { if ( v7 != 128 ) { if ( v7 != 256 ) { if ( v7 != 512 ) ((int (*)(const char *, ...))off_683A98)("Height specified for texture %d is not a power of 2.", v9); } } } } if ( !v5 ) off_683A98("No filename.", ST08_4_0); strcpy_(); v11 = *(int *)((char *)&dword_6FC0E8 + 2) >> 16; v13 = 57 * (*(int *)((char *)&dword_6FC0E8 + 2) >> 16); byte_E4C8FC[v13] = v10; *(int *)((char *)&dword_E4C8FD + v13) = v8; *(int *)((char *)&dword_E4C901 + v13) = v7; if ( v10 ) { if ( v10 == 1 ) { v14 = nmalloc_(); dword_E50F30 = v14; if ( !v14 ) off_683A98("ERROR : Failed to allocate memory for loading.", v11); sub_5B6B50(); sub_5B761C(); } else { off_683A98("Invalid texture format specified.", v11); } } else { v16 = nmalloc_(); dword_E50F30 = v16; if ( !v16 ) off_683A98("ERROR : Failed to allocate memory for loading.", v11); sub_5B6B50(); sub_5B6C20(); } if ( dword_E50F30 ) nfree_(); v15 = dword_6FC0EC; word_E4C6E0[v9] = dword_6FC0EC; LOWORD(dword_6FC0EC) = v15 + 1; return 1; }
Thus far the editing to modify the accepted texture dimensions has met with some obstacles. When the F22 executable is parsed and I dump the memory there are entries for the textures which it will not allow me to modify. Perhaps expanding the file numbers in an alternate manner would be useful.
v9 = v6 - 200; if ( v9 >= 250 ) off_683A98("ERROR : MAXSYSTEMTEXTURES needs increasing.", ST08_4_0);
This identifies 201 to 450 as being SYSTEM TEXTURES. I would like to define the USER TEXTURES.
AUTO:005B87BC arg_0 = dword ptr 10h AUTO:005B87BC AUTO:005B87BC push esi AUTO:005B87BD push edi AUTO:005B87BE push ebp AUTO:005B87BF mov ebp, eax AUTO:005B87C1 mov esi, edx AUTO:005B87C3 mov edi, ebx AUTO:005B87C5 mov ebx, [esp+arg_0] AUTO:005B87C9 cmp ds:dword_6FC0F4, 0 AUTO:005B87D0 jz loc_5B88E1 AUTO:005B87D6 AUTO:005B87D6 loc_5B87D6: ; CODE XREF: sub_5B87BC+12Aj AUTO:005B87D6 cmp word ptr ds:dword_6FC0EC+2, 12Ch AUTO:005B87DF jl short loc_5B87EF AUTO:005B87E1 push offset aErrorMaxuserte ; "ERROR : MAXUSERTEXTURES needs increasin"... AUTO:005B87E6 call ds:off_683A98 AUTO:005B87EC add esp, 4 AUTO:005B87EF AUTO:005B87EF loc_5B87EF: ; CODE XREF: sub_5B87BC+23j AUTO:005B87EF cmp esi, 20h AUTO:005B87F2 jnz loc_5B88EB AUTO:005B87F8 AUTO:005B87F8 loc_5B87F8: ; CODE XREF: sub_5B87BC+132j AUTO:005B87F8 ; sub_5B87BC+13Ej ... AUTO:005B87F8 cmp edi, 20h AUTO:005B87FB jnz loc_5B8934 AUTO:005B8801
It seems to me that 300 (12C) is an important determinant, however, I am not yet sure what that is. Does anyone know what that actually compares to?
Also, only AGP USER TEXTURES have a reference to a callback function:
'ERROR : Encountered user AGP texture with no callback.',0
Is that significant?
That 300 is MAXUSERTEXTURES and appears to be hard coded to 300. This could be increased with a hex edit (at 0x2faaf0 in the glide f22.dat), with unknown consequences…
That’s good to know. I’m curious to know why you went to glide, are you suggesting a way to implement the agp user textures in glide?
Thus far hex editing has only returned error messages regarding user textures being NPOT. I may have better luck with editing editing the instruction opcodes.
No reason to pick the Glide .dat at all. It happened to be the one I was using when I first used IDA.
I’ve hit a bit of a snag while trying to operate the 3view dll from another Windows program.
While I can control the dll ok from a Python script, if I try and do the same from a wxPython which is itself a window, I don’t see any effect on 3view until I manually move the focus back to the 3view window.
I suppose that this is to be expected, as Windows doesn’t know what I want to do.
There must be a way to do this from wxPython, but it means yet more internet searching. 🙁
Does wxPython give you a window handle (natively called HWND in the WinAPI)? I can write an interface for strange windows then, which will leave all window management to the calling application.
If it doesn’t, there’ll be some other Python library that does.
I’ll check later…
Sorry, I was just ranting against my own ignorance. It’s the first time I’ve tried anything like this.
As usual, problems like this can be solved in Python by throwing libraries at them. In this case a wrapper to the win32 API.
So, this code seems to work:
import win32gui hwnd = win32gui.FindWindow('3view',None) if hwnd: win32gui.SetFocus(hwnd)
Maybe I could use this approach to resize and/or move the 3view window. I’ll have to experiment. 🙂
Still, if some day you have a problem and need to create your own window, just say so. Technically, the DLL could render to any window you’ve got a handle for – and if you need that, I’ll implement it.
Thanks.
At the moment, I just want a quick way to visualise my theories about ssd opcode actions...and I now have the necessary technology. 🙂
By the way, I’m using wxPython since it seems like the easiest way to build a GUI. As I don’t really know what I’m doing anyway, I’m open to suggestions for a better way of doing it.
mikewThat 300 is MAXUSERTEXTURES and appears to be hard coded to 300. This could be increased with a hex edit (at 0x2faaf0 in the glide f22.dat), with unknown consequences…
I have not yet gotten around to MAXUSERTEXTURES, however, I did some work on MAXSYSTEMTEXTURES and increased the maximum textures limit from 450 to 460. At index location 461 there is a block of 64 (IIRC) locales reserved for select TM textures, the ASCII names of which are obtained directly from the shape file header, as opposed to the [globaltextures] index.
This is the area where the reserved positions are located in memory:
450 \cf2 00A5A240 \cf1 00 00 00 00 00 00 00 00 6D 6F 6F 6E 00 00 00 00 \cf1 ........moon.... 00A5A250................ 00A5A260................ 00A5A270................ 451 "MAXSYSTEMTEXTURES needs increasing" 00A5A280................ 00A5A290................ 00A5A2A0................ 00A5A2B0................ 00A5A2C0................ 00A5A2D0................ 00A5A2E0................ 00A5A2F0................ 00A5A300................ 00A5A310................ 00A5A320................ 00A5A330................ 00A5A340................ 00A5A350................ 00A5A360................ 00A5A370................ 00A5A380................ 00A5A390................ 00A5A3A0................ 00A5A3B0................ 00A5A3C0................ 00A5A3D0................ 00A5A3E0................ 00A5A3F0................ 00A5A400................ 00A5A410................ 00A5A420................ 00A5A430................ 00A5A440................ 00A5A450................ 00A5A460................ 00A5A470................ 00A5A480................ 00A5A490................ 00A5A4A0................ 00A5A4B0................ 00A5A4C0................ 00A5A4D0................ 00A5A4E0................ 00A5A4F0................ 48kb 256 x 192 8bit(indexed) .tm: 461 \cf2 00A5A500 \cf1 00 00 00 00 00 00 00 00 52 45 46 45 43 54 00 00 \cf1 ........REFECT.. 00A5A510................ 00A5A520................ 00A5A530................ 00A5A540 \cf1 00 00 00 00 00 00 00 00 44 45 41 44 43 41 4D 31 \cf1 ........DEADCAM1 00A5A550................ 00A5A560................ 00A5A570................ 00A5A580 \cf1 00 00 00 00 00 00 00 00 45 58 50 5F 36 00 00 00 \cf1 ........EXP_6... 00A5A590................ 00A5A5A0................ 00A5A5B0................ 00A5A5C0 \cf1 00 00 00 00 00 00 00 00 54 41 53 4B 45 52 32 00 \cf1 ........TASKER2. 00A5A5D0................ 00A5A5E0................
I have yet to determine if there is anything significantly unique about the material properties but I will test for that. As can be seen from the above, the block starts with REFECT.tm which is loaded exclusively from the active F22.3 shape file.
The textures loaded into any of these 64 positions can be swapped by modifying the shape files header texture characters. I will work on the USER textures forthwith.
I’m polishing the current version, so I can be sure to give you working source code – I hope it’s finished tomorrow.
In the meantime, I tested it with EF2000’s AN_225.3 and it crashed – drawing the landing gear produced too many drawing instructions for my rasterizer. Well, that Antonov certainly is huge 😉
I think in EF2000, the AN225 files are corrupt. IIRC, the working AN225 model is actually antonov.3.
No, it really is a problem with my renderer. The AN 225 has lots of tires, and the draw disc
opcode is used for them. Direct3D cannot natively draw discs, so I must emulate them as a 16-sided polygon. 190 discs with 16 vertices each, that’s about 50 KiB – quite a lot of scratch space …
Okay; the new version is up and because I haven’t done this for soooo long, I accidentially broke the official TFXplorer download … but I think I’ve got it fixed.
Anyway: I had done lots of tiny little modifications over the last months (and some major changes to the code you should not notice in normal use), and I don’t know if anything broke. If you’ve got the time (I know EF2000 has top priority), try it.
I’ve also uploaded a new version of TFXplorer. The whole infrastructure regarding joysticks has been reworked (I’d love to have dynamic key mapping some time in the future) and lots of other technical things (see file comment). Hat switches won’t work, I’ll have a look at it tomorrow.
Cry out loud if anything broke.
KrycztijNo, it really is a problem with my renderer. The AN 225 has lots of tires, and the
draw discopcode is used for them. Direct3D cannot natively draw discs, so I must emulate them as a 16-sided polygon. 190 discs with 16 vertices each, that’s about 50 KiB – quite a lot of scratch space …
Ouch!
Oh yes DKD – didn’t implement the AGP textures yet. Also tomorrow … need sleep badly.
This is good. Let me know if you need anything. Thanks and sleep well.
I’m watching as a passive enthusiastic Noob. 😉 But please keep up the good work. 👍 Likewise, if I can help 🤷 let me know.
Edit: Maybe I can beta test the new TFXplorer?
Thank you!
Yes Wombat you can 🙂 Get the latest build here: https://app.box.com/s/r6xc1lu6froyrv9x8w2y
When you click, you will now accelerate gently. This should have made the explorer much more accurate.
TFXplorer looks much improved after the brief test I’ve done with TAW. The joystick (Logitech Attack 3) now works fine on this machine and I haven’t seen any deformed models at oil installations. The finer control in explorer mode makes lining up those screenshots much easier. 👍
For 3view, I’ve only looked at some EF2000 models, although we know that some (maybe most) are corrupt. Nice job on the AN225’s wheels. 🙂
The main efa.3 model handling is also much improved, but I guess we still have some things to work out regarding that model.
…and they even work with Win8.1. 🙇
mikew…and they even work with Win8.1.
8.1??? No … not something else new … I’m just coming to grips with 8.0 … 😉
KrycztijThank you!
Yes Wombat you can 🙂 Get the latest build here: https://app.box.com/s/r6xc1lu6froyrv9x8w2y
When you click, you will now accelerate gently. This should have made the explorer much more accurate.
👍 Downloading now.
KrycztijThank you!
Yes Wombat you can 🙂 Get the latest build here: https://app.box.com/s/r6xc1lu6froyrv9x8w2y
When you click, you will now accelerate gently. This should have made the explorer much more accurate.
OK. Assuming the controls remain unchanged then I note the following:
When I jump in the ’pit I steadily climb and don’t seem to be able to achieve level flight unless I use my stick.
Usage:
In-game:
You can switch to explorer mode via SHIFT+Q; X: SHIFT + Q only works in explorer mode
Hope this is helpful …
EDIT This is on my PC running WinXP x32bit
Wow, thank you very much!
mikewTFXplorer looks much improved after the brief test I’ve done with TAW. The joystick (Logitech Attack 3) now works fine on this machine
Glad to hear that!
mikewand I haven’t seen any deformed models at oil installations.
But I saw some 🙁 I suspect this is the same issue as with the AH64 rotor blades, and the open canopy F-22. No idea how to fix that, or if it’s worth the trouble …
mikewThe main efa.3 model handling is also much improved, but I guess we still have some things to work out regarding that model.
We have to work out even more. I noticed many many EF2000 shapes being drawn twice or thrice in the same place. It seems like opcodes ADF/TAW uses for time of day are used in EF2000 for branching 🙁 Lots of work to do …
Wombat1940When I jump in the ’pit I steadily climb and don’t seem to be able to achieve level flight unless I use my stick.
How many g’s do you see while climbing? (this can tell me how far my joystick input is off)
Wombat1940
- Repeatedly press S to increase viewing range, or X to decrease. Neither work
- NUMPAD 6, 2, 4, and 8 glide north, south, west, and east. Non work
- SHIFT+F1 toggles wireframe rendering. Doesn’t for me
Yes, I disabled those for in-game mode. (S and X will be needed for other things, and it can f**k up flight physics pretty bad if a plane glides North some kilometers per second)
Wombat1940
- Repeatedly press S to increase viewing range, or X to decrease. Not for me …
Can you please try again (explorer mode, not in-game)? You might have to press it ten or twenty times to see an effect …
Wombat1940
- F3 toggles AGP textures. Not sure what I’m supposed to see with this 🤷
It’s switching the D3D and the Glide version; it makes some difference with special effects like looking directly into the sun.
Wombat1940Hope this is helpful …
Be sure it is! I don’t see my own mistakes, that’s why I rely heavily on your testing. Even more important, I don’t have a Windows XP machine here for testing, so right now you’re my only feedback on compatibility. Thank you very much for your effort!
One more thing: Did you test snapshots (F2)? They will work in ADF/TAW only (TODO for me right now: Implement that for EF2000!)
I think I’ve gotten 512x256 and 512² true-color textures working:
They’ll be in the next upload (probably tonight); need to track down some other bugs first.
KrycztijHow many g’s do you see while climbing? (this can tell me how far my joystick input is off)
About 1.7G’s as I climb into the ’pit, but if I speed up >700 knots it settles to 1.0 - 1.1G. I now think it could be ok at cruising speed. Sorry about that. 😳
KrycztijCan you please try again, S and X, (explorer mode, not in-game)? You might have to press it ten or twenty times to see an effect …
Worked perfectly this time. Again my mistake …
KrycztijIt’s switching the D3D and the Glide version; it makes some difference with special effects like looking directly into the sun.
Yes I can see it now when looking at the sun. The text also changes.
KrycztijOne more thing: Did you test snapshots (F2)? They will work in ADF/TAW only (TODO for me right now: Implement that for EF2000!)
Ye … fine. Explorer mode only of course. I’d forgotten how to do those. I was going to ask. 😄 I think you had set it up previously for me, specifically. Just magic for recon shots. 🙇
KrycztijI think I’ve gotten 512×256 and 512² true-color textures working:
They’ll be in the next upload (probably tonight); need to track down some other bugs first.
I love the fluffy white bit … and the stormy look underneath …
Wombat1940About 1.7G’s as I climb into the ’pit, but if I speed up >700 knots it settles to 1.0 - 1.1G. I now think it could be ok at cruising speed. Sorry about that. 😳
No, it could indeed be my fault. Looks like a bug in the joystick calibration. Could you please copy the console output and paste it here? It’s
If you’re lost, have a look at Mike’s post: http://community.combatsim.com/topic/29572-tfx-explorer/?p=5154467
This would allow me to check if there’s a problem with my code (forgot a value) or with your joystick (calibration and such).
Wombat1940Worked perfectly this time. Again my mistake …
Alright 🙂
Wombat1940Yes I can see it now when looking at the sun. The text also changes.
For the next build, I changed the text to version: Glide / Direct3D. Should be better than just cryptic letters 🙂
Wombat1940Ye … fine. Explorer mode only of course. I’d forgotten how to do those. I was going to ask. 😄 I think you had set it up previously for me, specifically. Just magic for recon shots. 🙇
I guess I’ll put a reminder in the bottom-left too (like I did for F5); that should make it easier.
Thanks again!
Wombat1940I love the fluffy white bit … and the stormy look underneath …
The learning curve is not too steep (I hope to pull you in at some point). The important thing is that with this implemented in TFXplorer, there is no limit to the custom skies we can build. A note of importance is that these static clouds were designed to be coupled with the dynamic cloud levels for optimal effect. Once we get that implemented I hope to showcase the beautiful potential contained in the new skybox concept 😉
PS: I hadn’t noticed those clouds before; stunning 👍
DrKevDogThe learning curve is not too steep (I hope to pull you in at some point). The important thing is that with this implemented in TFXplorer, there is no limit to the custom skies we can build. A note of importance is that these static clouds were designed to be coupled with the dynamic cloud levels for optimal effect.
Once we get that implementedI hope to showcase the beautiful potential contained in the new skybox concept 😉PS: I hadn’t noticed those clouds before; stunning 👍
This sounds really good. Anything that improves Eye Candy
is a big thing for me. Does the same apply to EF2000?
KrycztijNo, it could indeed be my fault. Looks like a bug in the joystick calibration. Could you please copy the console output and paste it here? It’s
recognized HID "Thrustmaster HOTAS Cougar Joystick" axis 0139 (001C): 0-7 axis 0130 (001D): 0-65535 axis 0131 (001E): 0-65535 axis 0132 (001F): 0-255 axis 0133 (0020): 0-255 axis 0136 (0021): 0-255 axis 0135 (0022): 0-255 button 0901 (0000) button 0902 (0001) button 0903 (0002) button 0904 (0003) button 0905 (0004) button 0906 (0005) button 0907 (0006) button 0908 (0007) button 0909 (0008) button 090A (0009) button 090B (000A) button 090C (000B) button 090D (000C) button 090E (000D) button 090F (000E) button 0910 (000F) button 0911 (0010) button 0912 (0011) button 0913 (0012) button 0914 (0013) button 0915 (0014) button 0916 (0015) button 0917 (0016) button 0918 (0017) button 0919 (0018) button 091A (0019) button 091B (001A) button 091C (001B) just one HID connected TFXplorer by Pjotr Krycztij 2013-10-22 00:13 special thanks to: mikew DrKevDog Home Fries thanks to Benjamin Haisch (RA decompression code) ... and the COMBATSIM.COM community did1st.dat not opened; no patches will be considered did.dat not opened; loading extracted files file 3\BALL_3.3 not found
KrycztijI guess I’ll put a reminder in the bottom-left too (like I did for F5); that should make it easier.
I suppose you need to update the first thread here when TFXplorer Oct build is released to included the changes?
DrKevDogThe important thing is that with this implemented in TFXplorer, there is no limit to the custom skies we can build.
Bad news: I am not yet parsing lev\redXXXX.txt yet. That means cloud-layers and fixed sky flag have to be hard-coded into my TFXplorer right now. I’ll write a parser soon (going to need your help for this), but please understand that this will be after the stable version / source code release I was scheduling for this week …
Nontheless, you can check individual files (like your modified newhoriz.3) with 3View (if texture names do not exceed eight characters). I have uploaded the current build with 512×256 and 512×512 support here: https://app.box.com/s/q67hdm3b8ij06kopc8yp
@Wombat: Thank you! The line axis 0131 (001E): 0-65535
indicates for me that your joystick has not been calibrated (no center position is found). 1.3 g also indicates just a few percent off-center. If it’s not too annoying to you, just leave it this way 🙂
Wombat1940I suppose you need to update the first thread here when TFXplorer Oct build is released to included the changes?
Yes, absolutely. I will release when there are no more doubts that the current version runs stable, and the thread will then be adjusted as well.
By the way, a new build is up: https://app.box.com/s/9pvhy7a03t8c2f1h0keq
It would be nice if you had a quick look. Changes of interest are
AGP on/offto
version Glide/Direct3D
KrycztijBad news: I am not yet parsing lev\redXXXX.txt yet. That means cloud-layers and fixed sky flag have to be hard-coded into my TFXplorer right now. I’ll write a parser soon (going to need your help for this), but please understand that this will be after the stable version / source code release I was scheduling for this week …
Nontheless, you can check individual files (like your modified newhoriz.3) with 3View (if texture names do not exceed eight characters). I have uploaded the current build with 512×256 and 512×512 support here: https://app.box.com/s/q67hdm3b8ij06kopc8yp
lev\redXXXX.txt are are very important and I will review my notes in order to contribute. In the mean time, I will continue working with the base TAW so thanks for the updated 3view 👍
Krycztij@Wombat: Thank you! The line
axis 0131 (001E): 0-65535
indicates for me that your joystick has not been calibrated (no center position is found). 1.3 g also indicates just a few percent off-center. If it’s not too annoying to you, just leave it this way 🙂
Ye … I actually calibrated immediately after I posted thinking the problem could be my end. There is some play (loose movement) in the Cougar stick (its old) and accurate center calibration now difficult. I’m working on it, but its better than before I did tests for you. Many years ago now, I was studying 1st year uni. Physics. Our first prac. class centered around dangers in interpreting experiment results. Just amazing. One has to be so careful.
KrycztijYes, absolutely. I will release when there are no more doubts that the current version runs stable, and the thread will then be adjusted as well.
By the way, a new build is up: https://app.box.com/s/9pvhy7a03t8c2f1h0keq
It would be nice if you had a quick look. Changes of interest are
- added compass in EF2000 mode
- enabled screenshots in EF2000 mode
- renamed
AGP on/offtoversion Glide/Direct3D
Downloading now. All my testing has been on my PC (XP) with TAW2.0. I don’t have EF2000 on my PC but its on my Notebook running with Win8. I’ll give it a go on my PC first and then try it with EF2000 on the Notebook.
Krycztij@Wombat: Thank you! The line
axis 0131 (001E): 0-65535
indicates for me that your joystick has not been calibrated (no center position is found). 1.3 g also indicates just a few percent off-center. If it’s not too annoying to you, just leave it this way 🙂
Desktop PC (full spec. in my signature) with XP and TAW2.0 TFXplorer version 2013-10-23
Cougar ’Stick maintaining 140% throttle.: It starts at 0.9g but immediately jumps to 1.7g. Steadily climb to 40 000ft and then g slowly reduces to .4g with me diving at the ground. (At no time have touched the ’stick.) Now I do … naturally … and level her off … and let go of the ’stick … it flies level (almost) at 0.9g. Now I can fly around no trouble. 👍 I’ve just done a check flying in TAW2.0 with same Cougar settings. It pulls 1.1g (hands free, 140% throttle) and steadily climbs … naturally. 😉
recognized HID "C-Media Electronics Inc. USB PnP Audio Device" invalid HID: could not retrieve its button classes recognized HID "Thrustmaster HOTAS Cougar Joystick" axis 0139 (001C): 0-7 axis 0130 (001D): 0-65535 axis 0131 (001E): 0-65535 axis 0132 (001F): 0-255 axis 0133 (0020): 0-255 axis 0136 (0021): 0-255 axis 0135 (0022): 0-255 button 0901 (0000) button 0902 (0001) button 0903 (0002) button 0904 (0003) button 0905 (0004) button 0906 (0005) button 0907 (0006) button 0908 (0007) button 0909 (0008) button 090A (0009) button 090B (000A) button 090C (000B) button 090D (000C) button 090E (000D) button 090F (000E) button 0910 (000F) button 0911 (0010) button 0912 (0011) button 0913 (0012) button 0914 (0013) button 0915 (0014) button 0916 (0015) button 0917 (0016) button 0918 (0017) button 0919 (0018) button 091A (0019) button 091B (001A) button 091C (001B) just one HID connected TFXplorer by Pjotr Krycztij 2013-10-23 12:15 special thanks to: mikew DrKevDog Home Fries thanks to Benjamin Haisch (RA decompression code) ... and the COMBATSIM.COM community did1st.dat not opened; no patches will be considered did.dat not opened; loading extracted files file 3\BALL_3.3 not found
KrycztijYes, absolutely. I will release when there are no more doubts that the current version runs stable, and the thread will then be adjusted as well.
By the way, a new build is up: https://app.box.com/s/9pvhy7a03t8c2f1h0keq
It would be nice if you had a quick look. Changes of interest are
- added compass in EF2000 mode
- enabled screenshots in EF2000 mode
- renamed
AGP on/offtoversion Glide/Direct3D
Usage:
In-game:
You can switch to explorer mode via SHIFT+Q; X:
Now for the Notebook and Win8/EF2000 …
Wombat1940Desktop PC (full spec. in my signature) with XP and TAW2.0 TFXplorer version 2013-10-23
Cougar ’Stick maintaining 140% throttle.: It starts at 0.9g but immediately jumps to 1.7g. Steadily climb to 40 000ft and then g slowly reduces to .4g with me diving at the ground. (At no time have touched the ’stick.) Now I do … naturally … and level her off … and let go of the ’stick … it flies level (almost) at 0.9g. Now I can fly around no trouble. 👍 I’ve just done a check flying in TAW2.0 with same Cougar settings. It pulls 1.1g (hands free, 140% throttle) and steadily climbs … naturally. 😉
Glad to hear! By the way: I put you on the "special thanks" list for the next build …
Wombat1940
- F5 brings you back to in-game mode. OK but if you left it PAUSED it returns UNPAUSED
This was planned as a feature – you already told the program to fly by pressing F5; no need to repeat yourself by unpausing it. But if that’s confusing, I can change it 🙂
KrycztijBy the way: I put you on the "special thanks" list for the next build …
Thank you. 👍 That’s very nice, but really my input is very minimal. I just don’t want you all to stop doing what you’re doing … 😉 It such good stuff with super outcomes …
KrycztijThis was planned as a feature – you already told the program to fly by pressing F5; no need to repeat yourself by unpausing it. But if that’s confusing, I can change it 🙂
Hmmmmmm … IMHO, F5 should just returns you to game mode … in the same mode you left it. Why: I might have left game mode in PAUSE in a perfect position to take a screenshot, etc, and I need to come back to game mode to tweak my position slightly, only to find I’m bouncing off the ground or something. This an actual case and similar to that tutorial here which I’m re-doing and beta testing . Except I wouldn’t be bouncing off the ground, I’d be making a hole in it. 😄 My 2c worth. 😉
Krycztij
- renamed
AGP on/offtoversion Glide/Direct3D
Sorry missed this before: works fine, also like the note about F2 (and F5). Back to Win8 and EF2000 … please stand by …
Is this the place to make comments about TFXplorer or would it be better if I went the its own specific thread and out of the hair of 3view
?
Wombat1940Is this the place to make comments about TFXplorer or would it be better if I went the its own specific thread and out of the hair of
3view?
You’re right, better proceed here: http://community.combatsim.com/topic/29572-tfx-explorer/page-29#entry5157090
Deleted
Just a little house cleaning here, was having a problem with my .3 file counts using the clean
directories. The following files are erroneous:
Thank you.
mi401.3 is the last file in did.dat and for some reason the decompressor stops immediately when my Python script ends.
If I ever get around to making a better script, I’ll take this into account.
The MI401.3 is minor issue, the script does a good job of what you programmed it to do. What I could use immediately is the most updated list of file names you were keeping, how can I get that from you?