'2010/02'에 해당되는 글 2건

  1. 2010/02/17 ToHeart 2 .PAK 파일 분해기 (1)
  2. 2010/02/13 [예제] 텍스트 파일 읽어서 몽땅 뿌려주기

앗시바 글쓰다 날려먹었군...

주제는 ToHeart2 .PAK 파일 분해기

근데 저 pak 파일이라는게 좀 지나치게 단순한 포맷이라

프로그램에 뭐가 있을거란 기대는 금지

작성동기

엊저녁 할일이 없었다

라이센스

이 프로그램을 다운받으면 호빵님의 노예가 되는 라이센스.txt

라고 하고싶지만 제작사(나 말고) 사정상 GPL임...

판매가격

매달 님 통장 혹은 부모님 통장에서 통신사로 나가고 있으니 신경쓸거 없음

소스코드 공개 여부

필요한 사람 댓글남기면 택배로 보내줌

...농담이고 머 원한다면 주겠지만(아니 줘야되지만) 전혀 가치 없는 물건이라...

도움주신 분

뭔 배짱으로 월급을 받는지 알 도리 없는 리프사의 어떤 프로그래머

사용법

예제> th2_unpack grp.pak

하면 grp.pak의 모든 파일이 해체돼서 나옴

압축돼있던 놈은 압축 풀려서 나옴

기존에 같은이름 파일이 있으면 묻지도 따지지도 않고 덮어씌움

예외, 오류처리 일절 없음 쪼금 있음

인자로 넘긴 파일이 투하트의 .pak 파일이 아니면 무슨일이 벌어질진 나도 모름 안풀림

테스트용 출력문을 안제거해서 시끄러움

실행하려고 할때 나도 모르는 어떤 dll등을 요구할수도 있으니

그런 상황이 만에하나 발생할경우 댓글로 신고 바람

사용중 이상발생시

책임안짐 배째

실행환경

win7 64비트에서 테스트됐으나 32비트 실행파일임

제일 중요한 다운경로

http://hoppang.net/pds/th2_unpack.exe

안받아지면 쫌 기둘

변형된(압축된도 아니고..) PAK 파일 풀기 기능 추가한 patch1 버전 새로 올림

버그 급 수정한 patch2 버전 올림..

마지막으로

링크 한줄로 끝낼려고 했는데 어째 말이 많아졌다

아참 같은 엔진 쓰는 겜은 다 풀릴듯.. 장담은 못함
크리에이티브 커먼즈 라이센스
Creative Commons License
2010/02/17 10:17 2010/02/17 10:17
Posted by 호빵
왜 올렸나 묻지 말자.

(* readfile.ml
 * 텍스트 파일을 통째로 읽어 내용을 출력해 주는 프로그램.
 * http://camltastic.blogspot.com/2008/09/tip-read-all-lines-from-file-most.html
 * 의 코드를 많이 참고했음.
 * ocamlc -o readfile(.exe) readfile.ml *)

(* 함수의 이름은 뭐라도 상관없다. OCaml에는 main함수 같은 개념은 없다. *)
let _ =
        (* 이것들은 관점에 따라 함수라고 봐도 좋고 변수라고 봐도 좋다.
         * 하지만 근본 개념은 함수다. *)
        let filename = "readfile.ml" in
        let channel = open_in filename in
        (* 이 놈은 함수가 아니다. 'ref' 지시어는 변할 수 있는(mutable) 객체를 만든다.
         * [] - 빈 리스트 같은 OCaml 기본 문법은 
         * http://merd.sourceforge.net/pixel/language-study/syntax-across-languages-per-language/OCaml.html
         * 를 읽어볼 것. *)
        let lines = ref [] in
        try
                (* input_line 함수는 파일의 끝을 만나면 End_of_file 예외를
                 * 발생시킨다. *)
                while true; do
                        (* OCaml의 리스트는 앞에서 붙이기(C++ 식으로 말하자면
                         * push_front())밖에 안 된다. 물론, 기본으로 제공되는
                         * 것이 그렇다는 얘기. 원한다면 스스로 push_back을
                         * 구현해도 문제될 것 없다. *)
                        lines := (input_line channel) :: !lines
                done;
        (* 예외처리. OCaml의 예외는 C++보다는 조금 그 심각함(?)이 덜하다. *)
        with End_of_file ->
                (* 파일 닫기 *)
                close_in channel;
                (* 리스트의 크기 - 이 경우에는 텍스트파일의 줄 수를 출력함. *)
                Printf.printf "length of lines = %d\n" (List.length !lines);
                (* 아까 리스트를 역순으로 붙여나갔기 때문에, 원래 순서대로
                 * 작업하려면 List.rev 함수를 이용해서 뒤집어줘야 한다 *)
                List.iter (Printf.printf "%s\n") (List.rev !lines)


아, 무슨 언어냐고...?

분류 보세여 :$

크리에이티브 커먼즈 라이센스
Creative Commons License
2010/02/13 01:57 2010/02/13 01:57
Posted by 호빵