精华内容
下载资源
问答
  • [转]我也玩 PSP 开发! —— PSP开发环境 简介 .pdf
  • PSP开发指南第3课.pdf

    2021-09-13 15:25:55
    PSP开发指南第3课.pdf
  • PSP开发指南第5课.pdf

    2021-09-13 15:25:55
    PSP开发指南第5课.pdf
  • psp开发教程-----第一课 安装开发环境.pdf
  • docker-pspdev:for用于PSP开发的Docker映像
  •  虽然从我去年拿到psp的时候就很想自己能写一个能在psp上运行的什么,之前也在windows上尝试过几次配置psp开发环境,但是都没有成功。十一放假,看了下运势,说这个星期适合学习第二专长,想想自己很早之前就想好好...

          虽然从我去年拿到psp的时候就很想自己能写一个能在psp上运行的什么,之前也在windows上尝试过几次配置psp开发环境,但是都没有成功。十一放假,看了下运势,说这个星期适合学习第二专长,想想自己很早之前就想好好学习下C,为什么不在linux下配置一个psp的开发环境呢!正好是一方两便。

    于是折腾开始了。下载了psptoolchain后果断运行toolchain.sh,随后错误接踵而来,我淹没其中,以下就是今天遇到的错误。

    1、无法访问/usr/include/mpfr.h
          首先想到去/usr/include下面去找,发现果然没有mpfr.h,网上搜了一下,也不知道mpfr.h是什么,但是没有就要让他有,不然没办法走下去了,发现一个地址:http://petio.org/tools/mpfr.html ,照着上面的命令敲(虽然对linux不是很了解,但是里面的命令是什么意思还是知道的),弄完过后再去/usr/include下面一看,果然mpfr.h有了!
    继续
    2、ERROR: set $PSPDEV before continuing
         我居然一眼就看出是没有设环境变量,真是佩服我自己!可是linux下环境变量是怎么设的,我也不知道,还好有google,一搜,发现第一条就是这个地址:http://forums.qj.net/psp-development-forum/113149-le-urgent-error-set-pspdev-before-continuing.html ,看了一下(虽然英语四级没过,但是纯英文的文档可没少看)。照着上面的最佳答案:

    cd ~
    echo 'export PSPDEV=/usr/local/pspdev' >> .bashrc
    echo 'export PATH=$PATH:$PSPDEV/bin' >> .bashrc

    敲(上面两句的前半部分大致知道什么意思,后面不清楚,后来才知道是个文件名  )。
    敲完后没用!居然没用!

    再搜,再vi ~/.bashrc,后来发现好多人在ubuntu上面配置psp环境的,一路看下来,发现ubuntu上配置完环境变量后可以用source ~/.bashrc来读取新环境变量,我也用这个命令在fedora下面试一试。结果,没报错,再用export命令看一下,仔细查看发现已经有了,但是不是我最新修改的。搜一下fedora下面关于环境变量的主题,初步得出结果修改环境变量后要注销才能起作用,算了注销吧。
    注销再进来,export发现变成最新修改的了,./toolchain.sh!还是这个错误,难道环境变量还是不对!,再export,再三仔细查看,真是坑爹啊!PSPDEV=/usr/local/pspdev我居然写成PSPSDEV=/usr/local/pspdev!粗心害死人啊!修改、注销、登录、./toolchain.sh,终于前进了!
    3、文件 “binutils-2.16.1.tar.bz2” 不存在。
          到下载文件了,第一个就报错!真是…………
          照着上面下载的路径:ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.16.1.tar.bz2 ,在浏览器中用http访问,发现是 404 not found,往上一级,发现有个列表,仔细查看,果然没有报错的这个文件名。
    怎么办?修改那个什么文件!?还是先搜索一下吧。
    搜索后发现很多人都手动下载这些下载文件,说省时间,我想我是不是可以手动下载避过这个错误呢!没有binutils-2.16.1.tar.bz2这个文件我就下载一个跟他很像的吧,wget http://ftp.gnu.org/pub/gnu/binutils/binutils-2.16.1a.tar.bz2下载到build文件夹下,rename为binutils-2.16.1.tar.bz2。再./toolchain.sh结果,还是不行,估计是要删掉那个script才行,不过我不敢啊,算了,修改scripts/001-binutils-2.16.1.sh吧,把ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.16.1.tar.bz2 改为:ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.16.1a.tar.bz2 (就为了这个小小的"a",我……)。

    执行./toolchain.sh
    继续了!听说时间很长,我先去洗衣服,然后再洗个澡,如果还没有结束我再去逛个街。
    4、svn: 无法连接主机“svn.ps2dev.org”: 连接超时
         好吧生活肯定不会都让你如愿以偿。

         当我准备去洗澡的时候新的错误出现了,svn: 无法连接主机“svn.ps2dev.org”: 连接超时,这个之前已经看到别人有遇到这个问题了,没办法该改吧
    按照:http://blog.csdn.net/mimepp/article/details/5893695 说的方法改了,没用还是找不到。上面说ps2dev.org的东西都拷贝到psp.jim.sh上了,所以去psp.jim.sh上找吧,看看里面需要修改的路径在psp.jim.sh上是什么路径,很快就搞定,新路径http://psp.jim.sh/svn/psp/trunk/pspsdk;http://psp.jim.sh/svn/psp/trunk/pspsdk; http://psp.jim.sh/svn/psp/trunk/psplinkusb。保存好修改的./scripts/003-pspsdk-stage1.sh ./scripts/006-pspsdk-stage2.sh ./scripts/009-psplinkusb.sh三个文件。
    继续./toolchain.sh
    5、文件 “gdb-6.8.tar.bz2” 不存在。
         抽空去逛了下街回来,意料之中,错误出现。

         这个错误之前已经有类似的出现了,解决轻车熟路。在文件007-gdb-6.8.sh中把ftp://ftp.gnu.org/pub/gnu/gdb/gdb-6.8.tar.bz2 改为ftp://ftp.gnu.org/pub/gnu/gdb/gdb-6.8a.tar.bz2 (到这里我才发现原来光改这个地方还不行,在错误3这样改可以是因为,我之前手动下载了文件,然后手动将下载下来的文件重命名为shell脚本里正确的文件名,所以这样做可以。所以还需要修改其他的解压shell,不过算了,我还是用我之前的方法,进入build文件夹把文新的文件名手动改成旧的吧。)
    继续
    6、致命错误:usb.h:没有那个文件或目录
         多灾多难啊!没办法,找原因吧。
         这个问题比较让我觉得棘手,关键是不知道usb.h在什么地方,先不急,我打开main.c看看先。一打开里面很多头文件,我把它们都拷出来仔细看了看,发现里面有我大学很熟悉的stdio.h等,看里面的路径,我想应该再/usr/include下面去那里看看,果然没有usb.h,google一下,在看了无数外国朋友的问题与回答后,大致得出结论,这个是psp的usb链接用的,不过看我下载下来的文件命名的文件夹来看好像是windows用的啊,在fedora下有用吗!不管了,上面有人说这些文件是和psplinkusb下载下来的退到build文件夹,抄起find -name usb.h,果然找到,顺便把其他几个include下面没有的头文件给找到,顺便cp usb.h /usr/include下继续编译,发现有效果。
    但是接着就给我来个:致命错误:windows.h:没有那个文件或目录。这下我彻底傻了。

    忙了一天体力消耗殆尽,明天再整吧,今天前后连续弄了8个小时。还是没能写个hello psp出来,不过看到网上有人说这个009-psplinkusb.sh不是开发必备的,不过我也不知道,还没有验证,今天累了就到这吧。

    另:不断的尝试,不断的./toolchain.sh,每次都重头来好浪费时间,到最后我实在忍不住了,建了一个备份文件夹,google了一下mv指令的用法:mv 006-pspsdk-stage2.sh ../scripts_bak把前面成功执行的sh文件全都移动到备份文件夹去,这样快多了!

    对于一个累计linux上机时间不足60小时的人来说,能在fedora下面配置psp开发环境,我真的很佩服我自己!

    我要继续加油!

    展开全文
  • psp开发工具miro lua

    2009-04-18 10:19:55
    PSP开发脚本语言的LUA爱好者使用,作者不详引用自http://bt.levelup.cn/userupload/tg777.com/download/5832.html
  • MIRO LUA 2 (PSP开发软件) 开发PSP软件的工具 <br>收集来的。
  • [转]我也玩PSP开发!(2)—— PSPSDK示例 源码分析 .pdf
  • psp开发相关网站

    2008-09-27 23:35:00
    1.国内的一个很不错的论坛:www.pspchina.net/2.psp开发权威网站:www.ps2dev.org3.cool大的ppa项目主页:http://code.google.com/p/pmplayer-advance/4.另一个国外的很不错的psp开发论坛:forums.qj.net5.PRX Library:...
    1.国内的一个很不错的论坛:
    www.pspchina.net/

    2.psp开发权威网站:
    www.ps2dev.org

    3.cool大的ppa项目主页:
    http://code.google.com/p/pmplayer-advance/

    4.
    另一个国外的很不错的psp开发论坛:
    forums.qj.net

    5.PRX Library:
    http://silverspring.lan.st/

    6.devkitpro,win32下的psp开发环境:
    http://sourceforge.net/projects/devkitpro/

    7.ps2dev的wiki:
    http://wiki.ps2dev.org/doku.php

    8.另一个国外的psp开发论坛:
    http://community.hackingpsp.com/forums/

    9.psp-programming,强烈推荐,入门必看:
    http://www.psp-programming.com/

    10.一个还没怎么关注的网站,貌似不错:
    http://gtamp.com/PSP/index.php

    暂时只发现了
    这些,以后再补充,呵呵
    展开全文
  • 转 我也玩PSP开发 (2)—— PSPSDK示例 源码分析
                   

        放假啊,这叫玩啊,天天不务正业,还玩些可能和未来工作无关的技术!内心充满了罪恶感啊

        写HelloWorld太无聊了,转了一圈PSPSDK发现有自带sample,方便快速上手的好东西,位置在开发包/psp/sdk/samples下 面,其中包括声音,控制器,红外,usb,wifi,电源等等。还真不少,先挑简单的看看。恩~~我看controller挺简单!就看这个!


         打开controller/base目录,只有一个main.c 和 Makefile。肯定不会很难,先make一个试试,还好很顺利,编译得到四个文件: main.o controller_basic.elf EBOOT.PBP PARAM.SFO。
        main.o 不用说肯定是main.c的生成的目标文件。
        controller_basic.elf 我知道ELF是linux下的二进制文件格式,可能PSP也是这个格式。
        EBOOT.PBP 这个就是最终的执行文件了,这个应该是包装过的,其中包含一些图标文件什么的。
        PARAM.SFO 这个我就不知道,有高手可以告诉我,(我怀疑!我猜测!是源码中定义的那些宏有关,是一些信息,最后打包到EBOOT.PBP。不要太相信,只是个思路)。

        然后就是插上usb,靠到psp/game下,建个文件夹,叫什么名都可以!然后把EBOOT.PBP(不要改名字!)放进去,运行就可以了。

        也看了运行后什么模样了!下面就是分析源码了,分析都写成注释了!

        以下是源码 :

     

    /**/ /*
     * PSP Software Development Kit - http://www.pspdev.org
     * -----------------------------------------------------------------------
     * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
     *
     * main.c - Basic Input demo -- reads from control pad and indicates button
     *          presses.
     *
     * Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
     * Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
     * Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
     * Copyright (c) 2005 Donour Sizemore <donour@uchicago.edu>
     *
     * $Id: main.c 1095 2005-09-27 21:02:16Z jim $
     */


    /**/ /* psp的一些头文件,从文件名应该能看出来时干嘛使得 */
    #include  < pspkernel.h >
    #include  < pspdebug.h >
    #include  < pspctrl.h >

    /**/ /* psp sdk中自带标准c库和标准c++库   */
    #include  < stdlib.h >
    #include  < string .h >


    /**/ /* 定义模块信息  包括版本 */
    /**/ /* Define the module info section */
    PSP_MODULE_INFO( " CONTROLTEST " ,  0 ,  1 ,  1 );

    /**/ /* 定义主线程属性 还没具体研究,有时间再改上*/
    /**/ /* Define the main thread's attribute value (optional) */
    PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER  |  THREAD_ATTR_VFPU);


    /**/ /* 这个纯属为了方便 pspDebugScreenPrintf 的用法和c库中的printf用法完全一样,不过pspDebugScreenPrintf只能用在初始化了DebugScreen以后*/
    /**/ /* Define printf, just to make typing easier */
    #define  printf    pspDebugScreenPrintf

    void  dump_threadstatus( void );

    /**/ /*下面的代码会看见,这是控制主循环推出的条件变量*/
    int  done  =   0 ;

    /**/ /*当用户按下home键退出时的回调函数*/
    /**/ /* Exit callback */
    int  exit_callback( int  arg1,  int  arg2,  void   * common)
    ... {
                         /**//*让主循环推出*/
        done = 1;
        return 0;
    }


    /**/ /* 这么看来需要一个专门的线程来监听用户的操作,建立这么一个线程监听用户来调用相应的回调函数*/
    /**/ /* Callback thread */
    int  CallbackThread(SceSize args,  void   * argp)
    ... {
        int cbid;
                          /**//* 创建一个Exit Callback回调函数返回一个类似handle的东西*/
        cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
                          /**//* 在把这个回调函数注册商 */
        sceKernelRegisterExitCallback(cbid);
                         /**//* 让他睡眠 当用户要退出的时候会唤醒*/
        sceKernelSleepThreadCB();

        return 0;
    }


    /**/ /* 这个纯粹是为了模块化了,把安装回调函数的代码都写着里了 */
    /**/ /* Sets up the callback thread and returns its thread id */
    int  SetupCallbacks( void )
    ... {
        int thid = 0;
                      
                         /**//* 创建那个回调函数线程 */
        thid = sceKernelCreateThread("update_thread", CallbackThread,
                         0x11, 0xFA0, 0, 0);
        if(thid >= 0)
        ...{
                                              /**//* 开始执行 */
            sceKernelStartThread(thid, 0, 0);
        }


        return thid;
    }


    int  main( void )
    ... {
        SceCtrlData pad;   /**//*控制器的结构体*/
     

        pspDebugScreenInit(); /**//*初始化DebugScreen 这样可以用pspDebugScreenPrintf在上面输出了*/
                        
                         /**//*那个回调函数线程*/
        SetupCallbacks();
                         
                         /**//*好像是什么取样周期,莫非可以设置游戏时连发的速度, 默认是0*/
        sceCtrlSetSamplingCycle(0);

                         /**//* 控制器的模式 有数字(PSP_CTRL_MODE_DIGITAL)和类比(PSP_CTRL_MODE_ANALOG)两个 这里用的是类比的 */
        sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);

                         /**//* done !那个主循环变量*/
        while(!done)...{
                                              /**//* 设置光标的位置*/
            pspDebugScreenSetXY(0, 2);

                                               /**//* 读取用户的输入,psp没键盘,就是那些按键了*/
                sceCtrlReadBufferPositive(&pad, 1); 
                                               
                                              /**//* 类比摇杆的坐标*/
            printf("Analog X = %d ", pad.Lx);
            printf("Analog Y = %d  ", pad.Ly);
                                              /**//* 其他按键的判断,按了哪个就输出相应的文字,用宏都表示出来了,看名字可以看出来*/
            if (pad.Buttons != 0)...{
                if (pad.Buttons & PSP_CTRL_SQUARE)...{
                    printf("Square pressed  ");
                }

                if (pad.Buttons & PSP_CTRL_TRIANGLE)...{
                    printf("Triangle pressed  ");
                }
     
                if (pad.Buttons & PSP_CTRL_CIRCLE)...{
                    printf("Cicle pressed  ");
                }
     
                if (pad.Buttons & PSP_CTRL_CROSS)...{
                    printf("Cross pressed  ");
                }
     

                if (pad.Buttons & PSP_CTRL_UP)...{
                    printf("Up pressed  ");
                }
     
                if (pad.Buttons & PSP_CTRL_DOWN)...{
                    printf("Down pressed  ");
                }
     
                if (pad.Buttons & PSP_CTRL_LEFT)...{
                    printf("Left pressed  ");
                }
     
                if (pad.Buttons & PSP_CTRL_RIGHT)...{
                    printf("Right pressed  ");
                }
          

                if (pad.Buttons & PSP_CTRL_START)...{
                    printf("Start pressed  ");
                }

                if (pad.Buttons & PSP_CTRL_SELECT)...{
                    printf("Select pressed  ");
                }

                if (pad.Buttons & PSP_CTRL_LTRIGGER)...{
                    printf("L-trigger pressed  ");
                }

                if (pad.Buttons & PSP_CTRL_RTRIGGER)...{
                    printf("R-trigger pressed  ");
                }
          
            }

        }


                         /**//* 彻底退出了*/
        sceKernelExitGame();
        return 0;
    }

     

        以上就是这个sample了,一点也不难!还算是再玩得程度,不过开发包公布出来的函数还真是少的可怜啊!要想写出更好的东西,那就要看对开源代码库的移植了!

                

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • PSP开发指南第3课

    千次阅读 2008-01-10 14:59:00
    在读过第一课和第二课之后,你现在应该可以安装开发环境。... 你所要了解的是这个指南的作用并不是从头至尾的教你如何编写PSP开发程序,与其说他是教你如何编写一个游戏不如说是教你如何入门。你将在这

    在读过第一课和第二课之后,你现在应该可以安装开发环境。并且可以完成基本的PSP编程。现在应该做更深一步的的学习。做一个"hello world"应用程序是很不错的。但是它并不是万能的,所以这个指南就是教你如何去做这些"hello world"所做不了的事情。

     

    你所要了解的是这个指南的作用并不是从头至尾的教你如何编写PSP开发程序,与其说他是教你如何编写一个游戏不如说是教你如何入门。你将在这里学到PSP(基于C)的基础程序块的设计。你需要对这些“块”进行堆积和重组来编写你自己的应用程序。

     

    学习这这一课的先决条件是先学习过第二课,或者了解如何安装一个基础程序。在这个指南里,我们将不会从头到尾构架你的程序,所以,测试下面这行代码来代替这一行。

            printf("Hello World.");

     

    从第二课起,除了那些额外标注之外的代码我们将不再对它们做更深一步的研究,因为这些代码仅仅是起到安装程序的作用。

     

    用这个指南最终创造出来的产品将是一个程序,它会一直运行,直到使用者按下终止健或者它运行到程序内原先设定的上限指令方能终止。对这个指南来说,这是个完美应用程序。它联合了几个c语言的核心参数创造了一个简单有效的应用程序。这个程序并不需要运行其他特定程序即可以达到我们想要的结果。它包含了变量、if/then语句、循环、文本格式和按钮输入。

     

    现在,我们需要增加两个的头文件。一个是让我们拥有更多的屏幕控制的功能(我们以后将会应用到它的一种函数),另一个将会让我们获得按钮输入。所以要增加(pspdisplay.hpspctrl.h)这两个文件,我们在两个"#include"语句后增加这两行代码:

    #include <pspdisplay.h>
    #include <pspctrl.h>

     

    这就是我们需要设置的所有程序,现在我们继续探讨函数代码。此后,所有的列出的代码都应该加入你们的main函数代码。来代替从第二课以来的"printf"命令。我们首要做的是来定义我们程序里应用的变量。比如对以下变量的定义:

    //EXAMPLE (Psuedo Code)
    //DO NOT ADD TO YOUR PROGRAM
    type name=value;

    type 是一种变量的数据类型。每一种数据类型都能包含数据(仅仅是数据)。例如,输入"int"(意味着整形)可以包含从-32767到32767中任何没有小 数的数据。而"float"的意思接近于"int",只是他可以包含小数。输入"char"则代表它可以包含一个字母。基于我们的程序。我们只研究 "int"的类型和一个被叫做"SceCtrlData" 的psp特殊类型.它管psp的控制按钮。

     

    那么,定义两个我们将要用到的变量,我们在第二课的程序中插入这两行代码.(这些可以运行你的"printf("Hello World.");"),应该把他们放在"SetupCallbacks();."的后面.

    int counter = 0;
    int i = 0; SceCtrlData pad;

     

    现在, 我们已经可以用三个变量。两个"int,"类型,定义为"counter"和"i",目前的数值是零.另一个变量为"SceCtrlData"类型.定义 为"pad",它充满了垃圾数据(因为我们没有初始化它),这些在我们写程序的时候要紧记.如果你定义一个变量而没有初始化它(就像我们的pad变量), 它将不是被清空的,它将包含了以前的大块存储信息。定义一个变量就是分配某一个大的存储空间来让变量去存储。初始化就是清理一个空间来允许我们应用。而那 些在我们不能定义它的同时初始化的"pad"的原因是因为在这时初始化是没有意义的。因为它控制了输入按钮,你是不能仅仅靠输入一个数值来初始化它。我们 将在真正应用它的时候再来初始化它。

     

    现在,我们将给使用者一些使用说明。我们用"printf"输出一个语句的方式,是要把定义变量的位置放在"printf"语句之后。

    printf("Press [X] To Start the Timer");

     

    看起来很熟悉?很好,因为是在第二课我们输出"Hello World"时用过的一些函数。所以,如果你的程序运行到这一步,它看起来就像在运行"hello world"的应用程序。但它打印出的是"Press [X] To Start the Timer"而不是"Hello World."。

    现在,我们需要程序在作别的事情之前一直等待直到用户按下[X] 按钮,而现在这看起来几乎是不可能的。幸运的是,我们可以应用循环来处理它。循环,从根本上讲,就是让程序重复通过一段代码。有很多种类的循环(比如 for 循环,while 循环,do while 循环等)我们这个指南只介绍众多循环中的两种--While循环和for循环。循环如何工作取决于你给他什么样的参数。如果你给他的参数是正确的,它将会 执行一段代码。例如,你有一段代码是增加的变量(循环每次运行都从零开始)你给这个循环的参数是"i<10",它将会执行你的代码十次。因为第十一 次,它将会检查变量的数值,如果它是十,是不比十小的数值,那么这个语句就是false(这是一个我们曾见过得连续语句),另一个非常重要的概念就是你要 紧记"true"和 "false"非常接近于"1" 和 "0"的关系。

     

    我们的循环不是一流的,它是非常简单的,但是我曾经仔细看过一个psp 方案的一段代码,他们总是这么应用。所以,我想我以你们一般常见的方式把它介绍给你们是合适的。总之,我们所将要做的就是在我们的每句话之前加一个 "infinite loop"尽管它并不真实无限的。因为(我之前没有提到)有一种不同于控制参数返回false的另外一个方式可以结束循环。这就是"break"参数,只 要你的循环遇到这个参数,它都将结束你目前的循环。而你的程序将在这个循环的末端继续执行。以下,就是我们的循环的开始:

    while(1) {

     

    就像你所知道的,这个控制语句总是评估参数是否是"true,",因为"1"同"true."一样,所以下面的代码(再开始括号和结尾括号之间的数据行)将会重复执行,直到它遭遇一个"break"参数。

     

    下一个数据行就是我们事前规定数值"pad." 的地方。他用到了一个我们早先包含在"pspctrl.h"文档内的作了详细说明了的函数。这就是函数调用,就像你在第二课看见的那样。但是在这里有一点 改变。首先,我们传两个数值给他,不需要更多的处理,你只需要将这两个数值用一个逗号分开即可。其次,有一点不同就是我们将要传入一个变量。也不需要更多 的处理,只需要插入这个变量名来代替一个数字或者一个字符串,或者其他什么的。再次,有一点不同就是我们需要在"pad."之前代用"&"操作 符,这实际上就是"address of"操作符,当你对编程掌握得更深的话,你将会对他运用得得心应手,基本上,目前它所要做的不是代用数值或者变量,它要代用的是存储地址。现在你知道函 数调用拥有一个可以转变你代给它变量数值的功能。你需要应用"&"操作符。这就是为什么我们设置"pad"来容纳关于psp管理的当前情况。

              sceCtrlReadBufferPositive(&pad, 1);

     

    如果你对于"1"的作用有些疑惑,不要担心,它设立了数字缓存块去读取,但我仅仅在这里看到"1"的应用。其实,我并不知道为什么你在这里想要知道一些别的东西(如果可以构成一个理由,那么受到你的启发,我将会在这里加入一些说明)。

     

    下一个程序行是关于"if" 语句,它可以让你的应用程序编辑的更加有逻辑性。它所要做的就是通过执行一段代码,"if"一个参数判断它是否true.所以我们想要做的就是如果使用者 按下[X]健,它将用"break"语句结束循环, 同时,我们的程序将有效的、持续的进行下一个片断处理.如果参数被判断为false,它将会跳过这段代码,如果这有一个"else"语句,程序将执行这段 "else"语句代码,或者只是继续运行下去。而我们没有"else"语句,所以它将一次又一次的通过这个循环.不断的监测按钮的状态,并且检查是否 [X]按钮被按下.现在我们对于它,用一个结尾括号来结束我们的循环.

    if(pad.Buttons & PSP_CTRL_CROSS) {
                        break;
              }
    }

     

    这里"if()"语句用英语解释就是”如果[x]按钮被按下”的意思。所以,如果按下按钮,循环将被打破。否则,他将持续运行这个循环。现在我们看看与它相反的另一方面。

    我们按下[X]按钮之后,我们想要开始一个一直运行下去、直到使用者按下[O]按钮的计数。那么我们该怎么做呢,就像你猜到的那样,用另外一个循环,现在我们运行这个循环,并且在其中增加退出代码。(用"PSP_CTRL_CIRCLE"置换"PSP_CTRL_CROSS")

    while(1) {
              sceCtrlReadBufferPositive(&pad, 1);
              if(pad.Buttons & PSP_CTRL_CIRCLE) {
                        break;
              }

     

    现在,我们需要用到一个新的函数。它的作用就是清理屏幕,因为我们的屏幕上仍然有"Press [X] To Start the Timer",我们需要清除它,此外,当循环下一次运行到这里时,他将会执行这段语句,就是我们打印在屏幕上的正文,我们需要清除它,如下:

              pspDebugScreenClear();

    现在,清除了屏幕,我们可以试着打印出我们的计数器。(可以告诉用户,如何停止计数并且退出程序)

    以下两行代码,第一个语句看起来比较熟悉,它仅仅是一个简单得"printf" 语句。唯一看起来有点奇怪的地方就是在字符串的末尾有一个"/n"。"/n"是一个特殊符号,他代表了一个新的数据行。这个数据行的作用等同于你按下你键 盘上的"ENTER"。第二个"printf"语句有一点难。我们需要它打印出变量"counter",为了做到这个,我们将用到"%"操作。它的主要意 思就是:你想要显示一个变量,而后面的字符将会告诉我们你所要显示的变量是那种类型的程序。因为是一个整形,我们用"i"(integer;,明白?)。第二个语句,我们想要代入的是我们想要它去打印的一个参数。在我们这个案例里,我们想要打印"counter"变量,所以我们把以下两行加入我们的程序

              printf("Press [O] To Stop the Timer/n");
              printf("Counter: %i", counter);

    现在我们需要用加一的方式增加一个计数,所以下一次循环通过的时候,显示数值会更大一些,如果我们不这样做的话它将不是一个真正的计数器,我们可以用两种方法达到我们要的效果,第一,用"counter = counter+1;"。想要的结果就可以完美的显示出来,但是,用加一的方式增加一个变量,这有一个更加简单的方法就是应用"++"计数:

              counter++;

    它的作用等用于"counter = counter +1;"但是它却更加讲究,你说呢?

     

    我们需要增加一个简短的暂停命令来安排"HOME" 按钮的工作,这里我们将会运用一个"for"循环,这个循环仅仅与"while"循环有一点不同,它有三个参数。第一个就是初始化,他将为启动循环设立一 个变量。第二个就是控制语句,他跟在"while"循环中的控制语句起到相同的作用。第三个就是在每一个循环你所希望限制你的变量范围。

     for(i=0; i<5; i++) {
                        sceDisplayWaitVblankStart();
              }

    这将会执行我们的命令行五次(当i = 0, 1, 2, 3, 和 4)。

    最后,我们需要循环通过一个简单的结尾括号来结束一段代码:

    }

     

    最后一点,在"break"语句执行后,这段代码将会运行,我们希望显示一个简单的讯息,和我们计算器的最后计数,所以我们清除屏幕并且如同我们在循环里运用得那样再运用两行"printf"语句,但以不同的文本,增加:

    pspDebugScreenClear();
    printf("Counter Finished.");
    printf("Final Count: %i", counter);

     

    我们完成了我们的编码,现在为几个与第二课不同的改变进行一下讲述。

    为了我们的新程序,所以Make file需要做一些改变。打开它,并且把它的标题更换为跟你的新程序配套的标题。我把我的程序命名为"Counter Program." 同样改变你的"count."目标。现在编写你的程序,并且测试它。你应该拥有了编写你自己程序的基础技巧。(至少本文就编写了一个)你可以搜寻一些别的 c语言指南寻找一些关于你如何应用更多复杂的逻辑性组织的信息。(if/if else/else),循环,函数,指示器,等等。这有一点与psp编程不同。但是这些基础都是c,祝你好运,并找到乐趣。
    展开全文
  • 1)很难找的 PSP SDK,我好不容易才下到 2)免积分提供给大家下载,希望能帮助到真正有需求的同学
  • ),就想看看再上面的开发。于是就开始上网找PSP的SDK。总结了一下,如下: PSP的官方SDK应该是收费,网上找不到,只能找到第三方的SDK(莫非反向工程弄出来的,太神奇了!?),网上谈论的最多有两个,一个是 ps
  • PSP开发指南第三课

    2008-04-18 23:27:00
    在读过第一课和第二课之后,你现在应该可以安装开发环境。并且可以完成基本的PSP... 你所要了解的是这个指南的作用并不是从头至尾的教你如何编写PSP开发程序,与其说他是教你如何编写一个游戏不如说是教你如何入门。
  • ),就想看看再上面的开发。于是就开始上网找PSP的SDK。总结了一下,如下:PSP的官方SDK应该是收费,网上找不到,只能找到第三方的SDK(莫非反向工程弄出来的,太神奇了!?),网上谈论的最多有两个,一个是ps2dev....
  • ),就想看看再上面的开发。于是就开始上网找PSP的SDK。总结了一下,如下: PSP的官方SDK应该是收费,网上找不到,只能找到第三方的SDK(莫非反向工程弄出来的,太神奇了!?),网上谈论的最多有两个,一个是ps2
  • PSP开发环境

    2008-03-10 23:57:30
    熟悉PSP的人大概都知道PSPSDK(http://www.pspdev.org),一个基于BSD协议的软件包。可是安装PSPSDK的开发环境不那么省心。因为该包推荐的安装运行方式有严重问题。也就是说你要花大量时间准备开发环境。我上周亲自...
  • PSP开发资源

    千次阅读 2007-12-03 13:24:00
    周六(2007-12-01)刚买了个PSP2000, 刷的3.71M33-3版本的。机子1380元。用 PSPSDK_MSYS 编译的程序已经成功跑起来了。主要是将原来的Makefile文件增加选项: BUILD_PRX = 1 PSP_FW_VERSION = 371 然后在MSYS中运行mak
  • ),就想看看再上面的开发。于是就开始上网找PSP的SDK。总结了一下,如下: PSP的官方SDK应该是收费,网上找不到,只能找到第三方的SDK(莫非反向工程弄出来的,太神奇了!?),网上谈论的最多有两个,一个是 ps2...
  • 经过一早上的折腾,我的Hello PSP!终于出现了!  第一次在linux下写psp代码,昨天虽然编译得差不多了,但是要写还是有点无从下手的感觉。经过一晚的沉淀,今天早上开工写,当然首先还是去找下教程吧,功夫不负有心...
  • 第一步当然是先建立开发环境了,先到Google上搜索了一番,发现PSP开发环境建立一般主要有两种:第一种是自己build PSP toolchain from scratch(前提是已有GNU的开发环境,比如Linux,Cygwin等);第二种是直接使用...
  • [开发环境]PSP开发整合包(一键安装,无须配置包含目前最新的全库)在制作psp的程序过程中,发现在windows下编译程序是比较方便一些,但是devkitpro支持的库太少,不支持一些库的配置,例如freetype,sdl,sdl_ttf,sdl...
  • ★☆大熊玩数码★☆-- PSP开发环境搭建成功!开始我的PSP编程之旅
  • PSP开发--[2]开发环境

    2012-12-26 11:20:14
    可以直接下载集成好的开发环境: 1,下载toolchain/compiler + PSPSDK http://dl.qj.net/download/pspdev-for-win32.html 2,解压 3,运行exe文件安装到 X:\pspdev\ 目录下  4,在X:\pspdev\ 下建立一下.bat...
  • PSP开发环境配置

    2010-01-20 00:17:00
    这里目前每个程序不一样的就是倒数第三行“PSP_EBOOT_TITLE = Hello World”里的“Hello World”,它是你的程序名称,显示在PSP上。 所以每做一个新程序,需要改变的就是makefile里的“PSP_EBOOT_TITLE”   ...
  • 道格(Doug)在早期的Windows CE系统上以“数字概念” ( Digital Concepts)的身份开始从事移动领域的工作,并创建了该平台上有史以来最好的游戏,现在为Playstation Portable(PSP)开发。 Since most readers of this ...
  • PSP update failed * 80410A0B = Internal Error * 80410410 = Cannot connect to the given acess point * 80010087 = The game could not be started * 0x0 = no error * 0x80020001 = error ...
  • PSP开发指南第5课

    千次阅读 2008-01-10 15:04:00
    在学会架设开发环境,编写第一个程序,领略一些编程技巧,并且涉猎列一些经典程序之后,接下来我们开始第五课,你不要想这里有什么会让你感到惊讶的,这只是通过学习一些高级的概念来增强我们的编程技巧。...
  • PSP开发环境的搭建

    千次阅读 2008-04-22 16:52:00
    终于完成PSP环境的搭建,现介绍一下流程。 一、下载PSPSDK_MSYS_FULL开发包,下载地址:http://www.pspsp.org/main/?page_id=8。  记住,只下载完整[PSPSDK 最新SVN编译版本+MSYS+GCC完整打包],下完结束之后,放...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,938
精华内容 5,575
关键字:

psp开发