1 điểm bởi GN⁺ 2024-04-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Băng game Super Nintendo không chỉ là phương tiện lưu trữ đơn thuần mà còn là phần cứng mở rộng chức năng của máy console bằng cách tích hợp chip chống sao chép CIC, SRAM và các bộ xử lý phụ
  • Dung lượng ROM khi đó được quảng bá theo đơn vị bit, và trong 3.378 tựa game được khảo sát, Star Ocean và Tales of Phantasia có dung lượng 48Mb, còn Super Mario World là 4Mb
  • Tính năng lưu save dựa vào SRAM được duy trì bằng pin, và có những trường hợp như PCB của Zelda III còn đi kèm bộ giải mã địa chỉ MAD-1 để điều phối truy cập ROM/RAM
  • Tổng cộng 13 loại chip phụ được dùng trong 72 trò chơi, đảm nhiệm ở phía băng game các tác vụ như tăng tốc CPU, xử lý sprite, giải nén, tính toán toán học và raster hóa đa giác
  • Những con chip này đã mở rộng đáng kể khả năng thể hiện của game thời đó, nhưng cũng để lại gánh nặng reverse engineering kéo dài cho việc hiện thực trình giả lập, như trường hợp phải cần graphic pack vì chưa biết cấu trúc bên trong của S-DD1

Cấu hình cơ bản của băng game: CIC, ROM, SRAM

  • Băng game Super Nintendo có thể chứa không chỉ lệnh và asset trong chip ROM mà còn cả chip chống sao chép CIC, SRAM và bộ xử lý phụ
  • CIC hoạt động theo cách chip phía console và chip phía băng game giao tiếp đồng bộ theo lockstep
    • Nếu CIC của console phát hiện trạng thái bất thường, nó sẽ reset mọi bộ xử lý
    • Không phải mọi băng game SNES đều có CIC; game không chính thức Super 3D Noah's Ark không có CIC
    • Với Super 3D Noah's Ark, trước tiên phải cắm game vào console rồi cắm thêm một băng game chính thức lên trên; phía Noah's sẽ chuyển tiếp bus line qua CIC của game chính thức
  • Dung lượng ROM thời đó được ghi theo đơn vị bit thay vì byte
    • Zelda III được quảng bá là ROM 8Mb chứ không phải 1.048.576 byte
    • Danh sách khảo sát bao gồm 3.378 tựa game theo khu vực USA/Japan/Europe
    • Star Ocean và Tales of Phantasia thuộc nhóm lớn nhất với 48Mb, tức 6.291.456 byte
    • Super Mario World dùng ROM 4Mb, tức 524.288 byte
  • Một số tựa game có chức năng lưu save sử dụng SRAM được cấp điện bằng pin
    • Khi console tắt, SRAM sẽ chuyển sang chế độ năng lượng thấp để giảm tiêu thụ điện
    • PCB của Zelda III có CIC D413A ở U4, ROM 0x80000 ở U1 (524.288 byte), SRAM LH5268AF-10TLL 64Kbit ở U2 (8KiB), và bộ giải mã địa chỉ bộ nhớ MAD-1 ở U3

Phạm vi các chip phụ và SA-1

  • Bộ xử lý phụ nổi tiếng nhất là Super FX dùng trong Star Fox năm 1993, nhưng trước đó đã có chip EC được sử dụng
  • Tổng thể có 13 loại EC được dùng trong 72 trò chơi
  • SA-1, tức Super Accelerator 1, là một chip phụ tiêu biểu có mặt trong 34 băng game
    • Đây cũng là CPU 65C816 giống CPU chính của SNES nhưng chạy nhanh gấp 4 lần ở 10.74MHz
    • Nó tích hợp 2KiB SRAM và CIC hợp nhất
    • PCB của Super Mario RPG không có CIC riêng; SA-1 nằm ở U3, ROM ở U1, còn U2 là SRAM có bộ giải mã tích hợp
    • SA-1 nhận System Master clock từ cổng băng game mà không cần oscillator riêng, rồi chia đôi nội bộ để chạy ở 21.4772700MHz / 2 = 10.74MHz
  • Khi khởi động, SA-1 ở trạng thái dừng; CPU của SNES tạo Reset Vector rồi tiếp tục SA-1
    • Instruction Pointer ban đầu của SA-1 được lấy từ Reset Vector chuyên dụng
    • Có ba chế độ hoạt động: Accelerator, Parallel Processing và Mixed Processing
    • Ở cấu hình mạnh nhất, CPU SA-1 và CPU Super NES chạy đồng thời, giúp hiệu năng của Super Accelerator System cao gấp 5 lần Super NES gốc
  • Năng lực xử lý tăng cường này được dùng cho việc hoạt họa và phát hiện va chạm cho toàn bộ 128 sprite mà PPU cung cấp, cũng như xoay và scale sprite theo thời gian thực rồi ghi vào PPU VRAM
    • Băng demo Nintendo SA-1 cho thấy rõ các cải tiến này
    • Cộng đồng game retro đã giảm slowdown của các game cũ bằng các dự án như Eliminating slowdown in Super Mario World, Gradius III slowdown removal, và Contra III slowdown removal
    • Việc chuyển một tựa game sang SA-1 có vẻ khá phức tạp vì đặc biệt cần remap truy cập RAM/ROM, điều này cũng làm dấy lên thắc mắc khi tài liệu SA-1 ghi rằng “SNES và SA-1 dùng cùng một memory mapping”
    • Năm 2019, SA-1 Collection Project đang xúc tiến tự động remap và SA-1 hóa thêm nhiều game SNES

Các chip phụ về đồ họa, nén và toán học

  • CX4 là chip của Capcom dùng để chạy Mega Man X2 và Mega Man X3
    • Nó có thể xử lý dựng hình wireframe 3D, nhiều phép toán học, và scale/xoay sprite rồi ghi vào VRAM
    • Có thể xem ví dụ ở introtrận boss của MMX2
    • CX4 không chỉ có wireframe mà còn cung cấp sprite functions, propulsion, vector, triangle, trigonometric functions, result tables và coordinate transform functions; trong MMX2 và MMX3 nó xử lý toàn bộ sprite
    • PCB của Mega Man X2 có CIC ở U4, ROM 8M ở U1, ROM bổ sung ở U2, CX4 ở U3, và oscillator 20MHz ở X1
  • S-DD1 là chip giải nén sprite có thể cấp dữ liệu trực tiếp vào PPU VRAM
    • Nó được dùng trong hai game là Star Ocean và Street Fighter Alpha 2
    • Từng có tin đồn đoạn trống trước khi bắt đầu round trong Street Fighter Alpha 2 là do S-DD1, nhưng theo giải thích của Modern Vintage Gamer thì vấn đề thực tế nằm ở việc chuyển sample âm thanh sang DSP RAM
    • PCB của Street Fighter Alpha 2 có ROM 4MiB ở U1 và S-DD1 giải nén asset theo thời gian thực; CIC được tích hợp vào S-DD1 nên không có chip riêng
  • DSP-1 chiếm 16 trong tổng số 19 tựa game hỗ trợ họ DSP, và được dùng trong Super Mario Kart cùng Pilotwings
    • Chữ DSP là Digital Signal Processor, nhưng vì nó không xử lý tín hiệu liên tục như DSP thông thường nên cái tên này bị xem là đặt chưa chuẩn
    • Theo developer manual, DSP-1 hoạt động ở blocking mode, nghĩa là CPU Super NES phải chờ trong lúc DSP xử lý dữ liệu
    • Nó cung cấp các lệnh như nhân 16-bit tốc độ cao, reciprocal, sin/cos projection, vector size và rotation, rất quan trọng cho lập trình HDMA và cập nhật góc nhìn 3D của Mode 7
    • PCB của Super Mario Kart có CIC ngoài, ROM, SRAM để lưu save, bộ giải mã địa chỉ MAD-1, pin và oscillator để chạy ở 8MHz
    • Ba phiên bản DSP-1, DSP-1a, DSP-1b có sửa lỗi và cải tiến quy trình chế tạo, nhưng hành vi hơi khác nhau, dẫn tới việc máy bay va xuống đất trong demo của Pilotwings
  • Các chip nhỏ khác cũng chỉ được dùng giới hạn trong một số game cụ thể
    • DSP-2 được dùng trong duy nhất Dungeon Master để chuyển các routine từ Atari ST, và có vẻ chủ yếu để hỗ trợ scale sprite
    • DSP-3 được dùng trong duy nhất SD Gundam GX
    • DSP-4 được dùng trong hai game Top Gear 3000 và The Planet's Champ TG 3000
    • OBC-1 được dùng trong duy nhất Metal Combat: Falcon's Revenge; từng có tin đồn là chip thao tác sprite, nhưng trên nesdev.org vẫn còn tranh luận
    • S-RTC là chip theo dõi đồng hồ thời gian thực trong một tựa game Daikaijuu Monogatari II, và chưa rõ vì sao nhà phát triển Hudson Soft cần theo dõi thời gian thực
    • SPC7110 của Epson là chip giải nén dữ liệu dùng trong Tengai Makyou Zero, Momotaro Dentetsu Happy và Super Power League 4; riêng Super Power League 4 còn có chức năng đồng hồ thời gian thực
    • Dòng ST của SETA Corporation được cho là nhằm cải thiện AI trong game; ST-010 chỉ dùng cho Exhaust Heat 2, ST-011 cho Hayazashi Nidan: Morita Shougi, và ST-018 cho Hayazashi Nidan Morita Shougi 2
    • ST-018 có vẻ là một CPU ARM với lệnh được chứa trong ROM nội bộ

Dòng Super FX và các bản mod của cộng đồng

  • GSU-1 được dùng trong năm game: Star Fox, Stunt Race FX, Vortex, Dirt Racer và Dirt Trax FX
    • Đây là một trong những chip phụ được tài liệu hóa tốt nhất, với wiki, tutorial và tài liệu Super Nintendo Developer Manual Book II
    • Nó chạy ở 10.74MHz, bằng cách chia đôi master clock 21.47MHz bên trong
    • Nhờ có instruction cache 512 byte nội bộ, nó có thể hoạt động mà không làm SNES CPU bị thiếu băng thông
    • Khi hoàn tất công việc, nó có thể phát interrupt tới CPU console là C-CPU
  • Trong khi PPU1/PPU2 của SNES thiên về tilemap và sprite, Super FX lại mạnh về render pixel và raster hóa polygon
    • Nó thường render vào framebuffer nằm trên băng game
    • Nội dung framebuffer sẽ được chuyển sang VRAM trong lúc VSYNC
    • PCB của Star Fox có GSU-1 ở U3, CIC ở U5, 74LS139 ở U4, ROM ở U1, và SRAM 32KiB không dùng pin ở U2
    • Phần SRAM này không phải để lưu savegame mà một phần được dùng để chứa framebuffer của Super FX
  • Cộng đồng SNES cũng đang đầu tư thời gian cho GSU-1 giống như SA-1, với các dự án như Project Super FX nhằm cải thiện tối đa các tựa game cũ
  • GSU-2 là GSU-1 chạy ở tốc độ đầy đủ 21.47MHz, được dùng trong ba game là Super Mario World 2: Yoshi's Island, DOOM và Winter Gold
    • Có thí nghiệm từ cộng đồng thay GSU-1 trên băng Star Fox bằng GSU-2 để cho thấy mức tăng hiệu năng
    • Randy Linden của bản DOOM trên SNES đã reverse engineer mọi thứ mà không có tài liệu chip GSU cũng như mã nguồn DOOM
    • Bản DOOM trên SNES là bản port console duy nhất có thể dùng level của PC, trong khi các console khác phải đơn giản hóa geometry
    • Yoshi's Island chủ yếu dùng GSU-2 để scale và kéo giãn sprite, rồi ghi lại sprite đã chỉnh sửa vào PPU VRAM
    • PCB của Yoshi's Island có pin nên SRAM được dùng cho cả framebuffer lẫn trạng thái lưu game
    • DOOM được overclock lên 32MHz, giúp framerate tăng từ 10–11fps lên 14–15fps
  • MSU-1 không phải là chip từng xuất hiện trong các băng game phát hành thực tế
    • Near thiết kế nó để cho phép streaming audio chất lượng CD, phát FMV và truy cập tối đa 4GB RAM trên SNES
    • Đối tượng nhắm đến là cộng đồng mod game, và có thể thấy kết quả trong Enhanced Zelda III: A link to the past và Enhanced Another World

Gánh nặng để lại cho việc hiện thực trình giả lập

  • Các chip phụ đã cải thiện mạnh trải nghiệm người chơi và giảm chi phí cho nhà phát hành, nhưng về sau lại trở thành thử thách khó nhằn cho các nhà phát triển trình giả lập
  • Một số game phụ thuộc vào EC đặc biệt chỉ đến năm 2012 mới được giả lập đúng cách
  • Thời gian đầu, vì chưa biết cấu trúc bên trong của S-DD1 nên những game như Street Fighter Alpha 2 từng được “giả lập” bằng cách yêu cầu graphic pack sprite đã được giải nén sẵn
  • Việc hiện thực chip đòi hỏi lượng reverse engineering đáng kể
    • Một số chip có chức năng hardcoded nên cần de-capping
    • Các chip lưu lệnh trong ROM nội bộ như chip nền ARM buộc trình giả lập phải được cung cấp file BIOS
  • Ngay cả tính đến năm 2020, việc giả lập một số chip hiếm nhất vẫn còn chưa hoàn tất

1 bình luận

 
GN⁺ 2024-04-23
Ý kiến trên Hacker News
  • Tôi rất thích việc băng game của các máy console đời cũ gần như giống hệt card mở rộng PCI trên PC
    Chúng kết nối trực tiếp vào bus nên về cơ bản có thể làm gần như mọi thứ, tiếc là cách làm này chấm dứt sau GameBoy Advance, và từ Nintendo DS trở đi thì chúng gần hơn với thiết bị lưu trữ dữ liệu thuần túy
    Vì thế ngày nay thậm chí có thể làm những kiểu mở rộng hiện đại kỳ quặc như chip ray tracinghttps://www.youtube.com/watch?v=2jee4tlakqo, và cả chip mở rộng MSU1 dường như không tồn tại dưới dạng chip vật lý thật mà chỉ có trong phần mềm giả lập
    Về mặt lý thuyết thì vẫn có thể sản xuất, nên cũng có thể làm cả băng SNES thật cho Road Blasterhttps://www.youtube.com/watch?v=BvIXUOr4yxU
    Trong chính bài viết, mục “Street Fighter Zero 2” lại được ghi là ROM USA, nhưng Street Fighter Zero là tên mà Street Fighter Alpha được gọi ở Nhật, nên Zero 2 phải là bản Nhật của Alpha 2

    • Thậm chí còn có cả reverse-emulation cho NES cực kỳ điên rồ
      Ở đây, khi thay thế băng bằng một máy tính hiện đại thì sẽ xảy ra đủ chuyện kỳ quặc. Ví dụ như dùng NES để trình chiếu gần như một bài PowerPoint về sự hài hước
      https://www.youtube.com/watch?v=ar9WRwCiSr0
    • Cũng không hẳn đúng hoàn toàn. Ít nhất một số băng DS có bộ thu hồng ngoại. Ví dụ như Pokemon HeartGold, và tôi nhớ Learn with Pokémon: Typing Adventure thậm chí còn thêm cả Bluetooth vào thẻ
      Vì vậy vẫn có một khả năng hạn chế để bổ sung chức năng, và dù không thú vị bằng việc thêm CPU, thì cũng không phải GBA từng có quá nhiều ví dụ làm được những chuyện ghê gớm hơn thế
    • Tôi tự hỏi những game như Pokemon SoulSilver có bộ phát hồng ngoại bên trong băng đã làm điều đó bằng cách nào
      Muốn biết liệu đó là thứ được thiết kế sẵn cho một trường hợp sử dụng cụ thể, hay có một kênh riêng dành cho các linh kiện mở rộng băng ở mức hạn chế
    • Theo tôi biết thì flash cartridge SNES hiện đại có thể hỗ trợ MSU1. MiSTer FPGA cũng hỗ trợ MSU1
    • Phần bản địa hóa Street Fighter thì rất lộn xộn. Tôi không hiểu vì sao họ lại đổi cùng một cái tên sang gắn cho các nhân vật khác nhau
  • Một chi tiết khác còn thiếu ở đây là ngay cả những băng không có chip mở rộng cũng có các cấp hiệu năng khác nhau
    CPU của SNES trên danh nghĩa chạy ở 3.58MHz, nhưng để thực sự chạy ở tốc độ đó thì phải cắm băng “FastROM”. Nintendo cũng cung cấp cho các nhà phát hành định dạng “SlowROM” rẻ hơn, và trong trường hợp đó CPU bị hạ xuống còn 2.68MHz
    Cũng có cả cộng đồng modder phát triển các bản vá để chuyển game SlowROM sang FastROM nhằm giảm độ trễ. Tôi từng đọc rằng một số game SlowROM có vẻ ban đầu được phát triển cho FastROM rồi bị đổi sang SlowROM vào phút chót vì yêu cầu cắt giảm chi phí từ phía nhà phát hành

    • Out Of This World là một trường hợp SlowROM/FastROM mà nhà phát triển không được phép dùng FastROM
      Nếu tôi nhớ không nhầm thì khi đó họ nói dùng SlowROM có thể tiết kiệm tới 50 xu cho mỗi băng
    • Điều đáng ngạc nhiên ở SNES là ngay cả RAM tích hợp cũng không thể được truy cập ở xung nhịp danh nghĩa 3.58MHz, và ngay cả khi đó hệ thống vẫn bị chậm lại
      Đối thủ của nó là TurboGrafx-16 thường chạy ở 7MHz và dùng CPU họ 6502 với yêu cầu timing bộ nhớ tương tự, nên tôi luôn bối rối không hiểu vì sao SNES lại keo kiệt về tốc độ đến vậy
      Dù sao thì TurboGrafx thất bại ở phương Tây còn SNES lại thành công trên toàn cầu, nên hẳn là nó đã làm đúng điều gì đó
    • Tôi luôn thắc mắc liệu đó có phải là một phân hạng giấy phép do Nintendo tự đặt ra, hay thực sự có sự khác biệt về tốc độ đọc dữ liệu của băng
      Xét cho cùng thì mọi băng SNES đều dùng mask ROM
    • Tôi muốn biết liệu có lý do phần cứng nào đằng sau chuyện đó không, hay chỉ là Nintendo chặt chém khách hàng và làm cuộc sống game thủ tệ hơn
    • Bài viết có nhắc đến LoROM và HiROM, nên có lẽ họ đang nói về cùng một chuyện
  • Tôi ước các nhà phát triển tiếp tục viết về những chi tiết kiểu này trên blog dưới dạng bài viết thay vì làm vlog YouTube
    Có thể nhét rất nhiều chi tiết chỉ trong vài KB
    “Super Mario World” vẫn là một kiệt tác game hay nhất từ trước đến nay. Những nhân vật, sprite và màn chơi tuyệt vời được nhét gọn trong chỉ 360KB

    • Kích thước tệp trên trang là sai. Super Mario World là 512KB, và nếu bỏ phần padding ở cuối thì là 508KB
      Chỉ khi nén dưới định dạng ZIP thì nó mới còn khoảng 360KB
    • Super Mario World rất tuyệt, nhưng tôi nghĩ game hay nhất trên SNES là Donkey Kong Country 2
      Nhạc hay, điều khiển chuẩn xác, đồ họa cuốn hút, nó làm đúng mọi mặt của một game platform
      Terranigma cũng gần ở cùng đẳng cấp đó, còn theo tôi thì Super Mario World có lẽ đứng khoảng hạng 3
    • Tôi cho rằng lý do lớn khiến các nhà phát triển chọn YouTube thay vì bài viết là trong nhiều trường hợp nội dung video khó bị đánh cắp hơn
      Văn bản có thể bị sao chép, đổi vài từ rồi tái sử dụng trên các trang SEO đầy quảng cáo
    • “Pitfall!” trên Atari VCS đã chứa tới 255 màn hình game hoàn toàn khác nhau trong một băng 4KB :)
  • Tôi tự hỏi nếu tận dụng khả năng đưa “chip mở rộng” vào băng bằng công nghệ hiện đại thì có thể làm được gì
    Có nói rằng SuperFX có framebuffer riêng và sẽ sao chép toàn bộ nó sang VRAM
    Vậy về mặt kỹ thuật, có thể nhét một SoC cực kỳ mạnh vào băng, dùng nó để render đồ họa hiện đại ở độ phân giải của SNES rồi chép khung hình kết quả sang VRAM của SNES không?
    Tôi tò mò giới hạn nằm ở đâu

  • Phần “Randy Linden, tác giả của DOOM cho SNES, không thể tiếp cận tài liệu về chip GSU hay mã nguồn DOOM; mọi thứ đều được đảo ngược kỹ thuật” gây ấn tượng về mặt kỹ thuật, nhưng khiến tôi tò mò vì sao lại phải làm như vậy

    • Doom Wiki có chi tiết: https://doomwiki.org/wiki/Super_NES
      Randy Linden, lập trình viên duy nhất của bản port, đã bị cuốn hút bởi trò chơi và ban đầu tự mình bắt đầu port Doom sang Super NES
      Khi đó mã nguồn Doom vẫn chưa được công bố, nên Linden đã tham khảo Unofficial Doom Specs để hiểu chi tiết cấu trúc lump của trò chơi. Tài nguyên được trích xuất từ IWAD, nhưng do giới hạn kỹ thuật nên một phần không được sử dụng
      Theo một cuộc phỏng vấn, do thiếu hệ thống phát triển cho Super FX, Linden đã tự tạo trên chiếc Amiga của mình bộ công cụ assembler, linker và debugger mang tên ACCESS trước khi nghiêm túc phát triển bản port
      Về bộ kit phần cứng, ông dùng một cartridge Star Fox đã hack và hai tay cầm Super NES đã được chỉnh sửa cắm vào máy console rồi nối với cổng song song của Amiga, đồng thời dùng giao thức nối tiếp để kết nối thêm hai thiết bị nữa
      Sau khi tạo ra một nguyên mẫu hoàn chỉnh, ông cho công ty chủ quản là Sculptured Software xem, và công ty đã giúp hoàn tất việc phát triển. Linden nói rằng ông ước có thể thêm các màn chơi bị thiếu, nhưng trò chơi khi đó đã chạm mức tối đa cho game Super FX 2 là 16 megabit, khoảng 2MB, và chỉ còn thừa chừng 16 byte
      Ông cũng bổ sung hỗ trợ cho súng ánh sáng Super Scope, chuột Super NES và modem XBAND cho chơi mạng. Đồng nghiệp lập trình John Coffey, một fan của dòng Doom, đã chỉnh sửa các màn chơi, nhưng một số trong đó bị id Software từ chối
    • Bản port Wolfenstein 3D cũng có câu chuyện tương tự. John Carmack từng khen Rebecca Heineman vì đã học tiếng Nhật để đọc bằng sáng chế nhằm kiếm tài liệu kỹ thuật
      Quanh những chuyện như thế này lúc nào cũng có lịch sử rất thú vị, và tôi cũng đã viết thêm một chút về chuyện liên quan ở đây: https://eludevisibility.org/super-noahs-ark-3d-source-code
    • Không rõ trường hợp này có vậy không, nhưng dev kit và SDK/tài liệu thường là SKU riêng, và loại sau nhiều khi còn đắt hơn
      Nếu tôi nhớ không nhầm thì đội Crash Bandicoot cũng không có SDK, nên đã tự chạy mã của mình và phát hiện ra một lỗi phần cứng liên quan đến lưu trên memory card
  • Tôi thắc mắc các số lượng byte của nhiều game lấy từ đâu ra
    Game nằm trên chip ROM, và đúng kiểu chip ROM thì kích thước là lũy thừa của 2. Ví dụ Super Mario World phát hành trên ROM 512kb, vậy con số 346.330 byte này từ đâu ra? Có phải kích thước sau nén không?

    • Các con số là ước tính dựa trên kích thước ZIP. Nhưng đó không phải cách làm tốt
      Chắc phải viết một chương trình giải nén từng file ZIP rồi đếm số byte 0 đệm ở cuối file
      Hôm nay đã quá muộn rồi, mai tôi sẽ viết và cập nhật bài
    • Trông giống kích thước sau nén. Nếu nén SMW.SMC bằng gzip thì sẽ ra file 347KB. Điều này khá dễ gây hiểu lầm
      Còn một vấn đề khác nữa. Bài viết làm như thể MVG là người phát hiện việc SFA2 bị khựng là do tải dữ liệu âm thanh, nhưng chuyện này đã được biết đến từ rất lâu trước video đó: https://forums.nesdev.org/viewtopic.php?p=70474#p70474
      Phần nói về RTC cũng có vẻ khá rối. Mục đích rõ ràng là để đồng hồ vẫn tiếp tục chạy ngay cả khi console đã tắt và cartridge đã rút ra, giống như các game Pokemon trên GBC/GBA, vậy mà bài lại nói kiểu như có thể là do NTSC clock drift. Tôi thật sự không hiểu đang muốn nói gì
    • Đó là phần đệm dữ liệu
  • Liên quan đến đoạn “Super Mario World cũng bị xử lý kiểu này. Tôi không nhớ có bị chậm lại không, nhưng khi đó tôi mới chỉ mười hai tuổi”, Yoshi’s Island 4 có hiện tượng chậm lại trong một số điều kiện nhất định
    Chuyện đó xảy ra khi đang cưỡi Yoshi mà lấy được Starman rồi nhấn P-Switch; ngoài ra còn có vài màn khác tôi không nhớ chính xác, một chỗ có rất nhiều Monty Mole cùng nhảy ra một lúc, hình như là ở Chocolate Island
    Tôi cũng nhớ có trường hợp thứ ba là trên màn hình xuất hiện đồng thời hai Sumo Bros. và Amazing Flying Hammer Bro.

    • Tôi nhớ Outrageous bị lag rất nặng
  • Tôi chưa bao giờ thật sự hiểu cách người ta dump ROM từ cartridge để dùng cho emulator
    Tôi hiểu việc dump lệnh và asset rồi đóng gói thành file dữ liệu mà emulator có thể diễn giải. Nhưng emulator mô hình hóa toàn bộ phần cứng chip mở rộng bên trong cartridge như thế nào? Phần đó được dump từ cartridge gốc ra sao?

    • Chip mở rộng không phải ROM, nên phải được giả lập riêng
      Cá nhân tôi thấy tình hình bên NES, tiền thân của SNES, còn tệ hơn một chút
      NES có khá nhiều chip mở rộng gọi là mapper. Chức năng phổ biến của chúng không phải là thêm bộ xử lý hay năng lực bổ sung, mà là mở rộng không gian bộ nhớ của NES; vì nếu không có chúng thì NES bị giới hạn ở PRG ROM 32KB và CHR graphics ROM 4KB hoặc 8KB, nên phần lớn game đều dùng
      Đa số game phát hành sau thời điểm NES ra mắt đều dùng các chip như vậy
      Tất cả chúng, cùng với chính bản thân console, đều phải được đảo ngược kỹ thuật. May là việc đó đơn giản hơn nhiều so với đảo ngược kỹ thuật thêm CPU hay bộ tăng tốc
      Có những chip phổ biến được nhiều game dùng như MMC1, MMC3, và cũng có chip gần như chỉ dành riêng cho Punch-Out như MMC2
    • Không phải là được dump ra. Phần triển khai của emulator sẽ tái tạo chức năng của chip mở rộng bằng phần mềm
      Số loại chip mở rộng không quá nhiều, nên chưa đến mức bất khả thi
  • Cơ chế chống sao chép của SNES từ góc độ người tiêu dùng thì khá dễ vượt qua. Tuy vậy, với các nhà phát triển game hoặc nhà phát hành thì có thể không như vậy
    Hồi đó ai cũng có các “thiết bị sao lưu” cho SNES. Đó là thiết bị cắm vào SNES và gắn kèm ổ đĩa mềm, dùng đĩa mềm 3.5 inch rất rẻ để “sao lưu” game
    Thứ duy nhất hệ thống cần để hoạt động là một cartridge gốc; cắm nó vào máy sao chép thì thiết bị sẽ tái sử dụng chip CIC của cartridge đó
    https://en.wikipedia.org/wiki/Game_backup_device

  • Đọc đến đoạn “DSP-1 có ba phiên bản: DSP-1, DSP-1a và DSP-1b. Khi các bản sửa lỗi và cải tiến quy trình được đưa vào, hoạt động của chip thay đổi đôi chút, và kết quả là chiếc máy bay trong bản demo Pilot Wings đã lao xuống đất” làm tôi nghĩ lần sau ai hỏi vì sao tôi chơi dở thế thì sẽ lấy đó làm cái cớ