2021년 12월 19일 일요일

[松田聖子] 싱글 바이닐 瞳はダイアモンド/蒼いフォトグラフ

몇달 전 턴테이블을 하나 구하게 되어서, 신나게 돌리고 있습니다요.

턴테이블을 마지막으로 들어본게 고딩 때니까... 거의 30년만에 다시 들어보는거죠 ㅎ.ㅎ


장작타는(?) 소리와 함께 바이닐이 돌아가는 모습을 보고있으면 시간가는 줄 모릅니다요ㅋㅋ


암튼 기념으로 동작 영상을 한번 찍어보았어요.


1983년 10월에 발매된 세이코짱의 15번째 싱글 '瞳はダイアモンド/蒼いフォトグラフ'입니다.

7인치 도넛판입니다. 가운데 구멍이 크게 뚫린~ㅋ


두 노래는 제가 선정한 마츠다 세이코의 노래 탑10에 들어갑니다요.

노래도 좋고 이 때 목소리도 참 이쁩니다요 ㅎ.ㅎ


아래 영상은 턴테이블(audio-technica AT-LP60X) 출력을 PC LINE-IN으로 물려서 녹음했습니다.

그럼 즐감하셔요~



PS.

오늘 뉴스에 세이코의 장녀(神田沙也加)의 사망소식이 올라왔네요.

콘서트에서 함께 노래부르던 모습도 봤었는데... 안타깝습니다요.


2021년 12월 18일 토요일

FontPack 제작 #15 - BASIC 데모를 내장하면

폰트팩의 BIOS 영역은 240KB입니다.

현재 64KB 정도만 사용하고 있으니, 여유가 많이 있어요.


최근 V2 카트리지를 만들어 동작 테스트를 하다가 떠오른 생각인데요.

한글 데모 용 프로그램이 내장되어 있으면 좋겠다는 느낌이 들더라구요.


그래서, BASIC으로 간단한 데모를 만들어보려고 고민을 하는데 뭔가 번쩍하고 떠오릅니다ㅋ

아이큐2000에 내장된 '아이큐 교실'이 스크린7에서 한글을 사용하는 BASIC 프로그램이잖아요?

그냥 요걸 내장하고 BASIC에서 CALL TUTOR 명령으로 구동되도록 했습니다.


아래는 FS-A1에서 실행해본 모습입니다.





그리고,

폰트팩으로 기존 MSX2 용 한글 BASIC 프로그램을 활용하는 방법은 예전에 올린 글을 참고하세요!


그럼, 이만~~


2021년 12월 10일 금요일

2021년 11월 10일 수요일

[WIN] 여러개의 DSK 파일을 간단히 합치는 방법

여러개의 DSK 파일들을 에뮬 또는 MMC/SD 등에서 사용하기 위해,

하나의 파일로 합쳐야하는 경우가 생기는데요.


방법은 여러가지가 있겠지만,

이번에는 배치파일과 윈도의 보내기(Send To) 기능을 활용해보아요~ ㅎ.ㅎ


먼저 파일을 합치는 BAT 파일을 받으세요.

Download: File Combine.zip


배치파일 내용은 이렇습니다.

제가 대충 만든거니까 맘에 안드시면 수정해서 쓰세요ㅋ





배치파일을 윈도의 GUI와 연동해서 쓰는 가장 쉬운 방법은

보내기(Send To) 기능을 쓰는건데요.


윈도10의 경우는 아래 폴더에 배치파일을 넣으면 되겠습니다.

배치파일 원본을 넣어도 되고, 바로가기 링크를 넣어도 됩니다.

C:\Users\계정이름\AppData\Roaming\Microsoft\Windows\SendTo





DSK 파일들의 이름을 잘 정리해서, 탐색기에서도 순서가 정렬되도록 해줍니다.





여기가 가장 중요합니다! 잘 보세요ㅋ

DSK 파일들을 모두 선택 후,

첫번째 DSK파일에서 마우스 우클릭으로 팝업메뉴를 띄웁니다.

배치파일에 파일명을 전달하는 순서때문에 이렇게 해야됩니다!

뭐, 파일명을 자동으로 정렬하는 기능을 넣을 수도 있겠지만...

스크립트를 복잡하게 만드는게 귀찮으니 그냥 이렇게 합시다~





CMD 창이 열리면서 작업이 수행됩니다.

COMBINE.OUT 파일을 생성하고, DSK 파일을 하나씩 붙이는거라 금방 끝나요.





작업이 완료되면 COMBINE.OUT 파일명을 적당히 바꿔서 쓰시면 되겠습니다.





흐... 배치파일 만드는 것 보다 글 쓰는게 더 귀찮네요.


.

.

.



근데 "어? 나는 구버전 윈도 쓰는데, 가능할까요?" 물어보실까봐

VM으로 윈도2000에서도 테스트해봤습니다.


윈도2000의 보내기 폴더의 위치는 아래처럼 나와요.

여기에 배치파일을 넣으면 됩니다.

C:\Documents and Settings\계정이름\SendTo


실행방법은 똑같습니다. 스샷 구경하셔요~







그럼, 즐거운 윈도 + MSX 생활하셔요~ ㅎ.ㅎ/~


2021년 11월 4일 목요일

[松田聖子] [A03] Silhouette 앨범에 중독되다




제가 세이코짱 노래에 빠져든지 이제 4개월로 접어들고 있습니다.

80년대 앨범부터 열심히 공부(듣기) 중인데요...

혹시 Silhouette 앨범을 좋아하시는 분 계세요? ㅎ.ㅎ


저는 플레이리스트를 만들 때, 듣기 좋았던 곡들부터 추가해놓구요.

가끔 한번씩 앨범 전체를 정주행 하면서, 괜찮은 애(?)들을 골라 리스트로 승급(!)합니다.

노래는 많은데 들을 시간은 부족하니, 체리피킹으로 얍삽하게 가는거죠ㅋㅋ


이렇게 리스트가 늘어나다보면, 한 앨범의 전체 곡이 몽땅 플레이리스트에 들어가는 경우가 나오는데요.

Silhouette 앨범이 첫 케이스가 되었습니다~ 짝짝짝~ ㅎ.ㅎ

첫 케이스는 파인애플이나 유토피아 앨범이 되지않을까 생각했는데, 좀 의외였어요.


사실 Silhouette 앨범은 처음 들었을 때 느낌이 좀 별로였거든요.

70년대에 만든 노래들인가? 싶기도 하고...

선행 싱글로 들어간 체리블라썸이랑 그닥 안어울리는 듯 하고...

앨범 제목 '실루엣'과 노래들이 무슨 연관이 있는지도 잘 모르겠고... 암튼 그랬습니다.

참고로, 처음 들을 때부터 좋았던 앨범들은 North Wind, 風立ちぬ, Pineapple, Candy, ユートピア였습니다.


그럼 Silhouette 앨범에 빠져든 과정을 적어보아요~ ㅎ.ㅎ


앨범에는 요렇게 10곡이 있네요.


01. Summer Beach~オレンジの香り~

02. 白い貝のブローチ

03. Sailing

04. ナイーブ~傷つきやすい午後~

05. チェリーブラッサム (선행싱글)

06. あ・な・たの手紙

07. Je t'aime

08. 夏の扉 (선행싱글)

09. 花びら

10. 愛の神話


선행싱글은 명곡이니 딱히 언급할 필요는 없을테구요.

일단 첫 느낌이 좋았던 2번 白い貝のブローチ, 10번 愛の神話 두 곡이 리스트에 처음으로 들어갔습니다.

참고로 愛の神話이 첫 픽이었어요. 노래 완전 좋아유~

(LP로 들으면서 愛の神話까지 가려면, B면 엔딩을 봐야하는 상황이! ㅎ.ㅎ)


앨범 정주행을 하다보니,

어느 순간 7번 Je t'aime 노래가 이상하게 머리에 들어오네요.

이유는 모르겠지만 자꾸 중독됩니다. 세이코짱 목소리도 잘 어울리구요. (리스트 추가 OK)

Summer Beach도 비슷한 느낌이라 일단 리스트에 추가 (써머 비~~취~~~ㅋ)


들어보면 Summer Beach에서 2번 白い貝のブローチ, 3번 Sailing이랑 연속으로 쭈욱~ 가는 느낌이 좋더라구요.

이제 Sailing도 리스트에... ㅎ.ㅎ


한동안 이상태로 리스트가 유지됩니다. (이미 곡이 7개나 리스트에 ㄷㄷㄷ)


그러던 어느날...

조용히 노래를 듣는데 4번 ナイーブ~傷つきやすい午後~

여기서 세이코짱 목소리가 아주~ 기분좋게 들리는거에요. 

아무래도 3번 Sailing에서 넘어가면서 나긋나긋~한 느낌이 더 강해지는게 아닐까 싶기도 하고... 흠


이젠 앨범 정주행 횟수가 점점 늘어납니다. 이상하게 LP에 자꾸 손이 가네요.

아참! 제가 앨범 정주행 할때는 일부러 LP로 듣습니다. 노래 건너뛰기 방지(?) 목적으로요ㅋㅋ


그렇게 B면 노래들이 스르륵~ 흘러가는데, 6번 あ・な・たの手紙 노래가 기억에 자꾸 남네요.

결국 이 노래도 리스트에 넣고 말았습니다.

왜 이 앨범은 들을수록 뇌리에 박히는걸까요...?

.

.

.

드디어 오늘 인내심의 한계가 왔네요.

고민하다 9번 花びら도 리스트에 추가했습니다.

결국 앨범 전체 10곡이 세이코짱 플레이리스트에 다 들어갔네요.

여담이지만, 花びら 노래는 사카이 노리코가 불러도 잘 어울렸을 것 같아요. (팔딱~팔딱~ 노리삐~ㅋ)


결론: Silhouette의 첫 느낌은 별로였지만, 제일 빨리 중독된 앨범이었습니다.


지금도 Silhouette을 정주행 중인데요. 참 좋네요. 어쩌다 이 앨범에 중독된건지 잘 모르겠지만요.

그럼 편안한 밤 되셔요~


PS. 노래에 끌린 순서도 한번 적어보아요.


08. 夏の扉 (선행싱글)

05. チェリーブラッサム (선행싱글)

10. 愛の神話

02. 白い貝のブローチ

07. Je t'aime

01. Summer Beach~オレンジの香り~

03. Sailing

04. ナイーブ~傷つきやすい午後~

06. あ・な・たの手紙

09. 花びら


2021년 10월 24일 일요일

FontPack 제작 #14 - 롬매퍼 변경

폰트팩 V1은 ASCII 16K 매퍼와 동일하게 구현되어 있고,

전체 주소영역을 반으로 나눠서 플래쉬롬과 SRAM이 2MB씩 사용합니다.


지난 6년(?)간 폰트팩을 사용해본 결과, ASCII 16K 매퍼를 활용하는 경우가 별로 없네요.

MMC/SD V4의 메가램도 용량이 2MB라서, ASCII 매퍼 테스트 목적으로 폰트팩을 쓸 이유도 사라졌구요.


폰트팩 V2에서는 롬이 8MB로 늘어났기 때문에,

ASCII 16KB 매퍼를 삭제하고 폰트팩 전용의 롬매퍼가 탑재되었습니다.

이렇게 변경되면서 V1에 있던 128KB 유저 메가램 기능도 함께 삭제되었습니다.

뭐, 바뀐 매퍼로 인해 사용자가 따로 신경 쓸 부분은 없어요. ㅎ.ㅎ


전체 8MB 플래쉬롬에서,

2MB는 기존 V1과 동일한 BIOS + CP949 관련 테이블/폰트가 들어가겠구요.

5MB는 V2 전용의 유니코드 테이블/폰트가 들어갑니다.

그럼 1MB가 남게 되는데요.


요기는 간단하게 활용할 수 있는 1MB짜리 멀티롬 하나를 넣어놨습니다.

제가 카트리지 배포할 때 넣어드리는건 아니고, 사용자가 직접 다운로드하셔야 됩니다요~

어차피 처음에 폰트롬 생성하고 다운로드 해야되니까 필수 작업이긴 하겠네요.


멀티롬은 요놈이 들어가니까 참고하시구요.





요약: V2에서는 '유저롬 128KB' 기능이 '멀티롬 1MB'으로 변경됨.


즐거운 주말 되세요~


2021년 10월 22일 금요일

FontPack 제작 #13 - 컨트롤 레지스터 변경

폰트팩 V2는 기본적으로 V1과 호환이 됩니다.

예전 S/W들을 그대로 쓸 수 있습니다. (죄다 제가 만든 것 뿐이지만요ㅋㅋ)


V2는 이 상태에서 유니코드 기능이 추가로 들어가게 되었는데요.

이걸 직접 컨트롤하는 경우는 어떻게 해야하는지 잠깐 알아보겠습니다요~

(사실 모르셔도 됩니다ㅋ)



아래는 V1 호환 모드일 때의 레지스터입니다.




포트를 4개 사용하는 것은 기존 폰트팩 V1과 동일하구요.

MOD 레지스터에 VER(BIT7)값이 추가되었습니다.

기본값은 0으로 되어있구요. 위의 표에서 처럼 V1과 똑같이 동작합니다.

기존 V1의 BIT7 값은 0으로 고정되어 있으니까,

값을 바꿔서 적용이 되는지 체크하는 것으로, 보드 버전을 디텍션 할 수 있습니다.



아래는 V2 모드로 설정했을 때의 레지스터입니다.




VER(BIT7)을 1로 바꾸면 V2 모드가 됩니다.

유니코드는 0000H ~ FFFFH 영역을 모두 사용하기 때문에,

V1 호환모드의 FSEL(BIT7)은 존재하지 않습니다.

따라서 0000H ~ 7FFFH 문자도 플래쉬롬의 폰트가 사용됩니다.


V1의 KOR 레지스터와 V2의 UNI 레지스터의 동작방식은 동일합니다.

BPP에 맞춰 컬러가 적용된 폰트 데이터를 스트림으로 읽어냅니다.


V1 모드에서 문자 코드 변환기로 동작하는 CCV 레지스터는

V2 모드에서 WID 레지스터로 동작하며, 요놈은 기능이 전혀 다릅니다.

폰트의 가로폭 처리 시, VRAM 주소의 옵셋을 얻어옵니다.

그러니까 폰트를 그린 후, 다음 VRAM 주소값을 계산하는 용도로 쓰이는거죠.


CP949에서는 ASCII 문자가 한글/한자 폭의 절반으로 되어있어서,

S/W가 폰트의 폭을 이미 알고 있습니다. VRAM 주소를 계산하는데 H/W 도움이 필요없죠.


근데 유니코드의 폰트는 모양에 따라 폭이 결정되니까,

이걸 기반으로 VRAM 주소를 계산하도록 도와주는 레지스터 WID가 필요하게 되었네요.

BPP에 맞춰 값이 출력되기 때문에 포트에서 읽은 값을 기존 주소값에 더하면 끝입니다요.


그 외 BPP, PX12 등의 폰트 설정은 V1, V2 방식은 똑같구요.

CNV 설정은 V2에서도 변경이 가능하지만, 컨버터 데이터를 읽을 때는 V1 모드로 전환해야합니다.

코드 컨버터를 사용해야하는 경우가 어차피 CP949 또는 조합형 코드를 사용하는 경우일테니...

이렇게 해도 별 무리는 없을거에요.



그럼, 유니코드의 WID 레지스터를 활용하는 프로그램의 동작 모습을 보시죠.





폰트팩 V2 카트리지의 개발은 요렇게 마무리되겠습니다~


2021년 10월 20일 수요일

FontPack 제작 #12 - 유니코드 용 폰트 넣기

유니코드는 다국어 기본 평면(BMP, Basic Multilingual Plane)이 필요합니다.

부가 평면을 추가해도 되겠지만, 현재 MSX 활용 상황(ㅋ)를 볼 때 BMP만 있어도 충분할 것 같네요.


아래 그림이 폰트팩에서 실제 사용하는 유니코드(BMP) 폰트를 그림파일로 추출한 것입니다.




참고로, CP949 코드의 폰트는 1/4 정도의 영역만 사용합니다.




폰트 크기는 기존 폰트팩 V1과 같은 사이즈인 16 x 16 및 12 x 12 픽셀을 사용합니다.

BMP의 U+0000 ~ U+FFFF 문자를 16 x 16 사이즈의 비트맵으로 만들면 용량이 2MB가 됩니다.

결국 폰트팩 V2에서는 플래쉬롬의 4MB가 유니코드 폰트로 쓰이게 되는거죠.



폰트롬을 생성하는 방법은 FontPackTool 2.0 프로그램을 이용합니다.

기존 버전에서 유니코드 용 폰트를 선택하는 기능과 V2 롬을 생성하는 버튼이 추가되어있습니다.


고정폭의 폰트를 써야하니까 선택의 여지가 별로 없는건 똑같아요 ㅎ.ㅎ

굴림체, 돋움체, 바탕체, 궁서체 4개입니다.





V1 ROM으로 생성하면, 2MB의 파일이 나오구요. V2 ROM일때는 8MB입니다.

아래는 폰트팩 V2 롬을 다운로드 하는 모습입니다.

FONTPACK.COM 프로그램은 V1, V2 카트리지를 자동인식해서 동작합니다.

사용자가 따로 옵션에 신경 쓸 필요는 없어요.





기존 V1의 기능들은 이미 동작모습을 보셨으니, 유니코드가 제대로 동작하는지만 보겠습니다요~


U+AC00 문자입니다. 한글 영역입니다.




U+9752 문자입니다. 한자 영역이죠. 잘 나오네욤 ㅎ.ㅎ





이번엔 유니코드를 지원하는 프로그램에서 어떻게 출력되는지 봅시다요!

테스트 용으로 쓰인 문서는 첨부파일로 넣었으니 참고하시구요. (UTF16-LE 인코딩)

Download: UTF16LE.TXT


한글문서 뷰어인 HV의 동작 모습입니다.

아래는 기존 폰트팩 V1을 썼을 때의 출력입니다.

폰트팩에서 유니코드를 CP949로 코드변환을 지원합니다만...

CP949에 존재하지 않는 문자는 출력이 되지않겠죠.




아래는 폰트팩 V2의 유니코드 폰트를 이용하여 제대로 출력된 모습입니다.




음... 사진의 문자열이 익숙한 분이라면, 마츠다 세이코의 노래도 잘 아시겠네요 ㅎ.ㅎ

(노래 듣는데 제목이 제대로 안보여서, 폰트팩 V2를 만들었다는 소문이...ㅋ)



그럼, 편안한 밤 되세요~ ㅎ.ㅎ


2021년 10월 16일 토요일

FontPack 제작 #11 - V2로 업그레이드

한글 FontPack 카트리지라고 들어보셨나요?ㅋ

요게 6년전에 만든건데요. 이제 다음 버전으로 가야될 타이밍이 된 것 같아요.


이번 폰트팩 V2에서는 유니코드 폰트가 추가됩니다.

물론 기존 폰트팩에 Unicode to CP949 코드 변환기가 있지만,

CP949 코드에 없는 한자, 특수문자는 표시가 불가능하거든요.

최소한 MP3의 ID3v2의 유니코드 문자열이라도 제대로 보여주면 좋을 듯 해서요~ ㅎ.ㅎ






기존 폰트팩 V1은 1MB 플래쉬롬 두개에 이리저리 구겨 넣었는데요.

폰트팩 V2는 8MB 플래쉬롬을 사용합니다.

롬의 하위 2MB는 기존 V1과 용도가 같습니다.

바꿔 말하면, 기존 V1의 기능을 그대로 갖고 있다는 얘기죠.


SRAM은 32KB로 줄였습니다.

유저폰트를 만들어서 활용하는 경우가 없어서요. 사실 저도 안쓰고 있... ㅎ.ㅎ;

BIOS 용 8x8 2KB 폰트램(SRAM) 기능은 기존과 똑같이 동작합니다.


그 외, V1 보드에서 BUSDIR 신호를 빼먹었던건 넣어놨구요ㅋ



일단 보드가 바꼈으니, 기존 기능들이 제대로 동작하는지 확인해보아요~


기본 2MB 롬(BIOS + FONT)을 다운로드 하는 모습입니다.





조합형 폰트는 아래처럼 잘 나오네요.

HV에서 ISS 가사 파일을 읽은 모습입니다.





완성형 폰트도 나오구요.





12 x 12 사이즈의 작은 폰트도 잘 나오네요.





DOS2에서 ANSI5 모드로 전환한 모습





이건 ADIR(ANSI DIR)을 실행해본 모습입니다.





그럼, 즐거운 주말 되셔요!



2021년 10월 10일 일요일

[MV] 걸그룹 불황을 이겨보아요~ ㅎ.ㅎ

이어지는 COVID-19 판데믹으로 걸그룹 활동에도 찬바람이 불고 있네요.


에이X크 -> 올해는 컴백 안하는 듯요. 연차도 많아서 뭐..ㅋ

러블X즈 -> 이번 11월 계약만료인데, 재계약 소식도 없고 컴백도 없었네요.

여자X구 -> 이미 공중분해 -_-


.

.

.


이럴 때는 옛날 노래를 들어보아요~ ㅎ.ㅎ

30년전 Wink 누님말고, 더 뒤로~ 뒤로~~ 성자(松田聖子) 이모님으로!!ㅋ





유투브에서 음방 영상을 몇개 받아서 MMC/SD용으로 변환했습니다.

파일용량이 크니까 구글 드라이브에서 받으셔요~

총 5개입니다.


https://drive.google.com/drive/folders/1kDPodCJKzot6kKYQeITOKSAtALgbrwfh?usp=sharing



V3,V4가 없거나 실기구동이 귀찮으신 분들은 아래 영상으로 간접 체험을 하시면 되겠습니다요.


00:00 青い珊瑚礁 (1980.07)

02:57 Eighteen (1980.10)

05:08 小麦色のマーメイド (1982.07)

06:59 夏の扉 (1981.04)

10:33 風は秋色 (1980.10)


그럼, 이만...


2021년 10월 5일 화요일

30년 전 Wink의 추억

국,중딩 시절에는 외국 팝음악을 많이 들었는데요.

아버지가 자주 들려주시던 70년대 유명했던 아바, 비지스, 비틀즈 같은 분들이랑,

80년대 아하, 모던토킹, 왬, 마돈나, 마이클잭슨 등의 분들이 생각나네요 ㅎ.ㅎ


사실 국내 가요는 별로 듣지 않았는데요.

당시에는 국내랑 외국음악의 차이가 넘사벽 수준이라...

진짜 좋아하던 노래가 아니면 일부러 듣지는 않았던 것 같네요 ㅎ.ㅎ;


그러다 중딩 때 우연히 일본 애니 음악들을 들으면서 J-Pop을 접하게 되었네요.

.

.

.

그리고 90년 어느날 애니 음악이 아닌 노래를 하나 듣게 됩니다.

중3때 처음 들었던게 이 노래였어요.





노래 제목은 '淋しい熱帯魚'입니다.

당시 처음 들었을 때엔 진짜 '헉'소리가 나올 정도로 충격이었죠.

노래를 부른 누님(?)들이 Wink라는걸 알게 되서, 그 때부터 J-Pop 아이돌쪽으로도 눈이 가게 되더라구요.

고딩때까지 Wink, CoCo, 사카이 노리코 등의 노래들을 들었지만, 주로 듣던 건 Wink였습니다.


우리입장에서는 Wink 노래에 접근이 쉬웠던 이유가 하나 있는데요.

이 누님들 노래 대부분이 외국 팝송의 번안곡이었거든요. 아마 70% 정도 될겁니다.

물론 위의 淋しい熱帯魚처럼 좋은 오리지널 곡들도 있었구요.


이미 어느정도 히트했던 곡들이고, 이미 원곡을 알고 있는 경우도 많아서 듣는데 부담이 별로 없었죠.

60~80년대 유행했던 노래들을 Wink 스타일로 듣는 것도 나름 신선했습니다.










요상한 안무 컨셉으로 뇌정지가 올뻔한 적도 많았지만, 노래들은 참 좋았었지요.

중고딩 시절에는 많이 들었었는데, 몇년 안가서 인기가 시들해지더라구요.

아이돌의 숙명인가...ㅋ


90년 중반으로 넘어가니 들을만한 아이돌 가수도 안나오고해서 이바닥(?)을 떠나게 되었습니다요.

아이돌 노래는 접고, ELT, TUBE, 안전지대, 차게&아스카 이런쪽으로 방향을 돌렸었죠. ㅎ.ㅎ


90년 후반에는 마츠다 세이코, 나카모리 아키나 같은 예전 아이돌 노래라도 들어볼까 했는데,

그냥 포기했던 기억도 나네요ㅋ


암튼 가끔 Wink 노래들을 듣다보면 중딩, 고딩 시절 기억들이 되살아나서 참 좋습니다요.

잠자고 있던 뇌세포들이 깨어나는 느낌? ㅎ.ㅎ



마지막으로 Wink의 번안곡이 아닌 오리지널 곡으로 모은 영상을 하나 올려봅니다.

Wink에 관심이 없으셨으면 이미 브라우저 '뒤로가기'를 누르셨을 테고,

Wink의 추억이 있으신 분이라면 히트했던 번안곡들은 지겹게 들으셨겠죠?


멤버가 솔로로 부른 곡도 몇개 포함해서 엄선했습니다.

예전 기억으로 고른 것들이라, 영상 올리고 보니 누락된 노래도 좀 있네요. 아쉽아쉽..ㅋ


30년 전 Wink의 추억을 가지신 분들께 이 영상을 바칩니다요~ ㅎ.ㅎ




그럼 이만...


2021년 9월 10일 금요일

MoonBase - 달기지 이동 중...



MoonBase 보드가 완성되었습니다.

케이스 작업 및 배송은 맛탱이님께서 해주시겠습니다.

추석 연휴 후 배송될 예정입니다~ ㅎ.ㅎ


2021년 9월 5일 일요일

실기에서 에뮬로~ 다시 실기로!

지금으로부터 20년전, 한참 에뮬에 미쳐있던 시절...

다시 MSX 실기로 돌아가게 된 계기가 된 사건이 있었습니다.

.

.

.

그 보다 먼저 처음 컴퓨터를 만져본 시절부터 적어봅니다요.

글만 주르르~ 나오니깐, 바쁘신 분은 나중에 읽어보셔요 ㅎ.ㅎ;



[실기를 처음 만지다]


제가 컴퓨터를 처음 만져본 때는 국3년 때였구요.

친구집에 놀러가서 애플2 기종을 보게 되었는데요. 아마 애플 정품은 아니고 복제품이었을겁니다요.

디스크 넣고 게임 돌리는게 전부였지만, 키보드 만지는 것만으로도 신기했었지요 ㅎ.ㅎ


국4년 때 컴퓨터부(클럽활동 같은)에 들어가면서 본격적(?)으로 컴퓨터를 만져보게 되었습니다.

PC실에는 아이큐1000, SPC-1000, FC-30 세 종류가 섞여있었는데, 저는 주로 SPC-1000 자리에 앉았었죠.

본체에 카세트가 붙어있어서 멋지구리했었지요.

사실 선생님이 알려주시건 진짜 기본적인 BASIC라서, 기종이 달라도 별 지장이 없었습니다.

FC-30의 BASIC 에디터가 좀 그지같아서 애들이 좀 싫어했던 것만 기억나네요.

PC실에 늦게 도착하면 빈자리가 항상 FC-30쪽이었죠ㅋㅋ


그렇게 컴퓨터의 맛(!)을 보게된 후, 부모님을 졸라서 컴퓨터학원을 다니게 되었지요.

학원에 교실이 4개가 있었는데요.

SPC-1000반, 아이큐1000반, 책상만 있는 강의실(?) 그리고 주산반이 있었어요.

1년 지나니까 주산반이 없어지고 슬롯 구멍 막힌 아이큐1000반으로 바뀌더라구요.

학원의 메인 스트림(?)은 MSX였습니다.

RGB 모니터가 붙은 아이큐2000도 한대있었고, 그 외 CP/M 전용기도 한두대 있었구요.


제 방에 아이큐2000 + FDD + RGB모니터 풀셋이 들어오던 날, 진짜 하늘을 날아갈 듯한 기분이었지요.

학원에서 자연스럽게(!) 아이큐1000으로 수업하면서, MSX BASIC 전용 명령어들을 제대로 배웠습니다.

아마 국딩 때 그래픽이나 스프라이트 명령을 써보셨으면 다 같은 생각을 해봤을거에요.

"아~~ 나도 열심히 하면, 코나미 게임같은걸 만들 수 있겠구나!"


하지만 중딩이 되어 어셈블리를 뚝딱거릴 때쯤엔 한계를 알게 됩니다.

"역쉬 내 실력으로는 무리구만..."

삽질하는 시간에 코나미/팔콤 아자씨들이 만든 게임을 열심히 하는게 더 가성비(?)가 맞는거죠ㅋㅋ

그래도 그 시절 머리를 굴려가면서 이리저리 프로그래밍하던 건 잼났습니다.


돌이켜보면 아이큐2000을 미친듯이 만졌던 시간이 불과 몇년이 되지않더라구요.

중3 때 쯤엔 MSX 보다 XT를 가진 친구들이 더 많아지는 슬픈 일이 ㅠ.ㅠ


고딩때는 밤늦게까지 학교에 잡혀있다보니, 집에서 가끔 게임 한두판 해보는 정도였네요.



[에뮬의 세계로]


그렇게 시간이 흘러 대학생이 됩니다.

주로 486 PC를 쓰다보니, 아이큐2000을 켜는 시간이 거의 없었습니다.

마지막으로 BASIC, 어셈 코딩을 해본게 언제인지 기억도 안나네요 ㅎ.ㅎ


그러다가 MSX 에뮬레이터가 갑자기 뜨게됩니다.

유럽산 에뮬도 있고, 브라질산도 있었구요. 물론 국내에서 제작된 것도 있었지요.

fMSX 제작자가 유닉스용 소스를 공개해서, DOS, WIN3.1 등 다양한 포트가 나왔습니다.

DJGPP 컴파일러를 써서 DOS로 포팅해서 잼나게 놀았었지요.

486으로도 풀프레임 속도가 안나왔다는게 함정이지만...

고딩 때는 에뮬이라는 개념자체도 없었느니, 당시엔 엄청난 충격이었죠.


그러다 96년 군입대를 했구요. 98년 여름에 제대하고 돌아오니... 이젠 MAME의 시대가 ㄷㄷㄷ

PC 환경도 DOS에서 윈98로 확 바꼈구요.

그렇게 20세기말까지는 온갖 에뮬레이터가 쏟아져서 정신없었습니다.

저도 대세에 맞춰 fMSX의 윈도 포트(paraMSX)를 만들었구요.

에뮬로 게임들의 동작을 분석하면서 한동안 재밌게 보냈었지요.


이 시절에는 아이큐2000을 켜는 이유가 딱 하나 뿐이었습니다.

VDP, FDD 등의 에뮬동작 확인 용으로요ㅋ

MSX2+ 에뮬 수준으로 왠만한건 다 해볼수 있어서, 그 때 머리속엔 이거 하나뿐이었습니다요.

"에뮬 짱!"

참고로 터보알은 아는게 없어서 관심도 별로 없었어요.

그냥 "환영도시 구동기" 정도의 느낌? ㅎ.ㅎ;


이제 2001년이 되어 회사를 다니게 됩니다.

paraMSX v0.32 릴리스를 마지막으로 에뮬은 정리하고 MSX를 잠시 잊게 됩니다요.

대신 기념으로 A1WSX를 한대 마련합니다.

에뮬레이터를 만드는 사람에게 MSX2+ 본체 한대는 있어야 뭔가 말이 되는 것 같아서요. (무슨 말인지..ㅋㅋ)


그 후 에뮬관련으로 들어온 요청들을 처리하면서,

마지막이라는 생각으로 paraMSX v0.42를 릴리스합니다.

2002년 쯤이군요. 뭐, 그 때는 에뮬로 더 해볼게 없다고 생각했어요.

사실 디아블로 하느라 정신이 없..ㅋ



[다시 실기로]


으흐흐... 여기서부터가 메인입니다.


갑자기 실기로 DOS2를 써보고 싶더라구요.

90년대에 MSX로 끝까지 가보신 분들은 MEGA-SCSI, 선라이즈 IDE 등으로 HDD를 써보셨겠지만,

저는 그 때 에뮬만 만지느라 실기에 관심이 없었습니다요~


암튼 A1WSX의 본체 메모리를 512KB로 늘리고 DOS2 커널롬 카트리지를 만들어서 테스트해봅니다.

역시 느린 FDD로는 그닥 느낌이 없네요. PASS~!


그.러.던. 어느날

옥션 알림이 옵니다. 헠... 키워드 등록을 'GT'로 해놨는데!!

후다닥 옥션에 로그인해서 즉시구매 눌러버렸어요. 괜히 생각하다가 늦으면 꽝이니까요.

그렇게 GT를 구하게 되었습니다. 하핫~


이것 저것 테스트해보니 와우~~ 정말 빠르네요.

터보알 에뮬레이터를 이미 써봤지만, 그게 실기랑 얼마나 차이가 있는지 알수가 없었거든요.

GT를 구하게 되어 진짜 성능을 보게되니, 후덜덜 했습니다.


한동안 SC-88도 놀고 있었는데, MSX랑 붙여서 음악 듣는 것도 재밌었구요.

WSX는 PC 용 TV수신카드에 S-Video로 붙여서 썼는데, GT를 이렇게 쓰는건 아닌 듯 해서...

15인치 LCD TV를 한대 구해서 RGB 15KHz로 개조합니다.

아이큐2000에 물렸던 RGB 모니터는 갖다버린지 몇년 됐던터라,

MSX의 깔끔한 RGB 화면을 오랫만에 보니까 기분이 좋더라구요.


갑자기 뭔가 느낌이 옵니다. "GT를 제대로 써봐야겠다"

디아블로2도 지겹던 때라 뭔가 타이밍이 딱 맞았어요.

아마 와우(World of Warcraft)가 2년만 일찍 나왔으면, 제가 뭔가 많이 달랐을겁니다ㅋ


GT가 겁나 빠른데, 느린 FDD로는 제대로 쓸 수가 없었죠.

뭔가 HDD 인터페이스를 구해야 되겠더라구요.

근데 당시에 MMC 메모리가 유행하던 때였습니다.

이걸로 MSX 용 디스크드라이브를 만들어보기로 합니다.

에뮬은 지겹도록 만졌으니까, 디스크 SW만드는 건 별일이 아니었는데...

당시에 MMC 관련자료를 구하는게 쉽지않더라구요.


결국 SPI 프로토콜로 구동하는 방법을 겨우 찾아서 "MMC Disk Interface"를 완성하게 됩니다.

회로도랑 SW를 공개해서, 유럽 아자씨들도 자작해서 쓰고했었죠.

MRC에 올렸다가 "왜 바퀴를 또 발명하냐?" 핀잔도 듣고 그랬던 추억이ㅋ


이 때부터 GT를 본격적으로 만지게 됩니다.

만약 91년에 이렇게 썼더라면 정말 재밌는 MSXing라는 생각이 들더라구요.

혹시 그 시절에 터보알과 아스키 HDD 인터페이스를 써보신 분 계세요? ㅎ.ㅎ


암튼 몇년이 흘러 준소프트님의 MPX 카트리지가 나오게 됩니다.

MSX에서 MP3 플레이를 할 수 있게되었지요.

기존 MMC Disk로는 224kbps MP3 정도가 한계라서, 속도를 개선한 MMC/SD V2를 만들게 됩니다.

MSX로 320kbps 들을 수 있게되니 좋더라구요. 이 때가 2007년말이었죠.


MMC/SD V2를 만든 후 느낀점이 "역시 GT는 빠르다"입니다.

디스크만 빨라져도 훨씬 쾌적한 환경이 되네요.


이제 저의 MSX 활용 방향을 정하게 됩니다.

터보알을 제대로 쓰기 위해, S/W 개발환경도 다시 만들어야겠더라구요.

터보알은 본체 내장 메모리에서 코드가 구동되어야만 고속모드 효과를 볼 수 있습니다.

외부 슬롯은 호환성 때문에 버스가 3.58MHz로 구동되느라, 고속모드에서도 별로 빠르지 않아요.

그 때문에 외부 슬롯에서 구동하면, R800 고속모드 보다 WSX의 반터보(5.37MHz)가 오히려 더 빠릅니다.


암튼 S/W 동작환경을 DOS2로 맞춰 만들게 됩니다.

메모리매퍼를 코드 뱅킹으로 구현하고, DATA/BSS 영역을 로컬뱅크와 공통 영역으로 구현합니다.

관련 내용이 궁금하시면 'DOS2용 SW개발시 메모리 활용방안'으로 검색하시면 예전에 쓴 글을 볼 수 있어요.

(오래된 글이라 현재 최종상태와 차이가 있음을 미리 알려드립니다요ㅋ)


그렇게 S/W 환경이 대충 완성된 후 다음 단계로 넘어갑니다.

"필요한 H/W도 직접 만들어보자" 단계죠 ㅎ.ㅎ

FontPack을 시작으로 MMC/SD V3, paraMSX-R, PAC-V 등등 줄줄이 비엔나로 나오게 되었습니다요.


그 후로 저의 실기 생활은 비슷하게 쭈욱~ 이어지고 있네요.


긴 글 읽어주셔서 감사합니다요! ㅎ.ㅎb

즐 MSX 하셔요~

2021년 8월 10일 화요일

[강좌] 08. 디스크 게임의 실행환경 만들기

디스크 전용 게임(2DD/1DD)들은 FDD에 디스켓을 넣고 전원을 켜면 게임이 실행됩니다.

뭔가 더 필요할까요?ㅋ

.

.

.

지금부터 얘기하려는 내용은...

아마 십여년 전부터 MMC/SD를 쓰신 분들이라면 잘 아시는 내용이겠지만,

읽다가 금시초문이라고 하실 분이 분명히 계실 듯 해서 적어봅니다 ㅎ.ㅎ

기억이 가물가물하셨던 분이라면, 글 마지막의 [요약]만 보고 넘어가시면 되겠습니다.



[본론]


80년대 FDD를 쓰셨던 분들의 대부분은 아마 아이큐2000 + FDD 또는 X-II 환경이겠죠?

FDD가 내장된 X-II 및 일제 MSX2/2+를 본체 그대로 쓰면 그대로 완벽한 환경이 되겠습니다.


90년대부터는 상황이 좀 바뀌기 시작했는데요.

쯔지가와씨의 MEGA-SCSI, 선라이즈 IDE 등의 외장 디스크기기가 널리 쓰였구요.

제가 만든 MMC/SD 드라이브는 2004년에 등장하면서 국내에서 많은 분들이 쓰기 시작했습니다.


이제 슬슬 문제가 발생합니다.

보통 대용량 디스크 기기에서는 기존 2DD 게임을 구동하기 위해,

DSK 파일(디스크 섹터를 덤프한 이미지)을 FDD에서 쓰는 것처럼 에뮬레이션을 하게되는데요.


FDD는 드라이브 문자가 2개(A: B:)인 장치입니다.

디스켓 구멍이 하나뿐인 싱글 드라이브를 쓰더라도 가상의 B: 드라이브가 생성이 되어서,

디스크를 사용하는 S/W입장에서는 둘을 구분하지 않습니다.


요즘 많이 쓰시는 MMC/SD V4의 경우, 번들된 SD카드는 파티션이 6개가 있으니까...

드라이브 A: ~ F:가 할당이 됩니다.

이 상태에서 DSK 파일을 구동하면?

기기가 FDD 에뮬모드로 전환되면서 DSK 이미지를 드라이브 A: B:로 매핑해줍니다.

다른기기들의 에뮬도 비슷한 방식으로 구동하고 있을거에요.


여기까지만 보면 FDD를 쓰는 경우와 별차이가 없는데요.

특히 아이큐2000처럼 본체에 FDD가 내장되지 않은 경우는,

일반 외장 FDD를 쓰는 경우와 대용량 디스크기기의 FDD에뮬 모드의 동작이 거의 같습니다.

실사용에서도 문제가 발생하지 않습니다.


하지만, FDD가 내장된 본체를 사용하게 되면 큰 문제가 발생하는데요.

S/W 구동 시, 에러를 표시하지않고 그냥 뻗어버리거나, 그래픽이 깨지는 등의 문제가 발생합니다.


이 문제는 디스크 커널의 특성과 거기 맞춰서 개발된 S/W의 문제가 모여서 발생합니다.


보통 DOS1 롬이라고 부르는 디스크 커널은 부팅할 때, WORKAREA에 필요한 메모리를 할당 후 사용합니다.

이 때 약 3KB가 사용이 되구요, FDD를 여러개 사용하면 그만큼 메모리 사용량도 늘어납니다.

본체에 FDD가 내장되어있는데, 외장 디스크를 추가연결하면 6KB가 소진되는 셈이죠.


근데 대부분의 디스크 게임들은 FDD 한개를 사용하는 환경을 기준으로 제작이 되어있습니다.

따라서, FDD를 여러개 꽂아서 WORKAREA가 많이 소진된 상태에서는?

스택(STACK) 영역이 부족하다보니, 힙(HEAP)과 스택이 충돌하는 상황이 발생하는거지요.

게임 구동 중 오동작하거나 그냥 멈추는 모습(?)으로 나타납니다.


그러면 디스크 기기가 2개 이상인 경우는 게임을 실행할 방법이 전혀 없는걸까요?

그건 아닙니다 ㅎ.ㅎ


모든 디스크롬에서는 공통으로 지원되는 기능이 하나 있는데요.

부팅 시 CTRL 키를 누르고 있으면, 드라이브 A: 한개만 할당하고 넘어갑니다.

그러니까 FDD의 드라이브 B:가 사라지게 되는거죠.

이렇게 드라이브 문자가 한개 줄어들면 WORKAREA에 할당되는 메모리도 줄어듭니다.

약 1.5KB가 되어요.


참고로, 유저의 CTRL 키 입력을 기다리는 표시가 따로 나오지 않기 때문에,

이 기능을 쓰려면 본체를 켠 후(또는 리셋 후) CTRL 키를 계속 누르고 있어야합니다.


그럼, FDD 두대를 연결했을 때 CTRL 부팅을 하게 되면?

첫 FDD가 드라이브 A:로 사용되고, 두번째 FDD가 드라이브 B:로 사용됩니다.

결국 WORKAREA 사용량이 FDD 한대일때와 똑같아지는거죠.


만얀 FDD가 세대 이상 연결되어있다면?

CTRL 부팅을 해도 드라이브 A: B: C: 3개가 할당되어서 게임이 안돌아갈겁니다요~

결국 FDD 두대 정도는 항상 연결해놓더라도 크게 문제 없다는 얘기죠.


하지만 복병이 하나 있었으니ㅋ

코에이 게임처럼 메모리를 빡빡하게 사용하는 경우는,

처음부터 CTRL 부팅을 요구합니다.

FDD가 한대뿐인데도 CTRL키를 눌러야 실행이 됩니다. (램 1.5KB만 봐주겠다! 뭐 그런거죠)

이런 경우는 디스크 기기가 두대 이상 연결되어 있으면, 딱히 방법이 없죠.


제가 만든 MMC/SD의 경우는 OneDrive라는 기능이 있는데요.

이걸 쓰면 외부 슬롯(SLOT 1 또는 2)으로 DSK 에뮬모드로 진입 시,

본체 내장된 FDD가 구동되지 않도록 게임 디스크를 바로 부팅시킵니다.

그리고 CTRL 키를 누른 것 처럼 초기화를 합니다.

FDD가 한대뿐인 환경에서 CTRL 키를 누르고 부팅하는 것과 같은 조건을 만들어주는 것이지요.


제가 예전에 올린 사진이나 영상을 보시면 항상 MMC/SD V2 두개가 꽂힌걸 볼 수 있는데요.

이 상태에서도 게임을 구동할 수 있는게 OneDrive 기능때문이었습니다요.

그럼 이대로 상황종료?

.

.

.

그럴리가 있겠습니까요? ㅋ

또다른 복병 바로 마이크로캐빈의 게임인데요.

이넘들은 FDD 한대 그대로 부팅하는 상황(드라이브 문자 A: B: 유지)에서만 실행이 됩니다.

만약 내 본체에 FDD가 내장되어 있고, MMC/SD로 DSK 파일을 구동한다면?

OneDrive를 끄고 유저가 CTRL 부팅을 해주는 방법밖에 없습니다.

물론 본체에 FDD가 내장되지 않았다면, 그냥 OneDrive만 끄면 잘 실행되겠습니다.


마지막으로 보너스 입니다.

MMC/SD Drive V4에서는 GameRunner II라는 막강(?)한 환경을 제공합니다.

가상의 슬롯, BIOS, 디스크 등으로 구동되어, 본체의 주변기기 조건과는 별개의 공통 환경을 만들 수 있습니다.

예) 아이큐2000 + FDD 한대의 환경 구동



[요약]


- 대부분의 디스크 게임은 FDD 한대만 있는 환경에서만 실행이 됨

- FDD가 두대인 경우는 CTRL 부팅으로 해결가능

- FDD가 세대 이상이면 해결책이 없음

- MMC/SD Drive의 OneDrive 기능으로 추가된 FDD를 무력화 할 수 있음

- 코에이의 게임은 OneDrive으로 간편하게 실행가능

- 마이크로캐빈의 게임은 CTRL 부팅 시 실행안됨 (OneDrive OFF 필수)

- MMC/SD V4의 GameRunner II로 FDD 한개뿐인 가상의 환경을 만들 수 있음

- MMC/SD 외의 디스크기기로 구동하는 환경은 제게 물어보지마세요 (잘 몰라요)


2021년 8월 1일 일요일

MoonBase 제작 #5 - OPLL 용 PCM 드럼셋을 두개로~

플래쉬롬과 로직에 조금 여유가 있어서, PCM 드럼셋을 하나 더 추가해보았습니다.

약간 드라이(?)한 느낌 드럼셋입니다 ㅎ.ㅎ


먼저 사이코월드 오프닝 영상을 녹화해보았습니다.

첫 오프닝은 기존 드럼셋을 사용하구요. 두번째 오프닝은 추가된 드럼셋을 사용합니다.

비교해서 한번 들어보셔요~





아래는 MGS 파일 3개를 재생 후,

기존 드럼은 왼쪽 오디오로, 추가된 음원은 오른쪽 오디오로 편집해서 넣었습니다.

OPLL 멜로디는 양쪽이 같으니까 모노로 들리겠구요.

드럼 사운드는 스테레오로 들리겠습니다.


드럼 비교용으로 만든건데, 이렇게 들어보는 것도 재밌네요.

모노 오디오는 뭔가 좀 먹먹한 느낌이 있어요. 흐...

https://soundcloud.com/yeongman-seo/moonbase-drum-set-l-r-mgs-music



그럼, 즐거운 일요일 되세요! ㅎ.ㅎ


2021년 7월 18일 일요일

MoonBase 제작 #4 - 동작 모드

먼저 기존 MSX-Audio 기기들의 차이를 설명해드리는게 좋겠죠?


파나소닉 FS-CA1, 필립스 NMS 1205 (뮤직모듈), 도시바 HX-MU900 세종류의 카트리지가 있습니다.

모두 Y8950 칩과 32KB의 샘플램(ADPCM 용 SRAM) 내장이구요, 뮤직 키보드 용 커넥터가 있습니다.

기본 기능은 똑같다고 보시면 되겠네요.


* 파나소닉 FS-CA1 

Y8950 (OPL + ADPCM 32KB)

Audio BIOS: O

I/O Port 변경: O

MIDI: X

PCM u8: X


* 필립스 NMS 1205

Y8950 (OPL + ADPCM 32KB)

Audio BIOS: X

I/O Port 변경: X

MIDI: O

PCM u8: O


* 도시바 HX-MU900

Y8950 (OPL + ADPCM 32KB)

Audio BIOS: X

I/O Port 변경: X

MIDI: X

PCM u8: X


S/W 호환성(BIOS)을 고려하면 파나소닉이 최선의 선택지입니다만,

BIOS 보드 개조를 기본으로 가정하면, H/W 기능이 더 많은 필립스 NMS 1205가 좋습니다.

ADPCM 샘플램을 32KB -> 256KB로 증설하는게 기본 소양(?)이라서,

BIOS 보드(Audio BIOS 1.3 개조버전)도 함께 추가 해주는게 좋습니다요.

필립스/도시바 카트리지 용으로 개조 보드가 제작/판매된 적도 있었죠.


MoonBase의 기능은 아래처럼 정리가 되겠네요.

Ext.OPL + ADPCM 256KB: O

Audio BIOS: O

I/O Port 변경: O

MIDI: X

PCM u8: O

PCM s16: O


저는 필립스 NMS 1205의 샘플램이 256KB으로 개조되어있구요.

문사운드는 샘플램 1024KB 증설해서 사용하고 있습니다.


근데, 필립스 뮤직모듈의 출력이 좀 작은편에 노이즈가 좀 있어서,

항상 꽂아놓고 쓰기가 좀 애매하더라구요. (믹서 출력을 많이 높이다 보니..ㄷㄷ)

최근 5년정도는 거의 문사운드 하나만 꽂고 쓴 듯 합니다.

그러다보니, MSX-Audio 용 프로그램을 쓰려고 뮤직모듈을 꺼내기도 귀찮고 좀 그랬죠.


MoonBase를 제작하게 된 이유가,

문사운드(OPL4) 호환 기기는 흔하게 쓰이고 있으니,

"슬롯 낭비 없이 카트리지 두개를 합체해서 MSX-Audio 기기로 동작하도록 해보자"였습니다요~ ㅎ.ㅎ


그리고 듀얼 MSX-Audio를 쓰려면, 파나소닉의 FS-CA1 두개가 필요한데요.

MoonBase도 포트 변경이 가능하니, 필립스/도시바 기기와 조합으로도 쓸 수 있습니다.

포트 변경이 안되는 필립스/도시바 카트리지는 기존 포트 C0H/C1H 사용,

MoonBase는 C2H/C3H 포트를 사용하는거죠.


보통 C0H/C1H 포트가 기본(마스터)으로 쓰이기 때문에,

NMS 1205 + MoonBase + MoonSound 조합으로 구동하면 NMS 1205의 OPL + ADPCM이 기본포트가 됩니다.

.

.

.

듀얼 Audio를 쓰는 프로그램이 거의 없다는게 함정이지만요ㅋㅋ


그 외, 필립스 카트리지와 호환되는 Mono PCM u8 (unsigned 8bit)이 들어있구요.

Mono PCM s16 (signed 16bit)도 들어있습니다.

MMCSD.COM의 WAV 플레이어를 구동하면,

Mono/Stereo u8 WAV는 T-Wave로

Mono u16 WAV는 MoonBase로 출력가능합니다.




이제 본론으로 넘어가서...

MoonBase의 동작모드에 대해 알아보겠습니다요~


아래처럼 보드 왼쪽에는 3단 슬라이드 스위치가 있는데요.

부팅 할 때 스위치 위치에 따라 동작 모드가 결정됩니다.

일단 부팅 후에는 슬라이드를 움직여도 모드가 바뀌지는 않아요.

BIOS가 동작하는 도중에 바꾸면 죽으니까, 일부러 막아놨습니다ㅋ





각 모드의 설명 나갑니다~


* (상) BIOS FS-CA1 OPL with ADPCM


MoonBase + MoonSound(OPL4 호환) 카트리지 하나만 사용하는 경우 유용합니다.

파나소닉의 오리지널 BIOS와 ADPCM용 샘플 데이터 64KB롬이 동작합니다.

BASIC의 COPY PCM 등의 모든 명령어가 다 동작합니다.

단, MoonBase는 ADPCM 레코딩(encoder) 기능이 없다는걸 기억하시구요! ㅎ.ㅎ


FS-CA1와 같은 방식으로 포트 스위칭이 가능합니다.

만약 파나소닉 카트리지가 있다면, 함께 꽂아서 마스터/슬레이브로 사용가능합니다.

(참고: 빠른 슬롯에 꽂은 카트리지가 마스터가 됩니다.)



* (중) BIOS 1.3 OPL with ADPCM


개조 BIOS인 Audio BIOS 1.3 (HX-MU900 모드)을 사용합니다.

MoonBase + MoonSound(OPL4 호환) 단독으로 사용 시, C0H/C1H으로 구동됩니다.

필립스/도시바 카트리지에 BIOS 개조킷(+ ADPCM 256KB)을 장착한 것과 동일한 상태가 됩니다.

개조 BIOS는 ADPCM 샘플롬을 지원하지 않기 때문에 COPY PCM 등의 명령은 사용불가능합니다.

그 외 기능은 FS-CA1과 동일합니다.

개조 BIOS 문서 상에는 OPL 중복 처리 등의 코드가 제거(개선)되어 있다고 하네요.


만약 필립스/도시바 카트리지를 추가 장착하는 경우는

MoonBase의 포트가 C2H/C3H로 변경되어 슬레이브로 동작합니다.

저처럼, MoonBase + MoonSound를 기본 세팅으로 쓰다가,

뮤직모듈 추가해서 듀얼 ADPCM을 쓰는 시나리오에서 가장 유용하게 쓸 수 있겠습니다.


아래 사진은 GT의 슬롯1에 MoonBase + MoonSound를 꽂고

후면 확장슬롯에 필립스 뮤직모듈을 꽂은 상태입니다.





* (하) BIOS 1.3 OPL3 with OPLL Drum


개조 BIOS인 Audio BIOS 1.3 (OPL3 모드)을 사용합니다.

이 때는 MoonBase의 포트 포워딩(C0H/C2H -> C4H/C5H)이 비활성됩니다.

BIOS에서 직접 OPL3(OPL4)를 컨트롤하기 때문에 필요가 없죠.


근데 OPL3 모드에서는 ADPCM 관련 루틴이 제거되어있습니다. OPL3/OPL4 칩은 ADPCM이 없으니까요.

대신 MoonBase의 OPLL Drum 기능을 사용할 수 있습니다.

MSX-Music의 OPLL 리듬모드 I/O를 5채널의 PCM으로 변환해서 구동하는 모드입니다.

부드러운 FM 멜로디에 강력한(!) 드럼 소리가 추가됩니다.

YM2608의 FM + PCM 드럼 사운드와 유사한 방식입니다~ ㅎ.ㅎ



* OPLL Drum without BIOS


이 모드는 슬라이드 스위치 설정과 상관없이, 부팅 시 M 키를 누르면 선택됩니다.

Audio BIOS가 인스톨 되어있을 때 S/W 호환성 문제가 생기거나,

MSX-Audio를 지원하는 S/W에서 강제로 MSX-Music을 쓰고 싶을 때 쓰시면 됩니다.


예를 들어 제비우스처럼 MSX-Music과 MSX-Audio를 둘 다 지원하는 게임에서,

이 모드를 선택하면 MSX-Audio 사운드 대신 MSX-Music + PCM 드럼 사운드를 들을 수 있게됩니다.




[요약]


(상) BIOS FS-CA1 OPL with ADPCM

-> MoonBase + MoonSound 단독 또는 MoonBase 2개으로 사용 시.


(중) BIOS 1.3 OPL with ADPCM

-> MoonBase + MoonSound 사용 중, 필립스/도시바 카트리지를 추가 사용으로 듀얼 ADPCM 구동.


(하) BIOS 1.3 OPL3 with OPLL Drum

-> OPL3(OPL4) 모드를 주로 사용하고, Audio BIOS (ADPCM 제외) 및 OPLL 드럼 사운드 활용 시.


OPLL Drum without BIOS

-> Audio BIOS 호환 문제 회피 또는 MSX-Audio 대신 MSX-Music + OPLL 드럼으로 고정 사용 시.




MoonBase의 기본 정보는 요렇게 마무리합니다.

그럼, 즐거운 일요일 되세요! ㅎ.ㅎ


2021년 7월 15일 목요일

MoonBase 제작 #3 - OPLL 용 PCM Drum




음... 기억하시는 분이 있으려나요?

21년전ㅋ paraMSX 0.13 버전에서 FM 사운드가 처음으로 들어갔는데요.

그시절엔 OPLL 사운드를 합성하는 방법을 몰라서, 적당한 PCM으로 걍 때려넣었습니다.

FM 사운드가 이상하다는 피드백이 난무했었지요...ㅎ.ㅎ


갑자기 이 얘기를 왜 했냐면요~

그 때 넣었던 FM Drum을 이번에 또 만들었거든요ㅋ


MSX-AUDIO, OPL4 모두 훌륭한 사운드를 만들어내지만,

대부분 게임에서는 MSX-MUSIC (OPLL)을 활용합니다.

이런 경우는 MoonBase랑 MoonSound를 합체해봐야 전기만 먹을뿐이겠죠? ㅎ.ㅎ


그.래.서.

MoonBase의 동작 모드를 하나 더 추가했습니다.

OPLL에 어울리는 드럼 사운드를 만들어내는거죠. PCM으로요!


근데 FM 사운드에 PCM 드럼을 섞는게, 이미 오래전부터 익숙하실겁니다요.

YM2608, YM2610 같은 칩의 음악을 많이 들어보셨을꺼에요.

MoonBase는 내장된 PCM음원으로 드럼 소리를 만드는거니까,

구조적으로는 YM2608쪽에 더 가깝겠네요.


MoonBase의 드럼 샘플은 44.1KHz 8BIT MONO PCM으로 들어갑니다.

본체의 OPLL 사운드와 드럼 사운드가 적당히 밸런스가 맞아야 듣기 좋으니까,

드럼 출력레벨을 8단계로 조절할 수 있도록 해놨습니다.

제 GT 기준으로 레벨4가 적당한 출력이 되도록 레벨 테이블을 만들었습니다.

쓰시는 FM내장 기종 또는 외장 FMPAC에 맞도록 조절하시면 되겠네요.


MoonBase의 왼쪽에는 3단 스위치가 있습니다.

이걸로 BIOS 또는 ADPCM / PCM 드럼 선택이 가능합니다.

자세한건 다음번에서 소개해드리겠구요.

이번엔 PCM 드럼 소리만 영상으로 감상하시죠.


영상에서는 OPLL 사운드를 쓰는 오리지널 Fire Hawk 버전과

Audio BIOS 1.3을 지원하도록 패치된 Fire Hawk 버전을 함께 사용했습니다.

영상 데모는 아래순으로 진행됩니다.

1. OPLL 사운드

2. Audio BIOS 1.3 OPL3 사운드

3. OPLL + PCM Drum 사운드

4. 외부 믹서 조절






그럼, 다음편에서 뵈어요~ ㅎ.ㅎ


2021년 7월 10일 토요일

MoonBase 제작 #2 - MoonSound와 합체

테스트 용 PCB가 나왔네요~ ㅎ.ㅎ




S/W 입장에서 본 MoonBase 카트리지는 기본적으로 MSX-AUDIO 호환입니다.

Y8950 칩 대신,

- 외부 OPL4 카트리지에서 Sec.FM 파트를 가져오고

- MoonBase에서 ADPCM-B 파트를 구현해서

합체합니다.


MSX-AUDIO의 I/O 포트는 C0H 및 C1H 주소를 사용하는데요.

MoonBase도 동일한 주소를 제공합니다.

만약 컨트롤 레지스터 번호가 20H ~ FFH 영역(FM 파트)이 되면,

외부 슬롯 커넥터쪽의 C6H, C7H 포트로 컨트롤이 전달됩니다.

결국 외부 OPL4 카트리지의 Sec.FM 파트가 동작하게 되는거겠지요.


실제 사용 시, 아래처럼 MoonBase 위에 OPL4 카트리지를 장착합니다.

OPL4의 오디오 출력을 MoonBase로 입력하면 ADPCM과 믹스되어 최종출력됩니다.

오디오 밸런스는 문사운드 카트리지를 기준으로 되어있구요.





MSX-AUDIO 파트는 더 이상 설명이 필요없겠네요.

그냥 영상으로 보시죠~ ㅎ.ㅎ


세가지 뮤직/데모 디스크를 구동하는 모습입니다.

먼저 MSX-AUDIO 전용인 Muzax3, Impact4의 영상이 나오고,

마지막으로 MSX-AUDIO과 MSX-MUSIC을 함께 쓰는 Unknown Reality의 영상이 나옵니다.





그럼, 다음편에서 뵈어요~ ㅎ.ㅎ


2021년 6월 25일 금요일

MoonBase 제작 #1 - 달기지 건설

작년에 T-Wave를 만들었는데, 이번엔 조금 다른 사운드 카트리지를 만들어봅니다.

카트리지 이름은 'MoonBase'로 지었습니다. 우리말로 하면 '달기지' 정도?ㅋ



[서론]


PSG, PPI 1BIT 사운드는 MSX1부터 기본으로 들어간 사운드인데요.

그 후 MSX-AUDIO, MSX-MUSIC가 표준기기로 추가되었습니다.

나중에 90년대에 선라이즈가 OPL4 칩을 이용한 MoonSound 카트리지가 등장했구요.


근데 MSX-MUSIC 경우는 본체에 내장된 기종이 나올 정도로 보편화되었지만,

MSX-AUDIO는 사용자가 많지 않았습니다.

나중에 나온 저가형 MSX-MUSIC에 완전히 밀려버렸지요 ㅎ.ㅎ


MSX-AUDIO는 기본 OPL 사운드에 4BIT ADPCM 입출력, 뮤지컬 키보드, 미디 입출력까지 들어간...

좀 후덜덜한 외장 기기였습니다.

ADPCM 샘플 메모리는 기본 32KB가 내장이고, 최대 256KB로 증설가능합니다.

당시 많은 MSX1 기종의 메인램이 32KB였던걸 고려하면, ADPCM 기능 하나만으로도 좀 오버스펙이었습니다요~

필립스의 MSX-AUDIO인 MusicModule 카트리지에는 8BIT PCM 사운드도 추가되어있었구요.


유럽쪽은 뮤직모듈이 흔해서 그랬던걸까요? 유저들이 만든 MSX-AUDIO 용 뮤직 디스크가 꽤 있습니다.

물론 Unknown Reality 같은 유명한 데모에서도 ADPCM을 들을 수 있죠.

"Jump Jump~" 목소리가 나오는 데모는 샘플램이 256KB가 아니면 플레이 안되고 스킵됩니다 ㅎ.ㅎ

이거 들으려고 뮤직모듈을 사자마자 뜯어서 램 추가했었지요~


그 후 문사운드를 구해서 IMS, MOD 등을 주로 듣다보니, MSX-ADUIO쪽은 좀 멀어지긴했네요.

물론 MPX로 MP3를 듣는 시간도 꽤 늘었구요.

.

.

.

그렇게 수년이 흘렀습니다.

2016년 정모때였나요? 준소프트님이랑 잠깐 얘기나눴던 기억이 나네요.

그게 "ADPCM을 추가해서 만드실 계획은 없나요?"였죠.


문사운드의 OPL4는 기본적으로 OPL, OPL2, OPL3 하위 호환이 됩니다.

MSX-AUDIO의 Y8950 칩은 OPL에 ADPCM과 GPIO가 추가되어있는데요.

OPL4에 ADPCM을 추가하게 되면, 굳이 두개 카트리지를 꽂을 필요없이 하나면 충분하겠죠?

구하기 힘든 MSX-AUDIO 보다는 OPL4를 확장하는게 더 쉬우니까요.


이제 2021년입니다.

그렇게 목마른 사람이 우물을 파는 해가 되었습니다 ㅎ.ㅎ




[본론]


MoonBase의 기본(최소) 기능은 Y8950의 4BIT ADPCM 출력입니다.

(그 외의 부가기능은 다음편에서 알려드리겠습니다요)


야마하 사운드칩에서 흔하게 보이는 ADPCM은 두종류가 있는데요. ADPCM-A, ADPCM-B이죠.

Y8950에 들어간 놈은 ADPCM-B입니다.

최대 16KHz 출력이 가능하구요.

샘플램 256KB를 다 채우면, 16KHz 샘플을 32초 동안 플레이가능합니다.

8KHz 정도의 낮은 음질이라면 64초를 버틸 수 있겠네요.


기본 환경은 ADPCM을 문사운드의 OPL4와 조합해서 MSX-AUDIO + OPL2 환경으로 만들어주는겁니다.

OPL4를 Full로 사용하는 S/W는 MSX-AUDIO의 OPL를 함께 쓸 확률이 없으니,

이렇게 조합하면 여러가지로 활용이 가능하겠죠?


MSX-AUDIO는 최대 두개의 카트리지를 쓸 수 있습니다.

Primary는 C0H, C1H 포트를 사용하고

Secondary는 C2H, C3H 포트를 사용합니다.


문사운드(OPL4)의 FM 사운드(OPL3)는 Main C4H, C5H 포트와 Sub C6H, C7H 포트를 사용합니다.

야마하가 OPL 하위 호환을 위해 이렇게 일부러 이렇게 만들어놨어요.

칩 매뉴얼 보시면 Main/Sub의 FM 레지스터(20H ~ FFH)가 동일하게 되어있습니다.

그러니까 OPL2의 FM 사운드를 두개 넣었다고 보시면 무방합니다.

(레지스터 00H ~ 1FH 사이는 칩별로 조금씩 차이가 있어요.)


그러면, 달기지에서 C0H, C1H 포트로 레지스터 00H ~ 1FH를 구현하고,

FM 레지스터는 문사운드의 C6H, C7H 포트로 쓰도록 해주면??

두개를 잘 활용할 수 있겠죠?


이걸 수식으로 적어보면요 ㅋ

OPL4 = OPL3 + Wave

OPL4 = OPL2 + OPL2 + Wave

OPL4 + MoonBase = OPL2 + (OPL2 + MoonBase) + Wave

OPL4 + MoonBase = OPL2 + Y8950 + Wave

이렇게 되겠습니다.


왜 이 짓(?)을 하는지 이해가 안되시면, 위의 [서론]을 다시 읽어보세요ㅋㅋ

마음 같아서는 MoonBase에 OPL4를 때려넣고 싶지만,

이미 OPL4 호환기기가 워낙 많기도 하고...

OPL4 관련 칩들을 구하는것도 쉽지않고... 뭐 그렇습니다.


(흐... 제가 쓰는 뮤직모듈은 카트리지가 두꺼워서, 확장슬롯에 꽂아두기가 좀 힘듭니다.

이것도 사실 좀 문제였어요.)



그럼, ADPCM 부터 구현해보아요~

로직을 VHDL로 다 때우면 CPLD 용량을 많이 잡아먹으니, 최대한 외부 플래쉬롬을 활용해서 구현합니다.


일단 기본적인 컨트롤 레지스터와 샘플 메모리 R/W 및 ADPCM 디코딩, PCM 출력부분을 넣었습니다.

타이머 2개와 인터럽트는 미완인데, 대부분 뮤직 디스크들은 구동이 되네요. 타이머를 안쓰나봐요.


아래 영상은 실제로 구동한 모습입니다.

테스트를 위해, "GT 본체 + V4 + MoonBase" 딱 요렇게만 환경을 구성했어요.


영상에서는 MSX-AUDIO 전용인 Impact4 뮤직 디스크가 실행됩니다.

처음부터 끝까지 자동재생이라 테스트하기 좋군요.

전체 재생시간이 30분을 넘어가니까, 대충 돌려보세요 ㅎ.ㅎ

FM으로는 만들기 힘든 드럼, 박수, 목소리를 ADPCM으로 어떻게 활용하는지 쉽게 확인가능합니다.

(주의: 영상에서는 OPL 사운드 없이 ADPCM만 나옵니다!)






[요약]


OPL4 카트리지를 MSX-AUDIO 처럼 활용하려면?

-> MoonBase(달기지) 카트리지와 합체하세요.



그럼, 오늘은 여기까지이구요. 다음편에서 또 이어지겠습니다~


2021년 6월 17일 목요일

SLT-Turbo 제작 #9 - V2의 바뀐 모습

V2의 방향은 어디로 가는게 좋을까? 그동안 고민을 많이 했습니다요~ ㅎ.ㅎ

대충 요약을 해보면요...


1. Z280의 확장 명령어를 포기


R800은 Z80에서 추가된 명령어가 곱셈 두개뿐이지만, Z280은 많은 명령어가 추가되어있습니다.

곱셈, 나눗셈 명령어를 활용하면 각종 계산 루틴을 빠르게 구동할 수가 있어요.


R800을 보면 아시겠지만, 2개 추가된 곱셈조차 사용하는 프로그램이 거의 없습니다.

S/W 개발자 입장에서 보면 소수 터보알 유저를 위한 프로그램 보다는,

 일반 MSX2 수준에서 쓸 수 있어야 많은 유저가 활용할거라는게 명백하니까요.

참고로 기존 터보알 전용 프로그램에서도 거의 사용하지 않습니다. 상용 프로그램은 아예 없죠.


제가 만든 M 파일 매니저, ASO 리메이크 등에서는 R800 명령어를 쓰지만,

돌아오는 피드백은 보통 이렇죠.

> 일반 MSX2 용으로 만들어 주세요. MSX1에서도 되면 더 좋겠구요.

> V9938이면 충분해 보이는데 왜 터보알 전용인가요? 님은 알레스트 안해보셨나요?


뭐 그렇습니다요 -_-


근데 Z280의 경우는 상황이 더 안좋은게, 이쪽은 개발자가 저 하나뿐이라는게 문제라서ㅋ

결국 Z280 칩을 제거하고 R800 곱셈명령만 로직으로 구현해서, 터보알 호환성을 유지하도록 합니다.



2. 고속 BUS를 지원하려면?


이것 때문에 고민을 많이 했는데요.

SLT-Turbo V1은 A1GT 수준으로 업그레이드 해주는 것 뿐이라서,

외부 슬롯은 3.58MHz BUS를 그대로 유지합니다. 터보알과 똑같죠~ ㅎ.ㅎ

이 방법은 H/W 호환성을 유지하는데엔 좋지만, 빨라진 시스템을 활용하는게 쉽지 않습니다.

쉽게 말하면 내장 메모리와 내장 기기를 활용하는 경우만 고속으로 동작하니까요.


결국 외장 기기를 만들 때, 처음부터 터보알을 고려해서 설계해야하는데 그게 애매하거든요.

특히 비디오 카드처럼 외부에서 단독으로 동작하는 경우는 완전 치명적이구요.


사실 제가 아는 것 중에는... 터보알에 최적화된 기기는 MMC/SD V3와 V4밖에 없네요.

V2는 A1WX 반터보(5.37MHz)나 1chipMSX의 터보(8.06MHz)에서 더 빠르게 동작합니다만,

V3, V4는 터보알의 고속모드(외부 3.58MHz)에서 훨씬 더 빠릅니다.


그렇다면 20MHz 고속 BUS를 쓸 수 있는 슬롯을 따로 할당하면 어떨까요?

가장 쉬운 방법은 외부 기본 슬롯인 SLOT 1 또는 2 전체를 고속으로 만드는건데요.

MSX의 슬롯이 16니까 외부 기본슬롯(서브4개) 하나를 할당해도 괜찮지 않을까 생각되시죠?


근데 카트리지 호환성 때문에 SLOT 1은 기본슬롯 하나로 완전히 빼놔야 하는데요.

그럼 남는게 SLOT 2 하나뿐이에요.

SLOT 0, 3은 대부분 BIOS랑 내장 S/W가 점유하고 있으니 서브슬롯 두개정도 남으려나요?

그러면 SLOT 2를 고속으로 해버리면, 외장형 주변기기들을 꽂을 슬롯이 별로 없게됩니다.

제 경우 최소 T-Wave, FontPack, MPX, MoonSound는 항상 꽂혀있어야 해서, SLOT 2는 항상 만차에요ㅋ


고속의 외부 슬롯은 할당하는건 무리라고 판단됩니다.

결국 내부만 고속으로 돌리는걸로 합의했어요. (저 혼자  합의ㅋ)


GT를 20년 가까이 썼는데, 외부 슬롯은 기존을 유지해야된다는게 MSX의 숙명...ㅎ



3. 고속 모드를 활용하는 내장 기기들


그럼 내장 기기를 추가할 때 고속모드를 잘 활용할 수 있는건 어떤 것들이 있을까요?

가장 먼저 떠오르는게 디스크, 비디오, 오디오겠죠? ㅎ.ㅎ


3.1 디스크 드라이브


SLT-Turbo V1에서는 터보알과 비슷한 DOS2 호환 커널이 SLOT 3-2에 탑재됩니다.

대신 FDD는 호스트 본체의 디스크롬을 경유하도록 되어있어요.

잘 이해가 안되신다면, paraMSX-R의 V-Disk 기능(호스트 디스크 매핑)을 떠올려보심 되겠습니다.

그거랑 똑같아요! ㅎ.ㅎ


물론 이 상태는 고속모드랑 전혀 관계가 없습니다.

아마 그냥 활용하는 것도 MMC/SD 같은 외부 디스크 장치에 의존하게 될거에요.

그래서 SLT-Turbo V2에서는 본체 FDD 대신, SLT-Turbo에 내장된 SD카드를 기본으로 사용합니다.

참고로, 요놈의 이름은 SLT-Drive입니다요.


3.2 비디오


요놈땜에 설계하는데 시간이 많이 걸렸어요. 이랬다가 저랬다가 왔다갔다~ㅋ

SLT-Turbo가 MSX 본체에 꽂는 주변기기처럼 생겼지만...ㅋ

사실은 이놈이 메인 기기이고, 호스트 본체를 외장 주변기기처럼 사용하는데요.

호스트에서 가장 중요한 부분은 비디오(VDP 관련)와 키보드, PSG입니다.


그럼, SLT-Turbo에서 지원하는 비디오 기능은 뭘까요?

MSX의 기본화면을 생성하는 것은 본체의 VDP(V9938/9958) 그대로입니다.

SLT-Turbo에 추가된 비디오는 기존 본체의 화면에 새로운 비디오를 오버레이 해주는 방식입니다.

그러니까 본체의 RGB 입력을 받아서 SLT-Turbo의 비디오(가칭 SLT-Video)를 위에 올려서 함께 출력하는거죠.


컬러 포맷은 RGB555이구요. 팔레트는 8BPP입니다.

팔레트 모드에서는 기존 스크린8 모드 호환도 가능하고, V9990의 15BIT 비트맵과 같은 화면도 가능하겠죠.

인터레이스 모드는 필드 메모리 분할이 아닌 선형으로 주소가 매핑되구요.

여러개의 페이지(Max. 4개)를 오버레이 하거나 스크롤, 화면 분할 등이 H/W로 지원됩니다.

팔레트 셋도 거의 무제한으로 설정가능하구요.


자세한 내용은 나중에 SLT-Video 편에서 따로 설명드리겠지만,

일단 메인램을 할당해서 사용함...정도만 기억하셔요. ioremap과 비슷합니다.


참고로, SCART 출력의 화면비율 설정도 가능합니다.

4:3, 16:9 설정을 바꿀 수 있어서 걸그룹 뮤비를 만들 때 레터박스를 쓰거나 화면을 자르는 작업을 하지않아도 됩니다.

아마 일제 모니터를 쓰시는 분은 지원안될겁니다요.


3.3 오디오


제가 지난 십여년간 준소프트님의 MPX를 워낙 잘 썼기 때문에, 그냥 VS10x3 칩을 박아버릴까 생각도 해봤는데요.

이넘은 파서, 디코더와 렌더러가 합체된 구조라서 내장기기로 쓰기는 애매한 듯 해서...

그냥 오디오 DAC만 추가하기로 합니다.

쉽게 구할 수 있는 PCM5102 모듈을 붙이는 방법을 썼어요.

혹시나 모듈이 단종되면 회로를 그려야하는 불상사가... 하지만 일단 납땜 노가다를 줄이는 방향으로~ ㅎ.ㅎ

자세한 기능은 오디오 편에서 따로 얘기하겠습니다요. (가칭: SLT-Audio)


현재까지는 8핀 DIN 단자의 RGB + 오디오는 그대로 두고

SLT-Turbo의 서브슬롯 쪽의 오디오와 SLT-Audio만 믹스해서 3.5파이 단자로 출력합니다.

이렇게 하는게 본체의 오디오와 SLT-Turbo쪽의 오디오 밸런스 맞추기가 쉬울 것 같아요.

물론 외부 믹서가 있어야겠지만요~ ㅎ.ㅎ



4. DMA 컨트롤러


MSX1,2는 워낙 싸구려 홈컴퓨터 사양이라 그런지, DMA는 사양에 없는데요.

터보알에도 없어요 ㅎ.ㅎ


SLT-Turbo V2에서는 CPU 부담을 덜어주기 위해 간단하게 DMAC가 들어갑니다.

비디오, 오디오 처리 시 유용하게 쓸 수 있겠구요.

T-Wave의 DCSG 포트나 스테레오 DAC 포트, Covox 포트도 쓸 수 있겠습니다.

(물론 저혼자 쓰게 될 확률이 높...ㅋ)



5. I/O 메모리 리맵


SLT-Turbo에 내장된 메모리는 4096KB입니다.

단일 메모리 매퍼로 지원가능한 최대사이즈입니다.

내장 기기로 추가된 비디오, 오디오 기기는 별도의 로컬 메모리가 탑재되지 않고,

메인 메모리를 할당 받아서 사용하게 됩니다.


메모리 관리자를 따로 만들면 좋겠지만, 기존 메모리매퍼 확장 BIOS도 안쓰는 개발자가 수두룩한걸 볼 때...

뭔가 더 만들게 되면 관심에서 멀어지는 효과만 늘어나겠죠?ㅋ


비디오, 오디오에서 필요한만큼 할당해서 매핑가능합니다.

예를 들어 V9938의 경우는 스크린8의 페이지가 2개(64KB x 2개)뿐이지만,

SLT-Video는 4MB 내에서 충분히(?) 많이 만들 수 있어요.



나름 요약해본건데... 글씨만 많군요 ㅎ.ㅎ

마지막으로 사진 한장 올리고 물러갑니다요~




그럼, 다음편에서 보아요~


2021년 5월 9일 일요일

와이드(16:9) 모니터의 활용

MSX 디스플레이의 기본 출력은 240p입니다.

전체 262라인 중 240라인을 사용하게 됩니다.

물론 MSX의 문자/그림이 표시되는 영역은 스크린 모드에 따라 192라인/212라인이죠.


만약 사용하는 모니터가 16:9 비율이라면, 화면비 설정을 4:3으로 두고 사용하실텐데요.


아래는 스크린1로 부팅된 BASIC 화면입니다.

LCD 모니터에서 출력된 모습이고, 오버스캔이 없는 상태의 240p 화면입니다.

사실 오버스캔은 CRT에서 쓰이는 용어라서 100% 정확한 표현은 아닙니다만,

대충 의미만 떠올리시면 되겠습니다요~





70,80년대에 쓰였던 AV 모니터(CRT)들은 약 10% 전후의 오버스캔으로 설정되어있습니다.

PC 용으로 쓰인 모니터들은 화면의 폭과 높이를 따로 조절할 수 있는 경우가 대부분이었구요.


오버스캔 10% 일때는 아래 사진과 유사하게 나옵니다.




BIOS의 스크린1 기본 WIDTH가 29로 되어있는 이유는 위의 사진을 보시면 금방 아시겠죠?

모니터 제품에 따라 화면 위치의 편차가 있으니까,

WIDTH 32로 꽉 채우면 좌측 또는 우측의 글자가 잘리는(보이지않는) 현상이 생길 수 있습니다.


아래 사진처럼 오버스캔을 17%로 과하게 설정하면 좌우가 잘리는 모습을 볼 수 있어요.





참고로, 요즘 TV 또는 AV 모니터는 기본 오버스캔이 3% ~ 7% 정도가 됩니다.

80년대 삼성에서 오버스캔을 조금 낮춘 TV를 팔면서 선전을 크게 했던 기억도 나네요.

광고가 '숨어있는 1인치를 찾아서'이었나... 그랬죠ㅋ



그럼, 본론으로 넘어갑시다요~


수평 라인수에 맞춰서 화면을 오버스캔으로 늘리면, 화면을 크게 볼 수 있으니 좋겠죠?

마냥 오버스캔을 늘리면, 가로 사이즈가 디스플레이 크기를 넘어가니 사용이 불가능해집니다.

MSX2의 VDP ADJUST 기능으로 가로 스크롤을 구현한 게임이라면 더 많이 잘려나가겠네요.


그래서,

오버스캔 설정을 그대로 두고, 화면을 줌인 해주는 기능을 설정해보아요.


아래는 줌 17% 상태입니다.

조금 위에서 본 오버스캔 17%에서 잘렸던 좌우 영역이 아래 화면에서는 잘 보이시죠?




이 상태에서 보여지는 화면비율은 4:3 아닌 14:9 정도가 됩니다.

화면이 17% 확대가 되니까...

17인치 와이드 모니터에서 보면, 20인치 모니터에서 보는 것처럼 되는거겠죠.



그럼, 실제 세팅은 어느정도가 좋을까요?

MSX2의 비트맵 모드는 212라인을 쓰니까, 줌 10%를 적용하면 되겠구요.

V9938/V9958의 오버스캔 트릭모드를 쓸때는 240p 전체 출력이 필요하니 줌을 꺼야겠죠.


아래는 실제 화면에서 적용된 모습입니다.

스크린5의 212라인 및 스크린2의 192라인을 쓰는 게임이네요.





아래는 스크린7의 인터레이스 424라인을 쓰는 M 파일매니저의 모습입니다.

위아래 꽉찬 화면이네요.





아래는 오버스캔 트릭모드를 사용하는 ASO REMAKE입니다.

줌을 해제하고 240라인을 모두 표시하고 있어요.





결론:

사용하시는 모니터가 와이드 비율이라면,

모니터의 오버스캔 또는 줌 설정을 적당히 맞춰서 쓰시면 되겠습니다.


.

.

.

.


하... 글 쓰고 보니 또 현타가...


사실 이 글을 쓰게 된 이유가 있는데요ㅋ

십년 넘게 잘 쓰던 32인치 모니터가 맛이 가는 바람에 ㅠ.ㅠ

구닥다리 17인치 모니터를 써야 할 상황이 되었습니니다요~





예전 2009년 모임 때 이 모니터를 갖고 갔었는데, 아마 기억하시는 분도 계시겠네요.

아래는 그 모임의 사진입니다~ (모니터 뒷통수가~ ㅎ.ㅎ)





한줄 요약: 갑자기 작은 화면을 보니 답답해서, 모니터에 ZOOM 모드 두개를 사용!


그럼, 즐 MSX하셔요~ ㅎ.ㅎ