
 VXe̎gp郁̃}bsOɂ

VXe̓XvCgAXN[̃Rg[p vnqj-gḧ
OxSOOOOoCggpĂ܂B܂AeNX`Ɍ̉e^
ꍇɃO[[VF[fBOp邽߁Ãf[^ƂĂucoP
uq`l̓QUSoCggpĂ܂B̓ƁAftHg
̐ݒȉɎ܂B

l`w_onkxfnmr:	PVWU	gpł|S
l`w_udqshbdr:	QTOO	gpł钸_
l`w_sq`mredq:	    QO	uLO̓]NGXg
l`w_mdrs:		    QO	}gNX̃lXg

slPutPolygon() ͎w肳ꂽfŎgp|SAyђ_
ő吔zꍇ̃f͏܂B

܂AslPutSprite() , slDispSprite() , slSetSprite() ͎s邽тɃ|S
ЂƂZAő吔zꍇɂ̃f[^̏𒆎~܂B
(Aw肳ꂽyʒu\͈͊Ȍꍇɂ͉Z܂)


[Nq`l:
    OUObOOOO:	(SortList)
        XvCgRg[f[^̂cl`]pe[uobt@
        (l`wQonkxfnmr{U)RSoCg = OxTSOO
    OUObTSOO:	(CLOfstBuf)
        ̉eɂ锭Ff[^e[u
        RQRQ = OxSOO
    OUObTWOO:	(Zbuffer)
        |S\[gp̂Pobt@(EBhEOp)
        PQWS = OxQOO
    OUObT`OO:	(Zbuffer2)
        |S\[gp̂Pobt@Q(EBhEPp)
        PQWS = OxQOO
    OUObTbOO:	(Zbuf_nest)
        |S\[gp̂Qobt@
        QTUS = OxSOO
    OUObUOOO:	(Spritebuf)
        XvCgRg[f[^obt@
        (l`w_onkxfnmr{T)RU = Oxeacb
    OUOcTacb:	(Spritebuf2)
        XvCgRg[f[^obt@Q
        (l`w_onkxfnmr{T)RU = Oxeacb
    OUOdTVaW:	(Pbuffer)
        |SZp_ʒuobt@
        l`w_udqshbdrPU = OxXbSO
    OUOdeReW:	(CommandBuf)
        }X^[X[uւ̃R}hnobt@
        l`w_onkxfnmrRQ|OxPaRW = OxbSOW
    OUOeaWOO:	(TransList)
        uLO̓]NGXgp̂cl`Rg[e[u
        l`w_sq`mredqRSoCg = OxeO
    OUOeaWeO:
        X^bN̈(OxSRPO)

    OUOeebOO:
        VXeϐ̈(faqWX^͏ɂwĂ)
        OxSOOoCg
VXeϐ͈ȉɎ̂ŁAbvÔœǂݏoƂł

    VXeϐ
	OOO:	(EventTop)	(EVENT *)	; 擪ɓo^ĂCxg
	OOS:	(EventLast)	(EVENT *)	; ɓo^ĂCxg
	OOW:	(EventNow)	(EVENT *)	; s̃Cxg
	OOb:	(EventCount)	(Uint16)	; Cxg̎c
	OOd:	(WorkCount)	(Uint16)	; [N̎c
	OPO:	(MainMode)	(Uint8)		; CV[PX[h
	OPP:	(SubMode)	(Uint8)		; TuV[PX[h
	OPQ:	(SynchConst)	(Sint8)		; rfIJEg
	OPR:	(SynchCount)	(Sint8)		; rfIJEg
	OPS:	(UserFunction)	(void (*)())	; uLOɎs郆[U[֐
	OPW:	(TransCount)	(Uint16)	; uLO̓]Gg[
	OP`:	(TransRequest)	(Uint8)		; uLO̓]̃NGXg
	OPa: (PauseFlag)	(Uint8)		; XvCgAXN[̃|[YptO

 	OPb:	(mtptr)		(MATRIX *)	; Jg}gNX|C^
	OQO:	(MatrixCount)	(Uint8)		; }gNX̃lXgJEg
	OQP:	(PrintColor)	(Uint8)		; eLXg\pJ[pbg
	OQQ:	(IntCount)	(Uint16)	; 荞݃JEg
	OQS:	(MsPbufPtr)	(Uint32 *)	; _WZobt@|C^(Master)
	OQW:	(SlPbufPtr)	(Uint32 *)	; _WZobt@|C^(Slave)
	OQb:	(SpritePtr)	(Uint16 *)	; XvCgf[^]|C^
	ORO:	(MsSdataPtr)	(Uint16 *)	; XvCgf[^Zbg|C^(Master)
	ORS:	(SlSdataPtr)	(Uint16 *)	; XvCgf[^Zbg|C^(Master)
	ORW:	(ZbufPtr)	(void **)	; yobt@|C^
	ORb:	(FormTbl)	(TEXTURE *)	; eNX`f[^e[u
	OSO:	(SprbufBias)	(Uint32)	; XvCgf[^obt@؂ւ
	OSS:	(ComRdPtr)	(Uint32 *)	; R}h[h|C^
	OSW:	(ComWrPtr)	(Uint32 *)	; R}hZbg|C^
	OSb:	(MsLightVector)	(VECTOR)	; xNg(Master)
	OTW:	(SlLightVector)	(VECTOR)	; xNg(Master)
	OUS:	(ColorOffset)	(Uint8 *)	; J[ItZbge[u|C^
	OUW:	(MsScreenDist)	(FIXED)		; XN[ʒu(Master)
	OUb:	(SlScreenDist)	(FIXED)		; XN[ʒu(Slave)
	OVO:	(MsZlimit)	(Sint16)	; \~bgyʒu(Master)
	OVQ:	(WindowNumber)	(Uint8)		; EBhEgp
	OVR:	(WinUseFlag)	(Uint8)		; EBhEgptO
	OVS:	(TotalPolygons)	(Uint16)	; Z|S
	OVU:	(TotalVertices)	(Uint16)	; Z_
	OVW:	(MsScreenLeft)	(Sint16)	; XN[ʒu
	OV`:	(MsScreenTop)	(Sint16)	; XN[ʒu
	OVb:	(MsScreenRight)	(Sint16)	; XN[Eʒu
	OVd:	(MsScreenBottom) (Sint16)	; XN[ʒu
	OWO:	(MsScreenSizeX)	(Uint16)	; XN[TCY(Master)
	OWQ:	(MsScreenSizeY)	(Uint16)	; XN[cTCY(Master)
	OWS:	(MsWindowSizeX)	(Uint16)	; EBhETCY(Master)
	OWU:	(MsWindowSizeY)	(Uint16)	; EBhETCY(Master)
	OWW:	(MXPolygons)	(Uint16)	; ő|S
	OW`:	(MXVertices)	(Uint16)	; ő咸_
	OWb:	(FrameSizeX)	(Uint16)	; t[obt@TCY
	OWd:	(FrameSizeY)	(Uint16)	; t[obt@TCY
	OXO:	(MsWinXAdder)	(Sint16)	; EBhE`FbNpZf[^(Master)
	OXQ:	(MsWinYAdder)	(Sint16)	; EBhE`FbNpZf[^(Master)
	OXS:	(SlWinXAdder)	(Uint16)	; EBhE`FbNpZf[^(Slave)
	OXU:	(SlWinYAdder)	(Uint16)	; EBhE`FbNpZf[^(Slave)
	OXW:	(MsClipXAdder)	(Sint16)	; NbsOpZf[^()(Master)
	OX`:	(MsClipYAdder)	(Sint16)	; NbsOpZf[^(c)(Master)
	OXb:	(SlClipXAdder)	(Sint16)	; NbsOpZf[^()(Slave)
	OXd:	(SlClipYAdder)	(Sint16)	; NbsOpZf[^(c)(Slave)
	O`O:	(SlZlimit)	(Sint16)	; \~bgyʒu(Slave)
	O`Q:	(WinPtr)	(Uint16)	; EBhEf[^ZbgItZbg
	O`S:	(DispPolygons)	(Uint16)	; \|S
	O`U:	(DMAEndFlag)	(Uint8)		; cl`]ItO(gp)
	O`W:	(DMASetFlag)	(Uint8)		; cl`e[uZbgtO
	O``:	(PutCount)	(Uint16)	; slPutPolygon(),sl...Sprite()Ăяo
	O`b:	(MsZdpsftcnt)	(Uint8)		; ʕ\~bgVtgJE^(Master)
	O`c:	(SlZdpsftcnt)	(Uint8)		; ʕ\~bgVtgJE^(Slave)

	OaO : (Resolution)	(Uint8)		; ʃ[h 
	OaP : (NbPCMBf)	(Uint8)		; oblobt@̐(QOOOgP)
	OaQ : (PCMBufFlag)	(Sint16)	; oblobt@̋󂫏󋵃tO
	OaS : (SoundRdCount)	(Uint8)		; TEhobt@ǂݏoJE^
	OaT : (SoundWrCount)	(Uint8)		; TEhobt@Gg[JE^
	OaU : (FRT_Count)	(Sint16)	; eqsJE^
	OaV : (SCUMC_ID)	(Uint8)		; rbt[Rs[̃`lio[
	OaW : (DMASt_CPU0)	(Uint8)		; bot c.l.`.̃Xe[^X(bgO)
	Oa` : (DMASt_CPU1)	(Uint8)		; bot c.l.`.̃Xe[^X(bgP)
	Oaa : (DMASt_SCU0)	(Uint8)		; rbt c.l.`.̃Xe[^X(bgO)
	Oab : (DMASt_SCU1)	(Uint8)		; rbt c.l.`.̃Xe[^X(bgP)
	Oac : (DMASt_SCU2)	(Uint8)		; rbt c.l.`.̃Xe[^X(bgQ)
	Oad : (--------)	(Uint16)	; VXe\

	ObO:	(VDP2_TVMD)	(Uint16)	; suʃ[h
	ObQ:	(VDP2_EXTEN)	(Uint16)	; OMCl[u
	ObS:	(VDP2_TVSTAT)	(Uint16)	; ʃXe[^X
	ObU:	(VDP2_VRSIZE)	(Uint16)	; uq`lTCY
	ObW:	(VDP2_HCNT)	(Uint16)	; gJE^[
	Ob`:	(VDP2_VCNT)	(Uint16)	; uJE^[
	Obd:	(VDP2_RAMCTL)	(Uint16)	; q`lRg[
	OcO:	(VDP2_CYCA0L)	(Uint16)	; uq`lTCNp^[ioN`OAsO[Rj
	OcQ:	(VDP2_CYCA0U)	(Uint16)	; uq`lTCNp^[ioN`OAsS[Vj
	OcS:	(VDP2_CYCA1L)	(Uint16)	; uq`lTCNp^[ioN`PAsO[Rj
	OcU:	(VDP2_CYCA1U)	(Uint16)	; uq`lTCNp^[ioN`PAsS[Vj
	OcW:	(VDP2_CYCB0L)	(Uint16)	; uq`lTCNp^[ioNaOAsO[Rj
	Oc`:	(VDP2_CYCB0U)	(Uint16)	; uq`lTCNp^[ioNaOAsS[Vj
	Ocb:	(VDP2_CYCB1L)	(Uint16)	; uq`lTCNp^[ioNaPAsO[Rj
	Ocd:	(VDP2_CYCB1U)	(Uint16)	; uq`lTCNp^[ioNaPAsS[Vj
	OdO:	(VDP2_BGON)	(Uint16)	; ʕ\Cl[u
	OdQ:	(VDP2_MZCTL)	(Uint16)	; UCNRg[
	OdS:	(VDP2_SFSEL)	(Uint16)	; @\R[hZNg
	OdU:	(VDP2_SFCODE)	(Uint16)	; @\R[h
	OdW:	(VDP2_CHCTLA)	(Uint16)	; LN^Rg[imafOAmafPj
	Od`:	(VDP2_CHCTLB)	(Uint16)	; LN^Rg[imafQAmafRAqafOj
	Odb:	(VDP2_BMPNA)	(Uint16)	; rbg}bvpbgio[(mafOAP)
	Odd:	(VDP2_BMPNB)	(Uint16)	; rbg}bvpbgio[(qafO)
	OeO:	(VDP2_PNCN0)	(Uint16)	; p^[l[Rg[imafOj
	OeQ:	(VDP2_PNCN1)	(Uint16)	; p^[l[Rg[imafPj
	OeS:	(VDP2_PNCN2)	(Uint16)	; p^[l[Rg[imafQj
	OeU:	(VDP2_PNCN3)	(Uint16)	; p^[l[Rg[imafRj
	OeW:	(VDP2_PNCR)	(Uint16)	; p^[l[Rg[iqafOj
	Oe`:	(VDP2_PLSZ)	(Uint16)	; v[TCY
	Oeb:	(VDP2_MPOFN)	(Uint16)	; }bvItZbgimafO[Rj
	Oed:	(VDP2_MPOFR)	(Uint16)	; }bvItZbgi]p[^`Aaj
	POO:	(VDP2_MPABN0)	(Uint16)	; }bvimafOv[`Aaj
	POQ:	(VDP2_MPCDN0)	(Uint16)	; }bvimafOv[bAcj
	POS:	(VDP2_MPABN1)	(Uint16)	; }bvimafPv[`Aaj
	POU:	(VDP2_MPCDN1)	(Uint16)	; }bvimafPv[bAcj
	POW:	(VDP2_MPABN2)	(Uint16)	; }bvimafQv[`Aaj
	PO`:	(VDP2_MPCDN2)	(Uint16)	; }bvimafQv[bAcj
	POb:	(VDP2_MPABN3)	(Uint16)	; }bvimafRv[`Aaj
	POd:	(VDP2_MPCDN3)	(Uint16)	; }bvimafRv[bAcj
	PPO:	(VDP2_MPABRA)	(Uint16)	; }bvi]p[^`v[`Aaj
	PPQ:	(VDP2_MPCDRA)	(Uint16)	; }bvi]p[^`v[bAcj
	PPS:	(VDP2_MPEFRA)	(Uint16)	; }bvi]p[^`v[dAej
	PPU:	(VDP2_MPGHRA)	(Uint16)	; }bvi]p[^`v[fAgj
	PPW:	(VDP2_MPIJRA)	(Uint16)	; }bvi]p[^`v[hAij
	PP`:	(VDP2_MPKLRA)	(Uint16)	; }bvi]p[^`v[jAkj
	PPb:	(VDP2_MPMNRA)	(Uint16)	; }bvi]p[^`v[lAmj
	PPd:	(VDP2_MPOPRA)	(Uint16)	; }bvi]p[^`v[nAoj
	PQO:	(VDP2_MPABRB)	(Uint16)	; }bvi]p[^av[`Aaj
	PQQ:	(VDP2_MPCDRB)	(Uint16)	; }bvi]p[^av[bAcj
	PQS:	(VDP2_MPEFRB)	(Uint16)	; }bvi]p[^av[dAej
	PQU:	(VDP2_MPGHRB)	(Uint16)	; }bvi]p[^av[fAgj
	PQW:	(VDP2_MPIJRB)	(Uint16)	; }bvi]p[^av[hAij
	PQ`:	(VDP2_MPKLRB)	(Uint16)	; }bvi]p[^av[jAkj
	PQb:	(VDP2_MPMNRB)	(Uint16)	; }bvi]p[^av[lAmj
	PQd:	(VDP2_MPOPRB)	(Uint16)	; }bvi]p[^av[nAoj
	PRO:	(VDP2_SCXN0)	(FIXED)		; ʃXN[limafOAŒ菬j
	PRO:	 (VDP2_SCXIN0)	(Sint16)	; ʃXN[limafOAj
	PRQ:	 (VDP2_SCXDN0)	(Uint16)	; ʃXN[limafOAj
	PRS:	(VDP2_SCYN0)	(FIXED)		; ʃXN[limafOAŒ菬j
	PRS:	 (VDP2_SCYIN0)	(Uint16)	; ʃXN[limafOAj
	PRU:	 (VDP2_SCYDN0)	(Uint16)	; ʃXN[limafOAj
	PRW:	(VDP2_ZMXN0)	(FIXED)		; WimafOAŒ菬j
	PRW:	 (VDP2_ZMXIN0)	(Uint16)	; WimafOAj
	PR`:	 (VDP2_ZMXDN0)	(Uint16)	; WimafOAj
	PRb:	(VDP2_ZMYN0)	(FIXED)		; WimafOAŒ菬j
	PRb:	 (VDP2_ZMYIN0)	(Uint16)	; WimafOAj
	PRd:	 (VDP2_ZMYDN0)	(Uint16)	; WimafOAj
	PSO:	(VDP2_SCXN1)	(FIXED)		; ʃXN[limafPAŒ菬j
	PSO:	 (VDP2_SCXIN1)	(Uint16)	; ʃXN[limafPAj
	PSQ:	 (VDP2_SCXDN1)	(Uint16)	; ʃXN[limafPAj
	PSS:	(VDP2_SCYN1)	(FIXED)		; ʃXN[limafPAŒ菬j
	PSS:	 (VDP2_SCYIN1)	(Uint16)	; ʃXN[limafPAj
	PSU:	 (VDP2_SCYDN1)	(Uint16)	; ʃXN[limafPAj
	PSW:	(VDP2_ZMXN1)	(FIXED)		; WimafPAŒ菬j
	PSW:	 (VDP2_ZMXIN1)	(Uint16)	; WimafPAj
	PS`:	 (VDP2_ZMXDN1)	(Uint16)	; WimafPAj
	PSb:	(VDP2_ZMYN1)	(FIXED)		; WimafPAŒ菬j
	PSb:	 (VDP2_ZMYIN1)	(Uint16)	; WimafPAj
	PSd:	 (VDP2_ZMYDN1)	(Uint16)	; WimafPAj
	PTO:	(VDP2_SCXN2)	(Uint16)	; ʃXN[limafQAj
	PTQ:	(VDP2_SCYN2)	(Uint16)	; ʃXN[limafQAj
	PTS:	(VDP2_SCXN3)	(Uint16)	; ʃXN[limafRAj
	PTU:	(VDP2_SCYN3)	(Uint16)	; ʃXN[limafRAj
	PTW:	(VDP2_ZMCTL)	(Uint16)	; kCl[u
	PT`:	(VDP2_SCRCTL)	(Uint16)	; CcZXN[Rg[
	PTb:	(VDP2_VCSTA)	(Uint16 *)	; cZXN[e[uAhX
	PUO:	(VDP2_LSTA0)	(Sint16 *)	; mafOpCXN[e[uAhX
	PUS:	(VDP2_LSTA1)	(Sint16 *)	; mafPpCXN[e[uAhX
	PUW:	(VDP2_LCTA)	(Uint16 *)	; CJ[ʃe[uAhX
	PUb:	(VDP2_BKTA)	(Uint16 *)	; obNʃe[uAhX
	PVO:	(VDP2_RPMD)	(Uint16)	; ]p[^[h
	PVQ:	(VDP2_RPRCTL)	(Uint16)	; ]p[^[hRg[
	PVS:	(VDP2_KTCTL)	(Uint16)	; We[uRg[
	PVU:	(VDP2_KTAOF)	(Uint16)	; We[uAhXItZbg
	PVW:	(VDP2_OVPNRA)	(Uint16)	; ʃI[o[p^[l[
	PV`:	(VDP2_OVPNRB)	(Uint16)	; ʃI[o[p^[l[
	PVb:	(VDP2_RPTA)	(Sint32 *)	; ]p[^e[uAhX
	PWO:	(VDP2_WPSX0)	(Uint16)	; EBhE|WV(H start)
	PWQ:	(VDP2_WPSY0)	(Uint16)	; EBhE|WV(V start)
	PWS:	(VDP2_WPEX0)	(Uint16)	; EBhE|WV(H stop)
	PWU:	(VDP2_WPEY0)	(Uint16)	; EBhE|WV(V stop)
	PWW:	(VDP2_WPSX1)	(Uint16)	; EBhE|WV(H start)
	PW`:	(VDP2_WPSY1)	(Uint16)	; EBhE|WV(V start)
	PWb:	(VDP2_WPEX1)	(Uint16)	; EBhE|WV(H stop)
	PWd:	(VDP2_WPEY1)	(Uint16)	; EBhE|WV(V stop)
	PXO:	(VDP2_WCTLA)	(Uint16)	; EBhERg[
	PXQ:	(VDP2_WCTLB)	(Uint16)	; EBhERg[
	PXS:	(VDP2_WCTLC)	(Uint16)	; EBhERg[
	PXU:	(VDP2_WCTLD)	(Uint16)	; EBhERg[
	PXW:	(VDP2_LWTA0)	(Uint16 *)	; CEBhEe[uAhX
	PXb:	(VDP2_LWTA1)	(Uint16 *)	; CEBhEe[uAhX
	P`O:	(VDP2_SPCTL)	(Uint16)	; XvCgRg[
	P`Q:	(VDP2_SDCTL)	(Uint16)	; VhERg[
	P`S:	(VDP2_CRAOFA)	(Uint16)	; J[q`lAhXItZbgimafO[Rj
	P`U:	(VDP2_CRAOFB)	(Uint16)	; J[q`lAhXItZbgiqafOAXvCgj
	P`W:	(VDP2_LNCLEN)	(Uint16)	; CJ[ʃCl[u
	P``:	(VDP2_SFPRMD)	(Uint16)	; vCIeB[h
	P`b:	(VDP2_CCCTL)	(Uint16)	; J[ZRg[
	P`d:	(VDP2_SFCCMD)	(Uint16)	; J[Z[h
	PaO:	(VDP2_PRISA)	(Uint16)	; vCIeBio[
	PaQ:	(VDP2_PRISB)	(Uint16)	; vCIeBio[
	PaS:	(VDP2_PRISC)	(Uint16)	; vCIeBio[
	PaU:	(VDP2_PRISD)	(Uint16)	; vCIeBio[
	PaW:	(VDP2_PRINA)	(Uint16)	; vCIeBio[
	Pa`:	(VDP2_PRINB)	(Uint16)	; vCIeBio[
	Pab:	(VDP2_PRIR)	(Uint16)	; vCIeBio[
	Pad: (--------)	(Uint16)	; VXe\
	PbO:	(VDP2_CCRSA)	(Uint16)	; J[Z(XvCgOAP)
	PbQ:	(VDP2_CCRSB)	(Uint16)	; J[Z(XvCgQAR)
	PbS:	(VDP2_CCRSC)	(Uint16)	; J[Z(XvCgSAT)
	PbU:	(VDP2_CCRSD)	(Uint16)	; J[Z(XvCgUAV)
	PbW:	(VDP2_CCRNA)	(Uint16)	; J[Z(mafOAP)
	Pb`:	(VDP2_CCRNB)	(Uint16)	; J[Z(mafQAR)
	Pbb:	(VDP2_CCRR)	(Uint16)	; J[Z(qfaO)
	Pbd:	(VDP2_CCRLB)	(Uint16)	; J[Z(CJ[ʁAobN)
	PcO:	(VDP2_CLOFEN)	(Uint16)	; J[ItZbgCl[u
	PcQ:	(VDP2_CLOFSL)	(Uint16)	; J[ItZbgZNg
	PcS:	(VDP2_COAR)	(Uint16)	; J[ItZbg`(q)
	PcU:	(VDP2_COAG)	(Uint16)	; J[ItZbg`(f)
	PcW:	(VDP2_COAB)	(Uint16)	; J[ItZbg`(a)
	Pc`:	(VDP2_COBR)	(Uint16)	; J[ItZbga(q)
	Pcb:	(VDP2_COBG)	(Uint16)	; J[ItZbga(f)
	Pcd:	(VDP2_COBB)	(Uint16)	; J[ItZbga(a)

	PdO:	(ScrRotPtr)	(ROTSCROLL *)	; 삷]p[^̃AhX
	PdS:	(nbg0_char_adr)	(void *)	; mafOpbfAhX
	PdW:	(nbg1_char_adr)	(void *)	; mafPpbfAhX
	Pdb:	(nbg2_char_adr)	(void *)	; mafQpbfAhX
	PeO:	(nbg3_char_adr)	(void *)	; mafRpbfAhX
	PeS:	(ra_char_adr)	(void *)	; qafO(p[^`)pbfAhX
	PeW:	(rb_char_adr)	(void *)	; qafO(p[^a)pbfAhX
	Peb:	(nbg0_page_adr)	(void *)	; mafOpp^[l[AhX
	QOO:	(nbg1_page_adr)	(void *)	; mafPpp^[l[AhX
	QOS:	(nbg2_page_adr)	(void *)	; mafQpp^[l[AhX
	QOW:	(nbg3_page_adr)	(void *)	; mafRpp^[l[AhX
	QOb:	(ra_page_adr)	(void *)	; qafO(p[^`)pp^[l[AhX
	QPO:	(rb_page_adr)	(void *)	; qafO(p[^a)pp^[l[AhX
	QPS:	(rpara_vram_adr)(void *)	; ]p[^ZbgAhX
	QPW:	(k_table_adr)	(void *)	; We[uZbgAhX
	QPb:	(RotScrParA)	(ROTSCROLL)	; ]p[^`
	QWS:	(RotScrParB)	(ROTSCROLL)	; ]p[^a
	Qdb: (Nbg2_PosX)	(FIXED)		; mafQ \ʒu (w)
	QeO: (Nbg2_PosY)	(FIXED)		; mafQ \ʒu (x)
	QeS: (Nbg3_PosX)	(FIXED)		; mafR \ʒu (w)
	QeW: (Nbg3_PosY)	(FIXED)		; mafR \ʒu (x)

	Qeb:	(Window_data)	(Uint16[22])	; EBhERg[f[^obt@(Q)
	RQW:	(Center_data)	(Uint16[10])	; EBhESRg[f[^obt@(Q)
	RRb:	(RandWork)	(Uint32)	; p[N
	RSO: (CDReadExec)	(void*())	; bcǂݍ݃T[o[֐
	RSS: (DMA_TRANS)	(Uint32[10])	; bot c.l.`. p[^
	RUb: (SOUND)		(void*[3])	; TEhobt@|C^
	RVW: (PERIPHERAL)	(Uint32[12])	; ytFRg[f[^


 ucoP_uq`l
    OxQTbOOOOOn܂ucoP̂uq`lŐ擪Ɩ̗̈̓VXeɂ
  gpĂ邽߁A[U[͎gpłȂB

  QTbOOOOO: XvCgRg[R}h
	(l`w_onkxfnm { U)  RQ = OxdPbO
  QTbVeeOO: O[[VF[fBOe[u
	QSRR = OxPOW(QUS)

 ucoQ_uq`l
    OxQTdOOOOOn܂ucoQ̂uq`l̓VXe̍ہAȉ̗l
  敪ĂB

  QTdOOOOO: VDP2_VRAM_A0
	]XN[pbff[^
  QTdQOOOO: VDP2_VRAM_A1
	]XN[pWf[^yсA]p[^
  QTdSOOOO: VDP2_VRAM_B0
	]XN[pp^[l[f[^
  QTdUOOOO: VDP2_VRAM_B1
	m[}XN[pf[^
	̗̈͂bfƃp^[l[LĂB
    QTdUOOOO`QTdUVeee	(mafOyтmafPpbff[^)
    QTdUWOOO`QTdVTeee	(mafPpbff[^)
    QTdVUOOO`QTdVVeee	(mafOpp^[l[f[^Py[W)
    QTdVWOOO`QTdVeeee	(mafPpp^[l[f[^Sy[W)

  bf͂ǂ̃XN[QTUF[hŃp^[l[͂P[h/ZɂȂĂB
  mafO͊eZƂɔ]̃tOPOrbg[hŁA̖ʂ͔]ʂƂ
  gpPQrbg[hƂȂĂB
  J[q`l͂PUrbgQOSWF[hŁAItZbg͎gpĂȂB
  obNʂ͒PFŁAQTdReeedɃJ[f[^(OOOO)ĂB

 06000000 : +---------------------------+
	    | Boot ROM BIOS functions	|
 06000800 : +---------------------------+
	    | Slave CPU Stack Area	|
 06001000 : +---------------------------+
	    | Master CPU default Stack	|
 06002000 : +---------------------------+
	    | ???			|
 06004000 : +---------------------------+
	    |				|
	    | User Program & Data	|
	    |				|
 060C0000 : +---------------------------+
	    |				|
	    | SortList	(5400)		|
	    |				|
 060C5400 : +---------------------------+
	    | TransList	(F0)		|
 060C54F0 : +---------------------------+
	    | Zbuffer	(200)		|
 060C56F0 : +---------------------------+
	    | Zbuffer2	(200)		|
 060C58F0 : +---------------------------+
	    | Zbuf_nest	(400)		|
 060C5CF0 : +---------------------------+
	    |				|
	    | Spritebuf	(FBDC)		|
	    |				|
 060D58CC : +---------------------------+
	    |				|
	    | Spritebuf2(FBDC)		|
	    |				|
 060E54A8 : +---------------------------+
	    |				|
	    | Pbuffer	(9C40)		|
	    |				|
 060EF0E8 : +---------------------------+
	    | CLOfstBuf	(400)		|
 060EF4E8 : +---------------------------+
	    |				|
	    | CommandBuf(DF40)		|
	    |				|
 060FD428 : +---------------------------+
	    |				|
	    | Stack Area(27D8)		|
	    |				|
 060FFC00 : +---------------------------+
	    | SystemWork(400)		|
 06100000 : +---------------------------+


 25C00000 : +---------------------------+
	    |				|
	    | SpriteCommand(E1C0)	|
	    |				|
 25C0E1C0 : +---------------------------+
	    |				|
	    | Free (for User)		|
	    |				|
 25C7FEF8 : +---------------------------+
	    | Gouraud table(108)	|
 25C80000 : +---------------------------+


 25E00000 : +---------------------------+
	    |				|
	    | RBG0 CG (2048chars)	|
	    |				|
 25E20000 : +---------------------------+
	    |				|
	    | RBG0 K table		|
	    |				|
 25E40000 : +---------------------------+
	    |				|
	    | RBG0 Map (16pages)	|
	    |				|
 25E60000 : +---------------------------+
	    | NBG0 , NBG1 CG (512 chars)|
 25E68000 : +- - - - - - - - - - - - - -+
	    | NBG1 CG (+896chars)	|
 25E76000 : +---------------------------+
	    | NBG0 Map (1page)		|
 25E78000 : +---------------------------+
	    | NBG1 Map (4pages)		|
 25E80000 : +---------------------------+

;---------------------------------------------------------------------------

 VXe[Nq`l̈̃JX^}CYɂ

OUOeebOOn܂VXeϐ̈̓VXeŌŒ肳Ă܂A
[Nq`lƂĎgp̈(ftHgł OUObOOOO`)ɂ
́AȉɎϐ[U[`邱ƂɂJX^}CY\łB
(AꕔύXꍇłSĂ̕ϐݒ肷悤ɂĉ)

    void*   MasterStack = (void*)0x60ffc00 ;	/* Master Stack area End */
    void*   SlaveStack  = (void*)0x6001e00 ;	/* Slave Stack area End */
    Uint16  MaxVertices = 2500 ;		/* Calculatable vertice numbers */
    Uint16  MaxPolygons = 1786 ;		/* Calculatable polygon numbers */
    Uint16  EventSize = 0x80 ;			/* sizeof(EVENT) */
    Uint16  WorkSize = 0x40 ;			/* sizeof(WORK) */
    Uint16  MaxEvents = 64 ;			/* Useful Event count */
    Uint16  MaxWorks = 256 ;			/* Useful Work count */
    void*   SortList = (void*)0x60c0000 ;	/* SCU D.M.A. Table */
    Uint32  SortListSize = 0x5400 ;		/* Sprite transfer request table size */
    void*   TransList = (void*)0x60fb800 ;	/* SCU D.M.A. Table */
    void*   Zbuffer = (void*)0x60c5800 ;	/* (128 + 128 + 256) * 4 Bytes fix */
    void*   SpriteBuf (void*)0x60c6000 ;	/* Sprite control data buffer */
    Uint32  SpriteBufSize = 0x1f7b8 ;		/* Sprite control data buffer size */
    void*   Pbuffer = (void*)0x60e57b8 ;	/* Point calculate buffer */
    void*   CLOfstBuf = (void*)0x60c5400 ;	/* 32 * 32 Bytes fix */
    void*   CommandBuf = (void*)0x60ef3f8 ;	/* Command for slave CPU buffer */
    void*   PCM_Work = (void*)0x25a78000 ;	/* PCM data buffer */
    Uint32  PCM_WkSize = 0x8000 ;		/* PCM data buffer size */

    EVENT  EventBuf[MAX_EVENTS] ;	/* buffer for Event use */
    WORK   WorkBuf[MAX_WORKS] ;		/* buffer for Work use */
    EVENT* RemainEvent[MAX_EVENTS] ;	/* Remain Event address buffer */
    WORK*  RemainWork[MAX_WORKS] ;	/* Remain Work address buffer */

ꂼ̗̈̐ݒ͈ȉ̒ӓ_K悤ɂĉB

(P) SortList  TransList  rbt c.l.`.Ԑڃ[hŎgp邽߁A
     e[ũTCYzQׂ̂搔ŗ̈撲悤ɂĉB
     SortList  XvCg(|S)f[^yсAEBhẼf[^
     ]ɂgp邽߁A\őXvCg { U̃Gg[
     mۂĉB
     ЂƂ̃Gg[ɂPQoCg̃e[ugp܂B
     Ⴆ΁APOOOXvCg\ꍇɂ
	(POOO{U)  PQ  PQOVQ(QeQWg) ƂȂ܂̂ŁA
     SOOOgoE_̃AhXɐݒ肷B

     ܂ATransList ̓uLO̓]NGXgɎgpQOGg
     [܂łƂȂĂ܂̂ŁA
	QO  PQ  QSO(eOg) oCgKvł̂ŁA
     POOg oE_̃AhXɐݒ肵ĉB

(Q) Zbuffer , CLOfstBuf  TCYŒ SoCgoE_̃AhX
     ݒ肵ĉB

(R) CommandBuf  \֐(slPutPolygon , slDispSprite)̎s
      WOoCg { POOg 炢̃TCYmۂĉB
     s֐łꍇɂ ̕\QlɃobt@TCYݒ肵
     B

	slPutPolygon	VQoCg
	slDispPolygon	PUoCg
	slPutSprite	RUoCg
	slDispSprite	RUoCg
	slSetSprite	PUoCg
	slPerspective	  WoCg
	slWindow	QOoCg
	slLight		PUoCg
	slZdspLevel	  SoCg

     ̑ɃVXeet[ƂɃt@NV𑗂Ă邽߁A
     ̗̕]T悤ɂĉB

(S) SpriteBuf  XvCgRg[f[^Zbgobt@ŁA
     et[őOƌ㔼ƂؑւȂgp܂B
     āA(ۂɕ\XvCg(|S) { T)  RU
     oCg  QoN ̃obt@KvɂȂ܂B

(T) Pbuffer  |Sf\ۂɍWϊAϊ̉Zp
     obt@ƂĎgp̈ŁAslPutPolygon , slDispPolygon gp
     ȂAvP[Vł͕Kv܂̂ŁÃobt@ƏdĂ
     ͂܂B

(U) MaxPolygons , MaxVertices  \֐sۂɃobt@I[
     o[`FbN邽߂Ɏgp܂Aۂɕ\鐔ł͂ȂA
     Gg[Ă鐔ɑ΂ă`FbNsȂĂ܂̂ŁA
     MaxPolygons ɊւĂ K SortListSize , SpriteBufSize ƍ
     Kv͂܂B

(V) PCM_Work ̓TEhboẗ̗ŁATCY QOOOgPʂƂȂ܂
     ̂ŁATEhS҂Ƒk̏ݒ肵ĉB

ȉ [Nq`l̐ݒsȂTv(workarea.c)܂B

/*						*/
/*  Workarea assignment customize file		*/
/*		for SGL ver. 1.30		*/

/*------------------------------------------------------------------------*/

#include  "sl_def.h"

/*------------------------------------------------------------------------*/

#define		SystemWork		0x060ffc00	/* VXeŒ */

#define		_Byte_			sizeof(Uint8)
#define		_Word_			sizeof(Uint16)
#define		_LongWord_		sizeof(Uint32)
#define		_Sprite_		(sizeof(Uint16) * 18)

#define		AdjWork(pt,sz,ct)	(pt + (sz) * (ct))

/*------------------------------------------------------------------------*/

#define		MAX_VERTICES		 500
#define		MAX_POLYGONS		 100

#define		WORK_AREA		0x060f0000

    enum workarea{
	sort_list  = WORK_AREA ,
	zbuffer    = AdjWork(sort_list  , _LongWord_ * 3 , MAX_POLYGONS + 6) ,
	spritebuf  = AdjWork(zbuffer    , _LongWord_ , 512) ,
	pbuffer    = AdjWork(spritebuf  , _Sprite_ , (MAX_POLYGONS + 6) * 2) ,
	clofstbuf  = AdjWork(pbuffer    , _LongWord_ * 4 , MAX_VERTICES) ,
	commandbuf = AdjWork(clofstbuf  , _Byte_ * 32 , 32) ,
	NextEntry  = AdjWork(commandbuf , _LongWord_ * 8 , MAX_POLYGONS)
    } ;

#define		PCM_Buffer		SoundRAM+0x78000

/*------------------------------------------------------------------------*/

    const void*   MasterStack   = (void*)(WORK_AREA - 0x800) ;
    const void*   SlaveStack    = (void*)(WORK_AREA) ;
    const Uint16  MaxVertices   = MAX_VERTICES ;
    const Uint16  MaxPolygons   = MAX_POLYGONS ;
    const Uint16  EventSize     = sizeof(EVENT) ;
    const Uint16  WorkSize      = sizeof(WORK) ;
    const Uint16  MaxEvents     = MAX_EVENTS ;
    const Uint16  MaxWorks      = MAX_WORKS ;
    const void*   SortList      = (void*)(sort_list) ;
    const Uint32  SortListSize  = (MAX_POLYGONS + 6) * _LongWord_ * 3 ;
    const void*   Zbuffer       = (void*)(zbuffer) ;
    const void*   SpriteBuf     = (void*)(spritebuf) ;
    const Uint32  SpriteBufSize = _Sprite_ * (MAX_POLYGONS + 6) * 2 ;
    const void*   Pbuffer       = (void*)(pbuffer) ;
    const void*   CLOfstBuf     = (void*)(clofstbuf) ;
    const void*   CommandBuf    = (void*)(commandbuf) ;
    const void*   PCM_Work      = (void*)(PCM_Buffer) ;
    const Uint32  PCM_WkSize    = 0x8000 ;
    const void*   TransList     = (void*)(SystemWork - 0x0100) ;

    EVENT  EventBuf[MAX_EVENTS] ;
    WORK   WorkBuf[MAX_WORKS] ;
    EVENT* RemainEvent[MAX_EVENTS] ;
    WORK*  RemainWork[MAX_WORKS] ;

/*------------------------------------------------------------------------*/
