Del'Arco

The Pixel Company

Archive for the ‘games’ Category

Criando Cheats: Prelúdio

without comments

Estudo programação à anos e sempre tive maior interesse no que se refere à arte expressa em pixels. Que sou grande fã de jogos eletrônicos (um mid-core gamer, não casual, nem hardcore) não há dúvidas… e essa paixão estende-se além do ato de jogar e apreciar momentos únicos, que apenas orientais extraterresters (leia Miyamoto) conseguem proporcionar.

Senta que lá vem história

Como todo bom gamer, não me contento em socar o último chefe e sair falando na escola (hoje em dia é twiter, né?) “ZEREI/TERMINEI/FECHEI MAIS UM JOGO”. Pq? A mágica está nos detalhes! Os detalhes que muitas vezes não percebemos quando jogamos pela primeira vez. Aquele canto que não serviu pra NADA durante o jogo, mas que estava lá para ser explorado.

smw_special_zone

Qual apaixonado por games que terminou Super Mario World e não fez questão de conseguir os 100%? Ou quis passar todas as fases do “ESPECIAL” que não tinham relação alguma com o final do jogo?

Quem já jogou The Legend Of Zelda: Ocarina Of Time e não quis pegar as 100 gold skultullas mesmo sabendo que os rupees ilimitados (que vc tem direito ao final da quest) não valem o esforço?

Mesmo sentindo ausência da mágica nos jogos atuais, ainda não consigo “aposentar” um jogo logo após terminá-lo.

Atualmente faço questão de TER o video-game para poder jogá-lo (adquiri um Super Nintendo recentemente e já estou cotando um Megadrive), mas é impossível comprar todos os cartuchos, até pq alguns nem são comercializados hj em dia (Atari, Nintendinho etc). Então, como todo gamer que possui um computador e sabe da existência dos emuladores (ZSNES!), baixei muitos jogos e terminei cada um deles.

Antes de continuar, queria deixar claro que não sou a favor da pirataria, apesar não ser completamente contra (tudo é relativo…).

Quem conhece um, sabe que a maior virtude do programador é a curiosidade. É claro que não fiquei apenas no “Load Rom/Save State/Load State” do ZSNES. Com o tempo fui descobrindo cada funcionalidade e o que me chamou a atenção foram os códigos que podiam ser inseridos para modificar a jogabilidade ou algum estado do jogo. Testei centenas de códigos em dezenas de jogos e chegou uma hora que não tinha como não me perguntar: como um código esquisito daquele (na época eu não sabia o que era base hexadecimal) podia fazer tanto “estrago” no jogo? E eu sabia que não podia ser nada projetado/previsto pelos programadores do jogo, pois não eram códigos digitados no controle (como uma sequencia de botões), ou inseridos no menu “cheat”.

Nesa fase, fiquei apenas na curiosidade mesmo, pois o material online sobre o asusnto era escasso e meu acesso à internet, mto raro. Tempos depois, qdo comprei o jogo Diablo (o 1 mesmo) e descobri que era possível jogar com outras pessoas na internet, passei várias madrugadas (contava os minutos antes das 00:00h para poder conectar) jogando com os, como diria o bomba, “amiguinhos virtuais“. Até que um gringo filho de uma borboleta entrou na minha “sala“, zerou todos meus stats e removeu todos os meus itens. Não que eu não tenha chutado o cachorro por isso, mas ao passar o susto (raiva, ódio e outros sentimentos sem nome), fui procurar saber sobre códigos/trapaças para Diablo (o termo cheater era novidade pra mim). Qual não foi minha surpresa ao descobrir que o tal programinha BoBaFeTT’s Diablo Trainer podia editar, não só os stats e itens, como podia acrescentar itens que nem mesmo existiam no jogo. Aquela curiosidade sobre como funcionavam os códigos no emulador ZSENS voltou repentinamente, somada ao incrivel fato de poder adicionar elementos que o jogo não possuia originalmente. Devo ter ficado uns 2 dias sem dormir para poder testar todas as opções e armas.

[OFF] Btw, até hj não sei se desligaram os servidores de Diablo I ou se me baniram da Battle.net mesmo u.u [/OFF]

cheating1

Como nesse tempo eu já havia começado a programar, eu sabia que os stats, pontos de vida e mana estavam armazenados em variáveis e que o cheater, de alguma forma, alterava essas variáveis. Mas também não passou disso, pois muitos conceitos importantes ainda não me eram claros. Como um processo consegue “modificar” a memória de outro?

Então comecei a estudar o comportamento de outros cheaters, como o editor de saves de pokemon para gameboy, ou um executável modificado do jogo freecell que permitia mover qualquer carta para qualquer lugar. Cada um deles funcionando de uma forma diferente.

Aí, veio um amigão da escola e me convenceu de que eu só ia conseguir fazer esse tipo de coisa quando eu programasse fluentemente em Assembly e pudesse fazer qlq coisa em C. O que NÃO é verdade!!!

Depois disso, só voltei a me interessar pelo assunto uns 5 anos depois.
Em 2004 ou 2005 (não lembro) criei copiei e compilei um cheater em Visual Basic 6 para um MMORPG-modinha da época. Como eu apenas modifiquei alguns fontes que peguei na internet, não entendia completamente o que estava acontecendo. Ao ler artigos sobre o assunto e estudar o fonte, entendi que o código simplesmente modificava alguns dados que estavam armazenados na memória utilizada pelo jogo… há! é assim que aquele maldito bobafeet funcionava então!

Passou um tempo, o cheater já estava famoso aqui na minha cidade e muitas lan-houses passaram a usá-lo. Esses “bons jogadores” sempre pediam para adicionar algum feature, tipo que o cheater possa jogar sozinho enquanto ele vê um video educativo no www.***tube.com. Mas tudo bem, moleques de 12 anos não precisam saber a diferença entre cheater e bot ;)
O final infeliz dessa história eu deixo pra outro post.

Com as atualizações constantes do jogo, eu tb precisava atualizar os endereços de memória modificados pelo cheater, então as coisas começaram a fazer mais sentido. Utilizava o ArtMoney pra escanear a memória do jogo e atualizava a lista de endereços, coisa simples. Nesse processo de escanear e procurar novos endereços, comecei a perceber que vários outros locais armazenavam informações úteis para futuras funções do cheater. E com toda a curiosidade que um programador deve ter, fucei em cada canto do jogo para descobrir mais sobre o funcionamento do mesmo.

E meu cheater?

Pra que serviu toda essa lengalenga? Pra deixar claro que não adianta copiar e compilar os códigos postados aqui. Talvez vc consiga fazer um cheater lecalzinho pra algum jogo, mas só isso. Pra aprender, vc PRECISA ter a curiosidade. A curiosidade matou o gato, mas ensinou ele a utilizar mto bem as outras 6 vidas.

Então, no próximo post vou tentar passar o pouco que sei sobre o tipo de cheater que eu considero mais fácil: os que editam a memória.

Written by Leandro Del'Arco

junho 7th, 2010 at 2:35 pm

Como não parecer um idiota no Team Fortress 2

without comments

tf2_banner1

Recentemente adquiri, pelo Steam, o pacote Orange Box que inclui: Half-Life 2, HL2: Episode One, HL2: Episode Two, Portal e Team Fortress 2. Até então, meu interesse no pacote era a série HL2, pois sempre fui fã do Freeman. Portal eu já até tinha jogado (a versão 2D, em flash) e posso afirmar que, apesar de curto, é um ótimo jogo e um dos meus preferidos. E TF2? Até então só tinha ouvido falar em algum forum ou blog.

Ao terminar de baixar o pacote (muito dolorosamente com a minha conexão de 256 KB), nem sequer cheguei a testar TF2. Passado um mês, já havia terminado os outros 4 jogos e, na falta do que jogar, resolvi testar o TF2… e não é que ATÉ era legalzinho? Às vezes, quando não tinha mais nada para fazer, abria o jogo, pegava um pyro e saia atropelando (vai dizer que pyro não é a classe mais usada pelos newbies?). O resultado? Agora não consigo ficar mais de 24 horas sem jogar.

Pra quem joga, meu nickname está sempre como “keatoon” e é mais fácil me achar nos servers que tenham fast/instant respawn habilitados ;)

Enfim, pesquisando sobre o jogo, achei algumas dicas muito interessantes para quem está começando:

  • Antes de mais nada, TF2 é um jogo que DEVE ser jogado em equipe. Você pode até ser um antisocial e tentar jogar sozinho, mas a diversão e chance de vitória estão no team-play;
  • Por padrão, a tecla G está associada ao “taunt”. Mude para outra tecla, pois o G fica bem próximo às outras teclas que você usa (principalmente se vc for um spy e tentar usar a tecla B para voltar ao último disfarce);
  • Seja chato / irritante: mesmo se estiver jogando com pessoas que vc não conheça, encha o saco do seu time para que alguém mude para Medic, se não houver nenhum. Geralmente eu mesmo mudo de classe quando necessário, pois um payload com 5 snipers, 5 spies e nenhum médico é um jogo perdido. Como descrito acima, TF2 é um team-oriented game e se seu time não percebe que não há cooperação, encha o SACO MESMO! Se vc está no último control point e metade do seu time ainda é sniper, mude de servidor;
  • Vire-se, sempre! O único modo de levar um backstab é ficando de costas para o spy;
  • Mesmo se o seu objetivo no jogo é ser o top-fragger, capturar pontos e destruir buildings são mais importantes, em termos de cooperatividade, do que matar players do outro time;
  • Se estiver jogando com a classe Soldier, use a sua arma secundária quando o inimigo ainda estiver vivo após os 4 tiros do rocket launcher. Se vc for muito ruim de mira ou ainda não souber prever a movimentação dos outros players, atire no chão, pois o dano pela explosão não pode ser evitado.
  • Ainda como Soldier, evite atirar quatro vezes seguidas sem pausa, pois isso torna o seu ataque muito previsível e fácil de se esquivar. Então, ao invés de atirar assim: 1-2-3-4, faça combinações do tipo: 1-2—3–4. Se o inimigo tentar pular para se esquivar, ele vira um alvo fácil.
  • Tenha um time balanceado. Não há necessidade de ter 6 ou 7 players da mesma classe em um time. Cada classe tem suas fraquezas e cada uma completa a outra. Um engenheiro sem um pyro para fazer spycheck de tempos em tempos vira um alvo fácil para spies, por exemplo;
  • A sala de respawn (resuply) não serve apenas para isso. Vc também pode completar sua vida, munição e metal (no caso dos engenheiros). Na maioria das vezes é melhor gastar alguns segundos voltando à sala do que morrer e esperar o respawn;
  • Em alguns mapas, durante o setup (os 50 segundos antes do pelego) vc pode levar dano caso fique muito próximo aos portões e… é bem humilhante chato morrer antes mesmo do round começar ;)
  • Jogue pelo menos um round completo com cada classe. Além de render um achievement, vc aprende sobre as forças e fraquezas de cada uma, sabendo exatamente como combater cada uma delas;
  • Conheça os mapas. Com o tempo vc aprenderá sobre as diversas rotas de cada mapa, melhores lugares para colocar sentry gun’s, stickies etc;
  • Jogadores do seu time são “imateriais”. Se alguém bloquear a sua passagem, tenha certeza de que é um spy;
  • Scout’s contam como duas pessoas ao capturar pontos. Já vi um time inteiro de scout’s ganhar uma partida no mapa Steel em apenas alguns segundos;

Written by Leandro Del'Arco

outubro 26th, 2009 at 9:38 pm

Posted in dicas, games

Tagged with , ,

PlayStation 2 – Hello World!

without comments

ps2

Quem nunca teve vontade de ver um software próprio (nem que seja um “Hello World”) rodando num console de verdade ou mesmo num emulador?

Em 2007 me interessei pelo assunto, particularmente em relação ao PS2 e comecei a pesquisar. Em um ou dois dias, já tinha um “Hello World” rodando pelo pendrive e… bom, desisti de fazer algo realmente útil. Não pela dificuldade ou preguiça de ler sobre o hardware-alvo, mas pelo simples fato de que eu não tinha nenhuma proposta inovadora. Se vc levar em conta a enorme quantidade de homebrews disponíveis, vai chegar à mesma conclusão, ou então vai pensar: há! vou fazer um jogo ultra-mega-blaster-fodástico! E duas horas depois vai desistir, pq as ferramentas FREE disponíveis não são tão user friendly quanto vc gostaria (ou comparadas às oficiais, que podem custar seu rim esquerdo).

Esse é o meu ponto de vista, mas se vc acha que vale à pena programar para um console de quase 10 anos, pode começar fuçando nas minhas principais referências para esse post:

Recomendo a última referência, pois você encontrará muito material útil (uma ótima introdução à arquitetura do console, exemplos e até um port de doom para PS2).

Beleza então, meu cadê o Hello World?

Para começar a brincar com o seu PS2, primeiro será necessário baixar o PS2SDK no site http://ps2dev.ofcode.com/. Lá vc encontrará duas opções:

  • PS2sdk Win32 Full Installation: contém o compilador (GCC) e as bibliotecas que fornecem as funções básicas para acessar a maioria dos  dispositivos e funções do console;
  • PS2sdk Win32 Full + ofcode libs: possui tudo que o item anterior dispõe, com a adição de algumas bibliotecas extras E alguns utensílios que serão úteis na hora de testar seu homebrew (pcsx2, que é um emulador de PS2 para PC e o cdgen, que é utilizado para gerar ISO’s que rodem no seu console).

Levando em conta a diferença entre o tamanho dos instaladores, é claro que você vai baixar o segundo item, clicando aqui.

Instalando o PS2sdk

Okay, você baixou o arquivo, ele possui 44.0 MB e não está corrompido, correto? Creio que qualquer pessoa com uma experiência mínima em computadores (que saiba ligar, por exemplo) consiga instalar. Por via das dúvidas:

  • Execute o instalador e escolha a língua. Eu prefiro inglês ;) ps2sdk_install1
  • Clique em “Next” e selecione a opção “Full”, então, “Next”ps2sdk_install2
  • Selecione o local de instalação e clique em “Install” e, ao finalizar a instalação, em “Finish”ps2sdk_install3
  • Agora, abra o arquivo ps2setup.bat (que está no diretório de instalação do PS2sdk) com o bloco de notas e adicione um “cmd” ao final, ficando assimps2sdk_install4

Compilando os exemplos do PS2SDK

Executando o ps2setup.bat com um duplo clique fará um prompt de comando surgir. Através desse prompt podemos compilar alguns exemplos que são instalados com o SDK. Entre no sub-diretório ps2sdk\samples (creio que vc sabe alguns comandos básicos do DOS) e escolha seu exemplo. Para começar, o exemplo mais simples: hello! Então, entre no sub-diretório hello (diretório_de_instalação_\ps2sdk\samples\hello) e digite “make” (sem aspas).

ps2sdk_make

Se tudo ocorrer bem, um arquivo hello.elf (um hello.o também) deve ser criado dentro do diretório hello. O .elf é o seu executável!

Uhull! Já tenho meu Hello World no hello.elf!!! Tá… mas o que eu faço com isso?

Testando seu homebrew

Existem várias maneiras de rodar seu .elf. Meu PS2 foi desbloqueado com um DMS4 Pro, que não faz p**** nenhuma, mas com o ToxicOS instalado, permite “navegar” em todos dispositivos de armazenamento (DVD, CD, pendrive, memory card etc) e executar qualquer software que você tenha gravado:

Screen inicial do ToxicOS:

toxicOS_01

Opções:

toxicOS_02

Acessando o dispositivo mass (storage):

toxicOS_03

Então, se vc possui um modchip que permita tal operação, grave o hello.elf no seu pendrive e execute no seu PS2. No meu caso, comecei testando o exemplo math3d.elf, eis o resultado:

toxicOS_04

Se vc não faz idéia do que é um modchip e só sabe que seu playstation é destravado, vc pode gravar o homebrew em um CD ou DVD (eu gravei num CDRW e deu certo) para testar. É claro que não vai funcionar se vc gravar o arquivo .elf diretamente na mídia e é para isso que serve o cdgenPS2.exe que está no diretório tools na pasta de instalação do PS2sdk.

Criando uma imagem com o cdgenPS2

Abra o cdgenPS2.exe e arraste o seu .elf para a lista que contém os campos NAME, LBA, SIZE ETC.

cdgenPS2

Agora clique no botão IMG (o do ícone de CD), dê um nome para o sua imagem e grave num CD.

Okay, vc chegou até aqui mas não possui um PlayStation2 para testar seu homebrew. Então, vc tem a opção de utilizar um emulador.

O emulador PCSX2

Além do cdgenPS2, a pasta tools possui o pcsx2-0.8.1, que é um emulador de PS2 para PC (o melhor, se eu não me engano). O único problema é que ele não vem com uma bios padrão, mas isso é fácil de achar no google ;) ou vc pode ler meu post sobre RAR’s escondidos em JPG’s e baixar ESSA imagem (11 MB) ;x

Ao executar o emulador pela primeira vez, tenha certeza que vc selecionou a bios ocidental mais recente (USA v02.00+). No menu File, selecione a opção “Open ELF File” e escolha o seu .elf. Não sei bem o pq, mas o emulador pede para que vc selecione outro arquivo. Selecione a imagem gerada no cdgenPS2 e o seu Hello World será executado.

Exemplos e homebrews que eu rodei no meu PS2:

graph.elf

toxicOS_05

snes station

toxicOS_06 toxicOS_07

doom

toxicOS_08 toxicOS_09 toxicOS_10

blade (carrega e mostra um modelo .md2)

toxicOS_11 toxicOS_12

PS2 Asteroids

toxicOS_13 toxicOS_14 toxicOS_15

Written by Leandro Del'Arco

outubro 25th, 2009 at 10:34 pm

The Cake is a Lie

without comments

Para deixar bem claro algo que me atormenta desde a década passada.

Dear Mario:

Please come to the
castle. I’ve baked
a cake for you.

Yours truly–
Princess Toadstool, Peach

But…

the_cake_is_a_lie

Nuff’said!


Written by Leandro Del'Arco

outubro 6th, 2009 at 12:35 am

Posted in games

Tagged with , ,