January 2009 Archives

Captain's Log / star date 2009.0129

Some more progress on my Secret of Monkey Island disassembly. I've been having some problems recompiling the disassembled code back into a working binary. None of the disassemblers I've used produced anything that I could recompile with DevPac or ASM-One. I'm currently looking into patching the code directly, which shouldn't be too hard as long as I manage to patch the Amiga Hunk header info. The reason I want to patch the main executable is so that I can insert some code that flashes the screen using the Intuition function DisplayBeep() every time that the GetMsg() routine is called to process Intuition input messages, because I need to pinpoint where things go wrong on the CDTV. As I mentioned before there's a problem with the mouse button inputs when I try to play this game on the CDTV. Monkey Island uses system friendly programming and as such has so far been an interesting learning experience! 

After more than a week of straight disassembling, analyzing and cross referencing in my free hours I decided to take a break for a couple of days. In another flash of nostalgia I decided to unbox my Commodore 64 and hook it up to my 1084 monitor. I'll be adding a 1541-II diskdrive soon so that I'll actually be able to play some games :-) Playing around with the C64 also gave me the opportunity to take a few photographs of the 8-bit Commodores in my collection. New pics of my C64 and C16 have been added to the collection photo pages. Check out the photos by clicking on the links in the menu on the right!

Captain's Log / star date 2009.0118

As I mentioned in my previous post I've decided to patch Secret of Monkey Island in order to make it work on my CDTV. The first problem I noticed was that there was a problem in getting the controls to work. Mouse button clicks weren't registered correctly it seems. Intent on fixing this problem I thought it would be a good idea to add some more functionality to the game that would benefit CDTV users (well, me anyway)! 

The game requires moderate keyboard action at some places. For example, you're required to enter a numerical security code at the beginning of the game, which serves as a crude copy protection device. Also, whenever you want to save the game you need to press the F5 key and pausing the game requires pressing the spacebar. Although Commodore has released a CDTV keyboard, it would be much nicer to have this functionality by pressing buttons on the standard CDTV remote controller! So besides making sure the games runs on the CDTV I will be adding some features to make the CDTV experience of this game as good as possible. :-)

Well then, the recipe for disassembling and patching code is as follows. A good A500, a disassembler, a freezer cartridge that allows you to interrupt the Amiga and examine code and step through it in trace mode, and lots of documentation about the Amiga system and the Amiga's processor, the Motorola 68000. So I dug out my trusty old Action Replay MKIII cartridge and plugged it into my A500. I also pulled the Amiga ROM Kernel Reference Manuals from my bookshelf and stacked them on my desk. I also have a very nice book about the 68000 processor by Tim King and Brian Knight called "Programming the 68000", which I pulled too.

Right, armed with these tools I set to the task of downloading a disassembler so that I could disassemble the main executable of Secret of Monkey Island. Off to a visit to the wonderful Aminet archive with my A500 and I soon found D68k, which is a nice and fast 68k family disassembler by Denis Ahrens. I downloaded and extracted the package and disassembled the game file. I've been freezing the game, cross referencing the disassembled code with the Amiga ROM Kernel Reference Manuals and the "Programming the 68000" book and had a wonderful time learning about 68000 assembler and Amiga system programming at the same time! I've dissected lots of code inside the game. The Action Replay cartridge is wonderful and allows me to trace through the game one instruction at a time and set memory watch points to monitor any change in specific memory locations. I used to have an Action Replay cartridge back in my early Amiga days, but all I used it for in those days was to save screen dumps and to rip samples and modules from memory! :-) It's nice to finally make use (and understand) some of the more advanced features of this cartridge.

In just the space of an evening and an afternoon I have already located and dissected the code that starts the game, opens system libraries like intuition.library and graphics.library and the console.device, the main loop that waits for input and some of the system message processing code. There remains a lot to be analysed, but I'm positive I'll be able to pinpoint the sections of code that I need to adapt to my needs very soon. I think I've already located the portion of code that handles keyboard input, which would allow me to implement a workaround to accept CDTV remote input instead of keyboard input. I'll report further progress here as I have it! 

Captain's Log / star date 2009.0117

The Secret of Monkey Island is one of the coolest adventures games I've ever played and almost perfectly embodies what was so cool about my Amiga experience in the early nineties. I've been playing lots of classic Amiga games in my living room lately using my CDTV. I've been playing around with the idea for quite some time to burn Secret of Monkey Island to CD and see if I can play this wonderful game on my CDTV from the comfort of my living room chair without disk swapping! Lucasarts did announce a CDTV version of Secret of Monkey Island and it appears that, at least in Germany, a CDTV version was released. It is very rare though and usually goes for a hefty price. So burning my own version of this game seemed like a good idea. Although it seemed to be simple enough to do, I soon found out it would involve way more work than I thought. Read on!

Secret of Monkey Island box front1.jpg
Secret of Monkey Island disks.jpgcdtv angle front right 1.JPG

The Secret of Monkey Island is fortunately harddisk installable so it shouldn't be much of a problem to run from CD as it uses AmigaDOS. But you can't just burn something to CD-R and expect it to boot on a CDTV. The CDTV needs a specially prepared file to be included in order to be able to boot from a CD, the so called CDTV.TM file. The CD32 system uses a similar file to create bootable CD32 CDs. To be able to author CDTV titles it's a good idea to install the CDTV development system. It can be found inside the Amiga Developers Kit. 

So after some trials and failures I finally had a bootable version of Secret of Monkey Island on CD! But alas, for some reason there's a problem with the controls. The game seems to react correctly to the first left or right mouse button click, i.e. Guybrush will walk to where I clicked, but subsequent mouse button presses have absolutely no effect. This happens whether I use the remote control pad or the trackball controller. So it looks like I have a nice new project on my hands. Getting this damn game to work on my CDTV! This will prove to be quite a challenge, because it will involve digging into the game's code and disassembling and dissecting 68000 assembler code! I've long had the intention to get into 68000 assembly and learn about the Amiga's system. It looks like I've got the perfect opportunity here. Stay tuned! ;-)

Captain's Log / star date 2009.0115

With the holidays over and everything back to normal I've had some more time to tinker with my Amigas. As you may (or may not) recall from one of my earlier posts, I originally had the idea to do a retro survival of sorts using just my A500. Basically the plan was to see how much I could do with an A500 without resorting to my modern day iMac. Unfortunately the time that was really left to play with my Amigas during the festive season was way less than I had originally anticipated which prompted me to delay the project. 

Now that I have some more time I have started to slowly configure my A500. The A500 is actually an A500 Plus with 2 MB of Chip RAM. There's a Viper 530 accelerator inside which has a 68030 CPU clocked at 50 MHz which is very decent for an A500! The Viper 530 has an additional 16 MB of 32-bit Fast RAM mounted. I installed an IDE-Compact Flash adapter and hooked up a 1GB Compact Flash card to the 2.5-inch IDE port of the Viper 530 to serve as a hard drive. I partitioned the drive as follows:

DH0: 5MB for Workbench 1.3
DH1: 5MB for Workbench 2
DH2: 10MB for Workbench 3.1
DH3: 100MB for Apps
DH4: 100MB for Documents
DH5: 780MB for Storage

This is a scheme I've used for quite some time. The first three partitions are used for installations of Workbench 1.3, 2.04 and 3.1 respectively. The Viper 530 has a 68000 fallback mode which allows me to use the A500's onboard Kickstart, which is a 1.3 ROM. If I ever need WB2.x for any reason I'll soft kick it. To have the correct partition boot at startup I will place some code in the startup-sequence on DH0: which detects the current Kickstart and continues to boot from the appropriate partition (I will post the code here when done).

The other partitions are used for apps (and HD installable games), documents, downloads and other stuff. After I had installed Workbench 3.1 from floppy I proceeded to install and configure AmiTCP 3.0b2 and AmiPPP. I'm using a PPP connection over the A500's serial port. The serial port is connected via a null modem cable to a Mac Mini which has a PPP daemon running and acts as a gateway to Internet. My A500 is online! :-) It's slow as hell, because AmiPPP is unregistered and seems to cut the already abysmal effective speed in half. Unfortunately AmiPPP can't be registered anymore, so I'm going to see if I can replace it with an alternative in the near future that doesn't throttle the bandwidth.

After I got my A500 online I used ncFTP to download and install HippoPlayer off Aminet and downloaded a couple of my old Protracker mods from my network storage server. While listening to those delicious tunes I continued to install Tracksaver which is a nice ADF creator/writer, which always comes in handy. As soon as I get more time I'll be installing MUI (extra GUI functionality in Workbench), IBrowse (a browser) and more!

Captain's Log / star date 2009.0107

A long overdue visit to the PD Dungeon! Another 17-Bit Library slideshow is reviewed including, ofcourse, a complete video of the slideshow. I promise the next PD disk will feature something different than a slide show. For now enjoy the slideshow here and check out the earlier reviews right here in the PD Dungeon. Enter at your own risk! ;-)

Captain's Log / star date 2009.0106

Lots of time spent on the ASUS EeePC. I added a Windows XP partition next to the default Xandros partition and installed WinUAE. I could try E-UAE on Linux, but my experience has been that WinUAE tends to give better performance and more features. I've created a couple of UAE configs that boot some of my favourite Amiga games like Lotus Turbo Challenge II, Pinball Dreams and Batman: The Movie. It really is nice to have such a compact, portable Amiga, albeit emulated. I'm currently on the look out for a nice USB gamepad for the games. 

I also got a Subway USB controller last month that's been lying on the shelf ever since. It connects to the clockport of an A1200 and adds 4 USB ports. I could probably easily hook it up to my A1200, but I'd rather create a souped up A500. A clockport expansion exists for the A500 which adds 2 clockports to this machine. I spent quite some time last night trying to fit a Multivision scan doubler, a clockport expansion and an accelerator into a spare A500, but the problem is that the accelerator and clockport together are too high for the keyboard to fit back into the case. The pins of both the Viper 520 and 530 are rather long and I guess they could be shortened considerably, but I'd rather not mess with these rare, expensive A500 accelerators. The A500 is a dog to upgrade with harddisk and networking compared to an A1200. But I love the A500 so much I'll get round to it one day. :-) I did get time to take a couple of new snaps of my Viper 520 (both of them) which I've added to the Viper 520 page. Check them out in the menu to the right!

Captain's Log / star date 2009.0103

Happy New Year! Hope you had a good festive season! Just a quick update. I polished and cleaned one of the two A3000's I own a couple of days ago and took the time to register some of its details, as I have never really used it that much since I acquired it. I used the opportunity to take a few snapshots and updated the A3000 page on my site with some of these photos. I also uploaded some photographs I took earlier this week of my A1200. You can find these pics along with many other pictures of my Amiga collection in the menu to the right of this page. Enjoy!

About this Archive

This page is an archive of entries from January 2009 listed from newest to oldest.

December 2008 is the previous archive.

February 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.

Powered by Movable Type 4.01