Archive for the ‘Linux’ Category

Emulador de Sega Saturn para Dreamcast

Tuesday, January 29th, 2008

Acabei de testar no Linux (tem versões para Windows e Mac OS X também) o Yabause, um novo emulador de Sega Saturn, open-source (GPL).

Bastou baixar e rodar o .package (que é um auto-installer) do site. A única dependência de que ele reclamou eu resolvi com

sudo apt-get install libgtkglext1

Aqui no Ubuntu rodou o lendário Radiant Silvergun perfeitinho, mas lento (20 fps). O SSF, outro emulador para Windows, roda esse jogo full speed, e acho que sei o porquê: o Yabause não é multi-thread (ele estava usando 100% de apenas um dos meus cores), enquanto o SSF é. Além disso, acredito que o SSF use instruções vetoriais (SSE) para otimizar código, e não vi nada no Yabause que sugerisse isso (provavelmente porque é todo em C, portável).

O mais interessante é que estão fazendo uma versão dele para Dreamcast (o que é bem natural, já que o processador SH4 do DC é bem parecido com o SH3 do Saturn). Não testei ainda (preguiça de gravar CD e ligar o Dreamcast na TV), mas pelo que vi nos screenshots parece que já funciona o básico (dá boot e mostra menus). O mais provável é empacar por falta de RAM, ou ficar tremendamente lento pelo fato do código não ser otimizado, mas já é algo interessante. Lembro-me de ter conversado bastante com o Arnon (que escreveu um emulador de MSX para Dreamcast) sobre emular Saturn no DC, na época em que saíram jogos como o Virtua Cop (que parece um jogo de Saturn rodando no DC, sem mexer nada).

E por falar em emuladores da Sega, uma conseqüência legal do progresso dos emuladores de Dreamcast - especialmente os totalmente open-source - é que finalmente vamos poder emular em casa as máquinas Naomi (que são Dreamcasts on steroids, com mais RAM). Eu particularmente gostaria de ver um emulador de Ferrari F-355 Challenge de arcade, com três monitores e câmbio manual com embreagem (usando o Logitech G25 ?), e também de jogar Planet Harrier, a continuação de Space Harrier que foi prometida para o Dreamcast mas que acabou só saindo nos arcades. Já apareceram alguns screenshots de versões ainda não lançadas com jogos de Naomi, em breve devem estar disponíveis.

Skype 2.0 com webcam no Ubuntu

Saturday, January 26th, 2008

A versão beta do Skype 2.0 para Linux me surpreendeu. Instalei o package deb oficial (para Ubuntu 7.04 “Feisty Fawn”) no Ubuntu 7.10 “Gutsy Gibbon” e funcionou sem problemas, tanto o áudio quanto o recurso que mais interessa na nova versão, a webcam. Receita de bolo:

Instalação da webcam:

Primeiro, identificamos:

> lsusb
Bus 005 Device 005: ID 05ab:0060 In-System Design USB 2.0 ATA Bridge
Bus 003 Device 002: ID 05ac:1003 Apple Computer, Inc.
Bus 003 Device 003: ID 05ac:0304 Apple Computer, Inc.
Bus 003 Device 004: ID 05ac:020b Apple Computer, Inc.
Bus 001 Device 005: ID 0ac8:301b Z-Star Microelectronics Corp. ZC0301 WebCam

Uma busca por 0ac8:301b no Google retorna a página http://mxhaard.free.fr/spca5xx.html , que diz que a câmera é suportada pelo módulo gspca.
Baixo o código fonte do módulo do kernel e o utilitário module-assistant

> sudo apt-get install gspca-source module-assistant

Compilo e instalo o módulo do kernel:

> sudo module-assistant update
> sudo m-a a-i gspca
> modprobe gspca

Instalo o xawtv para testar a câmera:

> sudo apt-get install xawtv

Agora para instalar o Skype 2.0:

> wget http://www.skype.com/go/getskype-linux-beta-ubuntu

Instalando dependências e o Skype propriamente dito:

> sudo apt-get install libqt4-gui libqt4-core
> sudo dpkg --install skype-debian_2.0.0.27-1_i386.deb

Depois disso foi só executar e pronto:

Skype 2.0 no Ubuntu 7.10

BTW, meu usuário no skype é muriloki ! ;-)

Compiz-Fusion (desktop com aceleração 3D do Linux)

Friday, January 4th, 2008

Eu fui usuário de Mac OS X por um bom tempo, no finzinho da era G4. Hoje em dia não tenho paciência pra Mac mais, a idéia da Apple achar que sabe o que é melhor para mim melhor do que eu me irrita. De qualquer forma, eu curtia o Exposé e as outras frescuras da interface gráfica acelerada por hardware do OS X.

O Vista tem sua cópia, porquinha que chega (não serve para muita coisa). O Linux antigamente tinha dois esforços nesse sentido, o Beryl e o Compiz, que recentemente uniram as forças para criar o Compiz-Fusion, default em distribuições modernas como o Ubuntu 7.10 “Gutsy Gibbon”.

A aceleração básica que habilitada após a instalação, é só o arroz-com-feijão - quase imperceptível. Por outro lado, a opção com mais recursos ficou pesada demais para o meu hardware de vídeo onboard (Intel GMA 945 - o mesmo chipset de vídeo do Mac Mini que roda o OS X razoavelmente bem).

Com a GeForce 8600 GT, entretanto, a coisa é diferente… Fiquei impressionado com como o Compiz-Fusion funcionou de cara, sem problemas, e também como eu me acostumei rápido aos novos recursos (os desktops virtuais nas faces do cubo são extremamente úteis, e o clone do Exposé também).

Obviamente, o eye-candy mais escandaloso eu desliguei, então o vídeo abaixo não é exatamente o que você veria aqui em casa, mas mostra bem o que está disponível:

C com um r minúsculo dentro

Thursday, December 13th, 2007

O meu grande amigo Gustavo “Schroeder” Fraguas perguntou hoje:

Alguém sabe o que significa esse caractere “₢”? Nunca vi mais gordo e vem bem grande no teclado do meu manauara [Amazon] PC.

Para descobrir, usei o excelente utiltário de linha de comando od, no Linux:

> echo ₢ | od -t u1
0000000 226 130 162  10
0000004

“echo ₢” imprime esse caractere (copiei o símbolo do email que recebi)

“od”, “octal dump”, imprime os bytes do arquivo, em octal por default. A opção “-t u1″ significa que quero em decimal sem signal (u é de unsigned), 1 byte de cada vez. Se eu quisesse um dump hexadecimal como nas listagens antigas da Micro Sistemas eu usaria “-t x1″.

Depois foi só procurar a seqüência 226 130 162 no Google:

cruzeiro
U+20A2: CRUZEIRO SIGN

http://www.wazu.jp/gallery/Test_CurrencySymbols.html

Sim, é isso mesmo, a nossa antiga moeda Cruzeiro tinha um símbolo específico, que existe em Unicode! :-) Completamente inútil hoje em dia, é verdade, mas interessante de qualquer forma.

Ressuscitando um Pentium 200

Sunday, November 18th, 2007

O Senna ia jogar fora (literalmente) o seu velho Pentium 200 do tempo de faculdade. Eu fiquei com dó, porque era uma maquininha bonitinha em 1996: Pentium 200 MMX com 96 MB de RAM, placa-mãe baseada na clássica northbridge Intel 430TX, com placa de vídeo Trident 9685, Ethernet Realtek e uma Sound Blaster AWE 32. Na época eu usava um Cyrix 5×86 xing-ling! :-)

Levei a tralha pra casa, sem saber direito o que fazer com ela. Ganhei um monitor de 14″ da minha irmã, que também ia jogar fora depois que comprou um notebook. Dependurei um HDD de 30GB que tinha parado em casa, mas o BIOS não detectou direito, reconhecendo como um HD de 8GB.

Eu testei um monte de distribuições Linux minúsculas, para ver se alguma funcionava (meu primeiro Linux foi um Slackware em 1996, comprado via telnet no cdrom.com!). O problema da maioria delas é que são bem antigas; todas são baseadas no kernel 2.4, por exemplo.

Aí esbarrei num post do LifeHacker sobre o novo Puppy 3.0, lançado recentemente e bem moderno (kernel 2.6, Xorg novo, tudo certinho). Ele foi feito para rodar a partir do CD, sem instalar nada, mas também suporta ser instalado em quase tudo, de HD a pendrive USB.

Fiquei impressionado com o desempenho do bichinho: de cara ele detectou todo o hardware corretamente - até o suporte a USB da placa-mãe 430TX (curiosamente, apesar do chipset suportar não há conectores USB nessa placa-mãe, nem mesmo trilhas para soldá-los !). Em uns cinco minutos eu estava rodando o SeaMonkey, um browser web (e leitor de emails, e outras coisas) levinho baseado no Mozilla, no P200.

Ah, ele também detectou corretamente o HD de 30 GB, e passou a usá-lo normalmente, mesmo sem suporte pelo BIOS - acho que porque instalei o GRUB (o bootloader do Linux) na MBR (eu tinha tentado instalar uma outra distro nesse HD antes mas a placa-mãe não conseguia dar boot), seguindo as instruções do Wizard do Puppy.

Isso já foi suficiente para eu ficar feliz - eu podia abrir uma X-session no meu servidor e rodar quase tudo remotamente, por exemplo. O problema é que tudo ficava meio lento, por causa da rede. O Puppy 3 já vem com clientes Remote Desktop e VNC, para sessões remotas mais rápidas em servidores Linux e Windows, mas eu resolvi tentar uma outra coisa, o NX.

O NX funciona como o VNC ou o Remote Desktop, mas é bem mais rápido. Existe uma versão open-source, o FreeNX, mas preferi usar versão free (como em free beer) do código proprietário da NoMachine. A instalação no Ubuntu é composta por três pacotes .DEB, instalados com dpkg –install, mas não funcionou de cara, porque não rodo o sshd no porto default (9022). Modifiquei o porto nos arquivos node.cfg e server.cfg e renomeei o arquivo authorized_keys2 para authorized_keys (por causa da minha versão do OpenSSH), como explicado aqui, e tudo correu bem, apesar de ter dado mais trabalho do que eu esperava.

Restava agora instalar o NX Client no Puppy, o que eu temia que ia dar um trabalho danado. Baixei a tarball já compilada dp site da NoMachine, mas ela não funcionou porque o Puppy não vem com a biblioteca libstdc++ (o runtime de C++ do Linux). Felizmente, achei um pacote .PUP prontinho com ela. Bastou abrir o com file manager do Puppy (que é baseado no ROX) para instalar, e o NX Client funcionou direitinho.

O resultado final é impressionante - dá para usar o Firefox e outras aplicações sem o menor esforço. O NX é tão rápido que cheguei ao cúmulo de acessar vídeos no YouTube remotamente - funciona, apesar de serem mostrados apenas alguns quadros por segundo.

UPDATE: Agora ao invés de abrir uma sessão Gnome inteira remota para o Pentium 200 eu uso o nxclient para abrir só o Firefox remotamente - o que poupa alguma memória e processamento do servidor, além de aparentemente ficar mais estável.

Corrigindo o “format error” de MP3 Players

Tuesday, November 13th, 2007

Eu tenho um mp3 player chinês vagabundo, parte da famigerada família s1mp3. O meu tem mesmo 1GB, ao contrário de muitos por aí que são modificados para parecerem que são grandes e na verdade têm 128 MB. :-)

Basicamente só o uso para ouvir audiobook. O chato é que nem todo arquivo mp3 ele toca; alguns dá um “FORMAT ERROR”. Além disso, ele toca os arquivos na ordem em que são copiados pra ele, o que pode ser um problema às vezes (tudo bem você ouvir músicas fora de ordem no mesmo álbum, mas ouvir capítulos fora de ordem não dá).

Eu corrijo isso de uma vez só, usando um script para recodificar com o lame o mp3 problemático e já transferir os arquivos na ordem certa:

for i in (seq -w 1 1 30); lame $i*.mp3 /media/disk/shadow/$i.mp3; end

Nesse exemplo uso a fish. O comando seq gera uma seqüência de 01 a 30 (a opção -w insere zeros se necessário), e uso os parâmetros default do lame.