2 điểm bởi GN⁺ 2023-12-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dòng Game Boy kết hợp DMG-CPU SoC, PPU, APU, boot ROM và Game Pak trong một ngân sách điện năng thấp để gói CPU, đồ họa, âm thanh, khả năng tương thích và chống sao chép của máy chơi game cầm tay vào một hệ thống duy nhất
  • CPU dựa trên nhân SM83 của Sharp, chạy ở khoảng 4.19 MHz; CPU CGB của Game Boy Color vẫn giữ cùng họ này nhưng nâng lên khoảng 8.38 MHz trong chế độ tốc độ kép
  • Đồ họa dùng LCD 160×144 và PPU dựa trên VRAM để kết hợp tile, nền, sprite, cửa sổ; mẫu Color mở rộng khả năng hiển thị với 16 KB VRAM, bảng màu 32.768 màu và DMA bổ sung
  • Âm thanh do APU 4 kênh đảm nhiệm; Game Pak dùng Memory Bank Controller để vượt quá không gian địa chỉ cơ bản 32 KB, đồng thời hỗ trợ giao tiếp ngoài qua cáp Link và hồng ngoại trên Color
  • Boot ROM kiểm tra logo Nintendo và checksum của ROM header trước khi chạy game; yêu cầu về logo này hoạt động như một cơ chế kiểm soát phân phối dựa trên bản quyền và nhãn hiệu

Phạm vi và định hướng thiết kế của dòng Game Boy

  • Có thể xem dòng Game Boy như một phiên bản cầm tay của NES, nhưng đây không phải bản thu nhỏ đơn giản mà là một cấu trúc có các tính năng và hướng mở rộng riêng
  • Thương hiệu Game Boy kéo dài qua hai thế hệ
    • Thế hệ thứ 4 gồm Game Boy đen trắng và các bản sửa đổi như Game Boy Pocket, Light
    • Thế hệ sau gồm Game Boy Color, ra mắt sau Virtual Boy
  • Trọng tâm phân tích là cấu trúc cơ bản của Game Boy đen trắng, và cách cấu trúc này được mở rộng trên mẫu Color

CPU và cấu trúc bộ nhớ

  • Thay vì đặt nhiều chip đa dụng trên bo mạch chủ, Nintendo chọn thiết kế một chip duy nhất chứa CPU và các thành phần chính
    • SoC này được gọi là DMG-CPU hoặc Sharp LR35902
    • Nó do Sharp Corporation sản xuất, thuận lợi cho hiệu quả điện năng, chống sao chép và triển khai I/O bổ sung theo yêu cầu của Nintendo
    • Vì đây là con chip không thể mua từ catalog bán lẻ nên đối thủ khó sao chép nguyên xi
  • Nhân CPU SM83

    • Bộ xử lý chính bên trong DMG-CPU là Sharp SM83
    • Đây là dạng pha trộn giữa Zilog Z80 và Intel 8080, chạy ở khoảng 4.19 MHz
    • SM83 chỉ giữ lại một phần tính năng của Z80 và 8080
      • Không có thanh ghi IX, IY của Z80 và lệnh IN, OUT của 8080
      • Không thể dùng cổng I/O nên các thành phần phải được ánh xạ bộ nhớ
      • Chỉ có tập thanh ghi của Intel 8080 nên có 7 thanh ghi đa dụng
      • Trong các lệnh mở rộng của Z80, chỉ một phần lệnh thao tác bit được triển khai
    • Sharp cũng bổ sung các lệnh mới không có trên Z80 hay 8080
      • LDH được thiết kế để truy cập 256 byte cuối của memory map bắt đầu từ $FF00
      • Kích thước lệnh giảm 1 byte nên có thể chạy nhanh hơn đôi chút
  • Thay đổi CPU trên Game Boy Color

    • Game Boy Color dùng SoC mới là CPU CGB, nhưng phần lớn vẫn giữ nguyên nhân CPU SM83
    • Ngoại lệ lớn nhất là xung nhịp, được tăng gấp đôi lên khoảng 8.38 MHz
    • Việc giữ cùng nhân CPU cho phép nhà phát triển tái sử dụng kiến thức lập trình hiện có, đồng thời giảm chi phí thiết kế lại kiến trúc và gánh nặng triển khai tương thích ngược
    • CPU CGB cung cấp hai chế độ hoạt động
      • Normal mode: SM83 chạy ở khoảng 4.19 MHz
      • Dual-speed mode: SM83 chạy ở khoảng 8.38 MHz
    • Lựa chọn này cũng để lại cái giá là tiếp tục dùng công nghệ đã cũ vào cuối thập niên 1990
  • Không gian địa chỉ và RAM

    • SM83 giữ bus dữ liệu 8 bitbus địa chỉ 16 bit, nên có thể đánh địa chỉ tối đa 64 KB bộ nhớ
    • Memory map gồm không gian Game Pak, WRAM, HRAM, VRAM, I/O cho joypad, âm thanh, đồ họa, LCD và vùng điều khiển ngắt
    • Bo mạch gốc của Game Boy có 8 KB WRAM làm bộ nhớ đa dụng, gấp 4 lần NES
    • Bên trong SoC cũng có 127 B HRAM
      • Đây là không gian nhỏ có thể truy cập nhanh hơn bằng lệnh LDH
      • Bản thân bus HRAM không nhanh hơn WRAM về mặt kỹ thuật, nhưng CPU được ưu tiên truy cập
      • Điều này quan trọng khi CPU không thể truy cập bộ nhớ ngoài trong lúc DMA hoạt động
    • Game Boy Color tăng WRAM lên 32 KB
      • Khả năng đánh địa chỉ của CPU vẫn giữ nguyên nên không thể ánh xạ toàn bộ bộ nhớ cùng lúc
      • Việc truy cập thêm 24 KB WRAM dùng bank switching
      • 4 KB cuối của không gian 8 KB hiện có sẽ được thay đổi giữa 7 bank
      • Thanh ghi SVBK được dùng để chọn bank WRAM

Đồ họa: PPU, LCD, cấu trúc lớp

  • Đồ họa Game Boy có cấu trúc trong đó CPU thực hiện tính toán, còn PPU riêng bên trong DMG-CPU SoC sẽ render khung hình
  • LCD tích hợp cung cấp độ phân giải 160×144 pixel
    • LCD của Game Boy đen trắng chỉ phản chiếu 4 mức xám: trắng, xám nhạt, xám đậm và đen
    • Do LCD có tông xanh nên hình ảnh trông hơi ngả xanh
  • Mọi máy Game Boy đều chạy bằng 4 pin AA, khác với máy console gia đình phụ thuộc tần số điện lưới theo khu vực
    • Xung nhịp CPU và tần số làm tươi không thay đổi theo khu vực
    • Tần số làm tươi là 59.7 Hz
  • VRAM và render dựa trên tile

    • PPU được nối độc quyền với 8 KB VRAM và đọc phần lớn dữ liệu cần cho render từ đây
    • Một số dữ liệu cần truy cập nhanh hơn được lưu bên trong chính PPU
    • Quyền truy cập VRAM của CPU do PPU điều phối, và game phải điền đúng dữ liệu vào vùng VRAM
    • Đơn vị render cơ bản là tile
      • Tile là bitmap 8×8 pixel
      • Mỗi tile chiếm 16 byte
      • Chúng được lưu trong vùng Tile set hoặc Tile pattern table của VRAM
    • Màu được chọn từ 4 mức xám thông qua bảng màu
    • Game Boy đen trắng có thể định nghĩa tối đa 3 bảng màu, nhưng việc sử dụng bị giới hạn tùy loại lớp được render
  • Nền, sprite, cửa sổ

    • Khung hình cuối cùng được tạo từ ba lớp chồng lên nhau
    • Lớp nền có kích thước 256×256 pixel, tức bản đồ 32×32 tile
      • Trên màn hình thực tế chỉ thấy 160×144 pixel
      • Game chọn vùng nền cần hiển thị và di chuyển nó để tạo hiệu ứng cuộn
      • Lớp nền chỉ dùng 1 bảng màu
    • Sprite là các tile có thể di chuyển độc lập
      • Chúng có thể chồng lên nhau hoặc nằm sau nền
      • Thứ tự hiển thị được quyết định bởi thuộc tính priority
      • Có thêm màu trong suốt, nên số mức xám hiển thị thực tế chỉ còn 3
      • Có thể chọn một trong 2 bảng màu chuyên dụng
    • Định nghĩa sprite được lưu trong OAM (Object Attribute Memory) bên trong PPU
      • Game thường gọi OAM DMA để sao chép dữ liệu từ RAM hoặc ROM vào OAM
      • Khi DMA đang hoạt động, CPU không thể truy cập bộ nhớ ngoài
      • Mỗi mục OAM gồm chỉ mục tile, vị trí X-Y, bảng màu, độ ưu tiên và cờ lật dọc-ngang
    • Việc render sprite của PPU có giới hạn
      • Tối đa 10 sprite mỗi scanline
      • Tối đa 40 sprite mỗi frame
      • Nếu vượt quá giới hạn, một số sprite sẽ không được vẽ
    • Lớp cửa sổ là bản đồ 160×144 pixel có thể phủ toàn màn hình
      • Được render phía trên nền và sprite
      • Không cuộn
      • Chỉ bản đồ tile còn lại mới có thể được gán cho lớp cửa sổ
      • Chia sẻ cùng bảng màu với nền
      • Không trong suốt nên che hoàn toàn các lớp bên dưới, nhưng có thể dùng một phần cùng với hiệu ứng raster dựa trên timing
      • Game chủ yếu dùng lớp cửa sổ cho bộ đếm mạng, điểm số và thông tin hiển thị liên tục
  • Cập nhật frame và hiệu ứng raster

    • CPU không thể sửa các bảng khi PPU đang đọc VRAM
    • Hệ thống cung cấp các ngắt xảy ra khi PPU ở trạng thái rảnh
      • Horizontal Blank bắt đầu sau khi một scanline kết thúc, cho phép điều chỉnh phần khung hình chưa được vẽ
      • Vertical Blank bắt đầu sau khi mọi scanline kết thúc, cho phép cập nhật đồ họa cho frame tiếp theo
      • OAM search xảy ra ở đầu scanline, cho phép cập nhật các vùng ngoài OAM trong khi PPU quyết định sprite của dòng đó
    • Nhờ lớp cửa sổ và các ngắt bổ sung, có thể thay đổi một phần frame trước khi toàn bộ màn hình được vẽ xong
    • Áp dụng giá trị cuộn khác nhau cho từng scanline có thể tạo ra wobble effect, trong đó mỗi hàng di chuyển với tốc độ khác nhau

Mở rộng đồ họa của Game Boy Color

  • PPU của Game Boy Color hoạt động như một siêu tập của PPU gốc và cung cấp hai chế độ để đảm bảo tương thích
    • CGB mode: cung cấp cải tiến hình ảnh cho các tựa game Game Boy Color
    • DMG mode: chế độ truyền thống với các tính năng mở rộng bị vô hiệu hóa
  • Bo mạch của Game Boy Color có 16 KB VRAM
    • Dung lượng gấp đôi trước đây
    • Do giới hạn địa chỉ CPU nên được chia thành 2 bank 8 KB
    • Thanh ghi VBK được dùng để chuyển bank VRAM
  • PPU có thể truy cập đồng thời cả hai bank VRAM
    • Nhà phát triển dùng VBK để điền dữ liệu vào bank VRAM
    • PPU sẽ xử lý khi tile map chỉ định tile nằm ở bank nào
  • VRAM bổ sung được dùng để lưu gấp đôi số tile, nhiều bảng màu hơn, mở rộng metadata của tile và tham chiếu đến bảng màu cùng hiệu ứng bổ sung
  • Màu sắc và DMA bổ sung

    • PPU mới của Game Boy Color có thể định nghĩa bảng màu từ 32.768 màu
    • Nhà phát triển lưu tối đa 16 bảng màu trong Palette Memory
      • 8 cho nền/cửa sổ, 8 cho sprite
      • Mỗi bảng màu mã hóa 4 màu
      • Mỗi mục là giá trị 16 bit nhưng thực tế chỉ dùng 15 bit
      • Palette Memory không thể được CPU đánh địa chỉ trực tiếp; các thanh ghi mới đóng vai trò bộ đệm ghi
    • Tile nền và cửa sổ có thể tham chiếu một trong 8 bảng màu
    • Tile sprite cũng có thể tham chiếu 8 bảng màu, nhưng một mục vẫn được dành cho màu trong suốt nên giới hạn bảng màu 3 màu vẫn còn
    • Tile set được tăng gấp đôi, cho phép lưu gấp đôi số tile trong VRAM
    • Tile map của nền và cửa sổ cũng được mở rộng để chứa thêm metadata
    • Tile nền và cửa sổ có thể lật dọc-ngang, giảm nhu cầu lưu đồ họa trùng lặp trong VRAM
    • CPU CGB có bộ DMA bổ sung để sao chép dữ liệu vào VRAM
      • Có thể sao chép từ Game Pak hoặc WRAM vào VRAM
      • General-purpose DMA có thể truyền bất cứ lúc nào, nhưng sẽ giành quyền ưu tiên truy cập bộ nhớ trong lúc truyền nên có thể gây xé hình
      • H-Blank DMA chỉ truyền trong H-Blank để tránh lỗi hình ảnh, nhưng bị giới hạn theo đơn vị 16 byte và sẽ dừng khi LCD đang quét

Âm thanh: APU 4 kênh

  • Âm thanh do APU (Audio Processing Unit) đảm nhiệm, theo kiểu Programmable Sound Generator với tổng cộng 4 kênh
  • APU là một trong các thành phần gần như không thay đổi trong toàn bộ các bản sửa đổi Game Boy
    • Không thể tăng tốc như CPU
    • Thay đổi tốc độ oscillator không làm âm thanh hay hơn mà chỉ đổi cao độ
    • Muốn tăng tính năng thì phải thêm mạch, và chi phí cũng tăng lên
  • Cấu hình kênh

    • Có 2 kênh sóng xung, chủ yếu dùng cho giai điệu và hiệu ứng âm thanh
      • Thay đổi độ rộng xung để tạo 4 tông âm
      • Kênh đầu tiên có sweep control riêng
      • Vì số kênh bị giới hạn, khi có hiệu ứng âm thanh trong game thì giai điệu có thể bị ngắt
    • Kênh thứ ba hỗ trợ dạng sóng tùy biến
      • Dạng sóng gồm 32 mẫu 4 bit được lưu trong wavetable
      • Có thể điều khiển âm lượng và tần số
    • Có 1 kênh noise
      • Đây là tập các dạng sóng ngẫu nhiên nghe giống nhiễu trắng
      • Trong game chủ yếu dùng cho nhạc cụ gõ hoặc hiệu ứng môi trường
      • Cung cấp hai tông clean static và robotic static, đồng thời có thể chỉnh tần số
  • Bộ trộn và chân âm thanh mở rộng

    • Bộ trộn cung cấp đầu ra stereo nên có thể đặt các kênh sang trái hoặc phải
    • Loa tích hợp là mono nên chỉ nghe được panning qua đầu ra tai nghe
    • Phần cứng mixer cũng được nối tới các chân chuyên dụng trên cartridge
      • Nếu cartridge xuất âm thanh analog bằng phần cứng bổ sung thì có thể stream các kênh bổ sung
      • Không có game thương mại nào trên thị trường sử dụng tính năng này
      • Tính năng này bị loại bỏ ở thời Game Boy Advance

Boot ROM và cách vận hành

  • Game Boy không khởi động thẳng vào game như NES/Famicom mà trước tiên khởi động từ ROM nội bộ 256 byte
  • Quy trình boot cơ bản như sau
    • Khi bật nguồn, CPU bắt đầu đọc từ địa chỉ 0x0000
    • RAM và APU được khởi tạo
    • Đồ họa logo Nintendo từ cartridge ROM được sao chép vào Display RAM và vẽ ở phía trên màn hình
    • Nếu không có cartridge hoặc lắp không đúng, logo có thể hiện thành các tile bị hỏng
    • Logo cuộn xuống dưới và phát âm thanh biểu tượng
    • Logo Nintendo của game được so sánh với logo trong ROM của máy
    • Một checksum nhanh được thực hiện trên ROM header của cartridge
    • Nếu kiểm tra thất bại, máy sẽ dừng
    • ROM của máy sẽ bị loại khỏi memory map
    • CPU bắt đầu chạy game
  • Logo Nintendo hiển thị trên màn hình không bị xóa khỏi VRAM, nên game có thể áp dụng hiệu ứng hoạt ảnh hoặc chuyển cảnh lên logo này
  • Thay đổi boot trên Game Boy Color

    • Kích thước ROM của Game Boy Color tăng lên 2 KB
    • Trình tự boot kiểm tra xem game được cắm là game chỉ dành cho Game Boy hay game Game Boy Color
    • Nó kiểm tra metadata cụ thể trong cartridge ROM rồi thiết lập thanh ghi kích hoạt chế độ DMG hoặc CGB tương ứng
    • Nếu cắm game DMG, chương trình boot sẽ điền Palette RAM bằng bảng màu được tính toán
      • Nó dùng một thuật toán đơn giản phụ thuộc vào metadata của game
      • Đây là lý do game đen trắng trông như được tô màu trên Game Boy Color
      • Người dùng có thể đổi bảng màu được chọn bằng tổ hợp nút trong lúc boot
    • Logo Nintendo cũng được sao chép vào HRAM
    • Bước checksum chỉ kiểm tra nửa trước của logo trong HRAM

Game Pak, phát triển game, giao tiếp ngoài

  • Ở thời đó, các game cần hiệu năng chủ yếu được viết bằng assembly language do trình biên dịch ngôn ngữ bậc cao chưa đủ trưởng thành
  • Game thương mại được phân phối trên Game Pak, tức cartridge cho Game Boy của Nintendo
  • Dung lượng lưu trữ cơ bản tối đa là 32 KB do giới hạn không gian địa chỉ
    • Dùng Memory Bank Controller, tức mapper, sẽ cho phép game lớn hơn
    • Game Pak lớn nhất từng được bán ra có 1 MB ROM trên Game Boy gốc và 8 MB ROM trên Game Boy Color
  • Một số Game Pak có đồng hồ thời gian thực, SRAM bổ sung và pin ngoài để duy trì dữ liệu lưu
  • Các loại cartridge thời Color

    • Khi có thêm chế độ hoạt động của Game Boy Color, game được chia thành ba loại
      • Game Boy: tương thích hoàn toàn với mọi mẫu Game Boy và luôn chạy ở DMG mode
      • Game Boy Color enhanced: tương thích với mẫu đen trắng nhưng được cải thiện hình ảnh khi chạy trên Game Boy Color ở CGB mode
      • Game Boy Color exclusive: chỉ tương thích với Game Boy Color và được tối ưu để tận dụng phần cứng đó
    • Ba loại này có màu sắc chính thức để giúp phân biệt
    • Một số game như Pokémon và Donkey Kong dùng thiết kế khác
  • Cáp Link và hồng ngoại

    • Game Boy là lần đầu các game có thể giao tiếp với phần cứng ngoài qua cáp Game Boy Link, cho phép chơi nhiều người và dùng phụ kiện
    • Cáp Link nối vào đầu nối phụ 6 chân của máy, và giao diện dùng giao thức SPI(Serial Peripheral Interface)
      • Một Game Boy sẽ làm master để tạo xung clock, còn máy kia là slave
      • Trong mỗi lần truyền, master và slave trao đổi một gói 8 bit
      • Tốc độ truyền của Game Boy gốc là 8 Kbit/s, tức 1 KB/s
      • Game Boy Color có thể đạt tối đa 512 Kbit/s, tức 64 KB/s ở high speed mode
    • Nintendo cũng phát hành 4-Player Adapter để tối đa 4 máy Game Boy có thể trao đổi dữ liệu cùng lúc
      • SPI cơ bản vẫn được giữ nguyên
      • Adapter hoạt động như master và triển khai một lớp giao tiếp bổ sung mà game phải tuân theo
    • Game Boy Color có bộ thu phát hồng ngoại tích hợp
      • Gồm LED và phototransistor
      • Được dùng trong các tựa như Pokémon Gold để trao đổi dữ liệu không dây
      • Bản thân hệ thống không triển khai giao thức truyền thông
      • Một thanh ghi RP duy nhất mã hóa hoạt động của cảm biến IR, bit truyền và bit nhận cuối cùng
      • Nintendo cung cấp triển khai tham chiếu trong Game Boy Developer Manual chính thức

Cấu trúc chống sao chép

  • Máy không chạy game ngay mà trước hết thực hiện nhiều bước kiểm tra để ngăn cartridge không được cấp phép chạy, đồng thời xác nhận cartridge đã được cắm đúng
  • Game phải chứa một bản sao logo Nintendo ở dạng tile trong ROM header thì mới vượt qua được bước kiểm tra
    • Nintendo có thể dùng điều này để tận dụng luật bản quyền và nhãn hiệu cho việc kiểm soát phân phối
  • Về sau, vụ kiện Sega v. Accolade kết luận rằng việc dùng logo có bản quyền để đáp ứng kiểu yêu cầu này là sử dụng hợp lý, qua đó trao quyền cho doanh nghiệp
  • Bên trong game cũng có thể triển khai thêm các biện pháp chống sao chép
    • Bản bootleg thường bị kiểm tra kích thước SRAM lớn hơn bình thường
    • Checksum ROM có thể được thực hiện tại các thời điểm ngẫu nhiên trong quá trình chơi để phát hiện mã bị chỉnh sửa

1 bình luận

 
GN⁺ 2023-12-28
Ý kiến trên Hacker News
  • Điều thực sự xuất sắc ở quá trình phát triển Game Boy ban đầu là vào thời điểm đó, nhóm của Gunpei Yokoi đã phải đối mặt với rất nhiều sự hoài nghi
    Kiểu như: “Ai lại chơi game trên xe buýt hay trong nhà vệ sinh, bất tiện chết đi được. Cứ ngồi trên sofa trước TV ở nhà cùng gia đình, bạn bè mà chơi, hoặc muốn trải nghiệm mới nhất thì ra khu game thùng là được. Ai lại muốn thay pin rồi chỉ nhìn mấy mức màu xám?”
    Tầm nhìn của họ là lấy công nghệ đã tàn rồi đóng gói nó thành một thiết bị dễ dùng cùng những trò chơi đơn giản, ngắn gọn, và có thể xem chính đội ngũ đó là những người trên thực tế đã khởi đầu game di động

    • Điều đó gần với cách nhìn lịch sử mang tính xét lại hơn
      Trẻ em từ thập niên 1970 đã chơi các máy game LED cầm tay của Mattel trên xe buýt và trong nhà vệ sinh rồi, và tôi từng có ít nhất 6 cái, có lẽ là 8 cái. Ví dụ sớm nhất là năm 1976: https://en.m.wikipedia.org/wiki/Mattel_Auto_Race
      Phổ biến hơn nữa là các game thể thao như bóng bầu dục, bóng chày và bóng rổ, với luật chơi phức tạp hơn Auto Race rất nhiều: https://www.ebay.com/p/2255363696
      Đầu thập niên 1980 cũng đã có nhiều game LCD cầm tay như Dungeons and Dragons: https://en.m.wikipedia.org/wiki/Dungeons_%26_Dragons_Compute... (1981)
      “Mattel stated that the game immediately sold out.” Chúng không dùng cartridge, nhưng riêng game LCD thì rẻ và nhỏ nên mang nhiều cái cũng không thành vấn đề
      Ngày nay người ta gọi những thứ này là “handhelds” để phân biệt với các thiết bị cầm tay của thế hệ Game Boy, nhưng theo tôi nhớ thì hồi đó không ai gọi như vậy. Ý chính là đã có một thị trường thành công từ thập niên 1970 và đầu thập niên 1980, và Nintendo không tạo ra nó, mà là phát triển nó bằng cách kết hợp máy console dùng cartridge vốn đã thành công với thị trường game cầm tay
    • Game & Watch có trước, và cũng là của Gunpei Yokoi. Ít nhất theo trí nhớ của tôi thì xem đó là khởi đầu của game di động cũng hợp lý
    • Tôi đã có một chiếc đồng hồ có game đua xe bên trong từ khoảng 6 năm trước khi Game Boy ra mắt
  • Tôi thấy đã bổ sung Game Boy Color, nhưng có vẻ vẫn chưa sửa chỗ nói kích thước cartridge chỉ 1MB. Một số game GBC lên tới 4MB
    Ngoài ra còn có một game tàu hỏa dùng video ngắn và hình ảnh độ sâu màu cao, có bản 8MB nữa

    • Đúng vậy, đó là 電車でGO!2 高速編, còn gọi là Densha de Go! 2 Kōsoku-hen
      https://www.youtube.com/watch?v=S62dSVmLPU0
    • Công bằng mà nói, cũng chẳng có gì thực sự ngăn game DMG đạt tới 4MB
      Kích thước cửa sổ của cartridge về cơ bản ở cả hai bên đều giống nhau, là 32KB, và dù là 4MB hay 1MB thì bank switching đều do phía cartridge xử lý
  • Game Boy cho đến nay vẫn là chiếc console tôi yêu thích nhất trong số tất cả những gì từng ra mắt. Hiện tôi đang làm một game Game Boy bằng assembly, kiểu pinball dungeon crawler
    Phần cứng đủ dễ hiểu để nắm bắt, còn các giới hạn thì buộc bạn phải sáng tạo

  • Florent Gorges có xuất bản một cuốn sách chỉ nói về Game Boy, tiếc là có vẻ không có bản dịch tiếng Anh. Tôi mua bản tiếng Tây Ban Nha, trong đó có các phỏng vấn độc quyền với những người tạo ra nó
    https://www.amazon.es/Historia-Nintendo-Vol-4-1989-1999-INCR...

  • Với mức độ phần cứng được dân chủ hóa như hiện nay, liệu có thể mua các linh kiện phù hợp và một PCB đã đi dây sẵn để làm lại một chiếc Game Boy không?

    • Đã có người làm, nhưng ít nhất bạn vẫn phải chuyển sang CPU gốc. Những con chip đó không được tạo ra cho mục đích khác: https://www.reddit.com/r/Gameboy/s/FEAH2VhBRT
      FunnyPlaying gần đây đã ra một bản dựa trên FPGA với giá hợp lý: https://funnyplaying.com/products/fpgbc-kit?variant=40858870...
      Cũng có mainboard mới cho Game Boy Advance với linh kiện đã được gắn sẵn, nhưng bạn phải chuyển CPU và RAM sang đó
    • Nếu bạn thấy ổn với một chiếc GameBoy nhanh ngang siêu máy tính thời nó ra mắt, thì có lẽ bạn có thể dựng một cấu hình chạy trình giả lập GameBoy trên Linux bằng một máy tính bo mạch đơn ARM, xuất ra màn OLED, với chi phí dưới 150 USD và thêm một chút ý chí
      Nếu muốn độ trung thực phần cứng, thì chi phí để làm một thiết bị đơn lẻ cầm tay được có lẽ khó mà rơi vào mức giá “dân chủ hóa”
    • Cách tiếp cận hiện nay là dùng FPGA. Cứ nhìn Analogue Pocket là rõ, ngoài ra cũng có các bộ kit khác
    • Cùng lắm thì chắc chỉ là mua linh kiện tháo từ các máy Game Boy cũ rồi lắp lại. Tôi nhớ là đã từng thấy một triển khai Game Boy bằng FPGA ở đâu đó, và đó có thể là cách gần nhất
  • Học kiến trúc Game Boy để làm gì, định hack cả Trái Đất à?

    • Vì nó là một kiến trúc đơn giản chạy trực tiếp trên phần cứng, không qua hệ điều hành, nên đây là cánh cửa rất tốt để bước vào lập trình nhúng, mà lại còn vui nữa