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) 마지막 라인의 표시문제 수정