mirror of https://github.com/zeldaret/tmc.git
Merge pull request #237 from hatal175/DispMessageFrame
This commit is contained in:
commit
dff154f6b3
|
@ -1,135 +0,0 @@
|
|||
|
||||
.syntax unified
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r7, r0, #0
|
||||
adds r4, r1, #0
|
||||
adds r6, r2, #0
|
||||
mov r8, r3
|
||||
adds r3, r7, #0
|
||||
lsls r0, r6, #6
|
||||
adds r0, #0x40
|
||||
adds r2, r3, r0
|
||||
mov r0, r8
|
||||
strh r0, [r3]
|
||||
adds r3, #2
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #4
|
||||
mov sb, r1
|
||||
mov r0, r8
|
||||
mov r5, sb
|
||||
orrs r0, r5
|
||||
strh r0, [r2]
|
||||
adds r2, #2
|
||||
cmp r4, #0
|
||||
ble _08056E4C
|
||||
mov r0, r8
|
||||
adds r0, #1
|
||||
strh r0, [r3]
|
||||
adds r3, #2
|
||||
adds r1, r0, #0
|
||||
orrs r1, r5
|
||||
strh r1, [r2]
|
||||
adds r2, #2
|
||||
subs r4, #2
|
||||
adds r1, r4, #0
|
||||
subs r4, #1
|
||||
mov ip, r0
|
||||
cmp r1, #0
|
||||
ble _08056E30
|
||||
mov r5, r8
|
||||
adds r5, #2
|
||||
adds r1, r5, #0
|
||||
mov r0, sb
|
||||
orrs r1, r0
|
||||
_08056E20:
|
||||
strh r5, [r3]
|
||||
adds r3, #2
|
||||
strh r1, [r2]
|
||||
adds r2, #2
|
||||
adds r0, r4, #0
|
||||
subs r4, #1
|
||||
cmp r0, #0
|
||||
bgt _08056E20
|
||||
_08056E30:
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #3
|
||||
adds r0, r1, #0
|
||||
mov r1, ip
|
||||
orrs r1, r0
|
||||
strh r1, [r3]
|
||||
adds r3, #2
|
||||
movs r5, #0xc0
|
||||
lsls r5, r5, #4
|
||||
adds r0, r5, #0
|
||||
mov r1, ip
|
||||
orrs r1, r0
|
||||
strh r1, [r2]
|
||||
adds r2, #2
|
||||
_08056E4C:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #3
|
||||
adds r5, r0, #0
|
||||
mov r0, r8
|
||||
orrs r0, r5
|
||||
strh r0, [r3]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #4
|
||||
adds r1, r0, #0
|
||||
mov r0, r8
|
||||
orrs r0, r1
|
||||
strh r0, [r2]
|
||||
adds r7, #0x40
|
||||
adds r3, #0x40
|
||||
cmp r6, #0
|
||||
ble _08056EB6
|
||||
mov r0, r8
|
||||
adds r0, #3
|
||||
strh r0, [r7]
|
||||
adds r1, r0, #0
|
||||
orrs r1, r5
|
||||
strh r1, [r3]
|
||||
adds r7, #0x40
|
||||
adds r3, #0x40
|
||||
subs r6, #2
|
||||
adds r1, r6, #0
|
||||
subs r6, #1
|
||||
adds r2, r0, #0
|
||||
cmp r1, #0
|
||||
ble _08056EA0
|
||||
mov r4, r8
|
||||
adds r4, #4
|
||||
adds r1, r4, #0
|
||||
orrs r1, r5
|
||||
_08056E90:
|
||||
strh r4, [r7]
|
||||
strh r1, [r3]
|
||||
adds r7, #0x40
|
||||
adds r3, #0x40
|
||||
adds r0, r6, #0
|
||||
subs r6, #1
|
||||
cmp r0, #0
|
||||
bgt _08056E90
|
||||
_08056EA0:
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #4
|
||||
adds r0, r1, #0
|
||||
adds r1, r2, #0
|
||||
orrs r1, r0
|
||||
strh r1, [r7]
|
||||
movs r5, #0xc0
|
||||
lsls r5, r5, #4
|
||||
adds r0, r5, #0
|
||||
orrs r2, r0
|
||||
strh r2, [r3]
|
||||
_08056EB6:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
.syntax divided
|
|
@ -126,6 +126,6 @@ void MessageFromTarget(u32 index);
|
|||
*/
|
||||
void MessageAtHeight(u32 index, u32 y);
|
||||
|
||||
void DispMessageFrame(u16*, u32, u32, u32);
|
||||
void DispMessageFrame(u16*, s32, s32, u32);
|
||||
|
||||
#endif // MESSAGE_H
|
||||
|
|
|
@ -697,8 +697,49 @@ static void CreateWindow(void) {
|
|||
}
|
||||
|
||||
// Also used by figurine menu
|
||||
ASM_FUNC("asm/non_matching/textbox/DispMessageFrame.inc",
|
||||
void DispMessageFrame(u16* buffer, u32 width_, u32 height_, u32 flags_))
|
||||
void DispMessageFrame(u16* buffer, s32 width, s32 height, u32 flags) {
|
||||
u16* ptr = buffer;
|
||||
u16* ptr2 = &buffer[(height << 5) + 0x20];
|
||||
u32 flags1;
|
||||
u32 i;
|
||||
*ptr++ = flags;
|
||||
*ptr2++ = flags | 0x800;
|
||||
if (width > 0) {
|
||||
*ptr++ = flags + 1;
|
||||
*ptr2++ = (flags + 1) | 0x800;
|
||||
width -= 2;
|
||||
while (width-- > 0) {
|
||||
*ptr++ = flags + 2;
|
||||
*ptr2++ = (flags + 2) | 0x800;
|
||||
}
|
||||
|
||||
*ptr++ = (flags + 1) | (0x80 << 3);
|
||||
*ptr2++ = (flags + 1) | (0xc0 << 4);
|
||||
}
|
||||
|
||||
*ptr = flags | 0x400;
|
||||
*ptr2 = flags | 0xc00;
|
||||
buffer += 0x20;
|
||||
ptr += 0x20;
|
||||
|
||||
if (height > 0) {
|
||||
*buffer = flags + 3;
|
||||
*ptr = (flags + 3) | 0x400;
|
||||
buffer += 0x20;
|
||||
ptr += 0x20;
|
||||
|
||||
height -= 2;
|
||||
while (height-- > 0) {
|
||||
*buffer = flags + 4;
|
||||
*ptr = (flags + 4) | 0x400;
|
||||
buffer += 0x20;
|
||||
ptr += 0x20;
|
||||
}
|
||||
|
||||
*buffer = (flags + 3) | 0x800;
|
||||
*ptr++ = (flags + 3) | 0xc00;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Each character is two tiles tall.
|
||||
|
|
Loading…
Reference in New Issue