segunda-feira, janeiro 31, 2022

fMSX 6 no Ubuntu 21.04

O fMSX ainda é um ótimo emulador e roda muito bem em maquinas menos potentes, principalmente em ambiente Unix/Linux.

Alteração no Makefile

A partir do GCC 10, ocorre o famoso problema de 'multiple definition of ARGC/ARGV', isto por conta que a partir desta versão, o GCC adota a flag no-common como padrão.

Uma pequena alteração no Makefile ajusta isso. O Makefile fica em fMSX/Unix, basta incluir na linha CFLAGS a opção '-fcommon' e a compilação transcorre tranquilamente, mas ainda não compile pois alguns pacotes são necessários.

Makefile

    CFLAGS += -Wall -I$(LIBZ80) -fcommon

Pacotes necessários

Claramente precisamos do compilador C, então o primeiro pacote necessário e o build-essential.

build-essential

    sudo apt install build-essential

Outros pacotes necessários são a xlib, xextensions e pulseaudio, que podem ser instaladas usando:

bibliotecas adicionais

    sudo apt install libx11-dev libxext-dev libpulse-dev

DSK Archive Tools

É bem útil ter os programas para criar arquivos DSK e extrair arquivos de DSKs, e o fMSX tem duas ferramentas simples mas muito boas para linha de comando. Após baixar e descompactar os fontes, inclua a stdlib.h tanto no rddsk.c qanto no wrdsk.c:

rddsk.c

    #include <stdlib.h>

wrdsk.c

    #include <stdlib.h>

Elas podem ser incluídas logo após a stdio.h.

O comando para compilar é trivial:

DiskUtils

        gcc rddsk.c DiskUtils.c -o rddsk

        gcc wrdsk.c DiskUtils.c -o wrdsk

Eu coloco no mesmo diretório do fmsx, no caso o /usr/local/bin

Compilando

A compilação é trivial, basta entrar no diretório fMSX/Unix e comandar

compilando

        make

Após a compilação, mova o fmsx para /usr/local/bin

Basta agora baixar o pacote de ROMs compatíveis e colocar no diretório de sua preferencia, eu recomendo o próprio /usr/loca/bin. Para executar o emulador:

executando

        fmsx -home /usr/local/bin

Teclas de Atalho

  • [CONTROL] - CONTROL (também: botão FIRE-A joystick).
  • [SHIFT] - SHIFT (também: botão FIRE-B joystick).
  • [ALT] - GRAPH (também: troca joysticks).
  • [INSERT] - INSERT.
  • [DELETE] - DELETE.
  • [HOME] - HOME/CLS.
  • [END] - SELECT.
  • [PGUP] - STOP/BREAK.
  • [PGDOWN] - COUNTRY.
  • [F6] - Carrega o estado do emulador de um arquivo .STA.
  • [F7] - Salva o estado do emulador em um arquivo .STA.
  • [F8] - Retrocede o estado do emulador no tempo.
  • [F9] - Acelera a emulação.
  • [F10] - Chama o menu interno de configuração.
  • [F11] - Reinicializa o hardware.
  • [F12] - Encerra o emulador.
  • [CONTROL]+[F8] - Troca o estado das 'scanlines' ligada/desligada.
  • [ALT]+[F8] - Troca o estado de suavização da tela ligado/desligado.
  • [CONTROL]+[F10] - Chama o depurador interno.

Opções de linha de comando

opções

Uso: fmsx [-opção1 [-opção2...]] [arquivo1] [arquivo2]

  [arquivo1] = nome do arquivo a ser carregado no slot A

  [arquivo2] = nome do arquivo a ser carregado no slot B


  -verbose {nível} - Seleciona o nível de mensagens [1]

                     0 - Silencioso

                     1 - Mensagens de Inicialização

                     2 - operações do V9938

                     4 - Disco/Fita

                     8 - Memoria

                    16 - Operações Ilegais do Z80

  -skip {porcentagem} - Porcentagem de frames descartados [25]

  -pal/-ntsc - Seleciona o perído HBlank/VBlank conforme padrão 

               PAL/NTSC [NTSC]

  -help - Mostra a página de ajuda

  -home {diretório} - Define o diretório que contém as ROMs do 

                      sistema [off]

  -printer {arquivo} - Redireciona a saída da impressora para 

                       o arquivo [stdout]

  -serial {arquivo} - Redireciona o E/S serial para o arquivo 

                      [stdin/stdout]

  -diska {arquivo} - Imagem de disco a ser usada no drive A: 

                     [DRIVEA.DSK]

                     (opções multiplas -diska são aceitas)

  -diskb {arquivo} - Imagem de disco a ser usada no drive B: 

                     [DRIVEB.DSK]

                     (opções multiplas -diskb são aceitas)

  -tape {arquivo} - Arquivo de imagem de cassete a ser 

                    carregado [off]

  -font {arquivo} - Define a fonte (fixa) para os modos 

                    texto [DEFAULT.FNT]

  -logsnd {arquivo} - Define o arquivo de log de audio [LOG.MID]

  -state {arquivo} - Define o nome do arquivo de salvamento de 

                     estado [automatic]

  -auto/-noauto - Habilita o disparo automático na tecla 

                  ESPACO [off]

  -ram {páginas} - Número de páginas de 16Kb disponíveis na 

                   RAM [4/8/8]

  -vram {páginas} - Número de páginas de 16kB na VRAM 

                    [2/8/8]

  -rom {tipo} - Seleciona o tipo de mapeamento da MegaROM [8,8]

                (duas opções -rom são aceitas)

                0 - Generica 8kB

                1 - Generica 16kB (MSXDOS2)

                2 - Konami5 8kB

                3 - Konami4 8kB

                4 - ASCII 8kB

                5 - ASCII 16kB

                6 - GameMaster2

                7 - FMPAC

                8 - tenta adivinhar o tipo de mapeamento

  -msx1/-msx2/-msx2+  - Seleciona o modelo do MSX [-msx2]

  -joy {type}         - Seleciona o tipo de Joystick [0,0]

                        (duas opções -joy são suportadas)

                        0 - Sem joystick

                        1 - Joystick Normal

                        2 - Mouse em modo joystick

                        3 - Mouse em modo real

  -simbdos/-wd1793    - Simula call em modo DiskROM [-wd1793]

  -sound [{quality}]  - Qualidade emulação de som (Hz) [44100]

  -nosound            - O mesmo que '-sound 0'

  -sync {frequency}   - Frequencia de update da tela {frequency}[60]

  -nosync             - Não sincroniza os updates de tela [-nosync]

  -static/-nostatic   - Paleta de cores estática [-nostatic]

  -tv/-lcd/-raster    - Simula scanlines da TV em raster LCD [off]

  -linear             - Rendereiza o modo interpolação linear [off]

  -soft/-eagle        - Rendereiza o modo 2xSaI ou EAGLE [off]

  -epx/-scale2x       - Rendereiza o modo EPX ou Scale2X [off]

  -cmy/-rgb           - Simula o raster CMY/RGB (pixel) [off]

  -mono/-sepia        - Simula CRT mono ou sépia [off]

  -green/-amber       - Simula CRT verde ou âmbar [off]

  -4x3                - Força proporção 4:3 da TV [off]

With #define DEBUG:

  -trap {address}     - Trap execution when PC reaches address [FFFFh]

                        (when keyword 'now' is used in place of the

                        {address}, execution will trap immediately)


  With #define MITSHM:

  -shm/-noshm         - Use MIT SHM extensions for X [-shm]


  With #define UNIX:

  -saver/-nosaver     - Save/don't save CPU when inactive [-saver]

  -scale {factor}     - Scale window by {factor} [2]


  With #define MSDOS:

  -vsync              - Sync screen updates to VBlank [-vsync]

  -480/-200           - Use 640x480 or 320x200 VGA mode [-200]


OBS: Quando compilado com #define ZLIB, o fMSX lê automaticamente

     arquivos compactados no formato GZIP ou PKZIP (apenas um

     arquivo por container).

Download

Links

  • fMSX: Site oficial do fMSX.

Nenhum comentário:

Postar um comentário