supSMS-GeckoCode/codes/ControllerInputDisplay/drawRect.s

38 lines
611 B
ArmAsm

/**
* r3: GXPrimitive
* r5: n (MUST be 4 or 5)
* rData: {x0: u8, y0: u8, x1: u8, y1: u8}
*
* rData += .Rect.size
*/
.set rIdx, rFVar0
drawRect:
addi rIdx, r5, 0
mflr rLR
## GXBegin()
bl .GXBegin
drawRect.loop:
## x
rlwinm r0, rIdx, 0, 0x2
psq_lx f0, rData, r0, 1, gqr.q
psq_st f0, 0(rGX), 1, gqr.dq
## y
addic. rIdx, rIdx, -1
rlwinm r0, rIdx, 0, 0x2
ori r0, r0, 1
psq_lx f0, rData, r0, 1, gqr.q
psq_st f0, 0(rGX), 1, gqr.dq
## z = 0
sth rZero, 0(rGX)
## color
stw rColor, 0(rGX)
## next
bgt+ drawRect.loop
drawRect.done:
addi rData, rData, .Rect.size
b .draw.epilogue