Eye of the Beholder - A Dungeon Crawling classic as a port on the C64 with an exclusive interview!


We don't often do Interviews as it's not our style, but with the upcoming dungeon crawler port of Eye of the Beholder, which is coming to the C64 I'd be damned if I was to miss out. So as a special bonus we contacted the head coder of this fantastic port by Andreas Larsson with a number of quality questions including many from our readers to find out even more about this highly impressive dungeon crawler C64 port that could be coming this year!

IRN:

Thank you for allowing us to interview you Andreas Larsson, please take a moment to tell us a little about yourself?

40 years old from Sweden. House, dog, wife and two daughters 7yrs and 19 months. Works as the CTO of Global Warning System. General computer nerd and loves the demo scene, especially the C64 retro demo scene.

IRN :

How did the love of retro gaming come about, where did it all begin for you?

It has nothing to do with retro. These are the games I grew up with and I still love them.

IRN :

How did you first get started with computers in general and the C64 in particular?

When I was 5 my family bought a C64. My brother was 12 at the time and started to learn how to code early on. I guess I was inspired by him and I myself started to code BASIC at the age of 5-6. I have very weak memories of this period naturally but still have the disks with my old code (now transferred to PC for preservation).

IRN :

What attracted you to the C64 as a development platform? In your opinion, was it as awesome as we like to think it was?

As I said I started with C64 when I was 5, but this was only BASIC and I quickly moved on to Amiga when we bought our A1000 at the age of 10 iirc. I stuck with BASIC, specifically HiSoft BASIC and Amos BASIC. After that it became PC with Pascal and C, approx at the age of 12-14 or so. I returned to the C64 when I started to work with Joel ‘RaveGuru’ Ricci back in 2000. He invited me to a C64 demo scene party called Floppy and I got very inspired. This got me start learning 6502 assembly and grew my interest in demo scene stuff. I quickly joined his group called Instinct. Later on be merged with Booze Design, famous for demos such as Edge of Disgrace and Uncensored, and since then I’ve stuck with that group and intend to ‘til I die.

IRN :

We've heard most clearly from out of the retro scene you're behind the upcoming Eye of the Beholder C64 port, do tell, is this true and actually happening?

This is true. This is my second attempt. My first attempt was targeted at C128 with disk drive but got stuck due to memory limitations.

IRN:

How did this port come about, was it something you've always wanted to do?

My love for Eye of the Beholder is strong. I started playing this game at my cousins, they had an A500 with memory expansion. Our old A1000 only had 512kb so I couldn’t play it. When I finally bought my A500+ at the age of 13 I could properly play both EotB I and II. I loved them and using my Amos skills and new found hexdump interest using Directory Opus I started to reverse engineer the save games. I then created a save game editor for the game. This was my first attempt at reverse engineering ever.



As mentioned earlier, I moved on to PC etc and EotB was forgotten for a few decades. Then all of a sudden, dunno why, I started with my first C64 port and began reverse engineering it. This process is documented on my wiki http://eob.wikispaces.org together with f.e. CFou (He who did the AGA port to Amiga). But when I got stuck I stopped reverse engineer the game.

Then back in 2007 I got my first Apple computer and iPhone and thought that EotB would be nice on iOS so I resumed reverse engineering the game. This time I actually disassembled the whole DOS-binary, around 250k lines of code. Function by function is recoded in Java and re-implemented the full game to pixel precision. Then I ported that code to Objective-C. Failing to acquire the publishing rights back then I lost interest though. Then all of a sudden earlier this year Micke ‘TwoFlower’ Backlund told me I really should resume my C64-port. Knowing EasyFlash and 1541U were widely spread and that emulators supported them I thought I could at least give it a try.

IRN:

Obviously Eye of the Beholder was and still is an incredible game, but putting this game on the C64 is an incredible achievement. So please share how did you start coding this with the resources at hand?

As I said I had a previous attempt that failed. Knowing this and the limitation, during the 2nd run I first did a quick chat with Micke, who introduced me to Illka regarding feasible graphics formats. We concluded that multicolor bitmap with a sprite overlay to handle color clashes would work quite well. Also mine and Illka’s processes are quite similar and fit perfectly into each other (such as working with indexed PNG instead of esoteric formats etc.). I created crude convers of all assets and just slammed everything into memory just so make sure everything fit. Then I started porting the rendering code from my Obj-C and Java code just to make sure it could render the dungeon fast enough. When this was done and I saw that the amount of ROM and RAM still were within ok limits I announced the game and continued to do a full port.


NPC system done

IRN:

Can you tell us a little about the team you're working with, who they are and how did you come across them in your travels?

The team, i.e. those who have helped me, so far are are all friends from the C64 demo scene community.

Micke ‘TwoFlower’ Backlund. I started to know Micke back in 2005 when Instinct together with Triad did the demo Sphaeristerium. Micke did the graphics. Micke helped me doing some of the graphics during my first attempt at porting EotB to C64.

Ilkka ‘ilesj’ Sj√∂stedt. Micke introduced me to Ilkka when I asked for help with the graphics for the new version. He told me Ilkka had extremely good conversion skills and custom made filters for Photoshop so that we could get nice graphics quickly without having to hand pixel everything. This was good because we wanted to test the new graphics mode and quickly get all the graphics into the game to check the memory limits. I’ve never met Ilkka irl yet and really look forward to it. Ilkka is behind all professionally converted and hand pixeled graphics in the main dungeon display. (all ugly converted graphics is by me J ).

Oliver ‘Veto’ Lindau. Oliver is one of the co-founders to Prior Art behind titles such as Caren and the Tangled Tentacles and the new fuzzball game SAFTS. Me and Oliver have never done any demo stuff together but I’ve always admired his style and his skills and we’ve always had good chats both on IRC and IRL. I asked him for intro graphics during the first port attempt and he drew the EotB logo. I re-asked him if he still was interested during this second attempt and he luckily was. He’s currently pixleing the intro graphics.

Lars ’Mirage’ Verhoeff. Me and Lars worked together during my first big C64 demo called The Wild Bunch (which won the X demo compo back in 2006). It was a co-op between Instinct, Triad, Focus and Horizon. I had only met Sander/Focus and he introduced me to his teammate Lars. Lars is nowadays a fellow member of Booze Design. Lars has done the graphics for the main user interface, the portraits and the 2d icons for all items.

Sascha ’Linus’ Zeidler. Sasha I also started to know when we did The Wild Bunch demo. He was a member of Triad back then and iirc Micke introduced him. He did the music for the demo. He also have done the music for EotB during my first attempt. He has acknowledged he’s still onboard and will refine the tunes for this second attempt.



Pascal Safour:

Have you or the team found secrets in the code, things that have yet never been found or revealed? For an old game like this it would be fantastic !

I’m not sure what is commonly known. I’ve found several bugs in the original version which mostly lead to graphics corruption and crashes in the original if you know how to trigger them. What has struck me is how little of your stats that really matter though.

Pascal Safour:

Do they have the project to create an oldschool-looking "EOB4" (not under that name obviously) in the future ? Since they know the game so well... THAT would be a blast!

Right now I focus on getting EotB I finished first. This is a straight port and it’s quite obvious SSI didn’t make the engine general at this point. There are quite some hard coded stuff that is not data driven. This was somewhat fixed for EotB II and even better in EotB III. It wasn’t until Unlimited Adventures the engine became fully data driver as far as I know. So, to make anything new on the EotB I engine, hard coded stuff has to be ripped out and become data driven first.


New Flind Graphics

IRN:

Has there been any struggles in development, times when you felt like putting the game aside for good?

I’ve mentioned my first attempt… J This second time no such feeling have even been close. It has been a smooth ride from the start and no hiccups what so ever.

IRN:

On a positive side, have you had any humorous moments creating the port such as weird error situations?

No really. I created a nice base plate which allowed me to efficiently use the Easy Flash cartridge without having to think so much about bank switching etc. It’s all quite smooth and just a simple matter of porting Obj-C code. I created some stuff early on that now kind of acts as the operating system, taking care of timers, bank switching, event dispatching etc. Everything is built on top of that and it has proven to be a very solid ground. Some humorous moments did happen where the graphics bugged out and became quite fun to watch:

Introducing drunk mode:



Tom Hame:

Was Eye of the Beholder the only Dungeon Crawler you've ever played or did you enjoy hacking with a mighty +10 sword at Skeletons in any other games?

EotB I, II, III, Land of Lore I, Might and Magic III, Legend of Grimrock and many others. But those are the ones that really stuck.

Andrew Michael Hayes:

Do you plan to support NTSC or do you prefer your sanity?

NTSC is supported out of the box.

Rodion Pulsar:

Will the overall speed of the game be at least like the Amiga one ?

At this point the game is a bit slower than the Amiga version but I hope to be able to optimize the renderer.

Dany Quest:

Is this going to be an engine that could be "customised" for any other environment/universe? A "Call of Cthulhu" dungeon/town of the damned crawler, for example

First things first. I want to finish EotB before thinking of generalisation of the engine.



Christine:

Are there any limitations to porting EOB over to the C64? If so what would you love to add that you couldn't?

There are tons of limitations and porting them while maintaining the same feeling is what makes this fun. There hasn’t been a thing I had to completely leave out though (yet).

Teleportation! 

Christine:

Will the game be finished soon, how far are you at completion?

Most code for the game engine and render engine is complete. Notable visual features still missing are particle explosion effects and the stone portal animation. The game engine lacks loading and saving at the moment. The rest is implemented. The comes intro, ending, party creation etc. I reckon the game will be finished quite soon code wise and beta testing can start. The graphics before everything has been hand pixeled will take quite some time.

IRN:

So when is Eye of the Beholder coming to the Amstrad and ZX Spectrum? *wink*

Do those platforms have similar HW solutions as the EasyFlash. If not, never.. not without severely crippling the game.

Luca Tagliaferri:

Will it run on emulators? Any special need or configuration!?

It will run on VICE. Simply drag’n’drop the .crt-file. Also enable 1351 mouse emulation to play it properly.

Luca Tagliaferri

Does you plan to make the full trilogy ?

The plan is to finished EotB I first. EotB II might be possible if a 2Mb cart appears. EotB III is a whole other beast.

Luca Tagliaferri

What's the development status? When will it be ready? ETA

Coding soon, graphics later. 
To do list...

[X] - Stop thrown and doors prior to level switch
[X] - Fix bug when two or more object are flying and one hits monster
[X] - Implement gameState_thrownHitParty
[X] - Fix bug why thrown items to hit monsters behind gates
[ ] - Render door buttons
[ ] - Spears flying towards the party are rendered flat which is a bug
[ ] - Drip/Drop effects on lvl 1-3
[ ] - Auto cast turn undead spell
[ ] - Particle effects for Fireball and Cone of Cold
[ ] - Fix big glimmer animation
[ ] - Improve color de-clash algorithm
[ ] - Fix renderbugs on spider webs and pidestals on lvl 12
[ ] - Fix flip-with-floor status on floor decorations
[X] - Compress/Decompress active level between switch
[X] - Connect RPG to AI
[X] - Fix remaining byte codes
[ ] - Good keyboard controls
[ ] - Calculate armor class
[X] - Food timer
[ ] - Fine tune positions for character grid
[ ] - Character swapping
[ ] - Character stats on inventory
[ ] - Detailed character stats
[X] - NPC encounters
[X] - Range attacks in AI
[X] - Memorize/Pray for spells
[X] - Scribe scrolls
[X] - Rest
[X] - Drop characters
[ ] - Load/save to flash
[ ] - Load/save to disk
[ ] - Intro
[ ] - Ending
[ ] - Automap
[ ] - Define hit zones for decorations and door buttons
[ ] - Fix 2nd row front walls. Generate top char row for all combinations (i.e. 3 x-positions * 2 ceiling flips = 6)
[ ] - Portal animation
[ ] - Xanathar death animation
[X] - Remove forced dungeon render after NPC encounter


36342 lines of assembler code atm or 624259 bytes for some general stats!



Luca Tagliaferri

Is the conversion faithful to the original?

100% faithful.

Nestor Ortiz

What software do you use to make the game? And how do you do the graphics?

I use Sublime 3 as text editor of choice. ca65 as my 6502 assembler. ld65 as my linker. VICE for emulator testing. GNU Make for build system. git for version control. byteboozer2 as cruncher. Java/C++ for creating converters and data extractors.

IRN:

Thank you once more for taking the time to be a part of this interview, is there anything else you'd like to tell us?

Not really other than that this is pure joy to code. It’s really really fun.


And that's it for the interview, once more i'd like to say a huge thanks to Andreas Larsson who took the time to reply, and I wish him all the best in his upcoming C64 port and the end result is something we can talk about in a positive way for many years to come!

No comments:

Post a Comment

You do not need an account to sign up or log in... Feel free to post a comment as a guest user. Please dont spam!