- News for June 7, '98 -





Bartman talks S16 Direct X - June 7, '98 by JoseQ
As you may have read on numerous postings to the News department at EmuViews, Bartman has been working for quite some time now on the DirectX port of the great System 16. His progress has been nothing short of exceptional, and the features added to the Emu make it look better than ever. I got together with Bartman via ICQ Chat to ask him a few questions about this Emulator thats only days away, so read on to see how all this started and what you can expect to see in the Windows version of System 16.

1. Can you tell us a little bit about yourself, and skills list?

Okay, I just turned 22, I'm living in Munich, that's kinda like in the most southern part of Germany (Bavaria) that's where the Oktoberfest is held each year. I'm currently studying computer science at the local university, I've been coding demos since 1992, where I first started out at an Amiga 500, moved then on to Amiga 4000, and now I'm owning a P200MMX.
Besides coding I also do some webdesign for our group at Abyss. I haven't really "released" anything else but demos, because I always started some projects, but never finished them 8-) Maybe some know my tool "Midas Player for Windows '95/NT" a GUI for MIDAS to play modules in Win95/NT. In 1993,
I coded some PC tools for SNES called the Console Commander (a NC clone for SNES up/download...) and Console List/Console Buster 8-)))

2. What got you started into Emulation, when was it, and how was it?

Well, first time I encountered any emulation was a program called PlaySID on my old Amiga 500, that would play over 500 C64-tunes from games. I really liked that. After I got myself a PC, I got hold of C64s a great C64 emulator. At some time, a friend of mine told me about decent Genesis, NES, etc. Emulators, and I really was kinda happy, because I had consoles before and wanted to play the old games again. And then of course came the arcade emulators like MAME, System 16 and Callus, and this was like a dream to me, because you have to know in Germany it's forbidden to go to Arcades if you're below 18, so the only contact I had with arcades was in vacatiion in Italy, etc. Then I heard all the well-known famous game names like Bomb Jack, Pac Man, etc... Yeah, that was really cool...
Then came the more sophisticated emulators like System 16 with great games like Out Run and Callus with the Capcom games... After that I visited Dave's classics page nearly daily. That's how I got across Thierry's request for programming the DirectX Port of the System 16 Emulator. As I liked the emulator and I recently coded a demo with DirectX, I wrote him an email and some weeks later he decided that it was up to me to convert the emu to Win95 8-))

3. Can you tell us a little bit about your previous Windows coding expierences? I believe you have other emulators under your belt, is that right?

Actually no 8-( This is the first time I got involved in coding work on an emulator. I used to code demos on Amiga until 1996, then I got myself a P133 and started coding demos in MS-DOS, however it didn't take long until I was sick of DOS with all its sh!t like VESA, many different soundcards, memory stuff...
Then I switched to Windows, bought me Visual C++ and first I started doing some tools. Then about 1/2 year ago, I started converting my demo-engine to DirectX and I really liked it, no VESA, no sh!t... I coded a demo called "Captain Future - Startrail to Glory" for my demogroup Abyss and it was ranked #2 at a german demo-party called Mekka & Symposium. After that I had nothing to do and I thought, well, System 16 in DirectX that would be really cool, and as I now had experience with Windows/DirectX coding, I thought that shouldn't be any difficulties.

4. So, whats the original language behind S16? Pure C?

Well, no, I was quite suprised to discover that the whole "important" emulation-cores were all 100% assembler. The cpu-cores, the whole graphics-emulation. Only the rest, the interface, the loading routines etc. were coded in C.

How do you port that to Windows? Was it easy, difficult, how would you rate your task difficulties?

At first, I thought hey that'd be easy and it seemed it was like that 8-) However as I discovered that the object files produced by DJGPP (Thierry's C-compiler) weren't compatible with Visual C it turned out to be more work than I first thought, because I had to convert his assembler-sources to another syntax... (Read more on my homepage )
Okay, the rest wasn't that difficult, after getting his codes to run in Windows, it didn't take me too long to get all the games showing graphics and being actually playable...

5. How would you rate the performance differences between S16 DOS and S16 Windows?

I don't have any "realistic" performance benchmarks yet, because I haven't implemented the full-screen mode. I'm currently running in window-mode; that means that I have to convert the emu-framebuffer (256 colors) to the current windows-desktop-color-depth (16bit or 24bit) and that really takes up some cpu-time. And as the converting-routine isn't optimized yet, I can't give you any reliable benchmarks, but I'm sure the windows-performance doesn't need to hide behind its DOS-counterpart...

6. How would you rate DirectX capabilities? DO you think they put a burden on the system, or is it very powerful?

Ofcourse, like everything Microsoft produces, it has its disadvantages, but let's say I'd do the port without DirectX, this wouldn't be possible. DirectDraw gives you the possibility to directly write into the VideoCard's framebuffer like in DOS but with built-in features like double-buffering, hardware-scaling/blitting etc. DirectInput is quite easy for tasks like getting informations from keyboard, mouse and joysticks, and DirectSound... well I didn't have too much to do with that, because the audio library, Thierry uses in the DOS-Version (SEAL) also exists for Windows, so I didn't had to change one single line to get it running 8-)

7. So going back to the cores, is that where you still having difficulties, or are you down to optimizing the Windows code?

Well, I'm barely touching the cores, I gotta admit they're coded really portable-friendly. They are completely rendering to a memory bitmap, and the only point where I intercept to DirectX, is where it's up to draw the rendered bitmap onto the screen. So besides the earlier mentioned converting of the assembler-code I didn't touch the cores. I'm currently implementing joystick-support, and last night I successfully did the load/save stuff... It's compatible with DOS-savegames, so nobody has to play all games all over again 8-)

8. So what are the next steps for the following week?
Okay, first of all I want to get all options/settings dialog to actually "work", at the current time they only look like they do 8-) After that I will implement the full-screen mode (this one should give you at least the performance the DOS-version has) and then it's up to optimizing the window-converter-routines etc..

9. So, how far after System16 releases will the DirectX ports follow behind?

Well, when I finish this version, I will send the modified sources back to Thierry, I hope he will implement the changes into his sources (it's only a few #ifdef's) and after that if he doesn't change too much in future releases, it should only be a matter of days for me to put out a new DirectX version

10. Do you think its possible that for some people, the Windows version runs even better than the DOS one?

I think that's quite possible... This could be if you have a videocard that doesn't have descent VESA support but cool Windows-drivers, or if you have a soundcard the DOS-version doesn't support, or if you have multiple joysticks (the Windows-version will probably support that). Of course you should make sure you have enough free RAM so Window doesn't do anything else but swapping out memory to harddisk and you shouldn't do some raytracing in the background :-))

11. What could people do, if anything, to help you with the porting development? Do you think you might add people to the crew to help with GUIs, etc?

Hmm, I think that would be kinda difficult with my codes 8-) In this project they're rather chaotic, because I had to use plain C instead of C++ (because all System16 sources are plain C) and it's been a while I coded in C, nowadays I'm only using C++... so myself alone has to be enough for this project I think.

12. Anything you would like to add?

Well, I would ask all Emulation coders to stop developing their emulators solely for DOS, in my opinion DOS is DEAD! ... if you don't want to leave DOS behind, get yourself someone to do at least a Windows port... some authors are already going in the right direction (Callus, Boo, Shark, Gekko, etc.) My problem is always, I have a GUS PnP soundcard and most emulators only support Sound Blaster.
Oh one last thing to say: It could be that there will be some special surprise being added to the Windows port, I'm not yet sure about it, but I will talk to Thierry and Nao, so be prepared for it.

Well I think this would be the end of the InterView, so I want to thank you very much for your time, and congratulate you on an excellent! work for the S16 port. I personally love that emu, and most WIN emulators run faster for me than their DOS counterparts, so you can imagine how my fingers are itching to get my hands on this one. Thank you very very very much :)
Hey, it's been a pleasure 8-)

One Article Up: TNZS 1.00 Released
One Article Down: EV News - Site Updates, Emu Laws

Post Some NEW Comments on this topic...

2001 EmuViews