2019-05-27 19:03:02

Hi all,

I've updated the SoniFight Day of the Tentacle config to speak voice options. Previously I could only find pointers to numerical values for which speech option was highlighted so SoniFight would say things like "Speech option 0", "Speech option 1" when talking to people. However, I think I've now found suitable pointer chains to announce the actual text that the character will say, for example option 0 might be "Are you cold?", option 1 "Where'd you get that great hat?", option 2 "Well, see you later".

I haven't tested it beyond a few reboots and half a dozen different in-game conversations, but it seems to work pretty well. Also, I haven't updated SoniFight with a new release including this config quite yet (but one is in the pipe, 5 by 5).

If you'd like to give the updated Day of the Tentacle config a shot then you can do so by:

1.) Creating a new folder in your SoniFight/bin/x86/configs/ folder called "DotTR_test" or something, then
2.) Downloading the following config.xml file (Right-click and save) into it: config.xml.

If you give it a crack then please let me know how you get on.

Cheers!

2019-05-27 19:26:38

Oh wow. I didn't realize they remastered this. I may have to pick it up and give it a spin.

Much less active on this forum than in the past.

Check out my live streams: http://lerven.me
follow me on Twitter: http://twitter.com/liamerven

2019-05-28 00:24:10

Huh. I didn't even know this was a thing. Interesting.

Take care, it's a desert out there.

2019-05-28 05:17:01

Wow this looks neat!  I have Ultra SF4 and MK9 on steam, looks easy to run, just select it from config list, press run config button and start game?  In looking at the XML for MK, it appears some menu options are read out?  Also quite a stupid question, with beneath a steel sky and day of the tentacle, how does one control the games if they are mouse controlled?  Move the mouse around until something is spoken?
Thanks, very excited to try this!

2019-05-28 06:08:21

I'm really interested in using this to help me with my project to make the X3 Series playable for the blind. It has a metric ton of  menus which are just itching to be read out.

Of course, Day of the Tentacle is a game I've certainly heard of, and I look forward to trying this sometime soon.

2019-05-28 07:44:21

BlindJay - yeah, that's pretty much it! And yes, all the main menu options are read out in the MK config, and there are announcements when you or your opponents health is low, when the round timer is half way or close to running out etc.

To play DotT or Beneath a Steel Sky you can move the mouse around and as the mouse cursor is on top of an object, like a door or a person or whatever, it will be announced. For DotT you can use a controller to move the mouse cursor and it will 'snap' to objects as you push different directions, however there are some scenes where you have to move your character to the sides of the screen and unfortunately this involves clicking on a blank space. With the help of a walkthrough you could likely find out which rooms / areas need this though because the walkthrough will likely say things like "Move to the right and go up the stairs", so moving to the right will not be announced ('blank space') but when the screen scrolls across to your new location the 'stairs' object will be visible and will be announced on hover because it's something that you can interact with.

zkline - I've never played the X3 series, but if the menu text becomes highlighted when it is hovered over then the chances are good that the game contains a memory address with the text of the currently highlighted option which can be found and announced when the text at this address changes.

Alternatively, if the text can't be found in memory on highlight sometimes there's a numerical value that can be found that uniquely identifies that menu option, and this can be matched and announced. For example, if there was a menu option that was "Deploy landing gear" (just an example, I don't know the game!) and this menu option always corresponded to some value in memory being 123, then that would be a suitable candidate to be able to announce "Deploy landing gear" when that option was highlighted.

2019-05-28 14:09:23

I wish I understood all the memory address stuff. The Phoenix Right Trilogy is just itching for this treatment.

Much less active on this forum than in the past.

Check out my live streams: http://lerven.me
follow me on Twitter: http://twitter.com/liamerven

2019-05-29 10:22:17

I really like the project, but I simply gave up on understanding how the memory addresses works. I put a lot of work into getting Doom 95 to work, but never managed to make any progress at all. sad

Best regards SLJ.
Feel free to contact me privately if you have something in mind. If you do so, then please send me a mail instead of using the private message on the forum, since I don't check those very often.
Facebook: https://facebook.com/sorenjensen1988
Twitter: https://twitter.com/soerenjensen

2019-05-29 11:10:12

@Liam - I had a quick look at Phoenix Wright running in the DesMume Nintendo DS emulator today and couldn't even find the on-screen text! I have a feeling it's stored in memory as references to character bitmaps or something rather than plain text (I could be wrong though, it's just a hunch). You're spot on through - I think Phoenix Wright would probably be a terrific fit for SoniFight as it's so heavily text based and relies on small numbers of options to drive each case.

@SLJ - Sorry to hear you had a tough time of it. What kind of values of interest were you looking to find in Doom 95? Perhaps I can help.

2019-05-30 00:24:11

Not surprised as it's a visual novel so I doubt if text is displayed directly on screen.

Much less active on this forum than in the past.

Check out my live streams: http://lerven.me
follow me on Twitter: http://twitter.com/liamerven

2019-05-30 02:04:21

Hi.
@R3dux, maybe a bit off topic here, but a game that might be worth looking into with sonified would be x3, albian prelude, you possibly saw the topic here in new releases.

The game is heavily menu based, so might be worth a look into to get more players aboard.

Greetings Moritz.

Hail the unholy church of Satan, go share it's greatness.

2019-05-30 02:37:09

Would you actually need to get every address of everything you want to be spoken or are menus together in one adress? with x3, there are quite a lot of options and menus, and when I say a lot, I mean a lot.
for example, when I am on the galaxy map, would I need to find the adresses of all 200 sectors to tell the player which one he has selected?

Greetings Moritz.

Hail the unholy church of Satan, go share it's greatness.

2019-05-30 03:56:46

Moritz,

I'm investigating the use of SoniFight with X3, and will keep everyone posted if I manage to produce anything useable. smile

FOr now, I also bought a copy of Day of the TEntacle and am struggling to make some progress with it. I wasn't able to get anything out of the initial screens, but hit enter a couple times and seem to have started a new game by happenstance. I Wonder how much of my problems have to do with the fact I'm using a trackpad instead of a proper mouse? At any rate, I DID get some useful spoken feedback but was still left a little confused. I have to read the game manual, clearly. smile

2019-05-30 04:30:11

As an update, I'll just note that there doesn't appear to be a manual provided with the re-mastered version. I'll have to poke around and see how far I can get.

2019-05-30 04:48:02

@r3Dux Would there possibly be a way to use or for someone to easily reconfigure the killer instinct config to work for the definitive version on steam?  If it's a lot of trouble I understand but steam version sometimes goes on sale for $10 USD instead of $40 USD on microsoft store.
On another note, I would be more than happy to eventually donate to or purchase any configs especially for fighting games on steam and or pc, although steam is where all the fighters seem to be sold these days.  All of the menus don't even have to speak, for me, it would be enough to get to the training/practice modes, adjust difficulty against the CPU and maybe even speech on the character select screen.
Thanks so much again for your great work.

2019-05-30 07:46:03

@simba - SoniFight works using what I've called watches and triggers, where you can think of a watch as a memory address (although really it's the instructions to get to a memory address) and a trigger is a matching criteria, like is the value at this memory address 123, if so then say something.

It's likely that in x3's galaxy map there is a single memory address that holds the currently selected sector as some kind of numerical value (so in SoniFight terms that means we need 1 watch) and if there are 200 distinct values that may be at that memory address then we'll need 200 triggers. So we might have a trigger that checks if the value is 0, and if so then we might say "Terran system", then another trigger to check if the value is 1, and if so we might say "Magellan system" and so on.

Creating the triggers is the easy part, it's just a bit of donkey work - it's finding the pointer chains for watches that's a bit more of an involved process.

@zkline - The day of the tentacle config should announce things in the main menu (the one you get to when you hit escape) so it should say things like "New game" / "Save game" / "Load game" etc. I'll go back and check it soon but probably won't get a chance to get to it until next week. If it's not behaving as expected I'll see what I can do to fix it up.

@BlindJay - In SoniFight only the top-level menu of Killer Instinct is sonified unfortunately so you're not really missing much (and this was a bit of a proof-of-concept for me because KI is a 64-bit process so SoniFight had to be modified to work in a 64-bit manner).

KI is a bit of a dog to work with because it has internal obfuscation of data. To make it harder for people to cheat, the game internally moves data about every few seconds - which makes life difficult when you want to keep track of values as you might imagine. I've seen this catered for though, so someone with a strong knowledge of using interactive disassemblers would be able to find the address of the redirection code and use it to construct a pointer chain that tracks these changes, but unfortunately that person is not me!

The problem with requests for configs for games, even if it's just simple menu stuff, is that if I don't own the game then I can't even take a look at it to guage feasability! In terms of fighting games Street Fighter 4, Mortal Kombat 9 and BlazBlue Continuum Shift Extend currently have working configs though, so there are a few options.

Cheers!

2019-05-30 08:59:30

@r3dux: I tried to get the following to work in Doom95:
1. Say the current health when pressing a key.
2. Say how many bullets left in the weapon when pressing a key.
3. Read the pause menu in the game.
4. Say when you pick up a health pack.
I couldn't get any of that to work. Not even the health. I also tried to get the health spoken as soon as you get hit but no luck at all.
I spend more than 5 hours, trying to find the right values and check which ones changes when, for example loosing health or shooting a weapon, but I didn't managed to get anything to work at all.
I don't know if it's just freaking difficult to find the right values in this game, or if it's just me who don't get how it works.

Best regards SLJ.
Feel free to contact me privately if you have something in mind. If you do so, then please send me a mail instead of using the private message on the forum, since I don't check those very often.
Facebook: https://facebook.com/sorenjensen1988
Twitter: https://twitter.com/soerenjensen

2019-05-30 09:12:10

Hi
I'm very interested by day of the tentacle. Where can I buy this game? In steam??
And I'am in France, it's work ??

2019-05-30 09:51:36

@SLJ - I'll take a look at Doom 95 and see what I can find.

@gamer95440 - Yes, you can buy Day of the Tentacle Remastered on Steam - and it has to be the Steam version because that's the version I used to develop the config. I just tried it out after setting the the game language to French (right-click on game in steam, choose properties, languages tab, and choose language from drop-down) - however nothing was actually in French, it was all still in English! However, this is likely to be because my operating system is configured for English and it's using that setting.

Also, I noticed that the game options screen elements aren't being read out anymore - things like "New Game", "Load Game", "Save Game" etc. Not sure why this is, but I'll look into it and fix it up shortly. I probably won't have a chance to get to it until next week though.

2019-05-30 18:52:00

If anyone could look into snatcher for the sega cd, that would be amazing. It's a menu based game made by hideo kojima, the creator of the metal gear series.

Take care, it's a desert out there.

2019-05-30 21:19:20

Hi.

Guh ok, I read through the manual of sonifight and in General, I know what I am supposed to do, but here is the thing I can't rap my head around.
i understand that for example for a fighting game clock, you would take the value of the clock, so the seconds it still has before the round is over.

How would you go about detecting options in a given menu? Would I start with searching for a 0 as an address when I use Cheat engine when I want to see the first option in the game or how would you go about that?

Greetings Moritz.

Hail the unholy church of Satan, go share it's greatness.

2019-05-31 01:37:15

Hi Simba,

Okay this is a bit of a long one, but I'll do my best to explain.

For menus and any other options that you don't know the initial value of you have to use some Sherlock Holmes style deduction.

In Cheat Engine, just like you can choose to search for exact values you can also choose to search for an unknown initial value - so in your game you might highlight / have as the selected item the very first menu option, and then in cheat engine you can search for 'unknown initial value' and click the New Scan button - this gives you the list of all values in the memory of the process.

Next, you would move the game's highlighted menu option to the next option down (being careful not to change any other state of the game - that is, only change the highlighted menu option, don't push any other buttons or anything) and then back in cheat engine you would change the matching criteria from Unknown initial value to Increased by and then enter the value 1 in the text input and click Next Scan this time (rather than clicking New Scan like you did initially).

As you might imagine, this will go through the massive list of values (i.e. the value at each and every memory location) and it will discard all values in the list that haven't increased by 1, leaving only the values in the list that have. This means the list is now significantly smaller.

You don't have to JUST go to the next item then scan for values that have increased by 1, you could go ahead 3 menu items then scan for values that have increased by 3, or you could go upwards 2 items in the game menu then scan for values that have decreased by 2 (change the drop down from "increased by" to "decreased by"). You can even go down a few menu items then scan for "increased", or up a few items then scan for "decreased", just be careful you don't wrap around on the menu from the top to the bottom or this will screw up your results.

Repeat this step highlighting the next menu option in the game then filtering to only values that have gone up by 1 in CheatEngine and it will narrow down the list each time you do it - you keep doing this until you only have a few values remaining (ideally just one - but often there are a few addresses tracking the same data). One of these few remaining memory addresses can then be double-clicked to place them into the lower 'list of memory addresses' area, where you can right-click on the address and scan for pointers to that address.

Assuming you find some pointers to that address, you then close the game, re-open it, find the menu address again using unknown initial scan followed by a series of narrowing-down scans like we've just discussed, and then you FILTER the list of pointers you previously found to contain ONLY the pointers that now point to the NEW address!

You may need to do this pointer filtering a few times to get from what can be millions of potential pointer chains to just a few.

When they've been filtered down to just one, or maybe up to a dozen, typically any one of them that relates to the game process exe (some pointers might be relative to DLLs - we only want one's relative to the game executable) can be used in SoniFight.

To get the pointer details, double click one of the remaining results in the pointer list, then when you right click on it to check its properties it will have stuff like, for example, "x3.exe+3fc801" then above that might be "2fc" then above that maybe "55a". This would make the entire pointer chain for use in SoniFight those values comma separated, so: "3fc801, 2fc, 55a". This is obviously just an example of a pointer chain, not an actual pointer chain that does any thing in x3.

Hope this helps.

There are a couple of other SoniFight threads on the forums here, so if you have further questions it might be best going through and reading some of those as most questions will likely have already been answered, so rather than me answering them again here you could use what I've previously written.

Cheers!

2019-05-31 07:50:23

@r3dux: Thank you for taking your time to looking at Doom95. I of course don't expect you to put a lot of work into the game, it would be amazing to make this game as accessible as possible. I wish I could do it though. smile

Best regards SLJ.
Feel free to contact me privately if you have something in mind. If you do so, then please send me a mail instead of using the private message on the forum, since I don't check those very often.
Facebook: https://facebook.com/sorenjensen1988
Twitter: https://twitter.com/soerenjensen

2019-05-31 10:04:40 (edited by r3dux 2019-05-31 10:16:38)

@SLJ - No probs! I did have a quick look last night, but Doom 95 is so incredibly old (in software terms) that I don't believe it's the right choice of Doom client to be making a config for. I did a little research and found a Doom client called ZDoom that I think is probably going to give us the best results.

Here's some information about ZDoom (it's the 'about' page) zdoom.org | about.

But, ZDoom comes in 3 'flavours' - and we'll need to pick one carefully. Each of these flavours can be found at the following URL:

ZDoom Downloads

Flavour 1 - GZDoom

GZDoom is the latest and greatest version of the client and sports 'advanced hardware (OpenGL) and enhanced software rendering capabilities'. The latest release of GZDoom at the time of writing is v4.1.2 released on 2019-05-14 (i.e. only 17 days ago!)

Flavour 2 - QZDoom

QZDoom is a testbed for new features, we probably don't want this.

Flavour 3 - ZDoom

ZDoom is the parent, legacy code-base that was discontinued, with a final version of v2.8.1 released on 2016-02-21 (so a little over 3 years ago).

Here's where we have to make our decision between GZDoom and ZDoom.

If we use ZDoom, then the ZDoom client is set in stone and will never move or be updated. This way, any SoniFight config that targets ZDoom will always work because there are no client updates. So that's the argument for ZDoom.

However, the argument could also be made to target GZDoom (the 'latest and greatest') - but if that is the choice made, then the SoniFight config will likely be tied to that specific version of GZDoom, so when newer versions come out they will likely not work with the SoniFight config.

Regardless of the option chosen we are ALWAYS tying ourselves to a specific version of a specific Doom client, it's just that ZDoom is not going to change, while GZDoom will change, and we would have to 'lock it in, final answer' to a specific version of GZDoom such as the latest v4.1.2.

I hope that makes sense! I genuinely don't know which is the best option, so if you've got any thoughts about it I'd love to hear them.

Regardless, I gave the 'legacy' ZDoom a quick crack last night and found the current ammo pointer. Here's a link to the test config I made:

ZDoom v2.8.1

To use it extract the zip then move the "ZDoom v2.8.1" folder into your SoniFight/bin/x86/configs folder.

ZDoom doesn't come with the shareware version of Doom (i.e. the free first chapter called "Knee Deep in the Dead"), but the version of Doom 95 I initially tried did come with it so I just copied the DOOM1.WAD file into the ZDoom folder

This test config does basically nothing of use - it just says "Ammo 45" when you have 45 bullets left (you start with 50) - and the pointer chain is simply applying the following to the zdoom process:

3AA420, 5C

But, because the config has just 1 watch and 1 trigger, perhaps it's something to take a look at and maybe try cloning that first trigger and have it say "Ammo low" when you only have 10 bullets left or such? Just to get the hang of things? Anyways, just a thought.

I'm happy to put a bit more time into the config to handle health, pick-ups, menus etc. but not until we decide if we're targeting ZDoom or GZDoom, and I probably won't get a chance to get around to putting some real time into it until near the end of next week.

Cheers!

2019-05-31 14:58:45

Hi r3dux!
Two general Questions:
First, i think your website-Link is broken. So where can i get the newest Version of your Programm?
Second: Is this "Cheat engine" tool accessible enough for us to try to create scripts for sonifight?

Other question: Is doom realy a game which could be made accessible for us?
Please dont take this harsh! I realy dont think it is so very interesting. But i am absolutely ready to change my mind about this!