PSP开发指南第五课
#include <pspdisplay.h>
#include <pspctrl.h>
#include <stdio.h>
#include <psppower.h>
#include "graphics.h"
#define RGB(r, g, b) ((r)|((g)<<8)|((b)<<16))
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;
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;
}
scePowerSetClockFrequency(333, 333, 166);
接下来,我们把它显示在屏幕上,跟我们上一课所作的一样:
initGraphics();
int selComponent = 0;
char filler[10];
int bgG = 0;
int bgB = 0;
Color dimmedColor = RGB(100, 100, 100);
Color shadowColorH = RGB(55, 55, 55 );
Color shadowColorD = RGB(55, 55, 55 );
sceCtrlReadBufferPositive(&pad, 1);
if(selComponent > 0) {
selComponent--;
}
for(i=0; i<10; i++) {
sceDisplayWaitVblankStart();
}
} else if(pad.Buttons & PSP_CTRL_DOWN) {
if(selComponent < 2) {
selComponent++;
}
for(i=0; i<10; i++) {
sceDisplayWaitVblankStart();
}
}
switch(selComponent) {
case 0:
bgR++;
break;
case 1:
bgG++;
break;
case 2:
bgB++;
break;
default:
//SHOULD NEVER EXECUTE
break;
}
} else if(pad.Buttons & PSP_CTRL_LEFT) {
switch(selComponent) {
case 0:
bgR--;
break;
case 1:
bgG--;
break;
case 2:
bgB--;
break;
default:
//SHOULD NEVER EXECUTE
break;
}
}
bgR = 0;
} else if(bgR > 255) {
bgR = 255;
}
if(bgG < 0) {
bgG = 0;
} else if(bgG > 255) {
bgG = 255;
}
if(bgB < 0) {
bgB = 0;
} else if(bgB > 255) {
bgB = 255;
}
if(selComponent == 0) {
printTextScreen(11, 10, filler, shadowColorH);
printTextScreen(10, 10, filler, highlightColor);
} else {
printTextScreen(11, 10, filler, shadowColorD);
printTextScreen(10, 10, filler, dimmedColor);
}
if(selComponent == 1) {
printTextScreen(11, 20, filler, shadowColorH);
printTextScreen(10, 20, filler, highlightColor);
} else {
printTextScreen(11, 20, filler, shadowColorD);
printTextScreen(10, 20, filler, dimmedColor);
}
sprintf(filler, " BLUE: %i", bgB);
if(selComponent == 2) {
printTextScreen(11, 30, filler, shadowColorH);
printTextScreen(10, 30, filler, highlightColor);
} else {
printTextScreen(11, 30, filler, shadowColorD);
printTextScreen(10, 30, filler, dimmedColor);
}
for(i=0; i<1; i++) {
sceDisplayWaitVblankStart();
}
}
return 0;
}
OBJS = main.o graphics.o framebuffer.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBDIR =
LIBS = -lpspgu -lpsppower -lpng -lz -lm
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Background Changer
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
PSP开发指南第五课相关推荐
- PSP开发指南第5课
在学会架设开发环境,编写第一个程序,领略一些编程技巧,并且涉猎列一些经典程序之后,接下来我们开始第五课,你不要想这里有什么会让你感到惊讶的,这只是通过学习一些高级的概念来增强我们的编程技巧. 高级,这 ...
- Quartz.net官方开发指南 第五课: SimpleTrigger
如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在<?xml:namespace prefix = st1 ns = " ...
- 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...
视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...
- 开发指南专题五:JEECG微云快速开发平台代码生成器
开发指南专题五:JEECG微云快速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,需要先配置好本机的maven环境,并在eclipse中安装好m2ecl ...
- 【SQL Server】数据库开发指南(五)T-SQL 高级查询综合应用与实战
本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中. 本系列文章列表如下: [SQL Server] Linux 运维下对 SQL Server 进行安装.升级.回滚.卸载操作 [ ...
- Quartz.net官方开发指南 第十课: 配置、资源使用以及SchedulerFactory
Quartz以模块方式构架,因此,要使它运行,几个组件必须很好的咬合在一起.幸运的是,已经有了一些现存的助手可以完成这些工作. 在Quartz进行工作之前需要被配置的组件主要有: • ThreadPo ...
- 基于Linux和MiniGUI的嵌入式系统软件开发指南(五)
MiniGUI 1.1.0 版本引入的新 GDI 功能和函数 本文向读者展现了 MiniGUI 的最新开发成果,即在 MiniGUI 1.1.0Pre4 版本中引入的新的 GAL 和新的 GDI 功能 ...
- 蚂蚁区块链BaaS平台应用开发指南(五):JS SDK的接入
基于JavaScript SDK的接入 在上一节中,我们通过JavaSDK接入了我们的目标链并调用合约成功.在本节中,我们将通过JS SDK实现同样的调用.JS SDK可以集成在Web应用中,运行在浏 ...
- 05.ThreeJs开发指南-第五章-几何体
第五章 学习使用几何体 二维几何体: 一.PlaneGeometry:平面 var plane = new THREE.PlaneGeometry(width,height,widthSegments ...
最新文章
- Ubuntu 查看隐藏的文件
- 深度学习和几何(演讲提要)
- 从源码理解Redux和Koa2的中间件机制
- php 怎么开启错误提醒,php怎样开启错误提示
- HTMl5的sessionStorage和localStorage
- LintCode初级题——fizz buzz
- GTP时间管理的实践心得
- iOS(iPhone/iPad)开发新手必读
- MOSS 2010 无法同步用户配置文件
- 层级 z-index 透明opacity
- 程序员需要学些什么?程序员好考吗?
- Windows常用cmd命令总结
- 数据结构 笔记--向量 C++ 语言版 邓俊辉老师
- nginx配置多个一级域名https访问的配置
- 基于python/scipy学习概率统计(3):正态分布
- 啦啦啦一棵R语言圣诞树~
- 使用Python为人脸自动生成口罩
- Google analytics是什么,有什么作用
- 不同类型时钟CLK信号波形的产生、与时钟频率的关系
- python app mysql_使用App Engin连接到MySQL数据库
热门文章
- php与dreamweaver基础教程,Dreamweaver基础教程 基础技巧全面接触
- 关于android原生AlertDialog列表item样式修改问题
- 并查集经典应用之染色模型
- html中一段文字行间距设置,CSS如何设置文字行间距?
- Dump Windows password hashes efficiently
- 长春高中1对1补习班怎么收费?高三数理化家教电话
- 旋转狗头:Python如何读取STL文件,生成STL文件预览图(缩略图)之进化,动态旋转Gif图
- 常见花材的固定的方法有哪些_巧妙固定花材,让插花简单又有趣
- ubuntu网卡改名:包括ens-->eth和eth-->ens
- ubuntu 虚拟机设置无线上网