--------------------------------------------------------

Shinobi Library ver 0.41   1998/05/06

               Copyright 1998 SEGA Enterprises, LTD.
--------------------------------------------------------

ڎƒӎ
  SDKŃT|[g֐ꗗ

  VXe֘A
    EsbInitSystem           ShinobiCȕ
    EsbExitSystem           ShinobiVXȅI
  t@CANZX֘A
    EgdFsInit               t@CVXȅ
    EgdFsCreateDirhn        fBNgnh̎擾
    EgdFsLoadDir            fBNg̎擾
    EgdFsChangeDir          JgfBNg̈ړ
    EgdFsOpen               t@C̃I[v
    EgdFsGetFileSize        t@CTCY̎擾
    EgdFsRead               t@C̃[h
    EgdFsClose              t@C̃N[Y
  Ǘ
    EsyMallocInit           Mallocp̃q[v̈̊mۂƐ錾
    EsyMalloc               ̊m
    EsyFree                 ̊J
  ytF֘A
    EpdGetPeripheral        ytFf[^̎擾
    EpdGetPeripheralError   ytFXe[^X̎擾


yPz
  L֐̒ŁAgdFsInitƁAsyMallocInitynjInitSystem
Cu֐sbInit̒Ŏs܂B
̒񋟂ɂĂ͏̎ɂAsbInitSystem֐̃\[X񋟂
Ă܂Ã[XɂsbInitSystem֐̃\[X
J܂B
]āA{SDKɂẮÅ֐gčׂݒso܂B
AAsbInitSystemɗ^͂̂܂njInitSystemɓn܂̂ŁA
SET2pɃR[fBOĂnjInitSystemsbInitSystemɏ鎖ŁA
NinjaɂȂ܂B
΂炭̊Ԍsւ܂A\ߌ䗹B
yQz
SET2SET4ւ̈ȍ~Ɋւ菇ɂẮA
uset2to4.txtv
K悤肢܂B
yRz
{Cuł́ABZNVȍ~CũAP[gp
(AP[g֐usyMallocvmۂ郁)Ƃ
mۂ邽߁ABZNVȍ~Ƀ[UZNV݂ĂꍇA
f[^j󂳂\܂B
ƎɃ[UZNVzuꍇAKBZNVOɗ悤
ĂB
ySz
̃fBNgɑ݂A
system.txt
filesys.txt
memory.txt
per.txt
͉ǐ߂邽߂ɖ{hLg̊eubN؂oĎ^
̂łB
éA{hLgƑSłB




VXe֐Q



y0. Tvz

KATANÃn[hEFȀSHINOBICu𗘗p\ȏԂ
܂B
SHINOBICuɂ͂̏֐݂܂Ȁ֐
K؂ȏŌĂяoAƂʓIȐݒɂ܂B
Ȁ֐͏IɃ\[XJ܂̂ŁACu菇
̃TvƂėp鎖o܂B

̃[Xł́A֐̃\[X͌JĂ܂B̃[X
\[XJ܂B{֐̒ŁAnjInitSystemĂяo܂̂ŁA
SET2JłnjInitSystem͖{֐ɒuĂB

y1. f[^^z
y2. ֐dlz
m֐nvoid sbInitSystem( Int mode, Int frame, Int Count );
ḿnmode 
          ʃ[h(𑜓x)
          ʂ̉𑜓xw肵܂ 
        frame
          t[obt@[h
          t[obt@̃J[[hݒ肵܂ 
        count
          t[JEg
          t[1/60bPʂƂlŎw肵܂ 
mónȂ 
m߂lnȂ 
m@\nn[hEFAACugp\ȏԂɂ܂B
        ܂AŁAnjInitSystemĂсAʉ𑜓xw肵[hɂ܂B
        2DNbvGAʃTCYƓɂ܂B
        ZNbvA-1.0~-60000.0ɂ܂B
        3D̃XN[eʂ̋500ɂ܂B
        AXyNgXYA1.0ɂ܂B
        J[[hANJD_COLOR_MODE_NORMAL ɂ܂B

        t[JEg1/60PʂƂlŐݒ肵܂B
        Ⴆ2ݒ肷ƁA1/30bɃt[`FW܂B
        t[`FẂAnjWaitVSync֐ōs܂B

        ݒłʃ[h͈ȉ̒ʂłB
       +-------------------------------+------------------------------+
       | ϐ                        | ʃ[h                   |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_VGA            | VGA                          |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_320x240_NTSCNI | NTSC mC^[[X 60Hz |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_320x240_NTSCI  | NTSC C^[[X 30Hz     |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_640x240_NTSCNI | NTSC mC^[[X 60Hz |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_640x240_NTSCI  | NTSC C^[[X 30Hz     |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_640x480_NTSCI  | NTSC C^[[X 30Hz     |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_320x240_PALNI  | PAL mC^[[X 50Hz  |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_320x240_PALI   | PAL C^[[X 25Hz      |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_640x240_PALNI  | PAL mC^[[X 50Hz  |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_640x240_PALI   | PAL C^[[X 25Hz      |
       +-------------------------------+------------------------------+
       | NJD_RESOLUTION_640x480_PALI   | PAL C^[[X 25Hz      |
       +-------------------------------+------------------------------+


        t[obt@[h͈ȉ̒ʂłB
       +-------------------------------+
       | NJD_FRAMEBUFFER_MODE_RGB565   |
       +-------------------------------+
       | NJD_FRAMEBUFFER_MODE_RGB555   |
       +-------------------------------+
       | NJD_FRAMEBUFFER_MODE_ARGB4444 |
       +-------------------------------+
       | NJD_FRAMEBUFFER_MODE_ARGB1555 |
       +-------------------------------+
       | NJD_FRAMEBUFFER_MODE_RGB888   |
       +-------------------------------+
       | NJD_FRAMEBUFFER_MODE_ARGB8888 |
       +-------------------------------+

mgpn
       sbInitSystem( NJD_RESOLUTION_VGA, NJD_FRAMEBUFFER_MODE_RGB565, 1 ); 
       ShinobiCuA
       ʉ𑜓xVGA(640x480)A1t[A1/60bƂB

mln
        vO̍ŏɕKsĂB
        n[hEFA̍\ɂAݒłȂʃ[h܂B 
        ܂ŁAnjInitSystemōsĂ̂́A{֐ɍւĂB
        njInitSystemƂ܂ł̂ŁA֐ê݂ύX
        lɓ삳鎖o܂B
        {֐̃\[X͍SDKɂĂ͊J܂B
        SDKł́A̓̕IuWFNgt@Č`Œ񋟂܂A
        t@CVXegꍇƎgȂꍇł́ANIuWFNg
        t@CقȂ܂B
          t@CVXe𗘗pꍇ
            sbinit.obj
          t@CVXe𗘗pȂꍇ
            sbinitn.obj
        NĂB

        ΂炭̊ԁAsւAςɐ\󂠂܂񂪁A
        낵肢܂B

----------

m֐nvoid sbExitSystem( void )
ḿnȂ
mónȂ
m߂lnȂ
m@\nVXeI܂B
        njExitSystemɑウĎsĂB




t@CVXe֐Q



y0. Tvz

GD-ROM ̃ANZX@\񋟂܂B
EfBNg̃ANZX
Et@C̃I[v/N[Y
Et@C̓ǂݍ(A)

y1. f[^dlz


s1.1 萔t

  Seek mode
    GDFS_SEEK_SET
    GDFS_SEEK_CUR
    GDFS_SEEK_END

  Status
    GDFS_STAT_IDLE
    GDFS_STAT_COMPLETE
    GDFS_STAT_READ
    GDFS_STAT_SEEK
    GDFS_STAT_PLAY
    GDFS_STAT_BUSY
    GDFS_STAT_ERR
    GDFS_STAT_FATAL
    GDFS_STAT_UNDEF

  Errors
    GDFS_ERR_OK
    GDFS_ERR_RESET
    GDFS_ERR_INIT
    GDFS_ERR_DIRREC
    GDFS_ERR_CANTOPEN
    GDFS_ERR_NOTFOUND
    GDFS_ERR_NOHNDL
    GDFS_ERR_ILLHNDL
    GDFS_ERR_NOTDIR
    GDFS_ERR_DIROVER
    GDFS_ERR_BUSY
    GDFS_ERR_32ALIGN
    GDFS_ERR_SEEK
    GDFS_ERR_OFS
    GDFS_ERR_ILLTMODE
    GDFS_ERR_ILLREQ
    GDFS_ERR_READ
    GDFS_ERR_NOTREAD
    GDFS_ERR_RDTOUT
    GDFS_ERR_TOUT
    GDFS_ERR_EOF
    GDFS_ERR_TRAYOPEND
    GDFS_ERR_HWARE
    GDFS_ERR_MEDIA
    GDFS_ERR_RECOVER
    GDFS_ERR_PROTECT
    GDFS_ERR_ABORT
    GDFS_ERR_NOTREADY
    GDFS_ERR_UNITATTENT
    GDFS_ERR_FATAL
    GDFS_ERR_UNDEF



s1.2 f[^^t
  GDFS         ...  t@Cnh
  GDFS_DIRREC  ...  fBNgR[hnh



s1.3 }Nt
  GDFS_WORK_SIZE(x)
    :  x ... ɃI[vt@C
    Ӗ: KvƂ郏[Nobt@TCY
  
  GDFS_DIRREC_SIZE(x)
    :  x ... i[fBNgGg
    Ӗ: KvƂfBNgR[hobt@TCY


y2. ֐dlz
s2.1֐ꗗt
+---------------+-----------------------------------+
|֐           |@\                               |
+---------------+-----------------------------------+
|gdFsInit       |t@CVXȅƃ}Eg |
+---------------+-----------------------------------+
|gdFsLoadDir    |fBNg̎擾             |
+---------------+-----------------------------------+
|gdFsChangeDir  |JgfBNg̕ύX         |
+---------------+-----------------------------------+
|gdFsOpen       |t@CJ                     |
+---------------+-----------------------------------+
|gdFsGetFileSize|t@CTCY̎擾               |
+---------------+-----------------------------------+
|gdFsRead       |t@C̓ǂݍ                 |
+---------------+-----------------------------------+
|gdFsClose      |t@C                   |
+---------------+-----------------------------------+


s2.2֐APIt
----------

m֐nSint32  gdFsInit(Uint32 max_open, void *gdfs_work, Uint32 max_dirent, void *gdfs_dirrec)
ḿnmax_open     ... ɃI[vłt@C
        gdfs_work    ... [NGÃ|C^ ([U[̈悩)
        max_dirent   ... JgfBNg̃Gg
        gdfs_dirrec  ... JgfBNg̃obt@ ([U[̈悩)
mónȂ
m߂lnGDFS_ERR_OK ... I
          ̑      ... G[
m@\nCȕB
mgpn
           Uint8 gdfswork[GDFS_WORK_SIZE(8)];
           Uint8 gdfscurdir[GDFS_DIRREC_SIZE(64)];

           gdFsInit(8, gdfswork, 64, gdfscurdir);

mӁngdfs_work  32 Byte align łȂ΂Ȃ܂B
        {֐́AsbInit֐Ŏs܂B
        SDKł́AsbInit֐̃\[XvO͌J܂񂪁A
        SDKł́AsbInit\[XJt@CVXȅɐݒ
        ύXł悤ɂȂ\łB
        sbInitł̃ftHgl͈ȉ̒ʂłB
          I[vłt@CF8
          [NGAւ̃|C^    FO[oϐugdfsworkv
                                        Uint8 gdfswork[GDFS_WORK_SIZE(8)];
          JgfBNg̃GgF1024
          JgfBNg̃obt@FO[oϐugdfsurdirv
                                     Uint8 gdfscurdir[GDFS_DIRREC_SIZE(1024)];

----------

m֐nGDFS_DIRREC gdFsCreateDirhn(void *gdfs_dirrec, Uint32 max_dirent)
ḿngdfs_dirrec  ...  fBNg̃obt@
      max_dirent   ...  fBNg̃Gg
mónȂ
m߂lnfBNgR[hnh
m@\nfBNgnh𐶐
mgpn
      Uint8 dirbuf[GDFS_DIRREC_SIZE(64)];
      GDFS_DIRREC g_dir;

      g_dir = gdFsCreateDirhn(dirbuf, 64);
mӁnfBNgGg͍Œ 3 KvłB
        fBNgɂ͕KgwfBNgA
        efBNgwfBNg擪ɒuĂ܂B
        t@C 3 Ԗڂ̃Ggȍ~ƂȂ܂B

----------

m֐nUint32  gdFsLoadDir(Sint8 *dirname, GDFS_DIRREC gdfs_dirrec)
ḿndirname      ...  fBNg
móngdfs_dirrec  ...  fBNgR[hnh
                        (NULL ̏ꍇ̓JgfBNg)
m߂lnGDFS_ERR_OK ... I
          ̑      ... G[
m@\nfBNgR[hǂݍށB
mgpn
          /* Tv 1 */
          /* MOVIE directory  g_dir ֓ǂݎ */
          Uint8       dirbuf[GDFS_DIRREC_SIZE(64)];
          GDFS_DIRREC g_dir;

          g_dir = gdFsCreateDirhn( dirbuf, 64 );
          gdFsLoadDir("MOVIE", g_dir);

          /* Tv 2 */
          /* JgfBNg DATA directory ֈړ */
          gdFsLoadDir("DATA", NULL);

----------

m֐nUint32 gdFsChangeDir(Sint8 *dirname)
ḿndirname  ...  fBNg
mónȂ
m߂lnGDFS_ERR_OK ... I
          ̑      ... G[
m@\nJgfBNgύXB
mgpn
          /* JgfBNg DATA directory ֈړ */
          gdFsChangeDir("WORK");

----------

m֐nGDFS  gdFsOpen(Sint8 *fname, GDFS_DIRREC gdfs_dirrec)
ḿnfname        ...  t@C
        gdfs_dirrec  ...  t@CfBNgR[hnh
                          (NULL ̏ꍇ̓Jg猟)
mónȂ
m߂lnNULL      ...  s
          ȊO  ...  t@Cnh
m@\nt@C̃I[vB
mgpn
         /* Tv 1(JgfBNg̃t@CɃANZXƂ) */
         GDFS gf;

         gf = gdFsOpen("A.BIN", NULL);

         /* Tv 2(TufBNg̃t@CɃANZXƂ) */
         GDFS gf;
         Uint8 dirbuf[GDFS_DIRREC_SIZE(64)];
         GDFS_DIRREC g_dir;

         g_dir = gdFsCreateDirhn(dirbuf, 64);
         gdFsLoadDir("MOVIE", g_dir);
         gf = gdFsOpen("SMP.MOV", g_dir);

----------

m֐nBool  gdFsGetFileSize(GDFS gdfs, Uint32 *fsize);
ḿngdfs     ...  t@Cnh
món*fsize   ...  t@CTCY (oCg)
m߂lnTRUE / FALSE
m@\nt@CTCY擾B 
mgpn
          GDFS gf;
          Uint32 flen;

          gf = gdFsOpen("TEST.BIN", NULL);
          gdFsGetFileSize(gdfs, &flen);

----------

m֐nSint32  gdFsRead(GDFS gdfs, Uint32 nsct, void *buf)
ḿngdfs     ...  t@Cnh
        nsct     ...  ǂݍރZN^
        buf      ...  i[obt@
mónȂ
m߂lnGDFS_ERR_OK ... I
          ̑      ... G[
m@\nt@C̓ǂݍ (A)
mgpn
          GDFS gf;
          Uint32 buf[32*2048/4];

          gf = gdFsOpen("TEST.BIN", NULL);
          gdFsRead(gf, 32, buf);
          gdFsClose(gf);

----------

m֐nvoid  gdFsClose(GDFS gdfs);
ḿngdfs   ...  t@Cnh
mónȂ
m߂lnȂ
m@\nt@C̃N[YB
mgpn
          GDFS gf;

          gf = gdFsOpen("TEST.BIN", NULL);
          gdFsClose(gf);



}lWg֐Q


y0.Tvz
  OS݂̉ȂSHINOBICuɂāÅǗs܂B
֐ȊO̎dĺA֐̖̂OقȂȊÓACW֐́umallocv
ƓłB

y1.f[^^z
y2.֐dlz
s2.1֐ꗗt
+------------+------------------------------------------------+
|֐        |@\                                            |
+------------+------------------------------------------------+
|syMallocInit|Ǘ֐̗p郁GÅmۂƐ錾|
+------------+------------------------------------------------+
|syMalloc    |̊m                                    |
+------------+------------------------------------------------+
|syFree      |̊J                                    |
+------------+------------------------------------------------+


s2.1֐APIt
m֐nVoid syMallocInit(Void *heap, Uint32 size);
ḿnheap ... ǗC̈̐擪AhX
        size ... ǗCTCY
mónȂ
m߂lnȂ
m@\nsyMalloc CuɊǗC̈w肵A
        Cu܂B
        {֐́AsbInit֐Ŏs܂B
        SDKł́AsbInit֐̃\[XvO͌J܂񂪁A
        SDKł́AsbInit\[XJAq[v̐擪̈yуTCY
        ύXł悤ɂȂ܂B
        sbInit֐ł̃ftHgl͈ȉ̒ʂłB
          q[v̈̐擪AhXFBZNV̏I
          q[ṽTCY          F̍Ō܂
mӓ_n{֐́ABZNVȍ~AP[gԂƌȂA
          ̓e܂BABZNVȍ~Ƀ[U
          ZNV݂ĂꍇAĂ܂܂B
          [UZNV蓖Ăۂ́AKBZNVOɒu
          Kv܂B

----------

m֐nVoid *syMalloc(Uint32 size);
ḿnsize ... vTCYibyte)
mónȂ
m߂lnmۂ̈ւ̃|C^
          NULL ̏ꍇ́Amێs
m@\nC̕W֐malloc(size) ƓłB
        {֐͕K32oCgACgŃmۂ܂B
        f[^TCY32oCgoE_Œ`鎖ŁÂ悢
        AP[V\łB

----------

m֐nVoid syFree(void *ap);
ḿnJ̈|C^
mónȂ
m߂lnȂ
m@\nfree(*ap)Ɠ




ytFf[^擾֐Q



y0. Tvz

s0.1 Rg[f[^̎擾t

foCXf[^̎擾
	foCXf[^擾ɂ́A֐pdGetPeripheral()gp܂B

	Ď擾\̂̃oQƂ邾ŁAeՂɃRg[
	͂𓾂邱Ƃł܂B


y1. f[^dlz

s1.1 \̎dlt

PDS_PERIPHERAL	\
`	typedef struct {
	Uint32 id;
	Uint32 support;
	Uint32 on;
	Uint32 off;
	Uint32 press;
	Uint32 release;
	Uint16 r;
	Uint16 l;
	Sint16 x1;
	Sint16 y1;
	Sint16 x2;
	Sint16 y2;
	Sint8* name;
	void* extend;
	Uint32 old;
} PDS_PERIPHERAL;
	Rg[pbh̏Ԃi[\̂łB

o
id       foCXID
support  {^Eo[̃T|[g
on       fW^{^
off      fW^{^(])
press    fW^{^_EGbW
release  fW^{^AbvGbW
r        AiOR̒l(0`255)
l        AiOL̒l(0`255)
x1       AiOX1̒l(-128`127)
y1       AiOY1̒l(-128`127)
x2       AiOX2̒l(-128`127)
y2       AiOY2̒l(-128`127)
name     foCX
extend   gf[^AhX(gp)
old	 \

Q	pdGetPeripheral()

s1.2 foCXIDƃfoCX́t

	擾\̂ɂ́AfoCX̎ʂ\IDƁÂ̖i[Ă܂B
Maple Busdlł͎擾łfoCXID͕GȃtH[}bgɂȂĂ邽߁A
AvP[V舵ɂ͕słB
{Cuł͂ȗAȉ̂悤ɒ`܂B

+----------------------+--------------------+------------------------------+
| foCX             |foCXID (id)     |foCX̕ (name)     |
+----------------------+--------------------+------------------------------+
|WRg[pbh|PDD_DEV_CONTROLLER  |foCX̂i      |
+----------------------+--------------------+------------------------------+


s1.3 foCX̃T|[g{^t

	Rg[nfoCXɂ́A܂܂ȃfoCX݂܂B
\L[2́AAiO2`l̂̂ȂǁAfoCXƂ
LĂ{^Eo[قȂ܂B𒲂ׂɂ̓ousupportv
QƂ܂Bȉ̕\ɂărbgATC܂ĂA
{^Eo[ꍇ1AȂꍇ0i[Ă܂B
	Rg[nfoCX́A\L[AAX^[g{^AA{^A
B{^ƂK{ƂȂĂ邽߁Ã{^݂̂gpăAvP[VgނƂɂA݊ێ邱Ƃł܂B

+--------------+--------------------+
|{^Eo[|rbgʒuwp萔|
+--------------+--------------------+
|\L[A   |PDD_DEV_SUPPORT_KU  |
+--------------+--------------------+
|\L[A   |PDD_DEV_SUPPORT_KD  |
+--------------+--------------------+
|\L[A   |PDD_DEV_SUPPORT_KL  |
+--------------+--------------------+
|\L[AE   |PDD_DEV_SUPPORT_KR  |
+--------------+--------------------+
|\L[B   |PDD_DEV_SUPPORT_KUB |
+--------------+--------------------+
|\L[B   |PDD_DEV_SUPPORT_KDB |
+--------------+--------------------+
|\L[B   |PDD_DEV_SUPPORT_KLB |
+--------------+--------------------+
|\L[BE   |PDD_DEV_SUPPORT_KRB |
+--------------+--------------------+
|X^[g{^|PDD_DEV_SUPPORT_ST  |
+--------------+--------------------+
|A{^       |PDD_DEV_SUPPORT_TA  |
+--------------+--------------------+
|B{^       |PDD_DEV_SUPPORT_TB  |
+--------------+--------------------+
|C{^       |PDD_DEV_SUPPORT_TC  |
+--------------+--------------------+
|X{^       |PDD_DEV_SUPPORT_TX  |
+--------------+--------------------+
|Y{^       |PDD_DEV_SUPPORT_TY  |
+--------------+--------------------+
|Z{^       |PDD_DEV_SUPPORT_TZ  |
+--------------+--------------------+
|D{^       |PDD_DEV_SUPPORT_TD  |
+--------------+--------------------+
|AiOR   |PDD_DEV_SUPPORT_AR  |
+--------------+--------------------+
|AiOL   |PDD_DEV_SUPPORT_AL  |
+--------------+--------------------+
|AiOX1  |PDD_DEV_SUPPORT_AX1 |
+--------------+--------------------+
|AiOY1  |PDD_DEV_SUPPORT_AY1 |
+--------------+--------------------+
|AiOX2  |PDD_DEV_SUPPORT_AX2 |
+--------------+--------------------+
|AiOY2  |PDD_DEV_SUPPORT_AY2 |
+--------------+--------------------+
AvP[V́AfoCXIDƃfoCX̎dlQƂ邩A
邢͂̃{^Eo[T|[gQƂAK؂Ƀf[^
舵ĂB

 
s1.3.1 fW^{^f[^t

	fW^{^́AoonAoffApressArelease4
oɊi[ĂAprɂĎg܂BeõrbgƂ
{^UĂA{^Ă1AĂȂ
0ƂȂ܂(_)B܂A_Ԃ͏֐pdInitPeripheral()
Ăяoɕ_ɐݒ肷邱Ƃł܂B

+--------------+--------------------+
|fW^{^|rbgʒuwp萔|
+--------------+--------------------+
|\L[A   |PDD_DGT_KU          |
+--------------+--------------------+
|\L[A   |PDD_DGT_KD          |
+--------------+--------------------+
|\L[A   |PDD_DGT_KL          |
+--------------+--------------------+
|\L[AE   |PDD_DGT_KR          |
+--------------+--------------------+
|A{^       |PDD_DGT_TA          |
+--------------+--------------------+
|B{^       |PDD_DGT_TB          |
+--------------+--------------------+
|C{^       |PDD_DGT_TC          |
+--------------+--------------------+
|D{^       |PDD_DGT_TD          |
+--------------+--------------------+
|X{^       |PDD_DGT_TX          |
+--------------+--------------------+
|Y{^       |PDD_DGT_TY          |
+--------------+--------------------+
|Z{^       |PDD_DGT_TZ          |
+--------------+--------------------+
|L{^       |PDD_DGT_TL          |
+--------------+--------------------+
|R{^       |PDD_DGT_TR          |
+--------------+--------------------+
|X^[g{^|PDD_DGT_ST          |
+--------------+--------------------+
|\L[B   |PDD_DGT_KUB         |
+--------------+--------------------+
|\L[B   |PDD_DGT_KDB         |
+--------------+--------------------+
|\L[B   |PDD_DGT_KLB         |
+--------------+--------------------+
|\L[BE   |PDD_DGT_KRB         |
+--------------+--------------------+


+----------------+------------------------------------------------------+
|o          |Ӗ                                                  |
+----------------+------------------------------------------------------+
|Uint32 on       |{^ĂƂ({^_E)AΉrbg|
|                |1ɂȂ܂BĂȂ{^̃rbg0      |
|                |Ȃ܂B                                            |
+----------------+------------------------------------------------------+
|Uint32 off      |onorbg]̂łBȂ킿A{^  |
|                |ĂȂƂ({^Abv)AΉrbg    |
|                |1ɂȂ܂B                                         |
+----------------+------------------------------------------------------+
|Uint32 press    |{^ĂȂԂAꂽԂɕω    |
|                |Ƃ({^_EGbW)AΉrbg1     |
|                |Ȃ܂BłȂrbg0ɂȂ܂B             |
+----------------+------------------------------------------------------+
|Uint32 release  |{^ĂԂAĂȂԂɕω|
|                |Ƃ({^AbvGbW)AΉrbg1     |
|                |Ȃ܂BłȂrbg0ɂȂ܂B             |
+----------------+------------------------------------------------------+
_ɐݒ肵ꍇAbuttonAonAoffApressAreleasêׂẴrbg
  ]Ċi[܂B

ȂAfW^LR{^́AAiOLR񂩂\tgEFAŋ[I
Ă܂BAiOLR{^ȂfoCX̏ꍇArbg
ω܂̂ŒӂĂB(fW^LR{^𕨗IɎ
foCX͂܂)


s1.3.2 AiOf[^t

	AiÓAor,l,x1,y1,x2,y26̃o
i[Ă܂BڑAт̃{^Ao[ȂfoCX
ꍇ́AZ^[ʒuƓf[^i[܂B
+---------+--------+------------+------------+----------------+
|o   |    |W      |Z^[ʒu|o[/{^   |
+---------+--------+------------+------------+----------------+
|Uint16 r |Ȃ|0`255      |          0 |AiOR{^ |
+---------+--------+------------+------------+----------------+
|Uint16 l |Ȃ|0`255      |          0 |AiOL{^ |
+---------+--------+------------+------------+----------------+
|Sint16 x1|t|-128`0`127|          0 |AiOo[X1|
+---------+--------+------------+------------+----------------+
|Sint16 y1|t|-128`0`127|          0 |AiOo[Y1|
+---------+--------+------------+------------+----------------+
|Sint16 x2|t|-128`0`127|          0 |AiOo[X2|
+---------+--------+------------+------------+----------------+
|Sint16 y2|t|-128`0`127|          0 |AiOo[Y2|
+---------+--------+------------+------------+----------------+



s1.4 f[^擾̃G[t

	Maple BusvgRɂfoCXƂ̒ʐMɁA炩̃G[
ꍇ܂B̏ꍇA{^̐ȃf[^Ȃ߁A
\͉̂̕\̂悤Ȓlɐݒ肳܂B

+--------------+--------------------------------+
|o        |ݒl                          |
+--------------+--------------------------------+
|id,name,extend|O̒l                        |
+--------------+--------------------------------+
|fW^{^|ׂă{^ĂȂ|
+--------------+--------------------------------+
|AiO    |Z^[ʒu                    |
+--------------+--------------------------------+

G[ǂ́A֐pdGetPeripheralError()Œׂ邱Ƃł܂B

+---------------+----------------------------------------+
|G[R[h   |e                                    |
+---------------+----------------------------------------+
|PDD_ERR_OK     |G[Ȃ                              |
+---------------+----------------------------------------+
|PDD_ERR_RETRY  |{^f[^Ɏ擾ł܂ł|
+---------------+----------------------------------------+
|PDD_ERR_GENERIC|`G[                            |
+---------------+----------------------------------------+
G[ꍇ́ACuł͉񕜎i݂܂BAvP[VœK؂ȏsĂB



y2. ֐dlz

s2.1֐ꗗt
+----------------------+------------------------------------+
|֐                  |@\                                |
+----------------------+------------------------------------+
|pdGetPeripheral       |Rg[̃{^Ԃ擾  |
+----------------------+------------------------------------+
|pdGetPeripheralError  |Rg[ɊւG[擾|
+----------------------+------------------------------------+
|pdExecPeripheralServer|ytFf[^擾T[o֐    |
+----------------------+------------------------------------+


s2.2 ֐APIt
m֐nconst PDS_PERIPHERAL* pdGetPeripheral(Uint32 port)
ḿnport	|[gԍ(PDD_PORT_A0/B0/C0/D0)
mónȂ
m߂lnPDS_PERIPHERAL\̂̃AhX
m@\nytFf[^擾܂B
mQƁnPDS_PERIPHERAL\
mgpn
          const PDS_PERIPHERAL* per;

          per = pdGetPeripheral(PDD_PORT_A0);

          if (per->press & PDD_DGT_ST) {
            /* X^[g{^ꂽ */
                  :
                  :
          }

----------

m֐nSint32 pdGetPeripheralError(Uint32 port)
ḿnport ...|[gԍ(PDD_PORT_A0/B0/C0/D0)
mónȂ
m߂ln0 ... G[Ȃ
           ... G[l(PDD_ERR_XXXX)
m@\nRg[f[^擾ɊւG[R[h擾܂B
mgpn
          Sint32 err;

          err = pdGetPeripheralError(PDD_PORT_B0);
