2023년 11월 30일 목요일

지난 20년 개발의 추억 #5 - paraMSX-R

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


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

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



12. paraMSX-R 


이제 2016년으로 넘어갑니다.

저의 MSX 환경은 8년째 비슷하게 유지가 되고있네요.

GT의 상단슬롯은 게임팩 또는 주변기기 테스트 용도로 비워두고,

후면슬롯에는 확장슬롯(서브슬롯 6개)에 주변기기가 주렁주렁 달린 모습이죠.


어느날 문득 이런 생각이 들더라구요.

주변기기들이 모두 GT의 후면 슬롯(확장슬롯)에 모여있으니, 본체와 확장슬롯 사이에 뭔가를 넣어보면 어떨까?

확장슬롯 및 주변기기들을 몽땅 피기백으로 올려서 쓰는 기기를 만들게 됩니다 ㅎ.ㅎ



12.1 머신 에뮬레이터


가상머신이라고 부르긴 애매하고, 그렇다고 완전한 에뮬이라고 할 수도 없고.

외부기기들은 그대로 연결되어 사용되지만, 내부의 H/W는 우회하는 방법들...


사실 H/W 자체의 주기능은 I/O remap입니다만, 이게 가능하게 되면 SLOT 환경을 속일 수가 있겠죠?

SLOT의 메모리 영역과 I/O 액세스를 마음대로 바꿀 수 있다면, 원래는 구현할 수 없는 것들(SLOT 0 개조)을 해볼 수 있습니다.

예를 들면, GT를 아이큐2000처럼 동작하게 하거나, WSX를 아이큐1000 처럼 보이도록 하는 것들이요 ㅎ.ㅎ


기기의 이름인 paraMSX-R은 사용자 입장에서 쉽게 이해할 수 있는 이름을 붙이려고 고민하다가 나온 이름입니다.

윈도용 MSX 에뮬레이터인 paraMSX를 실기(Real Machine)에서 구동하는 경험을 만들어주는 느낌같은거라고 보시면 되겠습니다.


아래 영상은 제 GT에서 대우 아이큐1000의 환경을 만들어본 모습입니다.



나중에는 런처의 UI도 윈도용 paraMSX와 유사하게 만들게됩니다.

아래는 2017년에 찍은 UI 데모영상이네요.





12.2 외부기기는 피기백으로


원칙적으로 I/O remap을 구현하려면 본체의 Z80과 BUS 사이에 기기가 설치되어야합니다.

근데 대부분 MSX들(후기형)이 Z80을 내장한 MSX-ENGINE을 쓰기 때문에 이런 개조가 불가능하죠.

그래서 CPU가 명령어 fetch 할 때, 오퍼랜드의 포트 주소를 바꾸는 식으로 구현이 되어있습니다.

단순 메모리 R/W에서는 CPU는 원래 코드로 인식하지만, 실제 실행될 때는 코드가 바뀌는 것이죠.

그냥 코드가 런타임으로 패치되는 방식이라고 이해하셔도 무방할 듯 싶습니다.


신호의 흐름은 이런식이겠죠?

MSX-ENGINE (Z80 + 내장 I/O) <-> paraMSX-R <-> 확장슬롯(외부 S/W, H/W)


확장슬롯은 paraMSX-R이 생성한 SLOT 1,2,3 중 하나(기본슬롯)만 연결이 되구요.

paraMSX-R 내부에서는 SLOT 0과 확장슬롯을 제외한 나머지 슬롯에 내장기기를 구현(탑재)합니다.


일단 구조설명은 여기까기만 하겠습니다요.

더 자세한 내용은 게시판에서 'paraMSX-R 제작'으로 검색해서 보셔요~ ㅎ.ㅎ


아래 사진은 GT의 후면슬롯에 paraMSX-R을 장착하고 확장슬롯 케이블이 연결된 모습입니다.



만약 머신 에뮬의 기능이 꺼진 상태에서는 paraMSX-R는 모든 신호를 확장슬롯으로 bypass합니다.

평상시엔 paraMSX-R을 안 꽂은 것과 똑같다는 얘기에요.



12.3 난관과 마무리


paraMSX-R v1.0 보드에 저의 확장슬롯(6슬롯)을 연결해서 이리저리 테스트를 해보니, 문제점이 좀 발생하네요.

BUS 신호들이 여러 단계의 버퍼 및 스위칭을 거치게 되니까, 결국 코드 remap 타이밍을 못 맞추는 경우가 생기더라구요.

물론 주변기기에 따른 편차도 있구요.


결국 이 문제 때문에 paraMSX-R의 피기백 구조는 보류합니다.


물론, 확장슬롯 자체를 보드에 통합하는 방법도 생각해봤는데요, 이건 컨셉을 모호하게 만드는 것 같아서 안되겠더라구요.

다른 확장슬롯을 활용 못하도록 강요하는 것은 바람직한 방향이 아니겠죠?


차라리 외부슬롯의 사용은 제약이 좀 따르더라도, paraMSX-R을 단독 카트리지로 만들고 자체의 에뮬기능을 더 넣는 방법은??

원래 계획했던 것과는 상당히 다른거라서, 이건 좀 고민해보기로 합니다. (결국 이 방안으로 가게됩니다 ㅠ.ㅠ)


이렇게 paraMSX v1.0은 미완성으로 마무리되었네요~



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


2023년 11월 9일 목요일

빠른 8BIT 컴퓨터가 필요한 이유가 뭐에요?

일주일 전에 파라동에 글을 하나 올렸습니다.

빠른 8BIT 컴퓨터가 있으면 좋겠다고 생각하시는 분들께, 왜 필요한지 이유를 여쭤보았는데요.

필요한 이유를 적어주신 분은 아무도 없었구요 ㅎ.ㅎ


만약 빠른 컴퓨터가 나온다면 '이런 기능이 있으면 활용가능' 등의 의견을 주신 분이 2명 계셨습니다.

재밌게도 두분의 댓글 내용이 똑같았는데, 요약하면 이렇습니다.

-> 동작 속도를 실시간으로 조절하는 기능: 기존 게임 진행 시 동작이 느린 경우 플레이 속도를 올려줄 수 있다


물론 여기서 중요한 건, 시스템 속도를 조절하더라도 그래픽, 사운드, 주변 H/W가 오동작하지 않도록 되어야겠지요.

그리고 게임 진행도 적당히 빨라져야합니다.

기존 트윈비, 악마성 드라큐라, 메탈기어 등의 게임들을 turboR 고속모드로 구동해보신 분들은 이미 경험해보셨으니 잘 아시겠죠? ㅎ.ㅎ


네, 이게 전부입니다.


-끝-



.

.

.


여기서부터는 보너스입니다.


지난 20년간 "빠른 CPU에 그래픽, 사운드가 향상된 MSX가 나오면 좋겠다" 이런 얘기는 수도 없이 들었습니다만...

"그런 컴퓨터가 나오면 뭘 하실거에요? 빠른 컴퓨터가 왜 필요하세요?"라고 대놓고 여쭤보지 못했습니다.

왜 그런 얘기를 하시는지도 알고 있고, 그런거 물어보면 대화만 중단된다는거 알고 있으니까요 ㅎ.ㅎ


뭐, 우리도 그렇고, 외국 유저들도 마찬가지인데요.

고성능 8비트 호환 컴퓨터가 나온다고 해서, "내가 거기에 맞는 S/W를 만들겠다"라고 얘기하는 사람은 거의 없습니다.

결국 초기 번들된 데모 프로그램 한두개 외엔 딱히 할 게 없을거에요.


근데 이 컴퓨터의 가장 큰 문제점이 뭐냐면요.

오리지널 기종(예: MSX, 애플2, ZX 스펙트럼, 코모도어64 등)과 비교하면 엄청난 고성능이겠지만,

현재 여러분들이 쓰시는 데스크탑, 노트북, 휴대폰에 비하면 한없이 초라한 성능입니다.


결국 고성능 8비트 컴퓨터로 나오게 될 S/W는 20년전 윈도XP 시절에 썼던 프로그램들 수준에도 못 미치게 될거라는 걸 알고 있습니다.

빠른 8비트 컴퓨터로 멋진 그래픽에 MP3로 BGM을 넣어서 게임을 만들더라도,

돌아오는 반응은 "수고 많으셨어요!" 정도의 덕담으로 끝날겁니다.

누군가가 웹브라우저를 만들어도, 이걸로 네이버 카페에 접속해서 글을 읽는 사람이 있을까요?


활용할 S/W가 개발이 안되는 것도 문제입니다만,

막상 S/W가 개발되어 나오더라도, 내가 활용할 이유를 찾아야 한다는 것도 큰 문제입니다.


컴퓨터나 휴대폰에 에뮬레이터를 설치해서 쓰는 분들이 많은데요.

그렇게 쓰는게 제일 활용도가 높으니 그런거지. 뭐, 딱히 다른 이유가 있겠습니까요? ㅎ.ㅎ


아마 이런 질문을 하실 분도 계실 듯 한데요.

'고성능의 MSX3가 나오면, MSX1 용 게임을 제작할 때에도 더 편리하지 않을까요?'

저의 답변: 그냥 PC(데스크탑, 노트북)에서 개발하는게 훨씬 편하고 빠릅니다.


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


2023년 11월 4일 토요일

오랜만에 구버전의 paraMSX를 실행해보았어요!

지난주 파라동에서 펜티엄III 노트북을 나눔으로 받아왔습니다.

사양은 펜티엄 III 900MHz, 램 256MB입니다.


디스플레이가 망가진 상태라서, 힌지째 분리 후 외부 LCD 모니터에 연결해서 사용합니다.

누락된 INS키캡은 그닥 쓸모없는 'Sys Rq'키캡으로 바꿔 달았더니 쓸만하네요! ㅎ.ㅎ


옛날 노트북에는 옛날 프로그램을 깔아주는게 좋겠죠?ㅋ

그럼, paraMSX v0.48b 버전을 실행해봅니다. 잘 돌아가네요! ㅎ.ㅎ

(노트북 아래에 있는 X-II랑 WSX는 신경쓰지 마세요. 그냥 노트북 받침대입니다 ㅎ.ㅎㅋ)




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



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