Finish translating code_800AAA0 to C!

This commit is contained in:
Mateusz Naściszewski
2020-12-15 02:37:00 +01:00
parent efdaf621cb
commit 75b09a819a
3 changed files with 25 additions and 102 deletions

View File

@@ -1,101 +0,0 @@
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_800B294
sub_800B294:
push {lr}
adds r1, r0, 0
ldrb r0, [r1]
cmp r0, 0x41
bne _0800B2CC
ldrb r0, [r1, 0x1]
adds r2, r0, 0
cmp r2, 0x54
bne _0800B2B2
ldrb r0, [r1, 0x2]
cmp r0, 0x34
bne _0800B2B2
ldrb r0, [r1, 0x3]
cmp r0, 0x50
beq _0800B2C8
_0800B2B2:
ldrb r0, [r1]
cmp r0, 0x41
bne _0800B2CC
cmp r2, 0x54
bne _0800B2CC
ldrb r0, [r1, 0x2]
cmp r0, 0x33
bne _0800B2CC
ldrb r0, [r1, 0x3]
cmp r0, 0x50
bne _0800B2CC
_0800B2C8:
movs r0, 0x1
b _0800B2CE
_0800B2CC:
movs r0, 0
_0800B2CE:
pop {r1}
bx r1
thumb_func_end sub_800B294
thumb_func_start sub_800B2D4
sub_800B2D4:
push {r4-r6,lr}
adds r6, r0, 0
adds r5, r1, 0
adds r4, r2, 0
movs r2, 0
cmp r2, r4
bge _0800B324
_0800B2E2:
adds r0, r6, r2
ldrb r1, [r0]
adds r0, r5, r2
ldrb r3, [r0]
adds r0, r1, 0
subs r0, 0x41
lsls r0, 24
lsrs r0, 24
cmp r0, 0x19
bhi _0800B2FE
adds r0, r1, 0
adds r0, 0x20
lsls r0, 24
lsrs r1, r0, 24
_0800B2FE:
adds r0, r3, 0
subs r0, 0x41
lsls r0, 24
lsrs r0, 24
cmp r0, 0x19
bhi _0800B312
adds r0, r3, 0
adds r0, 0x20
lsls r0, 24
lsrs r3, r0, 24
_0800B312:
cmp r1, r3
beq _0800B31A
movs r0, 0x1
b _0800B326
_0800B31A:
cmp r1, 0
beq _0800B324
adds r2, 0x1
cmp r2, r4
blt _0800B2E2
_0800B324:
movs r0, 0
_0800B326:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_800B2D4
.align 2, 0 @ Don't pad with nop.

View File

@@ -68,7 +68,6 @@ SECTIONS {
asm/text.o(.text);
asm/code_8009804.o(.text);
src/file_system.o(.text);
asm/code_800AAA0.o(.text);
src/main.o(.text);
asm/code_800B540.o(.text);
src/code_800B5F0.o(.text);

View File

@@ -1632,3 +1632,28 @@ void DecompressAT_Finish(void) {
if (gDecompressBufferByteInInt)
*gDecompressBufferPtr = gDecompressBufferCurrent;
}
// 800B294
bool32 IsATxPCompressed_unused(char *data) {
if ((data[0] == 'A' && data[1] == 'T' && data[2] == '4' && data[3] == 'P')) return TRUE;
if ((data[0] == 'A' && data[1] == 'T' && data[2] == '3' && data[3] == 'P')) return TRUE;
return FALSE;
}
// 800B2D4
bool32 sub_800B2D4(char *arg0, char *arg1, int length) {
int i;
char a, b;
for (i = 0; i < length; i++) {
a = arg0[i];
b = arg1[i];
// convert to lowercase
if ('A' <= a && a <= 'Z') a += 0x20;
if ('A' <= b && b <= 'Z') b += 0x20;
if (a != b)
return TRUE;
if (a == '\0')
break;
}
return FALSE;
}