• 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 बनाकर चर्चा करने की सलाह दी जाती है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.