1P by neo 2023-07-16 | favorite | 댓글 1개
  • UP5K FPGA를 사용하여 작가가 게임 "Another World"를 하드웨어로 재제작했습니다.
  • 게임은 그래픽을 생성하기 위해 블리터와 래스터라이저를 호출하는 가상 머신(VM)에서 실행됩니다.
  • 작가는 FPGA에서 VM, 블리터, 래스터라이저의 하드웨어 구현을 만들었습니다.
  • 설계는 FPGA의 자원 요구 사항 내에 맞추어지며, 128KB의 SPRAM 메모리를 사용합니다.
  • 작가는 게임 데이터와 코드를 통해 데이터가 흐르는 방식을 이해하는 것으로 시작했습니다.
  • 설계에는 모든 것을 함께 연결하고 디스플레이 갱신을 추가하는 SOC가 포함되어 있습니다.
  • 프레임버퍼는 SPRAM 블록을 사용하며, 각 프레임버퍼는 완벽하게 SPRAM 블록에 매핑됩니다.
  • 디스플레이 컨트롤러는 25 MHz로 픽셀을 스트리밍하며, 깜빡임을 방지하기 위해 더블 버퍼링을 사용합니다.
  • 블리터는 한 프레임버퍼의 내용을 다른 프레임버퍼로 복사하거나 단색으로 프레임버퍼를 채웁니다.
  • 작가는 다양한 FPGA 보드에서 설계가 실행되는 하드웨어로 게임을 성공적으로 재창조했습니다.
  • 이 기사에서는 게임 엔진에서 블리터와 래스터라이저의 구현에 대해 논의합니다.
  • 블리터 유닛은 vblank 동안 픽셀을 복사하며, 래스터라이저 유닛은 프레임버퍼에 다각형을 그립니다.
  • 블리터는 시작 펄스를 확인하고 지정된 경우 색상을 채웁니다.
  • 래스터라이저는 듀얼 포트 BRAM에서 다각형 정점을 읽어 오목 다각형을 그립니다.
  • 래스터라이저는 투명도를 위해 팔레트 트릭을 사용하며, 다른 소스 프레임버퍼에서 픽셀을 복사할 수 있습니다.
  • 게임 엔진에는 폰트 그리기 엔진이 포함되어 있으며, 사전 렌더링된 배경을 지원합니다.
  • 빌드 프로세스에는 게임 데이터 파일을 복사하고 시뮬레이션을 실행하거나 다른 하드웨어 플랫폼에서 게임을 플레이하는 것이 포함됩니다.
  • 이 기사에서는 게임 Another World를 위해 FPGA에서 실행되는 하드웨어 설계의 개발에 대해 논의합니다.
  • 작가는 게임 테스트, 타이밍 조정, 렌더링 문제 수정, 음악 추가 등 아직 완료되어야 할 여러 작업을 언급합니다.
  • 작가는 또한 게임의 다른 부분을 연결하고 게임 상태를 저장하는 가능성에 대해 언급합니다.
  • 이 하드웨어 위에 다른 게임이나 데모를 구축하는 것도 잠재적인 향후 프로젝트로 언급됩니다.
  • 이 기사는 블로그 시리즈, 포트, 도구와 관련된 자료에 대한 링크를 제공합니다.
  • 이 프로젝트에서 사용된 Silice 디자인은 MIT 라이선스 하에 있으며, 수정된 C++ 포트는 원래의 GPL 라이선스를 유지합니다.
  • 이 기사에서는 프레임버퍼, 래스터라이저, 블리터 및 가상 머신(VM)과 같은 핵심 용어를 업계에 익숙하지 않은 독자를 위해 설명합니다.
Hacker News 의견
  • Another World: 인상적인 그래픽과 예술적 스타일로 알려진 클래식 비디오 게임
  • 게임은 짧으며 퍼즐은 시행착오에 의존하지만 예술적으로 여전히 인기가 있음
  • Another World의 팬들은 Flashback: The Quest for Identity도 즐길 수 있음
  • Amstrad CPC, Nintendo 64 및 PlayStation 1을 포함한 다양한 플랫폼용 Another World 포트가 있음
  • 이 기사의 저자는 FPGA 포트를 위해 Silice라는 사용자 정의 HDL 언어를 사용함
  • Amiga에서 사용되는 평면 그래픽은 투명 효과와 모아레 효과와 같은 장점이 있음
  • 게임에 대한 가상 머신(VM)의 사용은 90년대의 PC에서 성능 저하를 초래했을 수 있음
  • 게임에는 기억에 남는 오프닝과 사자로부터 탈출하는 등 도전적인 게임 플레이가 있음
  • Another World의 원래 개발자는 개발 도구와 애니메이션 프로세스에 대해 GDC 후기 강연을 진행함
  • YouTube에서의 플레이스루를 시청하는 것은 게임에 어려움을 겪는 플레이어들에게 도움이 될 수 있음