Olá galera!

Complementando um post sobre alguns jogos que eu curtia no NeoMatrix Light, aqui entrarei em detalhes mais técnicos sobre como configurar o emulador DOSBox para rodar de forma satisfatória os jogos mostrados.
Estou utilizando a versão 0.72 deste programa. Esta versão demonstrou ser muito boa, rodando os jogos que eu queria de forma bem satisfatória, exceto por um (que não está mostrado no NeoMatrix Light), o SWIV 3D que se recusou a reconhecer o CD-ROM (embora ele tenha uma versão para Windows no mesmo CD, ele não roda no Windows XP :-( ).
Um item MUITO importante é a configuração da sua máquina, especialmente processador e memória RAM. Por enquanto, o DOSBox não roda os jogos que requeiram aceleração 3D (particularmente, não testei ainda, para dizer a verdade), os jogos que ele se propõe a emular não necessitam de uma máquina tão parruda para a época em que foram lançados.

O DOSBox cria uma máquina virtual com o o DOS e emula placas de vídeo VGA, placas de som Sound Blaster 16 e compatíveis, Adlib e Gravis UltraSound, além de mouse e joystick. E como todo emulador, ele traduz as instruções do programa a ser executado para as instruções que serão executadas pelo sistema host, e com isso não chega na velocidade nativa da máquina. Por exemplo, caso você tenha um processador Core 2 Duo de 2GHz, o desempenho da máquina virtual será equivalente ao de um Pentium III, devido à natureza da emulação (o que é diferente de virtualização, onde é possível chegar à velocidade nativa do host).

Minha configuração é a seguinte:
Processador Intel Celeron 2.5GHz (Northwood), 1.2 GB de RAM DDR 400, Placa mãe ASUS P4V8X-X, VGA Radeon 9600 AGP 8x com 256MB x 128 bits de memória. Como vocês podem perceber, essa configuração já tem uma certa idade (essa máquina já tem uns 3 anos) mas mesmo assim dá para brincar ;-) As configurações se basearão nela, portanto, você pode ter algumas variações de desempenho no seu hardware para uma mesma configuração do DOSBox.

Agora, vamos ao que interessa!!!

As configurações do DOSBox ficam em um arquivo chamado dosbox.conf, que fica no diretório onde foi instalado o DOSBox (mas através da linha de comando, pode se especificar um outro arquivo de configuração). Ele tem essa cara:

        # This is the configurationfile for DOSBox 0.72.
        # Lines starting with a # are commentlines.
        # They are used to (briefly) document the effect of each option.

        [sdl]
        # fullscreen -- Start dosbox directly in fullscreen.
        # fulldouble -- Use double buffering in fullscreen.
        # fullresolution -- What resolution to use for fullscreen: original or fixed size (e.g. 1024x768).
        # windowresolution -- Scale the window to this size IF the output device supports hardware scaling.
        # output -- What to use for output: surface,overlay,opengl,openglnb,ddraw.
        # autolock -- Mouse will automatically lock, if you click on the screen.
        # sensitiviy -- Mouse sensitivity.
        # waitonerror -- Wait before closing the console if dosbox has an error.
        # priority -- Priority levels for dosbox: lowest,lower,normal,higher,highest,pause
        (when not focussed).
        # Second entry behind the comma is for when dosbox is not focused/minimized.
        # mapperfile -- File used to load/save the key/event mappings from.
        # usescancodes -- Avoid usage of symkeys, might not work on all operating systems.
        fullscreen=false
        fulldouble=true
        fullresolution=original
        windowresolution=640x480
        output=ddraw
        autolock=true
        sensitivity=80
        waitonerror=true
        priority=higher,normal
        mapperfile=mapper.txt
        usescancodes=true
            
        [dosbox]
        # language -- Select another language file.
        # memsize -- Amount of memory DOSBox has in megabytes.
        # machine -- The type of machine tries to emulate:hercules,cga,tandy,pcjr,vga.
        # captures -- Directory where things like wave,midi,screenshot get captured.
        language=
        machine=vga
        captures=capture
        memsize=64
            
        [render]
        # frameskip -- How many frames DOSBox skips before drawing one.
        # aspect -- Do aspect correction, if your output method doesn't support scaling this can slow things down!.
        # scaler -- Scaler used to enlarge/enhance low resolution modes.
        # Supported are none,normal2x,normal3x,advmame2x,advmame3x,hq2x,hq3x,
        # 2xsai,super2xsai,supereagle,advinterp2x,advinterp3x,
        # tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x.
        # If forced is appended (like scaler=hq2x forced), the scaler will be used
        # even if the result might not be desired.
        frameskip=0
        aspect=false
        scaler=normal2x

        [cpu]
        # core -- CPU Core used in emulation: normal,simple,dynamic,auto.
        # auto switches from normal to dynamic if appropriate.
        # cycles -- Amount of instructions DOSBox tries to emulate each millisecond.
        # Setting this value too high results in sound dropouts and lags.
        # You can also let DOSBox guess the correct value by setting it to max.
        # The default setting (auto) switches to max if appropriate.
        # cycleup -- Amount of cycles to increase/decrease with keycombo.
        # cycledown Setting it lower than 100 will be a percentage.
        core=auto
        cycles=10000
        cycleup=500
        cycledown=500

        [mixer]
        # nosound -- Enable silent mode, sound is still emulated though.
        # rate -- Mixer sample rate, setting any devices higher than this will
        # probably lower their sound quality.
        # blocksize -- Mixer block size, larger blocks might help sound stuttering
        # but sound will also be more lagged.
        # prebuffer -- How many milliseconds of data to keep on top of the blocksize.
        nosound=false
        rate=22050
        blocksize=2048
        prebuffer=10

        [midi]
        # mpu401 -- Type of MPU-401 to emulate: none, uart or intelligent.
        # device -- Device that will receive the MIDI data from MPU-401.
        # This can be default,alsa,oss,win32,coreaudio,none.
        # config -- Special configuration options for the device. In Windows put
        # the id of the device you want to use. See README for details.
        mpu401=intelligent
        device=default
        config=

        [sblaster]
        # sbtype -- Type of sblaster to emulate:none,sb1,sb2,sbpro1,sbpro2,sb16.
        # sbbase,irq,dma,hdma -- The IO/IRQ/DMA/High DMA address of the soundblaster.
        # mixer -- Allow the soundblaster mixer to modify the DOSBox mixer.
        # oplmode -- Type of OPL emulation: auto,cms,opl2,dualopl2,opl3.
        # On auto the mode is determined by sblaster type.
        # All OPL modes are 'Adlib', except for CMS.
        # oplrate -- Sample rate of OPL music emulation.
        sbtype=sb16
        sbbase=220
        irq=7
        dma=1
        hdma=5
        mixer=true
        oplmode=auto
        oplrate=22050

        [gus]
        # gus -- Enable the Gravis Ultrasound emulation.
        # gusbase,irq1,irq2,dma1,dma2 -- The IO/IRQ/DMA addresses of the
        # Gravis Ultrasound. (Same IRQ's and DMA's are OK.)
        # gusrate -- Sample rate of Ultrasound emulation.
        # ultradir -- Path to Ultrasound directory. In this directory
        # there should be a MIDI directory that contains
        # the patch files for GUS playback. Patch sets used
        # with Timidity should work fine.
        gus=true
        gusrate=22050
        gusbase=240
        irq1=5
        irq2=5
        dma1=3
        dma2=3
        ultradir=C:ULTRASND

        [speaker]
        # pcspeaker -- Enable PC-Speaker emulation.
        # pcrate -- Sample rate of the PC-Speaker sound generation.
        # tandy -- Enable Tandy Sound System emulation (off,on,auto).
        # For auto Tandysound emulation is present only if machine is set to tandy.
        # tandyrate -- Sample rate of the Tandy 3-Voice generation.
        # disney -- Enable Disney Sound Source emulation. Covox Voice Master and Speech Thing compatible.
        pcspeaker=true
        pcrate=22050
        tandy=auto
        tandyrate=22050
        disney=true

        [joystick]
        # joysticktype -- Type of joystick to emulate: auto (default), none,
        # 2axis (supports two joysticks,
        # 4axis (supports one joystick, first joystick used),
        # 4axis_2 (supports one joystick, second joystick used),
        # fcs (Thrustmaster), ch (CH Flightstick).
        # none disables joystick emulation.
        # auto chooses emulation depending on real joystick(s).
        # timed -- enable timed intervals for axis. (false is old style behaviour).
        # autofire -- continuously fires as long as you keep the button pressed.
        # swap34 -- swap the 3rd and the 4th axis. can be useful for certain joysticks.
        # buttonwrap -- enable button wrapping at the number of emulated buttons.
        joysticktype=auto
        timed=true
        autofire=false
        swap34=false
        buttonwrap=true

        [serial]
        # serial1-4 -- set type of device connected to com port.
        # Can be disabled, dummy, modem, nullmodem, directserial.
        # Additional parameters must be in the same line in the form of
        # parameter:value. Parameter for all types is irq.
        # for directserial: realport (required), rxdelay (optional).
        # for modem: listenport (optional).
        # for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
        # transparent, port, inhsocket (all optional).
        # Example: serial1=modem listenport:5000
        serial1=dummy
        serial2=dummy
        serial3=disabled
        serial4=disabled

        [dos]
        # xms -- Enable XMS support.
        # ems -- Enable EMS support.
        # umb -- Enable UMB support.
        # keyboardlayout -- Language code of the keyboard layout (or none).
        xms=true
        ems=true
        umb=true
        keyboardlayout=none

        [ipx]
        # ipx -- Enable ipx over UDP/IP emulation.
        ipx=false

        [autoexec]
        # Lines in this section will be run at startup.
        mount C: G:
        mount D Y: -t cdrom -usecd 1
    

Iremos mexer nos parâmetros relacionados aos ciclos da CPU (a quantidade de instruções por milissegundo) que o DOSBox tentará traduzir para instruções do Host. Esta configuração se encontra na seção [CPU]. Ela também pode ser alterada em tempo de execução, através dos atalhos Ctrl+F12 para aumentar e Ctrl+F11 para diminuir. O Frameskip deixaremos em 0 (zero), vamos rodar o jogo na totalidade dos frames.

Deixemos a nossa máquina virtual com 64MB de memória, o que é suficiente para os jogos que irei comentar. A resolução, fixei em 640x480 pontos, porém o resultado é o mesmo com 1024x768 tanto em janela quanto em tela cheia, pelo menos no meu hardware.

Enfim, aos jogos!

  • Screamer 2: Necessários 30000 ciclos. No setup, a placa de som foi detectada como Sound Blaster 16, e a CPU como um 486 de 157 MHz! Ele demora um pouco para ser carregado na primeira vez, porém depois rola legal. O áudio dá umas pequenas cortadas, mas nada que atrapalhe.
  • Tyrian: Necessários pelo menos 8000 ciclos. A placa de som para a música foi configurada em MIDI 330h e efeitos sonoros em Sound Blaster. O detalhe foi configurado em High. Para rodar com os detalhes em Pentium, suba a quantidade de ciclos para 15000.
  • Stargunner: Necessários 10000 ciclos. Mais que isso, o som já começa a cortar bastante. Somente a introdução do episódio que eu achei lenta, mas pressionando ENTER o jogo entra e vai bem de boa. Placa de som configurada como Sound Blaster Series, com o mixer em 22KHz e o vídeo habilitado para VESA 2.0 (coisa que não acontecia no meu Pentium 133).
  • Death Rally: Necessários 23000 ciclos. Placa de som como Sound Blaster. Nota: O setup original contém um bug que impede o programa de ser instalado em máquinas com mais de 64MB de memória. Caso você tenha configurado o DOSBox acima disso, diminua a memória disponível e só aí instale o Death Rally. No site da 3D Realms há um patch para esta falha.
  • Jazz Jackrabbit: Necessários 4500 ciclos. Acima disso, o som começa a dar bastante lags (nota-se pela animação da introdução). Durante a partida, o jogo pode parecer lento, mas mesmo assim dá para jogar legal.
  • Cyclemania: Necessários 15000 ciclos. Esse roda bem suave.

Pronto, estão aí as configurações dos jogos que citei no post do NeoMatrix Light! Se você também gosta deles, boa diversão!