My Stuff

quinta-feira, 14 de agosto de 2008

FreeMC Boot 1.5.1 - não oficial

Prometi um post sobre o FreeMCBoot, acabei escrevendo um tutorial:

http://rapidshare.com/files/137399500/tutorial-jogar-backup-ps2-travado-by-probert-cpturbo-v.1.1.rar

O bônus é uma versão personalizada em português do FMCB 1.5. ;-)

segunda-feira, 4 de agosto de 2008

Desventuras em Disgaea - PAL2NTSC

Essa foi a primeira vez que tentei fazer uma alteraçao em ISO de playstation 2.
Já tinha feito uma graça no psx (ps1), mas minha estréia no ps2 tinha que ser algo bem simples.

Instalei o FreeMCBoot no ps2 de um amigo meu travado (fico devendo um post sobre isso).
O problema é que ele não reconhece DVDs do sistema PAL automaticamente. Ao tentarmos jogar Tomb Rider, por exemplo, fomos salvos pela opção de escolha de sistema NSTC.

Em disgaea (o 1º jogo) foi diferente.
O jogo é PAL, e sem um seletor, ele fica com a imagem horrível. Listrada, em preto e branco com uma cor meio marrom.

Já tinha ouvido falar de uns programas que convertiam pal para ntsc (o nome? aháaa pal2ntsc yfix). O yfix no nome se deve ao fato de ter que "adivinhar" o valor de y para "fixar" a tela. Se não me engano, o sistema PAL tem mais linhas. Quando se converte para NTSC, a imagem fica aparecendo um pouco embaixo. O y serve para "fixar" a tela. Centralizar, digamos assim.

Foi aí que eu pensei. Se for pra adivinhar, prefiro fuçar eu mesmo na ISO para descobrir como fazer isso. De quebra eu iria descobrir como o pal2ntsc patcheava a ISO.

Procurei alguma coisa que me indicasse uma direção, mas não encontrei nada. Encontrei um programa que fazia algo parecido com o que eu queria. Forçava o jogo a usar o modo 480i. Usei essa informação pra começar meus testes.

No final, acabei conseguindo descobrir os valores, após perder alguns cds e começar a usar cd-rws. ;)

O próximo passo era transformar o ISO em CD para DVD.
O último jogo que tinha feito isso foi Breath of Fire - Dragon Quarter. Deu o maior trabalho, porque tive que patchear fisicamente a tabela de LBA do executável do jogo. Mas no fim, deu tudo certo (perdi uns bons 3 dias só nisso).
Em disgaea, funcionou de primeira. \o/
Só tive que acrescentar um arquivo dummy de 800MB para completar o DVD e criar o ISO/UDF pelo ImgBurn e voilá.

Usei as seguintes configurações:

interlace = 0
ntsc = 2
frame = 1

dy = 1 (tentei com 0 (zero) e parece que ficou melhor) ;)

Coloco à disposição, o arquivo que faz o patch... Pode ser rodada na ISO de CD e DVD.
O arquivo executável é o SLES_524.58.

http://rapidshare.com/files/134872434/disgaea-pal2ntsc.rar

Rom Hacking & Patching

O que é patching?

Patching é o ato de alterar algum arquivo, executável, ou de recursos, a fim de dar a ele uma funcionalidade diferente da original.

Quando você (você... eu não, que eu não pego programa pirata. Kkkkkk foi boa essa hein?) pega um programa e crackeia, você está patchando/patcheando um arquivo do programa para eliminar o limite de tempo de 30 dias.

O ato de rom hacking em si é um patching... é alterar o rom (jogo em formato binário) para dar a ele alguma funcionalidade não prevista ou simplesmente para deixar o jogo mais fácil ou mais difícil. É onde eu geralmente gasto um tempo livre. Hobby de geek tem que ser geek.

Existem basicamente dois tipos de patching. O patch físico, no qual você altera o arquivo em disco, e a partir daí ele executa já modificado. Provavelmente, esse tipo é mais comum. Exemplo: alterar o arquivo tcpip.sys do windows xp para aceitar mais de 10 conexões simultaneamente.

Um outro tipo de patching comum é o on-the-fly... ele altera o arquivo-destino em memória, enquanto o patch está rodando. Se ele não rodar, o arquivo-destino executa normalmente. Um exemplo bastante conhecido desse tipo é o msn plus (embora eu ache que ele altera o msn fisicamente tb, de alguma forma). O antigo tradutor (alguém ainda usa isso?) Lingoware traduzia alguns programas enquanto ele estava executando. Era uma droga, dava um bando de tilt nos programas, mas é também um bom exemplo de patch. Até mesmo para alertar porque essa operação é bastante suscetivel a erros.

Na maioria das vezes, o patching é motivado pela ausência de código-fonte do arquivo-destino. Caso tivéssemos o código fonte e pudéssemos compilar novamente, poderíamos fazer a alteração mais rapidamente ao invés de perder horas e horas debugando tudo para descobrir que aquela seção que você perdeu mais tempo, nada tem a ver com o que você quer alterar no arquivo. Mas quem disse que a vida tem que ser fácil? E se fosse, que graça teria? :)

sexta-feira, 1 de agosto de 2008

RomHacking: Side Pocket - 2 Players

Motivação do RomHacking:

JOGAR no modo 2 players mesmo que o emulador "não diga pro jogo"que o joystick 2 está conectado.

Data:

16.07.08

Detalhes:

* Se o registrador $4017 retornar $00 significa que o 2º joystick não está habilitado.
* Se retornar $01 é porque o 2º joystic está disponível.

Acontece que o emulador de XBOX (xSnes9x) não 'avisa' que o
segundo joystick esteja conectado. Até porque o emulador espera um controle de SNES.

O jogo testa esse valor em 3 lugares(pode até testar em mais, mas esses 3 locais
foram suficientes para o que eu queria fazer).

1º No menu onde você escolhe o modo de jogo, quando tecla 'pra baixo' (avança opção).
2º No mesmo menu do no 1, quando você tecla 'pra cima' (volta opção).
3º Após escolher um jogo de 2 jogadores (2ª e 3ª opções do menu).

A solução é forçar o valor (registrador A) a ser $01 onde for necessário,
utilizando a instrução OR.

1º local
81/f603 AD 17 40 LDA $4017 [$80:4017]
81/f606 29 01 AND #$01 => OR $01

2º local
$81/F63E AD 17 40 LDA $4017 [$80:4017]
$81/F641 29 01 AND #$01 => OR $01

3º local
$81/F68F AD 17 40 LDA $4017 [$80:4017]
$81/F692 29 01 AND #$01 => OR $01

Testes:

Testei no emulador Geiger Snex9x e o jogo aceitou eu escolher
a modalidade 2playters (antes do hack, não aceitava).

Funcionou com sucesso no emulador xSnes9x do XBOX.
Rodou também no emulador snes-station do ps2. Antes da alteração, era impossível
jogar de 2 com a rom original nesses emuladores.

Link para a rom modificada: http://rapidshare.com/files/134124525/Side_Pocket__probert_2players_Hack_.rar