laurence dougal myers

Potential issue in ScummSpeaks and other GUI tools for Win32
┄ 2013-01-30 ┄

I've received an error report from a user of ScummSpeaks. Attempting to start the Win32 binaries in Windows XP failed, and the user received this message in the log file:

Traceback (most recent call last):
  File "scummspeaks.py", line 18, in <module>
  File "zipextimporter.pyc", line 82, in load_module
  File "ui\app.pyc", line 2, in <module>
  File "zipextimporter.pyc", line 82, in load_module
  File "wx\__init__.pyc", line 45, in <module>
  File "zipextimporter.pyc", line 82, in load_module
  File "wx\_core.pyc", line 4, in <module>
  File "zipextimporter.pyc", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading wx\_core_.pyd
This error is caused by the missing file "msvcp71.dll". This file comes from the Microsoft Visual C++ 2003 (7.1) runtime. You will need to find and install that runtime, possibly by installing the .NET 1.1 framework runtime, or finding the DLL and copying it into the application directory.

I will probably need to repackage all GUI application Win32 binaries to include this DLL.

Running from the source code will not have this issue.

DRO Trimmer v4 r1
┄ 2012-09-02 ┄

DRO Trimmer v4 r1 has been released.

  • Documentation now available, online via BitBucket, and distributed with the binary package as a static HTML file.
  • Added "Undo" and "Redo" menu items and shortcuts. You can now undo/redo any changes to the DRO file.
  • Added "Goto" dialog, for instantly going to a specified position.
  • Added "Loop Analysis" feature, which uses multiple analysis methods to look for portions of data that could indicate a loop point. Refer to the documentation for details.
  • Added specific register usage information. (Takes a little while to process)
  • Added keyboard shortcuts for new menu items, and for going to the next and previous delay instruction. (Refer to the manual)
  • Added shortcuts and keyboard accelerators to menus. (Wraithverge)
  • DRO Info: No longer displays a warning popup. Edit functionality is disabled by default, and must be enabled via the configuration file ("drotrim.ini").
  • Find Register: Added ability search backwards.
  • Find Register: Layout adjustments. (Wraithverge)
  • Find Register: Changed "D-08" and "D-16" options for DRO v1 to "DLYS" and "DLYL" (matching DRO v2).
  • Main view: Added "Bank" column. The register column no longer displays a value like 0x100 to indicate the high bank.
  • Main view: "Description" column now displays specific register information. More general information is now contained in the "Description (all register options)" column.
  • Main view: Fixed issue where deleting a large amount of instructions would take a long time.
  • Main view: Changed "Reg" column to "Reg."
  • Main view: Added version number to the window title. (Wraithverge)
  • Main view: When deleting the last item in the list, select the new last item.
  • Main view: Fix some issues where items were not focused correctly after deleting an item, using "Find Register", and other functions.
  • dro_player: Fix "Ctrl-C" shortcut not killing the program (timer would stop updating but music would continue playing).
  • Added configuration item to load DRO Trimmer in a maxmimized window. (Wraithverge)
  • Updated the "About" and "Help" dialogs.
  • Rework the icon loading. Will now attempt to load an external icon file if run from the Python interpreter. win32api is no longer required for loading the icon in the executable.
  • Code restructure and refactoring.
  • License blurb added to dro2to1 source.
  • Updated to PyOPL 1.3
Python Source (66.69 KB)

Win32 Executable (5.5 MB)

BitBucket site (including online documentation)

DRO Trimmer v3 r7
┄ 2012-06-02 ┄

DRO Trimmer v3 r7 has been released.

  • Add configuration option to specify the "playback tail" length.
  • Add configuration option to specify the audio buffer size.
  • Add dro2to1 tool, converts DRO V2 files to the V1 format.
  • Fix issue #1 - pressing backspace/delete key in "Song Info" dialog deletes instructions.
  • Fix issue #2 - misspelling of "occurrence".
  • Fix issue #3 - Find Register status bar text references "line" instead of "position".
  • Mitigate issue #4 - search for "drotrim.ini" in the same location as the executable.
Python Source (31.02 KB)

Win32 Executable (5.46 MB)

DRO Trimmer v3 r6
┄ 2012-05-14 ┄

DRO Trimmer v3 r6 has been released.

  • Add keyboard shortcuts:
    • CTRL-F for Find Register
    • CTRL-I for DRO Info
    • CTRL-SHIFT-S for Save As
    • CTRL-S for Save
    • CTRL-O for Open DRO
    • CTRL-H for Help
    • Spacebar to start & stop music playback (from selected pos.)
  • Prevent multiple "Find Register" dialogs from opening. (Would cause unexpected behaviour)
  • Fix issue where using "Find Register" function would not deselect found occurrances (introduced in v3 r4).

Python Source (29.12 KB)

Win32 Executable (5.46 MB)

Permalinks for all applications
┄ 2012-05-14 ┄

I've set up permalinks for all applications, and make things a bit nicer to link to.

This link will display the list of all of my applications.
/apps/

Here are links for each application:

You can get an application's latest binaries or source code, by adding "bin" or "src" to the application's URL. For example, for DRO Trimmer: To get the latest release for a particular version, add the version number to the URL as well: /apps/drotrimmer/bin/3

To get a specific release, add the release number to the URL as well:
/apps/drotrimmer/bin/3/5

I'll try and incorporate these links in to the website proper, work out a better way to inter-link everything, and go through old blog posts to fix all the broken download links.

DRO Trimmer v3 r5
┄ 2012-05-12 ┄

DRO Trimmer v3 r5 has been released.

  • Added a new 'DRO Info' menu option, to view and edit some DRO info (like the hardware type, or the song length).
  • Added a button to play just the last 3 seconds (approx.) of the song.
  • Fixed standalone DRO player, which got broken in v3 r4.
  • Default width of the 'position' column decreased.

Python Source (28.95 KB)

Win32 Executable (5.46 MB)

DRO Trimmer now available on BitBucket
┄ 2012-05-11 ┄

I have set up a project for DRO Trimmer on BitBucket. This should make it easier for people to get the source code, may encourage forks & modifications, and also provides issue tracking and a wiki (which I'll eventually write to).

https://bitbucket.org/jestar_jokin/dro-trimmer/

(If you know GitHub, this is the same sort of thing, but it supports Mercurial version control, which suits me better.)

DRO Trimmer v3 r4
┄ 2012-05-11 ┄

DRO Trimmer v3 r4 has been released.

  • Add the ability to select multiple instructions at a time. Hold the 'control' or 'shift' key while clicking.
  • V2 files will be analyzed for initial delay instructions or calculated delay mismatch, the same as V1 files.
  • Internal changes around how analysis is done.
  • Fix bug where deleting instructions at the end of the list would not refresh the list display correctly.

Python Source (26.69 KB)

Win32 Executable (5.46 MB)

DRO Trimmer v3 r3
┄ 2012-05-06 ┄

DRO Trimmer v3 r3 has been released.

  • More accurate rendering method, should remove any timing inaccuracies at low sampling rates.
  • When seeker/player threads error, tell the DRO player to stop playing. (Should avoid infinite loop in standalone player when an error occurs)
  • In DRO player standalone mode, check if file exists before trying to play it.
  • Update to PyOPL 1.2

Python Source (26.55 KB)

Win32 Executable (5.46 MB)

DRO Trimmer v3 r2
┄ 2012-05-05 ┄

DRO Trimmer v3 r2 has been released.

  • Add ability to play DRO songs within DRO Trimmer
  • Add command-line executable "dro_player" to play songs
  • Audio setup is read from an external "drotrim.ini" file
  • Change "Line" column to "Pos."
  • Different register search range - only up to 0xFF (will find usage in both low and high banks)
  • For V2 files, display high/low bank status in the register (e.g. "0x105" for register 5 in the high bank)
  • Validate V2 codemap does not exceed 128 entries

Note that the DRO Player functionality is totally optional if you're running the Python files directly; DRO Trimmer will degrade gracefully if you are missing the PyOPL or PyAudio libraries, so you can still edit files as normal, you just won't be able to play them within DRO Trimmer.

The command-line "dro_player" tool can be used to play an DRO song, handy if you're on a PC without a different DRO player (like Winamp + AdPlug).

You need to have the Microsoft Visual C++ 2008 runtimes installed in order to run the Windows executable for DRO Trimmer v3 r2. This is due to switching to Python 2.7.

Thanks to Adam Nielsen (Malvineous) for documenting the DRO v2 format, writing PyOPL and updating it to add support for Dual OPL-2 and OPL-3, and answering my questions!

Python Source (26.24 KB)

Win32 Executable (5.46 MB)

EDIT 2012-05-05: download links fixed.