2019-05-31 14:59:22

Just incase you don't know: Phoenix Wright trilogy is on Steam so maybe this one will be easier to Sonifying. smile
There are places where you need to use your cursor to click on objects (kinga hard) and things like phonos, and you need to click on the parts (as far as I know) But this is a game I really wish I could play!

If you like what I am doing just show it to me by clicking on that button below the post. :)
Follow me on
Add me on Steam

Thumbs up

2019-05-31 15:35:47 (edited by r3dux 2019-05-31 15:37:39)

@firefly82 - no worries.

What website do you mean? You can find the newest version of SoniFight in the Releases section of the SoniFight GitHub.

Here's a direct link to the latest v1.1.4: SoniFight v1.1.4

If you meant my personal 'r3dux.org' vanity website then I've recently taken it down after 20 years because I have neither the time nor inclination to maintain it.

It's possible to use Cheat Engine to find pointer chains for use with SoniFight, however it's not very accessible and that's the real drawback of the system as a whole at the moment.

Doom can be made more accessible than it currently is, but it would be very difficult to use the current SoniFight software to provide navigation hints because I didn't design SoniFight to assist in navigation, it was built to assist users playing fighting games.

However, thinking about it, in theory SoniFight's continuous triggers COULD 'abused' to provide navigational assistance (which is kind of funny, because we'd be abusing the game to provide accessibility, and then abusing the accessibility software to provide further accessibility).

But the short answer is no - SoniFight isn't built to help you to navigate an area.

Thumbs up

2019-05-31 15:59:12

@Lirin - I didn't know Phoenix Wright was on Steam, how cool! Unfortunately, I don't own it and have no idea if the current text / options could be found. In the emulated Nintendo DS version I looked at I couldn't find any text, even when it was there written on the screen in front of me! I think this is because the text is stored as connections to a series of bitmaps rather than raw ASCII characters.

If I knew the numerical designations for each character bitmap I could likely find the text and work from that - but unfortunately I don't!

Thumbs up

2019-05-31 17:00:18

Hi @r3dux.
Wow. Thanks for the very detailed post in post 24.
So, do you think the reason for I couldn't find the right addresses was because I didn't used Z Doom? Does the addresses change when running the game through this emulator?
I'm not sure on if it's just me who don't get how to find the addresses, or if it didn't worked simply because the original Doom95 demo isn't compatible with Windows 10. I'll take a look at it when I get the time and give it a try.

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

2019-05-31 18:17:26

Hey @SLJ,

The reason you were unable to find addresses in Doom 95 (which I personally couldn't even run - it said I was missing DLLs) wasn't to do with the game process. Sorry bro, it's just non-trivial to find pointer chains. Also ZDoom isn't an emulator, it's a client - that is, it's a modified version of the (now open-sourced) original Doom source code.

However, let me be really clear about this - YOU are not the problem - the problem is that finding pointer chains is a technical process, and that finding pointer chains using CheatEngine (which doesn't play nicely with screen readers) makes that task even more difficult.

It's a real bind.

I wrote SoniFight with the goal that the people who would benefit the most from it would be able to help themselves and write configs for the games they were interested in, but so far that hasn't panned out in the way that I'd hoped it might.

So we had 1 problem (lack of sonification), then I did my best to fix that problem (here's software to provide sonification), but that software introduced a new problem (how to find pointer chains for the software that provides sonification).

1 step forward, 1 step back.

Anyone sighted with a reasonable grounding in Computer Science can create configs because it's just following a series of steps, but as mentioned, the problem is the accessibility of the tools.

So to me, it looks like the accessibility of CheatEngine is the bottleneck here, not the capacity of SoniFight to perform useful work.

How do we go about making CheatEngine more accessible? I don't know. But it's probably the same way that we can go about climbing a mountain - one step at a time.

Thumbs up

2019-05-31 18:23:21


Just for the record, I've had a poke around with Cheat Engine, and thus far the most annoying part of the program is its use of color alone to indicate memory address type.

From an accessibility standpoint, most of the buttons at least have sensible labels, and it's possible to do scans with reasonable success. Tedious, of course, but not as difficult as might be supposed. NVDA works reasonably well.

Thumbs up

2019-05-31 22:27:17

@r3dux It was just an suggestion. smile No idea if there's any difference between DS and PC versionf of the game but who knows! It's totally remastered so there's always a possibility. smile

If you like what I am doing just show it to me by clicking on that button below the post. :)
Follow me on
Add me on Steam

Thumbs up

2019-05-31 22:28:02

BTW, using OCR works so reading the text is not that big deal. The problem is to do the more cursor-based sections in the games rather than reading the whole story.

If you like what I am doing just show it to me by clicking on that button below the post. :)
Follow me on
Add me on Steam

Thumbs up

2019-06-04 03:59:01

well, for me this system, as amazing as it sounds, seems not to be usable, simply because I'm not in the US.
I tried it with Street Fighter IV, just to realize after buying the game, that I do have the right game version, but the wrong file version. So, Sonifight doesn't work with the game, changing the language to english does not help with that.
So, I'm pretty frustrated right now. I don't even want to buy other games which have configs right now, just because I can't know if steam gives me the right game version. sad
But nevertheless, it's amazing what you did there and maybe someday I will be able to enjoy it to through some kind of wonder. big_smile

Thumbs up

2019-06-04 06:35:52 (edited by r3dux 2019-06-04 06:37:03)

Hi Tikki,

Sorry to hear things aren't working out for you. Just so we're clear, you've got the latest Steam version of Ultra Street Fighter IV Arcade Edition (Steam Build ID 834219), but the German executable is different?

The version of the SSFIV.exe file I have is 7,026,688 bytes in size and has a MD5 hash of 63de108cbf2b1861b14867bbd846a2d7.

You should be able to find this executable in your Steam directory's steamapps/common/Super Street Fighter IV - Arcade Edition folder.

Are you able to confirm that your version is the same or different? You can use the online MD5 hash generator at the following URL to generate the MD5 sum of the SSFIV.exe file: http://onlinemd5.com/.

If the MD5 sums are the same, could you try changing your operating system's language from German to English (if that's how it's currently set up) and give it another shot?

If the files are the same and setting your OS to work in English doesn't work then there may be an issue with the CultureInvariant string comparisons SoniFight is performing so I may need to go back and revisit them.


Thumbs up

2019-06-04 07:54:26

wow, I'm surprised, my file size and checksum are actually the same as yours. The bad news is, that even after switching my windows language to english us, the config still doesn't work for me. But if you can do something about that, that would be great!

Thumbs up

2019-06-04 12:27:36 (edited by r3dux 2019-06-04 12:27:59)

I've just gone and looked into it - and my sonification didn't work either! How bizarre!

However it might be something simple to fix.

Could you launch SoniFight, select the Street Fighter 4 config and then click on the "Edit Config" tab.

In that tab are all the details of the config that specify where to look (watches) and what to do when a value meets a given criteria (triggers).

What I'd like you to do is click on Watch 7 (Submenu-Text), and then in the "Pointer Chain (in hex with commas)" field, change the value FROM: 132FDC, 180 to the new value 132FDC, 170 - so basically you just change the 180 to 170 on the end.

Once you've done that, click the "Save Game Configuration" button and then go back to the Main tab and give it a shot.

Let me know how you get on!

Thumbs up

2019-06-04 12:51:24

I've just gone back to look at the "blame" revision history of the SFIV config.xml in GitHub just in case I'd accidentally modified it between releases and uploaded the inadvertantly modified version - but nope! No changes made.

The subtext pointer chain always ended with 180 - but now it doesn't work, and you're the first person to report it not working. So when I just looked it up and browsed the memory around where the text used to start, it turns out that the text now starts 16-bytes previously in memory (final offset 170 instead of 180, in hexadecimal).

Why has it changed? I have no idea. The SSFIV.exe file has a last modified date of the 25th of May 2015 - so it's not that.

My guess would be more towards some subtle "padding" issue, whether this is Steam based or (more likely) operating system based.

Anyways, have a crack and see what happens. Fingers crossed.

Thumbs up

2019-06-04 13:03:25 (edited by r3dux 2019-06-04 14:14:35)

I've also just gone through to check and some of the menu options in the SF4 config that used to work are now broken, however all the in-game sonification still works, and the above "170" change will fix the main menu.

I'll have to back through it all and perhaps (from what we've seen so far) subtract 16 bytes from the watches that are looking for submenu text, but I won't have the time to get to this until probably Tuesday the 11th, soz.

Not sure why this has happened, but it's not a difficult fix - just hoping it's not a common occurence!

Update: Okay, it's not going to be a 16-byte offset across the board, the values will need to be refound. However, the existing config states their data type and the associated triggers state the values to look for so that's the vast majority of the work still done. Going from the existing data it only took me about 2 mins to find the updated arcade menu difficulty settings (watch 8) and then all the associated triggers 'just work' again. The new chain for watch 8 is: DD9D8, BC

As mentioned I'll go back through and update them in the next few days when I have some free time.

Thumbs up

2019-06-04 15:51:40

thanks for your hard work!
After updating the values you speciffied, it actually works for me! At least, the main menu and arcade difficulty does. big_smile
Now I know it's doable, I can't wait for the fixes to come out. smile
But no worries, I know there's life also and that you need time for this. But I'm really looking forward to playing this game now, finally! big_smile

Thumbs up

2019-06-04 17:11:24

Hey Tikki,

Yay! Glad those changes helped - at least I now know that something has changed (although I don't know what).

However, I do know that it's not a big job to update the config because I've previously tracked down all the data types and ranges, so it's just a matter of 'going through the pointer finding process'. While this is massive pain in the ass for most people, it took me around 2 years to write SoniFight, so believe me - I've had a lot of practice...

I'm finishing off some scholarly gymnastics that I've been working on part-time for the last 9 years at the moment, and the brunt of the documentation is due this Monday the 10th of June - so you're going to have to forgive me if I put any SF fixes on the back burner until everything's submitted!

Thumbs up

2019-06-04 23:36:52

sure, no problem at all, there are more important things! Please, take your time. The more fun it will be when I get to experience the whole working thing! big_smile

Thumbs up

2019-06-05 02:41:32


Funnelly enough when I switched my mortal kombat 9 to German, don't do that if you want to keep your sanity, the config still worked fine in the main menu and char select.
Strange that it didn't do that with street fighter.

Greetings Moritz.

Hömma, willze watt von mir oder wie, weil wenn nich, dann lass dir mal sagen, laber mir kein Kottlett anne Wange und hömma, wo wir gerade dabei sind, dann iss hier hängen im Schacht, sonns klapp ich dir hier die Fingernägel auf links, datt kannze mir mal glaubn.

Thumbs up

2019-06-05 10:00:43

@r3dux, I don't know if you already have any future project in mind with sonifight, but I would have something which you might could look into.
It' should be deffinitly be easier than x3.
I am talking of the golf club 2019, which is a golf game.

It's partially accessible with OCR after each shot, some information though is still not read properly.
What would be cool if you could create a config file for the game which does the following.
Announce the club which the player has selected.
Announce the shot type which the player has selected. When the ball stopps roling, announce how far you are away from the hole and if you are in the fareway, rough, deep rough, sand or what ever.

Do you think that would be possible?

Greetings Moritz.

Hömma, willze watt von mir oder wie, weil wenn nich, dann lass dir mal sagen, laber mir kein Kottlett anne Wange und hömma, wo wir gerade dabei sind, dann iss hier hängen im Schacht, sonns klapp ich dir hier die Fingernägel auf links, datt kannze mir mal glaubn.

Thumbs up

2019-06-07 16:49:27

Hey Simba,

Although I have The Golf Club 2019 on Xbox One (it came free in with Xbox Live in May 2019), I don't own it on PC.

I completely understand what you mean though - naming the clubs, shot-types, distance from hole etc. That all sounds very reasonable and do-able. But I don't own the game on PC - also, modern games sometimes have 'anti-tampering' mechanisms that don't like you reading the process memory, and may close if you attempt it (such as Street Fighter 5). Does The Golf Club have such a mechanism to stop you changing your round score to an eagle each hole? Who knows!

How about a free PC golf game? I used to love PGA Tour Golf, and some of the "Links" games were good.

However, to explain something like the three-tap hit system through NVDA you'd need to say "Back" or such when you tap the bar to start your backswing, then as bar increases until it gets to the top you could say "Stop {}" (meaning the word 'Stop' followed by the swing percentage) and then the third tap controls the hook or slice (or hopefully you get it in the middle and experience neither). That could say -5 or +8 or whatever value left or right it was from a 'true' hit. This could even be changed from -8 to saying "hard hook", -6 to "medium hook", -4 to "mild hook", -2 to "slight hook" etc.

Another option would be rising and falling tones, but SoniFight doesn't do that and it would take some significant reworking to make it do that AND handle what it already does (the location and matching of values).

So, can it be done? Yes.

Is it done? No.

Who is willing to do the work? No-one, at the moment - and there-in lies the rub.

Thumbs up

2019-06-07 16:58:54 (edited by r3dux 2019-06-07 19:02:52)

I'll be going through everything and releasing a new version of SoniFight in the very near future.

Planned updates:

- Config checks and updates,

- Additional generic 'Increased' and 'Decreased' Trigger criteria,

- Cleaning the code (sadly it posesses 'technical debt' - if you don't know the term, it's an interesting one:
Wikipedia - Technical Debt),

Planned for next relase:

- Hotkeys to trigger watches (i.e. announce health value when you push 'H' etc.)

Thumbs up

2019-06-12 16:44:40 (edited by r3dux 2019-06-12 16:47:49)

Here's the SoniFight v1.1.5 work-in-progress change log - it's not finished, but here's what I've done so far:

- Added 'Increased' and 'Decreased' comparison types available for Normal and Dependent triggers, so you can trigger a sonification event when a value has specifically increased or decreased, rather than if it crosses some comparison threshold or has merely 'Changed'.

- Fixed / updated Ultra Street Fighter 4 Arcade Edition config (some memory locations had changed without the exe changing, which is super odd...). All key elements of the config now restored.

- Fixed / updated Mortal Kombat 9 config. Some new menu options added such as 1 Player "Fight" submenu and 2 Players "Versus" submenu.

- Added new game: ZDoom v2.6.1! Health announced when increased (pick up) or decreased (shot / sludge), armour announced when increased, ammo announced when increased, 5/4/3/2/1 remaining ammo announcements for current weapon.

- Currently unused but potentially interesting: ZDoom X and Y map coordinates tracked and available... could be used in the future to say when you're near a key, or a door or such? This won't work at present because you'd need to calculate the distance between current coordinates and some marked coordinates (keys/doors) via standard math 2D distance forumula - but there's no reason it couldn't in the future work to announce when you're within roughly 10m of a key or door that requires that key, or even a door to a secret area or such. Would need the map name for all this (e.g. 'e1m1', 'e2m5' etc. so comparisons / distance calcs can be made for elements of specific maps etc).

So far, so good - more to do before a proper v1.1.5 release. I'm working on it.

Thumbs up

2019-06-12 18:12:24

Another thought I had was about regions within maps - let's give this a shot as simply as possible.

When you start the game Doom (the original game, from way back when) - you start in a region with a few pillars and some water.

Let's draw a box around this small region and call it "start".

If you go forward a little and then left you end up in a region with two pillars either side and some stairs going up to green armour. Let's draw a box around this region and call it "start-left"

From the start, if you go forward and to the right, there's a door which you need to open to reach 1 or more enemies. Forward from which there's a U-shaped block that you would run into if you ran straight ahead, and escaping the 'U' to the right moves on to the next section (which we don't care about for now). Drawing a block around this section allows us to call it "start-right".

So we have the regions "start", "start-left", and "start-right".

Starting from our spawn point ("start") we could go to the left and it would be possible to announce "start-left", or going to the right it would be possible to announce "start-right" as we entered each area defined by a rectangle. If we went from "start-left" to the right then it might announce:  "start. start-right" as we entered each area.

This can also be used to find the regions involved with keys/doors/items. For a specific example involving a key and a door, regions around red keys could be in a region named "Red get", and places using red keys could be named Red door.

Is this making sense? Any suggestions

Thumbs up

2019-06-13 08:11:57

Wow. Thanks a lot for all the work you're doing on the Doom. I'm quite busy at the moment, so I haven't got time to look much at it yet. But I'll check it out in the near future.

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

2019-07-29 00:38:57 (edited by Drew 2019-07-29 00:41:01)

This is a very impressive effort. Thank you so much for spending so much time on it!

I buy most of my games on GOG, because I hate Steam for several reasons. How heavy a lift would it be to support the GOG versions of steam games that already have configs? Would I need to re-find all the pointer chains again or is it more simple than that? If it's a lot of effort I'll just rebuy them on Steam I guess but this will annoy me. I'm also wondering about the other remastered point-and-click adventure games and would +1 Phoenix Wright as another good game for sonification. I do not have a computer science background but anything I can do to help I'm willing to.

Thumbs up