- Nintendo 64 के लिए बने Super Mario 64 Decompilation Project पर आधारित, PlayStation(PSX)-विशिष्ट पोर्ट संस्करण
- DualShock वैब्रेशन सपोर्ट, फिक्स्ड-पॉइंट गणित रूपांतरण, रेंडरिंग ऑप्टिमाइज़ेशन आदि में PS1 हार्डवेयर के हिसाब से बड़े बदलाव शामिल हैं
- ग्राफ़िक्स प्री-प्रोसेसर, टेक्सचर कम्प्रेशन, एनीमेशन मेमोरी ऑप्टिमाइज़ेशन जैसी परफॉर्मेंस सुधार फीचर जोड़ी गई हैं
- कुछ कैमरा कंट्रोल अधूरा, कोलिशन और क्रैश समस्याएँ, म्यूज़िक बिल्ड न हो पाना जैसे कई ज्ञात बग मौजूद हैं
- यह क्लासिक गेम का एक क्रॉस-प्लेटफॉर्म पोर्टिंग प्रयोग है, जो legacy console development और रिवर्स इंजीनियरिंग रिसर्च के लिए एक महत्वपूर्ण केस है
परियोजना अवलोकन
- यह कोड पूरी Super Mario 64 (J/U/E/SH) डीकंपाइलेशन वर्ज़न का फोर्क है, जो केवल PSX और PC (डिबगिंग के लिए) को टार्गेट करता है
- Nintendo 64 बिल्ड अब सपोर्ट नहीं किया जाता
- वर्तमान में केवल US ROM ही बिल्ड किया जा सकता है
- गेम बिल्ड में मूल assets शामिल नहीं होते, इसलिए official ROM से assets निकालना ज़रूरी है
प्रमुख फीचर
- DualShock™ compatible graphics जोड़कर मूल “Rumble Pak Compatible” डिस्प्ले को मॉक किया गया है
- DualShock बड़े मोटर के लिए एनालॉग vibration signal और छोटे मोटर के लिए डिजिटल सिग्नल दोनों का समर्थन
- PSX के लिए low-precision software float implementation से floating-point ऑपरेशन स्लो-डाउन को न्यूनतम किया गया है
- कोड को फिक्स्ड-पॉइंट गणित से बदलकर PSX स्टैंडर्ड 16-bit integer vectors/matrices का उपयोग किया गया है
- render graph worker को सरल करके फिर से लिखा गया है
- बड़े पॉलीगन मुद्दों को कम करने के लिए पॉलीगन स्प्लिटिंग (अधिकतम 2x) जोड़ा गया है
- RSP डिस्प्ले लिस्ट को JIT तरीके से कस्टम फॉर्मेट में बदलकर throughput बढ़ाया गया है
- डिस्प्ले लिस्ट प्री-प्रोसेसर से redundant instructions हटाकर mesh ऑप्टिमाइज़ेशन किया गया है
- Mario एनीमेशन कम्प्रेशन (580,632 → 190,324 bytes) और इसे सीधे VRAM में प्लेस करना
- कस्टम प्रोफाइलर और 4bpp टेक्सचर encoder जोड़ा गया है
- PSX की alpha/transparency सीमा को देखते हुए hexagonal shadows का उपयोग किया गया है
- (आगामी) राइट एनेलॉग स्टिक से कैमरा घुमाना और Goddard सबसिस्टम का रीराइट
ज्ञात समस्याएँ
- तैरते पेड़, कुछ एनीमेशन काम नहीं करते या क्रैश
- म्यूजिक बिल्ड नहीं बनता, साउंड इफेक्ट्स मिसिंग/विकृत
- कैमरा कंट्रोल अधूरा, कुछ लेवल में एंट्री पर क्रैश
- एंडिंग सीक्वेंस लोड फेल, Lakitu न दिखना, Pol non-functional
- टेक्सचर अलग-अलग लोड होने के कारण लंबा लोड टाइम, PSX सीमा के कारण टेक्सचर distortion
- ग्राफ़िक्स प्री-प्रोसेसर सुधार की जरूरत, कुछ टेक्सचर render errors, टाइटल स्क्रीन अधूरी, pause menu काम नहीं करता
निर्माण विधि
Linux
mipsel-none-elf-gcc टूलचेन इंस्टॉल करके रिपॉजिटरी क्लोन करें
baserom.us.z64 फाइल को रूट डायरेक्टरी में रखें
- (वैकल्पिक)
.local फोल्डर में साउंडट्रैक .wav फाइलें (0~37) डालें
make रन करने पर ISO image बनेगा (build/us_psx/sm64.us.iso)
- बेन्चमार्क वर्ज़न (
make BENCH=1) में ISO नहीं बनता, केवल ELF/EXE बनता है और इसे चलाने के लिए 8MB RAM PSX चाहिए
Windows (अप्रमाणित)
- MSYS2 इंस्टॉल करके
mingw-w64 पैकेज सेटअप करें
mipsel-none-elf-gcc इंस्टॉल करें और sm64-psx रिपॉजिटरी क्लोन करें
baserom.us.z64 फाइल रखने के बाद make रन करें
- बिल्ड आउटपुट वही path पर बनेगा जो Linux में होता है
समस्या समाधान
- यदि gcc उपलब्ध नहीं दिखे तो जांचें कि गलत MSYS2 env चल तो नहीं रहा है
- यदि baserom.us.z64 missing हो तो फाइल लोकेशन चेक करें
- यदि Makefile नहीं मिलता तो वर्तमान directory सही है या नहीं देखें
- पैकेज errors होने पर
pacman -Syu और pacman -Su से अपडेट करें
- mipsel gcc काम कर रहा है या नहीं यह
mipsel-none-elf-gcc -v कमांड से verify करें
- प्लेटफ़ॉर्म बदलते समय टूल्स को फिर से compile करने के लिए
make -C tools clean चलाएँ
परियोजना संरचना
actors: ऑब्जेक्ट बिहेवियर, geo layout, डिस्प्ले लिस्ट
assets: एनीमेशन और डेमो डेटा
src: गेम का कोर C स्रोत (ऑडियो, engine, गेम, मेनू, पोर्ट आदि)
textures, text, levels: ग्राफ़िक्स और लेवल डेटा
tools: बिल्ड टूल्स
lib: N64 SDK कोड शामिल
योगदान
- Pull Request स्वागतयोग्य हैं
- बड़े बदलाव से पहले Issue बनाकर चर्चा करने की सलाह दी जाती है
अभी कोई टिप्पणी नहीं है.