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.
|Bartman talks S16 Direct X - June 7, '98 by JoseQ
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
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
5. How would you rate the performance differences between S16 DOS and S16
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
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