Monday, December 31, 2012

Two important updates!

Paid app available

Lots of you are playing Caesar III on the beta version. You'd be glad to know that Winulator is now also a paid app not bearing the the BETA marker!

You can show your support by buying it, and you can also continue to test the free Winulator-beta app and send feedback when it receives experimental updates.

StarCraft: Brood War

The game StarCraft: Brood War (patch 1.16.1) is the next game to be supported under Winulator!

See video below:

... and stay tuned!

Saturday, December 15, 2012

Still rolling up fixes

Hope you'd be glad to know I'm still working on this :) If you receive the regular updates from Google Play, you might notice some crashes were fixed, some crashes are still pending fix, and resolution change - well, it's nice to run Caesar III at 1024x768 on a tablet.

Besides bug-fixes - I received all your comments regarding usability, and I hope to hurl some measure of UI improvements, and game control definitely the most attractive of all would be some sort of a two-finger pan and zoom which would make map navigation much easier. Some of you were bothered by that pesky top menu - I know, going to try and improve on that as well.

Tuesday, December 11, 2012

v1.03 and more

After a few iterations, v1.03 is available to addresses some crashes with versions of Caesar III (which were not obtained from that halted on "Missing CD". The built-in fix maps the game directory as a fake CD drive.

Your feedback is very helpful. Please re-try the app after every update so I can apply more fixes.

I've also received feedback about the configurable game controls - these are going to be improved over time to accommodate increased playability for this game and future ones.

I'd be happy to see some videos of people using Winulator successfully :)

An update after v1.0

First, thanks to everyone who are sending crash reports.

All 3 crashes I've received so far relate to the same issue. I got some fixes coming up, but Google Play update latency will bog it a few hours ahead, so stay tuned.

Winulator-beta v1.0 is now available

I'm glad to announce that you can now evaluate Winulator to see how it lets you play Caesar III, currently the only supported game. The free Winulator-beta app is now available from Google Play.

The recommended run setup is an Android tablet, however it would also run on small devices.

To convert the game, you need WCH 1.4 and, as described in the Docs. I've posted a video on YouTube to better illustrate:

Also, I've added another video to show additional game play, demonstrating the control widgets:

You'd get updates from Google Play, only to the app itself, and it would require no hassle - I estimate that you would only need to convert the game once, unless I correct some conversion bugs (in that case, a new WCH version will be released).

It would be nice to get feedback, and for those of you who like to post videos - to see videos of people running Caesar III.

Saturday, December 8, 2012


I have some good news: you can expect a beta release in the following days. Note that I was misquoted on various websites telling that release would be only on January, so to alleviate any confusion or concern on the matter - know that you can expect it much sooner.

I have almost completed the feature set that I've set forth for this beta. The most important one are the configurable on-screen control widgets (see below). The first game to be supported under Winulator - Caesar III - reached a state where it is completely playable with sound, music and everything that can be expected (almost - see below), and therefore worthy of release, and that may happen very soon.

Winulator with Caesar III, beta release notes

Here I've listed the issues/bugs that you'd encounter when trying the beta with Caesar III:
  • In the intro video, some small number of frames are garbled (but the in-game videos seem to work fine, and game play is unaffected)
  • The menu option inside the game changes the display resolution doesn't work, so don't attempt to use it.
  • CPU usage is still around 40% (less of an issue on tablets), though this is in the ballpark of modern mobile games, so I'm not much concerned about it.
Aside from these, everything seems as expected from Caesar III. Note that you need to use the game's own load/save functionality if you want to save the game (like we did in old days, it would save to files in the game's directory).

Configurable on-screen control widgets:

To adequately support the old games with modern touch screens, Winulator supports configurable on-screen control widgets. For every game you'd be able to precisely configure (i.e. by size, shape, and location) a set of on-screen buttons that can map to various control functions:

  • Zoom-in on a screen region (especially useful on small devices)
  • Keyboard hot keys (e.g. Ctrl-g)
  • Keyboard popup (i.e. for text input)
  • Right click emulation (sticky, or one-time)
  • Screen panning (i.e. for easy panning maps up/down/left/right for games such as Caesar III)

Friday, November 30, 2012

Caesar III updates and more

First and foremost, I was astounded by the amount of attention toward Winulator arising just from the first video. In the last two days I received a substantial amount of positive feedback regarding this initiative, and it is very encouraging - months of work throughout 2012 were invested in making this come true, and I am glad that I haven't put this aside for other projects. Priorities have shifted recently, and I am currently dedicating more than 75% of my time to this project, striving to make it worthwhile.

Caesar III

Regarding Caesar III, in the last two days I have managed to fix the sound support completely, so in-game sound and music now work as expected. There are still some aspects of the game that I feel inclined to fix before a release is made:

  • Input controls - notably right click emulation and keyboard popup / helpers.
  • Graphics - you might not have noticed in the demo, but some small amount of bitmaps are not getting blitted properly.
  • CPU usage - testing on the Asus Transformer TFT-101, it currently taking 60% of the CPU (compared to 20% by Angry Birds) . It's not due to the machine code conversion, but due to the game's own implementation (it needlessly takes 100% of a core on my Windows 7 laptop...). I seek to mitigate this, because I don't like seeing mobile battery energy going to waste.

There are some features outside of the game itself that need implementing, but that's just for convenience.


Some questions have surfaced around the Internet concerning Winulator, so here are some clarifications:
  • The Winulator app is not a port of WINE. The implementation of the app is very lean re-implementation of a subset of Windows APIs according to publicly available documentation. By lean, it means that around 10,000 lines of code are enough to support a game like Caesar III. As to the idea of porting WINE - it bears various technical and non-technical issues for which I would elaborate but not now.
  • The Converter app is based on a proprietary whole-executable Intel-to-ARM conversion scheme that has taken a few months to design and implement. I don't intend to introduce a Just-In-Time compiler in the near future (hint hint: there's a big company with a fruit-shaped logo that doesn't like JITs inside their approved applications, and I purport that Winulator's future not be limited only to Android). 
  • Program and game support will be incrementally added according to users's feedback. It would not be economically viable for me try to support all programs and games. The support range depends on demand. However, for what I do intend to support - I intend to deliver high quality.
  • I don't take donations, but there will be a paid app on Android Play, so simply subscribed my channels and stay tuned.
  • Beta testing - thanks to everyone who volunteered - when needed I will contact you personally.

Once released, you will find it free app named Winulator-beta, which will be used to iron out the bugs and issues. Later, a paid Winulator app will surface and receive regular updates for stability and improvements. The documentation site will be updated before release, and I'll announce the release throughout the Internet channels you have subscribed.

Tuesday, November 27, 2012

First demo video

So here as promised - a video. The two Android devices you see here are Samsung Galaxy and Asus Transformer Eeepad TFT-101. The netbook is a Lenovo IdeaPad S12. The game runs locally on the devices.

In-game sound doesn't work yet. I'm working also on other fixes before releasing the app to the Android Play market. But once I do, you'd be able to run Caesar III too, provided you follow the instructions that appear at the documentation site. This will be possible once I officially announce the first version of Winulator-beta.

On the technical side - the target devices bear an ARM processor, even though the original program required an Intel processor. I have written a desktop helper application that converts the machine code from Intel to ARM, so relieving the need for Winulator to waste precious ARM cycles for emulation. Also, some Windows APIs were implemented to provide the run-time environment necessary for the hosted program to work. 

Currently I am testing Caesar III, but more games can surely be supported. As for the goal I set forth, I'll aim to provide a dedicated support to each of the programs that the users would like to run, in a way that will make it run smooth and playable (when it concerns games).

Friday, November 23, 2012

Winulator - short introduction

You've reached the first post about Winulator. What is this about? Some of us who grew up in the 90's, still feeling amorous with some of the games from that era. Almost two decades later, mobile devices are becoming the new PCs. Originally I came from a Windows-based world on my early programming days, so I felt inclined to bring some of the games too.

I am not referring to the old DOS games. Those already have emulators for Android and iOS. I am talking about games released for Windows 95/98, based on DirectX APIs. Those games assume a Pentium 90Mhz CPU, and usually no more than 256MB of memory. You have guessed right - today's mobile phones and tablets are strong enough to run these games.

However, some adapting needs to be done, and this is where Winulator takes its place. The OS is entirely different. Not a problem, we can implement the DirectX and Win32 calls. But wait! The CPUs architectures are different - if only these games were compiled for ARM instead of Intel. Also not a problem. We can either perform just-in-time compilation between the two architectures, or - we can convert the entire binary before it runs. And what about touchscreens? We will deal with that later.

At the current state, the app is still in development - but stay tuned - I plan to put some nice screenshots and demo of the app running the lovely PC game Caesar III on my two Android devices.