Port cable_car_util from Ruby

This commit is contained in:
PikalaxALT
2019-07-13 09:15:20 -04:00
parent 7ec965bd24
commit 19958a35c0
3 changed files with 39 additions and 163 deletions
-162
View File
@@ -1,162 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80D9614
sub_80D9614: @ 80D9614
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r10, r0
ldr r0, [sp, 0x24]
ldr r4, [sp, 0x28]
lsls r1, 16
lsrs r1, 16
mov r9, r1
lsls r2, 24
lsrs r2, 24
str r2, [sp]
lsls r3, 24
lsls r0, 24
lsrs r7, r0, 24
lsls r4, 24
lsrs r4, 24
mov r8, r4
movs r0, 0
lsrs r4, r3, 24
cmp r0, r8
bcs _080D968E
_080D9646:
ldr r2, [sp]
movs r3, 0
adds r6, r4, 0x1
adds r0, 0x1
mov r12, r0
cmp r3, r7
bcs _080D9678
lsls r5, r4, 6
_080D9656:
lsls r0, r2, 1
adds r0, r5
add r0, r10
mov r1, r9
strh r1, [r0]
adds r1, r2, 0x1
adds r0, r1, 0
asrs r0, 5
lsls r0, 5
subs r0, r1, r0
lsls r0, 24
lsrs r2, r0, 24
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, r7
bcc _080D9656
_080D9678:
adds r0, r6, 0
asrs r0, 5
lsls r0, 5
subs r0, r6, r0
lsls r0, 24
lsrs r4, r0, 24
mov r1, r12
lsls r0, r1, 24
lsrs r0, 24
cmp r0, r8
bcc _080D9646
_080D968E:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80D9614
thumb_func_start sub_80D96A0
sub_80D96A0: @ 80D96A0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r10, r0
ldr r0, [sp, 0x24]
ldr r4, [sp, 0x28]
lsls r2, 24
lsrs r2, 24
str r2, [sp]
lsls r3, 24
lsls r0, 24
lsrs r0, 24
mov r12, r0
lsls r4, 24
lsrs r4, 24
mov r9, r4
movs r0, 0
adds r5, r1, 0
lsrs r4, r3, 24
cmp r0, r9
bcs _080D971A
_080D96D0:
ldr r2, [sp]
movs r3, 0
adds r7, r4, 0x1
adds r0, 0x1
mov r8, r0
cmp r3, r12
bcs _080D9704
lsls r6, r4, 6
_080D96E0:
lsls r0, r2, 1
adds r0, r6
add r0, r10
ldrh r1, [r5]
strh r1, [r0]
adds r5, 0x2
adds r1, r2, 0x1
adds r0, r1, 0
asrs r0, 5
lsls r0, 5
subs r0, r1, r0
lsls r0, 24
lsrs r2, r0, 24
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, r12
bcc _080D96E0
_080D9704:
adds r0, r7, 0
asrs r0, 5
lsls r0, 5
subs r0, r7, r0
lsls r0, 24
lsrs r4, r0, 24
mov r1, r8
lsls r0, r1, 24
lsrs r0, 24
cmp r0, r9
bcc _080D96D0
_080D971A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80D96A0
.align 2, 0 @ Don't pad with nop.
+1 -1
View File
@@ -197,7 +197,7 @@ SECTIONS {
asm/battle_message.o(.text);
src/math_util.o(.text);
src/roulette_util.o(.text);
asm/cable_car_util.o(.text);
src/cable_car_util.o(.text);
src/save.o(.text);
src/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
+38
View File
@@ -0,0 +1,38 @@
#include "global.h"
void CableCarUtil_FillWrapped(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height)
{
u8 i;
u8 j;
u8 x;
u8 y;
for (i = 0, y = top; i < height; i++)
{
for (x = left, j = 0; j < width; j++)
{
*(u16 *)&((u8 *)dest)[y * 64 + x * 2] = value;
x = (x + 1) % 32;
}
y = (y + 1) % 32;
}
}
void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height)
{
u8 i;
u8 j;
u8 x;
u8 y;
const u16 *_src;
for (i = 0, _src = src, y = top; i < height; i++)
{
for (x = left, j = 0; j < width; j++)
{
*(u16 *)&((u8 *)dest)[y * 64 + x * 2] = *_src++;
x = (x + 1) % 32;
}
y = (y + 1) % 32;
}
}