Tiny Emulators - 작은 에뮬레이터 모음
(floooh.github.io)- 고전 CPU부터 8비트 컴퓨터와 아케이드 시스템까지, 각 기종의 소프트웨어를 바로 실행할 수 있는 에뮬레이터 페이지를 한곳에 모음
- Visual 6502 Remix·Visual Z80 Remix와 함께 Amstrad CPC, ZX Spectrum, Commodore, Acorn Atom, Robotron 계열 등 다양한 시스템을 제공함
- URL의
type,file,input,joystick,exp,mod매개변수로 기종과 디스크 이미지, 초기 입력, 조이스틱, RAM 확장 및 모듈 구성을 지정할 수 있음 - BASIC, FORTH, ASMDEV, CP/M 2.2와 다수의 CPC·C64·VIC-20·KC85 데모 및 게임을 포함하며, Boulderdash 같은 작품은 여러 기종 버전을 비교해 실행할 수 있음
- 일부 항목은 시작 키나 명령어 입력, 조이스틱 선택이 필요하고 Demoizart에는 스트로브 경고가 있으므로 실행 조건을 함께 확인해야 함
CPU 동작 시각화
- Visual 6502 Remix: 6502 시각화
- Visual Z80 Remix: Z80 시각화
지원 컴퓨터 에뮬레이터
-
Amstrad 계열
-
ZX Spectrum 계열
-
Commodore 계열
-
기타 시스템
- Acorn Atom
- LC-80
- Robotron Z1013
- Robotron Z9001: BASIC과 RAM 모듈을 포함함
- Robotron KC87: BASIC 실행 후 Enter를 입력함
언어와 개발 환경
- FORTH for KC85/4: M026 모듈과
forth.853이미지, 초기 명령 입력을 지정함 - FORTH for Z1013: Z1013 64KB 구성에서 실행함
- BASIC for Z1013: Z1013 64KB 구성과
kc_basic.z80을 사용함 - ASMDEV for KC85/4: M027 모듈과
develop.853이미지, 초기 명령을 지정함 - CP/M 2.2 for CPC:
6128sp_4.dsk를 불러온 뒤|cpm을 입력함
Amstrad CPC 데모
-
초기 CPC 데모
- DTC
- Tire Au Flan: Space를 눌러 진행함
- Wolfenstrad
- Byte'98
- Ecole Buissonniere
- Demoizart: 스트로브 경고가 있음
- Logon's Run
- YAP!
- Backtro
- Isometrikum
-
추가 CPC 데모
- SotB Demo:
Preview 1을 선택한 뒤 Space를 누름 - Points Barres: Space를 눌러 진행함
- Still Rising
- Octopus Pocus
- Gloire a Piou!
- phX / Condense
- Batman Forever
- CRTC
- Wunderbar
- Phortem
- Pheelone
- Phreaks
- Phat 2
- Wobbler
- Battro
- SotB Demo:
Commodore C64와 VIC-20 데모
-
C64 데모
-
VIC-20 데모
- PPY:
maxram확장을 사용함 - Muna.Paluu: 8KB RAM 확장을 사용함
- PPY:
KC85 데모와 게임
-
KC85/4 데모
-
KC85/3 게임
- Digger: M022 모듈을 사용함
- Jungle: M022 모듈을 사용함
- Pengo
- House
- Cave
- Cave 대체 버전: 더 나은 대체 버전임
- Labyrinth
- Pacman:
PACMAN을 자동 입력함 - Ladder:
LADDER를 자동 입력함 - Mad Breakin: M022 모듈을 사용함
-
KC85/4 게임
- Chess:
CHESS를 자동 입력함 - Enterprise
- Tetris
- Sokoban
- Chess:
여러 기종으로 제공되는 게임
-
Boulderdash
-
Bomb Jack
-
Cybernoid
-
Arkanoid 계열
- Arkanoid for CPC
- Arkanoid RoD for CPC
- Arkanoid RoD for ZX128: Sinclair 1 조이스틱을 사용함
-
Silkworm
-
Chase HQ
-
Ghosts'n'Goblins
-
Bruce Lee
-
Head over Heels
-
Nebulus
단일 기종 및 아케이드 게임
-
아케이드와 C64
- Pengo Arcade:
1로 코인을 넣고 Enter로 시작함 - Zaxxon for C64
- Dig Dug for C64
- Pengo Arcade:
-
CPC 게임
-
ZX Spectrum 게임
- Batty for ZX48K
- Great Escape for ZX128: Kempston 조이스틱을 선택함
- Flying Shark for ZX48K: Kempston 조이스틱을 선택함
- Cyclone for ZX48k: Kempston 조이스틱을 선택함
- Exolon for ZX48k: Kempston 조이스틱을 선택함
- Quazatron for ZX128: Kempston 조이스틱을 선택함
- Rainbow Islands for ZX
- Sir Fred for ZX48K: Kempston 조이스틱을 선택함
-
KC85/3
- Breakout:
BREAKOUT을 자동 입력함
- Breakout:
-
Acorn Atom
- Chucky Egg:
*LOAD후 Space로 시작함 - Jet Set Willy:
*LOAD후JOYMMC를 선택함
- Chucky Egg:
-
VIC-20
-
Robotron Z1013
댓글과 토론
Hacker News 의견들
-
-preview가 붙은 URL은 몇 가지를 시험하려고 만들었던 것으로, 2021년 이후 갱신되지 않은 낡은 주소다. 최신 주소는 https://floooh.github.io/tiny8bit/이다
핀 에뮬레이션 외에도 CPU를 사이클 단위로 진행시키는 점이 흥미롭다. CPU가 시스템의 특별한 제어자 역할을 하지 않고 다른 칩과 함께 틱마다 움직인다. Z80에서는 명령어 하나당 분기 하나가 아니라 명령어 사이클마다switch-case분기 하나를 두며, 자세한 방식은 https://floooh.github.io/2021/12/17/cycle-stepped-z80.html에 정리했다
원래 크리스마스 휴가 때 주로 작업하던 프로젝트였고 2023년 이후에는 거의 손대지 못했다. 그 뒤로는 sokol과 Dear ImGui 의존성을 갱신하고, 가끔 https://www.pouet.net/과 https://csdb.dk/에 올라온 새 데모를 추가한 정도다 -
이 프로젝트를 보니 0x10c가 강하게 떠오른다. 가상 미니컴퓨터가 존재하는 세계관에 여전히 매료되어 있으며, 우주여행과 사이버펑크를 바탕으로 몇 가지를 구상하고 칩 설계에는 Zachtronics풍 요소를 섞었으며 판타지 변형까지 생각해 봤다
다만 아무리 봐도 극도로 틈새적인 소재라는 생각을 떨칠 수 없다. 관심 있다면 여기서 이야기하거나 프로필의 이메일로 연락해도 좋다. 참고: https://en.wikipedia.org/wiki/0x10c- 0x10c를 바탕으로 기본적인 Zachtronics식 퍼즐 게임을 만든 적이 있으며, 지금까지도 가장 좋아하는 구상 중 하나다. 모두가 코딩에 몰두하는 출시 초기에도 전 세계 이용자가 수백 명 정도일 것 같아 재정적으로는 끔찍한 선택이 된다
우주선 하드웨어를 다루려고 이용자가 운영체제 전체를 직접 만들고 싶어 할지, 게임 안에 소프트웨어 시장을 두고 우주선 제어 프로그램을 사고팔게 해야 할지부터 어렵다. 누군가 보상도 없이 DCPU용 Windows 3.1을 정말 만들까 싶다
성공시키고 싶지만, 예전에 나온 오픈소스 게임은 BIOS 수준까지 내려가 대부분에게 지나치게 기술적이었다. 단지 우주선을 움직이려고 API/ABI 작업부터 하고 싶은 이용자는 드물 것이다
- 0x10c를 바탕으로 기본적인 Zachtronics식 퍼즐 게임을 만든 적이 있으며, 지금까지도 가장 좋아하는 구상 중 하나다. 모두가 코딩에 몰두하는 출시 초기에도 전 세계 이용자가 수백 명 정도일 것 같아 재정적으로는 끔찍한 선택이 된다
-
이 프로젝트의 핀 수준 에뮬레이션 방식이 마음에 든다. 각 구성요소가 자체 완결적이고 모듈식으로 동작해 유연성이 크다
극도로 얇지만 명시적으로 정의된 인터페이스는 상호운용성 측면에서 아직 충분히 탐구되지 않은 영역일 수 있다. 양쪽이 정해진 시점에 값을 표본화하고 시간상 접근을 위한 소수의 신호만 제공한다면, 핀이든 소수의 레지스터든 메모리 매핑 영역이든 적합성 시험에 훌륭한 대상이 된다
AI 생성 코드 시대에는 명시적인 적합성 요구사항을 둔 모듈식 구성요소가 특히 유용할 수 있다. 블랙박스 내부가 어떻게 구현됐든 요구된 동작을 위반할 수만 없다면 신경 쓰지 않아도 된다- 그게 바로 소프트웨어 라이브러리의 기본 발상이며, AI가 없어도 가능하다 ;)
실제로 자체 완결적인 라이브러리를 만들려면 약간의 규율이 필요하고, DRY를 외치는 쪽의 말을 지나치게 따르지 않아야 한다 - 내 Amstrad CPC 에뮬레이터의 모든 칩을 핀 수준까지 구현했지만, 이 모드로 실시간 속도를 내려면 M2 이상 CPU가 필요하다
그래서 모듈성을 조금 포기해 속도를 높인"soldered"모드도 추가했다. 여기서는 CRTC를 떼어낼 수 없으며, 결국 고속 모드도 별도로 넣었다. 그래도 핀 수준 구현은 언제든 정확성을 검증할 수 있는 훌륭한 검증 오라클이 되어 그 자체로 가치가 크다
이제 USB 연결 확장 포트를 만들어 실제 하드웨어를 모두 붙여 보고 싶다. 핀 수준 코드는 아직 공개하지 않았지만 일주일 정도 기다리면 된다 - 하드웨어와 소프트웨어는 오래전부터 내부를 몰라도 되는 블랙박스와 모듈로 설계되어 왔다. 모든 것이 그렇지는 않지만 대부분 모듈성을 추구한다. 이제 AI를 만족시키려는 과정에서 더 많은 이들이 이 발상을 새삼 깨닫는 모습이 재미있다
- 그게 바로 소프트웨어 라이브러리의 기본 발상이며, AI가 없어도 가능하다 ;)
-
정말 멋지다. 어릴 때는 테이프로 게임 하나를 불러오는 데 영겁처럼 긴 시간이 걸렸는데, 이제는 순식간에 실행된다. ZX Spectrum의 Bruce Lee를 특히 좋아했다
-
Oric도 더 필요하다: https://oric.games/
-
일부 게임은 예상보다 음량이 꽤 크게 설정되어 있다. 게임을 직접 클릭하기 전까지는 알기 어렵다
-
사이트 UI에서 음량을 조절할 수 있으면 좋겠다. 몇몇 게임의 소리가 지나치게 크다
-
주소를 https://floooh.github.io/tiny8bit/로 갱신해 달라. 공식적으로 연결된 주소이고 이전 제출에서도 사용됐으며, 개발자도 작년에 https://news.ycombinator.com/item?id=43821756에서 이를 알렸다
게시자가 이 미리보기용 주소를 어디에서 찾았는지, 다른 곳에 연결되어 있었는지도 궁금하다 -
이 프로젝트는 최소 8년 전부터 존재했다: https://hn.algolia.com/?query=Tiny%20Emulators&type=story&da...