.include "asm/macros.inc" .include "global.inc" .section .text .balign 4, 0 thumb_func_start MOD37_02254854 MOD37_02254854: ; 0x02254854 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 mov r0, #8 mov r1, #0x14 add r7, r2, #0 str r3, [sp] bl AllocFromHeap add r4, r0, #0 beq _02254892 ldr r3, [sp] add r1, r6, #0 add r2, r7, #0 bl MOD37_0225489C cmp r0, #0 beq _0225488C ldr r0, _02254898 ; =MOD37_02254900 add r1, r4, #0 mov r2, #1 bl FUN_0200CA44 cmp r0, #0 beq _0225488C str r4, [r5] mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _0225488C: add r0, r4, #0 bl FreeToHeap _02254892: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} nop _02254898: .word MOD37_02254900 thumb_func_end MOD37_02254854 thumb_func_start MOD37_0225489C MOD37_0225489C: ; 0x0225489C push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 add r1, r5, #0 add r6, r2, #0 add r0, r3, #0 add r1, #8 mov r2, #4 str r3, [r5, #4] bl FUN_02089418 cmp r0, #0 bne _022548BA mov r0, #1 str r0, [r5, #8] _022548BA: add r0, r5, #0 add r1, r5, #0 add r0, #0xc add r1, #8 add r2, r6, #0 bl MOD37_02254A54 cmp r0, #0 beq _022548DA mov r0, #0 strb r0, [r5] strb r0, [r5, #1] strb r0, [r5, #2] str r4, [r5, #0x10] mov r0, #1 pop {r4, r5, r6, pc} _022548DA: mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_end MOD37_0225489C thumb_func_start MOD37_022548E0 MOD37_022548E0: ; 0x022548E0 push {r4, lr} add r4, r0, #0 add r1, r4, #0 ldr r0, [r4, #4] add r1, #8 mov r2, #4 bl FUN_020893F0 ldr r0, [r4, #0xc] bl MOD37_02254B0C add r0, r4, #0 bl FreeToHeap pop {r4, pc} .align 2, 0 thumb_func_end MOD37_022548E0 thumb_func_start MOD37_02254900 MOD37_02254900: ; 0x02254900 push {r3, r4, r5, lr} add r4, r1, #0 ldrb r1, [r4] add r5, r0, #0 cmp r1, #3 bhs _0225492C lsl r2, r1, #2 ldr r1, _02254930 ; =MOD37_02254D28 add r0, r4, #0 ldr r1, [r1, r2] blx r1 cmp r0, #0 beq _0225492C add r0, r4, #0 bl MOD37_022548E0 add r0, r5, #0 bl FUN_0200CAB4 ldr r0, [r4, #0x10] bl MOD20_022529A0 _0225492C: pop {r3, r4, r5, pc} nop _02254930: .word MOD37_02254D28 thumb_func_end MOD37_02254900 thumb_func_start MOD37_02254934 MOD37_02254934: ; 0x02254934 mov r1, #1 strb r1, [r0, #2] bx lr .align 2, 0 thumb_func_end MOD37_02254934 thumb_func_start MOD37_0225493C MOD37_0225493C: ; 0x0225493C ldrb r2, [r0, #2] cmp r2, #0 bne _02254944 b _02254946 _02254944: mov r1, #2 _02254946: strb r1, [r0] mov r1, #0 strb r1, [r0, #1] bx lr .align 2, 0 thumb_func_end MOD37_0225493C thumb_func_start MOD37_02254950 MOD37_02254950: ; 0x02254950 push {r4, lr} add r4, r0, #0 ldrb r0, [r4, #1] cmp r0, #0 beq _02254960 cmp r0, #1 beq _02254970 b _0225498A _02254960: ldr r0, [r4, #0xc] mov r1, #0 bl MOD37_02254B20 ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] b _0225498A _02254970: ldr r0, [r4, #0xc] mov r1, #0 bl MOD37_02254B44 cmp r0, #0 beq _0225498A ldr r0, [r4, #0x10] bl MOD20_0225298C add r0, r4, #0 mov r1, #1 bl MOD37_0225493C _0225498A: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD37_02254950 thumb_func_start MOD37_02254990 MOD37_02254990: ; 0x02254990 push {r4, lr} add r4, r0, #0 ldrb r1, [r4, #2] cmp r1, #0 beq _022549A0 mov r1, #2 bl MOD37_0225493C _022549A0: ldrb r0, [r4, #1] cmp r0, #0 beq _022549AC cmp r0, #1 beq _022549CE b _022549DE _022549AC: bl MOD37_02254A18 cmp r0, #0 beq _022549DE bl MTRandom mov r1, #1 and r0, r1 str r0, [r4, #8] ldr r0, [r4, #0xc] mov r1, #2 bl MOD37_02254B20 ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] b _022549DE _022549CE: ldr r0, [r4, #0xc] mov r1, #2 bl MOD37_02254B44 cmp r0, #0 beq _022549DE mov r0, #0 strb r0, [r4, #1] _022549DE: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD37_02254990 thumb_func_start MOD37_022549E4 MOD37_022549E4: ; 0x022549E4 push {r4, lr} add r4, r0, #0 ldrb r0, [r4, #1] cmp r0, #0 beq _022549F4 cmp r0, #1 beq _02254A04 b _02254A12 _022549F4: ldr r0, [r4, #0xc] mov r1, #1 bl MOD37_02254B20 ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] b _02254A12 _02254A04: ldr r0, [r4, #0xc] bl MOD37_02254B50 cmp r0, #0 beq _02254A12 mov r0, #1 pop {r4, pc} _02254A12: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_end MOD37_022549E4 thumb_func_start MOD37_02254A18 MOD37_02254A18: ; 0x02254A18 push {r3, lr} sub sp, #8 add r0, sp, #4 add r1, sp, #0 bl MOD20_02252BB8 cmp r0, #0 beq _02254A4E ldr r1, [sp, #4] mov r0, #0x70 sub r0, r0, r1 add r3, r0, #0 mul r3, r0 ldr r1, [sp] mov r0, #0x90 sub r2, r0, r1 add r1, r2, #0 mul r1, r2 str r1, [sp] add r1, r3, r1 lsl r0, r0, #2 str r3, [sp, #4] cmp r1, r0 bhs _02254A4E add sp, #8 mov r0, #1 pop {r3, pc} _02254A4E: mov r0, #0 add sp, #8 pop {r3, pc} thumb_func_end MOD37_02254A18 thumb_func_start MOD37_02254A54 MOD37_02254A54: ; 0x02254A54 push {r4, r5, r6, lr} add r5, r0, #0 add r6, r1, #0 mov r0, #8 mov r1, #0x48 bl AllocFromHeap add r4, r0, #0 beq _02254A94 add r0, #8 mov r1, #4 bl MOD20_022536F4 str r6, [r4] bl MOD20_02252D34 str r0, [r4, #4] bl MOD20_02252D24 str r0, [r4, #0x20] add r0, r4, #0 bl MOD37_02254AA0 ldr r1, _02254A98 ; =0xFFFF5800 ldr r0, _02254A9C ; =MOD37_02254DA0 str r1, [r0] mov r1, #0xb lsl r1, r1, #8 str r1, [r0, #4] str r4, [r5] mov r0, #1 pop {r4, r5, r6, pc} _02254A94: mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 _02254A98: .word 0xFFFF5800 _02254A9C: .word MOD37_02254DA0 thumb_func_end MOD37_02254A54 thumb_func_start MOD37_02254AA0 MOD37_02254AA0: ; 0x02254AA0 push {r3, r4, lr} sub sp, #0xc mov r3, #0 str r3, [sp] mov r2, #1 add r4, r0, #0 str r2, [sp, #4] mov r0, #8 str r0, [sp, #8] mov r0, #0xc mov r1, #0x39 bl GfGfxLoader_LoadWholePalette mov r0, #8 str r0, [sp] add r0, r4, #0 add r0, #0x28 mov r1, #0xc mov r2, #0x37 mov r3, #0x38 bl MOD20_02253FBC add r2, r4, #0 ldr r0, [r4, #0x20] ldr r1, _02254AF0 ; =MOD37_02254D34 add r2, #0x28 bl MOD20_02253E74 str r0, [r4, #0x24] ldr r0, [r4] ldr r0, [r0] cmp r0, #0 bne _02254AEA ldr r0, [r4, #0x24] mov r1, #2 bl MOD20_02253F28 _02254AEA: add sp, #0xc pop {r3, r4, pc} nop _02254AF0: .word MOD37_02254D34 thumb_func_end MOD37_02254AA0 thumb_func_start MOD37_02254AF4 MOD37_02254AF4: ; 0x02254AF4 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x20] ldr r1, [r4, #0x24] bl MOD20_02253F14 add r4, #0x28 add r0, r4, #0 bl MOD20_02254014 pop {r4, pc} .align 2, 0 thumb_func_end MOD37_02254AF4 thumb_func_start MOD37_02254B0C MOD37_02254B0C: ; 0x02254B0C push {r4, lr} add r4, r0, #0 beq _02254B1C bl MOD37_02254AF4 add r0, r4, #0 bl FreeToHeap _02254B1C: pop {r4, pc} .align 2, 0 thumb_func_end MOD37_02254B0C thumb_func_start MOD37_02254B20 MOD37_02254B20: ; 0x02254B20 push {lr} sub sp, #0xc add r2, r0, #0 add r0, #8 str r0, [sp] mov r0, #2 str r0, [sp, #4] mov r0, #8 str r0, [sp, #8] ldr r0, _02254B40 ; =MOD37_02254D60 ldr r3, [r2] bl MOD20_022537E0 add sp, #0xc pop {pc} nop _02254B40: .word MOD37_02254D60 thumb_func_end MOD37_02254B20 thumb_func_start MOD37_02254B44 MOD37_02254B44: ; 0x02254B44 ldr r3, _02254B4C ; =MOD20_02253794 add r0, #8 bx r3 nop _02254B4C: .word MOD20_02253794 thumb_func_end MOD37_02254B44 thumb_func_start MOD37_02254B50 MOD37_02254B50: ; 0x02254B50 ldr r3, _02254B58 ; =MOD20_022537B8 add r0, #8 bx r3 nop _02254B58: .word MOD20_022537B8 thumb_func_end MOD37_02254B50 thumb_func_start MOD37_02254B5C MOD37_02254B5C: ; 0x02254B5C push {r4, lr} add r4, r0, #0 bl MOD20_022538A0 add r0, #8 add r1, r4, #0 bl MOD20_02253888 pop {r4, pc} .align 2, 0 thumb_func_end MOD37_02254B5C thumb_func_start MOD37_02254B70 MOD37_02254B70: ; 0x02254B70 push {r4, r5, lr} sub sp, #0x14 add r4, r1, #0 add r0, r4, #0 bl MOD20_022538A0 add r5, r0, #0 ldr r0, [r5, #4] ldr r2, _02254BF4 ; =MOD37_02254D44 mov r1, #6 mov r3, #0 bl InitBgFromTemplate mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] ldr r2, [r5, #4] mov r0, #0xc mov r1, #0x36 mov r3, #6 bl GfGfxLoader_LoadCharData mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #8 str r0, [sp, #0xc] ldr r2, [r5, #4] mov r0, #0xc mov r1, #0x35 mov r3, #6 bl GfGfxLoader_LoadScrnData mov r0, #0 add r1, r0, #0 bl MOD20_02252D7C ldr r0, [r5, #4] mov r1, #6 bl BgCommitTilemapBufferToVram ldr r1, _02254BF8 ; =0x04001000 ldr r0, _02254BFC ; =0xFFFFE0FF ldr r3, [r1] ldr r2, [r1] str r3, [sp, #0x10] and r0, r2 lsl r2, r3, #0x13 lsr r3, r2, #0x1b mov r2, #4 orr r2, r3 lsl r2, r2, #8 orr r0, r2 str r0, [r1] add r0, r4, #0 bl MOD37_02254B5C add sp, #0x14 pop {r4, r5, pc} nop _02254BF4: .word MOD37_02254D44 _02254BF8: .word 0x04001000 _02254BFC: .word 0xFFFFE0FF thumb_func_end MOD37_02254B70 thumb_func_start MOD37_02254C00 MOD37_02254C00: ; 0x02254C00 push {r3, r4, r5, lr} add r5, r1, #0 add r0, r5, #0 bl MOD20_022538A0 add r4, r0, #0 add r0, r5, #0 bl MOD20_022538AC cmp r0, #0 beq _02254C1C cmp r0, #1 beq _02254C26 pop {r3, r4, r5, pc} _02254C1C: mov r0, #1 str r0, [r4, #0x44] add r0, r5, #0 bl MOD20_022538B0 _02254C26: add r0, r4, #0 mov r1, #2 bl MOD37_02254B44 cmp r0, #0 beq _02254C40 ldr r0, [r4, #4] mov r1, #6 bl FreeBgTilemapBuffer add r0, r5, #0 bl MOD37_02254B5C _02254C40: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_end MOD37_02254C00 thumb_func_start MOD37_02254C44 MOD37_02254C44: ; 0x02254C44 push {r4, r5, r6, lr} add r5, r1, #0 add r0, r5, #0 bl MOD20_022538A0 add r4, r0, #0 add r0, r5, #0 bl MOD20_022538A4 add r6, r0, #0 add r0, r5, #0 bl MOD20_022538AC cmp r0, #0 beq _02254C6C cmp r0, #1 beq _02254C90 cmp r0, #2 beq _02254D10 pop {r4, r5, r6, pc} _02254C6C: ldr r0, _02254D18 ; =0x00000675 bl MOD20_02252B28 ldr r0, [r4, #0x24] mov r1, #0 bl MOD20_02253F28 mov r0, #9 lsl r0, r0, #0x10 str r0, [r4, #0x3c] ldr r0, _02254D1C ; =MOD37_02254DA0 ldr r0, [r0] str r0, [r4, #0x40] mov r0, #0 str r0, [r4, #0x44] add r0, r5, #0 bl MOD20_022538B0 _02254C90: ldr r0, [r4, #0x44] cmp r0, #0 beq _02254C9E add r0, r5, #0 bl MOD37_02254B5C pop {r4, r5, r6, pc} _02254C9E: ldr r1, [r4, #0x3c] ldr r0, [r4, #0x40] add r0, r1, r0 str r0, [r4, #0x3c] ldr r0, _02254D1C ; =MOD37_02254DA0 ldr r1, [r4, #0x40] ldr r0, [r0, #4] add r1, r1, r0 str r1, [r4, #0x40] cmp r1, #0 ble _02254D02 mov r0, #9 ldr r2, [r4, #0x3c] lsl r0, r0, #0x10 cmp r2, r0 blt _02254D02 mov r0, #0x38 mul r0, r1 mov r1, #0x64 bl _s32_div_f neg r1, r0 ldr r0, _02254D20 ; =0xFFFFE000 str r1, [r4, #0x40] cmp r1, r0 ldr r0, _02254D24 ; =0x00000676 bge _02254CE0 bl MOD20_02252B28 mov r0, #9 lsl r0, r0, #0x10 str r0, [r4, #0x3c] b _02254D02 _02254CE0: bl MOD20_02252B28 ldr r0, [r6] cmp r0, #0 beq _02254CEE mov r1, #1 b _02254CF0 _02254CEE: mov r1, #2 _02254CF0: ldr r0, [r4, #0x24] bl MOD20_02253F28 mov r0, #9 lsl r0, r0, #0x10 str r0, [r4, #0x3c] add r0, r5, #0 bl MOD20_022538B0 _02254D02: mov r1, #7 ldr r0, [r4, #0x24] ldr r2, [r4, #0x3c] lsl r1, r1, #0x10 bl MOD20_02253F64 pop {r4, r5, r6, pc} _02254D10: add r0, r5, #0 bl MOD37_02254B5C pop {r4, r5, r6, pc} .align 2, 0 _02254D18: .word 0x00000675 _02254D1C: .word MOD37_02254DA0 _02254D20: .word 0xFFFFE000 _02254D24: .word 0x00000676 thumb_func_end MOD37_02254C44 .section .rodata .global MOD37_02254D28 MOD37_02254D28: ; 0x02254D28 .word MOD37_02254950, MOD37_02254990, MOD37_022549E4 .global MOD37_02254D34 MOD37_02254D34: ; 0x02254D34 .byte 0x00, 0x00, 0x07, 0x00 .byte 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 .global MOD37_02254D44 MOD37_02254D44: ; 0x02254D44 .byte 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0E, 0x00 .byte 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 .global MOD37_02254D60 MOD37_02254D60: ; 0x02254D60 .word 0x00, MOD37_02254B70, 0x00 .word 0x01, MOD37_02254C00, 0x00 .word 0x02, MOD37_02254C44, 0x00 .word 0x00, 0x00000000, 0x00 .section .bss .global MOD37_02254DA0 MOD37_02254DA0: ; 0x02254DA0 .space 8