超级马里奥吧 关注:48,445贴子:660,880

【原创技术教程】NSMBW物件制作全解

只看楼主收藏回复

1L,既然度娘还支持剧透就先上图,另外原则仍然是不发完禁插楼


IP属地:江苏1楼2013-12-06 20:52回复
    终于有时间回来下,于是写了一份教程给各位坐等NSMBW物件制作工具的Hacker,“甚,这不是Newer源码里面的文件么”,如果一个源码所使用的运行库都只能自己运行,还叫甚API,除了game.h自写其他都来源wii developemnt library
    首先说明,目前还没有任何关于物件制作的GUI(Graphics User Interface)的图形化工具,至于kamek.py这样的工具据rvlution论坛的使用者也表示不太靠谱,想要做一个能完美运行的物件需要花费非常多的时间,包括对代码的学习和建模的学习和策划,三分钟热度无法完成,就请关闭本贴子,最后,本教程和源代码Goldenstar Developers版权所有,不涉及任何与Newer相关版权内容.


    IP属地:江苏2楼2013-12-06 20:53
    回复
      要制作一个物件,必须按照这些步骤:
      1.Linux内核系统(这里教程用Ubuntu)
      2.建立环境
      3.制作源码
      4.执行生成源码
      5.插入到ASM
      6.输入到游戏并测试
      #补充:
      如果你还不知道Linux,不知道gcc,甚至不知道C++和powerpc,那么请到wikipedia自行查询并学习
      下面就不说别的,直接开始教程


      IP属地:江苏3楼2013-12-06 20:56
      回复
        STEP1-安装Linux
        1.首先,在Ubuntu官网下载Ubuntu Desktop(格式为ISO),在Windows下,用Ultraiso把iso装入ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gzUSB设备或光盘并安装VMLINUX(教程:linuxidc.com/Linux/2012-11/74695.htm)
        *注意:这里不推荐使用VMWare Workstation等虚拟机,因为在内核上可能会存在不可预料的问题,另外不要在Windows上用wubi.exe安装
        2.把USB HDD设置为首选启动项并引导进入Ubuntu,选择Install Now来安装12.04
        *如果可以尽量格式化一个分区为EXT4文件系统并预留15G空间
        3.安装完毕重启
        4.由于Linux的驱动全是集成在内核的,所以一般情况下不需要安装编译驱动,如果第一次进入系统无法连接到Ethernet或Wireless,需要到/etc/modprobe.d/里的blacklist查找自己的网卡是否被屏蔽,如果有,删除行即可,这里网络的问题必须解决,因为后面所有的lib下载都需要联网
        [按下Ctrl+Alt+T打开终端,输入sudo gedit在Superuser权限下打开文本编辑器,打开.conf编辑并保存]
        例如窝的网卡是Boardcom系列网卡,就发现被屏蔽了……
        5.Linux下的基本操作
        在Linux下,权限(permission)非常重要,在filesystem(挂载为/)的目录内操作都需要超级用户(superuser)权限,否则会出现Permission denied的错误,那么如何启用超级用户权限呢,只要在终端输入sudo后面跟上命令就可以以superuser身份运行程序(需要输入密码)
        同时,还有一个非常重要的工具,Terminal(终端),就像windows的cmd,终端能进行很多操作,如打开GUI程序(输入gnome-system-monitor就会打开系统监视器),或打开bash和x-executable程序
        <终端与sudo和bash>

        [linux下的bash=windows下的cmd]
        最后,文件系统结构和文件格式windows也有很大不同,windows下程序都是exe执行或安装,而linux都需要编译出.o(object)并通过make install安装
        <makefile与kernel object>

        Ubuntu下还可以使用sudo dpkg -i XXXX.deb安装debian软件包或安装rpm来安装RedHat Package Manager软件包
        <EXT4文件系统>



        IP属地:江苏5楼2013-12-06 20:58
        回复
          2.安装devkitpro-powerpc
          下载devkitppc到非系统目录下(建议/home/USERNAME/Documents
          新建名为devkitpro文件夹,解压devkitppc到devkitpro
          sourceforge.net/projects/devkitpro/files/libogc/libogc-1.8.11.1.tar.bz2/download
          下载libogc并解压放入devkitpro文件夹
          sourceforge.net/projects/devkitpro/files/libfat/libfat-ogc-1.0.11.tar.bz2/download
          下载libfat-ogc并放入devkitpro文件夹
          sourceforge.net/projects/devkitpro/files/examples/wii/wii-examples-20110620.tar.bz2/download
          在devkitpro新建example文件夹
          下载wiiexample并解压到example
          sourceforge.net/projects/devkitpro/files/examples/gamecube/gamecube-examples-20110620.tar.bz2/download
          下载gamecubeexample到example
          这样就完成了dekitppc的配置,比GCC更简单
          3.Clang和LLVM的安装
          下载llvm并按照上面的方法编译
          下载clang(度娘盘上是窝已经为NSMBW物件制作打好了补丁的版本,而llvm官网的clang原版无法做到
          clang已经不需要编译了,直接
          sudo cd -r /xxx/clang-3.3 /opt
          cd /opt
          sudo make install
          最后sudo apt-get install dev-c++
          安装c++开发包
          sudo apt-get autoremove
          sudo apt-get autoclean
          清除前面所有操作的残留软件包
          如果不出问题,至此,NSMBW开发环境配置完成


          IP属地:江苏8楼2013-12-06 20:59
          回复
            4.创建代码并编译
            c++是自由的编程语言,clang和devkitppc提供了非常丰富的库,所以这里不可能全部提到,如果真的想做像newer那样的物件,就需要多学习C++的基础,并参考有关wii开发的文章,想要段时间作出物件来是不可能的
            *物件源代码的编译不仅可以使用clang,还可以用cmake,或在源码根目录下创建Makefile,使所有源代码都可以使用make来批量快速编译
            5/6.导入到游戏
            当所有源代码都成功编译后,会得到编译好的文件(包括内核补丁等),可以直接使用RV并添加configXML来直接在游戏运行,或者通过devkitppc编译elf的方法添加到main.dol,这样就能直接运行ISO而不需要实体机


            IP属地:江苏9楼2013-12-06 21:01
            回复
              FAQ部分
              Q:U盘已经写入ubuntu安装iso但引导后总是出现黑底白字提示找不到介质
              A:确认写入的USB介质类型为HDD,否则不能被识别
              Q:ubuntu断断续续时而可以联网而重启又不行了
              A:终端输入lspci,找到网卡型号,在驱动屏蔽清单找到自己的网卡驱动并删除屏蔽
              Q:/root文件夹进不去,显示没有合适的权限
              A:凡是filesystem或权限所有者为root的,都不能写,只能读,要想编辑需要sudo命令
              Q:以sudo运行某些程序会出现部分内容不显示,保存的设置不起作用
              A:并不是所有的程序都需要用sudo,一些用户程序如果用sudo会出现程序GUI出错,配置文件在下次以正常身份运行时丢失等
              Q:终端clang显示command not found
              A:未安装clang或安装错误
              Q:clang xxx.cpp fatal error
              A:源代码语法错误,如出现no such file or dictionary就要查看是否指定了错误的文件位置,或指定了在当前版本linux-kernel不存在的header(如linux/config.h在新版就不存在)
              Q:每次用终端执行devkitppc里面的x-executable都要输入完整路径?
              A:不一定,可以到/home/USERNAME/.bashrc添加环境变量
              Q:怎样可以把做出来的所有源代码一次编译完成?
              A:makefile
              Q:编译出o,so,ko,这些是什么文件
              A:object,shared object,kernel object这些都是类似windows dll的动态连接库文件


              IP属地:江苏10楼2013-12-06 21:01
              回复
                另外补充内容:
                1.有人提到windows下的cygwin和mingw是否可以替代linux,其实在windows上操作确实不如linux方便,但毕竟要装新系统,如果实在认为装ubuntu太麻烦那也可以用cygwin或mingw代替,但是存在的bug也是未知的
                2.为甚newer的kamek用不了?也许是作者本身没有用这个工具自己编译,而是用了窝列出的方法,所以kamek.py是一个没有调试过的程序
                3.吐槽:gedit坑爹,完毕
                ----------------------------------------------------------------
                至此本教程结束,如有疑问,可以加入Goldenstar技术群1394551或在此提问


                IP属地:江苏11楼2013-12-06 21:05
                收起回复
                  好评,顶起


                  IP属地:北京12楼2013-12-06 21:16
                  回复
                    感觉对我来说目前不能实现


                    IP属地:加拿大来自Android客户端13楼2013-12-06 21:17
                    回复
                      真不是一般的技术宅,顺便。。。你这是在Linux进行操作制作的?


                      来自Android客户端14楼2013-12-06 21:21
                      收起回复
                        我能说不明觉厉么


                        IP属地:安徽15楼2013-12-07 04:46
                        回复
                          实际上有点不明觉厉,如果能通俗易懂点的话估计就可以加精了


                          IP属地:湖北17楼2013-12-14 12:52
                          回复
                            不明觉厉


                            来自iPhone客户端18楼2013-12-14 20:32
                            回复