Aeon Emulator Blog

October 27, 2010

October Status

Filed under: Aeon — Greg Divis @ 9:58 pm

Where did the summer (and fall!) go? My last post was in July, and that was just a change list.  It has been very busy for me, but I have not stopped working on Aeon – I’ve just stopped blogging about it :)

I’m still a lot busier than I was last year at this time, but I’ve settled into enough of a routine now where I should be able to be able to make more time for Aeon development and blogging.  I’m also going to try to keep myself on some kind of schedule so I get blog posts out more regularly.  If you’re one of the few people that have read and enjoyed some of my posts, I’ll try not to disappoint.

I mentioned that I’ve been quietly working on Aeon.  I expect to have a new build released soon (probably early next week).  Until then, here’s some proof that I’ve made a few improvements:

Under a Killing Moon

Under a Killing Moon now works, though it’s a bit slow.  I’ve added some more programs to the compatibility list too, and I’ve fixed a number of long-standing bugs.  As the complexity of the software I’m trying to emulate increases, the difficulty in debugging emulation errors goes up with it.  Finding some of the protected mode issues was incredibly tedious.  I’ll just say that I have a tremendous amount of respect for what the DOSBox guys must have gone through getting the level of compatibility it has today.

Going forward, I’ll be resuming the same type of posting that I did before, and also addressing some common questions I’ve been getting (where is the source code? why is it slower than DOSBox? why would I ever use this?)

Advertisements

July 7, 2010

Aeon Version 0.61

Filed under: Aeon, New Version — Greg Divis @ 8:10 pm

I figured it was finally time for a new build, so here’s what’s new:

  • Switched to .NET framework 4
  • Implemented x86 protected mode task switching support (Quake, CWSDPMI, C&C)
  • Fixed bug with 80-bit operand floating point instruction decoding (XCOM)
  • Added a few missing floating point instructions
  • Tweaked DOS emulation to get programs compiled with DJGPP working (Quake)
  • PIC now allows its base interrupt vector to be reprogrammed
  • Rewrote address decoder to improve emulation performance
  • Finally fixed issue preventing Borland’s RTM extender from working (Jazz Jackrabbit)
  • Improved Sound Blaster DSP audio, should hopefully eliminate most of the playback glitches
  • VGA LineCompare register is now properly emulated (Jazz Jackrabbit, Incredible Machine 2)
  • Implemented instruction tracing for CPU trap flag (Second Reality – at least the menu loads now)
  • Fixed bug in DOS EXE loader where maximum memory field was not respected
  • Added support for ADPCM compressed playback on Sound Blaster (Traffic Department 2192)

This is pretty much a compatibility and performance update with no new application features.  There’s still a lot of open issues I’m looking into, but this should be faster and more stable than 0.60.

Download here.

June 28, 2010

Still Making Progress

Filed under: Aeon — Greg Divis @ 9:35 pm

Wow, it’s been a while since I’ve posted anything here.  Things have been kind of crazy for me lately but I haven’t stopped working on Aeon altogether:

Quake

In addition to lots of compatibility fixes, I’ve also made some significant performance improvements, including a (highly experimental) x86 –> IL recompiler.  There won’t be any major new features next time I post a build, but you should find that a lot of games that didn’t work before will work now, and with better performance.  Oh, I’m also working on finally fixing that stupid “Speed:” emulation throttle so it isn’t completely useless on everything except 100%…

I’ve finally got some spare time again now at least occasionally so I’ll try to get back to posting more on this blog.  No promises though…

April 13, 2010

MegaZeux

Filed under: Aeon, Fun & Games — Greg Divis @ 7:00 pm

I’ve covered both ZZT and Super ZZT, but I really can’t leave it at that. Something of a community formed around ZZT, making games and exchanging them through BBS’s and some of the online services that came before the web. At least one of these folks decided that it was time for a proper update. In 1994, a software company (which so far as I can tell consisted of one guy), released MegaZeux as shareware. When you start it up, it runs the intro to its included game, Caverns of Zeux.

MegaZeux Title Screen

Like ZZT, MegaZeux displays all of its graphics in 80×25 text mode – but it pushes this “genre” of game about as far as it can go. Many of the characters used to make the image above aren’t part of any 256-character code page – MegaZeux actually changes them on the fly.

Caverns Title Screen

In addition to custom fonts, the game features a vastly more powerful game creation tool where you could customize nearly every aspect of the game both in the editor and using the game’s scripting language. The sample game alone did crazy stuff like create animated tiles by constantly reprogramming the character set, all from the game’s scripting language.  Oh, and it plays .MOD files as background music. WIN.

For a fan of ZZT like me, this game was pretty much the best thing ever, and while I made some stuff with it, other fans got a little more hardcore.  To see what you could pull off with a text-mode game, check out some of the screenshots below from a few other MegaZeux games which were made over the years.

Honor Quest Image 1 Honor Quest Image 2 

Weirdness Title Weirdness Image 2

I had so much fun with this game that I had a short-lived project where I tried to remake it back in 2003. I had something I built from scratch that could import MegaZeux games (not perfectly), and with a few of the limitations removed. I lost interest in working on it eventually, but I understand others had more patience after I left the scene.

April 12, 2010

Super ZZT

Filed under: Aeon, Fun & Games — Greg Divis @ 9:46 pm

In my last post, I wrote a little about ZZT. Its success led to something of a sequel released in 1991 called Super ZZT.

Super ZZT Title Screen

Its gameplay is nearly identical to ZZT, but with a few technical changes and enhancements. Most noticeably, the game itself now uses the lower-resolution 40×25 text mode, but the boards are much larger and scroll with the player.

Super ZZT Gameplay

Like ZZT, it includes an editor for making your own games, but you had to run the game with a special command line argument to enable it; also, the editor runs in the higher-res 80×25 mode, which could make it tough to figure out when something visible in the editor would be visible in the game. In all, it’s a fun enough game for a little while, but in my opinion it lacks the novelty value of the original ZZT and doesn’t really deliver that many improvements. Still, it came out only a year after ZZT, so you can’t really expect that much to be different.  I may have made one or two little Super ZZT games years ago, but I never really got into it. Judging from the relative lack of Super ZZT content on the Internet today, I wasn’t the only one.

This was the first and only actual sequel to ZZT, but certainly not the last game to follow in its footsteps. Next time I’ll conclude this little series with a look back at ZZT’s spiritual successor.

I’ll get back to some technical posts again after that, I promise :)

April 9, 2010

ZZT

Filed under: Aeon, Fun & Games — Greg Divis @ 4:41 pm

Ever play anything powered by the Unreal Engine? You know, a game like Gears of War or Mass Effect to name just a couple? Impressive games with impressive, nearly lifelike visuals. If you’re familiar with the Unreal Engine, you probably already know that it’s a product of Epic Games, a company that’s been around since the early nineties. In this post, I’m going to take a look at their very first published game. If you think Gears of War was striking, you’ve never seen ZZT!

ZZT Title Screen

Yes, those are ASCII graphics you’re looking at. Well, let’s start playing!

Gems give you health!

You control the little happy face as you travel between boards collecting gems, ammo, torches and shooting enemies, solving puzzles, etc. It’s actually quite an entertaining game, and before long you’ll adjust to its graphical style.  If this were all there was to the game, it would be a fun little diversion for a little while, but ZZT had a killer feature I haven’t mentioned yet: the built-in editor.

ZZT Editor

Turns out that entire built-in “Town of ZZT” game was built with the ZZT Editor. Using this, you can create some surprisingly sophisticated games.  The super-simplified ASCII “graphics” are actually a benefit here, as the aim is to have a very simple, but powerful, game creation system that anybody can use.  It should be mentioned that in addition to basic stuff like drawing terrain, items, creatures, and obstacles, you could place objects and program them in a simple interpreted language.  Over the years ZZT was out, people used the ZZT editor to create some pretty amazing stuff given the limitations.

If I sound like I’m talking from experience, it’s because I made quite a few games with ZZT back in the early nineties, and I have a lot of fond memories of it. It works in Aeon well enough, though it relies on keyboard auto-repeat behavior which I haven’t emulated yet, so if you want to play it for any length of time you’ll be better served by something else. (Unless you don’t mind tapping the arrow keys for every single step)

As you might expect, the inclusion of the editor gave the game something of a fanbase, as there was really nothing else like it at the time. It wasn’t long before the sequel, Super ZZT was released, and I’m going to talk about that next.

[Note: Sorry about the funny-looking fonts in the screenshots and Aeon 0.6’s 8×14 character set. I haven’t had a chance to fix it up yet.]

Aeon Version 0.60

Filed under: Aeon, New Version — Greg Divis @ 2:27 pm

I’ve fixed a couple long-standing bugs and added support for some features I’ve been wanting to get in here for a long time – SVGA and the PC speaker. Also new to this version is the ability to mount CD ISO files and virtual floppy disk image files directly thanks to the excellent DiscUtils library. This is also the last version of Aeon that will target .NET 3.5; with .NET 4 scheduled for release on April 12, all future builds will require that version.

  • Internal code refactoring
  • Fixed expanded memory page aliasing bug (Star Trek: 25th Anniversary)
  • Added PC speaker emulation (tones only, sampled playback won’t work)
  • Added support for changing the character set
  • Added support for 8×14 character resolutions in text modes
  • Support for mounting disk image files (vfd, iso)
  • Fixed a nasty bug in the PIT which caused random timing-related crashes
  • Partial VESA VBE 1.2 implementation – some SVGA games will work (Master of Orion II, Lords of the Realm II both tested)
  • Fixed a Sound Blaster detection bug

Download here.

March 15, 2010

Aeon Version 0.58

Filed under: Aeon, New Version — Greg Divis @ 8:20 pm

Hey, I’m still working on this! Who knew? Unfortunately, there’s not much improvement with overall compatibility in this release. I got sick of staring at and debugging disassembled programs, so I started adding things to the user interface and refactoring my code instead. The usual disclaimers apply: this hasn’t been tested much and may not work on your system at all. Use at your own risk.

  • Fixed memory leak when launching more than one program without restarting Aeon in between
  • Minor performance improvements
  • Lots of DOS process management fixes
  • Command interpreter is now less of a kludge and uses interrupt-driven I/O like everything else
  • Added configuration support and configuration editor – not complete yet
  • Can now change drive mountings while emulator is running (with sometimes disastrous results – use only for disk swapping!)
  • Integer divide-by-zero CPU exceptions now handled more efficiently
  • Added command prompt change current drive command
  • Added some primitive MSCDEX support – a _few_ CD-based programs may work now
  • Fixed bug in LMSW instruction
  • Fixed bug in DOS get file attributes function
  • Added support for launching DOS programs/configuration files via command line
  • Fixed intermittent crashing due to bug in mouse driver callback
  • Fixed some issues with how Aeon handles invalid MS-DOS file names
  • Lots of internal code cleanup and refactoring

Download here.

January 18, 2010

Aeon Version 0.56

Filed under: Aeon, New Version — Greg Divis @ 7:54 pm

I’ve fixed the issue causing 0.55 to fail on 32-bit systems. Hey, this is why I call it an unstable alpha – gives me an excuse to make stupid mistakes like this :)

That being said, it isn’t terribly difficult for me to run this on the 32-bit CLR, so I’ll make sure that gets done every time I post a new version from now on. Sorry about this.

Download.

January 17, 2010

Aeon Version 0.55

Filed under: Aeon, New Version — Greg Divis @ 10:03 pm

Finally time for a new build! I’ve made a pretty good amount of progress. Most of the floating-point instructions are working, and I’ve implemented some of the actual protection mechanisms in protected mode, along with paging. Most of the 32-bit DOS extenders I’ve tried work at least somewhat now, with one notable exception being Borland’s DPMI.000 extender (which, in my humble opinion, is the most evil piece of code ever written). Some of the more advanced 32-bit games don’t work yet either, though some do (Daggerfall, for example, if you’re willing to jump through a few hoops). Here’s the change list:

  • Implemented about 90% of x87 floating point unit
  • Partially implemented CPU protection levels
  • Added support for paging
  • Fixed a few DOS memory allocation bugs
  • Minor Sound Blaster fixes
  • Fixed some protected mode instruction bugs
  • Added keystroke to release captured input (CTRL+F12)
  • Implemented a few more missing instructions
  • Better support for TSR’s

In order to support paging, I had to change a lot of code – unfortunately, Aeon may run a little slower as a result, though I haven’t noticed any change on my test system. Also, it’s possible that I’ve broken compatibility with something that used to work. Again, I haven’t seen anything in my regression tests, but my tests don’t include running every game in the world…

Download here.

Update: It seems that some of the changes I’ve made may have broken Aeon on 32-bit versions of Windows. I’m going fix this and repost a new version, then set up a proper 32-bit test system so this doesn’t happen again.

« Newer PostsOlder Posts »

Blog at WordPress.com.