Skip to content

Releases: benstone/3DMMEx

Release v0.4.0

17 May 08:40

Choose a tag to compare

New Features

  • 64-bit Support
    • 3DMMEx now builds for x64! This has required a lot of changes to fix portability issues throughout the codebase.
    • 64-bit builds use 3DMM-BRender, a fork of the Argonaut BRender v1.1.2 source code with the x86 assembly language code replaced with portable C code. 32-bit builds use the original BRender static libraries by default, but this can be changed with the 3DMM_BRENDER_LIBRARY CMake option.
  • New keyboard shortcuts
    • Browsers (eg. choosing an actor/scene) and easels (eg. creating new 3D words) can be closed with the Escape key.
    • Browsers support the left and right arrow keys for scrolling.
    • The 3D Words easel supports the up and down arrow keys for scrolling the colour list.
    • You can skip McZee's introduction when opening the toolbox by pressing any key.

Changes

  • Portability improvements
    • Updated C++ standard to C++17.
    • Added static asserts to ensure that file format structures do not change in size when compiled for different platforms.
    • Refactored tag serialisation to use separate structures for tags on disk and in memory.
    • Removed multi-character constants to avoid undefined behaviour.
    • Replaced built-in integer types with standardised types from cstdint.
    • Fixed many compiler warnings when building with Clang.
  • Developer improvements
    • Debug builds now log the chunk tag/number and name of the current executing script.
    • Chunk names are no longer stripped from chunky files. This makes it easier to map a chunk tag/number to a script or UI element.
    • Added NatVis visualisers for some basic Kauai framework types. This makes some objects easier to inspect in the Visual Studio or WinDbg debuggers. For example, if you inspect an STN (string) object, you will now see the string value instead of a pointer to a character buffer.
    • Added Google Test for running unit tests. The Kauai framework included a basic test suite as part of the Frame Tester application. These tests have been ported to Google Test and now run as part of the build.
    • Added support for Hot Reload / Edit and Continue.
  • Removed keyboard repeat rate override

Bug fixes

  • Fixed a few bugs in reading registry keys. This caused an "I can't find the CD" error on some machines.

Contributors

  • Thanks to @mcayland for their excellent work on improving portability and getting 3DMM running on x64.
  • Thanks to @bjrkk for creating the 3DMM-BRender project, which we use for x64 builds.

Full Changelog: v0.3.0...v0.4.0

Release v0.3.0

20 Dec 12:54

Choose a tag to compare

New Features

  • Added an option for high-quality sound imports.
    • 3DMM downsamples all imported sounds to 11,025Hz 8-bit mono and recompresses them with an ADPCM codec. The conversion can be skipped using tools such as PyQ or 3DMM Pencil. This new option bypasses the conversion, meaning you no longer have to use an external program to import high quality sounds.
    • To enable this option, open the Product Information dialog box (press Ctrl-Shift-I) and choose "High quality sound import". You can then use the Sound Effects or Speech easel to import WAVE files without losing any quality.
  • Added an option for stereo sound playback.
    • 3DMM originally mixed all WAVE sounds at 22,050Hz 16-bit mono. This new option mixes sounds at 44,100Hz 16-bit stereo.
    • To enable stereo sound, open the Product Information dialog box and choose the "Stereo sound playback" option. You will also need to choose "Make these the default settings" and restart the program.
  • Added an option to reduce mouse jitter.
    • Sometimes actors will jump when dragged around the stage. When the cursor is approaching the edge of the screen, 3DMM moves the cursor to the center. The next time the mouse position is checked, 3DMM may get a stale mouse coordinate from the edge of the screen. The coordinate causes the mouse tracking code to calculate a large distance from the current position, which causes the selected object to jump. This seems to happen more frequently on fast machines that send lots of WM_MOUSEMOVE messages.
    • This new option flushes mouse move messages from the message queue after moving the cursor to reduce the chance of getting a stale coordinate. This option is enabled by default but can be disabled if it causes issues.

Changes

  • The Product Information dialog has been updated to add checkboxes for feature flags.

Bug fixes

  • Fixed a content caching bug that could cause some content to fail to load (eg. missing scene background music).
  • Fixed a graphics bug that caused garbled rendering when the "Better Speed" option was selected.

Full Changelog: v0.2.0...v0.3.0

Release v0.2.0

30 Nov 02:49

Choose a tag to compare

New Features

  • Added a registry setting to skip the startup sound.
    • Currently there is no UI to set this option. To skip the startup sound, set the StartupSound DWORD under HKCU\SOFTWARE\Microsoft\Microsoft Kids\3D Movie Maker to 0.
  • The release package now includes all sample movies and project movie templates from the original source code release.
  • Added Git version tag to the Product Information dialog box.

Changes

  • Added CMake option to enable/disable inline x86 assembly language code.
  • Added support for compiling with ClangCL.
  • Integrated AudioMan-Decomp sound mixer library.
  • Replaced inline x86 assembly language code in memory copy/fill functions with C standard library implementations.
  • Updated GitHub Actions to latest versions.
  • GitHub actions now builds the RelWithDebInfo configuration and builds a release package.

Bug fixes

  • Fixed the C implementations of the Kauai compression codecs to decode compressed blocks correctly.
  • Fixed incorrect size of REG_DWORD values stored in the registry.
  • Fixed a memory leak in the debug render screenshot generator.
  • Fixed const correctness issues in Kauai string/file functions.

Full Changelog: https://github.com/benstone/3DMMEx/commits/v0.2.0