এনইএস (এবং বেশিরভাগ এসএনএসইএস) এর ক্ষেত্রে এখানে একটি প্রাথমিক ধারণা রয়েছে view আমি কোনও এনইএস গেম লিখিনি তবে একটি এনইএস এমুলেটর (গ্রেবক্স) লিখেছি এবং পুরানো কার্টগুলির মোটামুটি পরিমাণ রেভ ইঞ্জিনিয়ারিং করেছি।
প্রোগ্রামিং ভাষার ক্ষেত্রে: হ্যাঁ, এটি সমস্ত সমাবেশ ছিল। এনইএসের প্রোগ্রামিংয়ের অর্থ হার্ডওয়্যার বিঘ্ন, ডিএমএ পোর্ট, ব্যাংক স্যুইচিং ইত্যাদির সাথে সরাসরি কাজ করা ভাগ্যক্রমে, 6502 (বা বরং 2A03) প্রোগ্রামিং করা বেশ সহজ [1]:
- কয়েকটি রেজিস্টার রয়েছে: এ, এক্স এবং ওয়াই মূলত, দ্বিতীয়টি কেবল ইনডেক্স এবং পুনরাবৃত্তির জন্য ব্যবহারযোগ্য
- নির্দেশিকা সেটটি ছোট এবং বেশিরভাগ সোজা is
- খুব বেশি স্মৃতি নয়: প্রধান র্যাম 2KB, একটি বিকল্প batteryচ্ছিক ব্যাটারিযুক্ত 8KB এক্সটেনশান সহ। 2KB এর মধ্যে 256 বাইট স্ট্যাক এবং পৃষ্ঠা 0 (প্রথম 256 বাইট) জন্য সংরক্ষিত ছিল যেখানে কিছু বিশেষ ঠিকানা মোডের কারণে আপনি আপনার সর্বাধিক ব্যবহৃত পয়েন্টার এবং মানগুলি সঞ্চয় করতে চান
এই 3 টি জিনিস একসাথে এমন পরিবেশের জন্য তৈরি করে যা এর সাথে কাজ করার সময় মুখস্ত করার পক্ষে যথেষ্ট সহজ। হ্যাঁ, আপনি সমস্ত স্মৃতি নিজেই পরিচালনা করেন তবে এর মূল অর্থ হ'ল আপনি যেখানে সমস্ত কিছু এগিয়ে যায় তার একটি পুরো মানচিত্র তৈরি করুন এবং সেই মানচিত্রটি খুব বড় নয় কারণ আপনাকে কেবল 2 কে নিয়েই চিন্তা করতে হবে, তাই আপনি এটি একটি টুকরো টুকরো করে কল্পনা করতে পারেন গ্রাফ পেপার আপনাকে কিছুটা আরও পরিকল্পনা করতে হয়েছিল এবং র্যাম এবং রম (কার্ট্রিজে) অবস্থানগুলিতে স্থিরভাবে ভেরিয়েবল এবং ধ্রুবককে বরাদ্দ করতে হয়েছিল।
আপনার কার্টরিজ ডেটা সিপিইউর ঠিকঠাক সীমা ছাড়িয়ে গেলে এটি কিছুটা জটিল হয়ে ওঠে। এটি K৪ কেবি, যার মধ্যে নীচের অংশে 32KB প্রস্তর স্থাপন করা হয়েছে এবং সমস্ত ধরণের হার্ডওয়্যার পোর্ট এবং র্যামে ম্যাপ করা হয়েছে। এখানেই ব্যাঙ্ক-স্যুইচিং খেলতে আসে, যার অর্থ রমটির একটি অংশকে উচ্চতর 32KB ঠিকানার জায়গার (অংশ) ম্যাপিং করা।
প্রোগ্রামার চাইলেও এটি ব্যবহার করা যেতে পারে, তবে উদাহরণস্বরূপ কার্টরিজের পৃথক 8 কেবি মেমরির অঞ্চলে প্রতিটি স্তরের সমস্ত স্তরের ডেটা, মেটা ডেটা এবং কোড সহ 3 স্তরের একটি খেলা থাকতে পারে। স্তরের উদাহরণস্বরূপ, প্রতিটি ফ্রেম আপডেট ইত্যাদির জন্য কলব্যাকস থাকতে পারে ading "লোডিং" স্তরটির অর্থ মেমরির এই 8KB অংশটিকে ম্যাপিং করতে হবে যেমন 0xC000 at তারপরে আপনি উল্লেখ করতে পারেন যে আরআর রুটিন সর্বদা 0xC000 এ থাকে, ফ্রেম আপডেটের রুটিন 0xC200 এ থাকে এবং স্তর ডেটা 0xC800 থেকে শুরু হয়। গেমের মূল কোডটি অন্য একটি মেমরি অংশে রাখা থাকে তবে ডান অংশে সোপান করে উপযুক্ত সময়ে 0xC000 এবং 0xC200 এ পরম ঠিকানাগুলিতে ঝাঁপ দিয়ে স্তর পরিবর্তনগুলি নিয়ন্ত্রণ করে।
রাইটিং গ্রাফিকাল ডেটা: NES এর টাইলস ডেটা 2 বিট 8x8 পিক্সেল মানচিত্র। পটভূমির জন্য তারা 1/4 রেজোলিউশন 2-বিট স্তরের সাথে একত্রিত হয়। এই 4-বিট মানগুলি তখন 16-এন্ট্রি প্যালেটে ইনডেক্স করা হয়েছিল, আমি বিশ্বাস করি যে 53 কার্যকর অনন্য রঙ উপলব্ধ। স্প্রাইটস ২ বিট পিক্সেল ডেটাও ব্যবহার করে এবং প্রতিটি স্প্রাইট আবার নিজস্ব 4 বিট পাল সূচক তৈরি করে নিজস্ব 2 বিট গ্রুপ সূচক নির্দিষ্ট করে index স্ক্রিনের বিজি চিত্রটি টাইল সূচক সংখ্যার 32x30 অ্যারে।
মূলত, এক টন পুনরাবৃত্তি এবং সূচকে সূচকগুলি রেখে আপনি ডেটা খুব ছোট রাখতে পারেন। স্তর তথ্য প্রায়শই টালি সূচকের উল্লম্ব বার হিসাবে সংরক্ষণ করা হত এবং যেহেতু vert উল্লম্ব বারগুলি পাশাপাশি ব্যবহার করা হত, সেগুলি পাশাপাশি সূচীকরণ করা হয়েছিল এবং কেবল একবার কার্তুজে সংরক্ষণ করা হয়েছিল। সাধারণ ডেটা সংক্ষেপণের কৌশলগুলি একইভাবে কাজ করে। এটি মারিও 1 কে 32KB ডেটা (অতিরিক্ত জায়গা সহ) এবং 8 কেবি বিটম্যাপের ডেটা হতে দেয়।
দেব পরিবেশের জন্য, আমি এমন কিছু ফটো দেখেছি যেখানে লোকেরা প্রমাণের জন্য কিছু প্রাচীন কম্পিউটারে কাজ করেছিল EEPROM বার্নার পর্যন্ত কাজের জন্য। টুল-অ্যাসিস্টড ডিবাগিং এসএনইএস বয়স [২] না হওয়া পর্যন্ত আসলেই সম্ভাবনা ছিল না। এত পুরানো গেমগুলির মধ্যে "স্পষ্ট" বাগ রয়েছে এবং গেমশার্কের মতো জিনিসগুলি তারা যা করতে পারে তা কেন এটি প্রধান কারণ; খেলোয়াড়ের স্বাস্থ্য সবসময় মেম-লোকেশনের এক্সে থাকে, তাই আপনি এটি সর্বদা 100 হতে বাধ্য করতে পারেন।
আপনি যদি এই বিষয়গুলিকে আকর্ষণীয় মনে করেন তবে আমি আপনাকে
উদ্বুদ্ধ করতে উদ্বুদ্ধ করি যেমন: http://wiki.nesdev.com/w/index.php/Nesdev_Wiki NES অনলাইনেও খুঁজে পাওয়ার জন্য বেশ কয়েকটি প্রোগ্রামিং কোর্স রয়েছে।
আমি আশা করি এই সরলীকৃত ওভারভিউটি 80 এর দশকের গেম বিকাশের কিছুটা অন্তর্দৃষ্টি দিয়েছে।
[1] তুলনামূলকভাবে কথা বলছি। আমি প্রায় 85% পাওয়ারপিসি অ্যাসেমব্লিতে গ্রেবক্স নিজেই লিখেছিলাম বলে আমি পক্ষপাতদুষ্ট। [২] এফএফ 6 নিবন্ধটি তৈরি করা দেখুন: http://www.edge-online.com/features/the-making-of-final-fantasy-vi/