보송보송 하늘속의 츠무츠무

Posted by 픔스
2019.06.28 20:42 잡동사니

https://gall.dcinside.com/idolmaster/12981797

https://www.pixiv.net/member_illust.php?mode=medium&illust_id=75098397

'잡동사니' 카테고리의 다른 글

보송보송 하늘속의 츠무츠무  (0) 2019.06.28
무제  (0) 2019.02.28
저주·통곡·피어나다.  (0) 2019.02.28
동방 BGM 추출 관련(thbgm.fmt에 관해)글  (0) 2017.05.07
HTML 테스트  (0) 2015.08.23
[카연갤] 휴머노이드 테스트하는 만화  (0) 2015.04.24
이 댓글을 비밀 댓글로

무제

Posted by 픔스
2019.02.28 18:00 잡동사니

번역 출처: https://gall.dcinside.com/idolmaster/11905471

https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72992864

https://www.pixiv.net/member_illust.php?mode=medium&illust_id=73005895



'잡동사니' 카테고리의 다른 글

보송보송 하늘속의 츠무츠무  (0) 2019.06.28
무제  (0) 2019.02.28
저주·통곡·피어나다.  (0) 2019.02.28
동방 BGM 추출 관련(thbgm.fmt에 관해)글  (0) 2017.05.07
HTML 테스트  (0) 2015.08.23
[카연갤] 휴머노이드 테스트하는 만화  (0) 2015.04.24
이 댓글을 비밀 댓글로

저주·통곡·피어나다.

Posted by 픔스
2019.02.28 17:45 잡동사니

번역 출처: https://gall.dcinside.com/idolmaster/11897152

https://www.pixiv.net/member_illust.php?mode=medium&illust_id=71355637



'잡동사니' 카테고리의 다른 글

보송보송 하늘속의 츠무츠무  (0) 2019.06.28
무제  (0) 2019.02.28
저주·통곡·피어나다.  (0) 2019.02.28
동방 BGM 추출 관련(thbgm.fmt에 관해)글  (0) 2017.05.07
HTML 테스트  (0) 2015.08.23
[카연갤] 휴머노이드 테스트하는 만화  (0) 2015.04.24
이 댓글을 비밀 댓글로

동방 BGM 추출 관련(thbgm.fmt에 관해)글

Posted by 픔스
2017.05.07 20:10 잡동사니

※이 글은 다음 글의 도움으로 작성되었습니다.

 

동방프로젝트의 BGM은 항상 많은 동방 팬들의 관심을 받기 마련이다. 물론, 게임 CD를 구매하자 마자 BGM을 들어보는 사람 또한 있을 것이다.

그러나 정작 음악을 추출하려고 하면 전혀 감도 못 잡겠고, 추출 툴은 몇 주 심하면 반 년 이후에나 업데이트 되는 경우가 허다하다.

동방 BGM을 추출하기 위해 많은 노력을 했지만, 코딩 쪽에는 일자무식인 나로써는 너무나도 힘든 일이었다. 그러나, 웹 서핑을 통해 BGM을 읽는 헤더 파일의 해석을 구할 수 있게 되어 이를 분석한 글을 올려둔다.

 

먼저, 헤더 파일에 상응하는 파일인 thbgm.fmt에 대해 알아보자.

이는 th**.dat 안에 들어 있는 파일로써, 추출하기 위해서는 thtk 등을 통해 직접 dat 파일을 분해해야만 한다. 가장 유명한 툴인 thtk는 현재 th16까지 대응되며, 최신 버전은 thtk-9이다. 다운로드는 공식 깃허브에서 가능하다.

 

잠깐 thtk의 사용법을 알아보자.

본디 이 툴은 구미권 동방 프로젝트 팬덤에서 영어 패치를 위해 개발된 툴로, 각종 데이터를 분해하고 조립하는 기능을 가지고 있다.

여기에서는 간단하게 dat를 분해하는 thdat.exe의 사용법을 짚고 넘어가겠다. thtk의 자세한 사용법은 이 곳을 참조하라.

 

thdat.exe는 CUI 응용 프로그램으로, 커맨드라인에서 명령값을 주어 사용가능하다.

대상 프로그램인 thdat.exe이 존재하는 경로로 이동한 뒤에 thdat.exe을 지정하고, 커맨드를 쓴 뒤에 thdat.exe이 작업할 해당 파일을 지정하면 된다.

즉, 다음과 같이

thdat.exe COMMAND[OPTION...] [ARCHIVE [FILE...]]

사용하면 된다. 커멘드에는 c, l, x, V가 있으며, 각 커멘드에는 옵션을 붙여 사용하면 된다. 옵션에는 해당 파일의 동방 버전을 적으면 된다.

c는 대상을 생성하며, l은 대상에 포함된 파일들의 리스트를 보여준다. x는 대상을 분해하며, V 커맨드는 thtk의 버전 정보를 보여준다.

 

thtk를 통해 th**.dat을 분해했다면, 수많은 파일들이 나올 텐데, 이 중 BGM의 헤더 역할을 하는 파일인 thbgm.fmt를 찾아보자.

thbgm.fmt는 헥스 에디터 등을 통해 열어야만 해당 데이터를 16진수로 접근할 수 있다. 적당한 hex editor를 구해 열어보도록 하자.

 

 

해당 예제는 th16의 체험판 데이터다. 헥스 에디터는 기본적으로 데이터의 16진수 값과 이를 특정 인코딩으로 변환하여 보여준다. 예제에서는 ANSI를 사용한다. 처음에는 이 데이터를 보고도 도통 감을 못 잡았지만, 몇가지 단서를 통해 데이터를 유추해 낼 수 있었다. 그것은 다음과 같다.

74 68 31 36 5F 30 31 2E 77 61 76→th16_01.wav
00 00 00 00 00
10 00 00 00→00 00 00 10
00 78 ED 00→00 ED 78 00-00 11 EC 00→00 DB 8C 00
00 EC 11 00→00 11 EC 00
00 78 ED 00→00 ED 78 00-00 11 EC 00→00 DB 8C 00
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 36 5F 30 32 2E 77 61 76→th16_02.wav
00 00 00 00 00
10 78 ED 00→00 ED 78 10
C8 2C 20 01→01 20 2C C8-00 09 AB 70→01 16 81 58
70 AB 09 00→00 09 AB 70
C8 2C 20 01→01 20 2C C8-00 09 AB 70→01 16 81 58
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 36 5F 30 33 2E 77 61 76→th16_03.wav
00 00 00 00 00
D8 A4 0D 02→02 0D A4 D8
80 31 25 01→01 25 31 80-00 10 57 00→01 14 DA 80
00 57 10 00→00 10 57 00
80 31 25 01→01 25 31 80-00 10 57 00→01 14 DA 80
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 36 5F 30 34 2E 77 61 76→th16_04.wav
00 00 00 00 00
58 D6 32 03→03 32 D6 58
80 ED 3B 01→01 3B ED 80-00 11 29 00→01 2A C4 80
00 29 11 00→00 11 29 00
80 ED 3B 01→01 3B ED 80-00 11 29 00→01 2A C4 80
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 36 5F 30 35 2E 77 61 76→th16_05.wav
00 00 00 00 00
D8 C3 6E 04→04 6E C3 D8
00 AD 14 01→01 14 AD 00-00 22 E2 00→00 F1 CB 00
00 E2 22 00→00 22 E2 00
00 AD 14 01→01 14 AD 00-00 22 E2 00→00 F1 CB 00
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 36 5F 30 36 2E 77 61 76→th16_06.wav
00 00 00 00 00
D8 70 83 05→05 83 70 D8
78 2E 5C 01→01 5C 2E 78-00 08 B9 F0→01 53 74 88
F0 B9 08 00→00 08 B9 F0
78 2E 5C 01→01 5C 2E 78-00 08 B9 F0→01 53 74 88
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 36 5F 30 37 2E 77 61 76→th16_07.wav
00 00 00 00 00
50 9F DF 06→06 DF 9F 50
BC 0A 64 01→01 64 0A BC-00 72 43 D4→00 F1 C6 E8
D4 43 72 00→00 72 43 D4
BC 0A 64 01→01 64 0A BC-00 72 43 D4→00 F1 C6 E8
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00
74 68 31 32 38 5F 30 38 2E 77 61 76→th128_08.wav
00 00 00 00
0C AA 43 08→08 43 AA 0C
C0 DC 66 00→00 66 DC C0-00 1C AC C8→00 4A 2F F8
C8 AC 1C 00→00 1C AC C8
C0 DC 66 00→00 66 DC C0-00 1C AC C8→00 4A 2F F8
01 00 02 00 44 AC 00 00 10 B1 02 00 04 00 10→PCMWAVEFORMAT구조체
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

이를 해석하면 다음과 같다.

 

먼저, 처음 74와 76 사이의 값은 ANSI 0x74(t)~0x76(v)으로, 각 곡의 제목을 의미한다.

그리고 더미값 00이 연속한다. 데이터 값을 구분하기 위해 집어넣은 것 같다.

 

다음으로 오는 6개의 16진수는 곡이 시작하는 개시 위치를 의미한다. 이 값은 거꾸로 뒤집혀 있으며, 10 00 00 00은 곧 00 00 00 10이 되며, 의미는 10진수 16을 의미한다.

 

개시 위치 값 다음으로 오는 6개의 16진수는 인트로 부분의 길이와 루프 부분의 길이의 합을 의미한다. 처음에 thbgm.fmt를 분석할 때, 이 부분을 해석하지 못해 결국 분석을 포기했던 적이 있는데 웹 서핑을 통해 우연히 이 값이 인트로부와 루프부의 합이라는 것을 알게 되었다. 다시 한번 해당 정보를 게시해 준 네티즌에게 감사를 표한다. 이 값 역시 개시 위치 값과 동일하게 거꾸로 뒤집혀 있다.

 

인트로 부분의 길이와 루프 부분의 길이의 합인 값 다음으로 오는 6개의 16진수는 인트로 부분의 길이를 의미한다. 이를 통해 루프 부분의 길이 값을 유추해낼 수 있다. 역시, 이 값도 동일하게 거꾸로 뒤집혀 있다.

 

인트로 부분의 길이 값 다음으로 오는 6개의 16진수는 앞서 살펴 본 인트로 부분의 길이와 루프 부분의 길이의 합인 값과 동일하다. 신령묘 이전 동방에서는 이 부분만이 인트로부 길이+루프부 길이였으며, 개시 위치 값과 인트로 부분의 길이 값 사이에 위치한 6개의 16진수는 해석하지 못한 전혀 다른 데이터였다고 한다. 여기에서는 해당 내용을 다루지 않겠다.

 

마지막으로 따라오는 15개의 16진수는 PCM WAV 포맷 구조체라고 하는데, 솔직히 잘 모르겠다. 여기에서 설명은 생략한다.

그 후에 더미값 00이 연속한다.

 

이 구조가 한 덩어리로, 각 곡마다 이 정보가 계속 반복된다.

 

동방 BGM을 추출하려는 사람에게 혹시 도움이 될까 이 정보를 블로그에 게시한다. 다른 사람들은 나와 같이 해메지 않길 바라며 글을 마친다.

'잡동사니' 카테고리의 다른 글

무제  (0) 2019.02.28
저주·통곡·피어나다.  (0) 2019.02.28
동방 BGM 추출 관련(thbgm.fmt에 관해)글  (0) 2017.05.07
HTML 테스트  (0) 2015.08.23
[카연갤] 휴머노이드 테스트하는 만화  (0) 2015.04.24
당황  (0) 2015.04.17
이 댓글을 비밀 댓글로

HTML 테스트

Posted by 픔스
2015.08.23 10:04 잡동사니

<div>

<audio src="audio.mp3" controls="true" loop="true" autoplay="true"></audio>

</div>

이 댓글을 비밀 댓글로

[카연갤] 휴머노이드 테스트하는 만화

Posted by 픔스
2015.04.24 16:03 잡동사니

반고양이님의 만화입니다. 출처: http://gall.dcinside.com/board/view/?id=cartoon&no=279301

 

 

여러 생각을 하게 만들어주는 만화인데, 인상적입니다. 네.

안드로이드의 인권 문제는 기술이 매우 발전하는 후일에는 언젠가 불거질 문제같지만, 지금 언급하기에는 시기상조일까요(웃음)

이 댓글을 비밀 댓글로

당황

Posted by 픔스
2015.04.17 19:55 잡동사니

 

 

끔찍하게도 과제와 시험이 나를 말려죽이고 있다

이 댓글을 비밀 댓글로

3월 16일 논리적 사고와 글쓰기 수업 내용 정리

Posted by 픔스
2015.03.16 15:07 잡동사니

글을 쓸 때 필요한 것은 “느낌”

종전의 좌뇌적 시각은 단순히 글의 기교만을 강조했다면

최근 대두되는 우뇌적 시각은 자신의 오감을 통해 받아들인 감정을 바탕으로 “나”를 표현한다.

나를 드러내는 것은 내가 사용하는 어휘로 나를 드러낼 수 있으며 또한 누군가가 사용하는 어휘로 그의 생각을 느낄 수 있다.


잡담

어떤 일을 결정하는 결정적 순간에서 83%는 우뇌적(감정적)인 결정을 하게 된다.

사람들이 처음 보는 책을 보았을 때 이 책을 계속 읽을지 그렇지 않을지를 판단하는 분량은 평균 2.7줄이라고 한다.

이 댓글을 비밀 댓글로

블로그를 활용할 방법을 모색중

Posted by 픔스
2015.01.16 22:11 일상 이야기

…아마 대학교에 간 후라면 더더욱 이곳에 찾아오지 못할 것 같은데.

뭐, 그렇다고 해도 레포트나 논문 정리한 글을 간단하게 요약해서 갈무리해둔 느낌으로 찾아올 것 같기도 하다.

 

결국은 당분간 여기 안 오게 되는 걸로…

이 댓글을 비밀 댓글로

이 블로그에서 한자를 작성하면 어떻게 보이더라

Posted by 픔스
2014.12.06 13:14 잡동사니

CSS를 수정한 터라 정확하게 어떻게 되는지 잘 모르겠다.

 

훈〮져ᇰ〮ᅙᅳᆷ

 
訓훈〮은〮ᄀᆞᄅᆞ칠〮씨〮오〮民민ᄋᆞᆫ〮百ᄇᆡᆨ〮姓셔ᇰ〮이오〮音ᅙᅳᆷ은〮소리〮니〮訓훈〮民민正져ᇰ〮音ᅙᅳᆷ은〮百ᄇᆡᆨ〮姓셔ᇰ〮ᄀᆞᄅᆞ치〮시논〮正져ᇰ〮ᄒᆞᆫ소리〮라〮

 

귁〮ᅌᅥᆼ〯ᅙᅳᆷ이〮

 
國귁〮ᄋᆞᆫ〮나라〮히라之징ᄂᆞᆫ입〮겨〮지라〮語ᅌᅥᆼ〯는말〯ᄊᆞ미라〮
나랏〮말〯ᄊᆞ미〮

 

잉〮ᅘᅩᆼ듀ᇰ귁〮ᄒᆞ〮야〮

 
異잉〮ᄂᆞᆫ〮다ᄅᆞᆯ씨라乎ᅘᅩᆼᄂᆞᆫ〮아〯모〮그ᅌᅦᄒᆞ〮논겨〮체ᄡᅳ〮는字ᄍᆞᆼ〮ㅣ라〮中듀ᇰ國귁〮ᄋᆞᆫ〮
皇ᅘᅪᇰ帝뎽〮겨〯신나라〮히니〮우〮리〮나랏〮常쌰ᇰ談땀애〮江가ᇰ南남이〮라〮ᄒᆞ〮ᄂᆞ〮니라〮
듀ᇰ귁〮에〮달아〮

 

영〯ᄍᆞᆼ〮로〮不부ᇙ〮샤ᇰ류ᇢ토ᇰᄒᆞᆯᄊᆡ〮

 
與영〯는〮이〮와〮뎌〮와〮ᄒᆞ〮ᄂᆞᆫ겨〮체ᄡᅳ〮ᄂᆞᆫ字ᄍᆞᆼ〮ㅣ라〮文문은〮글〮와〮리라〮不부ᇙ〮은〮아니〮ᄒᆞ〮논ᄠᅳ〮디라〮相샤ᇰᄋᆞᆫ〮서르ᄒᆞ〮논ᄠᅳ〮디라〮流류ᇢ通토ᇰᄋᆞᆫ〮흘러〮ᄉᆞᄆᆞᄎᆞᆯ〮씨〮라〮
ᄍᆞᆼ〮와〮로〮서르ᄉᆞᄆᆞᆺ디〮아니〮ᄒᆞᆯᄊᆡ〮

 

공〮로〮愚ᅌᅮᆼ이〮有ᅌᅮᇢ〯송〯욕〮ᅌᅥᆫᄒᆞ〮야도〮

 
故공〮ᄂᆞᆫ〮젼ᄎᆡ〮라〮愚ᅌᅮᆼ는〮어릴〮씨〮라〮有ᅌᅮᇢ〯는이실씨〮라〮所송〯ᄂᆞᆫ〮배〮라〮欲욕〮ᄋᆞᆫ〮ᄒᆞ고〮져〮ᄒᆞᆯ씨〮라〮言ᅌᅥᆫ은〮니를씨〮라〮
이〮런젼ᄎᆞ〮로〮어린〮百ᄇᆡᆨ셔ᇰ〮이〮니르고〮져〮호ᇙ〮배〮이셔〮도〮

 

ᅀᅵᆼ쥬ᇰ부ᇙ〮득〮쪄ᇰ:쟝ㅣ多ᅌᅴᆼ〯라〮

 
而ᅀᅵᆼᄂᆞᆫ〮입〮겨〮지라〮終쥬ᇰ은ᄆᆞᄎᆞ〮미라〮得득〮은〮시를〮씨〮라〮伸신ᄋᆞᆫ〮펼씨〮라〮其끵ᄂᆞᆫ〮제〯라〮情쪄ᇰ은〮ᄠᅳ〮디라〮者〯쟝ᄂᆞᆫ〮노〮미라〮多당ᄂᆞᆫ〮할씨〮라〮矣ᅌᅴᆼ〯ᄂᆞᆫ〮말〯ᄆᆞᆺᄂᆞᆫ입〮겨〮지라〮
ᄆᆞᄎᆞᆷ〮내〯제ᄠᅳ〮들〮시러〮펴디〮몯〯ᄒᆞᇙ노〮미〮하니〮라〮

 

ㅣ爲윙〮ᄎᆞᆼ〯민〯ᅀᅧᆫᄒᆞ〮야〮

 
予영는〮내〮ᄒᆞ〮ᅀᆞᆸ시〮논ᄠᅳ〮디〮시니〮라〮此ᄎᆞᆼ〯ᄂᆞᆫ〮이〮라〮憫민〯然ᅀᅧᆫ은〮어〯엿비〮너기〮실씨〮라〮
내〮이〮ᄅᆞᆯ〮爲윙〮ᄒᆞ〮야〮어〯엿비〮너겨〮

 

졩〮ᅀᅵᆼ〮씹〮바ᇙ〮ᄍᆞᆼ〮ᄒᆞ〮노니〮

 
新신ᄋᆞᆫ〮새〮라〮制졩〮ᄂᆞᆫ〮ᄆᆡᇰᄀᆞ〮ᄅᆞ〮실씨〮라〮二ᅀᅵᆼ〮十씹〮八바ᇙ〮ᄋᆞᆫ〮스〮믈〮여들〮비라〮
새〮로〮스〮믈〮여듧〮字ᄍᆞᆼ〮ᄅᆞᆯ〮ᄆᆡᇰᄀᆞ〮노니〮

 

욕〮使ᄉᆞᆼ〯ᅀᅵᆫᅀᅵᆫᄋᆞ〮로〮易잉〮씹〮ᄒᆞ〮야〮便ᅙᅥᆼᅀᅵᇙ〮요ᇰ〮ᅀᅵᆼ〯니라〮

 
使ᄉᆞᆼ〯ᄂᆞᆫ〮ᄒᆡ〯ᅇᅧ〮ᄒᆞ〮논마〮리라〮人ᅀᅵᆫᄋᆞᆫ〮사〯ᄅᆞ〮미라〮易잉〮ᄂᆞᆫ〮쉬〯ᄫᅳᆯ씨〮라〮習씹〮ᄋᆞᆫ〮니길〮씨〮라〮便뼌은〮便뼌安ᅙᅡᆫᄒᆞᆯ씨〮라〮於ᅙᅥᆼ는〮아〯모〮그ᅌᅦᄒᆞ〮논겨〮체ᄡᅳ〮는字ᄍᆞᆼ〮ㅣ라〮日ᅀᅵᇙ〮ᄋᆞᆫ〮나〮리라〮用요ᇰ〮ᄋᆞᆫ〮ᄡᅳᆯ〮씨〮라〮耳ᅀᅵᆼ〯ᄂᆞᆫ〮ᄯᆞᄅᆞ미〮라〮ᄒᆞ〮논ᄠᅳ〮디라〮
사〯ᄅᆞᆷ마〯다〮ᄒᆡ〯ᅇᅧ〮수〯ᄫᅵ〮니겨〮날〮로〮ᄡᅮ〮메〮便ᅙᅡᆫ킈〮ᄒᆞ고〮져〮ᄒᆞᇙᄯᆞᄅᆞ미〮니라〮

 

이건 훈민정음 언해본이고.

 

いろはにほへと ちりぬるを
わかよたれそ つねならむ
うゐのおくやま けふこえて
あさきゆめみし ゑひもせす
 
色はにほへど 散りぬるを
我が世たれぞ 常ならむ
有為の奥山  今日越えて
浅き夢見じ  酔ひもせず
 
以呂波耳本へ止
千利奴流乎和加
餘多連曽津祢那
良牟有為能於久
耶万計不己衣天
阿佐伎喩女美之
恵比毛勢須

 

이건 이로하우타.

 

Oh, wet Alex, a jar, a fag! Up, disk, curve by! Man Oz, Iraq, Arizona, my Bev? Ruck's id-pug, a far Ajax, elate? Who?

Only the fool would take trouble to verify that his sentence was composed of ten a's, three b's, four c's, four d's, forty-six e's, sixteen f's, four g's, thirteen h's, fifteen i's, two k's, nine l's, four m's, twenty-five n's, twenty-four o's, five p's, sixteen r's, forty-one s's, thirty-seven t's, ten u's, eight v's, eight w's, four x's, eleven y's, twenty-seven commas, twenty-three apostrophes, seven hyphens and, last but not least, a single !.

이 댓글을 비밀 댓글로