2008년 7월 3일 목요일

PspStates 플러그인 - 강제세이브/로드

Dark_AleX가 게임의 강제 세이브/로드 기능을 하는 플러그인 PspStates Experiment을 발표했습니다. [출처가기]

하지만 신형 PSP에서만 사용할 수 있기에 언제나 그렇듯 리드미 번역으로 때웁니다. ㅡㅡ;
PspStates Experiment for PSP SLIM
---------------------------------

이 플러그인을 사용하기 전에 이 글을 주의 깊게 읽어라.

알림 : 이 소프트웨어가 일으킬 수 있는 모든 종류의 기계에 대한 손상 또는 데이터 손실(게임 데이터 손실까지 포함)의 책임은 제작자에게 없으며 각 사용자에게 있다.
나의 모든 소프트웨어가 무료인만큼 이건 당연한 것이지만, 이번에는 명확하게 밝혀두고 싶다.
이 플러그인을 사용하기 전에 가능한 데이터 손실을 피하기 위해 낸드이미지와 메모리스틱의 중요한 자료를 백업하기를 추천한다.

이 프로그램은 절대 커펌 M33의 한 부분으로 포함되지 않을 것이며, 항상 플러그인 형식으로 발표될 것이다.

이 소프트웨어는 아직까지 실험적인 것이며, 모든 경우에 있어서 오동작하거나 작동하지 않을 수 있다.

요구사항 :
-----------
- 커펌 4.01 M33이 설치된 신형 PSP (M33-1 / M33-2는 상관없음.)
- 좋은 메모리스틱을 추천함. 가짜 메모리스틱은 강제 세이브와 로드가 매우 느릴 수 있음.

설치법 :
-------------
1. 첨부파일의 'seplugins' 폴더안에 있는 'SAVESTATE' 폴더와 'pspstates.prx' 파일을 ms0:/seplugins/ 폴더로 복사.
2. ms0:/seplugins/game.txt 파일을 메모장으로 열어 ms0:/seplugins/pspstates.prx라는 문장 추가.
3. 커펌의 리커버리 모드로 들어가 'pspstates.prx [GAME]' 항목 활성화(Enabled).

이 플러그인은 현재 game 모드에서만 동작한다. pops나 vsh에서 사용하기 위해 헛고생하지 말도록 해라.

아주 중요한 사항 : 기술적인 이유가 있으므로 이 플러그인을 UMD가 삽입된 상태에서 사용하지 말아라. 물론 NO-UMD 모드를 'Normal'로 설정하고 UMD를 삽입해도 안되며, 심지어 isofs mode도 추천하지 않는다.
반드시 NO-UMD 모드가 march33(추천) 또는 np9660인 상태 또는 홈브류에서만 사용하도록 해라.
UMD 사용중 이 플러그인을 로드했다면 가능한 빨리 사용하지 말아라.

SaveState (현재 상태 저장, 강제 세이브) 과정 :
--------------------
- 현재 상태를 저장하기 위해서는 게임 중 홈버튼을 누르고, 홈버튼 화면이 나오면 R트리거와 다음 버튼중 하나를 눌러라 (방향키 위, 아래, 우, 좌, 네모, 세모, 엑스, 동르라미, 스타트). 이 각각의 버튼은 세이브를 위한 슬롯으로 취급되며, 9개의 상태(state)를 가질 수 있다.
현재 이 상태(state)는 글로벌하다. 즉, 게임별로 따로 사용되는 것이 아니라 모든 게임에서 공통적으로 사용된다는 뜻이다.
- 누르는 순간 PSP가 슬립모드로 전환될 것이며, 잠시 후 자동으로 복귀할 것이다.
- 퀵 슬립모드에서 돌아온 후에, 몇 초간 검은 화면을 보게 되는데 걱정하지 말아라. 프로그램이 현재 상태를 RAM에 복사하는 과정이며, 이 시간은 게임 종류와 CPU 스피드에 따라 달라지게 된다.

- 화면이 다시 돌아오면 메모리스틱 LED가 몇 번 반짝이는 것을 볼 수 있다. 이건 파일을 쓰는 것이다. 만약 좋은 메모리스틱을 사용하고 있다면 이 과정은 매우 짧게 걸린다.

- 현재 상태가 저장되면, 같은 게임 도중이나 다른 게임에서도 불러올 수 있다. (다른 게임의 현재 상태를 불러오려면 같은 메모리스틱이 똑같은 내용을 가진 메모리스틱이 필요하다.)
현재 상태는 다음 파일중 하나로 저장된다. :
ms0:/seplugins/SAVESTATE/globalstate_u.bin -> 방향키 위버튼
ms0:/seplugins/SAVESTATE/globalstate_d.bin -> 방향키 아래버튼
ms0:/seplugins/SAVESTATE/globalstate_l.bin -> 방향키 좌버튼
ms0:/seplugins/SAVESTATE/globalstate_r.bin -> 방향키 우버튼
ms0:/seplugins/SAVESTATE/globalstate_q.bin -> 네모버튼
ms0:/seplugins/SAVESTATE/globalstate_t.bin -> 세모버튼
ms0:/seplugins/SAVESTATE/globalstate_x.bin -> 엑스버튼
ms0:/seplugins/SAVESTATE/globalstate_c.bin -> 동그라미버튼
ms0:/seplugins/SAVESTATE/globalstate_s.bin -> 스타트버튼

파일 크기는 게임에 따라서 달라지는데 테스트 결과 대략 10-20 MB 정도로 예상된다.
플러그인 자체는 빈 용량을 확인하지 않기 때문에 스스로 빈 용량을 확보해야 한다.

LoadState (현재 상태 로드, 강제 로드) 과정 :
--------------------
- 현재 상태를 불러오기 위해서는 게임중 홈버튼을 누르고, 홈버튼 화면에서 L트리거와 위에서 말한 슬롯 버튼중의 하나를 같이 눌러라.

- 그와 동시에 메모리스틱 LED가 반짝이게 된다. 이 과정은 좋은 메모리스틱일수록 빠르다.

- 그 후, PSP는 자동으로 슬립모드로 전환되고, 잠시 후 자동으로 복귀할 것이다.
- 잠시 화면이 검게 변하는데, 현재 상태를 저장할때보다는 훨신 더 짧게 걸린다.
- 다시 화면이 돌아오고, 제대로 작동했다면 이전에 저장한 상태가 불러져있을 것이다.
코멘트
--------
- 현재 버전은 커펌 4.01 M33에 특화된 플러그인이다. 이 후의 펌웨어가 4.01과 아주 유사하지 않는 한 이 플러그인의 업데이트 없이는 이후에 나올 커펌 버전에서 동작하지 않을 것이다.

- 더 빠른 작동을 위해서 vshmenu나 리커버리 모드에서 게임의 CPU 스피드를 333으로 설정하기를 추천한다.

- 같은 메모리스틱이라면, 다른 ISO나 홈브류에서도 이전에 저장한 상태(state)를 불러올 수 있다. 상태(state)를 저장하고 난 뒤에는 ISO나 홈브류의 경로나 파일/폴더명을 변경하지 않도록 해라. 그렇지 않으면 상태(state) 로드가 제대로 동작하지 않을 것이다. 어쨌거나 같은 게임에서 저장한 상태(state)만을 로드하기를 더 추천한다.

- 상태(state) 로드는 모든 결과를 가진 '진정한 상태(state) 로드'이다.
  만약 X 플러그인은 활성화, Y 플러그인은 비활성화한 상태로 M33 모드에서 ISO 게임을 즐기고 있다고 가정하자. 그 후 X 플러그인을 비활성화하고 Y 플러그인을 활성화한 상태로 NP9660 모드에서 게임을 하다가 이전에 저장한 상태(state)를 불러오면 pspstates 플러그인 자체까지 복구하므로, 나중에 언급할 "plugin self-downgrading" 문제를 일으킬 수 있다.

- 이 플러그인은 신형 PSP의 늘어난 메모리를 사용하는 다른 홈브류나 플러그인과 호환되지 않는다. 그것들을 사용하는 도중에 플러그인이 활성화는 되지만 실제로 동작하지는 않는다.
상호 호환성
----------------
- 다른 소니 펌웨어 버전 사이에서의 상호 호환은 기술적으로 지원되지 않는다. 만약 커펌 4.01 M33을 예로 들자면, 네가 4.01 M33에서 저장한 상태(state)를 커펌 4.10 M33에서 불러오고자 한다면 불러오는 도중 충돌이 일어날 것이다. (이 플러그인이 커펌 4.10 M33용으로 업데이트 되더라도 불가능.)
- 다른 커펌 M33 버전(4.01 M33, 4.01 M33-2, 4.01 M33-3 등)에서의 상호호환은 아마 문제가 없을 것이다. vsh로 나갈때까지 시스템은 일시적으로 램 영역에서 다운그레이드될 것이다.
- 추후 나올 버전사이의 상호호환. 이 플러그인은 아직까지 실험용이므로, 추후 나올 버전에서는 상태(state)의 포맷이 변경될지도 모른다. 변경되지 않더라도 "plugin self downgrading" 문제는 여전히 존재한다. : 버전 1에서 현재 상태를 저장하고 버전 2에서 로드하면, 램 영역의 플러그인은 로드가 끝난 뒤 버전 1으로 될 것이다.
- 다른 PSP사이에서의 상호호환. 아마도 현재 상태를 다른 PSP끼리 공유하는 건 좋은 생각이 아닌 것 같다. 이 경우 하드웨어 문제와 데이터 손실이 발생할 수 있다. PSP1: TA-085, PSP2: TA-085 v2를 이용해서 PSP1에서 저장하고 PSP2에서 불러오는 테스트를 했는데, 불러오기는 되지만 아날로그스틱을 사용하는 게임은 제대로 조작할 수가 없었다. 기판 차이가 원인인지 다른 이유가 있는지 알려지지 않았다.
어쨌든 더 많은 테스트를 하고 싶다면 자기 책임으로 실행하고 다음 내용을 명심해라. : (그냥 생략함.)
FAQ
----
Q: 왜 신형 PSP 전용입니까?
A: 현재 이 플러그인은 신형 PSP의 추가 메모리를 사용하고 있기 때문입니다. (이후로 기술적인 얘기가 나오는데 그냥 생략합니다. 메모리스틱의 DMA 코드가 나올때까지 구형 PSP에서는 사용불가능이랍니다. ㅡㅡ;)
Q: 현재 상태 저장 후 사운드가 안 들립니다.
A: 방금 저장한 상태(state)를 다시 로드해보세요. 이 문제는 몇몇 게임에서 가끔씩 일어날 수 있습니다. 100% 확신할 수는 없지만, 테스트에서 드러난 원인은 파일 쓰기때문입니다. (이하 생략, 요약하자면 이 플러그인은 원래의 슬립모드 코드가 아닌 약간 변형된 코드를 쓰는데 이 과정에서 문제가 생기는 것 같답니다. 추후에 메모리스틱 DMA 코드가 나오면 이 문제가 해결될 거라네요.)
써드 파티 라이센스
--------------------
This program uses the FastLZ library, which is relased under MIT license. A copy of the license can be found at fastlz_license directory.
번역 : 포포츠 (popotz)


# 번역하기가 상당히 거시기하군요. 스테이트? 상태?... 그냥 제 맘대로 했습니다. 오역/오타는 눈 감아주세요.
# 사용하지도 못하는 플러그인의 리드미를 번역하고 있으려니 왠지 슬프군요.
# 게임은 노가다가 제 맛~ 이거 쓰면 근성부족이라고 놀릴겁니다. 췟!

댓글 14개:

  1. 첫댓글?ㅋㅋ



    드디어 강제세이브..대박이군요

    답글삭제
  2. 흠.. 역시 안정성이 문제군요.

    강제라서 그런가

    답글삭제
  3. 정말 급할 떄 쓰게될 듯한 플러그인이군요..ㅎㅎ;; 아직은 쓸일도 없고 겁나서 못쓰겠지만



    포스팅 하시느라 수고하셨습니다 ~

    답글삭제
  4. 전 구형인지라..강제세이브 필요없다고 위로했는데...

    방금 모골2를 하면서 강제세이브가 필요하단걸 절실히 느끼는 중이네요 ㅋㅋ쩝

    답글삭제
  5. 일단은 4.01로 넘어와 버렸군요.

    그래도 신형용 (...)

    답글삭제
  6. 혹시나 했는데 ps1에서는 강제세이브 지원 안되네요;;



    ps1도 되기를 기대 많이 했는데.. ㅎ



    다른 부분에서는 잘 되네요..

    답글삭제
  7. 변역 부분에 보면



    Fake memory sticks are... fake... and shit, they could make

    load and savestate too slow.



    헤에.. 보고 '피식'했다죠.

    답글삭제
  8. 일단 되기는 되는군요.

    신형 일판 PSP

    A게임을 플레이 하던중에 세이브 해놓고,

    더 진행하다가 로드.. 세이브자리에 로드 정확히 되네요.



    그리고 B 게임을 실행하던중 A의 세이브를 사용해서 다시 A게임으로 돌아가는것도

    일단 실행이 된다는걸 확인은 했습니다.



    다만, 아직 확실히 불안정 하다는걸 느낀게..

    하는대로 다 되는게 아니라 가끔씩은 로딩을 하다가 psp가 재부팅 되는 경우가 생기네요.



    리플 작성하면서도 꾸준히 재부팅 되는걸 바라보며 세이브/로드 반복중인데,

    반은 성공, 반은 실패.. 뭐 이정도인듯 합니다.



    세이브도 여러번 시도를 해보았는데,

    세이브쪽에서는 별 문제가 생기지는 않는것 같네요.



    정말 급할때 세이브 해두는것 정도외에는 아직은 자주 사용하기에는 부담이 있을듯 하네요.

    답글삭제
  9. @디셉 - 2008/07/03 01:17
    먼소리래요?

    답글삭제
  10. 포포츠님이 사용하지못해서 근성어쩌구로 핑계대는것 같은 생각이 뇌리에 스쳤다는;

    답글삭제
  11. @디셉 - 2008/07/03 01:17
    후훗 Fake = 짭이라고 보시면 될듯 ㅎ

    답글삭제
  12. 방금 테트리스 했는데 세이브하고 바로 로드하고 뭐 그러면 멈추긴하더라구요

    그런데 로드하고 겜하고 세이브하고 겜하고 그러면 문제는 없는듯

    로드하자마자 세이브하고 세이브 하자마자 로드하고 뭐 그러면 가끔 멈추긴하더라구요 ㅎㅎ

    답글삭제
  13. @디셉 - 2008/07/03 01:17
    왜 피식했다는거야 도대체

    답글삭제
  14. 지금은 신형에서만 된다는 ....

    역시 커펌의 세계에서는 기다림의 미덕이 필요하군요

    구형 피습이에게도 그날이 오기를 ...

    답글삭제

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.