2017-11-12 19:30:21

Can Hearthstone be played by the keyboard only? If yes, then it might be possible to make it playable. I don't have any experience with the game though.

Best regards SLJ.
If you like the post, then please give it a thumps up.
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.
Happy gaming... :D

2017-11-12 22:54:59

I still can't get sf4 to read menus either and I'm pretty sure they're in English although I can't see them to verify that. I wonder if the cheep key I got was for a foreign version or something? I'd have thought it would default to what ever language your computer, or steam it's self is set for though.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-12 23:30:01

Hi all,

SoniFight v1.1.1 now available with some fixes to Day of the Tentacle that should make it pretty much fully playable. As mentioned in the release notes, when you talk to characters it says "Speech option 0", "Speech option 1" etc. rather than the exact dialogue, but there's nothing to do be done for this because the actual speech text doesn't seem to be copied into any buffer I can locate on highlight. However, because each option is actually spoken when clicked you'll still know exactly what's being said, and there's no way to 'fail' any game section by saying the wrong thing.

Main options like load, save, resume, new game etc are also spoken, but the sub-options under settings are not sonified at this point - but again, that shouldn't really be a big problem. Also, it's likely that the vast majority of the config will work in a multi-language capable fashion as when you mouse over objects the relevant language specific version of the description string should be placed in the watch buffer. If anyone wants to try this out and confirm / deny multi-language is working that would be great.

Not having played Hearthstone before I just took a look at some footage, and it may be possible, but looks quite involved. You'd want to use the mouse instead of keyboard though I think and "mouse over" cards / buttons etc to have them read out to you. Maybe it's something I can take a look at in the future.

Because cheat engine doesn't tend to play very nicely with screen readers I may also look into trying to add some accessibility cues to it and then submit a pull request, however any timeframe for doing this would be a guess at the moment.


2017-11-13 01:37:09 (edited by r3dux 2017-11-13 01:51:44)

SirBadger wrote:

I still can't get sf4 to read menus either and I'm pretty sure they're in English although I can't see them to verify that. I wonder if the cheep key I got was for a foreign version or something? I'd have thought it would default to what ever language your computer, or steam it's self is set for though.

Hi there,

Unfortunately I'm not sure why it's not working for you while the SF4 menus are sonified for me. If you're definitely using the Steam version of Ultra Street Fighter 4 Arcade Edition and have the version with English menus running this is a weird one.

If you get the in-game warnings about "health low", "clock 50" and so on then at least irrKlang is loading correctly and is able to play those samples. If you do NOT get those in-game prompts then the only thing I can suggest is that if you go into the bin\x86 folder of your SoniFight release and directly run the command:

SoniFight_x86.exe > log.txt

Then, with SF4 running, start the SF4 config in sonifight, give it a couple of seconds and then click the Stop Running Config in SoniFight. At this point it might error with a 'pure virtual function' pop-up box, that's okay for now - just click okay and close down SoniFight.

Finally, go and look at the log.txt file which will have been created in the same directory as the SoniFight_x86.exe binary. Towards the bottom you should find the following text that indicates the irrKlang library has started up successfully:

Sonification stopped.
irrKlang sound library version 1.5.0
Loaded plugin: ikpflac_32.dll
Loaded plugin: ikpmp3_32.dll
Using DirectSound8 driver

There will probably be a couple of repeats of the irrKlang stuff because internally we use a couple of a different SoundEngine instances for various types of samples (InGame, InMenu, Continuous etc). If that irrKlang information saying that we've recognised the library, the flac and mp3 decoder plugins and that we have a valid sound driver isn't there, then that will be the source of the problem.

If it is there, then I'm afraid I'm at a loss and can only suggest you put the following pointer chain into the Pointer Chain Tester when connected to the SSFIV process:

132FDC, 180

Then select String (UTF-16) in the Data Type dropdown and see what happens to the Value field in the chain tester app as you move up and down the SF4 main menu. If it's showing garbage instead of 33-character long snippets of English then that will be the cause and it's likely you somehow have a different version of the SSFIV executable to the one I developed the config for (like perhaps an international version).

One alternative solution for the future might be that there exists a watch which tracks the currently selected menu option with the data type double (this is watch 6 - but it's currently marked as inactive (i.e. active checkbox is unchecked) and it isn't used by any triggers). The reason this isn't being used and the 'submenu text' matching is used instead, is that the menu selection number is re-used across multiple menus, and at present I have no way to identify which menu screen the game is on.

So for example, there are 11 options on the main menu which go from 0 (Arcade) down to 10 (Quit) - but if we go into the versus menu, then those same values are re-used for different menu options (Player Vs Player, Player Vs CPU, CPU Vs CPU etc). Without a way to identify the specific menu screen we're on this will mean that SoniFight says "Arcade", "Versus" etc again as you move through that screen, even though these are not the actual menu options available. If I can find a pointer chain to a value that identifies what screen we're on then I can add in a dependent trigger which will allow each menu screen to be read out properly based on this numerical watch rather than the presently used string-based matching. And in theory, comparing against numbers will be more universal and have a better chance of working across versions of the game.

Will have a shot at it as soon as I have a chance.


2017-11-13 02:13:39

well the in game things seem to work, it's just the menus but i'll give that a go later when I've got chance.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-13 04:30:36

Could this work for something like dark souls? Or do the games have to be modable? Wonder if its possible to make it read player health and armor and inventory and things.

I am the blind jedi, I use the force to see. I am the only blind jedi.

Thumbs up

2017-11-13 06:41:47

I think Dark souls would be way to complex to even think about making a config for this. How would you do navigation first of all?

Thumbs up

2017-11-13 09:44:11

@SirBadger - I've added a new config called "SirBadger_USFIVAE_Numerical_Menu_Test" to the SoniFightConfigs repo. As the title suggests, it uses a different series of watches to try to numerically identify which menu screen we're on and provide some relevant sonification for the menus.

I've only added the main and arcade menu screens at present, have a go and see if it works for you when you have time.

@BlindJedi + blindndangerous - Yeah, dark souls would be a real stretch. The problem with the pointer chain technique is that it's a massive pain in the neck, even for simple things like menus, because we don't know the game's data structures. This doesn't mean we can't know them, it just means that it's difficult. I'm a lot more hopeful for simpler games, or at least games with relatively simple structures or only a small number of things to track.

For example, the Day of the Tentacle config I've been working on has only 6 watches and about 30 triggers - and I reckon that it's not far off being able to let you play the entire game. You'd have to sweep the mouse over the screen some to get an idea of the objects in the scene, but you can interact with each and it'll tell you what actions you can peform. So if this or something like it turns out be viable for point and click adventures, and as point and click adventures all tend to more or less work the same way,  then it could mean that it's not too tricky to make pretty much any game in the genre playable.

If you're interested, there's a few minutes of demo footage of DoTT available here: https://www.youtube.com/watch?v=6p62y1-BLtQ. In the game, when you move the mouse over an object it says the name, you can left-click on the object to perform the default action, or right click on it to bring up a circular series of icons based on the actions you can perform with that item. When it says stuff like "Open something, Pull something, push something" I'm just sweeping the mouse around the available options - once you know where each icon is one 'wheel' then you could go directly to the one you wanted without having to hear multiple options.

2017-11-14 02:26:57

I haven't tried the new config properly yet but with the main sf config, I tried making a log file and all the stuff that should have been there was. stranger and stranger. I am wondering if mine is an international version though because when I check the executable in the steam apps folder, the details say language, nutral.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-14 02:52:14

ok tried new config and still no joy. I'm baffled. also, just to make life even more complicated, I just bought and installed day of the tentickle remastered and that one isn't reading anything either. no idea what's going on. the only one that reads anything to me is mortal kombat complete which workds fantasticly. both dott and mk are showing as American English in the properties.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-14 10:04:16 (edited by r3dux 2017-11-14 10:12:03)

Sorry to hear it's not working - but I might possibly know why... I've created some modified versions of the SoniFight_x86 executable to test the theory that it's down to me not fixing the SF thread culture. There's a couple of steps to this, so only have a crack when you have the time.

Step 1 - grab the following test versions of SoniFight from https://www.dropbox.com/s/66j6aiw8xte7k … s.zip?dl=0 and extract. There's just two versions of the exe in the zip which extracts to a "SoniFight_Test_Versions" folder. There's one where I lock SF's thread and UI culture to english, and another where I lock it to Culture.InvariantCulture (which should be the same as locking to english, but I'm not 100% sure so I included both versions just in case).

Step 2 - copy both exe's into the bin\x86 folder of wherever your version of sonifight lives and launch one of them directly from the exe (not the batch file in the SoniFight folder as that's linking to the standard, non-modified version).

Step 3 - launch steam and go to a game that isn't sonifying properly (SF4, DoTT etc) and right-click on the game then select the Properties option from the pop-up menu. This opens a "<GAME_NAME> - Properties" window, from which we need to go to the Language tab and make sure the dropdown saying "Select the language to play this game in" has the option "English" selected and then click the close button and launch the game.

Unfortunately it's likely you'll need sighted assistance for this as Steam's such a PoS for accessibility (which is absolutely ludicrous). I'll try and avoid steam versions of games in the future. I just thought it would keep everyone's game versions in sync to avoid any different-configs-for-different-versions hassles - but it's just so awful for screen readers to work with that it replaces potential version problems with its own problems.

Step 4 - Try a relevant config and check if it provides correct sonification now. If it still doesn't work then try the other test version.

I tried launching SF4 in french mode and the 'string-matching' pointer chain that sonifies the menus grabs the french text without any issues, which means that in theory a french version of the config could be made by simply changing the 'match-text' criteria and the tolk output of what to say when the match is made. So that's nice to know, but if neither of these test exe's work for you then I'm completely out of ideas as to why that might be.

Fingers mightily crossed!!

Final thought: When you say that both games show "American English" in the properties, you mean the properties that show up when you right-click the executable and choose properties in file explorer, yeah? My SSFIV.exe shows "Language Neutral" in the details tab of that, while DoTT.exe shows "English (United States)" as the language - but these are likely the default languages, not necessarily the languages that will be used. To specify that, make sure the in-game language as specified by Steam's properties | language setting is set to English as detailed above.

2017-11-14 14:19:22

Hi r3dux!
Maybe you could create a configuration for a game on gog?

Thumbs up

2017-11-14 18:43:21 (edited by Game Man 2017-11-14 19:06:49)

Steam is still not all that accessible but NVDA OCR works pretty well with it. When you OCR each screen by pressing NVDA-r and you want to interact with an item, navigate, use normal navigation keys e.g. control-left arrow/right arrow to move by word, and make sure you're on the item. Press NVDA-shift-m to route the mouse to it. Then left click (NVDA-left bracket on laptops,) to activate the item or right click (NVDA-right bracket) on the item to activate the pop-up menu.
Hope this helps everyone using Steam. Maybe someone can write a Steam add-on for NVDA.

Game Man

Thumbs up +1

2017-11-14 21:16:40

I've had a quick play and using the second test on sf is speaking more than it was but still not reading most of the menu options. dott still not reading anything but i'll play with it some more.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-14 22:05:06

Have always wanted to play the Monkey island games myself.

Silly Gohan, animals don't eat people. People eat animals.

Thumbs up

2017-11-14 22:15:13

I was wondering about games like simon the sauceror as well. I have a copy of that remastered I got off gog. if it could take the input from the thing at the bottom that changes to say what things are when you arrow over them and read it out, could be doable. I think full throttle could be made to work too.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-15 00:50:43

@GameMan - So that's how the NVDA OCR works! Thanks so much for the clarification - at least that means that Steam can be made somewhat usable!

@SirBadger - Well, at least that's progress and we've narrowed down that the InvariantCulture option helps. Now I know that, I think a further thing I can do is to make a number of value comparisons perform in an InvariantCulture manner, which may possibly fix up the rest of it. I'll try implement that today and upload another test build so you can see if it helps.

@firefly82 / death - Regarding older / GoG games, I've made a start on a config for Beneath a Steel Sky, which is free on GoG. Internally it actually uses ScummVM rather than being a 'pure' updated version. As such, I might just try grabbing the latest ScummVM, hook in BaSS and then build the config from that. I'm hoping it'll turn out to be fully playable, but there are some parts where you move from the foreground to the background of the screen you're on, and different items are highlighted depending on where you are. I may be able to find a watch that announces things like "Move to foreground plane" and "Move to background plane", we'll just have to wait and see what can be worked out.

In theory it should be relatively straight forward to create functional configs for Full Throttle, Simon the Sorcerer, and the Monkey Island games - but the devil's always in the details. For example, while the main gist of the game might be just announcing objects and actions etc, if the game contained mini-games then these would likely need to be catered for in a series of 'special case' watches & triggers, which increases the complexity of the config and hence the development time and effort.

2017-11-15 01:11:14

steam is pretty useable with jaws as well. if you go to properties on your steam shortcut and change the target jaws cursor works pretty well on it. best to have steam not automatically launch with windows though as it won't pick up on that change.

here's an example, with the log in details changed to example obviously because I am not going to give my steam ID out. lol

"C:\Program Files (x86)\Steam\Steam.exe" -login exampleUsername examplePassord -no-dwrite

so in properties, just add all the stuff after the quotes with your actual log in name and password and that extra string at the end.

should let you launch steam and automatically log in and I'm not exactly sure what the other bit does but it does make jaws work much better with it. hope that helps and hope I explained it properly.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up +1

2017-11-15 01:16:59

talking about steam though, I just reinstalled it because I'd been messing about with my video drivers and things. downloaded all my games again and for some reason grand theft auto 3, which worked fine before is saying I don't have enough video ram to play it. of all things it's saying I need at least 12mb of video ram. my card has 2gb onboard and my computer has 32 gb system ram. I can't get my head round that. everything else seems to work though.

if duct tape doesn't fix it, you haven't used enough.

Thumbs up

2017-11-15 20:34:52

@r3dux: So sonifight is able now to work with emulators? Or is ScumVM different? What about dosbox?

Thumbs up

2017-11-17 07:21:56

@firefly82 - SoniFight works with processes, and it doesn't care if that process is a game, an emulator or a spreadsheet program! So yeah, it will work with emulators - but because emulators are commonly updated quite often, it may mean that any configs written for a specific emulator stop working when the emulator is updated if the internal memory layout used by the emulator changes.

As such, I'm working on a way to identify a 'fixed point' in memory which will mean that configs aimed at emulated games will work regardless of the emulator or emulator version the game is running on. I don't have a timeline for incorporating this into SoniFight, but I'd like to have it done by around Christmas or New Year.

2017-11-18 21:46:56 (edited by Game Man 2017-11-19 04:51:22)

I just bought DOTT and Sonifight reads the main menu but errors out when a new game is loaded. I tried the previous config for the game and that seemed to not error out.
Any help with this is appreciated.

Game Man

Thumbs up

2017-11-19 11:24:50

@GameMan - SoniFight crashes when you start a new game of DoTT? Is there a MessageBox that pops up saying what the error is? I've just restarted a new game of DoTT with SoniFight running and apart from some non-sensical stuff when the intro was running it works fine for me.

2017-11-19 11:39:11

Hi, this sounds dam amazing, i like the idea. i want to know, is the mortal combat config only for steam releases?

best regards
never give up on what ever you are doing.

2017-11-19 21:10:13

@r3dux when a new game load, NVDA says some random stuff and I get an windows error sound. Looks like it works fine now after that cut scene finishes.

Game Man

Thumbs up