64 lines
1.4 KiB
NASM
64 lines
1.4 KiB
NASM
//=============================================================================
|
|
// void print_string_hlight_pixels(WINDOW* window, char* str, int x,
|
|
// int y, bool highlight)
|
|
// In:
|
|
// r0: window
|
|
// r1: address of string to print
|
|
// r2: x (pixel)
|
|
// r3: y (pixel)
|
|
// sp: highlight
|
|
// Out:
|
|
// r0: number of characters printed
|
|
// r1: number of pixels printed
|
|
//=============================================================================
|
|
|
|
print_string_hlight_pixels:
|
|
// Copied from C96F0
|
|
// Basically it's the exact same subroutine, only in pixels instead of tiles
|
|
push {r4-r7,lr}
|
|
mov r7,r8
|
|
push {r7}
|
|
mov r6,r1
|
|
ldr r1,[sp,0x18]
|
|
lsl r1,r1,0x10
|
|
mov r7,0
|
|
ldr r5,=0x3005228
|
|
ldrh r4,[r5,0]
|
|
lsl r4,r4,0x10
|
|
asr r4,r4,0x1C
|
|
mov r8,r4
|
|
lsr r4,r1,0x10
|
|
mov r12,r4
|
|
asr r1,r1,0x10
|
|
add r1,r8
|
|
lsl r1,r1,0xC
|
|
strh r1,[r5,0]
|
|
ldrh r1,[r0,0x22]
|
|
lsl r1,r1,3
|
|
add r1,r1,r2
|
|
ldrh r2,[r0,0x24]
|
|
lsl r2,r2,3
|
|
add r2,r2,r3
|
|
mov r0,r6
|
|
bl print_string
|
|
lsr r1,r0,16
|
|
lsl r0,r0,16
|
|
lsr r7,r0,16
|
|
ldrh r0,[r5,0]
|
|
lsl r0,r0,0x10
|
|
asr r0,r0,0x1C
|
|
mov r4,r12
|
|
lsl r3,r4,0x10
|
|
asr r3,r3,0x10
|
|
sub r0,r0,r3
|
|
lsl r0,r0,0xC
|
|
strh r0,[r5,0]
|
|
lsl r0,r7,0x10
|
|
asr r0,r0,0x10
|
|
pop {r3}
|
|
mov r8,r3
|
|
pop {r4-r7}
|
|
pop {r2}
|
|
bx r2
|
|
.pool
|