Bdisp_SetDDRegisterB

Synopsis #

Header: fxcg/display.h (Not yet in libfxcg)
Syscall index: 0x0194
Function signature: void Bdisp_SetDDRegisterB(int colorMode);

Used to enable/disable 8-color mode. Unlike Bdisp_EnableColor the results of this function are immediate.\

Parameters #

colorMode

  • If nonzero disable 8-color mode.
  • If zero enable 8-color mode.\

Comments #

Here is a disassembly of the function:

Bdisp_SetDDRegisterB:
        sts.l   pr, @-r15
        mov.l   #colorMode, r6
        extu.b  r4, r0
        tst r0, r0
        bt/s    r0_zero
        mov.b   r4, @r6
        cmp/eq  #1, r0
        bt  r0_one
        bra exit
        nop
! ---------------------------------------------------------------------------

r0_zero:
        bsr Bdisp_DDRegisterSelect
        mov #11, r4     ! Select register 11
        mov #0xFFFFFFB4, r2
        mov #1, r6
        shll8   r2
        mov #0, r4
        shll16  r2      ! r2 = 0xB4000000
        mov.w   r6, @r2     ! Enable 8 color mode
        synco
        bra sub_8004CB96
        lds.l   @r15+, pr
! ---------------------------------------------------------------------------

r0_one:
        bsr Bdisp_DDRegisterSelect
        mov #11, r4     ! Select register 11
        mov #0xFFFFFFB4, r2
        mov #0, r6
        shll8   r2
        mov #1, r4
        shll16  r2      ! r2 = 0xB4000000
        mov.w   r6, @r2     ! Disable 8 color mode
        synco
        bra sub_8004CB96
        lds.l   @r15+, pr
! ---------------------------------------------------------------------------

exit:
        lds.l   @r15+, pr
        rts
        nop
! End of function Bdisp_SetDDRegisterB