| 309 | } |
| 310 | |
| 311 | void GXSetChanAmbColor(GXChannelID channel, GXColor color) |
| 312 | { |
| 313 | u32 reg; |
| 314 | u32 rgb; |
| 315 | u32 colorID; |
| 316 | u8 alpha; |
| 317 | |
| 318 | switch (channel) |
| 319 | { |
| 320 | case GX_COLOR0: |
| 321 | rgb = __GXData->ambColor[GX_COLOR0]; |
| 322 | reg = GX_SET_TRUNC(GXCOLOR_AS_U32(color) & ~0xff, rgb, 24, 31); |
| 323 | colorID = GX_COLOR0; |
| 324 | break; |
| 325 | case GX_COLOR1: |
| 326 | rgb = __GXData->ambColor[GX_COLOR1]; |
| 327 | reg = GX_SET_TRUNC(GXCOLOR_AS_U32(color) & ~0xff, rgb, 24, 31); |
| 328 | colorID = GX_COLOR1; |
| 329 | break; |
| 330 | case GX_ALPHA0: |
| 331 | reg = __GXData->ambColor[GX_COLOR0]; |
| 332 | reg = GX_SET_TRUNC(reg, color.a, 24, 31); |
| 333 | colorID = GX_COLOR0; |
| 334 | break; |
| 335 | case GX_ALPHA1: |
| 336 | reg = __GXData->ambColor[GX_COLOR1]; |
| 337 | reg = GX_SET_TRUNC(reg, color.a, 24, 31); |
| 338 | colorID = GX_COLOR1; |
| 339 | break; |
| 340 | case GX_COLOR0A0: |
| 341 | reg = GXCOLOR_AS_U32(color); |
| 342 | colorID = GX_COLOR0; |
| 343 | break; |
| 344 | case GX_COLOR1A1: |
| 345 | reg = GXCOLOR_AS_U32(color); |
| 346 | colorID = GX_COLOR1; |
| 347 | break; |
| 348 | default: |
| 349 | return; |
| 350 | } |
| 351 | |
| 352 | GX_XF_LOAD_REG(0x100a + colorID, reg); |
| 353 | __GXData->bpSentNot = GX_TRUE; |
| 354 | __GXData->ambColor[colorID] = reg; |
| 355 | } |
| 356 | |
| 357 | void GXSetChanMatColor(GXChannelID channel, GXColor color) |
| 358 | { |