Official Thimbleweed Park Forums

Delores: Meowlation

Quick question about macros, probably the SAY macro in particular.

If I replace the "$a:$b" part in the SAY macro with just some "string" then that’ll be the output. But if I supplant it with a function that returns "string" it doesn’t seem to work. I wonder if I might be missing something obvious?

That is, something like:

#macro SAY($a,$b) function_name($a, $b)

And the function along the lines of:

function function_name($a, $b) {
  // processing would go here ;-)
  return "string"

(Alternatively and more easily I could just write some Bash/Lua/Python/whatever to generate a translation. I was just curious about doing it in-engine.)

The issue is the SAY macro is digested at compile time, so it often doesn’t know about your function_name and even if you got it to work, it’s probably not what you want due to function_name being run once at compile time and won’t ever be run again.

What are you trying to do?

1 Like

Just to play around with it I wanted to make a quick meowlation.

The basic principle would be like this:

  1. So you have a sentence.
  2. Me mew meow m meeeooow.

The number of Es in longer words would be somewhat randomized, the rest hard-coded.

I could just generate that from the relevant files, but like I said I figured I’d try it in-engine as a little challenge. :slight_smile:

I would override the TR() function for that… You’d then have the benefit is adding your text to already translated text. If you only want to add it to text that is spoken, put it in _startSayline().

1 Like

Alright, my proof of concept is operational. I’ll post a patch/GH branch in a bit; I don’t actually have Git and such in Windows.

I wanted to ask why, but then the real question would have been “why not”.


Source at

I just tried to record a video showing it off, but the video didn’t turn out very well. I took my laptop into the bedroom because it’s nice and quiet, but I suppose only my desktop has the power to create properly smooth 60 fps recordings.

Giving up on the video idea for the moment; OBS Studio isn’t recording the game properly for some reason, but here’s a bunch of screens.


This is really great! :rofl:

Looks like an Alien Mindbender has modified his machine… :smiley:


Where did you end up intercepting the text?

For the moment I added a little line here as you suggested.

See the (currently two) commits and

1 Like


1 Like

Meow! :cat2:
Now you could make a generic talkie/meowie version!

So I just downloaded FMOD Studio Tool, and it doesn’t scale very nicely. Luckily you can force an integer scaling factor as detailed here. It’s reasonable enough at 2.

Recording the cats will be a bit more difficult, but first I suppose I should figure out if I can create a soundbank and load it.

Hm, the engine says “Can only load one bank (for now).” That’s unfortunate. Another obstacle is the apparently the version. I simply downloaded the most recent one (2.01.01).

Tomorrow I’ll try 2.0.3, like the DLL that comes with the game.


In the meantime, here’s a recording.

1 Like

Add them to the main bank. FMOD merges very well since it’s all just text.

Not sure why I never added the ability to load more than 1 bank, I guess the need never came up.


Oh, I’d overlooked the Source/FMODSound folder! :man_facepalming:

Edit: good news, playing audio works. The bigger problem, coming up with audio that makes some kind of sense…

1 Like

I seriously think you should add a cat translation for every new game of yours, from this moment on.


Settings screenshot

I hadn’t noticed before, but the options were broken due to a lack of string replacement. I added %[ds]| at the front of the regex to fix that.

Meowlation Demo Video

And here’s a video illustrating what the talkie version could sound like, at least after I’ve done more cleanup/editing of recordings in Audacity.

How to record your game

With regard to the recording itself, I noticed that I could select a “Windows 10” recording setting. That solved the issue.


Official Thimbleweed Park Forums powered by Discourse.