Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Krycztij last won the day on February 5 2018

Krycztij had the most liked content!

Community Reputation

3 Neutral

About Krycztij

  • Rank
    Brig. General
  • Birthday 09/05/1981

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Lean Viewer doesn’t support lines That’s mostly because they are used so rarely in modern rendering that I didn’t bother to implement them yet. (Lines scale very bad with distance. From close, they look very thin relative to other geometry. From far away, they look very thick. Nothing that’s particularly interesting for modders.) I should at least have added a warning. Sorry for the confusion!
  2. Not much progress, just a few UI tweaks: http://krishty.com/taw/tfxplorer/2020-08-08/TFXplorer.7z Changes: more Windows 10 look (fewer margins, new background colors, nuances in text color, …) error messages on controller settings page now support word wrapping controller settings page now uses gray text for malfunctioning controllers added version label to main page fixed crash with no HIDs connected fixed smooth scrolling depending on CPU speed fixed scrolling speed system setting being ignored fixed Windows 7 text glitches on splash screen fixed memory leaks
  3. I hear you. Took me weeks to disable all that nonsense, and just a few minutes ago I wrote a bug report to Visual Studio for spinning up every single hard disk drive in my computer to do a free-space analysis for a complicated rocket science operation known as “stop the debugger”. Try saving this with .reg extension, then double-click to add to the registry. Stopped the forced updates for me, but I reserve the first Wednesday each month (the day after patch day) to trigger a manual install, so maybe it just stops them if you’re not too far behind: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU] "NoAutoUpdate"=dword:1 "AUOptions"=dword:2 ; disable downloads from the local network [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config] "DODownloadMode"=dword:0
  4. Wow. Just something like gas and brake combining into one axis (pretty common for pedals I suppose)? Or actual unrelated axes moving together?
  5. Here’s a new build with an updated controllers settings screen: http://krishty.com/taw/tfxplorer/2020-08-02/TFXplorer.7z Recording of how it should work: Changelog: now supporting TAB key for menu navigation improved resizing performance fixed some controls not displaying on small screens fixed glitches scrolling Win32 dialogs fixed vertical alignment of text labels fixed flickering during resizing of menus Controller settings page: now scrollable improved HID error messages major performance improvements now supporting 32 buttons instead of 12 now using arrows instead of axes for hat switches now using larger text for button states fixed invalid values on first visit fixed memory leaks I guess I’ll start with the mapping code soon, i.e. assigning arbitrary keys/axes/buttons to individual in-game functions.
  6. I don’t find it so stupid after all. It may not work for Luxor and other tiles with roads/rivers on it, but it will probably work for 80% of tiles we have out there …
  7. Very weird indeed. What you call physical and symbol systems is actually called scan codes – scan code 27 is always the key left of the return key; ] in US layout and + in my layout virtual key codes – virtual key code 89 always corresponds to the key labelled Y, no matter the layout. Like you suspected, TFXplorer uses scan codes almost exclusively because it would drive European users crazy having to find and press < and > for yawing. I’ve just checked and both engine start keys are defined similarly – just differing in a +1 for the scan code actually: We should keep an eye on this. When I finally implement the control remapping page, you should be able to re-assign the command by pressing an arbitrary key. I’m very keen on finding out what it’ll show when you press that right angle bracket! Edit: Again, thanks for testing with Wine. Although Wine may cause a few errors by itself, it still teaches me a lesson in striving for robustness and debuggability …
  8. That is some fantastic news! Wine’s behavior is interesting. It may still be an error on my end, rooted in how the USB HID standard treats data indices. We will see when my axis/button remapping dialog is finished Thanks again for testing! I hope we will get to interesting new features soon.
  9. I’ve found a race condition with the multithreading in the new splash screen. The key mapping would sometimes be initialized before all joysticks were processed, therefore mapping the controls to the keyboard instead of the joysticks. Here’s a new build with a fix; please give it a try: http://krishty.com/taw/tfxplorer/2020-07-27/TFXplorer.7z It also comes with a *very* rough controller settings page. Changes: added new splash screen added controller settings page removed console window all TFX shape notifications are redirected to the loading screen removed many Visual C++ runtime dependencies improved loading screen performance improved colors on Windows XP and Windows 7 with Classic theme GUI uses accent color more often fixed Windows 7 crashes fixed joystick mapping race condition fixed USB HID names if manufacturer string is not provided fixed initialization errors due to COM initialization with worker threads fixed game stuttering when using up/down arrow keys fixed crashes closing TFXplorer without a scenario loaded fixed GUI not adapting accent color fixed GUI not adjusting to DPI fixed GUI button hover color fixed focus rectangle on loading screen fixed mouse activation not taking place properly on text labels
  10. Indeed, such lockups shouldn’t normally happen. But I suppose if you stack enough complexity, programs become unpredictable. Much like us emerging from a veeeery complex wave function That’s also the reason I implement the Raw Input error handling even though your Wine isn’t my target audience. If I have learnt one thing from my other projects, it’s that every error path will eventually be reached by someone somewhere, and a proper warning/error message can save days of remote diagnosis.
  11. I’m overhauling the input handling and adding an option page with test facilities and debug information. We’ll find out what goes wrong, but (like every time) it’s a little bigger than I anticipated in 2012
  12. Speaking for the F-22: The F-22 flight control system distributes fuel to keep the center of gravity close to the center of the aircraft, especially with regard to payload. This is because curve flight relies little on the control surfaces but heavily on the center of mass differing from the centers of lift and drag. Speaking for TAW: IIRC, TAW assumes a fixed center of gravity for the F-22. There is a little bit of code to simulate imbalances, but it’s never used and it’s missing recomputation of the moment of inertia. TFXplorer does compute center of gravity and moment of inertia with respect to payload, so that overloading one wing will change flight characteristics. But it’s lacking a weapon selection screen (apart from more substantial things, like gameplay) so that’s of little use. Here’s an overloaded left wing with the plane leaning to the left (got not in-flight footage right now):
  13. Geo::Matrix4x3_float_reg shapeToWorld; // First, rotate the shape. Most of TFX’s shapes (especially those in landscapes) are not rotated at all, so a few // hundred cycles per shape can be saved here. if(0 == toObject->roll && 0 == toObject->yaw && 0 == toObject->pitch) { shapeToWorld = Geo::Matrix4x3_float::identity(); } else { // Angles are given as normalized integers in the range of [0, 65535]. “rollPitchYaw()” expects its angles as // normalized integers in the range of [0, 2³² - 1], which equals a multiplication by 65536, which equals a left- // -shift by 16 bits. Geo::Angle4B const roll = { UInt4B(toObject->roll << 16u) }; Geo::Angle4B const pitch = { UInt4B(toObject->pitch << 16u) }; Geo::Angle4B const yaw = { 0 - UInt4B(toObject->yaw << 16u) }; shapeToWorld = Geo::Matrix4x3_float::rollPitchYaw(roll, pitch, yaw, Geo::XYZ_float::zero()); } // Then, scale the shape. Most of TFX’s shapes are not scaled at all (usually, the 0030 instructions in the // shapes take care of correct scaling), so a few cycles can be saved here. if(1 != toObject->scale) { auto const scaleFactor = (0 < toObject->scale) ? float(toObject->scale) : -1.0f / float(toObject->scale); shapeToWorld.c0 *= loadx4(scaleFactor); shapeToWorld.c1 *= loadx4(scaleFactor); shapeToWorld.c2 *= loadx4(scaleFactor); } // Translate the shape to the destined position. shapeToWorld.c3 = asFloats(asSInt4B(loadx4(&toObject->xyz.x))); store(toObject->shapeToWorld, shapeToWorld); where roll/pitch/yaw is // cos(r) -sin(r) 0 1 0 0 cos(p) 0 sin(p) // sin(r) cos(r) 0 × 0 cos(y) -sin(y) × 0 1 0 // 0 0 1 0 sin(y) cos(y) -sin(p) 0 cos(p) I tried using TFXplorer, but without place names I have trouble finding the tile
  14. Aw no. Gotta check this out myself some time.
  15. The old splash screen is gone; long live the new splash screen. (Splash screen slowed down for the video; it’s loaded in a split second actually.) You only have to click Accept if there are any errors; it forwards right to the main menu otherwise. The DirectX runtime dialog is gone. The one-second delay after starting TFXplorer is gone. Single-threaded initialization is gone. Obscure console output is gone. The error handling still needs refinement, but this had to be done anyway. I’m just glad we’re getting closer to a GUI which could actually be shipped with a game … and the startup has become real quick.
  • Create New...