terça-feira, 26 de novembro de 2013

Bit wars - Episódio II

32 BITS



Passamos a vez agora às máquinas 32 bits mais famosas, Sega Saturn e a Sony Playstation.
Nota: estou a omitir alguns aparelhos nesta "crónica", principalmente as consolas portáteis e consolas de menor sucesso comercial, porque não considero particularmente relevantes.
Estas duas consolas saíram ambas no mercado em 1994, e foram rivais no processamento em 32 bits e claro, no novo suporte de informação digital, o CD-ROM.
Em características técnicas a Playstation possui uma abordagem relativamente simples.
O processador é baseado no microprocessador MIPS-R3000A 32-bit com velocidade 33.87Mhz. Foi implementado no processador capacidades vectoriais e geometria, muito úteis para processamento 3D. De resto, não há muito a assinalar. No entanto, a simplicidade do hardware e facilidade de programação permitiu ser uma das consolas de maior sucesso da história, e possuir uma das maiores "bibliotecas" de jogos. Por acaso consegui obter a SDK (Software Development Kit) da Playstation (apenas o software, não a máquina de desenvolvimento) e incluiu uma IDE bastante boa, o CodeWarrior da Freescale Semiconductor, todas as livrarias da consola em formato C, exemplos de código e documentação completa.
Quanto à máquina da Sega, infelizmente, porque pessoalmente até gosto bastante da Sega Saturn, o caso complica e de que maneira...
Existem na Sega Saturn oito chips principais, um para periféricos e sistema Hitachi 4-bit, um para processamento de som Yamaha FH1 DSP, um controlador de som Motorola 68EC000 , um controlador para o sistema CD-ROM Hitachi SH-1, dois para gráficos o VDP1 e o VDP2. E finalmente para processador, não um mas dois Hitachi SuperH-2 7604 a 28.63Mhz.
Eis a questão, tem tudo para ser superior não tem? Não, não tem, o hardware embora complexo é aparentemente funcional, mas a complicação tem um grau mais elevado nos CPU's. Na verdade, estes dois CPU's não funcionavam como um dual-core de hoje em dia. Tinham 4KB de cache individual, mas a nível de memória partilhavam o mesmo barramento. No que resultava? Sempre que um CPU acedia à memória o outro não podia aceder, por exemplo. E claro, nem quero pensar na hora do debugging numa máquina destas, devia ser horrível. Resumindo, tornou-se bastante difícil usar os dois processadores de forma eficiente. Hoje em dia o processamento paralelo é amplamente desenvolvido e aplicado, mas à quase 20 anos atrás, não. E a Saturn resultou em ser um inferno para os programadores. Primeiramente pela falta de recursos a nível de software de desenvolvimento facultados pela Sega, e depois pela implementação de código, havendo frequentemente a necessidade de recorrer ao Assembler para aumentar a performance consideravelmente.

64 BITS



Volvidos dois anos da era 32 bits a Nintendo lançou a a famosa Nintendo 64, o que para muitos foi a primeira consola a 64 bits. Mas, em 93 a Atari tinha lançado a Jaguar, a primeiríssima consola de 64 bits. Prometendo capaz de estraçalhar tudo o que aparecesse na frente, esta máquina ostentava os poderosos 64-bits por todo o lado. Mas a verdade é que não era.
O hardware era esquisito e confuso, a Atari dividiu o processamento em quatro áreas, Object Processor, Graphics Processor, Blitter, e DSP (Digital Signal Processor). O que levanta a questão, terá quatro processadores? Não, apenas dois: o Tom e o Jerry :)   (são os nomes oficiais a sério). E tem outro, um Motorola 68000 16/32 bits para controlo de sistema, input/output, coisas assim.
O "Tom" é um processador 32 bits, responsável pelos gráficos, o object processor e de blitter. E o "Jerry", processador 32 bits DSP de som, um processador bastante semelhante ao "Tom" mas com capacidades para o processamento de sinal. E onde estão os 64 bits? Supostamente eles existem na parte do processamento, o "Tom" tem uma ALU (Aritmetic Logic Unit) para processamento gráfico de 64 bits. O resto do processador funciona impecavelmente a 32 bits, mas aqueles 64 bits na ALU era o que precisavam para anunciar a Jaguar como uma consola de 64 bits.
Porque falhou? Razões óbvias, olhem para a consola! Parece um telefone + fax com 64 bits, credo!
Na verdade, com os seus falsos 64 bits, a consola não era assim tão poderosa, aliás, rivalizava com as da época, a geração 16 bits. O hardware era complicado programar, era pouco uniforme dado a natureza "multi-funções" das unidades de processamento, programadores utilizavam o chip de controlo para correr a parte lógica dos jogos por exemplo. No geral, foi um salto maior que o comprimento das patas, e o Jaguar estatelou-se no chão.
Quanto à Nintendo 64, surgiu para rivalizar de certa forma com a Playstation e a Sega Saturn, embora mais vocacionada para um público alvo diferente.
Esta foi mesmo uma consola 64 bits, enquanto as rivais usavam os novos CD's, a Nintendo continuou a usar os cartuchos, embora de capacidade mais limitada, os tempos de carregamento de informação eram bastante mais rápidos.
Veio equipada com um processador NEC VR4300 64-bits a 93,75 Mhz, muito rápido, rivalizava mesmo com o Intel Pentium nos computadores pessoais da altura. E com um GPU Sillicon Graphics RCP, baseado no MIPS 4300i, a 62,5 Mhz.
Para a altura, foi uma consola bastante rápida, e inovadora, os gráficos eram bastante bons, suportando por exemplo trilinear-filtering, mas que com os parcos 4096 bytes máximos de tamanho de textura, resultava no visual esborratado e desfocado que é característico na N64.
Os 64 bits, não eram necessários, mas, por uma questão de marketing e imagem de inovação blá, blá, blá...
Sim, não eram necessários, os jogos muito raramente usaram as capacidades 64 bits do processador, quanto ao espaço de endereçamento um 16 bits chegava, dado que a N64 tinha apenas 4MB de memória.
E além disso, código em 32 bits era mais leve e mais rápido.
Também teve os seus desafios quanto à programação, mas, conseguiu um lugar de honra na história dos video-jogos.

segunda-feira, 25 de novembro de 2013

Bit wars - Episódio I

Quem cresceu e acompanhou todo o "boom" do mundo das consolas em pleno anos 90 e inicio deste século, lembrar-se-á com certeza da famosa medida universal "do quanto aquela consola é bué fixe" - bits.
Em miúdo, assim como os outros miúdos não percebíamos para que raio eram os bits, julgávamos nós que imperava a razão: mais bits, melhores gráficos, melhor som, melhores jogos. Ponto final.
Bem, não estará assim tão longe da verdade assim, mas, há muito a dizer disto e até que ponto isto será verdade.
Acompanhei a evolução desde a Sega Master System e a sua rival a Nintendo Entertainment System ou NES, os dois colossos na altura em plena era 8 bits até porventura a altura em que o termo "bit" foi descartado e arrisco a precisar que terá sido na chamada geração 128 bits (Dreamcast e Playstation 2... X-Box??). E observo agora com algum cepticismo à mistura, a novíssima geração Xbox One e Playstation 4, e farei algumas considerações acerca destas duas últimas. Porque não?

8 BITS 

Aí estão elas, quem não as conhece? Ambas estas consolas da era 8 bits, são de fácil definição, ambas são equipadas com um microprocessador de 8 bits. E os bits referentes à capacidade de uma consola são isso mesmo, os bits do processador ou CPU que a equipa, pelo menos a nível de marketing, que foi o principal responsável por todo esta luta de bits. Tecnicamente há quem caracterize em bits um CPU pela tamanho dos registos com que efectua cálculo com inteiros (integer). Embora possa efectuar outras operações com um tamanho diferente de dados (leitura e escrita na memória por exemplo).
Os processadores presentes nestas consolas são na NES um Ricoh 6502 e na máquina da Sega um Zilog Z80. Poderá haver ligeiras alterações no seu desempenho já que ambos os microprocessadores são datados da segunda metade da década de 70.

16 BITS


A era 16 bits, uma das eras fantásticas dos vídeo jogos sem dúvida. Os dois titãs continuaram a ser as velhas rivais Sega e Nintendo. A Sega Mega Drive, e a Super Nintendo.
Aviso desde já a quem ler isto, que atacarei com alguma ferocidade a máquina da Sega, derivado à SNES ter sido a minha primeira consola, e por tácticas de marketing que a Sega na altura utilizou que mais recentemente foram usadas pela Pepsi contra o capitão da selecção de futebol portuguesa.
Nesta geração ambas as consolas usam CPU's de 16 bits, a SNES com um Ricoh 5A22 "alterado", e a Mega Drive com um Motorola 68000. A Mega Drive usa também o Zilog Z80 para controlo do processamento de som e retro-compatibilidade. 
Duas máquinas bastante poderosas para a altura, o que emergiu uma nova luta desta vez com os megahertz (farei mais tarde uma entrada no blog acerca desse mito também), a Sega alegando que os 8 Mhz do Motorola 68000 "cilindravam" os parcos 4 Mhz do CPU da SNES. Recorrendo a uma tecnologia chamada blast-processing os jogos da Mega Drive eram mais rápidos e com mais acção que a SNES. Uma grande treta. O blast-processing era um mito de marketing, pura e simplesmente.
Na verdade, embora com um CPU "mais lento", a SNES tinha uma capacidade gráfica bastante superior para a altura, e um processamento de som "made by Sony" que acho pessoalmente vergonhosa a descrepância de qualidade em comparação com a máquina da Sega.
Mas há mais, por falar em vergonha, a Sega lançou um add-on o 32X, ena, 32 bits na Mega Drive que espectáculo! Mais bits, melhores gráficos, melhor som... não, nem por isso.
Equipado com 2 microprocessadores Hitachi SH-2 de 32 bits a 23 Mhz, tinha tudo para vencer a guerra. Se não tivesse que ser acoplado em cima da consola, a funcionar com hardware de 16 bits em simultâneo. E depois mais o Sega CD, outro tiro no pé. Soa bem ter num hardware completamente funcional a 16 bits, uma unidade de processamento a 32 bits? Sendo o hardware a 16 bits o responsável por todo o sistema? 
Não, não faz, mas para a Sega fez e pagou por isso assim como reza a história.
A Nintendo teve uma ideia mais discreta e incluiu ao longo do tempo os chamados FX chips. Eram chips que vinham colocados dentro da placa do cartucho do jogo e conferiam geralmente algum processamento extra consoante o jogo. Houve chips desde compressão de sprites, chips com algumas instruções extra para manusear sprites (escala, rotação, etc) até chips que conferiam processamento de polígonos 3D.
Embora tenha sido extensa esta última parte, o ponto a focar é que o CPU com lá está, os tais bits, começa-se a notar uma melhoria dos componentes de processamento de som e imagem, assim descentralizando um pouco a influência do CPU para a prestação geral da máquina.






domingo, 17 de novembro de 2013

DOOM pós-morto...

Acho que quase todas as pessoas que estão familiarizadas com vídeo-jogos conhecem Doom. Um dos jogos que foi mais que um jogo, simbolizou o expoente da experiência virtual de violência visceral. Foi mais que um simples jogo, foi um ícone da cultura moderna. Frag, FPS, 3D, foram termos que surgiram com Doom, e se existiam, tornaram uma forma completamente nova.
Doom surgiu no Texas, engraçado não é? Um ambiente virtual onde o jogador encarna um space-marine e devolve monstros infernais ao inferno uma bala de cada vez. Em 1993 foi algo absolutamente de outro mundo, na realidade o jogo passa-se em Marte, e claro levantou com ele além de fama imensa polémica.
O jogo foi produzido em 1993 pela ID (Ideas from the Deep), posteriormente simplesmente id (o termo aplicado em psicanálise), pelos dois John's (John Carmack e John Romero). Embora sendo estes dois lendas dos video-jogos actuais, não o produziram sozinhos, sendo o John Carmack responsável pelo motor gráfico 3D e restante programação e John Romero pelo design geral do jogo. Integraram na equipa também Adrian Carmack (não é familiar de John C.) contribuindo com a arte do jogo assim como Kevin Cloud, e design de jogo com o já conhecido Tom Hall, entre outros.
Deixo aqui um vídeo aos interessados do "post-mortem" de Doom apresentado na primeira pessoa por Tom Hall e John Romero.
Recomendo também o livro de David Kushner -  "Masters of Doom - How Two Guys Created an Empire and Transformed Pop Culture". Onde é relatada toda a génese e desenvolvimento da famosa id software.



Este blog porquê?

Confesso que o nome Piece of Mind, surgiu em qualquer coisa como no espaço de tempo de um segundo. Assim que atrevessou na minha mente, pareceu-me tão verdadeiro e cru que teve de ser. Um sítio onde deposito fragmentos de mim mesmo, e onde encontro a paz comigo mesmo.
A quem ocasionalmente aqui vier parar irá encontrar isso mesmo, fragmentos de um ser humano, tal como ele. Fragmentos que nada dizem e ao mesmo tempo dizem tudo. Apenas um ser humano tão complexo como a sua simplicidade...