Work/PSP
[PSP_DEV 2] 반갑다 PSP~ Hello PSP 출력하기
kevin.
2007. 1. 5. 16:30
훔..언젠가 들었던 기억이 나긴 하는데.. 기원이 어디서 부터지...
프로그래밍을 하면서 Hello World!!! 를 찍는게 말이다..
어쨋든.. 여지껏 많은 언어들을 하면서 젤 첨 Hello~~ 부터 찍었던것 같다.. 누가 시킨것도 아닌데 ^^
다른 사람이랑 똑같이 하는게 싫어서 난 항상 약간 삐뚤어지게 했던것 같다.. 어떻게 했냐믄..
자바를 배울때.. Hello Java!
C++을 배울때.. Hello Cpp!
이제 psp를 하니까 Hellow PSP!!!
그럼 소스가 궁금하신 분들은 함 보시죠~
/*
* 이 소스는 아래에 주석과 같이 pspdev에서 배포한 sample 소스를 바탕으로 제작되었습니다.
*/
/*
* PSP Software Development Kit - http://www.pspdev.org
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* main.c - Basic PSPSDK sample.
*
* 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>
*
* $Id: main.c 363 2005-06-27 20:35:14Z tyranid $
*/
/* 자.. 우선 필요한 헤더를 포함해야 합니다. */
#include <pspkernel.h>
#include <pspdebug.h>
#include <stdlib.h>
#include <string.h>
* 이 소스는 아래에 주석과 같이 pspdev에서 배포한 sample 소스를 바탕으로 제작되었습니다.
*/
/*
* PSP Software Development Kit - http://www.pspdev.org
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* main.c - Basic PSPSDK sample.
*
* 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>
*
* $Id: main.c 363 2005-06-27 20:35:14Z tyranid $
*/
/* 자.. 우선 필요한 헤더를 포함해야 합니다. */
#include <pspkernel.h>
#include <pspdebug.h>
#include <stdlib.h>
#include <string.h>
/* 현재 모듈의 정보를 정의해줍니다.
* PSP_MODULE_INFO는 다음과 같이 정의되어 있답니다.
* PSP_MODULE_INFO는 다음과 같이 정의되어 있답니다.
* 처음에 적도록 되어있는 name이 XMB에서 PSP->GAME으로 들어갔을때 보이는 이름입니다.
* attribute는 모르겠고요 ^^;; major, minor version은 update때 모듈간의 관계를 파악하기 위해서..
* 버전 관리를 하려고 둔것 같습니다.
*/
PSP_MODULE_INFO("Hello PSP", 0, 1, 1);
* attribute는 모르겠고요 ^^;; major, minor version은 update때 모듈간의 관계를 파악하기 위해서..
* 버전 관리를 하려고 둔것 같습니다.
*/
PSP_MODULE_INFO("Hello PSP", 0, 1, 1);
/* 요놈은 메인 쓰레드의 attribute의 값을 설정하는 놈이라는데 optional이라네요..
* 뭐 해도 그만 안해도 그만이란 말이죵.. 그래도 한번 머라 되어있는지 볼까요?
* 요렇게 되어 있네요 ^^
*/
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
* 뭐 해도 그만 안해도 그만이란 말이죵.. 그래도 한번 머라 되어있는지 볼까요?
* 요렇게 되어 있네요 ^^
*/
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
/* 요넘은 디버그 메세지를 출력해주는 함수를 쓰기 편하게 이름을 새로하나 주는건데요..
* 보통 C에서 printf를 많이 쓰니까 이름을 하나 더 주는겁니다.
* printf("테스트 입니다\n"); 요렇게 쓴거하고
* pspDebugScreenPrintf ("테스트 입니다\n"); 요렇게 쓴거하고 똑같다는 거죠.
* 그럼 pspDebugScreenPrintf 요넘의 정의를 볼까요?
* 요넘은 좀 자세히 나왔네요.. c에서 printf 사용하시는거랑 같다고 보심됩니다.
*/
#define printf pspDebugScreenPrintf
* 보통 C에서 printf를 많이 쓰니까 이름을 하나 더 주는겁니다.
* printf("테스트 입니다\n"); 요렇게 쓴거하고
* pspDebugScreenPrintf ("테스트 입니다\n"); 요렇게 쓴거하고 똑같다는 거죠.
* 그럼 pspDebugScreenPrintf 요넘의 정의를 볼까요?
* 요넘은 좀 자세히 나왔네요.. c에서 printf 사용하시는거랑 같다고 보심됩니다.
*/
#define printf pspDebugScreenPrintf
/* 프로그램이 종료될 때 불릴 콜백 함수입니다.
* 홈 브류를 종료할 때 요 함수를 부릅니다.
* XMB로 나갈 때 사용한다고 써있죠~? 그리고 쓰레드 내에 있어야 이 함수가 작동한다네요..
* 보시면 아시겠지만 이 함수도 sceKernelCreateCallback으로 해서 쓰레드로 존재합니다.
*/
int exit_callback(void)
{
sceKernelExitGame();
* 홈 브류를 종료할 때 요 함수를 부릅니다.
* XMB로 나갈 때 사용한다고 써있죠~? 그리고 쓰레드 내에 있어야 이 함수가 작동한다네요..
* 보시면 아시겠지만 이 함수도 sceKernelCreateCallback으로 해서 쓰레드로 존재합니다.
*/
int exit_callback(void)
{
sceKernelExitGame();
return 0;
}
}
/*
* 게임 종료할 때 HOME 키를 누르면 빠져나갈지 물어보는 화면이 나오죠?
* 그걸 나오게 하기 위해서 콜백을 만들고, 등록하는 겁니다.
* 자.. 중요한 함수입니다. 홈 브류를 빠져나갈 수 있게 해주는 함수입니다.
* 설명을 읽어볼까요? exit callback을 등록해서 HOME 버튼을 활성화 하지만 요 안에다가
* sceKernelExitGame 함수를 부르면 쫑난다고 되어있군요..
* 여기 콜백 부분은 여기 써진걸 고대로 사용하시면 되요..
* 프로그램이 끝날 때 먼가 해주고 싶으시면 exit_callback 요 함수 안에다가 해주시면 됩니다.
* 게임 종료할 때 HOME 키를 누르면 빠져나갈지 물어보는 화면이 나오죠?
* 그걸 나오게 하기 위해서 콜백을 만들고, 등록하는 겁니다.
* 자.. 중요한 함수입니다. 홈 브류를 빠져나갈 수 있게 해주는 함수입니다.
* 설명을 읽어볼까요? exit callback을 등록해서 HOME 버튼을 활성화 하지만 요 안에다가
* sceKernelExitGame 함수를 부르면 쫑난다고 되어있군요..
* 여기 콜백 부분은 여기 써진걸 고대로 사용하시면 되요..
* 프로그램이 끝날 때 먼가 해주고 싶으시면 exit_callback 요 함수 안에다가 해주시면 됩니다.
*/
void CallbackThread(void *arg)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
}
}
/* 콜백 쓰레드를 만들어 줍니다.
* 대략 설명은 위 쪽부터 계속되는 거라 별반 다른게 없습니다.
*
쓰레드를 만들어주는 함수입니다.
* 아래 함수는 만든 쓰레드를 돌려주는 함수입니다.
*/
int SetupCallbacks(void)
{
int thid = 0;
* 대략 설명은 위 쪽부터 계속되는 거라 별반 다른게 없습니다.
*
* 아래 함수는 만든 쓰레드를 돌려주는 함수입니다.
*/
int SetupCallbacks(void)
{
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
/*
* message 출력을 위해 디버그 스크린을 초기화 합니다.
*/
int main(void)
{
pspDebugScreenInit();
SetupCallbacks();
}
/*
* message 출력을 위해 디버그 스크린을 초기화 합니다.
*/
int main(void)
{
pspDebugScreenInit();
SetupCallbacks();
printf("Hello PSP\n");
sceKernelSleepThread();
return 0;
}
}
012
쓰다보니 지저분 해졌네요..
소스만 보실분은 아래를 봐주세요 ^^
/*
/*
* PSP Software Development Kit - http://www.pspdev.org
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* main.c - Basic PSPSDK sample.
*
* 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>
*
* $Id: main.c 363 2005-06-27 20:35:14Z tyranid $
*/
#include <pspkernel.h>
#include <pspdebug.h>
#include <stdlib.h>
#include <string.h>
/*
* PSP Software Development Kit - http://www.pspdev.org
* -----------------------------------------------------------------------
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
*
* main.c - Basic PSPSDK sample.
*
* 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>
*
* $Id: main.c 363 2005-06-27 20:35:14Z tyranid $
*/
#include <pspkernel.h>
#include <pspdebug.h>
#include <stdlib.h>
#include <string.h>
PSP_MODULE_INFO("Hello PSP", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
#define printf pspDebugScreenPrintf
int exit_callback(void)
{
sceKernelExitGame();
return 0;
}
{
sceKernelExitGame();
return 0;
}
void CallbackThread(void *arg)
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
}
{
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
}
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 thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0)
{
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
int main(void)
{
pspDebugScreenInit();
SetupCallbacks();
printf("Hello PSP\n");
sceKernelSleepThread();
return 0;
}
{
pspDebugScreenInit();
SetupCallbacks();
printf("Hello PSP\n");
sceKernelSleepThread();
return 0;
}