Comandos para depuração de trapaça
Nota
Pesquisa é quando se deseja levantar mais informações sobre algo desconhecido. Busca é quando se deseja levantar informações sobre algo que já se sabe.
O depurador inclui uma funcionalidade simples de busca por trapaça que funciona salvando o conteúdo da memória e depois filtrando os locais de acordo com a maneira que os valores se alteram.
Demonstraremos o uso da funcionalidade da busca por uma trapaça de
vida infinita para o sistema Raiden (raiden):
Inicie o jogo com o depurador ativo (
mame raiden -window -debug). Na janela do depurador pressione F5 para que o jogo rode e clique na janela do jogo. Insira um crédito com 5 e inicie a partida pressionando a tecla 1, entre no depurador clicando na tecla " ou ' (fica do lado esquerdo da tecla 1 ou consulte o mapa do teclado).Clique na janela do depurador, tenha certeza que a CPU principal
:maincpuesteja visível no topo da janela do depurador, inicie uma pesquisa por valores 8-bit sem assinatura usando o comando cheatinit command, digite o comando na parte debaixo da janela do depurador seguido da tecla Enter:>cheatinit ub 36928 cheat locations initialized for NEC V30 ':maincpu' program space
Pressione F5 para que o jogo continue, clique na janela do jogo e perca 1 vida, pressione novamente a tecla " para interromper o jogo, clique na janela do depurador.
Use o comando cheatnext command para filtrar as localizações onde o valor tenha sido reduzido por 1:
>cheatnext -,1 19 cheats found
Pressione F5 para que o jogo continue novamente, clique na janela do jogo e perca mais 1 vida, novamente pressione a tecla ", clique na tela do depurador e repita o comando anterior:
>cheatnext -,1 Address=00B85 Start=03 Current=01 1 cheats found
Use o comando cheatlist para salvar o endereço encontrado num arquivo na pasta principal do MAME:
>cheatlist raiden-j1-vidas.xml
O arquivo terá um fragmento em formato XML com o endereço e todos os valores encontrados para a trapaça:
<cheat desc="Possibility 1: 00B85 (01)"> <script state="run"> <action>:main*CPU*.pb@0x00B85=0x03</action> </script> </cheat>
cheatinit
cheatinit [[<sinalização>[<largura>[<ordem>]]],[<endereço>,<comprimento>[,<espaço>]]]
Inicia a busca pela trapaça nas áreas da RAM que possam ser escritas na
região do endereços indicado. Pode ser abreviado para ci.
O primeiro argumento determina o formato do dado que será buscado. A
<sinalização> (sign) pode ser u para sem assinatura (unsigned)
ou s para assinado, <largura> (width) pode ser b para 8-bit
(byte), w para 16-bit (word), d para 32-bit (double
word) ou q para 64-bit (quadruple word); <ordem> (swap)
pode ser s para um byte com a ordem invertida. Quando o primeiro
argumento for omitido ou estiver vazio, será usado o formato do dado da
busca anterior ou um formato com 8-bit sem assinatura caso este seja
o formato usado na primeira busca.
O <endereço> (address) determina o endereço para o inicio da pesquisa e o <comprimento> (length) determina a quantidade da memória que será utilizada para esta pesquisa.
Caso seja definido, será pesquisada a RAM gravável no intervalo do <endereço> até o <endereço>+<comprimento>-1; caso contrário, toda a RAM gravável será pesquisada na faixa do endereço.
Consulte Determinando os dispositivos e as faixas de endereço para mais detalhes em como determinar a faixa de endereços. Caso a região do endereço não seja definido, ele retorna para a primeira faixa de endereços que for exposto pela primeira CPU que estiver visível.
Exemplos:
cheatinit ub,0x1000,0x100x1000-0x100f na região do programa visível da CPU.cheatinit sw,0x2000,0x1000,10x2000-0x2fff na região do programa visível pela 2ª CPU do sistema (num índice com base zero).cheatinit uds,0x0000,0x10000x0000-0x0fff na região visível do programa na CPU.Retorna para Comandos para depuração de trapaça.
cheatrange
cheatrange <endereço>,<comprimento>
Acrescente as áreas da RAM que podem ser escritas na busca por trapaças.
Pode ser abreviado para cr. Antes de utilizar este comando, o
comando cheatinit deve ser utilizado
para inicializar a busca pela trapaça, para definir o espaço do
endereçamento e o formato dos dados.
O <endereço> determina o endereço a partir de onde a busca deve começar, o <comprimento> determina a quantidade de memória que se deseja pesquisar. A RAM gravável na faixa <endereço> até <endereço>+<comprimento>-1, será adicionada às áreas que serão pesquisadas.
Exemplos:
cheatrange 0x1000,0x100x1000-0x100f nas regiões para a busca das trapaças.Retorna para Comandos para depuração de trapaça.
cheatnext
cheatnext <condição>[,<valor_para_comparação>]
Faz o filtro dos candidatos comparando com os valores das buscas
anteriores. Caso restem cinco ou menos candidatos, eles serão mostrados
no console de depuração. Este comando pode ser abreviado para cn.
Argumentos possíveis para <condição>:
allequal (eq)notequal (ne)decrease (de, -)increase (in, +)decreaseorequal (deeq)increaseorequal (ineq)smallerof (lt, <)greaterof (gt, >)changedby (ch, ~)Exemplos:
cheatnext increasecheatnext decrease,11 desde a pesquisa anterior.Retorna para Comandos para depuração de trapaça.
cheatnextf
cheatnextf <condição>[,<valor_para_comparação>]
Faz o filtro dos candidatos comparando com os valores iniciais das
buscas. Caso restem cinco ou menos candidatos, eles serão mostrados
no console de depuração. Pode ser abreviado para cnf.
Argumentos possíveis para <condição>:
allequal (eq)notequal (ne)decrease (de, -)increase (in, +)decreaseorequal (deeq)increaseorequal (ineq)smallerof (lt, <)greaterof (gt, >)changedby (ch, ~)Exemplos:
cheatnextf increasecheatnextf decrease,11 desde a pesquisa inicial.Retorna para Comandos para depuração de trapaça.
cheatlist
cheatlist [<nome_do_arquivo>]
Sem o <nome_do_arquivo>, mostre as trapaças encontradas no momento no
console do depurador; com o <nome_do_arquivo>, salve as trapaças
encontradas num formato XML para o arquivo determinado. Pode ser
abreviado para cl.
Exemplos:
cheatlistcheatlist cheat.xmlcheat.xml em formato XML.Retorna para Comandos para depuração de trapaça.
cheatundo
cheatundo
Desfaz o filtro da trapaça pelo mais recente comando
cheatnext ou
cheatnextf. Observe que os valores
anteriores não retrocedem. Pode ser abreviado com cu.
Exemplos:
cheatundoRetorna para Comandos para depuração de trapaça.