การสร้างเครื่องมือสำหรับการศึกษาเกม NES นามสกุลไฟล์ NES คืออะไร? วิธีเปิดไฟล์ nes บนพีซี

น้องสาวของฉันโทรหาฉันเมื่อไม่นานนี้และถามว่า: “ เป็นไปได้ไหมที่จะเล่นเกม Dandy บนคอมพิวเตอร์?". แน่นอน ฉันบอกเธอว่าต้องทำอย่างไร และตัดสินใจเขียนบทความสั้น ๆ ให้คุณด้วย ท้ายที่สุดแล้ว หลายคนต้องการกลับไปสู่วัยเด็กชั่วครู่และเล่นคอนโซลสุดโปรด และสำหรับสิ่งนี้ไม่จำเป็นต้องพยายามค้นหาที่ไหนสักแห่งและคิดว่าจะหาตลับเกมได้ที่ไหนอีก

คุณเล่น Dendy บนพีซีได้อย่างไร?

ก่อนอื่นเราต้อง ดาวน์โหลดเกมออนไลน์. เกมทั้งหมดสำหรับ Dendy เป็นไฟล์ที่มีนามสกุล .nes.

คุณมีหลายทางเลือกในการรับเกม:

1) คุณสามารถป้อนวลี "games for dendy" ในเครื่องมือค้นหาใดก็ได้ และไซต์ต่างๆ จะเปิดขึ้นต่อหน้าคุณ ซึ่งคุณสามารถดาวน์โหลดได้

2) คุณสามารถดาวน์โหลดเกมจากบางไซต์ที่ฉันแนะนำ นี่คือลิงค์ไปยังมัน

ฉันชอบไซต์นี้เพราะทุกอย่างในนั้นเรียบง่ายและชัดเจนมาก คุณเพียงแค่เลือกชื่อของคำนำหน้าทางด้านซ้าย (ในกรณีของเรา เดนดี้) - จากนั้นไปที่ส่วน "เกม" ของเล่นทั้งหมดจัดเรียงตามตัวอักษร: เลือกตัวอักษรที่ต้องการ - ค้นหาเกม - คลิกที่ชื่อ (หรือบนคำว่า "ภาพหน้าจอ") หากนี่คือของเล่นที่คุณกำลังมองหาอยู่จริงๆ ให้ดาวน์โหลดโดยคลิกที่ลิงก์

3) และคุณยังสามารถดาวน์โหลดชุดเล็ก ๆ ของเกมยอดนิยมสำหรับ Dendy ได้โดยตรงในความคิดของฉันซึ่งฉันทำเอง ประกอบด้วย: Battle City (รถถัง), Battletoads & Double_Dragon (กบต่อสู้), Chip and Dale Rescue Rangers 2 (ชิพและเดล), Darkwing Duck (เสื้อคลุมสีดำ), Double Dragon III (มังกรคู่), GALAXIAN (แมลงวัน), Jackie Chan, Super Mario Bros (ซูเปอร์มาริโอ), Teenage Mutant Ninja Turtles III (เต่านินจากลายพันธุ์วัยรุ่น), Tiny Toon Adventures (กระต่าย):

ดังนั้นไม่ว่าคุณจะดาวน์โหลดเกมจากที่ใด มันจะเป็นไฟล์เก็บถาวรที่มีไฟล์ที่มีนามสกุล NES. ฉันแนะนำให้คุณคัดลอกไฟล์เก็บถาวรที่ดาวน์โหลดทั้งหมดพร้อมเกมลงในโฟลเดอร์เดียวและเก็บไว้ในนั้น โดยส่วนตัวแล้วฉันสร้างบนดิสก์ของฉัน กับโฟลเดอร์ เกมและรวบรวมเกม Dendy ที่ฉันโปรดปรานทั้งหมดไว้:

ตอนนี้เราต้องการโปรแกรมพิเศษ อีมูเลเตอร์โดยเราจะเปิดเกม Dendiv ทั้งหมด

มีตัวจำลอง set-top box อยู่ไม่กี่ตัว แต่ฉันแนะนำให้ใช้ที่เป็นที่นิยมที่สุดของพวกเขา - FCEUX. เพื่อหลีกเลี่ยงปัญหาในการเปิดเกม จะเป็นการดีกว่าที่จะดาวน์โหลดโปรแกรมเวอร์ชันล่าสุดและยิ่งไปกว่านั้นจากเว็บไซต์ทางการ คุณสามารถดาวน์โหลดเวอร์ชันนี้ได้จากฉัน

หลังจากดาวน์โหลดไฟล์เก็บถาวรด้วยโปรแกรมแล้ว ให้คลายไฟล์ออกจากที่ใดที่หนึ่งบนคอมพิวเตอร์ของคุณ ฉันคลายแพ็กลงดิสก์ C:\fceux-2.2.2. เนื้อหาของโฟลเดอร์นี้มีลักษณะดังนี้:

ในการรันโปรแกรมจำลอง คุณต้องค้นหาไฟล์ที่นี่ fceux.exeและเปิดด้วยการดับเบิลคลิก

หากคุณต้องการ (เพื่อไม่ให้เข้าไปในโฟลเดอร์นี้ทุกครั้ง) คุณสามารถสร้างทางลัดสำหรับไฟล์นี้บนเดสก์ท็อปของคุณ ในการดำเนินการนี้ ให้คลิกที่ไฟล์ fceux.exeคลิกขวา - เลือก "ส่งไปที่" - "เดสก์ท็อป (สร้างทางลัด)":

ดังนั้นอีมูเลเตอร์จึงทำงาน:

ก่อนอื่น มาตั้งค่าการควบคุมกัน: ในเมนู เลือก configป้อนข้อมูล:

เราเห็นหน้าต่างต่อไปนี้ ที่นี่ตรงข้าม พอร์ต 1กดปุ่ม กำหนดค่า:

ตอนนี้เราต้องตั้งค่าแป้นพิมพ์ลัดสำหรับการควบคุม แดนดี้เล่นได้ทั้งบน แป้นพิมพ์; หรือถ้าคุณมี จอยสติ๊ก(หรือค่อนข้างเป็นแป้นเกม) แล้วด้วยความช่วยเหลือของมัน ทั้งแป้นพิมพ์และจอยสติ๊กได้รับการตั้งค่าในลักษณะเดียวกัน

การตั้งค่านั้นง่ายมาก: คลิกในหน้าต่างบนปุ่มที่ต้องการด้วยเมาส์และหลังจากนั้น สองครั้งกดปุ่มที่ต้องการบนแป้นพิมพ์ (หรือจอยสติ๊ก) จากนั้นเราไปที่ปุ่มถัดไป
โดยส่วนตัวแล้ว ฉันตั้งค่าปุ่มต่างๆ บนแป้นพิมพ์ดังนี้:

ซ้าย ขึ้น ขวา ลง คือ ลูกศร

เลือก- ช่องว่าง

เริ่ม- เข้า

Turbo B และ Turbo A คือ กุญแจ Aและ

บีและเอ - แป้น Zและ X

เมื่อตั้งค่าปุ่มทั้งหมดเสร็จแล้ว เราก็ออกจากที่นี่โดยคลิก "ปิด"

และสุดท้ายตอนนี้ รันเกมผ่านอีมูเลเตอร์. อย่างที่คุณจำได้ ฉันมีเกมที่ดาวน์โหลดทั้งหมดสำหรับ Dandy ที่จัดเก็บไว้ในดิสก์ ในโฟลเดอร์ เกม. อย่างไรก็ตาม โปรแกรมจำลอง FCEUX สามารถเปิดเกมได้โดยตรงจากไฟล์เก็บถาวร อีมูเลเตอร์อื่นๆ บางตัวจะไม่เห็นเกมเว้นแต่ว่าไฟล์นั้นจะถูกคลายซิปก่อน FCEUX เวอร์ชัน 2.2.2 ยังเปิดทั้งไฟล์ zip และ rar แต่เวอร์ชันเก่าของโปรแกรมนี้จะไม่เห็นไฟล์เก็บถาวร rar

ดังนั้นในเมนูเราไปที่ ไฟล์เปิด ROM:

จากนั้นเราพบเกมที่ต้องการบนคอมพิวเตอร์ เลือกเกมแล้วคลิก "เปิด":

นั่นคือทั้งหมด: เกมกำลังทำงาน และเราสามารถเริ่มเล่นด้วยคีย์ที่เราได้กำหนดค่าไว้ล่วงหน้า:

และอีกสิ่งหนึ่ง: โปรแกรมจำลอง FCEUX มีคุณสมบัติที่ยอดเยี่ยม " บันทึก” ซึ่งยังขาดแคลนในวัยเด็ก เหล่านั้น. คุณสามารถหยุดเมื่อคุณต้องการ และไม่ต้องกลัวว่าข้อความทั้งหมดของคุณจะสูญหาย

คุณสามารถใช้ได้ดังนี้: ระหว่างเกมคลิกที่เมนู "ไฟล์" - จากนั้น "บันทึก" - "บันทึกสถานะ":
หากเราต้องเริ่มเกมจากตำแหน่งที่บันทึก เราก็เริ่มเกมตามปกติ - จากนั้นไปที่ "ไฟล์" - "บันทึก" - "สถานะโหลด"

เกี่ยวกับส่วนภายในของเกม NES ครั้งนี้ผมจะพูดถึงเครื่องมือวิจัยที่ผมใช้

สิ่งที่นักวิจัยต้องการส่วนใหญ่มีอยู่แล้วในโปรแกรมจำลอง FCEUX ซึ่งเหมาะอย่างยิ่งสำหรับการดีบักเกม ในเอกสารคุณควรศึกษาส่วนนี้อย่างละเอียด ดีบักเครื่องมือแต่ละอย่างจากที่นั่นมีประโยชน์ต่อผู้วิจัย และความสามารถในการใช้งานร่วมกันจะช่วยเพิ่มขีดความสามารถของแฮ็กเกอร์

อย่างไรก็ตาม ฉันจะไม่บอกเอกสารซ้ำ แต่จะเน้นไปที่กรณีที่ความสามารถของตัวจำลองมีน้อยและจำเป็นต้องเพิ่มสิ่งใหม่ หรือเมื่อมีวิธีที่ผิดปกติในการค้นหาสิ่งที่คุณต้องการในไฟล์ ROM โดยตรง ข้ามการศึกษาที่ยาวนานของ รหัสเกม

การใช้สคริปต์ Lua

อันที่จริง วิธีแรก ตัวอย่างที่แสดงในรูปภาพเพื่อดึงดูดความสนใจ คือการสร้างเครื่องมือเสริมโดยใช้สคริปต์ Lua ที่สร้างขึ้นในโปรแกรมจำลองล่าม
ในตัวอย่างข้างต้น สำหรับการศึกษาเกม (และเป็นเพียงข้อความโกง ถ้าต้องการ) คุณลักษณะของสคริปต์ดังกล่าวจะใช้เป็น แสดงภาพบนหน้าจอเหนือภาพที่วาดโดยโปรแกรมจำลอง.

ดังนั้น ผู้วิจัยสามารถสังเกตเห็นบางสิ่งที่ไม่มีให้สำหรับผู้เล่นทั่วไป เช่น ในภาพหน้าจอด้านบน ของเพชรที่ซ่อนอยู่สามอัน ผู้เล่นสามารถข้ามไปยังสองคนแรกเท่านั้น และเขาไม่สามารถเอาเพชรที่สามไปได้ หรือแม้แต่เดาเกี่ยวกับการมีอยู่ของมัน ใน DuckTales 2 มีแม้กระทั่งอัญมณีที่มักจะวางไว้นอกระดับเกม

อีกตัวอย่างหนึ่งของสคริปต์ที่แสดงข้อมูลเพิ่มเติมบนหน้าจอคือเข็มทิศไปยังอัญมณีที่ใกล้ที่สุดใน The Jungle Book:

โดยธรรมชาติแล้ว การสร้างภาพข้อมูลจาก RAM หรือ ROM ของเกมไม่ใช่ความเป็นไปได้เพียงอย่างเดียวของสคริปต์

อีกตัวเลือกหนึ่งที่ใช้กันทั่วไปคือ บันทึกสิ่งที่เกิดขึ้นในรหัสเกมตัวอย่างเช่น เทมเพลตสคริปต์สำหรับดัมพ์ข้อมูลที่คลายซิปทันทีหลังจากคลายไฟล์ (สำหรับเกม SMD แต่หลักการก็ใช้กับ NES ด้วยเช่นกัน)

ก็ไม่มีใครห้าม การสร้างยูทิลิตี้เต็มรูปแบบบนสคริปต์ Luaเหมือนกับตัวแก้ไขของปุ่มกดที่รวมอยู่ในอีมูเลเตอร์แล้ว TasEditor.

นอกจากนี้ ในความคิดของฉัน ความคิดที่ถูกประเมินต่ำไปก็คือความคิด การเขียนโค้ดเกมใหม่บางส่วนบนสคริปต์เมื่อข้อมูลเกมได้รับการแก้ไขโดยสคริปต์ทันทีเพื่อปรับเปลี่ยนการเล่นเกม พิสูจน์แนวคิดของสคริปต์ดังกล่าวที่แก้ไขศัตรูใน Ghostbusters ใหม่ 2:

อย่างไรก็ตาม สำหรับการประมวลผลที่ซับซ้อนของเกมบางเกมหรือการสร้างวิธีการแฮ็กใหม่ ควรพิจารณาใช้วิธีต่อไปนี้

การปรับเปลี่ยนซอร์สโค้ดของโปรแกรมจำลอง

มีที่ว่างสำหรับจินตนาการในหัวข้อต่าง ๆ ที่ไม่เกี่ยวข้องกับการวิจัยเกม เช่น การเพิ่มการสนับสนุนความสำเร็จให้กับอีมูเลเตอร์ การเรนเดอร์ 3 มิติ หรือกราฟิกที่ได้รับการปรับปรุง แต่ฉันจะพยายามคงอยู่ในหัวข้อของบทความ

แนวทางหนึ่งในการขยายอีมูเลเตอร์เพื่อปรับปรุงความเป็นไปได้สำหรับวิศวกรรมย้อนกลับคือ ผลักดันคุณลักษณะภายในให้มากที่สุดเท่าที่จะเป็นไปได้ในห้องสมุด Lua. ในบทความที่สองของวัฏจักร ฉันได้แสดงให้เห็นแล้วว่า ด้วยความช่วยเหลือของฟังก์ชันใหม่เพียงไม่กี่อย่าง จึงเป็นไปได้ที่จะสร้างเครื่องมือสากล (เหมาะสำหรับการค้นคว้าเกมใดๆ) เพื่อการวิจัย

อีกตัวอย่างที่ง่ายและมีประโยชน์ซึ่งยังไม่มีในโปรแกรมจำลองเวอร์ชันล่าสุด - ความเป็นไปได้ของการปรับเปลี่ยนจากสคริปต์หน่วยความจำ PPU.

การปรับเปลี่ยนอีมูเลเตอร์ยังสามารถใช้เพื่อ ฝังตัวแก้ไขสำหรับเกมเฉพาะลงในนั้นด้วยความสามารถในการเรียกใช้ได้ทันทีและตรวจสอบการเปลี่ยนแปลงที่ทำ:

สคริปต์สำหรับการวิเคราะห์คงที่ของรหัสเกม

การปรับเปลี่ยนสองหมวดหมู่ก่อนหน้านี้เกี่ยวข้องกับการวิเคราะห์แบบไดนามิกของเกมระหว่างการดำเนินการ อย่างไรก็ตาม การวิจัยส่วนใหญ่เป็นการวิเคราะห์แบบคงที่ของไฟล์ ROM ของเกม (หรือทิ้งข้อมูลใดๆ จากไฟล์ดังกล่าว)

โปรแกรมหลักสำหรับการวิเคราะห์โค้ดดังกล่าวคือ IDA disassembler แบบโต้ตอบ รองรับแอสเซมเบลอร์ 6502 แต่ต้องการทั้งสองอย่าง เสียบเข้าไปเพื่อโหลดไฟล์ในรูปแบบ nes อย่างถูกต้องและ ชุดสคริปต์เพื่อดำเนินการตามกิจวัตรโดยอัตโนมัติเพื่อแปลงไฟล์ที่อัปโหลดเป็นโค้ดที่เรียบร้อย มีการรวบรวมชุดสคริปต์เฉพาะสำหรับการค้นคว้าเกม NES

สคริปต์สำหรับ IDA สามารถเขียนด้วยภาษาคำสั่งในตัว idc หรือ หลาม ในกรณีใด ๆ ทางที่ดีควรเปิดด้วยโปรแกรมแก้ไขข้อความและศึกษา ในกรณีส่วนใหญ่ วิธีนี้จะช่วยให้เข้าใจคำสั่งของ IDA ได้ดีขึ้น ซึ่งจะเป็นประโยชน์ในการทำงานกับมันและเรียนรู้วิธีเขียนสคริปต์ด้วยตนเอง สิ่งนี้มีประโยชน์มากเมื่อคุณต้องการดำเนินการที่คล้ายกันหลายร้อยรายการ เช่น การรวมไบต์เป็นพอยน์เตอร์ หรือการจัดสรรอาร์เรย์ตามกฎบางอย่าง

เครื่องมือสำหรับการวิเคราะห์ข้อมูลเกมแบบคงที่

IDA เป็นเครื่องมือที่ดีสำหรับการวิเคราะห์โค้ด ดีมากจนผู้เชี่ยวชาญด้านการวิจัยเกมบางคนถึงกับคิดว่ามันเพียงพอสำหรับการค้นคว้าและปรับเปลี่ยนเกม อย่างไรก็ตาม แม้เกมจะถูกถอดประกอบเพื่อรวบรวมและแสดงความคิดเห็น ก็ยังยากที่จะแก้ไขข้อมูลเกม - ระดับ กราฟิกการ์ด แอนิเมชั่นตัวละคร น่าเสียดายที่รูปแบบของข้อมูลเกมมักจะแตกต่างกันมากในแต่ละเกม ดังนั้นจึงค่อนข้างยากที่จะสร้างเครื่องมือสากลที่เหมาะสมกับเกมส่วนใหญ่

ตัวแก้ไขแผนที่ไทล์

รูปแบบการจัดเก็บกราฟิกแบงค์ (ระดับต่ำสุดของการจัดเก็บกราฟิก) เป็นมาตรฐานสำหรับเกม NES ทั้งหมด ดังนั้นจึงมีตัวแก้ไขแผนที่ย่อยจำนวนมาก อย่างไรก็ตาม ในหมู่พวกเขาฉันไม่พบไลบรารีเดียวที่จะอนุญาตให้แสดงไทล์เหล่านี้ในแอปพลิเคชันของฉัน

โปรแกรมดังกล่าวสามารถแก้ไขไทล์กราฟิกในเกมที่มี CHR-ROM - คลังกราฟิกทั้งหมด เกมอื่นใช้ CHR-RAM - หน่วยความจำวิดีโอของไทล์ในนั้นอ่านในบางส่วนจากธนาคารพร้อมข้อมูลและโค้ดและคัดลอกไปยังหน่วยความจำวิดีโอ (บางครั้งค่อนข้างยุ่งยาก แต่ควรพูดถึงพวกเขาในบทความเกี่ยวกับ การบีบอัดข้อมูล)

ในระดับที่สูงขึ้น เกมต่างกันมากจนแทบไม่มีโปรแกรมตัดต่อทั่วไป ส่วนใหญ่มีตัวแก้ไขที่ครอบคลุมเกมหลายเกมในเอ็นจิ้นเดียวกัน ฉันจะเขียนเกี่ยวกับความพยายามของฉันในการสร้างเครื่องมือแก้ไขระดับสากลในตอนท้ายของบทความ แต่สำหรับตอนนี้ ฉันจะให้แนวคิดทั่วไปเพิ่มเติมเกี่ยวกับวิธีการค้นหาข้อมูลในเกม และยูทิลิตี้ที่ใช้แนวคิดเหล่านี้

เป็นภาษาการใช้งาน ฉันใช้ หลาม เพราะคุณสามารถตรวจสอบการเดาได้อย่างรวดเร็วและง่ายดาย บางครั้งก็ทำได้โดยตรงในโหมดโต้ตอบ

ROM ที่เสียหาย

อันที่จริง มันเป็นเพียงแค่แนวคิดนี้ - หากคุณผ่านตัวเลือกที่เป็นไปได้ทั้งหมดสำหรับการเปลี่ยนหนึ่งไบต์ใน ROM และดูว่ามันจะส่งผลต่อหน้าจออย่างไร สิ่งนี้สามารถช่วยชี้แจงโครงสร้างภายในของเกมได้ หลังจากนั้นก็เป็นไปได้ที่จะสร้างตัวแก้ไขเกมเวอร์ชั่นง่าย ๆ - คุณต้องเตรียมชุดบล็อกรูปภาพระดับบนสุดซึ่งหน้าจอถูกสร้างขึ้นโดยไม่เข้าใจอย่างถ่องแท้ว่ารูปภาพเหล่านี้สร้างขึ้นจากข้อมูล ROM อย่างไร และแสดงอาร์เรย์ของรูปภาพเหล่านี้ที่พบโดยวิธีนี้

บล็อกการค้นหา

คุณสามารถเข้าจากอีกด้านหนึ่งได้

พื้นหลังที่แสดงบนหน้าจอถูกกำหนดโดยอาร์เรย์ของดัชนีไทล์หน่วยความจำวิดีโอตามที่อยู่ PPU คงที่ - สำหรับ NES มีหน้าหน้าจอ 4 หน้า ซึ่งสามารถแสดงได้หลายวิธี ขึ้นอยู่กับการตั้งค่า PPU ไม่สำคัญหรอกว่าหน้าจอจะเป็นอย่างไร เพียงแค่จับภาพหน้าที่โหลดไว้สำหรับการวิเคราะห์ก็เพียงพอแล้ว

หน้าแรกของหน้าจอ (Name Table) จะอยู่ที่ PPU $2000-$23BF เนื้อหาในโปรแกรมจำลอง FCEUXสามารถมองเห็นได้ในหน้าต่าง ดีบัก → ชื่อโปรแกรมดูตาราง :

และเป็นไบต์ในหน้าต่างด้วย ดีบัก → ตัวแก้ไขฐานสิบหก, ดู → หน่วยความจำ PPU (ไปที่ $2000).

คุณสามารถถ่ายโอนหน่วยความจำวิดีโอทั้งหมดได้ที่นี่ ซึ่งจะเป็นประโยชน์สำหรับเราในการวิเคราะห์ ( ไฟล์ → ถ่ายโอนข้อมูลไปที่ไฟล์ → หน่วยความจำ PPU ).

เป็นเพียงอาร์เรย์ของ 960 ดัชนีของไทล์หน่วยความจำวิดีโอ 8x8 พิกเซลขนาดเล็ก ในเวลาเดียวกัน หลังจากที่ย้อนกลับจำนวนมากของเกม เป็นที่ทราบกันดีอยู่แล้วว่าหน้าจอเกมมักจะถูกอธิบายด้วยบล็อกที่มีขนาดใหญ่กว่า เช่น 16x16 หรือ 32x32 พิกเซล ดังนั้น หากเราใช้ขนาดบล็อกที่แน่นอน (สำหรับผู้เริ่มต้น ให้ลองใช้ขนาดมาตรฐานมากที่สุด - ไทล์ 2x2 ที่ไฮไลต์ในภาพหน้าจอด้วยกรอบสีแดง) เราสามารถแบ่งข้อมูลจากหน้าหน้าจอออกเป็นส่วนๆ ซึ่งแต่ละส่วนจะ มีคำอธิบายของหนึ่งบล็อก

ส่งผลให้รายการบล็อกทั้งหมดที่ปรากฏบนหน้าจอ ยิ่งกว่านั้น เรามีคำอธิบายบล็อกที่ "บริสุทธิ์" โดยไม่มีข้อมูลเกี่ยวกับสไปรต์ของตัวละคร (สไปรต์ถูกวาดในลักษณะที่ต่างออกไป) และไม่ขึ้นกับแอนิเมชั่น (แอนิเมชั่นพื้นหลังมักจะทำโดยใช้การเปลี่ยนแปลงจานสีหรือหน่วยความจำวิดีโอเอง หมายเลขไทล์ในตารางชื่อ ไม่เปลี่ยนแปลง) อย่างไรก็ตาม เราไม่ทราบหมายเลขบล็อก

เรามีคำอธิบายของบล็อคบนหน้าจอ แต่เราไม่ทราบลำดับการจัดเก็บใน ROM อย่างไรก็ตาม เราสามารถเดาด้วยความน่าจะเป็นที่คำอธิบายของบล็อกตั้งอยู่ อัลกอริทึมสำหรับสิ่งนี้คือ:

1. เราผ่าน ROM ทั้งหมดและทำเครื่องหมายที่อยู่ทั้งหมดที่พบบล็อกในขณะที่บันทึกหมายเลข (จำนวนจริงอาจแตกต่างกันไป สิ่งสำคัญคือเราต้องสังเกตเฉพาะความแตกต่างระหว่างบล็อกจากกันและกัน)

2. ค้นหาพื้นที่ใน ROM ที่มีจำนวนบล็อกที่แตกต่างกันมากที่สุด เป็นไปได้มากว่านี่คือคำอธิบายของบล็อก

ดังนั้นเราจึงสามารถค้นหาบล็อก 2x2 ในเกมที่จัดเก็บตามลำดับ

ไม่เลว แต่มีวิธีปรับปรุงผลลัพธ์ของอัลกอริทึมอย่างมาก ประเด็นคือ มีขนาดบล็อกพื้นฐานจำนวนจำกัดและวิธีการจัดเก็บใน ROM และเราสามารถทำซ้ำได้ทั้งหมด

ขนาดบล็อกหลักคือ 2x2, 4x2, 2x4 และ 4x4 แต่สามารถเพิ่มขนาดอื่นๆ ได้อย่างง่ายดายหากจำเป็น

ด้วยวิธีการจัดเก็บใน ROM ที่ยากขึ้นเล็กน้อย บล็อกสามารถจัดเก็บได้ทั้งแบบเชิงเส้นและแบบเป็นก้อน (Structure of Arrays ย่อว่า SoA) เช่น อันดับแรก อาร์เรย์ของเฉพาะส่วนแรกของบล็อกจะถูกเก็บไว้ใน ROM ตามด้วยอาร์เรย์ที่มีส่วนต่างๆ ต่อไปนี้ ส่วนใหญ่แล้ว อาร์เรย์ดังกล่าวจะถูกเก็บไว้ทีละชุด ในขณะที่ช่องว่างระหว่างจุดเริ่มต้นของอาร์เรย์จะเท่ากับจำนวนบล็อก ในการค้นหาอาร์เรย์ SoA ดังกล่าวใน ROM เราจำเป็นต้องค้นหาความยาวของอาร์เรย์ ซึ่งสามารถทำได้โดยการนับตัวเลือกทั้งหมด (มักใช้ 256 บล็อกในเกม ดังนั้นจึงควรเริ่มตรวจสอบจากตัวเลขนี้และค่อยๆ ลดจำนวนลง)

ทั้งหมดนี้ดูค่อนข้างสับสนเพราะเราอาศัยความน่าจะเป็นที่เกมใช้บล็อกบางประเภทเท่านั้น แต่ในทางปฏิบัติยูทิลิตี้จะค้นหาบล็อกใน 80-90% ของเกมที่ทดสอบ!

นอกจากนี้ยังช่วยให้คุณสามารถแยกแยะเกมที่มีโครงสร้างที่ผิดปกติ (ไม่บล็อก) เพื่อศึกษาอย่างใกล้ชิดยิ่งขึ้น

เปรียบเทียบไฟล์ CDL

โปรแกรมจำลอง FCEUX สามารถทำเครื่องหมายแต่ละคำสั่งระหว่างการจำลองซึ่งไบต์ถูกตีความเป็นรหัสและไบต์ใดถูกตีความเป็นข้อมูล (เมนู ดีบัก → รหัส/ตัวบันทึกข้อมูล... ). คุณลักษณะนี้มีประโยชน์ในตัวของมันเอง และผสานรวมกับคุณลักษณะการดีบักอื่นๆ ของโปรแกรมจำลองอย่างแน่นหนา - ลองเปิดใช้งานโหมดนี้และดูว่าหน้าต่างการดีบักอื่นๆ เปลี่ยนไปอย่างไร อย่างไรก็ตาม ฉันต้องการจะพูดถึงการใช้งานเฉพาะอย่างหนึ่งของมัน หากคุณบันทึกไฟล์ cdl ดังกล่าวสองไฟล์ ไฟล์หนึ่งก่อนดำเนินการศึกษา และอีกไฟล์หนึ่งทันทีหลังจากเสร็จสิ้น ความแตกต่างระหว่างไฟล์ทั้งสองจะแสดงเฉพาะข้อมูล (หรือโค้ด) ที่ใช้ระหว่างการดำเนินการ ด้วยการตัดแต่งกิ่งที่เหมาะสม คุณสามารถค้นหาข้อมูลที่คุณต้องการโดยเพียงแค่เลือกจุดสองจุดที่ถูกต้องในช่วงเวลาระหว่างเหตุการณ์ที่วัดได้

การรวมโครงสร้างเกมขนาดใหญ่จากแผ่นกระเบื้องพื้นฐานและการประกอบระดับทั้งหมดเป็นผลให้เหมือนกับการประกอบตัวต่อหลายพันชิ้น และมันให้ความสุขเหมือนกันเมื่อในที่สุดแต่ละชิ้นก็เข้ามาแทนที่

ในบทความถัดไปจะไม่มีข้อมูลทางเทคนิคมากมาย และฉันจะยกตัวอย่างของการรวบรวมระดับเกมด้วยโครงสร้างที่ไม่ได้มาตรฐานหรือใช้การดัดแปลงที่ผิดปกติของสถาปัตยกรรมบล็อกมาตรฐาน นอกจากนี้ ในความคิดเห็น คุณสามารถตั้งชื่อเกม NES ที่มีรูปแบบระดับที่น่าสนใจสำหรับคุณ บางทีฉันอาจจะสำรวจมันด้วย

แท็ก: เพิ่มแท็ก

สาเหตุที่พบบ่อยที่สุดของปัญหาการเปิดเผยไฟล์ NES คือการไม่มีแอปพลิเคชันที่เหมาะสมที่ติดตั้งในคอมพิวเตอร์ของคุณ ในกรณีนี้ก็เพียงพอที่จะค้นหาดาวน์โหลดและติดตั้งแอปพลิเคชั่นที่รองรับไฟล์ในรูปแบบ NES - โปรแกรมดังกล่าวมีให้ด้านล่าง

ระบบค้นหา

ใส่นามสกุลไฟล์

ช่วย

เบาะแส

โปรดทราบว่าบางครั้งข้อมูลที่เข้ารหัสจากไฟล์ที่คอมพิวเตอร์ของเราไม่ได้อ่านนั้นสามารถดูได้ใน Notepad ด้วยวิธีนี้ เราจะอ่านข้อความหรือตัวเลขบางส่วน - ควรตรวจสอบว่าวิธีนี้ใช้ได้ผลในกรณีของไฟล์ NES หรือไม่

จะทำอย่างไรถ้าติดตั้งแอพพลิเคชั่นจากรายการแล้ว?

บ่อยครั้ง แอปพลิเคชันที่ติดตั้งไว้ควรลิงก์ไปยังไฟล์ NES โดยอัตโนมัติ หากไม่เกิดขึ้น ไฟล์ NES สามารถเชื่อมโยงด้วยตนเองกับแอปพลิเคชันที่ติดตั้งใหม่ได้ด้วยตนเอง เพียงคลิกขวาที่ไฟล์ NES จากนั้นเลือก "เลือกโปรแกรมเริ่มต้น" จากรายการที่มี จากนั้นคุณต้องเลือกตัวเลือก "เรียกดู" และค้นหาแอปพลิเคชันที่คุณชื่นชอบ การเปลี่ยนแปลงที่ทำขึ้นจะต้องได้รับการอนุมัติด้วยตัวเลือก "ตกลง"

โปรแกรมที่เปิดไฟล์ NES

Windows
MacOS
Android

เหตุใดฉันจึงเปิดไฟล์ NES ไม่ได้

ปัญหาเกี่ยวกับไฟล์ NES อาจมีสาเหตุอื่นๆ ด้วย บางครั้งการติดตั้งซอฟต์แวร์ที่รองรับไฟล์ NES บนคอมพิวเตอร์ของคุณก็ไม่สามารถแก้ปัญหาได้ สาเหตุของการไม่สามารถเปิดได้เช่นเดียวกับการทำงานกับไฟล์ NES อาจเป็นดังนี้:

ลิงก์ไฟล์ NES ที่ไม่เหมาะสมในรายการรีจิสตรี
- ความเสียหายของไฟล์ NES ที่เราเปิด
- ไฟล์ NES ติดไวรัส (ไวรัส)
- ทรัพยากรคอมพิวเตอร์เล็กเกินไป
- ไดรเวอร์ที่ล้าสมัย
- การลบส่วนขยาย NES ออกจากรีจิสทรีของระบบ Windows
- การติดตั้งโปรแกรมที่รองรับส่วนขยาย NES ไม่สมบูรณ์

การแก้ไขปัญหาเหล่านี้ควรนำไปสู่การเปิดและทำงานกับไฟล์ NES ได้ฟรี ในกรณีที่คอมพิวเตอร์ยังคงมีปัญหาไฟล์อยู่ คุณต้องขอความช่วยเหลือจากผู้เชี่ยวชาญที่จะระบุสาเหตุที่แท้จริง

คอมพิวเตอร์ของฉันไม่แสดงนามสกุลไฟล์ ฉันควรทำอย่างไร?

ในการติดตั้งระบบ Windows มาตรฐาน ผู้ใช้คอมพิวเตอร์จะไม่เห็นนามสกุลไฟล์ NES สามารถเปลี่ยนแปลงได้สำเร็จในการตั้งค่า เพียงไปที่ "แผงควบคุม" และเลือก "ดูและปรับแต่ง" จากนั้นคุณต้องป้อน "ตัวเลือกโฟลเดอร์" และเปิด "มุมมอง" ในแท็บ "มุมมอง" มีตัวเลือก "ซ่อนนามสกุลของประเภทไฟล์ที่รู้จัก" - คุณต้องเลือกตัวเลือกนี้และยืนยันการดำเนินการโดยกดปุ่ม "ตกลง" ณ จุดนี้ นามสกุลไฟล์ทั้งหมด รวมถึง NES ควรเรียงตามชื่อไฟล์

ไฟล์ NES เสียหาย

หากหลังจากติดตั้งโปรแกรมจากรายการ คุณยังเปิดไฟล์ที่มีนามสกุล NES ไม่ได้ สาเหตุอาจเป็นเพราะไฟล์เสียหาย วิธีแก้ไขคือค้นหาสำเนาใหม่ของไฟล์ NES ที่คุณกำลังจะเปิด

นามสกุลไฟล์ NES ไม่เชื่อมโยงกับแอปพลิเคชันที่เกี่ยวข้อง

ในกรณีนี้ วิธีที่ง่ายที่สุดคือการใช้เครื่องมือที่มีอยู่ในระบบปฏิบัติการเพื่อเชื่อมโยงไฟล์ NES กับแอปพลิเคชันเพื่อรองรับ ดับเบิลคลิกที่ไฟล์ที่คุณไม่สามารถเปิดได้ - ระบบปฏิบัติการจะแสดงรายการโปรแกรมที่น่าจะทำงานกับไฟล์ NES ของคุณ เลือกหนึ่งในนั้นหรือระบุตำแหน่งที่คุณติดตั้งข้อเสนอจากรายการของเราบนดิสก์ Windows ควรเปิดไฟล์ NES ด้วยโปรแกรมที่ติดตั้งไว้ล่วงหน้า

รายการไฟล์ NES ใน "Windows System Registry" ถูกลบหรือเสียหาย
ไฟล์ NES ติดไวรัส

อาจเกิดขึ้นได้ว่ามีไฟล์ไวรัสคอมพิวเตอร์อยู่ในไฟล์ NES ในกรณีนี้ จะไม่สามารถเปิดไฟล์ดังกล่าวได้อย่างแน่นอน ดาวน์โหลดโปรแกรมป้องกันไวรัสที่ดีและสแกนไฟล์ NES หากโปรแกรมป้องกันไวรัสตรวจพบข้อมูลที่เป็นอันตราย นี่อาจบ่งชี้ว่ามีการระบุไฟล์ NES

โปรแกรมจำลองที่ดีที่สุด NES / เดนดี้และ ระบบดิสก์ Famicomโอเพ่นซอร์ส. รองรับการบันทึก จอยสติ๊ก การจำลองตัวควบคุมต่างๆ ไฟล์เก็บถาวร (รวมถึง 7z) การบันทึกภาพยนตร์ และอื่นๆ ... และยังมีความเข้ากันได้ที่ยอดเยี่ยมอีกด้วย ย้ายไปยังระบบต่างๆ นับไม่ถ้วน (ชื่อเก่า FCE Ultra) มีเครื่องมือในตัวสำหรับสร้างซูเปอร์เพลย์โดยใช้เครื่องมือช่วย

ขนาด: 8.5 MiB | ดาวน์โหลด: 292188 | ดาวน์โหลด

อีมูเลเตอร์ NES / แฟมิคอม / เดนดี้และ FDSโอเพ่นซอร์ส. การตั้งค่ามากมาย ตัวกรองต่างๆ รองรับ Kailleraการเปิดตัว ROM โดยตรงจากไฟล์เก็บถาวร ความสามารถในการบันทึกอัตโนมัติ และความเข้ากันได้ที่ยอดเยี่ยม ไม่ต้องสงสัยเลยว่าเป็นหนึ่งในอีมูเลเตอร์ NES ที่ดีที่สุดและซับซ้อนที่สุด

วันที่: 06/08/2008 | ขนาด: 1.2 MiB | ดาวน์โหลด: 134522 | ดาวน์โหลด

โปรแกรมจำลองที่ยอดเยี่ยม NES / แฟมิคอมและ ระบบดิสก์ Famicom. รองรับผู้ทำแผนที่ บันทึก ตัวกรอง โหมดจำลองจำนวนมาก เดนดี้และความเป็นไปได้อื่นๆ

โปรแกรมจำลองที่ดี NES / เดนดี้โดยผู้เขียน Project64 ซึ่งเขียนโดยใช้ DirectX API รองรับผู้ทำแผนที่จำนวนมากและเน้นที่การเปิดตัว USA-roms เป็นหลัก Jnes ได้บันทึกการสนับสนุนยังเล่นออนไลน์ผ่าน Kaillera.

วันที่: 12/25/2559 | ขนาด: 502 KiB | ดาวน์โหลด: 62747 | ดาวน์โหลด

เมดนาเฟนเป็นโปรแกรมจำลองหลายแพลตฟอร์มที่ยอดเยี่ยมซึ่งจำลองแพลตฟอร์มต่อไปนี้:

  • Atari Lynx
  • เกมบอย (สี)
  • เกมบอยแอดวานซ์
  • นีโอ จีโอ พ็อกเก็ต (สี)
  • ระบบความบันเทิงของ Nintendo/Famicom
  • PC Engine (CD)/TurboGrafx 16 (CD)/SuperGrafx
  • PC-FX
  • Sega Game Gear
  • Sega Genesis/MegaDrive
  • ระบบ Sega Master
  • Sony PlayStation
  • ระบบความบันเทิง Super Nintendo/Super Famicom
  • เด็กเสมือน
  • Wonderswan
คุณภาพการจำลองนั้นดีมาก
มีการรองรับตัวกรองกราฟิก

ความสนใจ:โปรแกรมจำลองเริ่มต้น เท่านั้นจากบรรทัดคำสั่ง แต่คุณสามารถใช้กระดาษห่อหุ้มได้: Mednaffe หรือ MedGui Reborn
เพื่อให้ทำงานกับอีมูเลเตอร์ได้อย่างเต็มที่ คุณควรอ่าน และอย่าลืมเกี่ยวกับปุ่ม F1

วันที่: 01-09-2015 | ขนาด: 17.5 MiB | ดาวน์โหลด: 57456 | ดาวน์โหลด

การเปิดตัวอย่างไม่เป็นทางการของอีมูเลเตอร์อันสูงส่งของคอนโซลแปดบิตที่มีชื่อเสียงที่สุดจาก Nintendo แก้ไขข้อผิดพลาดที่ทำให้จอยสติกทำงานช้าลงในคอมพิวเตอร์บางเครื่องในการเปิดตัวอย่างเป็นทางการและข้อบกพร่องที่น่ารำคาญอื่นๆ

การประกอบ Nestopia 1.37 ที่ถูกต้อง (เสถียรสำหรับการบันทึกภาพยนตร์) ตอนนี้รองรับขนาดวิดีโอไม่จำกัดเมื่อทิ้ง AVI เช่นเดียวกับพื้นที่สี RGB32

วันที่: 2.09.2012 | ขนาด: 866 KiB | ดาวน์โหลด: 5794 | ดาวน์โหลด

ค่อนข้างก้าวหน้า อีมูเลเตอร์โอเพ่นซอร์ส NES / Dendy สำหรับ Windows คุณลักษณะต่างๆ ได้แก่ โหมด dendy (ไฮบริด) ดีบักเกอร์ การบันทึกวิดีโอ การตั้งค่าจานสี จีนี่เกม ตัวแก้ไขชื่อ ROM และอื่นๆ

Date: 2019-01-02 | ขนาด: 7.1 MiB | ดาวน์โหลด: 10958 | ดาวน์โหลด

อีมูเลเตอร์ NESสำหรับวินโดวส์ นี่คือคอนเซปต์อีมูเลเตอร์ ซึ่งเป็นคุณสมบัติหลักคือการแก้ไขการเล่นเกมแบบย้อนกลับในแบบเรียลไทม์ (การกรอกลับตามเวลาจริง)

วันที่: 2012-03-12 | ขนาด: 490 KiB | ดาวน์โหลด: 4923 | ดาวน์โหลด

โปรแกรมจำลองหลายระบบคอนโซล Sega Mega Drive, Sega Master System, Sega Game Gear, Nintendo Entertainment System และเครื่องอาร์เคด Sega System E มีอินเทอร์เฟซ 3D ดั้งเดิมในรูปแบบของห้องเกมที่มีเครื่องสล็อต, ทีวี นอกจากนี้ยังมีฐานข้อมูลเกมและหน้าปกในตัว

วันที่: 05/16/2011 | ขนาด: 18.3 MiB | ดาวน์โหลด: 23823 | ดาวน์โหลด

หนึ่งในอีมูเลเตอร์ที่เก่าแก่ที่สุดและต่อเนื่อง NES / เดนดี้. มันมีอินเทอร์เฟซแบบกราฟิก (ในรูปแบบ DOS เนื่องจากโปรแกรมจำลองใช้สำหรับ DOS มาเป็นเวลานาน) ความสามารถในการบันทึกและบันทึกเกม สร้างภาพหน้าจอ รองรับรหัสเกม genie บันทึกจากรังและไฟล์เก็บถาวร สำหรับคนรักและคิดถึง