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
:maincpu
esteja 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,0x10
0x1000
-0x100f
na região do programa visível da CPU.cheatinit sw,0x2000,0x1000,1
0x2000
-0x2fff
na região do programa visível pela 2ª CPU do sistema (num índice com base zero).cheatinit uds,0x0000,0x1000
0x0000
-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,0x10
0x1000
-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>:
all
equal
(eq
)notequal
(ne
)decrease
(de
, -
)increase
(in
, +
)decreaseorequal
(deeq
)increaseorequal
(ineq
)smallerof
(lt
, <
)greaterof
(gt
, >
)changedby
(ch
, ~
)Exemplos:
cheatnext increase
cheatnext decrease,1
1
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>:
all
equal
(eq
)notequal
(ne
)decrease
(de
, -
)increase
(in
, +
)decreaseorequal
(deeq
)increaseorequal
(ineq
)smallerof
(lt
, <
)greaterof
(gt
, >
)changedby
(ch
, ~
)Exemplos:
cheatnextf increase
cheatnextf decrease,1
1
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:
cheatlist
cheatlist cheat.xml
cheat.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:
cheatundo
Retorna para Comandos para depuração de trapaça.