Retrocade - Version 1.1 Frequently Asked Questions ------------ This document is designed to answer the frequently asked questions with regard to all versions of Retrocade. DOS/Windows/UNIX/Mac specific sections will be indicated by those tags in parenthesis. ------------ * Section 1 - General Retrocade Questions 1-1. Why does Armor Attack flicker sometimes? 1-2. Why does Demon flicker really badly? 1-3. How can I make a given game fit better with the screen? 1-4. I get "Game 'x' not supported no matter what I do. What's wrong? 1-5. Some games have sound and some don't. Why? 1-6. Asteroids runs too fast 1-7. How can I alter the speed that a game is playing? 1-8. Where do I stick the ROM images? 1-9. Where do I stick the .PAK files? 1-10. I've modified my defctrls.ini file to make changes to the emulator's assignments, but nothing changes when I try the altered game again. 1-11. I'm really offended by the splash screen. How can I get rid of it? 1-12. How can I get screeshots of my game in progress? 1-13. What do the fields in the performance monitor actually mean? 1-14. Why don't you provide a way to have a smaller sampling rate to increase game emulation speed? 1-15. I want to use my own sample files with Retrocade. Can I do that? 1-16. Why doesn't game 'x' save my high scores? 1-17. Retrocade shows the correct fps, but the game is running too fast. 1-18. Why doesn't Retrocade support all ROM revisions of a particular game? 1-19. Wouldn't it be better/faster to break Retrocade up into smaller programs? 1-20. Why are the games that use antialiasing and translucent vectors so much slower than the rest? 1-21. Why I can't turn the brightness all the way down to black? 1-22. What are the minimum requirements for all games to run full speed with Retrocade? 1-23. Why can't I set the FPS lower than 20? 1-24. What is Retrocade's purpose? 1-25. Why did you choose JPG over GIF or some other format for screenshots? 1-26. The Williams games (Bubbles, Stargate, etc...) just sit there looking at me with "Factory settings restored" on the screen and won't start. What do I do to get it to go? 1-27. I'd like to squish/expand the vector games - especially Tempest. Is this possible? 1-28. I want to modify the in-game controls to my own custom settings. How can I do this? 1-29. Does Retrocade support multiple ROM pathnames? I have my ROMs in several different subdirectories. 1-30. I get [CTRL=Failed] each time I try to start Retrocade. Why? 1-31. Game 'x' doesn't work properly with my Gamepad. What's wrong? 1-32. I get an assertion in games.c when I try to run Retrocade 1.1. * Section 2 - Platform specific Retrocade questions 2-1. Why can't I get any backdrops with any of the games that support it? 2-2. I get no sound in *ANY* games. Why? 2-3. I get a black screen whenever I try to run any game in Retrocade, or the machine locks up. 2-4. Is Retrocade (DOS) supposed to run under Windows? 2-5. Retrocade doesn't see my mouse/Wingman Warrior. Why? 2-6. The onscreen display does not come up at all when I hit F5. Why? 2-7. Retrocade isn't as fast as everyone makes it out to be on my machine, but everyone else seems to be having great success. Why is my machine slower than people with equivalent or lesser powered machines? 2-8. Retrocade crashes almost immediately on startup with "Loading..." with a general proection fault. What's wrong? 2-9. My Logitech Wingman Warrior spinner doesn't work, but the Wingman itself works just fine. 2-10. What video card(s) do you recommend for Retrocade for a PC? 2-11. My Microsoft Sidewinder Gamepad doesn't work when I'm running Retrocade in a DOS box under Windows. Why not? 2-12. I get "Unable to copy screen contents into clipboard" whenever I try to get a screenshot. 2-13. Does Retrocade support scanlines? 2-14. Why can't Retrocade deal with interrupts higher than IRQ 7? -------- Q1-1. Why does Armor Attack flicker sometimes? A. That is how the original game operated. This is normal. -------- Q1-2. Why does Demon flicker really badly? A. That is how the original game operated. This is normal. -------- Q1-3. How can I make a given game fit better with the screen? A. Try enabling the tweaked mode support (256x256, 224x288, and 288x224) with the -tweak on/off parameter (DOS). These modes are not included by default since they can be problematic, and performance in these modes is not optimal. The -tweak command is sticky, so you only need to issue it once and it will stick from that point on. -------- Q1-4. I get "Game 'x' not supported no matter what I do. What's wrong? A. Several possibilities. Make sure you're launching Retrocade with: retro -g "game name", with the full game's name - NOT THE ZIP filename. If the game is multi-worded, make sure you use quotes! Make sure that you have the appropriate ZIP file for the game you want to run in either the current directory where the Retrocade executable is launched, or in the subdirectory where you have -romdir pointing. Make sure your ZIP archive is good, by doing a pkunzip -v zipfile.zip on the game in question. If you have any questions about what Retrocade finds, use the -romlist option to emit a romlist.txt file. It will indicate any missing files and what Retrocade is looking for. -------- Q1-5. Some games have sound and some don't. Why? A. The easy answer is some games do have sound engines in them, and some don't. Retrocade is a continuing work in progress, and thusly everything isn't complete. Some games require samples, too. Do you have the appropriate sample files (.PAK) for the games in question (if they exist)? Check the Retrocade homepage at (www.retrocade.com) for the appropriate .PAK files. If you have a corrupt .PAK file for any given game, the sound effects will not load up or make any sound at all. You also may have an older .PAK file. Check the size on the www.retrocade.com web site to ensure that what you have is the correct size, and is also the most current. -------- Q1-6. Asteroids runs too fast A. Asteroids does not run too fast. There were two versions of Asteroids produced - a 1MHZ and 1.5MHZ version. The most common are the 1.5MHZ versions (which yeilds 60fps), and that is what Retrocade defaults to. They were not different ROM revisions, only a master clock divider chip on the board that was modified to make the game run faster. See Q12 below for how to change the speed at which it plays if you're too much of a wimp to play the faster version. ;-) -------- Q1-7. How can I alter the speed that a game is playing? A. Bring up the onscreen display with the ` key (you know, like Quake!). Scroll through the options with the up/down arrow keys until you get to the "Frames Per Second" display. Use the left/right arrow keys to adjust the game's speed. This can be done while the game is paused or is playing. Hit the ` key to drop the onscreen display. -------- Q1-8. Where do I stick the ROM images? A. Wherever you'd like! + In the current subdirectory where Retrocade's executable is + In the ./roms subdirectory off of where Retrocade's executable is + In an user defined subdirectories specified by -romdir If you have a common ROM subdirectory, specify -romdir c:\romdir (or wherever) to indicate where your ROMs are. There is no need to reissue this command more than once. It is sticky, and is stored in Retrocade's registry. You can also issue -romdir c:\romdir;d:\games\roms;e:\blah .... to search each subdirectory for more ROM images. Multiple ROM paths are supported. -------- Q1-9. Where do I stick the .PAK files? A. One of two places: + In the current subdirectory where Retrocade's executable is + In the ./paks subdirectory off of where Retrocade's executable is -------- Q1-10. I've modified my defctrls.ini file to make changes to the emulator's assignments, but nothing changes when I try the altered game again. A. Aha! You assume too much from the great defctrls.ini file! The defctrls.ini file is only read when you run a game for the first time (hence the name, DEFault ConTRoLs). After that, it pulls all settings out of the registry, which is where your controller assignments are stored. If you want to load your new default configuration, then use Retrocade's GUI to load up your controller configuration for that game. -------- Q1-11. I'm really offended by the splash screen. How can I get rid of it? A. We're very sorry you're offended by a fully-clothed woman. Use the -splash off option to keep her from popping up. If you use -splash off, she will not appear again. -splash on Will reenable it. -------- Q1-12. How can I get screeshots of my game in progress? A. Hit printscreen! You will get filenames like astdelu0.jpg, and other various abbreviations for the other games as well. It uses the ZIP filename as a basis for naming these, and sequentially replaces the rightmost major part of the filename with numbers. They will be placed in the /scrnshot subdirectory where your Retrocade executable was launched from. -------- Q1-13. What do the fields in the performance monitor actually mean? A. Various things: Cpu Emu: This indicates the percentage of time spent in the processor emulators of the various games. Render : With Raster games, this is the percentage of time Retrocade is spending updating the offscreen backbuffer. With vector games, this is the percentage of time spent traversing the vector generator engines and creating a linelist. Blit : This is the percentage of time that Retrocade is spending transferring the offscreen image to the video card itself. In vector games, this is the time spent in the linedraw routines actually drawing/erasing the lines. NOTE: When you have -vsync on, you'll notice your blit percentage go through the roof. This is because when you are sync'd to vertical retrace, the speed control is throttled to the update rate of the video card. The transfer of of the offscreen image to the video card itself is done only during vertical retrace and it must wait until it is complete before it can transfer the image. Idle : Percentage of time Retrocade is spent waiting at the system timer to allow the next frame to be generated. Don't be alarmed if it says 100% idle. Retrocade does statistical sampling at an even pace as to where it spends its time. It does this at a rate of twice your game's framerate. If less than 40% of the overall processor is being used, then you will see 100% idle because the sampling rate is just not fast enough to grab the statistical samples. We could increase the sample rate, but it would slow emulation down significantly. Besides, it's only really meaningful when things are not running as fast as you'd expect, right? -------- Q1-14. Why don't you provide a way to have a smaller sampling rate to increase game emulation speed? A. In Retrocade's case the sound engine is efficient enough that a lower sampling rate across all games has a miniscule effect on performance, and thusly we decided not to bother enabling lower sampling rates. -------- Q1-15. I want to use my own sample files with Retrocade. Can I do that? A. No. The samples that are within the .PAK files are specially treated samples. They come from a source of 16 bit samples, all at 44.1khz and require that the zero crosspoints and loop points be set. This is not a trivial process. However, if you have good quality samples (44.1khz, 16 bit, and *CLEAN* - not distorted or overdriven) that you would like us to include in games that use them, contact the Retrocade Alliance and we'll work with you to get them added. -------- Q1-16. Why doesn't game 'x' save my high scores? A. Because game 'x' doesn't have high score saving abilities, or you've deleted the hiscores.reg file, or the game itself does not have a high score saving ability (Cinematronics games for example). -------- Q1-17. Retrocade shows the correct fps, but the game is running too fast. A. The first question is do *ALL* games run too fast? If not, then it could be that you're starting the game on a higher level (Star Wars, for example, on Medium and Hard will run the games faster than if you choose Normal). Did you bump the frames per second accidentally in the onscreen display? Hit ` and scroll through the options using the up and down arrows. The correct (original) rate of the game will be shown in parenthesis. It's possible that we've botched the framerate of a given game. If you think so, let the Retrocade alliance know the game you have an issue with and a rate that "feels" better. We've been known to make mistakes, since some of us don't have access to these games to compare. Another thing - If you're running DOSRetro, don't run under Windows to get accurate timing. The virtualized nature of timers and such (that Retrocade relies on to throttle correctly) will cause Retrocade to give you inaccurate results speed-wise. If all games are running too fast, you may have shut off speed throttling. Hit F6 to turn it back on again. -------- Q1-18. Why doesn't Retrocade support all ROM revisions of a particular game? A. That's not Retrocade's focus. It's to get the most "playable" versions of the games. Besides, the ROM revision differences are usually not something that the end user would even notice, so we don't bother with doing it. -------- Q1-19. Wouldn't it be better/faster to break Retrocade up into smaller programs? A. No. This is a common misconception. Just because an executable gets bigger doesn't mean it will run slower. You might have seen other emulators get bigger and slower, but not only was the size changing, the internal main execution code was changing as well, which is the entire reason things got slower. Breaking up the executable would also make it more difficult to maintain. And besides, Retrocade is designed to be an all-in-one style of emulator anyway, and would go against its goal. It is also designed with performance in mind, so it will not suffer from progressive slowness from release to release. In other words, bad idea. -------- Q1-20. Why are the games that use antialiasing and translucent vectors so much slower than the rest? Why am I getting flicker? A. This is a very good question, and I'm glad you asked, though the answer is very long and involved. Now would be a good time to go get a beverage of your choice: I want to illustrate just what the linedraw code must go through to be able to do regular, antialiased, translucent, and translucent/antialiased lines. I have taken a sampling of each of the linedraw code for the different modes. What I have exceprted is the routine which does nothing more than set the pixel and advance the pointer. If you know something about programming, you'll understand right away. If not, then you should be able to glean how much is required to do these modes by the sheer size of the code. First, this is the main loop for a regular piece of linedraw code: alignymSkip20: mov [ds:edi], ax ; Store our full strength pixel sub edi, esi ; Move back! add bp, bx ; Add our slope value jnc nocarryov120 add edi, edx ; Advance Y coordinate nocarryov120: That's it. Only 5 lines of code to do a regular single-thickness pixel linedraw. Now, let's try the translucent vector only code: alignaSkip220: mov ax, [ds:edi] ; Get our source data mov edx, eax ; Get our color and eax, 007ffh ; 16bpp - no red and edx, 0f800h ; 16bpp - Just red add edx, [colorred] ; Add in our red color band test edx, 0ffff0000h ; Did we overflow red? jz noRedOv21 ; Nope! mov edx, 0f800h ; Red full noRedOv21: or eax, edx ; Put it back in with the color tuple mov edx, eax ; Get our color and eax, 0f81fh ; 16bpp - no green and edx, 007e0h ; 16bpp - Just green add dx, [colorgreen] ; Add in our green color band test edx, 0fffff800h ; Did we overflow green? jz noGreenOv21 ; Nope! mov edx, 007e0h ; Green full noGreenOv21: or eax, edx ; Put it back in with the color tuple mov edx, eax ; Get our color and eax, 0ffe0h ; 16bpp - no blue and edx, 0001fh ; 15 or 16bpp - Just blue add dx, [colorblue] ; Add in our blue color band test edx, 0ffffffe0h ; Did we overflow green? jz noblueOv21 ; Nope! mov edx, 001fh ; blue full noblueOv21: mov [ds:edi], ax ; Store our translucent pixel sub edi, [x_sign] ; Move back! add bp, bx ; Add our slope value jnc nocarryov210 add edi, [x_sign] ; To our video surface nocarryov210: Jumped from 5 lines to 30 lines. Lots more expensive. Remember, that this is on a *PER PIXEL* basis. Also note that transluscency is reading from the video memory to get good looking translucent vectors. This is a slow process, since arbitrary line angles (Which this code handles) are not sequential in memory, so no bursts can take place. Now that things are starting to get a bit tougher, let's take a look at the antialiased only code: alignymSkip20: mov ax, [color] mov edx, ebp ; Get our weighting shl ebp, 16 ; Save our weighting count for later mov bp, dx ; Get our weighting back! and bp, 0f000h ; Only the upper nibble matters shr bp, 1 mov edx, eax and eax, 007ffh ; 16bpp - no red and edx, 0f800h ; 16bpp - Just red sub dx, bp ; Sutract it! jnc noredaaov0 ; Nope! xor edx, edx ; Screw that! noredaaov0: or eax, edx ; OR Our color back in! mov edx, eax shr bp, 5 ; Shift 5 for 16bpp and eax, 0f81fh ; 16bpp - no green and edx, 007e0h ; 16bpp - Just green sub dx, bp ; Sutract it! jnc nogreenaaov0 ; Nope! xor edx, edx ; Screw that! nogreenaaov0: or eax, edx ; OR Our color back in! mov edx, eax shr bp, 6 ; Shift 6 and eax, 0ffe0h ; No blue and edx, 0001fh ; Just blue sub dx, bp ; Sutract it! jnc noblueaaov0 ; Nope! xor edx, edx ; Screw that! noblueaaov0: or eax, edx ; OR Our color back in! shr ebp, 16 ; Restore our weighting mov [ds:edi], ax ; Store our full strength pixel add edi, [x_sign] ; Move over pixel! mov ax, [color] mov edx, ebp ; Get our weighting shl ebp, 16 ; Save our weighting count for later mov bp, dx ; Get our weighting back! mov dx, 00014h ; Get our base shr bp, 12 ; Lower byte sub dx, bp ; Subtract our weight shl dx, 11 ; Back to our position! mov bp, dx ; And make it our weight target mov edx, eax and eax, 007ffh ; 16bpp - no red and edx, 0f800h ; 16bpp - Just red sub dx, bp ; Sutract it! jnc noredaaov1 ; Nope! xor edx, edx ; Screw that! noredaaov1: or eax, edx ; OR Our color back in! mov edx, eax shr bp, 5 ; Shift 5 for 16bpp and eax, 0f81fh ; 16bpp - no green and edx, 007e0h ; 16bpp - Just green sub dx, bp ; Sutract it! jnc nogreenaaov1 ; Nope! xor edx, edx ; Screw that! nogreenaaov1: or eax, edx ; OR Our color back in! mov edx, eax shr bp, 6 ; Shift 6 and eax, 0ffe0h ; No blue and edx, 0001fh ; Just blue sub dx, bp ; Sutract it! jnc noblueaaov1 ; Nope! xor edx, edx ; Screw that! noblueaaov1: or eax, edx ; OR Our color back in! shr ebp, 16 ; Restore our weighting mov [ds:edi], ax ; Store our antialiased pixel sub edi, [x_sign] ; Move back! add bp, bx ; Add our slope value jnc nocarryov120 add esi, [x_sign] ; Add our X throw add edi, [x_sign] ; To our back surface, too nocarryov120: Gee - that one is getting a bit hairier, eh? 70 Lines of assembly instead of 5! The 16bpp 5-6-5 red/green blue gradients must be broken out, added, checked for overflow, and fixed up if so, then put back in the original position. Of course, the antialiased routine above does TWO pixels, but that's the nature if Antialiased lines - you need to do two pixels - one that's full strength and one that's the halftone. Now we meet the monster of all monsters. The antialiased/translucent vector routines. Keep in mind that this is the *DEFAULT* mode for games with backdrops: alignymSkip180: mov ax, [color] mov [step], ebx ; Save our step size back mov bx, [edi] ; Get our current pixel mov dx, bx shl ebx, 16 mov bx, dx mov edx, ebp ; Get our weighting shl ebp, 16 ; Save our weighting count for later mov bp, dx ; Get our weighting back! and bp, 0f000h ; Only the upper nibble matters shr bp, 1 mov edx, eax and eax, 007ffh ; 16bpp - no red and edx, 0f800h ; 16bpp - Just red and bx, 0f800h ; 16bpp - Just red sub dx, bp ; Sutract it! jnc noredaaov8 ; Nope! xor edx, edx ; Screw that! noredaaov8: add dx, bx ; Add in our red color band jnc noRedaatvOv16 ; No overflow mov edx, 0f800h ; Red full noRedaatvOv16: and edx, 0f800h ; Red full or eax, edx ; OR Our color back in! mov edx, ebx shr edx, 16 mov bx, dx mov edx, eax shr bp, 5 ; Shift 5 for 16bpp and eax, 0f81fh ; 16bpp - no green and edx, 007e0h ; 16bpp - Just green and bx, 007e0h ; 16bpp - Just green sub dx, bp ; Sutract it! jnc nogreenaaov8 ; Nope! xor edx, edx ; Screw that! nogreenaaov8: add dx, bx ; Add in our red color band test dx, 0f800h ; Did we overflow green? jz noGreenOv16 ; Nope! mov edx, 007e0h ; Green full noGreenOv16: or eax, edx ; Put it back in with the color tuple shr ebx, 16 and ebx, 01fh mov edx, eax shr bp, 6 ; Shift 6 and eax, 0ffe0h ; No blue and edx, 0001fh ; Just blue sub dx, bp ; Sutract it! jnc noblueaaov8 ; Nope! xor edx, edx ; Screw that! noblueaaov8: and edx, 01fh ; Only the blue gradient and eax, 0ffe0h ; 16bpp - no blue add dx, bx ; Add in our blue color band test edx, 0ffffffe0h ; Did we overflow blue? jz noblueOv16 ; Nope! mov edx, 001fh ; blue full noblueOv16: or eax, edx ; OR Our color back in! shr ebp, 16 ; Restore our weighting mov [ds:edi], ax ; Store our full strength pixel add edi, [x_sign] ; Move over pixel! mov ax, [color] mov bx, [edi] ; Get our current pixel mov dx, bx shl ebx, 16 mov bx, dx mov edx, ebp ; Get our weighting shl ebp, 16 ; Save our weighting count for later mov bp, dx ; Get our weighting back! mov dx, 00014h ; Get our base shr bp, 12 ; Lower byte sub dx, bp ; Subtract our weight shl dx, 11 ; Back to our position! mov bp, dx ; And make it our weight target mov edx, eax and eax, 007ffh ; 16bpp - no red and edx, 0f800h ; 16bpp - Just red and bx, 0f800h ; 16bpp - Just red sub dx, bp ; Sutract it! jnc noredaaov9 ; Nope! xor edx, edx ; Screw that! noredaaov9: add dx, bx ; Add in our red color band jnc noRedaatvOv17 ; No overflow mov edx, 0f800h ; Red full noRedaatvOv17: and edx, 0f800h ; Red full or eax, edx ; OR Our color back in! mov edx, ebx shr edx, 16 mov bx, dx mov edx, eax shr bp, 5 ; Shift 5 for 16bpp and eax, 0f81fh ; 16bpp - no green and edx, 007e0h ; 16bpp - Just green and bx, 007e0h ; 16bpp - Just green sub dx, bp ; Sutract it! jnc nogreenaaov9 ; Nope! xor edx, edx ; Screw that! nogreenaaov9: add dx, bx ; Add in our red color band test dx, 0f800h ; Did we overflow green? jz noGreenOv17 ; Nope! mov edx, 007e0h ; Green full noGreenOv17: or eax, edx ; Put it back in with the color tuple shr ebx, 16 and ebx, 01fh mov edx, eax shr bp, 6 ; Shift 6 and eax, 0ffe0h ; No blue and edx, 0001fh ; Just blue sub dx, bp ; Sutract it! jnc noblueaaov9 ; Nope! xor edx, edx ; Screw that! noblueaaov9: and edx, 01fh ; Only the blue gradient and eax, 0ffe0h ; 16bpp - no blue add dx, bx ; Add in our blue color band test edx, 0ffffffe0h ; Did we overflow blue? jz noblueOv17 ; Nope! mov edx, 001fh ; blue full noblueOv17: or eax, edx ; OR Our color back in! shr ebp, 16 ; Restore our weighting mov [ds:edi], ax ; Store our antialiased pixel mov ebx, [step] ; Get our step size back sub edi, [x_sign] ; Move back! add bp, bx ; Add our slope value jnc nocarryov1180 add esi, [x_sign] ; Add our X throw add edi, [x_sign] ; To our back surface, too nocarryov1180: Wow! That's a bit over 120 lines of assembly code on a *PER PIXEL* basis! The aa/tv linedraw code above is roughly 30 times slower (including the PCI overhead) than the regular linedraw code at the beginning of this message. And this isn't crappy compiler-output code (compiler output is MUCH worse) It's reasonably well optimized assembly. Also, consider that translucent vector lines must be erased and redrawn every single frame, whereas in the antialiased or regular linedraw modes, they only need to be erased if they have moved from the last frame. The bottom line is, antialaiasing is an expensive process CPU-wise. translucent vectors are not quite as expensive CPU-wise, but are very expensive PCI-bus wise. When you combine the horrors of antialiasing and the expensive PCI-bus reads to video memory, it gets many times slower and that's why you see flicker in some cases. We're currently using a dirty linelist and a video card backbuffer to be able to keep things steady. If your card does not support more than 1 video page at a given resolution, then God help you. Any modern card with a megabyte or more of RAM will have 2 or more pages available, so I'm suspecting that this is not the problem. All vector games with backdrops default to 640x480 @ 16 bits per pixel, which winds up using about 1.2 megabytes of RAM. And no, using a memory buffer and blitting dirty tiles will not help performance - it will hinder it - especially when things get busy. Already tried this approach. Retrocade is clocked to the system timer, and will update the vectors at its rate. The problem with this is that the video card may not be synchronized with the system timer, and you'll get updates during the middle of a vertical retrace, and you see flicker. Some cards will wait until the retrace is complete before flipping the page and you won't have this problem, but a good number don't. That's when you should use the -vsync option. This will synchronize the updates to the vertical blanking period. If you still get flicker after using this option, then you need more CPU horsepower to be able to eliminate it. Either that, or shut off transluscency with the -notv option. We're currently looking at using MMX to handle the color gradient saturation to help improve performance. So when you run games with these kinds of features on your P90 and they don't perform well or flicker, don't be disgusted that you have to disable transluscency or antialiased vectors to get flicker free performance. -------- Q1-21. Why I can't turn the brightness all the way down to black? A. Because people fuss with the brightness controls sometimes, forget they've turned them down all the way, and then complain that a given game gives them a black screen. This prevents that from happening. Besides, are you really going to be playing a game with the brightness turned all the way down? We think not. -------- Q1-22. What are the minimum requirements for all games to run full speed with Retrocade? A. A Pentium 133 (non-MMX is fine) with 32MB of RAM, and a good PCI video card that natively supports VESA 2.x or higher. A Pentium 166 is required if your video card does not support VESA 2.x or higher. A good video card would be an ATI or a Matrox board, *NOT* A Cirrus Logic or Trident card (both are poor performers). -------- Q1-23. Why can't I set the FPS lower than 20? A. Because the timer chip under DOS cannot go lower than 20fps accurately. It slows all games down to unplayability at that rate. -------- Q1-24. What is Retrocade's purpose? A. High performance emulation, ease of use. It is designed to be an end-user product for people to play. Retrocade's goal is not to emulate every game under the sun, but the games that are desirable to most end users. All Retrocade developers have different areas of interest with regard to games. We can be influenced. ;-) -------- Q1-25. Why did you choose JPG over GIF or some other format for screenshots? A. Several reasons: + JPG Supports more than 256 colors + JPG Is a file format that is widely used/accepted in the internet community (very common to have screenshots on web pages, right?) + JPG's File format is free + JPG Is supported by even the most primitive web browsers -------- Q1-26. The Williams games (Bubbles, Stargate, etc...) just sit there looking at me with "Factory settings restored" on the screen and won't start. What do I do to get it to go? A. Providing you haven't remapped the keys, hit F8. This is mapped to the "Advance" button on the Williams hardware. The original games required you to hit this button the first time you powered it up with a clear CMOS. --------- Q1-27. I'd like to squish/expand the vector games - especially Tempest. Is this possible? A. Yes. Start up any vector game. Hit the ` key to bring up the onscreen display. Scroll through the options with the up/down arrow keys. You'll eventually find the Vector X/Y size and Vector X/Y position. Use the left and right arrow keys to adjust any of the settings, and hit home to put it back to its default. This is set on a per-game basis and is remembered from game to game. ---------- Q1-28. I want to modify the in-game "system" controls to my own custom settings. How can I do this? A. Provided with Retrocade is a cabinet.ini file that looks like this: ========================= ; ; Cabinet mode controller init file. BE CAREFUL! If you screw this up, you ; may not be able to get out of Retrocade at all! ; Performance = (key_f5) Throttle = (key_f6) GuiReturn = (key_esc) Pause = (key_pause) Exit1 = (key_pause + key_leftctrl) Exit2 = (key_pause + key_rightctrl) Screenshot = (key_printscreen) Record1 = (key_printscreen + key_leftctrl) Record2 = (key_printscreen + key_rightctrl) Save1 = (key_printscreen + key_leftshift) Save2 = (key_printscreen + key_rightshift) GuiF1 = (key_f1) GuiF2 = (key_f2) GuiF3 = (key_f3) GuiF4 = (key_f4) Hue = (key_f8) Reset1 = (key_f12 + key_leftctrl + key_leftalt) Reset2 = (key_f12 + key_rightctrl + key_rightalt) ========================= You can remap any function to be any definition. This is read at startup, and is designed so you can put Retrocade inside a custom cabinet. The UI has not been fully cabnet-ized, so you'll only be able to do limited work in the UI. ---------- Q1-29. Does Retrocade support multiple ROM pathnames? I have my ROMs in several different subdirectories. A. Yes. Use "-romdir c:\dir1;d:\dir2;e:\dir3", etc.... This is sticky, so you won't have to reissue it each time. ---------- Q1-30. I get [CTRL=Failed] each time I try to start Retrocade. Why? A. Either you have a missing defctrls.ini file or there's a syntax error in it. Snag the file from the standard archive again. ---------- Q1-31. Game 'x' doesn't work properly with my Gamepad. What's wrong? A. Retrocade defaults all games to work with an analog joystick. A gamepad appears as both an analog and digital joystick to Retrocade, and the two controls override eachother - depending upon what is defined. For each game that you're having trouble, go into the controller setup section and turn off the axis controllers being controlled by the joysticks. That will make everything work nicely. ---------- Q1-32. I get an assertion in games.c when I try to run Retrocade 1.0 after I have run Retrocade 1.1. A. You're probably trying to run the old Retrocade 1.0 on a newer RETRO.REG file. Retrocade is not reverse compatible - only forward compatible. You cannot run Retrocade 1.0 with registries created by 1.1. However, your 1.0 registry will be migrated to 1.1. New games will be added, and new controls will be set up for those games. -------- Q2-1. Why can't I get any backdrops with any of the games that support it? A. It depends. First off, make sure you've downloaded the appropriate .PAK file and placed it either in Retrocade's directory, or in the ./paks directory one level below the Retrocade directory. Secondly, make sure that the game you're trying to play really does have a backdrop or an overlay. Lastly, if you are running any of the vector games and aren't getting backdrops when you think you should, most likely your video card does not support 16 bit per pixel mode, or does not have access to the linear framebuffer. If you have a VESA 1.x compliant card, you will not have a linear framebuffer, and all graphics operations will need to be paged. Retrocade never supports backdrops in 8 bit per pixel modes, and supports backdrops/overlays in 16 bit per pixel mode only if your card has linear framebuffer access. A possible solution to this problem is to get a copy of Scitech Display Doctor to enable this functionality in your card (www.scitechsoft.com). -------- Q2-2. I get no sound in *ANY* games. Why? A. Do you have a Sound Blaster Pro (or better) in your machine? Retrocade requires that you have a Sound Blaster Pro (or better/compatible). Is there a BLASTER= environment variable set? If not, Retrocade cannot find your sound card. Is the interrupt set higher than IRQ 7? If so, Retrocade will not function, as DOS4GW will not handle interrupts higher than IRQ 7. Other DOS extenders that DO support higher interrupts have been tried with varying success. DOS4GW Is by far the most stable. Are you certain that the game you're trying to run really does have sound? If not, you will get silence. Some of the games we have either not gotten the samples for or sound just hasn't been added. If all else fails, and you think you should be getting sound but aren't, add the -log command to Retrocade when you start it and run your game, play it for a few moments, and exit. It will create a game.txt file. Send that file (zipped, please) to the Retrocade alliance. -------- Q2-3. I get a black screen whenever I try to run any game in Retrocade, or the machine locks up. A. Wow. Real bad! If you're running under Windows, reboot into DOS mode and try it again. Some video card VXDs that provide VESA support are problematic, and the VESA support may be buggy. If you get the same results under straight DOS, add the -log command line option to the Retrocade executable so that it will generate a game.txt file and log debugging information. Send this file (zipped, please) to the Retrocade alliance for examiniation. Also note the kind of video card you have. -------- Q2-4. Is Retrocade (DOS) supposed to be able to run under Windows? A. A cautious "yes". We've found that Retrocade runs fine under Windows on a myriad of machines. However (and a *BIG* however): Many problems can arise from running under Windows. Joystick control may be erratic, games may not run at totally proper speeds, some video modes will not be available, sound might not be available, certain controllers will not work properly (Wingman Warrior spinner for example), and other potentially oddities. Windows is an ugly world where there's no guarantees that two "identical" installations will work the same. Windows virtualizes quite a few things for DOS programs, such as interrupts, timers, and controller support. The reports may come in erratically and cause flaky and inaccurate operation under Windows. So the official stance is that if it works OK in DOS, but doesn't in Windows, we're sorry, but RetroDOS is not officially supported under Windows. However, if you're experiencing system lockups, protection faults, or other crashing uglies, please invoke Retrocade with the -log option, zip up the game.txt file it generates, and mail it to the Retrocade alliance for examiniation. Retrocade should not crash under Windows - only certain options should not work or work erratically. -------- Q2-5. Retrocade doesn't see my mouse/Wingman Warrior. Why? A. Do you have a mouse driver loaded? The best way to tell is to do a mem /c at a DOS prompt. If you're running in a DOS box under Windows and your mouse works OK there, then a mouse driver is not needed. If you are running under straight DOS and get no mouse support, make sure you have a mouse driver loaded. In the case of the Wingman Warrior, you must have the Logitech driver that supports the Wingman Warrior and the mouse, and it must be invoked with the DUAL option so that they both work. -------- Q2-6. The onscreen display does not come up at all when I hit F5. Why? A. You're running a vector game, right? The onscreen display requires the presence of a linear framebuffer to work. If you do not have VESA 2.x or higher, you will not get a linear framebuffer. A linear framebuffer is not required for raster games, and thusly will always work. -------- Q2-7. Retrocade isn't as fast as everyone makes it out to be on my machine, but everyone else seems to be having great success. Why is my machine slower than people with equivalent or lesser powered machines? A. It's a tough question to answer accurately in all cases, but slowness can be attributed mostly to cards that do not have native VESA 2.x compliancy. The only solution there is to either get a different video card or use Scitech Display Doctor to enable linear framebuffering with VESA 2.x. The second thing is the size of your system's cache, especially with 68000/ 68010 games since the code breadth is fairly wide. 256K Cache is OK, but 512K cache or bigger will do *MUCH* better. Most systems today come with 512K cahce on them already. Thirdly, are you running under Windows? That can knock performance down by 5-10%, and even more if you have other applications running. Hit F5 during a game (and unthrottle it with F6) and watch where Retrocade is spending most of its time. High percentages in the Blit category indicate video card bottleneck issues. -------- Q2-8. Retrocade crashes almost immediately on startup with "Loading..." with a general proection fault. What's wrong? A. We've found on a few machines that EMM386.EXE gets in the way of PCI read/writes, which Retrocade needs to do to implement a workaround for buggy Riva 128 VESA BIOSes. The only known workaround to this is to get rid of EMM386.EXE entirely. It's really not necessary when running under Windows. -------- Q2-9. My Logitech Wingman Warrior spinner doesn't work, but the Wingman itself works just fine. A. Running under Windows, are we? You can thank Logitech for this one. The mouse VXD for the Wingman Warrior does not support the spinner when event callbacks are used (Retrocade uses callbacks for mouse & Wingman Warrior support since it's much cleaner and requires no host CPU power unless the controller is moving). Logitech has not fixed this problem. I've contacted them, and they are unwilling to fix it. There is no workaround except to load the DOS device driver under straight DOS and use it. -------- Q2-10. What video card(s) do you recommend for Retrocade for a PC? A. We've had excellent luck with the ATI series, starting with the Pro Turbo PC/2TV board through the Xpert @ Work and Xpert @ Play. All cards are excellent performers, and work great right out of the box, and are also compatible with all of the tweaked video modes. Other beta testers have reported that the Matrox G200 is also an excellent choice, in addition to the Riva TNT based boards. --------- Q2-11. My Microsoft Sidewinder Gamepad doesn't work when I'm running Retrocade in a DOS box under Windows. Why not? A. As stated before, Retrocade/DOS is not designed to run under Windows, and problems like this will crop up. Retrocade talks directly to the game port to get Sidewinder Gamepad information. Having the Sidewinder gamepad drivers installed under Windows will cause collisions between Retrocade's polling routines and the Windows driver for the Sidewinder. There is no workaround to this, other than to uninstall your Sidewinder Gamepad drivers from Windows or run it in straight DOS mode. --------- Q2-12. I get "Unable to copy screen contents into clipboard" whenever I try to get a screenshot. A. Windows is trapping your printscreen key. To get around the problem: + Create a shortcut to the Retrocade executable + Right click on the shortcut + Click on properties + Click on the "misc" tab + Unclick PrtSc, Alt+PrtSc, and Alt+Space + Click Apply + Click OK Just double click on the icon to start up Retrocade, and this problem will not occur. ---------- Q2-13. Does Retrocade support scanlines? A. Thanks to Nicola Salmoria from the MAME team, yes, Retrocade supports scanlines. You can either enable them from within the UI (which will require a restart of Retrocade) or you can enable them on the command line with the "-scanlines on" option. This is sticky. Only 224x288, 288x224 and 256x256 scanlined video modes are supported. You will not get scanlines in any other resolution. ---------- Q2-14. Why can't Retrocade deal with interrupts higher than IRQ 7? A. It's a limitation of the DOS extender that Retrocade uses - *NOT* Retrocade itself.