처음 계획은 NES 롬에서 그래픽, 사운드 등의 데이터들만 추출해서 윈도우 어셈블리로 리메이크 하려는 것이였습니다.
하드웨어 공부하고 프로그래밍 하다보니 데이터의 90% 이상은 쉽게 추출하고 출력할 수 있었는데 알고리즘은 소스를 처음부터 끝까지 분석하지 않는 이상 제대로 구현할 수가 없어 소스를 보기 시작했습니다.
소스를 보니 8비트 하드웨어의 한계를 뛰어넘기 위해 현재는 거의 사용되지 않는 특이한 어셈블리 기법들이 난무해서 소스를 읽는 것 만으로는 너무 복잡해 어셈블리 소스를 최다한 살리는 방식으로 윈도우 어셈블리로 포팅을 하기로 결정했습니다.
프로그래밍을 좀 하다보니 지금처럼 시간 남을 때 틈틈히 하는 식으로 작업하면 2~3개월 정도는 걸릴 것 같습니다.
윈도우 포팅이 끝날때 쯤에는 NES 프로그래밍에 완전히 익숙해져 있을테니 겸사겸사 에뮬레이터도 개발할 생각입니다.
둘다 합쳐 3~4개월 정도면 끝날 것 같은데 생각해보니 에뮬레이터를 어셈블러로 먼저 개발해 본 후 윈도우 포팅을 하는게 둘 다 개발할 경우 더 적은 시간이 걸리겠더군요.
이미 완벽한 에뮬레이터가 나온 하드웨어라 제작하지 않을 생각이였지만 마리오 개발 2~3개월 걸릴 걸 에뮬레이터 1개월 정도 걸려 개발하고 마리오를 1~2개월에 완성하는 게 더 좋을 것 같네요.
수많은 규격들 다 지원하지 않고 일반적은 NES 롬만 지원하는 에뮬레이터 개발은 한달이면 충분하지 않을까 합니다.
NES 에뮬레이터 제작과 슈퍼마리오 윈도우 포팅 성공적으로 끝나면 MSX2 용슈퍼마리오를 제작해 볼까 생각중입니다.
옛날 슈퍼보이라고 국내에서 슈퍼마리오 짝퉁으로 만든게 있었는데 형편 없었거든요.
MSX 프로그래밍은 해본 적이 없는데 요즘 레트로 하드웨어 프로그래밍이 워낙 재미있어서 이것 저것 해보고 싶네요.
요약하면
리메이크에서 포팅으로 전환했다가 에뮬레이터 제작후 포팅으로 변경합니다.
NES 에뮬레이터, 슈퍼마리오 윈도우 포팅 성공적으로 끝나면 MSX2 슈퍼마리오 브로스 제작 생각중입니다.
에뮬레이터, 윈도우 슈퍼마리오, MSX2 슈퍼마리오는 전부 해당 기종의 어셈블러로 개발할 생각입니다.