

 =================================================================

	cgbdos_j.txt

  @̃hLgnocashPan Docs(http://www.work.de/nocash/

  pandocs.txt)Q[{[CJ[(CGB)֘Ȁ݂̂Kɘa

  ̂łB

 =================================================================





LCDJ[pbg

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



FF68 - BCPS/BGPI - CGB[ĥ - wipbgCfbNX

̃WX^CGBwipbĝ߂ɗpӂĂ܂BQoCg̃g

ĐF`܂Bŏ̂WoCǵABGP1-7̂߂ɃpbgO(BGP0)̐F0-3Ȃ

`܂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̂ - wipbgf[^

̃WX^̓WX^FF68hɂăAhXāACGBwipbgւ

ǂݎ/݃f[^ɋ܂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ɃANZ

XĂ܂BfBXvC/A/Ȁꍇ̂ݒʏ탂[hD

MA͎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[^[\ȃ

]ꍇ)͓]܂łɊ܂!





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)







荞

--------



荞ݗ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邢͔pj

邽߂Ɏ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揇ʂArbgSiW

Cpbhj͍łDxႢB



̊荞

CPU͊荞݂sꍇɁAIME=0Zbg邱Ƃɂ莩Iɑׂ̂Ă̊荞݂

ɂ܂BʏA荞ݎ葱Ԃ܂IME0̂܂܂łBiRETI߂

荞݂ZbgjȂÂEIߎs邱ƂɂDx

Ⴂ/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

