As you may have read on numerous postings to the News department at EmuViews,Bartman has been working for quite some time now on theDirectX port of the great System 16. His progress has been nothing short ofexceptional, and the features added to the Emu make it look better than ever. I gottogether with Bartman via ICQ Chat to ask him a few questions about this Emulatorthats only days away, so read on to see how all this started and what you can expectto see in the Windows version of System 16.
|Bartman talks S16 Direct X - June 07,1998 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 mostsouthern part of Germany (Bavaria) that's where the Oktoberfest is held each year. I'mcurrently studying computer science at the local university, I've beencoding demos since 1992, where I first started out at an Amiga 500, moved then on toAmiga 4000, and now I'm owning a P200MMX.
Besides coding I also do some webdesignfor our group at Abyss. I haven't really "released" anythingelse 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 playmodules in Win95/NT. In 1993,
I coded some PC tools for SNES called the ConsoleCommander (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 onmy 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, afriend of mine told me about decent Genesis, NES, etc. Emulators, and I really waskinda happy, because I had consoles before and wanted to play the old games again. Andthen of course came the arcade emulators like MAME, System 16 and Callus, and this waslike a dream to me, because you have to know in Germany it's forbidden to go toArcades if you're below 18, so the only contact I had with arcades was in vacatiion inItaly, etc. Then I heard all the well-known famous game names like Bomb Jack, PacMan, etc... Yeah, that was really cool...
Then came the more sophisticated emulatorslike System 16 with great games like Out Run and Callus with the Capcom games... Afterthat I visited Dave's classics page nearly daily. That's how I got across Thierry's request for programming the DirectX Portof the System 16 Emulator. As I liked the emulator and I recently coded a demo withDirectX, I wrote him an email and some weeks later he decided that it was up to me toconvert the emu to Win95 8-))
3. Can you tell us a little bit about your previous Windows coding expierences? Ibelieve 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 anemulator. I used to code demos on Amiga until 1996, then I got myself a P133 andstarted coding demos in MS-DOS, however it didn't take long until I was sick of DOSwith 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. Thenabout 1/2 year ago, I started converting my demo-engine to DirectX and I really likedit, 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 calledMekka & Symposium. After that I had nothing to do and I thought, well, System 16 inDirectX that would be really cool, and as I now had experience with Windows/DirectXcoding, 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 rateyour 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 myhomepage )
Okay, the rest wasn't that difficult, after getting his codes to run inWindows, it didn't take me too long to get all the games showing graphics and beingactually playable...
5. How would you rate the performance differences between S16 DOS and S16Windows?
I don't have any "realistic" performance benchmarks yet, because I haven'timplemented the full-screen mode. I'm currently running in window-mode; that meansthat I have to convert the emu-framebuffer (256 colors) to the currentwindows-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 reliablebenchmarks, but I'm sure the windows-performance doesn't need to hide behind itsDOS-counterpart...
6. How would you rate DirectX capabilities? DO you think they put a burden on thesystem, or is it very powerful?
Ofcourse, like everything Microsoft produces, it has its disadvantages, butlet's say I'd do the port without DirectX, this wouldn't be possible. DirectDraw givesyou the possibility to directly write into the VideoCard's framebuffer like in DOS butwith built-in features like double-buffering, hardware-scaling/blitting etc.DirectInput is quite easy for tasks like getting informations from keyboard, mouse andjoysticks, and DirectSound... well I didn't have too much to do with that, because theaudio library, Thierry uses in the DOS-Version (SEAL) also exists for Windows, so Ididn'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, orare you down to optimizing the Windows code?
Well, I'm barely touching the cores, I gotta admit they're coded reallyportable-friendly. They are completely rendering to a memory bitmap, and the onlypoint where I intercept to DirectX, is where it's up to draw the rendered bitmap ontothe screen. So besides the earlier mentioned converting of the assembler-code I didn'ttouch the cores. I'm currently implementing joystick-support, and last night Isuccessfully did the load/save stuff... It's compatible with DOS-savegames, so nobodyhas 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 willimplement the full-screen mode (this one should give you at least the performance theDOS-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 toThierry, 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 shouldonly 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 evenbetter than the DOS one?
I think that's quite possible... This could be if you have a videocard thatdoesn't have descent VESA support but cool Windows-drivers, or if you have a soundcardthe DOS-version doesn't support, or if you have multiple joysticks (theWindows-version will probably support that). Of course you should make sure you haveenough free RAM so Window doesn't do anything else but swapping out memory to harddiskand 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 projectthey're rather chaotic, because I had to use plain C instead of C++ (because allSystem16 sources are plain C) and it's been a while I coded in C, nowadays I'm onlyusing 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 emulatorssolely 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 goingin the right direction (Callus, Boo, Shark, Gekko, etc.) My problem is always, I have aGUS PnP soundcard and most emulators only support Sound Blaster.
Oh one last thing to say: It could be that there will be some specialsurprise being added to the Windows port, I'm not yet sure about it, but I will talkto 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 verymuch for your time, and congratulate you on an excellent! work for the S16port. I personally love that emu, and most WIN emulators run fasterfor me than their DOS counterparts, so you can imagine how my fingers are itching to get my hands onthis 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