2024년 5월 18일 토요일

paraMSX-R 리뉴얼 버전(v1.2) 방출 완료

2차로 제작된 paraMSX-R입니다. 리뉴얼된 v1.2 보드가 사용되었습니다.

이제 엔딩이네요~ ㅎ.ㅎ/



2024년 4월 27일 토요일

TapTapRevolution 제작 #5 - 키입력 처리


잠시 손놓고 있던 작업을 이어봅니다~ ㅎ.ㅎ


게임을 즐기려면 상하좌우 4개의 화살표 입력이 필요합니다.

키보드에서는 아래처럼 1P, 2P의 입력키를 배치합니다. 커서키는 1P 입력으로 사용됩니다.


1P는 노랑, 2P는 파랑입니다.



오리지널 MSX 패드에서는 십자버튼 및 트리거버튼1(상), 트리거버튼2(우)로 동작하구요.

MD패드 핀을 개조해서 2버튼으로 동작할 때도 동일한 십자버튼 및 B(상), C(우)로 동작합니다.

JoyMega를 쓰는 경우는 십자버튼 및 Start(좌), A(하), B(상), C(우)로 동작합니다.


참고로, 일반패드에서는 십자버튼으로 상+하 또는 좌+우 함께 누르는 것이 불가능하니까...

십자버튼과 트리거 버튼을 나눠서 사용하면 됩니다 ㅎ.ㅎ


아래는 JoyMega 사용 시 사용되는 입력 설명입니다.





화면에 스크롤되어 올라오는 노트(화살표) 타이밍과 버튼 입력에 따라 5가지 판정 표식이 나옵니다.

이건 오리지널 DDR과 동일하도록 만들었어요 -> PERFECT, GREAT, GOOD, BOO, MISS

화면 표시에는 스프라이트를 이용합니다.

참고로 PERFECT, GREAT 판정 시에는 노트(화살표)가 사라지는데, 요것도 동일하게 구현했어요.

CPU, VDP 로드가 아슬아슬하네요 ㄷㄷ



실제 동작 모습은 아래 영상으로 확인하셔요~ ㅎ.ㅎ/




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


2024년 4월 12일 금요일

paraMSX-R 제작 #17 - 소소한 리뉴얼

paraMSX-R이 나온지 벌써 7년이 됐네요 ㅎ.ㅎ

살짝 리뉴얼 들어갑니다~


케이스 -> 검정색 반투명

레이블 -> 무광코팅

으로 변경되었습니다.

제가 작년부터 레이블 스티커를 '무광코팅 유포지'으로 바꿨는데, 요게 맘에 들더라구요 ㅎ.ㅎ

(반짝반짝~ 유광코팅을 좋아하셨던 분께는 위로의 말씀을...)




에뮬 모드 및 롬디스크 드라이브 동작 표시는 녹색 LED로 변경됩니다.

MMC/SD V4의 머신 에뮬(GameRunner II) 표시와 같은색입니다. LED 위치도 똑같아요!




Memory Mapper 모드 전용 LED가 추가되었습니다.

SLT-X 등의 확장슬롯에서 쓰는 분들이 꽤 있으신 걸로 알고 있는데요.

메모리매퍼 2MB로 활용하실 때 동작 LED가 혼동되지 않도록, 파란색 LED를 따로 넣었습니다.




그 외, 내부 기능은 그대로입니다. 사용법도 동일하구요.

회로가 바뀐 것 때문에 디바이스 버전은 1.2로 표시가 됩니다. 기존은 1.1이었어요.




그럼, 즐거운 주말되셔요~ ㅎ.ㅎ/


2024년 4월 11일 목요일

지난 20년 개발의 추억 #8 - MMC/SD Drive V4

월간 추억팔이 #8편이 나왔습니다~ ㅎ.ㅎ


이전글을 보시려면, 아래 링크를 눌러주세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html

https://sharksym.blogspot.com/2024/03/20-7-audiofactory.html



2015년 MMC/SD Drive V3로 turboR에 최적화된 디스크 기기

2016년 paraMSX-R로 Z80 명령어 패치와 가상의 슬롯 환경(머신 에뮬)

2017년 AudioFactory로 SCC-I, PSG 등의 사운드 에뮬

.

.

.

이제 2018년, 지난 3년간 만들었던 것들과 새로운 아이디어를 모아~모아~ 새로운 기기를 만들어봅니다!



14. MMC/SD Drive V4


으~~ 글을 한참 적다가 다 지웠습니다 ㅠ.ㅠ

하고싶은 얘기를 적다보니 끝이 없네요. 책을 써야하나 싶으네요ㅋㅋ



대충 요약하면...


- 메가램은 8KB 매퍼 최대치인 2MB 용량, 16KB 매퍼 4MB롬은 서브롬으로 구동.

  서브롬은 멀티롬으로 활용가능합니다.


- 저사양 MSX2 유저를 위해, V4를 기본슬롯에 꽂으면 내부 확장슬롯 및 메모리매퍼 512KB 구동.

  메모리매퍼가 동작 중이더라도, 2MB의 롬을 로딩/실행가능.


- SCC 및 SCC-I 사운드는 디스크 모드와 함께 동작가능, SCC-I 128KB 전용 모드 동작 가능.

  사운드 상태값을 얻을 수 있도록 구현. PAC-V 비주얼라이저에서 활용됩니다.


- Kanji ROM은 롬폰트로 사용하거나, 별도의 폰트 파일을 로딩하여 머신 에뮬로 사용.


- GameRunner II 모드에 paraMSX-R의 머신 에뮬기능 일부를 넣어서 구현.

  국산 MSX1, 유럽 MSX2 등의 환경을 만들 수 있으며, 디럭스박스, 카세트 에뮬 등 가능


- DCSG 사운드칩 내장. VGMPLAY 등으로 오락실의 뿅~~뿅~ 사운드를 감상 가능ㅋ


- 8BIT PCM 내장. 일반 MSX2에서도 동영상(MV) 및 WAV 사운드 재생 가능.


- 전체적인 사용자 경험(UX)은 V3와 동일하도록 구현.

  사실 V4의 내부 S/W는 V3와 전혀 다릅니다요. 언젠가 시간이 나면 설명을 해볼게요~



그리고,

M 파일 매니저를 V4 전용 프로그램으로 알고 계시는 분도 있던데...

이건 그냥 평범한 DOS2 프로그램입니다. MMC/SD랑 아무 관계없어요 ㅎ.ㅎ


마지막으로, 제가 쓰고 있는 V4 가족 사진을 올려봅니다~




요렇게 2018년이 흘러갔네요.


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ


2024년 4월 9일 화요일

paraMSX-R Tool v1.06

 


Download: paraMSX-R_Tool_v1.06_20240409.zip


--------------------------------------------------

paraMSX-R(tm) Tools v1.06

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



* 변경 내용


- paraMSX-R v1.2 카트리지 지원 추가



[ 툴 및 롬 업데이트 가이드 ]


1. PARAMSX.COM, PARATOOL.COM, PARAMSX.ROM 및

   PARAMACH.ROM 네개 파일을 디렉토리에 복사

   (기존 파일을 덮어쓰면 됩니다)


2. MSX-DOS 상에서 BIOS롬 다운로드

   A:\>PARATOOL PARAMSX.ROM


3. MSX-DOS 상에서 머신데이터 다운로드

   A:\>PARATOOL PARAMACH.ROM


4. 다운로드 완료 후 재부팅


5. 끝

2024년 3월 23일 토요일

PSG 3채널로 BGM과 효과음 공유

PSG 3채널로 BGM과 효과음 공유


아시다시피 PSG에는 3채널(Ch.A, Ch.B, Ch.C)의 출력단이 들어있는데요.

이 3채널만으로 배경음악(BGM)과 효과음을 함께 출력할 때는 보통 2가지 선택지에 놓이게 됩니다.

1) 배경음 2채널, 효과음 1채널 각각 할당

2) 배경음 3채널 기본 사용. 효과음 출력 시 배경음 1채널을 대신 사용


1)은 코나미 게임에서 종종 보이는 형태입니다.

게임 시작할 때는 3채널로 멋지구리하게 음악이 나온 후,

스테이지가 나오고 주인공이 움직이기 시작하면 배경음악은 2채널로 고정되는거죠.

효과음은 따로 1채널을 독점하구요.


BGM 2채널이라 단조롭게 들릴 수는 있지만, 멜로디가 잘 들리니까 뇌리에 팍팍 꽂히는 장점도 있어요 ㅎ.ㅎ



2)는 평소에 3채널로 BGM을 우렁차게(ㅋ) 출력합니다.

만약 효과음 출력이 필요하게 되면, BGM의 채널 1개를 삭제(출력 MUTE)하고 여기에 효과음을 넣게 되는거죠.

보통 BGM의 주 멜로디의 출력은 유지한 상태에서 베이스 또는 드럼 출력 용 채널을 삭제하게 됩니다.

아무래도 멜로디가 끊어지면 좀 어색하니까요 ㅎ.ㅎ


조금 특이한 경우로는 THEXDER가 있는데요.

일단 BGM은 3채널로 출력합니다.

여기서 효과음이 추가되면, BGM 채널 한개를 그냥 삭제하는 것이 아니라, BGM 채널 2개를 교대로 삭제하더라구요.

효과음를 PSG의 Ch.B, Ch.C으로 빠르게 전환하면서 출력합니다.

결국 해당 채널의 BGM도 빠르게 끊어졌다 출력했다 반복되겠죠.

실제로 들어보면 BGM이 살짝 끊어지듯 들리지만, 채널이 완전히 사라지는 게 아니라서 배경 음악이 대충 들립니다 ㅎ.ㅎ


참고로, 제가 예전 만든 그래픽/사운드 데모용 프로그램(테트리스)에서는.

BGM의 베이스 라인과 효과음이 하나의 채널(Ch.C)을 공유해서 출력합니다.

아래는 2016년에 찍은 영상인데, 심심하시면 구경하셔요 ㅎ.ㅎ



.

.

.


사실 이 글을 쓰게 된 이유가....

최근 토시탈드님이 공유해주신 남코의 사운드 관련 인터뷰 내용 때문이었습니다요~


BGM과 효과음이 PSG 채널을 공유해야 한다면 어떻게 해야될까?

저는 BGM의 멜로디가 사라지면 동시(BGM + 효과음)출력의 의미가 없지않을까? 싶었거든요.

뭐, 지극히 공돌이의 마인드라고 볼 수 있겠네요ㅋㅋ


근데 남코의 인터뷰를 보면 아래의 내용이 나옵니다. (한글 번역기의 출력이라 조금 어색할 수 있어요.)


나카가타:「효과음에 몇 음 사용할 수 있어」라고 하는 이야기도 하고 있었지요. 나는 SE(효과음)에 채널이 먹히는 경우는 항상 BGM은 베이스와 드럼(리듬)이 남는 조립으로 하고 있었습니다.


오자와: 그것도 스스로 결정 되었습니다. BGM 안의 어느 소리를 지워 효과음을 태울 수 있을까 하는 것도 사운드 크리에이터 측에서 조립하고 있었습니다.


케이노: 항상 퍼즐처럼…


오쿠보 : (케이노 씨가 다룬) '팩랜드'에서는 효과음에 따라 멜로디와 채널이 쓰여 있고, 효과음이 울릴 때에는 BGM이 베이스와 리듬대만이 되는군요. 효과음이 울리고 끝나면 멜로디의 소리가 곧바로 복귀하고 울리기 시작할 때는 MIDI 제어로는 할 수 없는 사양이므로, 인터랙티브에 특화한 게임만이 가능한 사운드 시스템이 인상적이었고, 그것을 엄청 잘 사용하고 있었습니다 그래.


케이노 : 비행기가 나오고 호퍼가 나와서… 에서 하고, 물건에 따라서는 BGM의 멜로디 라인을 마스킹하고 있었습니다.


오자와:플레이 스테이션 이후(CD로부터의 스트리밍 재생을 할 수 있게 됨) BGM이 사라지지 않고 울리게 되고 나서도, 「일부와 멜로디를 지운다」라고 하는 연출상의 효과는 사용하고 싶었네요.


케이노: 음소거(=무음)하는 것으로 소리가 서, 소리가 빛난다고 하는 것이 있기 때문에.


나카가타: 정말 그렇네요.


오자와: 지울 때 어떤 것을 깎는지에 따라 연출이 바뀌기 때문에…



요약하면, 효과음 출력 시 채널이 부족하면 BGM의 멜로디를 지운다는거죠.

저의 생각 -> BGM과 효과음을 어울리게 출력한다 -> 베이스/드럼 삭제하고 효과음을 출력

남코 생각 -> 효과음이 더 잘 들리도록 BGM의 멜로디를 삭제하고 베이스/드럼을 살린다 -> 멜로디를 지우는 것도 연출


재밌는 인터뷰였습니다 ㅎ.ㅎ


그럼, 즐거운 주말되세요~


2024년 3월 2일 토요일

지난 20년 개발의 추억 #7 - AudioFactory

월간 추억팔이 #7편이 나왔습니다~ ㅎ.ㅎ


이전글을 보시려면, 아래 링크를 눌러주세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html

https://sharksym.blogspot.com/2024/01/20-6-paramsx-r-v11.html



2017년, MMC/SD V3를 3년째 쓰고 있군요~~

아시다시피 구버전(V2.x 등)에서 롬매퍼+사운드를 담당하던 SCC칩이 V3에서 제거되었습니다.


당시에 SCC-I 카트리지 또는 사운드 전용으로 개조한 SCC 카트리지를 쓰는 분이 많아서,

V3에 외부 SCC 사운드를 지원하는 방식으로 바뀐 것 자체가 큰 문제는 아니었는데요.

근데 이 방식은 기존 프로그램을 MMCSD가 자동패치해서 구동하는 방식이라서, 지원이 완벽하지 않다는 문제가...

암튼 다음번 MMC/SD V4에서는 SCC 사운드를 구현해서 넣기로 계획을 합니다. 흙흙...


좀 여담이지만...

2000년초에 레트로 사운드가 유행하면서, 각종 PSG, FM 계열의 에뮬로 뮤직플레이도 함께 유행했는데요.

저는 주로 윈도용 윈앰프를 썼는데, KSS, MGS 등의 음악 파일을 윈도에서 바로 들을 수 있어서 좋았지요.

그 때 윈앰프용 IMS 플러그인도 제가 만들었는데, 기억하시는 분들 계실지 모르겠네요ㅋ

회사에서 개발하면서 이어폰 꽂고 칩사운드를 즐기는 것도 나름 맛이 있었어요.


근데, 작년(2016년)에 MSX계에 어떤 S/W가 혜성처럼 등장하게됩니다. 바로 VGMPLAY

제가 GT를 쓰면서 MIDI, MP3 음악을 듣거나, 게임 오프닝을 보면서 사운드를 즐기는 경우가 많았거든요.

이젠 MSX용 VGMPLAY가 나오면서, PSG, SCC, OPLL, OPL4, DCSG 등 본체의 사운드 칩으로 음악을 쉽게 즐길 수 있게 되었네요.

실기를 켜는 즐거움이 2배로 더 늘어났다고 하면... 조금 과장이려나요? ㅎ.ㅎ


서론이 길었는데, 그렇게 AudioFactory 프로젝트가 시작됩니다.



13 AudioFactory


이름만 봐도 아시겠지만, 사운드 통합 기기가 되겠습니다.

현재 제가 쓰는 MSX 환경에서 슬롯 점유를 최소화하고 필요한 사운드를 추가하는 것이 목표입니다.



13.1 SCC-I


MMC/SD V4에 넣기 위한 SCC-I 에뮬입니다.

사운드만 넣어도 되겠지만, 어차피 슬롯 한개를 점유하는 기기니까... SCC-I 메모리도 128KB FULL로 넣어봅니다.



13.2 DCSG (SN76489)


세가 게임(오락실 기판 및 게임콘솔)에서 주로 쓰였는데요. 이제 MSX에서도 VGM 음악으로 즐길 수 있습니다.

저는 현재까지는 DCSG가 들어있는 SEGA VDP 카트리지(Franky)를 쓰고 있습니다.

이걸 대체하기 위한 DCSG(SN76489) 에뮬이 되겠네요.



13.3 Sec-PSG


일명 세컨더리 PSG가 되겠습니다 ㅎ.ㅎ

이쪽은 활용도가 높진 않지만, 오락실 기판에서 PSG 여러개를 쓰는 경우에 VGM 플레이를 즐길 수 있구요.

그 외 Sec-PSG를 쓰는 자작 게임에서도 활용할 수 있겠습니다요.



13.4 OPM (YM2151)


MSX용 기본 사운드는 아니지만, 야마하 뮤직 컴퓨터에서 사용된 SFG 카트리가 있습니다. 여기에 OPM이 포함되어있어요.

Memory Mapped I/O로 되어있어서 SCC-I랑 슬롯이 겹치니까, 이걸 넣으려면 고민을 좀 해야겠는데요.

근데 막상 기존에 즐겨듣던 VGM들이 OPM + ADPCM로 구성된 경우가 대부분이라, OPM 하나만으로는 그닥 쓸모가 없겠더라구요.

고민할 필요도 없이 OPM 기능은 삭제합니다 ㅎ.ㅎ



13.5 프로토타입 제작


paraMSX-R에서 쓰였던 보드 한장을 개조해서 만들어봅니다.




열심히 에뮬을 구현해보아요~ ㅎ.ㅎ

로직 소모를 줄이기 위해 짱구를 요리조리 돌려서 VHDL 코딩을!

기존의 음악환경에서 불편했던 것들이 해결되니 좋네요. 특히 DCSG 때문에 큼지막한 Franky를 꽂아둘 필요가 없어져서 최고!ㅋ


근데, 갑자기 이런 생각이 머리를 스칩니다.

MMC/SD V4에 SCC-I와 DCSG, Sec-PSG 에뮬을 몽땅 넣으면 어떨까? 으흠...



암튼, 요렇게 AudioFactory 프로젝트는 종료됩니다.

참고로, 이 기기는 제가 다른 분들에게 제작해드린 적은 없습니다.

아마 나중에 만들어지는 기기들을 보시면, 이유를 알 수 있을거에요 ㅎ.ㅎ/


.

.


2017년에 재밌는 작업을 했던 게 있어서 하나 더 적어봅니다.


IOBox라는 건데요.

이건 별도의 주변기기를 의미하는 것은 아니고 시리얼 포트를 활용한 프로그램입니다.


MSX에서 VGMPLAY를 쓰다보니, 예전 486 도스에서 썼던 SOP 음악이 생각나더라구요.

OPL3를 사용하는 음악이라서 재밌는 것들이 많았는데, MSX에는 SOP 플레이어가 없죠 ㅎ.ㅎ


그래서, 요상한걸 하나 구상하게 됩니다.

윈도의 DOSBOX 프로그램을 수정해서 OPL3 I/O를 MSX로 전송해서 들어보면 어떨까? 였죠.


PC와 MSX 간의 통신은 RS-232C 카트리지를 사용합니다.

DOSBOX의 OPL3 에뮬코드에 시리얼포트로 데이터 입출력을 넣습니다.

사실 이건 예전에 TV 내장된 리눅스용 paraMSX 에뮬에서 썼던 방식이긴합니다.

그 때는 PSG와 키보드(PPI) I/O를 본체쪽으로 시리얼포트를 이용해서 구현했었죠.


암튼 그렇게 구현해서 만든 DOSBOX용 외장 리얼 사운드카드가 되겠습니다.

PAC-V의 불꽃쇼도 나오면 좋으니, 함께 넣어봅니다ㅋ



아래는 NOTEW 프로그램으로 SOP 음악을 재생하는 모습이네요.




요렇게 2017년은 마무리되었습니다.


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ


2024년 2월 29일 목요일

'시끌시끌 야구' 카트리지 제작

'시끌시끌 야구' 카트리지 제작


음성과 효과음이 PCM 사운드로 출력되는 야구 게임 카트리지가 있었습니다.


혹시 기억하시나요? ㅎ.ㅎ 'PLAYBALL'과 '불타라! 열투야구'입니다.

음성이 기록된 ADPCM 칩으로 소리를 내주고 있어요.


아래는 PLAYBALL 카트리지의 모습입니다.

투명한 케이스로 제작된 이유가... 아마도 ADPCM 칩이 내장된걸 뽐내려는 목적이겠죠? ㅎ.ㅎ




그 외 'Hard Ball' 게임에서도 음성출력이 되는데요.

본체의 SLOT 1에는 Hard Ball, SLOT 2에는 PLAYBALL을 함께 꽂아서 실행하면,

Hard Ball에서 SLOT 2에 있는 ADPCM 칩을 구동합니다.

결국 PLAYBALL 카트리지가 있어야, 음성/효과음을 들을 수 있습니다요.



.

.

.


여기까지 읽으셨으면, 제가 뭘 하려는지 눈치채셨겠지만ㅋ

Oraksil보드에 내장된 PCM player로 이 ADPCM 칩의 음성을 에뮬하는 거죠.


ADPCM을 H/W 로직으로 구현하려면 MoonBase처럼 큰 보드가 필요합니다만...

음성을 녹음해서 LPCM으로 바꿔 처리하면 쉽게 출력할 수 있어요~

그냥 용량 큰 플래쉬롬을 박으면 해결 ㅎ.ㅎ/


사실 음성지원 야구 카트리지는 작년말에 만들었는데, 올초에 TapTapRevolution 작업에 정신이 팔려서...ㅋ

TTR을 대충 완성한 후에야, 야구 카트리지 제작을 마무리했습니다요~


카트리지 이름은 '시끌시끌 야구'로 붙여보았습니다.

8개의 야구 게임이 들어있구요. 부팅하면 커서키(또는 조이패드)로 게임을 골라서 실행합니다.

게임 선택화면에서 제목도 음성으로 들을 수 있어요.


아...  Hard Ball은 별도의 PLAYBALL 카트리지 없이 음성출력이 되도록 수정되어있습니다.


아래는 들어간 게임들의 목록입니다. 발매년도 순으로 넣었어요.


1986. PLAYBALL (음성 지원)

1986. Hard Ball (음성 지원)

1987. Victorius NINE II

1988. 프로야구 FAN 텔레넷 스타디움

1988. 불타라! 열투야구 (음성지원)

1989. 프로야구 패밀리스타디움 - 페넌트레이스

1989. 프로야구 패밀리스타디움 - 홈런콘테스트

1989. PLAYBALL III



동작 모습은 아래 유투브로 구경하세욤~ ㅎ.ㅎ/




그럼, 이만~~

2024년 2월 24일 토요일

TapTapRevolution 제작 #4 - 노래와 함께~ 고고

이제 음악을 넣어보아요! ㅎ.ㅎ


1편 글에서 PCM 출력을 사용한다고 얘기했었는데요.

turboR, 뮤직모듈, Covox 등의 PCM은 CPU가 데이터 1바이트씩 전송(write)해야 되니까, CPU 부하가 매우 큽니다.

동영상 플레이어 같은 단순 반복작업인 경우는 타이밍 맞춰서 사용할 수 있겠습니다만... TTR에서는 못 쓴다고 봐야겠죠.


TTR 카트리지에는 8MB의 플래쉬롬이 내장되어있구요. 이 데이터를 8BIT PCM으로 자동 재생이 되는 기능이 들어있습니다.

CPU는 단지 Play/Stop 커맨드만 보내주면 됩니다. 노래는 그냥 쭈욱~ 출력됩니다요.

메인 프로그램에서 그래픽과 사운드 싱크만 잘 맞춰주면 OK입니다!


카트리지의 PCM 출력은 22.05kHz, 44.1kHz 모드가 있는데요.

TTR에서 쓰이는 곡은, 길이가 약 90초 쯤 됩니다. 44.1kHz PCM으로 변환하면 거의 4MB 분량이 나오게 됩니다.

22.05kHz PCM으로 변환하면 2MB 정도가 되니까, 8MB 플래쉬롬에 4곡을 넣을 수 있겠네요.

11.025kHz 등으로 샘플레이트를 낮추면 곡을 많이 넣을 수는 있겠지만, 음질 손해가 크니 22.05kHz로 갑니다요!


TTR에서는 22.05kHz 모드로 3곡을 넣고 남은 2MB 영역은, 프로그램 및 그래픽 데이터가 들어가게 되겠습니다.

결국 노래는 3곡이 들어가게 되겠네요.



그럼, 실제로 구동해보겠습니다. 잘 나오는지 한번 보셔요! ㅎ.ㅎ/~




.

.

.


으흠... 사운드는 딱히 더 설명할 부분이 없네요ㅋ


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


2024년 2월 23일 금요일

TapTapRevolution 제작 #3 - 그래픽을 더 멋지구리하게

게임의 메인화면은 아래처럼 표시됩니다.




화면은 3부분으로 나눠져있습니다.

윗쪽의 점수표시 영역, HP게이지 영역, 노트(화살표) 스크롤 영역


분할된 영역은 각각의 팔레트 테이블과 스프라이트(어트리뷰트 페이징) 및 비트맵 그래픽(VRAM 페이징)으로 처리됩니다.



1. 점수표시 영역




이곳은 수직 스크롤이 멈춰있고 점수만 표시합니다. 알레스트 시리즈에서 흔히 보이는 구성이에요.

폰트는 추후 이쁜놈(!)으로 교체될 예정입니다 ㅎ.ㅎ



2. HP 게이지




노트 타이밍에 맞춰 발판을 누르면, 게이지가 빨강에서 주황색까지 늘어납니다.

타이밍을 놓치면 줄어들고, 바닥나면 게임오버 되겠네요.


원작 DDR에서 이부분이 박자에 맞춰 파도타기를 하는데요.

요것도 비슷하게 구현해봅니다.

파도타기 그래픽은 아래처럼 미리 VRAM에 몽땅 그려놓습니다.

스크린5 모드는 VRAM 페이지가 4개라서, 이렇게 한 페이지를 훅~ 써버려도 부담(?)없습니다.




타이밍에 맞춰 수직스크롤을 해주면, 제자리에서 파도타기를 하는 듯한 모습으로 나오게됩니다.

2인플레이도 지원해야하니까, 오른쪽 2P 게이지는 반전해서 그려줍니다~


플레이 중 게이지를 줄여야 하는 경우는, 검정색 스프라이트를 겹쳐서 게이지 일부분을 가려주면 됩니다.

비트맵을 다시 그리는 건 느리기 때문에 이렇게 처리하는게 편해요.



3. 노트 스크롤 영역




상단에는 발판(버튼)을 누르는 타이밍을 보여주는 회색 화살표가 8개 나와있구요.

그 아래로는 비트맵 그래픽이 스크롤되며 올라갑니다.

흰색 가로선과 숫자는 곡의 마디를 표시하는 용도입니다.

이건 연습모드(무적모드)에서만 표시되니 참고하시구요.


먼저 화살표를 단일 컬러로 팔레트 애니메이션을 해보니, 생각했던 것만큼 이쁘진 않더라구요.

정박자, 반박자 화살표 각각 4등분해서 색칠을 해봅니다.

(16컬러 모드에서 컬러 절반(8개)을 화살표에 칠해버리는 만행을...ㅋ)




실제 화면에서는 아래처럼 팔레트가 적용되어 나타납니다.

화살표 꼬리에서 머리쪽으로 애니메이션 해주니, 훨씬 보기 좋네요 ㅎ.ㅎ/




.

.

.

사실 이 스크롤 영역에서는, 컬러 8개의 팔레트 애니메이션으로 다중 스크롤 효과를 넣으려고 했습니다.

근데 이게 워낙 흔한 테크닉이라서, 큰 감동(ㅋ)을 주기는 힘들고...

결정적으로 화면 대부분이 화살표 스크롤이라, 요놈들을 이쁘게 그려주는게 더 만족도가 높더라구요.

대신 단색의 배경으로... 암튼 그렇게 되었습니다~ ㅎ.ㅎ


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


2024년 2월 21일 수요일

TapTapRevolution 제작 #2 - 화살표를 넣으려면?

화살표(노트)를 그려넣고 스크롤 하는 것 자체는 V9938의 비트맵 전송커맨드와 수직스크롤을 쓰면 됩니다.

근데 화살표를 어디에 그려야하는지 먼저 알아야되잖아요? ㅎ.ㅎ


DDR에서는 노트 타이밍(박자)에 맞춰 화살표가 그려집니다.

실제로는 한화면 스크롤이 된후 상단에 왔을 때가 정 타이밍이니까, 미리 그려야겠죠?


먼저 이 노트 데이터를 만들기 위해, 간단한 프로그램을 하나 만듭니다.

목적은 원곡이 플레이되는 모습을 그대로 영상으로 캡쳐해서 그래픽을 분석하는 것이죠.


노트 타이밍은 정박자, 1/2박자, 1/3박자 등으로 나오게 되는데요.

일단 간단하게 정박자, 1/2박자를 쓰는 곡으로 골라봅니다.

DDR하면 제일 먼저 떠오르는 노래? '버터플라이이' 아이아이야~~ㅋ


플스용 DDR에는 연습메뉴가 있어서, 배경의 춤추는 아자씨(?) 없이 노트값만 쉽게 볼 수 있어요.





아래처럼 각 프레임에서 노트가 적중(!)하는 타이밍을 디텍션해서 해당 화살표값을 테이블로 만듭니다.




좌,하,상,우 각각 1비트로 표시하면, 더블 모드(1P+2P) 노트를 다 넣어도 8비트(1바이트)면 충분하군요.

반(1/2)박자 처리를 위해 BPM을 두배로 계산해서 테이블로 만들어둡니다.

툴을 구동하면 노트정보를 텍스트로 보여준 후 테이블값만 파일로 저장합니다.




B0036 = L  R [90]  <-- 36 BEAT(x2 박자)에 L R 노트가 나온다는 의미입니다. [90]은 테이블에 저장될 HEX 값이구요.



그럼, 이 데이터로 화살표를 그려보아요~ ㅎ.ㅎ


24 x 24 사이즈의 비트맵을 복사해서 그리는 것이라서 CPU, VDP에 부담이 조금 됩니다만,

박자 간의 여유가 있으니 로드(부하)를 잘 분산하면 큰 무리없이 그려낼 수 있습니다요.




참고로, 테두리 컬러(빨강, 파랑, 초록 등)로 나오는 부분은 각 루틴에서 CPU를 점유하는 시간을 나타냅니다.

VDP가 1프레임을 출력하는 동안이죠.

여담이지만, 넌인터레이스 60Hz 모드로 출력중이니까 총 스캔라인은 262개입니다.

에뮬에서 보이는 것 보다는 조금 더 많습니다요.

현재 CPU IDLE은 30~40% 정도 될 것 같네요. (스샷에 노란색으로 표시해놨슴다)


화살표 색깔이 다른 놈(?)은 반박자 노트입니다.

오리지널 DDR에서도 저렇게 다른색으로 보여주고 있어요. 플레이어가 실수하지 않게~ ㅎ.ㅎ


버튼(발판?)을 누르는 타이밍 표시는 스프라이트를 점멸해서 반투명으로 보여주고 있습니다.

회색 화살표 4개를 표시하려면 16x16 표준 스트라이트 12개가 필요합니다ㅋ

수평으로 6개를 쓰고 있어서, 더블모드 또는 2인모드를 구현하려면 스프라이트가 24개 필요한데요.

VDP의 제약으로 점멸(6개씩 교대로 깜빡임)을 쓸 수 밖에 없습니다요 ㅎ.ㅎ



여기까지만 보면 간단한 듯 한데요.

사실 반박자 노트가 연속으로 나오면, 아래처럼 화살표 2개가 겹쳐서 표시됩니다.




VDP에서 비트맵 논리연산 복사를 사용하면 쉽게 겹치도록 만들 수 있습니다.

(보통 이걸 소프트 스프라이트라고 부르죠)


근데, 이걸 실제로 쓰면 VDP 부하가 늘어나니까 조금 위험해질 수 있어요 ㅎ.ㅎ

일반 비트맵 복사는 메모리읽기 1번 + 쓰기 1번인데,

논리연산을 넣으면 메모리읽기 2번 + 쓰기 1번으로 처리되니까...

VDP 부하를 줄이기위해(실제로는 부하를 일정하게 만들기 위해), 겹치는 화살표를 미리 다 그려놓습니다.


정박자 화살표랑 반박자 화살표 2세트가 있으니까, 조합하면 4세트의 화살표가 있으면 됩니다.

그리고 스크롤 완료 후 화살표를 지울 때에도 반박자 화살표는 반쪽만 지워야하니까... 한세트 추가요~

화살표가 총 5세트가 되었네요!




실제 게임화면에서는 이렇게 나오게됩니다.




화살표 그리기는 요렇게 완성되었습니다.


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


2024년 2월 19일 월요일

TapTapRevolution 제작 #1 - DDR을 해보셨나요?




[서론]


예전에 오락실에서 비트매니아, 댄스댄스레볼루션 같은 리듬게임이 유행하던 시절이 있었는데요.

저는 이쪽엔 그닥 소질이 없어서 가끔 DDR, Ez2Dj의 쉬운 곡들만 눌러서 좀 해봤었네요.

결혼 초기에는 플스2에 DDR장판을 연결해서, 와이프랑 방방(?) 뛰면서 씐났던 기억도 나구요.

...벌써 18년전의 추억으로ㄷㄷ


갑자기 리듬게임 얘기는 왜 꺼냈냐구요?ㅋ


작년에 Ponpoko Remake를 만들 때, Oraksil이라는 이름으로 PCB를 만들었습니다.

대용량 플래쉬롬(8MB)과 PCM 출력을 활용하려고 만든건데요.

너구리 게임에는 PCM 출력이 없으니, 그닥 유용하게 쓰이진않았네요.

(첫 부팅 시 동영상이 나오도록 했는데, 여기도 일부러 PCM을 제거했다는 소문이...조용한 동영상ㅋ)


그 후 PCM 사운드를 활용하는 게임을 한번 만들어보자~ 라며 이런저런 생각을 해봤습니다.

.

.

역시나 아이디어 고갈ㅋ 사운드 PCM -> 음악 -> 리듬게임?

그냥 DDR 비슷한 게임(짭DDR)을 만들기로 결론을 냈습니다요~

이름은... TTR (TapTapRevolution) 입니다 ㅎ.ㅎ



[본론]


혹시 DDR을 안해보신 분은 아래 게임스샷을 한번 보시죠.




노래가 흐르고, 화면 아래에서 화살표(노트)들이 위로 올라갑니다.

타이밍 맞춰서 상,하,좌,우 발판을 눌러주면 됩니다.


먼저 게임이 구동될 사양을 정해야하는데요.


사운드의 경우는 H/W로 노래(PCM 데이터)를 출력하게 될테니, CPU쪽의 부담은 전혀 없습니다.

게임 로직은 플레이어 입력과 노트 타이밍을 확인하는게 대부분이죠?

CPU 부담은 적지만, 그래픽 부하(VDP 액세스)는 꽤 있을테니...

turboR 고속모드 보다는 일반 Z80 3.58MHz 모드가 더 효과적이겠습니다.


화면에는 많은 화살표 노트들이 나오게 될테니, 이건 스프라이트로 구현하면 좀 힘들겠네요.

물론 컬러를 단순하게 입혀주면 스프라이트 갯수 문제는 없을 수 있겠지만...

이왕이면 이쁜 그래픽이 좋지않겠습니까요? ㅎ.ㅎ

V9938의 비트맵 그래픽과 수직 스크롤을 활용하면 되겠습니다.


화살표들의 위로 올라가면서 색깔이 변하게 되는데요.

이건 팔레트 애니메이션으로 쉽게 처리가 되니 별문제 안되겠네요.

그래픽은 스크린5 모드(VDP G4 mode)로 결정합니다.


일단 도트부터 찍어보아요~

비트맵의 영원한 친구인 DD구락부와 blueMSX로 화살표를 그려보았습니다.




화살표의 크기는 24 x 24 픽셀입니다. 큼지막하니 비율도 좋고 모양도 이쁘네요.

우후~ 화살표만 봐도 게임의 절반은 완성한 듯한 기분입니다!! ㅎ.ㅎ


시작은 여기까지이구요. 다음편에서 이어지겠습니다.


그럼, 이만~ ㅎ.ㅎ/~


2024년 1월 26일 금요일

지난 20년 개발의 추억 #6 - paraMSX-R v1.1 마무리

월간 추억팔이 #6편이 나왔습니다~ ㅎ.ㅎ

지난 12월말에 글을 썼어야했는데 까먹었네요ㅋ


이전글을 보시려면, 아래 링크를 눌러주세요!

https://sharksym.blogspot.com/2023/07/20-1.html

https://sharksym.blogspot.com/2023/08/20-2.html

https://sharksym.blogspot.com/2023/10/20-3.html

https://sharksym.blogspot.com/2023/10/20-4-mmcsd-drive-v3.html

https://sharksym.blogspot.com/2023/11/20-5-paramsx-r.html



12.4 구조 변경


때는 2017년, 확장슬롯을 피기백으로 쓰는 구조를 결국 포기합니다.

물론 특정 확장슬롯에 최적화해서 제작하더라도 쓸모가 있겠습니다만...

결과적으로 paraMSX-R과 해당 확장슬롯이 한세트가 되어버리면, 쓰일 귀회를 많이 잃게 되겠죠.

paraMSX-R과 확장슬롯을 통합해서 만드는 방법뿐이라는 얘기가 되겠습니다.

이 방식은 수년 후 SLT-Turbo에서 쓰이게됩니다만,

paraMSX-R은 이 방식을 포기하고, 단독 카트리지의 형태로 제작하기로 결정했습니다.


뭐, 당연한 얘기가 되겠지만...

실제 사용 시, SLOT 1 = paraMSX-R, SLOT 2 = 확장슬롯 따로 연결이 되니까,

paraMSX-R에서 확장슬롯에 꽂혀있는 기기들을 직접 액세스하는게 불가능해집니다.


에뮬모드에서 주변기기를 어떻게 활용할 것인가? 이게 가장 큰 문제가 되겠어요.



12.5 우회 처리


그럼, 외부 기기들 중 필수가 되는 것들을 우회해서 활용할 수 있는 방법이 필요한데요.

지원되는 기기는 FMPAC (OPLL 제외), MSX-Audio (Y8950 제외), FontPack (폰트롬 제외)입니다.


정확히 말하면 우회 처리는 아니구요.

슬롯의 I/O로 동작가능한 부분은 기존 기기 그대로 구동하고,

메모리 영역(롬, 램, 매퍼 등)만 구현해서 넣은 것입니다요~

따라서 SCC-I, MPX 같은 메모리맵 I/O를 쓰는 사운드 칩은 활용이 불가능합니다.



12.6 기본 내장 기능


그 외 시스템 Flag, Kanji 폰트, 대우 한글폰트, PAC, 재미나 딜럭스박스 등, 자주 쓰이는 H/W도 구현해줍니다.

구동되는 본체(호스트)가 일제든 국산이든 상관없이, paraMSX-R의 내장 I/O와 충돌하지 않도록 구동됩니다.


따라서,

V9958 개조된 X-II에서 A1WSX 에뮬모드로 구동 후 Kanji 폰트롬 출력,

A1GT에서 X-II 에뮬모드로 구동 후 대우 데모 프로그램 실행

등의 상황을 연출할 수 있습니다.



12.7 가상 디스크


본체에 내장된 FDD를 연결하거나 외부 슬롯의 디스크를 연결해주는 가상의 디스크입니다.


원래 디스크롬은 마스터 디스크롬에서 슬레이브 디스크롬을 호출하는 방식인데요.

여기서는 가상의 마스터롬이 실제처럼 보이도록 만들어줍니다.

아래처럼 런처에서 슬롯을 선택할 수 있어요.




MSX에서 최대 4개의 디스크롬을 쓸 수 있는데, paraMSX-R에서는 일단 하나의 디스크롬만 매핑하도록 했습니다.

나중에 필요하면 기능을 추가할까 했는데, 6년이 흐른 지금도 딱히 떠오르는 활용 시나리오가 없네요. 그냥 패스~ㅋ


실제 동작은 아래 영상으로 구경하셔요!



12.8 롬디스크 부팅


요즘 실기를 쓰시는 분들은 보통 주변기기를 주렁주렁 달고 계시겠지만... (아니라구요?)

아무것도 없는 MSX2에 paraMSX-R을 쓰는 경우도 한번 생각해봤습니다.


디스크 드라이브가 없는 환경에서는 CALL PARAMSX 명령으로, paraMSX-R의 내장 롬디스크로 부팅이 가능합니다.

재부팅하면 PARAMSX.COM 프로그램이 자동으로 실행됩니다.


아래는 FS-A1에 paraMSX-R 하나만 꽂고, 대우 아이큐1000 모드를 구동 후 디럭스박스에 카세트로 로딩하는 모습입니다.

데이터레코더 대신 휴대폰으로 WAV파일을 재생했네요 ㅎ.ㅎ



12.9 보너스 기능


paraMSX-R은 오랫동안 고민해서 만든 결과물이긴한데, 조금 문제가...ㅎ.ㅎ

이게 실기를 켤때마다 사용하는 기기가 아니잖아요.

보통은 카트리지를 서랍에 보관하다 필요할 때 꺼내서 쓰는 상황이 되겠죠?

.

.

.

"Out of sight, out of mind"라는 말이 있습니다요.

카트리지가 안보이면 잘 안쓰이게 됩니다ㅋ


그래서 'paraMSX-R을 평상시에도 활용하고 싶다'라는 생각이 들더라구요.

어떤 기능이 좋을까 고민을 해봤는데, 그냥 램 2048KB를 몽땅 메모리매퍼로 구동하는 거였습니다. 단순! 간단!


H/W 특성 상, paraMSX-R을 기본슬롯에 꽂아야만 에뮬모드를 활용할 수 있으니...

확장슬롯에 꽂아서 부팅하면 자동으로 메모리매퍼 전용 모드로 바뀌도록 해놨습니다.

그리고, 카트리지의 EXIT 버튼을 누른채로 리셋하면 메모리매퍼 모드로 강제전환도 가능하구요.


나중에는 SLT-X 확장슬롯에서 기본슬롯 전환 기능을 넣어서, 좀 더 편하게 쓸 수 있도록 되었네요.

뭐, 그렇게 paraMSX-R은 확장슬롯에 붙박이로 자리잡게 되었습니다요~ ㅎ.ㅎ



paraMSX v1.1에서 최종완성이 되었네요.


그럼, 다음편에서 뵙겠습니다! ㅎ.ㅎ


2024년 1월 18일 목요일

MMC/SD Drive V3/V4 - BIOS & Tool v5.73

Download: 20240118_MMCSD_Drive_V3_V4_BIOS_Tool_v573.zip


--------------------------------------------------

MMC/SD Drive(tm) V3/V4 - BIOS & Tool

    By Yeongman Seo <sharksym@hitel.net>

--------------------------------------------------



[ BIOS & Tool v5.73 ]


- MegaROM


  ASCII 8K (SRAM) 매퍼 지원 개선

  -> 태양의 신전, Dires, Deep Dungeon II, Elslid,

     Heroes of the Lance, Kisei Shogi, Shougi Shinan 2,

     Syougun, Ultima Exodus, 사령전선, Wizardry, Xanadu


  ASCII 16K (SRAM) 매퍼 지원 개선

  -> A-Train, 대전략, Harry Fox Special, Hydlide 2,

     Jyansei, Mahjong Goku, 수퍼 대전략


- GameRunner


  V4에서 사용 시, 내장 SCC로 구동하도록 변경 

  -> V3의 '/G' 옵션 호환 용




[ 업데이트 가이드 ]


1. MMCSD.COM, MMCSD.OVL 두개 파일을 SD카드에 복사.

   기존 파일을 덮어쓰면 됩니다.(예:UTILS 디렉토리)


2. MMCSD573.ROM 파일을 SD카드 루트에 복사.


3. MSX-DOS2 부팅 후 명령창에서 아래처럼 입력.

   A:\>MMCSD MMCSD573.ROM


4. 다운로드 완료 후 리턴키 눌러서 재부팅.


5. 끝


MRC의 즐거운 장터


오늘은 또 재밌는 댓글이 있어서 소개해드려요~ ㅎ.ㅎ




원문은 MRC 장터글입니다. 즐거운 밤 되셔요!

https://www.msx.org/forum/msx-talk/trading-and-collecting/wtb-sharksym%E2%80%99s-mmcsd-cartridge-v3-andor-v4


2024년 1월 14일 일요일

[강좌] 09. 같은 종류의 사운드 카드를 여러개 사용

확장슬롯에 사운드 카드를 주렁주렁 달아서 쓰는 분들이 꽤 있으실텐데요 ㅎ.ㅎ

이 때 기억해야 할 내용들을 조금 정리해보았습니다.


주변기기의 I/O는 메모리맵 I/O (Memory Mapped I/O) 또는 포트 I/O (Port Mapped I/O)를 사용합니다.

물론 둘을 함께 쓰는 경우도 있구요.



사운드를 I/O 종류로 나누어 보면 이렇습니다.


1. 메모리맵 I/O 전용


SCC/SCC-I

OPM (YM2151)

OPNB (YM2610)

MP3/WMA (MPX)


하나의 슬롯에 두개의 기기를 꽂을 수는 없으니, 기기간의 메모리 영역이 충돌하지 않습니다.

예를 들어 SCC-I 카트리지 4개를 확장슬롯에 몽땅 꽂아놓아도 각각 동작합니다.

이 기기들은 아무 생각없이 꽂아주시면 됩니다 ㅎ.ㅎ



2. 포트 I/O 전용


PSG (AY-3-8910, YM2149)

Secondary PSG

MSX-AUDIO (Y8950)

MSX-MUSIC (YM2413)

MIDI Saurus

MSX-MIDI (A1GT, µ-pack)

u8 PCM (turboR, Covox, MusicModule)

s16 PCM (MoonBase)

DCSG (SN76489AN)

WSG (T-Wave)

OPL4 (YMF278B)

OPNA (YM2608)


포트 주소가 충돌하면 기기에 문제가 생길 수 있으니, 기본적으로 한개만 쓰셔야합니다.

근데 여러개를 지원하는 기기들이 있으니 이건 따로 숙지해주세요!

이 기기들은 부팅 시, BIOS INIT 루틴에서 시스템에 존재하는 I/O포트를 검사 후 포트 주소를 바꿉니다.


2.1 MSX-AUDIO 카트리지를 2개 사용


파나소닉의 오리지널 MSX-AUDIO (FS-CA1) 카트리지에 한합니다.

첫번째 Y8950은 C0H,C1H 포트로 설정되고,

두번째 Y8950은 C2H,C3H 포트로 설정됩니다.


주의)

필립스, 도시바의 저가형 Y8950 카트리지는 포트 ON/OFF가 불가능하며 C0H, C1H 포트로 고정됩니다.

중복으로 사용하시면 안됩니다. '필립스랑 도시바랑 함께 쓰면 되나요?' 등의 질문은 하지마시구요ㅋ

물론 파나소닉의 MSX-AUDIO와 함께 쓰는 것은 가능합니다.

MoonBase + OPL4를 연결해서 MSX-AUDIO 모드를 쓰는 것도 가능하구요.

참고로, MoonBase도 FS-CA1와 동일한 방식으로 포트를 선택합니다.


2.3 MMC/SD Drive V4를 2개 사용


첫번째 V4의 DCSG는 49H, PCM은 91H 포트로 설정되고,

두번째 V4의 DCSG는 3FH, PCM은 0AH 포트로 설정됩니다.



3. 메모리맵 I/O와 포트 I/O 모두 사용


FMPAC만 이 구조를 사용하는 것으로 알고있는데요. 혹시 더 있는지 모르겠네요 ㅎ.ㅎ


FMPAC은 PAC(SRAM 카트리지)에 FM 사운드(OPLL)가 추가된 기기인데요.

이 카트리지는 기본적으로 메모리맵 I/O로 OPLL 칩이 동작합니다.

만약 포트 I/O로 사용하고 싶다면, 스위치(메모리맵 I/O의 7FF6H에 있습니다)를 따로 켜야합니다.

본체 내장된 MSX-MUSIC은 메모리맵 I/O 없이, 항상 포트 I/O 모드로 동작합니다.

당연히 S/W를 만드는 입장에서는 FMPAC을 포트 I/O 모드로 쓰는게 편하겠죠?


그럼 여기서 의문이 하나 떠오를겁니다...

본체에 FMPAC을 여러개 꽂거나, MSX-MUSIC이 내장된 본체에 FMPAC을 추가하면 어떻게 될까요?


3.1 FMPAC을 여러개 꽂는 경우


각 슬롯의 메모리맵 I/O를 통해 각 OPLL을 따로 구동가능합니다.

일부 데모 프로그램에서 이렇게 사용하는 것으로 알려져있어요.

그 외 일반 프로그램에서는,

우선순위가 높은 슬롯의 FMPAC 한개에서만 사운드가 출력되고, 두번째 FMPAC은 PAC처럼 동작하게 됩니다.


3.2 MSX-MUSIC이 내장된 본체에 FMPAC을 꽂는 경우


FM 사운드는 본체의 OPLL에서 소리가 출력되며, FMPAC은 PAC처럼 동작하게 됩니다.


만약 본체의 MSX-MUSIC 슬롯보다 FMPAC 슬롯의 우선순위가 높다면, FMPAC의 포트 I/O 모드가 켜질 수 있습니다.

그러면 FMPAC의 OPLL과 본체의 OPLL이 동시에 동작하는 현상이 발생합니다.

두 칩에서 소리가 중복으로 출력되면, PSG와 FM밸런스가 무너지니까 이렇게 쓰시면 안됩니다요.

그리고 두 칩의 출력이 완벽하게 같지않을테니, FM 소리도 좀 이상할거에요.


참고로, 산요 MSX2+ 기종을 보면 SLOT 3쪽에 내장 MSX-MUSIC이 배치되어있는데, 그닥 좋은 설계는 아니라고 봅니다.


주의)

본체 내장형 MSX-MUSIC을 카트리지로 만든 기기를 쓰시는 분들이 많은데요. 알고계시면 좋습니다.

오래전 유럽에서 만들어진 FM-PAK이라는게 있습니다. 국산으로는 재미나 뮤직박스도 있었구요.

MSX-MUSIC이 없는 본체에 꽂아서, MSX-MUSIC 내장형 본체처럼 만들어주는 기기인데요.

2000년 이후 지금까지도 클론 카트리지가 꽤 제작이 된 걸로 알고 있습니다.

이 카트리지는 본체에 한개만 꽂으셔야 합니다!


그리고, FM-PAK과 FMPAC을 함께 쓰는 경우는 FMPAC을 우선순위가 낮은 슬롯에 꽂으면 됩니다.

뭐, 애초에 FM-PAK을 꽂지 않으면 문제가 생길 여지도 없겠지만요 ㅎ.ㅎ

만약 본체를 개조해서 FM-PAK (또는 클론)을 내장하는 경우는, 가능한 우선순위가 높은 슬롯에 장착해야합니다.

그냥 SLOT 0-X에 넣는다고 생각하심 되겠습니다요~



쓰다보니 FMPAC 얘기가 길어졌는데, 하나만 더 추가해봅니다 ㅎ.ㅎ

앞의 3.1, 3.2에서 OPLL 칩이 중복으로 장착되더라도 소리는 하나만 출력되니 괜찮다고 설명드렸는데요.

이건 정상적(ㅋ)으로 만든 S/W를 사용하는 경우이고, 늘 그렇지만 예외가 있습니다.


마이크로캐빈에서 만든 게임에서는 OPLL 칩들이 동시에 출력되는 문제가 존재합니다.

XAK, XAK2, 프린세스메이커, 프레이, 환영도시 정도만 테스트해봤는데 모두 같은 문제가 있네요.

(심지어 터보알 전용 게임도 이렇게 해놨...ㅋ)

일단 '마이크로캐빈' 이름을 기억해주세요!


타사의 게임들은 별 문제없었습니다. 테스트해본 것들은 적어보면,

알레스트, 알레스트2, 레이독2, 삼국지2, 신장의야망(전국군웅전),

피드백, 팩매니아, 퀸플, 테트리스, 파이어호크, 싸이코월드, 파이널판타지

이 정도가 되겠습니다.


조금 특이한 게임은 '드래곤슬레이어6'였는데요.

요놈은 아시다시피 SRAM 세이브를 지원하지만, PAC은 인식불가이고 FMPAC만 가능한데요.

아마 FMPAC 체크 루틴과 FM 사운드(OPLL) 초기화 루틴을 섞다가 꼬인건지...

암튼 이 게임에서도 두개의 OPLL에서 동시에 소리가 출력됩니다. 참고하세요.


그럼, 즐거운 일요일 되셔요~ ㅎ.ㅎ


2024년 1월 1일 월요일

MRC의 멍청이

이젠 이름을 '멍청이'라고 해놨군요.

MRC wiki가 쓰레기통이 되는 건 그닥 상관없지만, 트롤 놀이터가 된 MRC는 좀 불쌍...ㅋ



사실 어디든 쓰레기를 버리는 사람은 있습니다. 그걸 어떻게 처리하느냐가 문제죠 ㅎ.ㅎ


M File Manager v4.3 for MSX-DOS2

Download: M_v4.3_20240101.zip 


----------------------------------------------------------------

    M File Manager v4.3 for MSX-DOS2 (2024-01-01)

        By Yeongman Seo <sharksym@hitel.net>

----------------------------------------------------------------


* UPDATE


  @ 기능 변경/개선


  - 메모리 관리 및 코드 속도 최적화


  - SHIFT + CTRL 동시에 누를 때,

    펑션키 메뉴를 우선으로 표시하며 하단 CTRL 도움말은 표시안함


  - About 다이얼로그에 폰트팩의 인식상태 추가


  - 도움말 파일(M_IL.HLP) 마지막 라인의 표시문제 수정