
 =================================================================
	cgbdos_j.txt(http://gvm.emuunlim.com)
  @̃hLgnocashPan Docs(http://www.work.de/nocash/
  pandocs.txt)Q[{[CJ[(CGB)֘Ȁ݂̂Kɘa
  ̂łB
 =================================================================

LCDJ[pbg
-----------------

FF68 - BCPS/BGPI - CGB[ĥ - BGpbgCfbNX
̃WX^CGBBGpbgAhX(PoCg)邽߂Ɏgp܂
BꂼQoCg̃gĐF`܂Bŏ̂WoCg̓pbgO
(BGP0)̔ԍ0-3`BGP1-7悤ɒ`܂B
  Bit 0-5   CfbNX (00-3F)
  Bit 7     CNg  (0=, 1=݌ɃCNg)
pbgf[^WX^(FF69h)w肳ꂽփf[^ւ݂̏ǂݎ肪o
܂BCNgtOZbgĂꍇAFF69hɏ݂̌
ɃCfbNX͎IɃCNg܂BAFF69hǂݎ鎞
CNg͌ʂ܂B̏ꍇCfbNX͎蓮ŃCN
gKv܂B

FF69 - BCPD/BGPD - CGB[ĥ - BGpbgf[^
̃WX^CGBBGpbgւ̃f[^̓ǂݎ/݂邱
o܂B
eF́AQoCg(1̃oCgŃrbg0-7)`܂B
  Bit 0-4   ԔZx	(00-1F)
  Bit 5-9   ΔZx	(00-1F)
  Bit 10-14 Zx	(00-1F)
VRAMɂƓ悤Ƀpbgf[^LCDRg[[ǂł
ǂݎ/݂o܂B(STATWX^[hR̎)
:ŏAwiFׂ͂ĔFŏĂ܂B


FF6A - OCPS/OBPI - CGB[ĥ - XvCgpbgCfbNX
FF6B - OCPD/OBPD - CGB[ĥ - XvCgpbgf[^
wipbĝ߂̏̋LqƓlɁÃWX^̓XvCgpbgOBP
0-7邽߂Ɏgp܂B4̐FeOBPpbĝ߂ɒ`
邱ƂɂƂɒӂĂBAeXvCgEpbg̐F1-3
͕\邱Ƃł܂BF0͏ɓŁAl͏邱ƂoȂ
ɒӂ܂B
:ŏɁAXvCg̐Fׂ͂ďĂ܂B


LCD VRAMoN
--------------

FF4F - VBK - CGB[ĥ - VRAMoN
1rbg̃WX^݂͌̃rfI(VRAM)oNI܂B
  Bit 0 - VRAMoN (0-1)
oNO̓mÑQ[̏ꍇA192̃^C2BG}bv܂ł
܂BoNP̓oNOɂ192̃^CBG}bvp̐F}bv
܂ł܂B


LCD VRAM DMA]
----------------

FF51 - HDMA1 - CGB[ĥ - VDMA̓]̏ʃrbg
FF52 - HDMA2 - CGB[ĥ - VDMA̓]̉ʃrbg
FF53 - HDMA3 - CGB[ĥ - VDMA̓]̏ʃrbg
FF54 - HDMA4 - CGB[ĥ - VDMA̓]̉ʃrbg
FF55 - HDMA5 - CGB[ĥ - VDMA̓]/[h/X^[g
̃WX^ROM(܂RAM)VRAM܂DMA]n߂邽߂Ɏgp܂
B
]Ƃ̃AhX0000h-7FF0h邢A000h-DFF0hɈʒu܂BAhX̉
ʂSrbg͖܂(0ƂĈ)B]X^[gAhX8000h-9FF
0hɈʒu܂BAhX̉ʂSrbg͖܂(0ƂĈ)BʂS
rbg܂(]͏VRAM̃AhX͈̔͂ɂ)B

FF55h֏ނƂɂ]n߂܂BFF55h̉ʂVrbg͓](10hA}
CiX1)w肵܂B܂Al00h-7Fh10h-800hoCg̒
`邱Ƃł܂B܂AFF55h̏㕔̃rbg͓][h܂:

Bit7=0 - ʏ탂[hDMA
̓]@gpꍇf[^ׂ͂Ēɓ]܂B̓]
܂ŃvO̎s~܂Bʏ탂[hDMA̓f[^Rs[邱
ӖړIɎ݂邱ƂɒӂĂB̊ԂLCDRg[[VRAMɃAN
ZXĂ܂BfBXvC/A/Ȁꍇ̂ݒʏ탂[h
DMA͎gpׂłB

Bit7=1 - uNDMA
eÃf[^ɐuNDMA]10hoCg]܂B܂LY=0-143
̊Ԃ̓f[^͓]܂B̌LY=00œ]pŁBvO
̎s͓]ɒ~܂BAvOs͊ef[^ubNԂ́uX
y[XvɌp܂BvO]VRAMoN(FF4F)ύXȂ
ȂƂɒӂĂB邢́A]ROM/RAMoN(f[^[\ȃ
]ꍇ)͓]܂łɊ܂!


VRAM BG}bv
-------------

Q[{[C̓AhX9800h-9BFFh9C00h-9FFFhVRAM232x32^CBG}
bv܂ł܂B
eX́AfBXvC"W"BG邢"EBhE"BĜꂩɎgpł܂B

BG^C}bvԍ
BG^C}bvƂĒmĂVRAM̃GA͕\^C̐܂ł
B32oCgeX32ƂČ`܂BeoCg͕\鑽̃^C
܂ł܂B^Cp^[́A$8000-8FFF邢$8800-97FF̂ꂩɂ
^Cf[^e[u瓾܂B1̃P[Xł͔ԍ0`255܂ŕȂ
̐Ńp^[ɕt܂B(Ⴆ΁Ap^[#0̃AhX$8000)B2̃P[
Xł̓p^[-128`127܂ŐɕtĂ܂(Ⴆ΁Ap^[#0 ̃Ah
X$9000)BBĜ߂̃^Cf[^e[ũAhXLCDCWX^ɂđI
邱Ƃł܂B

BG}bv (CGB[ĥ)
CGB[hł́A32x32oCg̕⑫n}VRAMoN1Ɋi[܂B(eoCǵA
VRAMoN0̒őΉ^C}bvGg[̂߂̑`܂)F
  Bit 0-2  BGpbgԍ		(BGP0-7)
  Bit 3    VRAMoN̑I		(0=oNO, 1=oNP)
  Bit 4    gȂ
  Bit 5    ]			(0=̂܂, 1=])
  Bit 6    ]			(0=̂܂, 1=])
  Bit 7    Dx			(0=OAM̗Dxgp, 1=BG̗Dx)
rbg7Zbg鎞AΉBG^Cׂ͂ĂOBJ荂DxiOAM̗D
xɊւ炸j܂B̗DxtOLCDCWX^rbg0ɐݒ肳
ꂽׂĂ̗Dxrbg𖳎܂B


VRAMXvCge[u
--------------------------

XvCg͉̑̂SoCgō\Ă܂B

Byte0 - Yʒu

Byte1 - Xʒu

Byte2 - ^Cp^[ԍ
XvCg^Cԍ(00-FF)w肵܂B̒l(Ȃ)8000h-8FFFhŃ
^CIт܂BCGB[hɂāÃ͎oCg̃rbg3ɈˑVR
AMoN0邢1̂ꂩł邩܂B

Byte3 - /tO
  Bit7   Dx		(0=BG̏ɕ\, 1=BGF1-3̌̂ɕ\)
         (BGуEBhE̗ŎgpABGFOOBJ̌ɕ\܂)
  Bit6   Y ]		(0=̂܂, 1=])
  Bit5   X ]		(0=̂܂, 1=])
  Bit4   pbgԍ	   **CGBł͎gȂ**	(0=OBP0, 1=OBP1)
  Bit3   ^CVRAMoN  **CGB[ĥ**	(0=oNO, 1=oNP)
  Bit2-0 pbgԍ      **CGB[ĥ**	(OBP0-7)


FF70 - SVBK - CGB[ĥ - WRAMoN
CGB[hł32KBytes̓RAMp\łB̃4KByteŝꂼ8
̃oNɕ܂BoN0́AC000-CFFF̃ɂďɗp\ŁAo
N1-7D000-DFFF̃AhXԂőIԂƂł܂B
  Bit 0-2  WRAMoN̑I (ǂݎ/)
01h-07h̒lނƃoN1-7I΂A00h̒lĂoN1I
B


荞
--------

荞ݗv
IFׂ̂Ẵrbg͊荞݂s鎞Zbg܂Bۂ<s>IME
tOIEWX^̑Ήrbg̗Zbgꍇ̂݋N܂B
łȂ΁AIMEIE̗̎s܂ł̊荞݂͑҂܂B

荞ݎs
荞݂sꍇAIFWX^̑ΉrbgCPUɂĎIɃZbg
悤ɂȂ܂BIMEtOZbg܂B(vORETIw
gpɂēxT^IɊ荞݂\ɂ܂ŁAȊO̊荞݂͖ł)܂A
荞݂ɑΉAhX(IEIF̐Ŏ悤ɁA͔͈0040h-0060h
AhXł)CALL܂B

蓮Ŋ荞݂v/p
CPU͎IIFWX^̃rbgZbgуZbĝŁAʏIFWX^ւ
݂͗v܂BȂA[U͎蓮Ŋ荞݂vi邢͔p
j邽߂Ɏw邱Ƃo܂BۂɂIMEIEZbgĂȂΎ蓮
ŗvꂽ荞݂͎s܂B

荞ݗDx
3̏󋵂́A荞ݗvPȏoĂꍇIFWX^̂Prbgȏ
ZbgꂽꍇɋN邩܂B:
@Pj荞݂MɂPȏZbgꂽꍇ
@Qj荞݂vĂĂAIME/IE̊荞݂ڎs邱ƂoȂ
    ꍇ
@Rj[U[IFWX^̃rbgPȏZbgiƂ΂PFhjꍇ
IMEIEvꂽ荞݂2ȏ̎s΁ADx̍荞
݂Ɏs܂Bʂ̓rbgOiAjłD揇ʂArbgSi
W
Cpbhj͍łDxႢB

̊荞
CPU͊荞݂sꍇɁAIME=0Zbg邱Ƃɂ莩Iɑׂ̂Ă̊
荞݂𖳌ɂ܂BʏA荞ݎ葱Ԃ܂IME0̂܂܂łBiRETI
߂Ŋ荞݂ZbgjȂÂEIߎs邱ƂɂD
xႢ/i邢͓j̊荞݂]ޏꍇA荞݂̎葱͓
s܂B


HALT߂ɂd͏
----------------------

d͂ߖ񂵂ăobe[̎L΂߂ɉ\ȏꍇ͏HALTwgp
Ƃ߂܂B̃R}hCPUROM̗̏d͂ߖ񂷂邽߂ɃVXe
v~܂B

荞݂܂CPU̓TXyhA荞݂sꂽꍇHALT̖̎߂
s܂B

Q[HALT߂ǂꂾCPUԂv邩ɂ苰炭5`50%邢͂葽
obe[L΂Ƃł܂B

V-blank҂̈:
  @@wait:
   ld   a,(0FF44h)      ;LY
   cp   a,144
   jr   nz,@@wait

ǂ͉Ɏ悤Ȏ葱łB
̏ꍇVBlank͊ԈႢȂLłB܂AVBlank荞݂vblank_flagZbg
ɈႢ܂B
   ld   hl,vblank_flag  ;hlvblank_flag̃|C^
   xor  a               ;a=0
  @@wait:               ;wait...
   halt                 ;TXyh - 荞ݑ҂
   cp   a,(hl)          ;vblank flagOȂZtOZbg
   jr   z,@@wait        ;tOZbgĂȂ΃Wv
   ld   (hl),a          ;vblank_flagZbg
vblank_flagHALTԂvblank荞݁i͕ʂ̊荞݁jɂďI
ǂf邽߂Ɏgp܂BɂȂăvÔׂ̂Ď
Ă邱ƂfꍇǍAL̎葱PHALTwɎւ邱
͑ςł傤B
