GBA 게임 자체 수정
GBA ROM 해킹 방법
작성자: zhaosili(.zZ~~) 재인쇄할 때 표시해 주세요
이 기사에서는 귀하가 이미 80x86 어셈블리를 이해하고 있다고 가정합니다(비록 명령어 세트는 다름) TRW2000(사용되지는 않지만)을 사용하여 프로그램을 디버깅합니다.
도구:
VisualBoyAdvance-1.5, HexWorkshop(또는 기타 16진수 편집기), No$Gba
디버거
ROM: GBA- 302 - Dave Mirra Freestyle BMX 2 (E)
이 기사를 작성할 때 저자는 프로그램 지침을 수정하여 GBA ROM을 해킹하는 방법을 방금 배웠습니다. (공부하는 데 오전 내내 시간이 걸렸습니다.) THUMB 및 ARM 명령어 세트(나처럼)를 이해하지 못한다면 No$Gba HELP 첫 번째 섹션의 CPU 참조를 읽어보세요. 소개. 내가 해킹한 ROM은
THUMB를 사용합니다. Hack의 목표는 무제한의 시간을 갖는 것입니다(그러나 게임에서 이것이 변경되면 게임을 끝낼 수 없는 것과 같습니다).
먼저 VisualBoyAdvance-1.5의 Search for Cheats... 기능을 사용하여 해당 시간의 주소인
0200DBF0을 찾습니다. (참고: Emuchheat 등을 사용하여 검색하지 마십시오. 그렇지 않으면 특정 오프셋 주소를 추가해야 합니다. 이는 매우 번거로운 일입니다.)
ROM을 로드하려면 No$gba를 사용하십시오. 디버그 -> 중단/조건 정의를 선택합니다. 중단점이 설정되도록 텍스트 상자
[0200DBF0]!를 채우세요. (중단점 설정 방법에 대한 자세한 내용은 No$gba의 HELP를 참조하세요.)
이런 방식으로 0200DBF0의 값이 변경되면 중단됩니다. F9를 여러 번 누르면 정상적으로 게임에 들어가 플레이할 수 있습니다. 시간 변경이 발생하면 0800A292에서 중단됩니다. 위에 sub
r0,1h 및 str r0,[r1] 명령이 있음을 확인하세요. 예상 시간은 sub r0,1h에서 단축됩니다(이유는 무엇입니까?
trw2000을 사용한다면 경험이 그것이다고 말해주십시오). 따라서 0800a28e 행을 두 번 클릭하고 sub에 중단을 설정하십시오.
F9를 누르면 1~2초 후에 게임이 중단됩니다. 이때 r0=77h를 등록합니다(십진수로 119, 즉 119초로 게임에서는 1:59로 표시됩니다). F7을 눌러 다음 명령어 str r0,[r1](r1=0200dbf0은
시간의 주소임)로 이동합니다. 이 명령어의 기능은 r1의 해당 주소에 저장된 값을 동일하게 만드는 것입니다. r0의 값으로 설정합니다(
사용). 자세한 내용은 No$Gba HELP의 CPU 참조 섹션을 참조하세요. 시간을 무한대로 만들려면 sub
r0,1h만 변경하면 r0의 값은 변하지 않고 0200dbf0의 값도 변하지 않는다는 것을 알 수 있습니다. 저는
sub r0,1h를 sub r0,0h로 변경하기로 결정했습니다(sub를 마우스 오른쪽 버튼으로 클릭하고 계측 변경을 선택한 다음 sub
r0,0h를 입력합니다). 중단점을 삭제하고 F9를 눌러 게임에 들어가면 시간이 줄어들지 않나요?
다음 단계는 ROM을 변경하는 것입니다. 먼저 수정하기 전의 기계어 코드를 적어두세요. 이는 0800xxxx 옆의 값입니다.
(6808 3801 6008 6810이어야 합니다). 그런 다음 변경된 기계어 코드(6808 3800
6008 6810)를 적어 두세요. 높은 비트와 낮은 비트를 교환한 후에는 0868 0138 0860 1068 및 0868
0038 0860 1068이어야 합니다. HexWorkshop으로 롬을 열고 0868 0138 0860 1068을 검색하세요.
찾아서 0868 0038 0860 1068로 바꿨습니다. 구하다. VisualBoyAdvance-1.5를 사용하여 플레이를 로드하고 시간이 무제한인지 확인하세요.
노크해.
궁금한 점이 있으시면 언제든지 ***, my QQ: 32743622와 상의해 주세요