Digital Drops Blog de Brinquedo

BrMSX: a história do emulador

Por em 31 de dezembro de 2007

180px-Brmsx.logoPara os fãs do sistema MSX, um marco inesquecível foi o lançamento do BrMSX: um emulador completamente escrito em assembly e muito superior ao fMSX disponível na época (até eu dei minha microscópica contribuição, verificando algumas temporizações com os osciloscópios da faculdade).

Seu autor, o brilhante Ricardo Bittencourt escreveu sobre os dez anos de sua criação na lista MSX-rb, contando detalhes "fudebas" e o eventual abandono do desenvolvimento. Para todos que gostam de programação, é uma ótima leitura.

Provavelmente ninguém lembrou, mas dia 27 de setembro passado o BrMSX fez 10 anos de idade. Hooray pro BrMSX !

Passados 10 anos, acho que agora é tempo de abrir o baú e contar a histórias secretas do BrMSX. Por exemplo, uma delas é a história da tela de boot do 2+.

Naquela época, ninguém achava que existia emulador de 2+. Mas isso não era verdade, o fMSX emulava parcialmente algumas features na versão unix. O problema é que ele não emulava a tela de boot, então ninguém realmente levava a sério.

Quando eu coloquei a emulação de screen 12 e 10, eu previ que iria acontecer o mesmo comigo, caso eu não emulasse o boot. E, de fato, o boot não funcionava no BrMSX também.

O segredo do boot é que o MSX 2+ tem um registro secreto que controla a tela de boot. Na época, o único brasileiro que sabia da existência desse registro era o Ademir, e ele não contava pra ninguém, porque era um dos segredos comerciais dele. Só os kits CIEL tinham o registro funcionando direitinho.

Isso me deixou numa posição delicada. Se eu fizesse o release sem o boot, o povo não iria levar a sério; e consertar o boot seria muito difícil, já que eu não sabia do tal registro, e, por isso, não entendia porque o boot não funcionava.

Pra sair dessa, eu apelei. Se não ia por bem, ia por mal, hehe. A minha solução foi ignorar o boot original da bios e refazer a animação de boot do zero. Se vocês pegarem a rom que vem no BrMSX e fizerem um diff com a rom do CIEL, vão ver que o finalzinho da subrom tem um monte de diferenças, esse aí é o código que eu adicionei pra fazer o boot funcionar na raça :)

Mais ou menos nessa época, eu fiz o erro que matou o BrMSX. Vocês lembram que o BrMSX é feito todo em assembly, e dada a magnitude do projeto, iria ser impossível trabalhar nele se ele não fosse muito bem estruturado. Ele é todo comentado por dentro, e todo modular também, aliás foi isso que me permitiu transformar o BrMSX em BrSMS em apenas uma tarde. Não sei se vocês sabem, mas o BrMSX foi eleito melhor software criado por aluno da USP em 99, e um dos critérios do júri foi justamente a modularidade do código, eles ficaram impressionados em como um troço daquele tamanho, todo em assembly, era tão legível por dentro.

Pois bem, isso era só parcialmente verdade. O BrMSX teve um projeto muito sólido, de fato, mas apenas dentro do escopo inicial. Ele foi feito para ser um emulador operado por linha de comando, todo o código que envolvia GUI foi marretado posteriormente.

O problema era que todos os sites de emulação diziam que o BrMSX era "quase perfeito", a única coisa que faltava nele era uma GUI. Aí eu pensei, saco, lá vou eu ter que enfiar uma GUI num negócio que não foi planejado pra suportar GUI.

Acabei colocando a GUI, e o efeito psicológico foi o esperado. A GUI era uma droga, mas agora todo mundo falava que o BrMSX era perfeito, porque tinha GUI. Na verdade, ninguém usava aquele lixo, estava lá só pra marcar presença mesmo. E no final foi isso que detonou o projeto.

Na época que eu coloquei as features de MSX 2+, eu deixei passar um ponteiro perdido, que crashava o emulador caso você tentasse ligar a GUI em modo 2+. Isso foi por volta da versão 203. Mas, como ninguém usava aquela coisa, ninguém percebeu esse erro. Eu só recebi o bug report dele quando estava na versão 206. Quando eu percebi que o bug tinha sido introduzido três versões atrás, e era dentro da GUI, a única parte ilegível do código, bateu o desânimo.

Debugar aquele código ruim estava fora de questão, a única maneira era voltar no CVS três versões pra trás e reimplementar as features das versões novas. Isso iria tomar mais ou menos um mês, e nem seria tarefa difícil, só meio chata. O problema é que a essa altura eu achei que não valia a pena. Estava claro pra mim que o DOS como plataforma não tinha muito tempo de vida, se fosse pra investir um mês da minha vida em código chato, era melhor jogar fora aquela GUI de uma vez e portar pra windows.

E de fato eu comecei a fazer isso. Mas aí me veio a constatação fatídica: programar em assembly pra DOS é legal, programar em assembly pra Windows é pra masoquistas apenas. Os compiladores da época não eram a coisa mais intuitiva do mundo, e tinha um monte de truques que eu usava no código de DOS que simplesmente não funcionavam em windows. Por exemplo, o x86 tem só 7 registradores de uso geral, o que é extremamente limitante. No DOS, quando batia o desespero, eu ainda tinha uma alternativa: desligar as interrupções e usar o stack pointer pra fazer aritmética. Isso era usado extensivamente no código do PSG, e foi por isso que nenhuma versão do BrMSX para windows tinha som, já que no windows você não pode desligar as interrupções.

Depois de bater a cabeça várias vezes, eu percebi que o BlueMSX tinha uma interface boa, e melhor, tinha um programador que gostava de fazer GUI. Aí eu decidi que era a hora de pular do barco e me juntar à equipe do BlueMSX, assim eu poderia fazer só as partes que eu gostava, e a parte pentelha da interface ficava por conta do Vik.  Hoje em dia, acho que quase ninguém usa o BrMSX pra emular de fato, os poucos que ainda usam, o fazem pra usar o debugger. Ainda assim, fico feliz por ter tido uma receptividade tão boa naquela época.

___________________________________________________________________

* Reprodução permitida ao Meio Bit pelo autor.

emEntrevista Hardware Miscelâneas

Bittorrent a serviço dos games

Por em 31 de dezembro de 2007

Algum tempo atrás saiu o teaser do vaporware Duke Nukem Forever. Obviamente o mundo inteiro iria querer assistir o vídeo, e alguns sites não estão preparados para aguentar tantos acessos, fora que dependendo do tamanho do vídeo o consumo de banda pode ser bem elevado. Então a 3D Realms (a produtora do jogo) também disponibilizou o teaser no formato bittorrent, junto com os links de diversos sites que hospedaram o vídeo.

Dá para tirar uma conclusão interessante quanto a isso. Hoje o bittorrent é um dos piores inimigos da indústria fonográfica, mas nem todos os arquivos são ilegais. Para desenvolvedores de jogos que não tem muitos recursos, o bittorrent pode ser o melhor meio de distribuição de games, já que aí os gastos que a empresa tem com servidores chega a zero. E como todos sabem, no bittorrent os arquivos são trocados entre os próprios usuários. Com isso se eu crio um jogo não precisaria me preocupar em ter um servidor dedicado (ou pagar um provedor do tipo Media Temple, por exemplo) e pagar altas taxas para usar o mesmo.

O ruim é que tem muitos provedores que estão limitando isso, como a Comcast. Nesse caso, é um problema bem difícil de resolver: muitos usuários realmente gastam muita banda, e para quem realmente precisa de internet, pode se sentir prejudicado porquê alguém está baixando algum filme/jogo qualquer e usando parte da banda.

[Via Torrent Freak]

emIndústria

Opinião: Benazir Bhutto, tiranos e o Mundo Digital

Por em 31 de dezembro de 2007
Praça Tianamen, China, 5/6/1989 – Foto por Jeff Widener Fonte: Wikipedia. Usada sob o regime de Fair Use

A imagem icônica acima correu o mundo, em 1989, e é uma das poucas que temos do herói anônimo que enfrentou os tanques do Exército Vermelho, durante as manifestações pela Democracia, na Praça Tianamen, China. Ninguém sabe quem ele é, imagina-se que tenha sido executado. Nunca saberemos.

Hoje esse tipo de evento não seria mais possível. Cada movimento dos tanques seria seguido por celulares, câmeras, iPhones. Antes do sangue secar na primeira poça, blogs e sites de notícias estariam espalhando as (más) novas.

Agora mesmo no Paquistão o governo do ditador Musharraf está tentando minimizar a morte da Ex-Primeira Ministra Benazir Bhutto, com versões contraditórias, alegando uma hora que ela morreu por um tiro, depois no hospital, agora alegam que ela bateu com a cabeça durante a fuga. Politicamente é importante que ela não se torna uma mártir.

Como todo ditador absolutista, Musharraf acha que entende como o mundo funciona, acha mesmo que controla como esse mundo funciona. Infelizmente (para ele) o mundo não funciona por decreto, muito menos seguindo idéias retrógradas de líderes totalitários.

Enquanto o governo paquistanês insiste em teorias conspiratórias envolvendo a Al Qaeda, alavancas mágicas e similares (em breve culparão Lee Oswald, ou o Canceroso) o povo que estava lá portava a mais perigosa arma de todas: Ferramentas capazes de difundir informação.

No caso, celulares com câmeras. “pra quê um celular com câmera?” perguntam alguns.

Para desmascarar um governo mentiroso, mostrando para o mundo um sujeito com uma arma atirando na ex-Primeira-Ministra.



Isso me lembra um excelente comercial da Telecom Italia, com Mahatma Ghandi:



O vídeo da Benazir Bhutto nem de longe é pacífico e inspirador quanto o de Ghandi, mas é mais significativo. O da Telecom Italia é apenas uma esperança, já o do assassinato é prova viva de que tecnologia é importante SIM e funciona para corrigir injustiças e desmascarar tiranos.

emArtigo

Como abrir arquivos com extensão UIF

Por em 31 de dezembro de 2007

Navegando por vários fóruns sobre BitTorrent, notei uma pergunta freqüente sobre a manipulação de arquivos cuja extensão é UIF: nome_qualquer.uif. Resposta: MagicDisc (gratuito/freeware) ou MagicISO Maker (comercial, 30 dólares).

O MagicDisc é um leitor dos arquivos, como o famoso Daemon Tools, ou seja, é um Drive Virtual, capaz de ler arquivos ISO, UIF, NRG, BIN e outros. E vai além disso, pois é capaz de criar imagens a partir de discos ou converter arquivos.

O MagicISO Maker é um programa semelhante ao Nero, para criar, extrair e editar CDs e DVDs escolhendo arquivos específicos, montando o backup. É possível também realizar conversões de formatos, compressão e tudo o que o MagicDisc faz. Há uma versão trial para download.

O Universal Image Format (UIF) é um formato comercial de CD/DVD, capaz de comprimir a imagem ISO, acrescentar checksums MD5, criptografar as informações, proteger os dados por senha e uma série de outros recursos. Segundo o website do fabricante, ele é ideal para transmissão via internet por conter vários bits de correção e comprimir o CD/DVD. Ele está disponível, atualmente, apenas para Windows.

Se você usa um programa como o DaemonTools, recomendo o uso do UIF To ISO um pequeno conversor que não necessita de instalação e converte rapidamente arquivos UIF para ISO.

Fonte: File Extensions

emSoftware

Engenheiro cria carro com LEGOs que estaciona sozinho

Por em 31 de dezembro de 2007

A linha LEGO Mindstorms é o sonho de consumo de muitos geeks. São, além dos blocos, sensores, servomotores, CPUs, tudo programável, modular e fácil de integrar.

Tanto que um engenheiro e obviamente fã de LEGOs criou um carrinho com uma característica encontrada somente em veículos topo de linha, em sua maioria protótipos: A capacidade de estacionar sozinho.

O veículo usa sensores ultrasônicos e faz o trabalho da forma mais difícil, pois não usa direção nas quatro rodas, apenas nas dianteiras, como a esmagadora maioria dos veículos convencionais.

Vejam o vídeo neste link.

Fonte: Techeblog

emHardware

Mario Galaxy no DS

Por em 31 de dezembro de 2007

Um vídeo anda ciculando a internet mostrando um suposto trailer de uma conversão do jogo Super Mario Galaxy para o Nintendo DS. Embora seja bem produzido, não passa de uma montagem e quem conhece o portátil sabe que (com todo o respeito) ele não seria capaz de produzir gráficos com esta qualidade.

De qualquer forma, vale pela curiosidade e para deixar os donos de um DS com água na boca.

emNintendo Rumores Vídeos

Opinião: A mídia de tecnologia e suas fontes

Por em 31 de dezembro de 2007

Nenhuma outra mídia especializada aceita fontes menos qualificadas que a de tecnologia. Blogs e portais agem com uma inconsequência que seria mortal em qualquer outra área. Temos uma Escola de Base por semana e ninguém reclama.

Nós aceitamos dicas e informações na base do “ouvi dizer”. Vejam por exemplo esta matéria do Brighthand falando sobre um computador portátil meio PDA que a Apple estaria planejando. Atribuem a um “relatório não-confirmado” e “fontes anônimas”. Descrevem o aparelho como tendo tela de 5.2 polegadas, 800×480 pixels e touchscreen.

O texto é cheio de termos como “supostamente”, “não confirmado”, etc.

É literamente não-notícia. Qualquer um pode a qualquer momento citar “fontes anônimas” e revelar com exclusividade o provável futuro lançamento de um produto que só existe na mente do redator.

Se um site busca um mínimo de credibilidade, precisa se segurar e pensar duas vezes antes de sair divulgando rumores, boatos e especulações. EU não publico mais imagens de gadgets-conceito. Se o dispositivo existe, ao menos como protótipo, eu divulgo. Se é só uma renderização 3D, que fique a cargo de seu criador. Fantasiar eu fantasio sozinho, mas com a Luciana Vendramini, que é bem melhor que qualquer GooglePhone.

Se uma notícia tem uma base concreta, uma boa fonte (mesmo que de segunda-mão) merece ser divulgada. Se é “ouvi dizer”, melhor não publicar. Já há ruído demais no mundo.

emMiscelâneas