ProjectPSX เป็นโปรแกรมจำลองโค้ด C# ของ Sony Playstation ดั้งเดิม (Playstation 1/PS1/PSX)
นี่เป็นโปรเจ็กต์ส่วนตัวที่มีขอบเขตในการเรียนรู้เกี่ยวกับฮาร์ดแวร์และการพัฒนาโปรแกรมจำลอง
ProjectPSX ไม่ได้ใช้การพึ่งพาภายนอกใดๆ และใช้โค้ด C# ที่ค่อนข้างเรียบง่าย
ในขณะนี้มีการดำเนินการดังต่อไปนี้:
สิ่งที่ไม่ได้นำไปใช้ (แต่ควรเป็น...):
หมายเหตุ: จำเป็นต้องมี PlayStation Bios ที่ถูกต้องเพื่อรันโปรแกรมจำลอง SCPH1001.BIN เป็นประวัติเริ่มต้นของการพัฒนา แต่บางตัวเช่น SCPH5501 หรือ SCPH7001 ได้รับการรายงานว่าทำงานได้
ไม่มีรายการความเข้ากันได้ เกมหลายเกมบูตและเข้าเกมได้ แม้ว่าบางเกมอาจมีปัญหาแบบสุ่มก็ตาม เกมบางเกมที่ฉันทดสอบว่าตื่นแล้ว ได้แก่ Ridge Racer, Castlevania Symphony of the Night, Final Fantasy 7, Crash Bandicoot 1, 2 และ 3, Spyro the Dragon, Tekken 1, 2 และ 3, Toshinden, Time Crisis, Tobal 1 และ 2, Vagrant Story, Street Fighter Zero 3, Rockman/Megaman 8/X4, Parasite Eve, Metal Gear Solid, Crash Team Racing... เกมอื่นๆ บางอย่างเช่น Final Fantasy IX, Gran Turismo, Resident Evil 3 หรือบูต Marvel vs Capcom แต่มีปัญหาแบบสุ่มที่ต้องแก้ไข
หมายเหตุ: ไฟล์การ์ดหน่วยความจำจะถูกฮาร์ดโค้ดเป็น "memcard.mcr" ในไดเร็กทอรีราก หากไม่มีใคร ระบบจะสร้างรายการใหม่เมื่อบันทึก
ตัวแกนหลักของ ProjectPSX นั้นเป็นไลบรารีที่ไม่มีส่วนหัวและไม่มีการขึ้นต่อกัน โซลูชันนี้มาพร้อมกับโปรเจ็กต์เพิ่มเติมอีก 2 โปรเจ็กต์ ProjectPSX.Winforms และ ProjectPSX.OpenTK โครงการ Winforms ใช้ NAudio เพื่อส่งสัญญาณเสียง
เมื่อใช้โปรเจ็กต์ Winform กล่องโต้ตอบไฟล์จะแสดงพร้อมท์เมื่อดำเนินการ เลือกไฟล์ Bin (ใช้ track1) หรือไฟล์คิวเพื่อสร้างแทร็กซีดีเพื่อป้อน CDROM
เมื่อใช้โปรเจ็กต์ OpenTK เพียงลากและวางไฟล์ bin/cue ไปที่หน้าต่าง
ไฟล์ bios และส่วนขยายได้รับการฮาร์ดโค้ดในคลาส BUS
เมื่อเปิดเครื่อง อินพุตจะถูกแมปเป็น:
ใช่คุณทำได้ แต่คุณไม่ควร มีโปรแกรมจำลองที่มีความสามารถอื่น ๆ อีกมากมายที่มีอยู่ นี่เป็นโปรเจ็กต์ส่วนตัวที่กำลังดำเนินการ โดยมีวัตถุประสงค์เพื่อเรียนรู้เกี่ยวกับโปรแกรมจำลองและการใช้งานฮาร์ดแวร์ มันสามารถและจะพังระหว่างการจำลอง เนื่องจากมีฟีเจอร์ฮาร์ดแวร์ที่ยังไม่ได้ใช้งานมากมาย
มันคือโปรแกรมดู VRAM ประกอบด้วยพื้นผิว ตารางล็อคสี และบัฟเฟอร์การแสดงผลทั้งหมดที่ใช้โดยซอฟต์แวร์ PlayStation มันถูกใช้เพื่อวัตถุประสงค์ในการแก้ไขจุดบกพร่อง คุณสามารถสลับได้โดยกด TAB บนแป้นพิมพ์
อาจเนื่องมาจากไม่ได้ใช้งานฮาร์ดแวร์หรือใช้งานไม่ถูกต้อง โดยส่วนใหญ่เป็น cdrom/dma/mdec timmings
ยกเลิกหมายเหตุฟังก์ชัน bios.verbose() หรือ TTY() บนลูปหลักของ CPU คุณยังสามารถ dissasemble() คำสั่ง MIPS CPU และ printRegs() บน opcode ปัจจุบันได้
ฉันสนใจที่จะเลียนแบบฮาร์ดแวร์มาระยะหนึ่งแล้ว ฉันเริ่มสร้าง Java Chip8 และ CPU C# Intel 8080 (ใช้กับ Space Invaders อาร์เคดสุดคลาสสิก) หลังจากนั้นฉันก็ทำ Nintendo Gameboy ฉันอยากจะเล่นเกม 3D ต่อไป ดังนั้นฉันจึงปิดท้ายด้วย PSX เนื่องจากมีคลังเกมดีๆ มากมาย...
ฉันใช้เอกสาร Martin Korth PSX-SPX เป็นหลักเกี่ยวกับฮาร์ดแวร์ Playstation ที่ https://problemkaputt.de/psx-spx.htm นอกจากนี้ผู้คนในช่อง #playstation บน emudev discord ที่ https://discord.gg/dkmJAes ก็เช่นกัน มีประโยชน์มาก
Winforms เป็นวิธีที่ง่ายที่สุดในการสร้างเอาต์พุตสำหรับฉัน เนื่องจากมันถูกสร้างต้นแบบอย่างรวดเร็ว ในขณะนี้ UI ถูกแยกออกจากแกนหลัก ดังนั้นจึงสามารถเพิ่มระบบหน้าต่างใดๆ ก็ได้ตราบใดที่มีการใช้อินเทอร์เฟซ IHostWindow นอกจากนี้ยังมีโครงการ OpenTK เกี่ยวกับโซลูชันที่ทำงานบน Linux
ในช่วงเริ่มต้นของโปรเจ็กต์นี้ ฉันเป็นคนที่มีงานที่น่าเบื่อซึ่งไม่เกี่ยวกับการเขียนโค้ด ฉันไม่อยากทำไปตลอดชีวิตเลยเริ่มเรียนเพื่อพยายามเปลี่ยนอาชีพ ในที่สุดฉันก็ได้เรียนรู้ (นิดหน่อย) และเริ่มเขียนโค้ดอะไรก็ได้ที่ทำให้ฉันมีความสุข ในที่สุดก็ได้งานเป็น Android Dev...