It’s again the Christmas season, and time again for the annual holiday update, now for the second time! As our greeting to you, here’s the (apparently now traditional) Christmas tree easter egg screenshots from Dark Castle running the latest M.A.C.E. version (it appears only when the game notices that the system time is set to 25th of December in UTC time):
Dark Castle was one of the first games we actually tried M.A.C.E. on over one year ago, and it was already working quite well on the previous Christmas. At that time, the CPU bugs were preventing FireBall levels from being played, but luckily those issues were fixed during this summer, and now all the levels are in playable state.
There are however still minor hiccups, such as weirdly behaving robots, dungeon key being always on the right-most side in the Trouble 3 level, Mutants spawning too quickly, Burning Eye not shooting fireballs, etc. Pukka thinks a common denominator for these issues might be some random number generation code in Dark Castle, but it still needs to be analyzed further.
To celebrate the progress, we recorded a short video of Dark Castle gameplay (with Christmas tree in The Great Hall) on this Christmas Day for your entertainment – all rooms were visited, but sadly I was not lucky enough to topple the Black Knight off his throne this time, even after two tries:
Teasers for 2020
Sadly the holiday season has been very busy, which has also slowed down the project progress a little bit. There’s still some teasers for upcoming features which are almost complete, but not yet ready for release:
After we tested Bolo in M.A.C.E., we got inspired by the network support it has and had a idea about trying to implement a simple MacTCP driver in M.A.C.E., which would allow us to try out Bolo’s network gameplay we used to play with long time ago. However, the non-standard IODone mechanism, and Bolo’s tricky network performance measurement code, there is still a bit of work to be done to get that into playable state. However, MacTCP Ping seems to be working already quite well, including the DNS resolver:
There is though a “record route” option in “Options” menu, which we could not test because for some reason even using the same option on the real ping (ping -R) on Mac OS X causes the echo packets to get lost.
A more proper introduction about how this all works will be added later when we get the entire driver to work. For now, at least UDP calls to the .IPP driver seem to be working on an “okay” level, although they have so far been really tested only with Bolo, and only for the very first couple UDP packets exchanged by it.
As many people have requested, we are already experimenting with adding a third platform into the build system, Windows (from Microsoft, the notorious arch-enemy of Apple Computer 🙂
We already fixed a couple thousand build errors, but there is still a lot of work to be done. For example, the MSVC compiler has a lot of source-code level differences in the C compiler, which need to be abstracted to allow the code to compile both with LLVM/GCC and MSVC targets. Additionally, the networking, file system APIs – and a bunch of other things we have – are POSIX/Unix-only at the moment, which need Win32/64 equivalents to be implemented.
Beyond those two work-in-progress features, we are also still working on increasing stability through bug fixing and debugging. You can always follow the progress on this blog, and check the list of compatible applications in the “Status” page. Thank you for you interest in our efforts, have a merry Christmas!
Full list of changes since last post
2019-12-21 14:09:25 +0200 • Fix VerticalRetraceMgr byteswap bug in inVBL flag 2019-12-21 14:08:18 +0200 • Add UDPWrite implementation to MacTCP emulation 2019-12-20 03:14:50 +0200 • First successful UDPRead in MacTCP call (w/ Bolo) 2019-12-20 01:00:52 +0200 • Implemented UDPCreate for MacTCP driver 2019-12-20 00:01:36 +0200 • Add MacWWW test app (not working, needs color QD!) 2019-12-20 00:00:21 +0200 • Make MacTCP ipctlEchoICMP support async operations 2019-12-19 23:57:26 +0200 • Improve DA/DeviceMgr enums (accXXX, ioInProgress…) 2019-12-19 23:55:07 +0200 • Fix byteswap bug of dCtlDelay in SystemTask 2019-12-18 19:22:56 +0200 • Disable unused 128-bit float test code 2019-12-17 04:29:47 +0200 • Reinforce interrupt safety of device manager calls 2019-12-17 04:02:39 +0200 • Don't close the MacTCP driver 2019-12-15 05:23:27 +0200 • Add very primitive foundation for MacTCP driver 2019-12-15 03:42:24 +0200 • Add a couple more kCStackBased mixedmode handlers 2019-12-15 03:40:51 +0200 • Add missing prWrErr from earlier PRAM modification 2019-12-15 03:39:53 +0200 • Make RSReturnValue argument safe for function call 2019-12-15 03:37:15 +0200 • Add the DRVR 22 MacTCP (.IPP) driver to fake ROM 2019-12-15 03:35:32 +0200 • Add MacTCP Ping test app to CMake JSON config 2019-12-15 02:48:56 +0200 • Fix indexing for GetFileInfo/SetFileInfo 2019-12-15 02:45:45 +0200 • Start work on kCStackBased MixedMode routine type 2019-12-15 02:44:19 +0200 • Fix off-by-one-byte bug in FindFolder fld# handler 2019-12-13 03:25:39 +0200 • Add dummy ReadXPRam and WriteXPram for Bolo