Merge pull request #383 from remicalixte/unk_0200BA78

decompile unk_0200BA78.s
This commit is contained in:
Akira Akashi
2021-05-23 11:06:21 +01:00
committed by GitHub
3 changed files with 55 additions and 86 deletions
-86
View File
@@ -1,86 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start FUN_0200BA78
FUN_0200BA78: ; 0x0200BA78
push {r3-r6, lr}
sub sp, #0xc
add r4, r2, #0x0
ldr r2, [sp, #0x2c]
add r6, r3, #0x0
str r2, [sp, #0x0]
ldr r2, [sp, #0x24]
ldr r3, [sp, #0x28]
add r5, r0, #0x0
bl FUN_0200B9A8
ldr r0, [sp, #0x24]
ldr r3, [sp, #0x20]
str r0, [sp, #0x0]
ldr r0, [sp, #0x28]
add r1, r4, #0x0
add r0, #0x10
str r0, [sp, #0x4]
ldr r0, [sp, #0x2c]
add r2, r6, #0x0
str r0, [sp, #0x8]
add r0, r5, #0x0
bl FUN_0200B9EC
add sp, #0xc
pop {r3-r6, pc}
thumb_func_start FUN_0200BAAC
FUN_0200BAAC: ; 0x0200BAAC
push {r3-r7, lr}
add r7, r0, #0x0
add r4, r2, #0x0
ldr r2, [r7, #0x28]
ldr r6, [sp, #0x18]
lsl r0, r2, #0x4
orr r0, r2
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
add r0, r7, #0x0
add r2, r3, #0x0
add r0, #0x8
add r3, r4, #0x0
bl ConvertUIntToDecimalString
ldrh r1, [r7, #0x8]
ldr r0, _0200BB10 ; =0x0000FFFF
cmp r1, r0
beq _0200BB0C
add r4, r7, #0x0
mov r5, #0x0
_0200BAD8:
ldrh r2, [r4, #0x8]
cmp r2, #0xa2
blo _0200BAF6
cmp r2, #0xab
bhi _0200BAF6
ldr r0, [r7, #0x4]
sub r2, #0xa2
ldr r1, [r0, #0x14]
lsl r0, r2, #0x5
add r0, r1, r0
add r1, r6, r5
mov r2, #0x20
bl MIi_CpuCopy32
b _0200BB00
_0200BAF6:
ldr r1, [sp, #0x0]
add r0, r6, r5
mov r2, #0x20
bl MI_CpuFill8
_0200BB00:
add r4, r4, #0x2
ldrh r1, [r4, #0x8]
ldr r0, _0200BB10 ; =0x0000FFFF
add r5, #0x20
cmp r1, r0
bne _0200BAD8
_0200BB0C:
pop {r3-r7, pc}
nop
_0200BB10: .word 0x0000FFFF
+36
View File
@@ -0,0 +1,36 @@
#include "global.h"
#include "unk_0200BA78.h"
#include "script_buffers.h"
THUMB_FUNC void FUN_0200BA78(struct UnkStruct_0200B870 *param0,
int param1,
u32 value,
u32 n,
enum PrintingMode mode,
struct Window *window,
int x,
int y)
{
FUN_0200B9A8(param0, param1, window, x, y);
FUN_0200B9EC(param0, value, n, mode, window, x + 16, y);
}
THUMB_FUNC void FUN_0200BAAC(
struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest)
{
u8 st0 = (u8)((param0->unk_28 << 4) | param0->unk_28);
ConvertUIntToDecimalString(param0->data, value, mode, n);
for (int i = 0; param0->data[i] != 0xffff; i++)
{
if (param0->data[i] >= 0xa2 && param0->data[i] <= 0xab)
{
MIi_CpuCopy32(
&param0->unk_4->unk_14[(param0->data[i] - 0xa2) << 5], dest + i * 0x20, 0x20);
}
else
{
MI_CpuFill8(dest + i * 0x20, st0, 0x20);
}
}
}
+19
View File
@@ -0,0 +1,19 @@
#ifndef POKEDIAMOND_UNK_0200BA78_H
#define POKEDIAMOND_UNK_0200BA78_H
#include "global.h"
#include "script_buffers.h"
void FUN_0200BA78(struct UnkStruct_0200B870 *param0,
int param1,
u32 value,
u32 n,
enum PrintingMode mode,
struct Window *window,
int x,
int y);
void FUN_0200BAAC(
struct UnkStruct_0200B870 *param0, u32 value, u32 n, enum PrintingMode mode, void *dest);
#endif // POKEDIAMOND_UNK_0200BA78_H