2010-06-14 44 views
11

Tôi vừa xem Super Mario Bros. -1 Thế giới trục trặc trong youtube và tôi thực sự bắt đầu tự hỏi về mã đằng sau những trò chơi đó. Ngôn ngữ nào đã được sử dụng? Điều gì về hệ điều hành cho bảng điều khiển trò chơi video? Có trang web nào có tài nguyên về chủ đề này không? (Tôi là một game thủ video thập niên 90 nên tôi đặc biệt quan tâm đến lập trình đằng sau những trò chơi đó nhưng hãy tạo một wiki này và bao gồm các liên kết đến tài nguyên về lập trình trò chơi video nói chung, nếu bạn muốn)Trò chơi video retro lập trình

+0

Bạn có thể liên kết tới video này không? Điều gì trục trặc? – Ether

+0

http://www.youtube.com/watch?v=JeHccUgn4hI –

Trả lời

10

Có phần nào đã làm việc trên trình mô phỏng cho NES (tôi có giải mã một số mã opcode, nhưng không có phần cứng nào khác được mô phỏng), tôi có thể chia sẻ một vài câu trả lời.

  1. Đối với hầu hết các trình xử lý trò chơi đã được sử dụng. Tối ưu hóa các trình biên dịch, nếu có sẵn cho CPU là hư không gần như tốt 20-30 năm trước như chúng ngày nay. Để có được hiệu suất, bạn cần phải viết trong assembler (Điều này thậm chí còn đúng trên PC. Các phần của Doom là trong ASM). Tất cả các chi tiết như vậy, kể từ khi CPU NES chạy ở mức dưới 2MHz. Ngoài ra, bộ nhớ đắt hơn so với ngày hôm nay. Mario gốc được lưu trữ trong khoảng 40k bộ nhớ. 16k trong số đó là mã thực tế và phần còn lại là tài nguyên đồ họa và âm thanh. Cho đến thời đại 32 bit, bất kỳ loại hệ điều hành nào, hoặc thậm chí được xây dựng trong các tiện ích, trên một giao diện điều khiển là không phổ biến (Sega CD là một trong số ít trong thời đại 16 bit với BIOS thực, và ở đó là một chương trình nhỏ được ghi vào bộ xử lý của Game Boy chịu trách nhiệm về logo của Nintendo di chuyển xuống trên nguồn điện). Xem ở trên về các ràng buộc về kích thước, là một lý do chính. Khi lắp hộp mực, chip ROM trong ô tô được kết nối trực tiếp với bus địa chỉ của CPU. Khi bật nguồn, CPU sẽ đọc từ một địa chỉ cố định để lấy địa chỉ thực mà chương trình bắt đầu, rồi nhảy đến vị trí đó và bắt đầu thực hiện.

Đối với tài nguyên, NES Dev Wiki có tài nguyên liên quan đến phần cứng NES, cùng với tham chiếu chương trình. Miền của Zophar cũng có các tài liệu kỹ thuật và các ROM tên miền công cộng cho một vài giao diện điều khiển (Tôi không biết liệu tôi có nên liên kết tới ZD trên trang web này hay không, chỉ cần google)

+0

'là một trong số ít ... với BIOS thực tế - bạn có nghĩa là hệ điều hành? –

-1

Tôi không đã thực hiện nghiên cứu về điều này, nhưng Super Mario Bros và các trò chơi được đánh giá lại 90 có sẵn dưới dạng tệp .nes thay vì hộp mực và bộ giả lập mã nguồn mở cũng có sẵn.

AFAIK, chúng thường được viết bằng C++. Tôi không biết về tính hợp pháp của các tệp nes và trình giả lập này, nhưng chúng có sẵn trên internet. bạn có tìm kiếm với chuỗi bên phải!

+1

Phần mềm trò chơi và bảng điều khiển không được viết bằng C++. Hay bạn có nghĩa là giả lập ngày nay? –

+0

Hi Dominic, vâng tôi đang nói về giả lập todays (như nector vv) – thatsalok

2

Hầu hết các bảng điều khiển cũ có một số loại ROM ROM .

Một số mã nguồn cho những đang online:

Bạn có thể đọc tháo hầu hết-nhận xét đến 7800 BIOS: http://atarihq.com/danb/files/7800bios.asm

nguồn BIOS Các Atari 5200 là thú vị hơn, vì nó hơn chỉ cần khởi tạo hệ thống và hiển thị màn hình giật gân: http://atarihq.com/danb/files/5200BIOS.txt

Colecovision có 8K (!) ROM BIOS là tốt; đó là nguồn là ở đây: http://xi6.com/code/coleco/coleco29.asm

Nguồn BIOS Odyssey II là ở đây: http://atarihq.com/danb/files/o2romsrc.txt

Các Intellivision đã có một hệ điều hành được gọi là "exec", không thể tìm thấy một tháo gỡ trực tuyến, mặc dù tôi đã tìm thấy một loạt các thông tin về nó: http://www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exechttp://www.beeslife.com/faq.htm#_Toc140592020 - nó có thói quen di chuyển sprites, đọc bộ điều khiển và tính căn bậc hai!

1

Hầu hết các trục trặc trong video đó là ổn định dựa trên gạch, trong đó có các lỗi trong phát hiện va chạm của bản đồ lát gạch tạo nên các cấp. Tất cả các cấp được tạo thành từ gạch hình vuông. Nếu bạn nhận thấy Mario luôn ở giữa gạch nơi anh ta không nên.

+0

Đúng. Từ những gì tôi đọc -1 thế giới xảy ra bởi vì trò chơi yêu cầu thông tin từ các thanh ghi khác nhau, vì vậy tôi tự hỏi về kiến ​​trúc chung của chương trình. Ngay cả phát hiện va chạm cũng là một khái niệm và nó thú vị như thế nào nó đã được đạt được. –

1

Quay lại cuối những năm 70, 80 và đầu những năm 90, hầu hết phần mềm (kể cả trò chơi) được viết bằng ASM (Assembly). Nếu bạn không quen với Assembly, nó thực tế là một ngôn ngữ lập trình cấp rất thấp, đó là phần cứng đặc biệt để lập trình CPU. Điều này có nghĩa là bạn phải kiểm soát mọi pixel trên màn hình và tạo lại các thư viện cho những thứ như vật lý, đồ họa và thậm chí cả âm thanh! Bạn đã rất hạn chế trong bộ nhớ để tái chế là phải. Trong bản gốc Super Mario Bros, bạn sẽ nhận thấy rằng những đám mây giống như những bụi cây, khác biệt duy nhất là màu sắc. Rất nhiều sprites đã được tái chế và vật lý trò chơi bị hạn chế.

Khi trò chơi trở nên ngày càng phức tạp, các nhà phát triển chuyển sang ngôn ngữ C cho phép phần mềm được viết nhanh hơn rất nhiều vì nó yêu cầu ít dòng mã hơn. Ngày nay rất nhiều game console và máy tính được viết bằng C++ vì nó cho phép phát triển nhanh hơn nhưng cũng cho phép phần mềm đủ gần với phần cứng để chơi nhanh hơn.

Các vấn đề liên quan