MSX Document

From 흡혈양파의 인터넷工房
Revision as of 13:21, 17 November 2022 by Onionmixer (talk | contribs) (MSX 기종 사운드 비교 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
MSX 삽질기

MSX Environment

MSX 는 무엇인가

출처 - 나무위키 : https://namu.wiki/w/MSX


간단하게만 설명해보자면 Apple 와 더불어 8 bit 시절이 전성기였던 컴퓨터이다. Apple II 는 현재 활발하게 사용되는건 아니지만 MSX 는 2015년에도 게임이 나오고 있다.

NINJA SAVIOR : http://www.relevovideogames.com/ninja-savior/


MSX 를 지금(2016년기준)사용할때 어떤 장점이 있을까

이런저런 이유가 있겠지만 현재의 MSX 는 Apple 보다 정보가 많으며 이런저런 이유로 인해 현재진행형이기도 하다. 주변기기(?)도 현재 진행형으로 개발되는 중이다. 무엇보다.... 현재까지 쓰는사람들이 있기때문에 자료 또는 자문을 구하기도 쉬우며 8 bit 의 특성덕에 내부구조가 그렇게까지 복잡하지도 않다. 정리해보자면 다음과같은 특징이 있다.

  1. 8bit 이기때문에 구조가 복잡하지 않다
  2. 자료가 많다
  3. 아직까지 사용하는 사람들이 있기때문에 커뮤니티가 있다
  4. 기본 cpu 가 z80 이라는 걸출한 물건이다 덕분에 복잡한 16bit 어셈을 공부하지 않아도 된다
  5. rom basic 을 사용해볼 수 있다.
  6. hi tech C 라는 C compiler 도 있다
  7. 부수적으로... 롬 게임과 디스크게임을 즐길 수 있다.


이러한 특징덕에 복잡한 현 세대의 머신은 일하는 용도로 사용하면 된다. MSX 로 저수준의 컴퓨터를 배우고 싶다면 아두이노와는 다른 의미로 공부하기 좋은 환경이라고 보여진다.


어떻게 해야 MSX 를 사용해 볼 수 있을까

현시점에서 MSX 를 사용해볼 수 있는 방법은 3가지 정도가 있다.


  1. MSX Emulator
  2. MSX 실제 기기 사용
    • 본인의 경우는 MSX Turbo-R A1/GT 를 사용하고 있다. 비싸다. 그냥 엔간하면 굴러다니는 MSX 2 기종정도만 욕심내도 충분할거같다
  3. 1chipMSX
    • https://en.wikipedia.org/wiki/1chipMSX
    • 일명 OCM 이라고도 불린다. 라이센스를 받아서 만들어진 물건을 OCM. 소스코드 및 resource 를 사용해 다르게 만들어진 물건을 OCMC(OCM Clone) 이라고 한다.
    • Altera 사의 Cyclone 이라는... 프로그램 가능한 칩을 이용해서 VHDL 을 통해 시스템을 MSX 로 구현한 물건이다. 이후 시스템이 개량됨에 따라 MSX 2+ 수준까지는 올라왔다고 하지만.... 본인으로서는.. 정말로 그런 수준인지는 알 수가 없다
    • MSX 의 롬팩 및 대부분의 slot 형 장비를 구동할 수 있다. 또한 SD 슬롯을 자체적으로 지원함으로서 별도의 slot 인터페이스 없이도 rom 및 dsk 프로그램을 구동할 수 있다.
    • 기본적으로 s-video 와 d-sub 출력을 지원하고 있다. 일반적인 PC 모니터에서 쓰기에는 이만한 장비가 없다!
    • 키보드는 ps/2 연결 또는 ps/2 가 연결가능한 USB 키보드를 구하는것이 좋다.


1chipMSX(1チップMSX) 란?

ALTERA[1] Cyclone[2] FPGA 칩을 main CPU 로 사용하는 소형 기기로서 MSX 머신을 실제로 사용할 수 있게 하는것에 그 목적이 있다.


초기 제작은 꽤나 오래전에 이루어졌고 초기모델은 다음과 같은 특징이 있다.

  • d-sub 와 composite 단자를 영상출력으로 지원한다
  • 2개의 조이스틱 포트를 제공한다
  • ps/2 키보드를 사용할 수 있는 단자를 제공한다
  • 2 개의 롬팩슬롯을 제공한다
  • 2 개의 usb 포트를 제공하지만 전원만 나오고 실제로 동작하지는 않는다.

자세한 하드웨어 스펙은 1chipMSX spec 에서 확인할 수 있다.


FPGA 칩은 실제로 프로그래밍이 가능한 cpu 이기때문에 향후 몇번의 update 를 통해서 msx3 라는 로고가 부팅시에 뜨는 물건까지 만들어졌다[3].

하드웨어 상으로는 MSX2+ 정도까지는 무난하게 처리할 수 있는것으로 알려져 있으며 MSX Turbo-R 의 경우는 머신의 한계때문에 힘들거라 예측되고 있다.


일반적으로 OCM 이라 불리고 있다. 인터넷에서 찾으려면 1chipMSX 보다 OCM 과 msx 라는 키워드로 찾는게 훨씬 정보가 많이 나온다.

JTAG 등을 이용해서 어떠한 작업을 할 필요는 거의 없다. 그리고 SD 카드는 2G 까지만 인식하니 주의할것.


MSX dos

msx 머신상에서 사용하는 dos 이다. 기본적으로 제공되는 CD 에 있는 FAT16 용 폴더에서

  • AUTOEXEC.BAT
  • COMMAND2.COM
  • MSXDOS2.SYS


이 3개 파일을 SD 카드의 root 에 복사하고 1chipmsx 에 꽂은다음 전원을 넣으면 부팅되는 화면을 볼 수 있다.

MSX DOS 는 1 과 2 버전으로 나눌 수 있는데 대부분의 경우에서 MSX DOS 2 를 사용하고 있기때문에 MSX DOS 라고 명기를 할때 별도의 얘기가 없다면 MSX DOS 2 로 간주하면 된다.



MSX 를 어떻게 해야 잘 사용할 수 있을까?

MSX 를 활용하는데에는 일반적으로 "게임"을 즐기기 위한 목적이 가능 크다고 볼 수 있다. 일반적으로 MSX 게임은 크게 세 분류로 나눌 수 있다.

  1. 카세트 테이프
  2. 롬팩
  3. 3.5inch 디스크


그럼 이걸 활용하는 방법에는 어떤방법이 있을까? 당연히 FDD 를 쓰는것이 좋다. 하지만 OCM 의 경우는 FDD 가 없다. 그렇다면? 슬롯에 꽂는 FDD 컨트롤러를 사용하면 된다. (물론 구매가 가능하다면의 얘기)


사실 OCM 은 이런 작업을 하지 않아도 SD 카드 슬롯을 이용해서 DSK 이미지를 사용할 수 있다. 그럼 어떻게 해야할까?


MSX 용어정리

지금까지 설명한 MSX 와 OCM. 그리고 MMC/SD 를 사용하면서 마주할 수 있는 용어들에 대해 간단히 정리하고 이 다음으로 넘어가보도록 하자.

OCM

물론, 앞에서 설명한대로. 1chipMSX 를 말한다.

MMC/SD

MSX 에 꽂는 MMC/SD 카트리지 팩을 말한다. 서영만님이 만드셨으며 제작 시기 및 타입에 따라 몇가지의 버전이 있으니 주의할것. 기본적으로 4.04 펌웨어 버전까지 나와있다. MSX 에 카트리지를 꽂고 부팅되는 화면을 잘 보면 버전이 나온다. 2017년 현재는 v3 까지 있으며 기본하드웨어 버전은 3.1. SRAM 을 1024 로 별도 확장한 버전을 3.2 라고 한다.

pld 파일

OCM 을 업그레이드할때 사용되는 일종의.. OCM 펌웨어 파일. http://cafe.naver.com/msx/2897 이곳을 참고로 하면 사용방법을 알 수 있다. 일반적으로는 pldload 와 pldsave 를 사용하면 된다. 물론 사용은 MSX OCM 에서 사용하면 된다. PC 에서 사용하는 물건이 아니다.

LuxuryBox

MSX 때 사용되던 메가롬팩 또는 그 복각판을 말한다. 구하기 매우 힘들다.


음원카트리지

준소프트님의 글 내용을 재정리 하였습니다.

MSX 에서의 음원카트리지는 사운드카드라고 보면 됩니다. 크게 두 종류의 사운드 카트리지가 존재하는데, FM 음원 카트리지와 웨이브 음원 카트리지의 두 종류입니다. 웨이브 음원은 PCM 방식과 같다고 보시면 됩니다. 소리를 디지탈화에서 메모리에 저장하고, 그것을 다시 아날로그로 변환 재생합니다. FM 음원은 주파수 변조 방식입니다. 몇 가지 파라미터를 가지고 함수를 조작해서 소리를 변형시킵니다.

FM 방식은 제한된 파라미터를 가지기는 하지만 소리를 만들어 낼 수 있기 때문에, "사운드 합성(synthesis)"으로 볼 수 있구요. PCM 방식은 속도(샘플링 레이트)와 메모리 용량에 비례해서 성능을 내며 단순한 "녹음/재생"으로 볼 수 있습니다. 참고로 MSX에서는 "카트리지"라는 표현을 쓰는데요, 슬롯에 꽂는 팩의 형상에서 비롯된 용어입니다. 기능적으로 PC의 "카드"와 같은 것으로 보시면 됩니다. OP(오퍼레이터의 약자)라는 접두어를 가진 음원은 모두 FM 방식입니다.


MSX 에서의 FM 음원의 정의

서영만님의 글 내용을 재정리 하였습니다.

"FM 음원"하면 보통 야마하 FM 칩들(OPL, OPM, OPN, 등등)이 생각날 텐데요.

  • MSX에서 "FM 음원"은 파나소닉의 FM PAC의 사운드를 의미합니다. (FM PAC = OPLL + PAC)
  • OPLL 칩을 사용하는 MSX-MUSIC 표준 사운드이구요. 싸구려 칩이라서 많은 기종(MSX2 이상)에서 기본 내장되어 있습니다.


MSX-AUDIO, MSX-MUSIC

로아님의 글 내용을 재정리 하였습니다.

MSX-AUDIO 는 MSX-MUSIC과 별개의 MSX의 확장 음원 규격입니다. 둘은 서로 호환성이 없습니다. ADPCM을 지원하는 등 MSX-MUSIC 보다는 스팩이 좋았으나 가격이 비싼 문제 등으로 제대로 보급되지 못했고 지원하는 프로그램이나 게임도 거의 극소수라 존재감이 없습니다.

FM-PAC, FM음원이 내장된 MSX본체들, FM음원을 지원하는 대부분의 MSX 게임들은 모두 MSX-MUSIC 규격이라고 생각하시면 됩니다.


MSX-AUDIO와 MSX-MUSIC의 차이점

둘 다 MSX 표준 사운드 시스템입니다. MSX-AUDIO는 OPL1 음원을 사용하고 PCM 등의 기능이 들어가 있습니다. 이 표준에 준하는 카트리지는 고가로 판매되었기 때문에 특히 한국내 보급은 없었다고 보면 됩니다.

좀 더 뒤늦게 FM-PAC 이라는 카트리지가 발매가 되었는데, 여기에는 OPLL이라는 저가의 음원칩이 들어갔습니다. PAC 카트리지에 FM음원을 추가한 개념이었고, 이 하드웨어가 히트를 기록하며, 이후 MSX-MUSIC 으로 표준화가 되었습니다. 다만 PAC 기능은 빠지고 순수한 사운드 부분만 표준화가 된 것입니다.

참고로 필립스의 뮤직 듈이라는 사운드 카트리지가 있는데, BIOS용 메모리가 빠져있어서 소프트웨어적으로 호환성이 결여되었습니다.


MoonSound? FM-PAC?
  • MoonSound = OPL4 (YMF278B) 카트리지 (BIOS 등의 S/W 없음)
  • FM PAC = Music BIOS + OPLL (YM2413)+ PAC (SRAM + 배터리) + PAC 커맨더 (SRAM 관리 S/W)


달소리

준소프트님의 글 내용을 재정리 하였습니다.

moonsound 라는 OPL 카트릿지의 복각판의 준소프트 제작품의 명칭입니다. 달소리1, 2 등에는 OPL4 라는 음원칩이 있습니다. OPL4는 OPL3에 웨이브 테이블 방식의 음원을 추가한 것입니다. OPL3와 같은 소리를 낼 수 있습니다.

OPL4를 이용한 MSX용 사운드카드입니다. 90년대 초, 유럽발 문사운드(MoonSound)를 시초로 클론이 많이 개발되었습니다. 국내에서는 달소리와 얼마전 우리동호회에서 공제된 OPL4 사운드카드 등이 있습니다. 90년대 이후로 개발되었기 때문에, 그 이전에 나온 게임은 당연히 지원하지 않습니다. 그 이후로 나온 게임 중 일부가 지원하며, 일부 MSX-AUDIO 소프트웨어의 경우 패치를 하면 지원될 수도 있습니다.

과거의 게임에 활용하고자 한다면 권장하고 싶지는 않습니다. 참고하세요. (http://cafe.naver.com/msx/5462)


FM 을 내장한 MSX

MSX의 표준에는 여러가지 하드웨어 사양을 정의하고 있는데, MSX-MUSIC은 터보알에서 필수 사양으로 지정되었습니다. MSX2+ 까지는 옵션 사양이었습니다. 다만, 실질적으로 대부분의 MSX2+ 모델은 MSX-MUSIC이 내장되어 있습니다. MSX-MUSIC이 내장된 본체에 FM-PAC을 꽂으면, 본체 내장 음원은 금지가 되고, 외부 음원을 사용하는 메카니즘을 가지고 있습니다. 다만, 이 부분이 모든 모델에 해당되는지는 잘 모르겠네요. 가지고 계신 기기를 이용해 꽂았을 때 음량에 변화가 있다면, 해당 기능이 동작하는 것으로 의심(?)해 보면 될 것 같습니다.


SCC

SCC[4](Sound Custom Chip, Sound Creative Chip)


SCC 는 MSX 의 표준과는 전혀 상관없는 코나미(konami) 만의 독자규격이다. 모든 코나미 게임이 SCC 를 지원하는 것은 아니며 위의 위키에 따르면 다음의 게임들이 SCC 칩을 내장하고 있다고 한다.

  • RC 751: Nemesis 2
  • RC 752: F-1 Spirit, The Way to Formula 1
  • RC 756: Break Shot (never sold)
  • RC 757: Baseball 2: Pennant Race
  • RC 758: Salamander
  • RC 759: Parodius
  • RC 760: King's Valley 2 (MSX1)
  • RC 761: King's Valley 2 - El Giza's Seal (Japanese, MSX2)
  • RC 762: Contra (a.k.a. Gryzor)
  • RC 764: Nemesis 3 - The Eve Of Destruction
  • RC 766: Pennant Race 2
  • RC 767: Metal Gear 2: Solid Snake
  • RC 768: Space Manbow
  • RC 769: Quarth


목록에 나온 게임 이외에도 SCC 사운드를 지원하는 게임 또는 장비등이 별도로 있다.

이 외에 SCC 로 유명한 것은 MSX 의 스내처 게임이다. SD 스내처 게임의 경우에는 디스크 게임으로 제공되고 있기 때문에 별도의 SCC 용 카트리지를 제공하는데 이것을 SCC-I 라고 한다. 보다 자세한 내용은 위의 link 를 참고.


메가롬팩

롬 용량이 Mega Bit 급인 롬을 사용하는 롬팩입니다. (참고로 1Mega Bit는 128KBytes입니다요.) - 서영만


MSX 에서 mapper 란?

  • ASCII8 mapper
  • ASCII16 mapper
  • KOMAMI classic mapper
  • KONAMI-SCC mapper
  • zemina16k mapper

일반적으로 MSX 에서 mapper 는 MSX 의 기본 메모리 영역을 넘는 데이터를 붙여서 사용하기 위한 방식. 자세한 내용은 아래의 주소를 확인할것

MSX의 메가롬 매퍼 - http://cafe.naver.com/msx/7638


SCART? RGB21?

레트로를 위한 SCART 및 RGB21 자료를 참고


추가정보

서영만님 및 준소프트님의 글 내용을 재정리 해봤습니다.

Q. paraMSX 에서 MSX AUDIO 를 로딩할때 달소리2 를 사용하는 경우에도 OPL3.mono 를 사용하면 되는건가요? 그렇다면.. 이건 그냥 개인적인 궁금증인데 OPL3.stereo 는 어느장비에 적용되는 건가요?

A. MoonSound, 달소리 등등 모든 OPL4 카트리지는 스테레오 출력(이어폰 잭)이 됩니다. 칩 자체는 OPL2부터 스테레오 출력이 될꺼에요. 근데 MSX-AUDIO는 원래 OPL 사운드라서 모노 출력입니다. 그러니까 MSX-AUDIO 지원하는 게임에서는 스테레오 사운드라는 말 자체가 성립이 안됩니다. 참고로 AUDIO BIOS v1.3은 파나소닉에서 만든게 아니구요. 일반 유저가 별도로 만든 BIOS입니다. OPL4 카트리지에서 구동한다면 OPL3.mono, OPL3.stereo 둘다 사용가능합니다. 취향에 따른 선택이겠네요. ㅎ.ㅎ 스피커를 비싼걸로 바꾸면 당근 소리가 좋아지겠지만... 원래 모노였던 사운드를 스테레오 바꾼다고해서 항상 소리가 좋아지는건 아니겠죠?


Q. paraMSX 에서 MSX AUDIO BIOS 가 몇개가 있는데 FM PAC 과 상관있는 BIOS 는 없는건가요?

A. 이미 아시겠지만, MSX-AUDIO (Y8950)랑 MSX-MUSIC (YM2413)은 서로 완전히 다릅니다. 같은 구석이 별로 없어요. MSX-Audio BIOS v1.3은 오리지날 Audio BIOS처럼 OPL을 지원하지만, 추가적으로 OPL2/3/4에서도 사용할 수 있도록 되어있습니다.

근데 매뉴얼 읽어보니까 OPLL (YM2413)칩에서도 구동할 수 있는 기능이 있긴하네요. 실시간 레지스터 변환 같습니다. (물론 S/W 수준에서요)

MSX-MUSIC을 위해서는 Music BIOS가 필요하구요. MSX-AUDIO를 위해서는 Audio BIOS가 필요합니다. paraMSX-R의 경우는 FM PAC BIOS를 로딩해서 Music BIOS도 함께 구동할 수 있구요. 그냥 MSX-MUSIC이 내장된 기종으로 선택하면 Music BIOS가 에뮬된 본체 슬롯에 로딩되니까, FM PAC을 추가 구동할 필요는 없습니다.


Q. 그럼 달소리2 를 같이 사용하기 위해서는 어떤 MSX-AUDIO bios 를 사용하는것이 좋은가요?

A. MSX-AUDIO BIOS v1.3에도 스테레오와 모노가 있습니다. v1.3은 OPL3를 지원하며, 스테레오 기능을 추가하였습니다.

여기서 잠깐,흔히 같은 뜻을 지니는 여러가지 용어를 사용하는데, 화음수, 채널수, 보이스수, 폴리수 등입니다. 뭐 다 같은 의미로 보시면 되는데(엄격한 의미는 다르겠지만), 동시 발음 수로서, OPLL은 최대 9음, OPL3는 최대 18음을 동시에 낼 수 있습니다.

원래 MSX-AUDIO(OPL1)는 모노이므로 좌, 우, 스테레오 분리를 할 수가 없었지만, OPL4(OPL3)에서는 각 음(보이스)을 좌, 우로 매핑을 시킬 수가 있어서 스테레오 효과를 낼 수 있습니다. 다만, 기존의 소프트웨어는 당연히 스테레오 기능을 사용할 수가 없겠죠. 그래서 BIOS v1.3에서는 임의로 스테레오 효과를 줍니다. 어떤 음은 왼쪽 채널(여기서의 채널은, 스피커 좌, 우 채널을 의미합니다 ㅠㅠ), 어떤 음은 오른쪾 채널로 출력시킵니다. 달소리 2를 꽂고, 베이식으로 된 MSX-MUSIC용 음악파일을 실행 시키시면 스트레오 효과를 파악하실 수 있습니다. 혹은, 패치된 파이어호크(by FRS)를 실행 시켜보시면 좋겠습니다.


MSX 기종 사운드 비교


기타장비

4 slot Extender

4 slot Extender

8421 님이 만드신 4 slot 확장장비. 기본적으로 대부분의 MSX 는 2 개의 카트리지 슬롯만을 가지고 있는데, 이정도로는 다양한 기능팩들을 한번에 사용할 수가 없다. 때문에 이런식으로 별도의 슬롯 확장 장비를 사용하면, 여러개의 카트리지를 동시에 사용할 수 있다.


알카노이드 패드

Arkanoid Pad

Arkanoid Pad use

자낙님이 제작하신 MSX 용 알카노이드 게임의 패드. 사용할때는 paddle 을 지원하는 알카노이드 버전을 사용해야 한다.


MSX 에서 게임의 종류

간단하게 말해서 두가지 종류가 있다(MSX Basic 으로 한줄한줄 입력하는 경우는 빼도록 합시다..-.-)

  • ROM 팩으로 출시된 게임
  • MSX disk 로 출시된 게임


ROM 팩으로 출시된 게임은 간단한 편이다. 왜냐하면 기본적으로 파일이 하나밖에 없기 때문이다. 하지만 disk 로 출시된 게임은 다르다.. 디스켓 여러장으로 된 게임은 디스켓 바꾸기에 대한 부분이 필요하기 때문이다. 그래서 MMC/SD 에서는 두가지 방법에 대한 솔루션을 제공하고 있다.

  • ROM 팩 이미지를 MMC/SD 내부의 플래쉬롬 영역으로 불려들여 실행(FLASHMAN 사용)
  • DISK 이미지를 SD 카드에 특정 영역을 만든다음, 이 영역에 이미지를 pre-load 해놓고 MMC/SD 내부의 hook 을 통해 이미지를 교체해가면서 쓰게 하는 방법(DISKMAN 사용)


이중에서 본인은 아직 diskman 은 해보지도 못했기 때문에 글을 쓰는 시점에서는 FLASHMAN 의 MMC/SD 의 flash 영역. 그리고 SD 카드에 대한 내용까지만 다루는것으로 한다.




MSX 와 개발(Development)

일단 MSX 의 cpu 인 Z80 에 대한 개발 리소스 링크를 참고하도록 하자


MSX 프로그램을 개발하는 데에는 여러가지 방법이 있겠지만 linux 에서는 SDCC(Small Device C Compiler) 와 MSX backend 에 대한 자료가 좀 있다. 일단 메모차원에서 급한대로 link 만 남겨두도록 한다.

SDCC 용 MSX backend 는 MSX-DOS2 까지 지원하는듯 하다. 위의 link 를 살펴보면 된다.


이외에 Windows 에서는 hi-tech C 와 CP/M 에뮬레이터를 사용한 방법이 존재한다. 기본적으로 Apple II 에 들어간 CP/M 은 해당 OS 를 사용하기 위해서 z80 addon 보드를 Apple II 에 꽂아야 하는데 그 특성을 이용한게 아닌가 싶다

기본적으로 서영만님이 관리하고 계시며 그래픽라이브러리까지 존재한다. 이걸 SDCC 에 붙일 수 있다면 제일 좋은 방법이 되곘지만.. 해당되는 방법을 찾는건 뒤로 미루도록 한다.-20160727


참고사이트


참고사항

  • MMC/SD V2 에 대한 몇몇 이미지는 서영만님의 "MMCSD_Drive_Manual_KR.pdf" 에서 발췌하였습니다.
  • OCM 에서는 롬을 로딩하기 위해서 mglOCM 을 사용할 수 있다.
  • 골든박스 또는 디럭스박스에서는 롬을 로딩하기 위해서 mglBOX 를 사용할 수 있다.


Notes