1 điểm bởi GN⁺ 2023-07-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tác giả đã tái tạo trò chơi "Another World" bằng phần cứng sử dụng FPGA UP5K.
  • Trò chơi chạy trên một máy ảo (VM) gọi blitter và rasterizer để tạo đồ họa.
  • Tác giả đã xây dựng bản triển khai phần cứng của VM, blitter và rasterizer trên FPGA.
  • Thiết kế nằm trong giới hạn yêu cầu tài nguyên của FPGA và sử dụng 128KB bộ nhớ SPRAM.
  • Tác giả bắt đầu bằng việc tìm hiểu cách dữ liệu chảy qua dữ liệu trò chơi và mã nguồn.
  • Thiết kế bao gồm một SoC để kết nối mọi thứ lại với nhau và bổ sung việc làm mới màn hình.
  • Framebuffer sử dụng các khối SPRAM, và mỗi framebuffer được ánh xạ hoàn toàn vào các khối SPRAM.
  • Bộ điều khiển hiển thị stream pixel ở 25 MHz và sử dụng double buffering để tránh nhấp nháy.
  • Blitter có thể sao chép nội dung của một framebuffer sang framebuffer khác hoặc tô framebuffer bằng một màu đơn sắc.
  • Tác giả đã tái tạo thành công trò chơi trên phần cứng với thiết kế chạy được trên nhiều bo mạch FPGA khác nhau.
  • Bài viết này thảo luận về cách triển khai blitter và rasterizer trong game engine.
  • Khối blitter sao chép pixel trong thời gian vblank, còn khối rasterizer vẽ đa giác lên framebuffer.
  • Blitter kiểm tra xung khởi động và tô màu nếu được chỉ định.
  • Rasterizer đọc các đỉnh đa giác từ BRAM dual-port để vẽ các đa giác lõm.
  • Rasterizer sử dụng thủ thuật palette cho độ trong suốt và có thể sao chép pixel từ một framebuffer nguồn khác.
  • Game engine bao gồm bộ máy vẽ font và hỗ trợ nền được render sẵn.
  • Quy trình build bao gồm việc sao chép tệp dữ liệu trò chơi và chạy mô phỏng hoặc chơi trò chơi trên các nền tảng phần cứng khác.
  • Bài viết này bàn về quá trình phát triển thiết kế phần cứng chạy trên FPGA cho trò chơi Another World.
  • Tác giả cũng đề cập đến nhiều việc vẫn còn phải hoàn thành như kiểm thử trò chơi, tinh chỉnh timing, sửa lỗi render và thêm nhạc.
  • Tác giả cũng nhắc đến khả năng kết nối các phần khác của trò chơi và lưu trạng thái game.
  • Việc xây dựng các trò chơi hoặc bản demo khác trên nền phần cứng này cũng được nêu như một dự án tiềm năng trong tương lai.
  • Bài viết cung cấp các liên kết tới loạt bài blog, bản port và tài liệu liên quan đến công cụ.
  • Thiết kế Silice được dùng trong dự án này theo giấy phép MIT, còn bản port C++ đã chỉnh sửa vẫn giữ giấy phép GPL gốc.
  • Bài viết cũng giải thích các thuật ngữ cốt lõi như framebuffer, rasterizer, blitter và máy ảo (VM) cho những độc giả chưa quen với lĩnh vực này.

1 bình luận

 
GN⁺ 2023-07-16
Ý kiến Hacker News
  • Another World: trò chơi điện tử kinh điển nổi tiếng với đồ họa ấn tượng và phong cách nghệ thuật đặc sắc
  • Trò chơi khá ngắn và các câu đố dựa vào thử-sai, nhưng vẫn được yêu thích nhờ giá trị nghệ thuật
  • Người hâm mộ Another World cũng có thể thích Flashback: The Quest for Identity
  • Có nhiều bản port Another World cho các nền tảng khác nhau, bao gồm Amstrad CPC, Nintendo 64 và PlayStation 1
  • Tác giả bài viết này sử dụng một ngôn ngữ HDL tùy chỉnh tên là Silice cho bản port FPGA
  • Đồ họa dạng planar dùng trên Amiga có những ưu điểm như hiệu ứng trong suốt và hiệu ứng moiré
  • Việc sử dụng máy ảo (VM) cho trò chơi có thể đã gây suy giảm hiệu năng trên PC thập niên 90
  • Trò chơi có phần mở đầu đáng nhớ và lối chơi đầy thử thách, chẳng hạn như cảnh chạy trốn khỏi sư tử
  • Nhà phát triển gốc của trò chơi đã thực hiện một bài nói chuyện hồi tưởng tại GDC về các công cụ phát triển và quy trình làm hoạt hình
  • Xem video chơi trọn vẹn trên YouTube có thể hữu ích cho những người chơi gặp khó khăn với trò chơi