                                                               Ƃ̂Ђ 2005/05/24




hellopsp, SimpleTurn, RIN (1.0 ... ) ̃\[Xɍ쐬Ă܂B
̏؂āAe҂̕Xɂ\グ܂B m(_ _)m


(񑩂łA{hLg̓eAc[ACuȂǁASĖۏ؂ł)


====================================================================================
------------------------------------------------------------------------------------
[eT]

	BMP to PSP ΁[
		rbg}bvt@CAhellopsp ̃\[XɂĂ bitmap.c `
		摜f[^쐬c[łB


	Ȃ񂿂ĕ`惋[`gTv
		摜t@C\֐QłBgkAANbsO@\B
		̊gk@\܂Bx`摬x orz


	Visual C++ 6 p
		PSP vOJ Visaul C++ łĂ݂悤CułB

------------------------------------------------------------------------------------
====================================================================================






====================================================================================
------------------------------------------------------------------------------------
[BMP to PSP ΁[] ver 1.2.2
------------------------------------------------------------------------------------
====================================================================================


hellopsp ̃\[X̕ɂ͂Ȃ݂ bitmap.c ̂悤ȃf[^t@C쐬
܂Brbg}bvt@ChbOhbvƁAtH_ .c 쐬
BWindows XP œ삵܂B




hellopsp  bitmap 

----------------------------------------------
// bitmap image for Hello World PSP

const unsigned short image_seclogo[]={
0x5881,0x54E6,0x54E6,0x54E6,0x54E6, ...
...
... ,0xA0FD,0xA0FD,0xA0FD,0xA0FD,0xA0FD,
};
----------------------------------------------

̂悤 const unsigned short ^̔zɂȂĂāAsNZf[^Ă܂B
1 sNZ̃f[^ RGB555  2 oCgłB

	Ȃ݂ɁArbg̕т
	Windows ł xRRR RRGG GGGB BBBB ł
	PSP     ł xBBB BBGG GGGR RRRR łB

f[^͍ォ牡ɑĐ܂ԂĂ܂BBMP to PSP ΁[ ́AL
`x[Xɂt@C쐬܂B


IvVƂāA

	Econst  (ON)
	EoCit@Co (OFF)
	EoCit@C̓gGfBAŏo (ON)
	Et@CƔz񖼂̐擪 image_  (ON)

܂Aʂ͂̂܂܂ővłB


Econst 
	bitmap.c ̔z const unsigned short Ȃ̂ŁA킹Ă܂B
	W ON łB


EoCit@Co
	hellopsp ł͉摜t@C (.c)  #include ă\[XɊ܂߂Ă܂A摜t@
	CƃrhɎԂ肵܂Ast@C EBOOT.PBP 傫
	Ȃ肷 PSP ̃I (32MB ?) ɂƂĖ肪łĂ܂BV[ɍ킹
	IɃt@CǂݍŃf[^ւ邱Ƃ̎iƂȂ܂B̂
	߂̃oCit@C (.bin) 쐬܂B
	W OFF łB


EoCit@C̓gGfBAŏo
	PSP  Windows PC (Ƃ x86 CPU) Ɠ悤ɁAgGfBA[h
	CPU 𓮍삳Ă悤ł (Ԃ)BāAooCif[^g
	GfBAWɐݒ肵Ă܂B
	W ON łB


Et@CƔz񖼂̐擪 image_ 
	bitmap.c ̔z񖼂 image_ Ŏn܂`Ă̂ŁA킹Ă܂B
	ON ɂƁAt@C image_ OŔz񖼂ƃt@C쐬܂B
	Ⴆ Sample.bmp ϊƁAt@C image_Sample.c ɂȂAz񖼂
	image_Sample[] = { ... ƂȂ܂BȂAt@Cɓ{Ȃǂgpꍇ
	`FbNĂȂ̂ŁAKt@C Ascii `ɂĂB
	W ON łB


ȂAݒ肵IvV͕ۑȂ̂ŒӂĂB


ϊłrbg}bvt@ĆA8/24/32bpp ̃t@CłB4bpp ȉA16bpp 
͎gpł܂B܂A8bpp ͖k (RLE ƂȂAx^` = 悤͕ʂ
`) ̂̂̂ݑΉĂ܂ (G[`FbNĂ܂)B


[24bpp ̏ꍇ]
	24bpp ̃t@ĆARGB555 ɕϊďo͂܂Bhellopsp  bitmap.c ɑ
	܂B


[32bpp ̏ꍇ]
	32bpp ̃t@C RGB555 ɉAA8(At@ 8bpp) o͂܂B.c ł́A
	RGB555 

		image_Sample[] = {...};

	̃f[^̑

		image_Sample_alpha[] = {...};

	쐬܂BAt@ォ牡ɑf[^łB1 sNZ 1
	oCgł (const unsigned char)BoCił́At@C̐擪 RGB555 
	f[^oꂽɁAA8 ̃f[^܂B
	Ȃ 32bpp ̃f[^ Adobe Photoshop ō쐬ł܂B


[8bpp ̏ꍇ]
	8bpp ̃t@ĆARGB555 ̃pbgf[^ő 256 񂾌A1 sNZ
	 1 oCg̃sNZf[^ (mɂ́ACfbNX) ܂B
	̓Iɂ

		unsigned short bmp_Sample_palette[]={...};

	̃f[^

		unsigned char bmp_Sample[]={...};

	܂BoCio͂ꍇ̏ԂłB


[F̂]
	{c[ł́AF (AF) ̎w͂܂BF (mɂ̓Cfb
	NX) 𓧖FɎg (邢͎gȂ) ́AvO}̊Ǘɂ䂾˂܂B
	܂A8bpp ̃oCit@CoApbg̂Ƃ
	o܂B








====================================================================================
------------------------------------------------------------------------------------
[Ȃ񂿂ĕ`惋[`]
------------------------------------------------------------------------------------
====================================================================================


`֌W̊֐QĂ݂܂BFȃ\[XɂȂĂ̂ł̂܂
ĝ͓ł傤A炩͗LpȂ̂邩Ǝv܂B
`݂̂Ȃ̂ Sound XbhƂ͈؂܂ (ŋ߂̃\[X͂܂ĂȂ
ŁA̒ł͏񂪌Â܂܂ł)B

܂APSP ̎@ĂȂ̂ŁAǂ̂炢̑xœ삷̂słB1 hb
gƂɂȂ̉Z C ݂̂ōsĂ̂ŁAȂx̂Ǝv܂Ă
mɒxł (L֥`)


q悤ɃNbsOĕ`̈ApgBitBlt() łޕ`͂
gAȂǂ̑΍􂪕KvłB


 Ȃ݂ɁA]@\͂܂
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


myproc.h, myproc.c Ƀ\[XƂĂ܂B


L wBMP to PSP ΁[x ō쐬f[^gƂɂĂ܂B
ȓ

	ENbsO
	E_ύX
	E㉺E]
	EPxAAZ
	Egk
	Ex

łB


ȂApg.c ɂ mh_print() g

	void mh_printEx(int x,int y,char *str,int col, int mag256X, int mag256Y);

 mh_print() g mag {̕\ł֐łA㉺E]APxA
AZɂ͑ΉĂ܂ (NbsOƊgk̂ݑΉł)B




Tv main.c Ɋ{IȎĝŁAQlɂĂB


[{t[]

E
	{CugOɁAK

		nDrawRoutineInit();

	sĂB


E摜f[^pӂ
	Lc[Ȃǂ rbg}bv֘Ãf[^pӂĂꍇ

		#include "xxxx.c"

	Ȃǂǉ܂BoCif[^ǂݍނƂ͂炩ߏ[ȑ傫ƁA
	Ή^̔zpӂĂ

		loadBinaryFile(char *file, unsigned char *p, long size);

	Ȃǂŉ摜[h܂B


E摜f[^o^
	{Cuł͉摜f[^wp^[xƁw`bvxŊǗ܂Aǂݍ
	f[^ǂ֘At邩w肵܂B

	{Cuł

		 8bpp 摜				: Indexed p^[
		16bpp 摜				: RGB555 p^[
		16bpp + At@̉摜	: RGB555A8 p^[

	ƌĂт܂B

		setPattern_Indexed(int num, unsigned short *data_palette, ...
		setPattern_RGB555(int num, unsigned short *data_data, ...
		setPattern_RGB555A8(int num, unsigned short *data_data, ...

	摜̎ނɂĊ֐g܂BΉ֐ƈɈقȂ̂Œ
	ĂB
	{֐̓f[^ǗĂ邾Ŕz̃f[^Rs[肷邱Ƃ
	Ȃ̂ŁAԂ͂܂BIndexed p^[ł͓IɃpbgAhX
	ύX (́AقȂpbggpp^[쐬Ă) ƂŐF
	LȒPɎł܂B
	ȂAwp^[xƂ 1 t@C̉摜f[^܂܂Aw`bvx̓p
	^[  x c ɕPʂłB̊֐ŕύX̂ŁAIɃ`bv
	TCYύXł܂B


EFw肷
	Indexed p^[ł͓Fwł܂BftHgł͓F͖łB
	FłύXł܂B


ENbvTCYw肷
	_ł̉X PSP vO~O̓n[hEFA@\găoo`AƂ
	킯ɂ͂Ȃ̂ŁAP/ECE  WonderWitch ̂悤ɁAVRAM  1 hbgՂ
	Ղƒnɕ`Kv܂BPSP  CPU ͌\łAJ[ŉʂL
	̂Ōǃp[[ł͂܂B̂߁A`̈ (͂͒ቺ
	܂) }̂̎łB
	ftHgł͉ʑŜ`̈ɂĂ܂A

		setScreenClip(int left, int top, int right, int bottom);

	ŔCӂ̃TCYɐݒ肵܂BȂApg.c ɂ֐Ȃǂ̓Nbv͖Ȃ̂ŁA
	ꍇɂĎgĂB


E_ʒuύX
	NbvꍇAʂ̗̍̈gAɎĂ邩AȂǂ̑I
	܂ALN^̍W̊ǗȂǂ₱Ȃ邱Ƃ܂B

		setScreenOrigin(int left, int top);

	Ō_ύX΁AvOɂ͍W (0, 0) x[Xɂ΂悢 (܂A
	̂܂) ̂ŁAǗyɂȂ܂B


E`悷
	\ PSPDRAWSTRUCT dst ɕKvȃp[^ݒ肵A

		pgDraw(&dst)

	ŕ`悵܂B
	`@ƂāA㉺E]AAZAPxAgkIł܂B
	p[^ɃAt@w肷Kv肷̂ŁAݒ肵ŶȂ悤ɒ
	ĂB
	gk̃p[^ 256  (x1) łB܂ 512 = x2, 128 = x1/2, 384 =
	x1.5 ̂悤ɂȂ܂Bŏ 1, ő 131072 łB131072 = 256 * 512A܂
	1 hbg 512 {̂ŉʂ𕢂܂BĂȏłĂ
	Ӗ낤ƂƂł̐łBǁ[ĂƂłKv
	\[XĐɘaĂB


Etbv
	ʏ̃AvƓ悤

		pgScreenFlipV();

	gĉʂŏIXV܂B



[⑫]
Oq̒ʂA1 hbgƃv`v`ƉZĂAZug킸 C łĂ
̂ŁAx͑ϒxłBʂ𕢂قǂ̑傫LN^ő唗́AƂ
Ƃł͑xʂŃłB




[Tv]

Cygwin  PS2Dev CXg[ApXݒ肳Ă makefile  
make ΃rhł܂B
RGB555A8 p^[̃At@gʂAIndexed p^[̃pbgύX邱
ŐFႢLN^\Ag啶`AłB
START łԂI܂B







====================================================================================
------------------------------------------------------------------------------------
[Visual C++ 6 p]
------------------------------------------------------------------------------------
====================================================================================


wPSP ̃\[X Win32 AvƂ VC ŊJrhA[؂ł make 
@PSP  ELF oCix

Ƃt[Ɉ߂Â߂̕@łB1 ̃\[Xt@C Windows ł PSP 
RpCł悤ɂ悤ƂƂłB VC Œ ELF oCi
ƂƂł͂܂B




LTvɂ MFC tH_A̒ VC p̃\[XĂ܂BPSP 
\[X̃tH_ɂ́Aؓʂȃt@C͂܂B

ȍ~APSP tH_Ƃ PSP p̃\[XWJꂽtH_AMFC tH_Ƃ PSP
tH_̒ɂ MFC \[X̃tH_Ӗ܂B



EMFC tH_ SampleDlg.dsw N܂B


E\[X SampleDlgDlg.cpp J܂Bォ 40 sڂ肪

	//#define __USE_THREAD

ƂȂĂ邱ƂmF܂B̃RgOƃXbhœ̂łA
G[Ŏ~܂u[N|CgŎ~߂AVC ƃt[Y邱Ƃ悭
̂ŁAʏ̊J͔XbhōsĂBŏIIȊi𓾂鎞ɂ
RgOărh܂BRELEASE rhł̓Xbh ON ɂȂ悤ɂȂĂ
B

XbhōsƂ̕Q́ACxghuœȂ̂ŃEBhËړ
j[AIA Windows AvƂĂłēR̂Ƃł܂B
VC NbN Shift + F5 A [fobO̒~] Ŏ~߂ĂB
VC ƃt[ŶɔׂA܂B

ʃLv`鎞̓XbhɂKv܂A肻̂܂܃t[
YċȂ悤ɁArhɎsO͈x VC IďԂۑĂ
VC ċNAɍ܂B


EMFC tH_ɂ .cpp ̂AႦ pg.cpp 

==============================
	#include "stdafx.h"
	#include "../pg.c"
==============================

ƂVvȂ̂łBPSP ̃\[Xł邾CɂƂRZvg
łBVɃt@Cǉ鎞́APSP tH_ɂ .c AMFC tH_ɂ
bv (?)  .cpp ǉAvWFNgɂ .cpp ǉ܂B
@ .c ɊJ܂񂪁AႦΏ #include "../pg.c" ̍sŉENbN
 whLg ../pg.c JxƂΊJ܂BȂA.c ǉȂ
́APSP tH_ makefile  OBJS Ȃǂɂǉ̂YȂłB


EǂĂ PSP  Win32 ŏꍇȂƃ_ȃP[X܂BႦ΁A
pg.c 

	char *pgGetVramAddr(unsigned long x,unsigned long y)

֐ Win32  PSPŕĂ܂BVRAM AhX݂Ȃ̂ł͂ǂ悤
܂B #ifdef ƂŕĂ΁APSP  make ł肠܂B
tɌƁA傫ςKv̂̂͂̉ӏłBALXgȂ
΃G[ɂȂA܂邽߂ ( ) ł肷Kvӏ
(\) ܂BAxĂ΂̂ł܂傤B̏ꍇłꍇ
킯Ă܂B


Eł EXE t@Cł̃L[źAPSP Emulator 0.6 ȍ~̂̂Ɠɂ
܂B


EPSP ̃VXeR[֘Â PSPThread.cpp łBThreadFuncPSP( ) 
 xmain() ̎sȍ~APSP \[Xɓ삪ڂ܂B\[XɂĂ argv 
̂̂ŁAʂ̃\[XgƂ͓KCĂBVXeR[
 (Ⴆ void pspDisplayWaitVblankStart() Ȃ)  Win32 ł炵Ă
AK̂ŁAD݂ɉĒǉCĂB
Ȃ݂ VSNNC ҂͒P 17msec قǂ̃TCNŕʃXbh𓮂ÃJE^
̂҂Ă邾łB


ERIN ɂ string.h, string.c ܂A MFC ƂԂĂ܂̂ŁAWin32
ł̓[hȂȂǂ̏ꍇĂ܂B


Ehellopsp, SimpleTurn, RIN ̃\[Xɍ\Ă܂Aꂼɍׂȍق
̂ŁÃCuɓ˂񂾂炷rhłAƂƂ͂܂B
֐̐錾ʒuwb_[ȂǁA傱傱قȂ̂ł炩Kv܂B
AC hellopsp, SimpleTurn, RIN (Âo[W) ƂɁÃCu
rhł܂BV\[XQbgĂÃVXeR[ƂȂ΁A
Win32 AvƂărhłł傤B

( iKł͕`֌W΂Ă߁ATEhAR[obNAvZX֌W
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ł̂ŁAŋ߂ RIN Ȃǂ̓rhł܂BAPSPThread.cpp Ɏ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ŒǉΉ\ł)
~~~~~~~~~~~~~~~~~~~~~~


E܂łŏII PSP  ELF oCîړIȂ̂ŁAR[hƂ
PSP p̃\[X (.c) ɂ Win32 API, MFC (CString, DWORD Ƃ) ȂǂgȂł
 (PSP ɏĂ)BRcẮADOS J PSP tH_ɃpXύX
ĂāAX make ărhł邩mF邱ƂłB
Ⴆ

	for(int i=0; ...



	int i;
	for(i=0, ...

ɂȂ VC  OK ł make ň܂Bmalloc() ȂǂgȂ悤łB


EȂɂԂ PSP ĂȂ̂ŁAۂ̓삪ǂȂ̂킩܂BPSP 
Emulator ł͓삵Ă̂ŁAȂƂ͂ĂȂƎv܂B
------------------------------------------------------------------------------------
