뭐, CWCheat 관련 질문도 있고, 그냥 생각난 김에 CWCheat 플러그인에 대해 씁니다.
[출처가기]
오랜만에 쓰는 긴 글이네요. 그 동안 블로그에 너무 소홀해서, 사과의 의미 겸 개인적으로 회심의 역작입니다. ㅋ
CWCheat 플러그인은 커펌용 플러그인의 일종으로 각종 UMD 게임, PS1 게임, 홈브류 등의 데이터를 수정하여 게임을 좀 더 편하고 재미있게 즐길 수 있도록 해주는 치트 프로그램입니다. 과도한 치트는 게임의 재미를 반감시킨다고 하지만, 적당하게 잘만 사용하면 쓸데없는 노가다를 줄여주므로 참 유용하죠. 게다가 CWCheat는 단순 치트 기능외에도 여러가지 다른 부가기능도 가지고 있습니다.
저는 CWCheat 플러그인을 거의 사용하지 않아서 자세히 모르므로, 사용법에 대해 쓴다해도 거의 기본적인 것만 다룰 수 밖에 없네요. 게다가 잘못된 점도 분명히 있을테니 이 점은 감안해서 읽어주세요.
아래 내용은 지난 6월 9일 발표된 최신버전 CWCheat v0.2.2 Rev.C와 구형 PSP, 커펌 4.01 M33-2를 기준으로 합니다. (CWCheat의 변경점은 보고 있으면 토나오기 때문에 모두 생략합니다. ㅡㅡ;)
CWCheat 플러그인 설치법 열기
우선 위의 첨부파일을 받아 압축을 풉니다.
그리고 그 안의 'INSTALL'폴더 - 'seplugins'폴더로 들어가면 'cwcheat' 폴더가 나오는데 이 'cwcheat' 폴더를 ms0:/seplugins/ 폴더로 복사합니다. (커펌 3.71 사용자는 반드시 커펌 3.71 M33-3 이상으로 업데이트해야 작동하며 'INSTALL_371' 폴더를 대신 사용해서 설치합니다.)
그리고 UMD 게임이나 홈브류 중 CWCheat를 사용하려면 ms0:/seplugins/GAME.txt 파일을 메모장으로 열고 아래의 문장을 추가로 입력하고 저장합니다.
ms0:/seplugins/cwcheat/cwcheat.prx
또 PS1 게임 중 CWCheat를 사용하려면 ms0:/seplugins/POPS.txt 파일을 메모장으로 열고 아래의 문장을 추가로 입력하고 저장합니다.
ms0:/seplugins/cwcheat/cwcheatpops.prx
마지막으로 1.50 커널용 홈브류에서 CWCheat를 사용하려면 ms0:/seplugins/GAEM150.txt 파일을 메모장으로 열고 아래의 문장을 추가로 입력하고 저장합니다. (당연히 1.50 커널 애드온이 설치된 구형 PSP만 가능.)
ms0:/seplugins/cwcheat/cwcheat.prx
(커펌 3.71 사용자는 'ms0:/seplugins/cwcheat/cwcheat150.prx' 라는 문장을 대신 입력)
이제 PSP의 리커버리 모드 - Plugin 메뉴로 들어가 해당 플러그인을 활성화합니다.
cwcheat.prx [GAME] (Enabled)나 cwcheatpops.prx [POPS] (Enabled) 등으로 변경해 주면 되겠죠.
그 후 리커버리 모드를 빠져나오면 일단 CWCheat 플러그인의 설치는 완료됩니다.
이제 본격적으로 게임이나 홈브류 도중 CWCheat 플러그인을 이용해 치트를 적용하는 방법에 대해 알아보겠습니다.
그 전에 우선 메뉴를 불러오는 방법과 옵션 설정법 등에 대해 알아보죠.
CWCheat 플러그인 옵션/단축키 설정 열기
CWCheat 플러그인을 사용하려는 게임이나 홈브류를 실행합니다.
그리고
셀렉트버튼을 3초간 누르고 있으면 위와 같은 CWCheat 메뉴가 나타납니다. (로딩중에는 메뉴를 불러오지 마세요.)
만약 위 메뉴가 나오지 않으면 설치가 잘못된 것이니 다시 한 번 확인해보세요.
이 화면에서는 현재 메모리스틱 사용량이나 CPU 속도, 배터리 정보, 현재 CWCheat 버전 등을 한 눈에 알아볼 수 있습니다.
그러면 우선 메뉴가 게임 화면과 겹쳐서 알아보기 힘드므로 옵션을 조금 건드려보겠습니다.
CWCheat 메뉴에서 방향키와 엑스버튼을 이용해
Settings 메뉴로 들어가면 위의 화면이 나옵니다. (기본
확인버튼은 엑스, 취소버튼은 동그라미입니다.)
몇 가지 메뉴가 나오는데 각 항목이 무엇을 설정하는지 알아보면...
* Clear menu Background : 치트메뉴의 배경을 검정색으로 교체해서 더 깔끔한 화면을 볼 수 있음. [Y]로 설정하기를 추천.
* Swap Buttons : 동그라미, 엑스 버튼의 기능을 교체. 기본은 엑스버튼이 선택이지만 [Y]로 설정할 경우 선택이 동그라미, 취소가 엑스가 됨. [Y] 추천.
* Screenshoot compatibility mode : [Y]일 경우 스크린샷을 찍는 도중 게임이 잠시 멈추고, [N]일 경우 스크린샷을 찍는 도중에도 게임이 진행됨. [Y] 추천.
* Brightness changer : 스크린버튼을 이용해 화면 밝기를 4단계까지 사용할지 여부 설정. 취향대로...
* Frame counter : 화면 우측 상단에 현재 초당프레임수 표시 여부. [N] 추천.
* Show current cpu load : 화면 우측 상단에 현재 CPU 사용율 표시 여부. [N] 추천
* [?] controller check delay : SELECT버튼을 몇초 동안 누르면 CWCheat 메뉴를 불러올 것인지 설정. 종종 셀렉트버튼을 사용하는 게임의 경우 시간을 늘려주면 좋음. 기본은 3초.
* Change buttons : 게임/홈브류 상에서 사용할 CWCheat의 단축키를 설정. 아래에서 따로 설명.
* Save settings as default : 변경된 설정사항을 저장해 다음에도 같은 설정을 사용함.
위 내용을 참고로 해서 자신의 취향대로 변경한 뒤에 마지막 '
Save settings as default' 메뉴를 선택해서 저장해야 다음에도 같은 설정을 사용할 수 있으니 주의하세요.
그리고 '
Change buttons' 메뉴에서 CWCheat의 단축키를 설정하는 방법은 다음과 같습니다.
변경하거나 새로 지정하려는 메뉴로 이동 후 선택버튼을 누르면 단축키를 지정하는 화면이 나옵니다. 이 화면에서 사용하려는 단축키를 2초간 누르면 새로 단축키가 지정됩니다. 홈버튼을 제외한 모든 버튼과 스위치가 사용가능한데, 이 때 단축키 입력을 취소하려면 홈버튼을 누르면 되고, 아무버튼도 누르지 않으면 단축키가 해제됩니다. (무선랜 스위치는 꺼두세요.)
각 단축키의 역할은 다음과 같습니다.
* Menu button : CWCheat 메뉴를 불러오는 단축키.
* Cheat enable / disable : 치트의 활성화 / 비활성화 전환 단축키.
* Cheat on-time menu : 치트를 한 번만 활성화하고 다시 비활성화하는 단축키.
* Dump button : 메모리로 덤프하는 단축키 - 자세히 모름...
* Cheat selection menu : 데이터베이스에 저장된 현재 게임의 치트 목록 불러오기.
* REMAPSP enable / disable : 모름... 알고 싶지도 않음...
* Screenshot : 스크린샷을 찍는 단축키. 스크린샷은 ms0:/PSP/PHOTO/capture/ 폴더에 저장됨. 음표(노트)버튼을 주로 지정해서 사용함.
위 내용을 참고해서 새로 단축키를 변경하되, 역시 '
Save settings as default'를 통해 저장하는 것을 잊지마세요.
[참고사항] 많은 분들이 게임 중 네모버튼을 누르면 화면에 'Dumping' 메세지가 뜨면서 메모리스틱에 이상한 파일이 생성된다고 질문을 많이 하시는데, 네모버튼이 CWCheat의 덤프 단축키로 기본 지정되어 있기 때문입니다. 위의 방법을 참고해서 Dump button의 단축키을 해제하면 이 문제는 해결됩니다.
(원래는 이 내용만 쓰려고 했는데 하다보니 일이 커졌어요.)
CWCheat의 옵션과 단축키를 자신에 맞게 변경했다면 실제로 치트 사용법에 대해 알아보겠습니다.
치트하는 방법은 크게 2가지로 나누어집니다. 데이터베이스(*.db)에 미리 저장되어 있는 치트코드를 사용하는 방법과 직접 해당 주소를 찾아 수동으로 변경하는 방법이죠.
데이터베이스(*.db)를 이용한 치트 방법 열기
[ DB를 이용한 치트 방법 ]
치트를 적용하려는 UMD 게임이나 PS1 게임을 실행하고 셀렉트버튼을 이용해 CWCheat 메뉴를 불러온 뒤, 제일 위의 '
Select Cheats' 메뉴로 들어갑니다.
그러면위와 같이 현재 UMD 게임 또는 PS1의 게임아이디에 따라 cheat.db 또는 cheatpops.db에 미리 저장되어 있는 치트 목록이 나오게 됩니다.
여기서 적용하고 싶은 치트를 선택버튼을 이용해 [Y]로 변경합니다. 세모버튼을 누르면 모든 치트가 [Y]가 되고, 네모버튼을 누르면 해당 치트의 값을 직접 변경할 수 있습니다. (이렇게 변경한 뒤 셀렉트버튼을 눌러야 변경된 값이 해당 DB에 저장됩니다.)
마지막으로 다시 CWCheat의 메인메뉴로 나가 '
Enable cheats' 항목을 [Y]로 변경하면, 드디어 선택한 치트가 게임에 적용됩니다.
게임상으로 들어가 확인해보면 선택한 치트대로 적용되어 있는 것을 확인할 수 있습니다.
[ 데이터베이스(*.db)에 대하여 ]
DB 파일을 메모장이나 워드패드 등으로 열어보면 아래와 같은 구조로 이루어져 있음을 알 수 있습니다. (아래는 cheat.db의 경우이며, cheatpops.db도 동일합니다.)
_S ULJM-05011 -> UMD 게임의 게임아이디
_G Puzzle Bobble Pocket [JP] -> 게임 타이틀
_C0 999999999 Points -> 치트 제목
_L 0x20566E30 0x3B9AC9FF -> 실제 변경되는 주소값과 변경된 수치 (=치트코드)
_C0 Always Enable Pointer
_L 0x00566E24 0x00000001
_C0 Warp Level (endless mode)
_L 0x00569610 0x000000FF
.
.
.
_S UCUS-98623 -> 여기부터 다른 게임의 치트코드
_G Kingdom Of Paradise [US]
_C0 Money
_L 0x21533F04 0x00015F90
_C0 Iron Pieces
.
.
.
(참고 : _C0은 치트 목록에서의 기본을 [N]으로 설정하는 것이고 _C1은 기본을 [Y]로 설정할 때 사용함.)
이 DB를 이용한 치트법은 사용법이 간단하며, 개인이 알아내기 힘든 유용한 치트(몬헌의 몬스터 에너지 표시 등)를 적용할 수 있다는 장점이 있지만, 문제는 치트가 데이터베이스에 저장되어 있어야만 사용할 수 있다는 점입니다. 즉, 치트코드가 나오지 않은 최신 게임 등에서는 이 방법을 사용할 수가 없어서 직접 DB에 추가하거나 최신 DB를 주기적으로 업데이트해주어야 합니다.
가끔 인터넷상에 무슨무슨 게임의 치트코드라고 해서 올라오는데, 이 치트코드를 DB에 추가하려면 그냥 그 내용을 복사해서 cheat.db에 추가만 해주면 됩니다. 또한 필요한 게임의 치트코드만 남겨두고 다른 게임의 치트코드를 삭제해도 되죠.
만약 DB 파일 수정이 복잡하거나 어렵게 느껴진다면 CWCheat Database Editor라는 DB 편집 전용 프로그램도 있으니 참고하세요. (
http://popotz.textcube.com/259)
또 새롭게 나오는 DB 파일은
http://cwcheat.consoleworld.org/export.php에서 받을 수 있습니다. 새로 받은 cheat.db 파일을 메모리스틱에 있는 원래 파일과 교체만 해주면 됩니다. 생각외로 갱신 속도가 빠르니 주기적으로 변경해주는 것도 좋습니다.
수동으로 값을 찾아 치트하는 방법 열기
위의 DB를 이용한 방법 외에 DB에 저장되어 있지 않은 값을 직접 찾아 수정하는 방법도 있습니다.
DB에 치트코드가 없는 게임이나 DB 자체가 없는 홈브류에서의 값을 수정할 때 사용하는 방법이죠.
하지만 이 방법은 정확하지 않을 수도 있고 게임에 따라 변경할 수 있는 것도 한계가 있으므로 돈이나 아이템 등의 갯수를 수정하는 등 비교적 단순한 작업에만 사용하는 것이 좋습니다.
여기서는 DJ MAX의 MAX(일종의 돈)을 변경하는 방법을 예로 설명하겠습니다.
현재 MAX는 199가 있네요. 이 값을 잘 기억합시다.
이제 이 값의 주소를 찾아야 하므로 CWCheat 메뉴를 불러와 아래쪽에 있는 '
Cheat searcher' 메뉴를 선택합니다.
여러 메뉴가 나오는데, 우리가 하려는 건 게임상의 고정값을 새로 찾는 것이기 때문에 '
Start a new search for a fixed value'를 선택합니다.
그러면 위와 같이 검색값을 입력하는 화면이 나옵니다.
이 때 8bit로 설정되어 있으면 255 이상의 값은 검색이 안 되므로 큰 값을 찾으려면 네모버튼을 눌러 16bit 또는 32bit로 변경합니다.
그리고 DEC 항목에 우리가 찾으려는 값인 '199'를 입력하고 선택버튼을 눌러줍니다.
(이 때 검색값을 '0'이나 '1'로만 입력하면 검색 시간이 엄청나게 걸리고 검색 결과가 많아 찾기 힘드므로 되도록이면 큰 값을 검색에 사용하세요.)
잠시의 시간이 지난 뒤 검색된 값이 나타납니다. 여기서는 총 3개의 주소가 발견되었군요.
이 3개 중에 어느 값이 우리가 찾는 주소인지 모르므로, 일단 CWCheat 메뉴는 닫고 게임으로 다시 돌아갑니다.
그리고 게임상에서 찾으려는 값에 변화를 줍니다. 저는 한 곡을 더 플레이해서 MAX를 294로 늘려주었습니다.
이제 다시 CWCheat 메뉴 - Cheat searcher 메뉴로 들어가 이번에는 '
Continue a search for a fixed value' 항목으로 들어갑니다. 처음 찾은 3개의 주소 중에서 해당하는 값의 재검색을 하는 것이죠.
이번엔 '199'가 아닌 변경된 '294'를 입력하고 선택버튼을 누릅니다.
드디어 단 1개만 발견되었다고 나오는군요. 이번에는 운이 좋아 2번의 검색만에 하나로 줄었지만, 2번 이상 계속해서 검색해야 하나로 줄어드는 경우도 있습니다. '게임내의 값 변경 -> 재검색 -> 게임내의 값 변경 -> 재검색'의 반복을 통해
발견된 값이 1이 될때까지 계속 재검색을 해주어야 합니다.
이제 찾은 값을 수정해주기 위해 일단 CWCheat의 메인 메뉴로 나갔다가 다시 '
Continue a search for a fixed value' 메뉴로 들어갑니다.
그러면 이전과는 다르게
세모버튼을 이용해 찾은 코드를 수정할 수 있게 됩니다.
우리가 찾는 'MAX'값이 저장된 주소가 0x0011F7D4였군요. 세모버튼을 눌러봅니다.
그러면 화살표가 아래 코드값으로 이동합니다. 이 값을 수정하기 위해 확인버튼을 누릅니다.
위처럼 수정할 수 있는 화면이 나왔습니다. 변경하고자하는 값은 '294'이므로
L/R트리거를 이용해 커서를 DEC VALUE 항목으로 이동시킵니다.
이제 DEC VALUE 값을 우리가 원하는 값으로 수정합니다. 여기서는 간단하게 50000으로 입력했습니다.
즉, 0x0011F7D4 주소의 값을 기존 '294'에서 '50000'으로 수정하는 것입니다.
이렇게 값을 수정한 뒤 CWCheat 메뉴를 빠져나와 게임으로 돌아가면 되는데, 주의할 점은 '
Enable cheats' 항목을 [Y]로 설정해야 수정한 값이 적용된다는 점입니다. (DB를 이용한 치트방법과 동일.)
게임상에서 MAX를 확인해보니 50000으로 잘 나오는군요. ^^/
상황에 따라서는 의미없는 노가다보다 그냥 치트 쓰는게 좋을 때도 있답니다.
또한 이렇게 한 번 수정한 값은 '
Select Cheats' 메뉴에 새롭게 'NEW CHEAT X'라는 이름으로 등록됩니다.
위 화면에서 셀렉트버튼을 누르면 DB 자체에 새로운 치트가 저장되어 다음에도 사용할 수 있습니다.
한 가지 더 주의할 점은 이 상태 그대로 계속 게임을 한다면 MAX를 추가로 얻어도 50000에서 값이 변경되지 않고 고정된다는 점입니다. 그러니 치트를 적용한 뒤 더 이상 변경할 필요가 없을 때 'Enable cheats' 항목을 [N]으로 설정하거나 'Select Cheats' 메뉴에 추가된 'NEW CHEAT X'항목을 [N]으로 설정해야 합니다.
[ 주의사항 ] 이처럼 수동으로 치트를 적용할 때, 잘못하면 게임 진행 자체가 불가능하거나 충돌이 일어나는 경우도 있으므로, 사용하기 전에 반드시 세이브 백업을 하는 것이 좋습니다. 그리고 되도록 위의 예시처럼 단순한 값만을 변경하는데 사용하세요.
마지막으로 다룰 내용은 아얄쉘이나 USB ISO Loader 등 각종 홈브류 내에서 게임을 구동했을 때 치트를 사용하는 방법입니다. 이 때 CWCheat는 게임 모드가 아닌 홈브류 모드로 구동되므로 일반적인 DB를 불러올 수가 없어 다른 방법을 써야 합니다.
홈브류내에서 게임 구동시 치트 방법 열기
우선 맨 위의 설치법대로 CWCheat v0.2.2 Rev.C를 설치합니다.
그 후 홈브류 내에서 UMD / ISO /CSO 구동시 치트를 사용하기 위해서는, 첨부파일의 'ALL' 폴더로 들어가 '
cwcheat-LOADER.prx' 또는 '
cwcheatlite-LOADER.prx' 파일의 이름을 '
cwcheat.prx'로 변경한 뒤 ms0:/seplugins/cwcheat/ 폴더의 기존 파일에 덮어씁니다.
(커펌 3.71 사용자는 'ALL' 폴더가 아닌 '371' 폴더내의 파일을 사용해야합니다.)
또한 아얄쉘내에서 PS1을 구동했을 때, 치트를 사용하기 위해서는 '
cwcheatpops-LOADER.prx' 또는 '
cwcheatpopslite-LOADER.prx'파일의 파일의 이름을 '
cwcheatpops.prx'로 변경한 뒤 덮어쓰면 됩니다.
이 cwcheat-LOADER.prx와 cwcheatpops-LOADER.prx가 홈브류내에서 게임의 DB를 불러오는 전환기능을 가지고 있는 파일들이죠.
----------------------------------------------
그러면 설치가 끝났으므로, 실제로 사용하는 방법을 살펴보겠습니다.
아얄쉘이야 요즘 최신 커펌에서는 구동되지 않으니 USB ISO Loader를 통한 ISO(DJ MAX 포터블 2) 구동의 경우만 살펴보겠습니다. (하지만 아얄쉘에서도 방법은 똑같습니다.)
USB ISO Loader의 USBhost를 통해 하드디스크의 게임을 실행한 뒤에 셀렉트버튼을 눌러 CWCheat 메뉴를 불러옵니다.
화면 상단을 살펴보면 XMB에서 바로 게임을 실행했을 때와는 다르게, GAME명은 나오지도 않고 ID가 HBXXXX 형식으로 나오죠. CWCheat가 현재 상태를 홈브류로 인식했기 때문입니다.
이제 이 메뉴 화면에서
L트리거 + 셀렉트버튼을 눌러봅시다.
그러면 짜잔~하면서 위 화면처럼 USB ISO Loader를 통해 실행된 게임명과 게임 아이디가 정상적으로 나오는 것을 볼 수 있습니다. 이 상태에서 미리 설명한대로 DB를 이용한 치트를 사용해도 되고 직접 값을 찾아 치트를 사용해도 됩니다.
간단하죠?
# 글을 시작할 때도 말했듯이 CWCheat의 기타 기능들 (PS1 게임의 세이브 이동/변경, CWCheat내에서의 USB 연결, remaPSP 기능)은 저도 잘 모르고, 그다지 사용할 일도 거의 없기에 생략합니다.
# 이 글이 즐거운 게임 생활에 조금이라도 도움이 되길 바랍니다.
* 관련글 보기 *
2008/02/09 - [커펌용 플러그인] - CWCheat v0.2.1 Rev. A
2007/12/24 - [커펌용 플러그인] - CWCheat v0.2.0
2007/09/26 - [커펌용 플러그인] - 3.71 M33용 CWCheat Lite Beta 2
2007/09/10 - [커펌용 플러그인] - CWCheat v0.1.9 Rev. D
2007/08/14 - [커펌용 플러그인] - CWCheat v0.1.9 Rev. B
2007/08/06 - [커펌용 플러그인] - CWCheat v0.1.9 Rev A
2007/07/01 - [커펌용 플러그인] - CWCheat v0.1.8 발표
2007/06/22 - [커펌용 플러그인] - CWCheat v0.1.7 Rev.D
2007/05/15 - [커펌용 플러그인] - CWCheat 0.1.7 Rev C
2007/05/02 - [기타 PC용 프로그램] - CWCheat Database Editor v1.82
2007/04/18 - [커펌용 플러그인] - CWCheat 0.1.7 Rev B
2007/02/15 - [커펌용 플러그인] - CWCheat 0.1.6 Rev. I / Database Editor v1.70
2007/02/10 - [커펌용 플러그인] - CWCheat 0.1.6 Rev.H for 3.10 OE
2007/02/10 - [기타 PC용 프로그램] - CWcheat Database Editor v1.60
2007/02/10 - [PSX 에뮬레이터] - PSX게임 치트코드 데이터베이스
2007/02/10 - [커펌용 플러그인] - 3.03 OE CWCHEAT 0.1.6 REV.G