A real hardware effect
This is UpdateWindowCircleEffect from Klonoa: Empire of Dreams. Each scanline it computes the horizontal span of a circular window and writes it to the GBA's window register REG_WIN1H, which packs the left and right edges as (left << 8) | right.
The function reads REG_VCOUNT and a script-state radius, runs a chain of fixed-point arithmetic, hands the result to the BIOS square-root routine (BiosSquareRoot, reached with a bl), halves it, and writes the packed edges — guarded so an oversized half-width stores 0 instead.
The packed-write idiom on its own — writing two bytes to a different register — looks like this:
lsl r0, r0, #0x18
lsl r1, r1, #0x18
lsr r1, r1, #0x18
ldr r2, .L3
lsr r0, r0, #0x10
orr r0, r0, r1
strh r0, [r2]
bx lr
The register's address comes from a .word in the constant pool (the ldr r2, .L3), the two bytes are shifted into place and orr'd, and strh writes the half-word. The full exercise wraps a lot more arithmetic and a bl around that final write — work through the target a few instructions at a time.
Your task
Write UpdateWindowCircleEffect to reproduce the target assembly.