Posts

Showing posts from July, 2019

Project update

Hello, last week I have been making some finishing touches to the TTS project. I improved voice mapping in the Mortvile Manor game, because I used to use pitch values from the original game to map the characters to different voices. That would mean for example that if a user has only 3 female voices available, both female characters would map to the same voice. So I added an array of voice indices, so the voices map as evenly as possible. I improved TTS in GUI, but that still needs some more work. But the biggest addition to the TTS actually isn't from me, because Criezy implemented TTS for Mac OS, which I couldn't do (I don't own a Mac). Because TTS is almost finished, I started to work on my next project, which is adding a way to convert between different character encoding. Right now, if you need to convert between encodings, you can: use the U32String class to convert between a few encodings. use TransMan (if TransMan is enabled) to convert between unicode and cur...

Mortville Manor TTS

Image
Hello, in the past week, I worked some more on the TTS project. First I finished the GUI TTS, I needed to make sure, that everything behaves the same way on Windows and on Linux and I had to make sure I free everything I allocate. I even had to implement reference counting for a class, which wasn't that hard, but it still was pretty interesting, because I have never needed to do this. I also had to implement conversion of the text being said to UTF-8. On Windows this involved adding a  table to the code, which would allow looking up codepage identifier by its name. On Linux I just used SDL_iconv_string, which can convert from most of the GUI encodings, but unfortunately it seems, it cannot convert from CP850, which is apparently quite often used by game engines (it is used by the Mortevielle engine and also by the supernova engine). So right now I just convert the strings like if they were in ASCII (most of the encodings are just ASCII extensions, so I hope to successfully convert...

ScummVM speaks

Image
Hello readers, first I might have to apologize, because with how busy I was at the end of last week, I actually forgot, I should write a blog post. But at least now I have a lot more to show you. The Mission Supernova project is near it's end, I created a pull request with the work I have done on it and right now it waits to be reviewed by the ScummVM community. You can find the pull request  here . This allowed me to fully focus on my next project, which is the text to speech. First I implemented the TTS on Linux, which was pretty easy, because the speech-dispatcher API is quite simple to use (A lot simpler then SAPI from Microsoft). The code for that should be close to finished, I just need to add some checks in a few places. Then, so I can test the TTS, I implemented reading of text in the GUI (A blind user could use this to navigate through the menus and maybe play some game, which also uses the TTS to read text). I spent quite a while doing this, because I wasn't sure ...

GSoC update

Hello, last week I almost finished the Supernova engine. All of the bugs I managed to find should be fixed, I added translations to most images and help files, I merged .dat files with translations for each game and tools to create them into one and I also added the "improved" mode. Right now the improved mode: In the first game Automatically dresses and undresses the player from space suit every time he walks through the airlock (after he first does this on his own). Automatically closes one side and opens the other side of the airlock (after the player first walks through the airlock on his own). In the second game Enables using go verb alongside with push verb to interact with the puzzle tiles inside the pyramid (that way the player doesn't have to click on push in between puzzle interactions and can focus only on solving the puzzle) Enables using go verb alongside with push verb to interact with the password locked door inside the pyramid The only thing...

Supernova images

Image
Last week I pretty quickly finished the merge, there was only a bit of refactoring left. After that I worked on a tool that could recreate Mission Supernova datafiles containing images, which would allow us to translate them. The MS datafile format is pretty simple and it reminds me of .bmp images (there is a header, after that palette and after that pixel data). At the first 4 bytes is size of the pixel data field. After that is 1 byte, which is the size of the palette. The palette follows after that. Pretty interesting thing is, that each color is brightened by the engine (shifted by 2 to the left), so we have to count with that when making a new image and generating palettes for them. This also means, that we loose a lot of colors (We for example aren't able to encode the whole 256 colors of grayscale). After the palette is information about sections. Section is a image, that can get rendered on top of other sections (images). The information is basically only it's size, l...