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.