From c04649cf06c21b01d18bfadfdf2f7537f08b8df4 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 28 Jul 2020 19:23:03 +0100 Subject: start decomping mod63_021DB450 --- arm9/Makefile | 6 +- arm9/arm9.lsf | 1 + arm9/modules/63/asm/mod63_021DB450.s | 720 ------------------------------- arm9/modules/63/asm/mod63_021DB450_asm.s | 701 ++++++++++++++++++++++++++++++ arm9/modules/63/include/mod63_021DB450.h | 8 + arm9/modules/63/src/mod63_021DB450.c | 13 + 6 files changed, 727 insertions(+), 722 deletions(-) delete mode 100644 arm9/modules/63/asm/mod63_021DB450.s create mode 100644 arm9/modules/63/asm/mod63_021DB450_asm.s create mode 100644 arm9/modules/63/include/mod63_021DB450.h create mode 100644 arm9/modules/63/src/mod63_021DB450.c diff --git a/arm9/Makefile b/arm9/Makefile index 42228747..d537fbd7 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -53,6 +53,8 @@ LD_TEMPLATE := ARM9-TS.lcf.template SRC_DIRS := src lib lib/src $(sort $(wildcard modules/*/src)) ASM_DIRS := asm data files $(sort $(wildcard modules/*/asm)) LIBASM_DIRS := lib/syscall +INCLUDE_RECURSIVE_DIRS := ../include-mw lib/include +INCLUDE_DIRS := ../include $(sort $(wildcard modules/*/include)) C_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.c))) CXX_FILES := $(foreach dir,$(SRC_DIRS),$(sort $(wildcard $(dir)/*.cpp))) @@ -102,8 +104,8 @@ OBJCOPY := $(CROSS)objcopy # ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o ASFLAGS = -proc arm5te -i ../include -i .. -D$(GAME_VERSION) -D$(GAME_LANGUAGE) -CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) -CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) +CFLAGS = -O4,p -gccext,on -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) +CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off $(foreach dir,$(INCLUDE_DIRS),-i $(dir)) $(foreach dir,$(INCLUDE_RECURSIVE_DIRS),-ir $(dir)) -interworking -DFS_IMPLEMENT -enum int -W all -D$(GAME_VERSION) -D$(GAME_LANGUAGE) LDFLAGS = -nodead -w off -proc v5te -interworking -map closure,unused -symtab sort -m _start LIBS := -Llib -lsyscall ARFLAGS = rcS diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 27d530ed..225d62cf 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -946,6 +946,7 @@ Overlay MODULE_63 Object mod63_021DA640.o Object mod63_021DAE5C.o Object mod63_021DB450.o + Object mod63_021DB450_asm.o } Overlay MODULE_64 diff --git a/arm9/modules/63/asm/mod63_021DB450.s b/arm9/modules/63/asm/mod63_021DB450.s deleted file mode 100644 index d93aa5ac..00000000 --- a/arm9/modules/63/asm/mod63_021DB450.s +++ /dev/null @@ -1,720 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - .balign 4, 0 - - thumb_func_start MOD63_021DB450 -MOD63_021DB450: ; 0x021DB450 - push {r4, lr} - ldr r3, _021DB470 ; =UNK_021064B8 - mov r2, #0 - ldr r3, [r3] - blx r3 - add r4, r0, #0 - bl FUN_0201327C - cmp r4, #0 - bne _021DB468 - bl ErrorHandling -_021DB468: - lsl r0, r4, #0x10 - lsr r0, r0, #0xd - pop {r4, pc} - nop -_021DB470: .word UNK_021064B8 - thumb_func_end MOD63_021DB450 - - thumb_func_start MOD63_021DB474 -MOD63_021DB474: ; 0x021DB474 - push {r4, lr} - ldr r3, _021DB494 ; =UNK_021064C0 - mov r2, #1 - ldr r3, [r3] - blx r3 - add r4, r0, #0 - bne _021DB486 - bl ErrorHandling -_021DB486: - add r0, r4, #0 - bl FUN_020132BC - lsl r0, r4, #0x10 - lsr r0, r0, #0xd - pop {r4, pc} - nop -_021DB494: .word UNK_021064C0 - thumb_func_end MOD63_021DB474 - - thumb_func_start MOD63_021DB498 -MOD63_021DB498: ; 0x021DB498 - mov r0, #0x20 - bx lr - thumb_func_end MOD63_021DB498 - - thumb_func_start MOD63_021DB49C -MOD63_021DB49C: ; 0x021DB49C - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - ldr r3, _021DB56C ; =MOD63_021DBECC - add r5, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x10 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - mov r0, #0x4c - bl FUN_02006D98 - ldr r7, _021DB570 ; =MOD63_021DBEF0 - str r0, [r5] - mov r4, #0 -_021DB4BA: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - lsl r6, r4, #2 - add r1, sp, #0x10 - ldr r1, [r1, r6] - add r0, sp, #0x1c - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - mov r2, #0 - mov r3, #2 - bl FUN_02068C00 - ldr r0, _021DB574 ; =0x000003FF - lsl r2, r4, #3 - str r0, [sp] - str r4, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - add r3, r7, r2 - ldr r0, [r5] - ldr r2, [r7, r2] - ldr r3, [r3, #4] - add r1, sp, #0x1c - add r6, r5, r6 - bl FUN_020073A0 - mov r1, #6 - mov r2, #1 - str r0, [r6, #4] - bl FUN_02007558 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #3 - blo _021DB4BA - ldr r0, [r5, #8] - mov r1, #0x23 - mov r2, #1 - bl FUN_02007558 - mov r0, #1 - str r0, [r5, #0x10] - bl FUN_02012CC8 - mov r1, #0x12 - mov r0, #0x4c - lsl r1, r1, #0xa - bl AllocFromHeap - str r0, [r5, #0x14] - mov r0, #1 - str r0, [sp] - mov r0, #0x4c - str r0, [sp, #4] - mov r3, #0x12 - ldr r0, _021DB578 ; =MOD63_021DB450 - ldr r1, _021DB57C ; =MOD63_021DB474 - ldr r2, [r5, #0x14] - lsl r3, r3, #0xa - bl FUN_02012CDC - str r0, [r5, #0x18] - bl FUN_0201343C - add r2, r0, #0 - mov r0, #1 - mov r1, #0xe1 - lsl r0, r0, #0xc - lsl r1, r1, #0xe - bl FUN_0201EC94 - mov r0, #0x3d - mov r1, #4 - mov r2, #0x4c - bl FUN_0201318C - add r1, r0, #0 - ldr r0, [r5, #0x18] - mov r2, #0xa - mov r3, #1 - bl FUN_02013194 - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - nop -_021DB56C: .word MOD63_021DBECC -_021DB570: .word MOD63_021DBEF0 -_021DB574: .word 0x000003FF -_021DB578: .word MOD63_021DB450 -_021DB57C: .word MOD63_021DB474 - thumb_func_end MOD63_021DB49C - - thumb_func_start MOD63_021DB580 -MOD63_021DB580: ; 0x021DB580 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x18] - bl FUN_02012DE4 - ldr r0, [r4, #0x14] - bl FreeToHeap - ldr r0, [r4] - bl FUN_020072E8 - pop {r4, pc} - thumb_func_end MOD63_021DB580 - - thumb_func_start MOD63_021DB598 -MOD63_021DB598: ; 0x021DB598 - push {r3, lr} - cmp r0, #0 - beq _021DB5A4 - ldr r0, [r0] - bl FUN_020081C4 -_021DB5A4: - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD63_021DB598 - - thumb_func_start MOD63_021DB5A8 -MOD63_021DB5A8: ; 0x021DB5A8 - push {r4, lr} - add r4, r0, #0 - beq _021DB5C8 - bl FUN_020222AC - bl FUN_020B02C8 - ldr r0, [r4] - bl FUN_02006ED4 - bl MOD63_021DB934 - mov r0, #1 - mov r1, #0 - bl FUN_020222B4 -_021DB5C8: - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD63_021DB5A8 - - thumb_func_start MOD63_021DB5CC -MOD63_021DB5CC: ; 0x021DB5CC - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - add r7, r2, #0 - ldrb r2, [r4, #0x1c] - add r5, r4, #0 - add r6, r1, #0 - add r5, #0x1c - cmp r2, #5 - bls _021DB5E2 - b _021DB6FC -_021DB5E2: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021DB5EE: ; jump table - .short _021DB5FA - _021DB5EE - 2 ; case 0 - .short _021DB63C - _021DB5EE - 2 ; case 1 - .short _021DB658 - _021DB5EE - 2 ; case 2 - .short _021DB690 - _021DB5EE - 2 ; case 3 - .short _021DB6BE - _021DB5EE - 2 ; case 4 - .short _021DB6E4 - _021DB5EE - 2 ; case 5 -_021DB5FA: - ldr r0, _021DB704 ; =0x0400004A - mov r1, #0x3f - ldrh r2, [r0] - add r7, r4, #4 - bic r2, r1 - mov r1, #0x11 - orr r1, r2 - mov r2, #0x20 - orr r1, r2 - strh r1, [r0] - lsl r0, r6, #2 - str r0, [sp] - ldr r0, [r7, r0] - mov r1, #0xc - lsl r2, r2, #5 - bl FUN_02007558 - ldr r0, [sp] - mov r2, #1 - ldr r0, [r7, r0] - mov r1, #0xd - lsl r2, r2, #0xa - bl FUN_02007558 - ldr r0, [sp] - mov r1, #6 - ldr r0, [r7, r0] - mov r2, #0 - bl FUN_02007558 - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_021DB63C: - ldr r2, _021DB708 ; =MOD63_021DBED8 - lsl r3, r6, #3 - ldr r2, [r2, r3] - add r0, r4, #0 - add r1, r6, #0 - blx r2 - cmp r0, #0 - beq _021DB6FC - mov r0, #0 - strb r0, [r4, #0x1d] - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB658: - ldr r0, [r4, #0x18] - mov r1, #1 - bl FUN_02013440 - lsl r0, r6, #2 - str r0, [sp, #4] - ldr r1, _021DB70C ; =MOD63_021DBF08 - lsl r6, r6, #3 - ldr r3, [sp, #4] - add r7, r4, #4 - ldr r0, [r4, #0x18] - ldr r1, [r1, r6] - ldr r2, _021DB710 ; =MOD63_021DB940 - ldr r3, [r7, r3] - bl FUN_020133AC - ldr r1, _021DB714 ; =MOD63_021DBF0C - ldr r3, [sp, #4] - ldr r0, [r4, #0x18] - ldr r1, [r1, r6] - ldr r2, _021DB710 ; =MOD63_021DB940 - ldr r3, [r7, r3] - bl FUN_020133AC - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB690: - ldr r0, [r4, #0x18] - bl FUN_020133C8 - cmp r0, #0 - bne _021DB6FC - ldr r0, _021DB718 ; =MOD63_021DBEC0 - lsl r1, r6, #2 - ldr r0, [r0, r1] - cmp r7, r0 - blt _021DB6FC - ldr r1, _021DB704 ; =0x0400004A - mov r0, #0x3f - ldrh r2, [r1] - bic r2, r0 - mov r0, #0x10 - orr r2, r0 - mov r0, #0x20 - orr r0, r2 - strh r0, [r1] - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB6BE: - ldr r2, _021DB71C ; =MOD63_021DBEDC - lsl r3, r6, #3 - ldr r2, [r2, r3] - blx r2 - cmp r0, #0 - beq _021DB6FC - lsl r0, r6, #2 - add r0, r4, r0 - ldr r0, [r0, #4] - mov r1, #6 - mov r2, #1 - bl FUN_02007558 - mov r0, #0 - strb r0, [r4, #0x1d] - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB6E4: - ldrb r0, [r4, #0x1d] - add r0, r0, #1 - strb r0, [r4, #0x1d] - ldrb r0, [r4, #0x1d] - cmp r0, #0x14 - blo _021DB6FC - mov r0, #0 - strb r0, [r4, #0x1d] - strb r0, [r5] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DB6FC: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DB704: .word 0x0400004A -_021DB708: .word MOD63_021DBED8 -_021DB70C: .word MOD63_021DBF08 -_021DB710: .word MOD63_021DB940 -_021DB714: .word MOD63_021DBF0C -_021DB718: .word MOD63_021DBEC0 -_021DB71C: .word MOD63_021DBEDC - thumb_func_end MOD63_021DB5CC - - thumb_func_start MOD63_021DB720 -MOD63_021DB720: ; 0x021DB720 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - mov r2, #6 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8c - bl FUN_020079E0 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8d - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB780 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB780: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB720 - - thumb_func_start MOD63_021DB784 -MOD63_021DB784: ; 0x021DB784 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - sub r2, r1, #3 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x13 - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB7CC - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB7CC: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB784 - - thumb_func_start MOD63_021DB7D0 -MOD63_021DB7D0: ; 0x021DB7D0 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x10 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8c - bl FUN_020079E0 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8d - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB832 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB832: - mov r0, #0 - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD63_021DB7D0 - - thumb_func_start MOD63_021DB838 -MOD63_021DB838: ; 0x021DB838 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - sub r2, r1, #6 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB880 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB880: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB838 - - thumb_func_start MOD63_021DB884 -MOD63_021DB884: ; 0x021DB884 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - mov r2, #8 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8c - bl FUN_020079E0 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8d - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB8E4 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB8E4: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB884 - - thumb_func_start MOD63_021DB8E8 -MOD63_021DB8E8: ; 0x021DB8E8 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - mov r2, #6 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x15 - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB930 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB930: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB8E8 - - thumb_func_start MOD63_021DB934 -MOD63_021DB934: ; 0x021DB934 - push {r3, lr} - bl FUN_02013364 - bl FUN_02013388 - pop {r3, pc} - thumb_func_end MOD63_021DB934 - - thumb_func_start MOD63_021DB940 -MOD63_021DB940: ; 0x021DB940 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - bl FUN_0201341C - add r2, sp, #0 - mov r1, #0 - str r1, [r2] - str r1, [r2, #4] - add r4, r0, #0 - str r1, [r2, #8] - bl FUN_0200782C - sub r0, #0x80 - mov r1, #0xac - mul r1, r0 - str r1, [sp] - add r0, r4, #0 - mov r1, #1 - bl FUN_0200782C - sub r0, #0x60 - mov r1, #0xac - mul r1, r0 - str r1, [sp, #4] - mov r0, #0x40 - str r0, [sp, #8] - ldr r0, [r5, #0x20] - ldr r1, [sp] - ldr r0, [r0] - ldr r0, [r0, #4] - add r0, r1, r0 - str r0, [r5, #0x28] - ldr r0, [r5, #0x20] - ldr r1, [sp, #4] - ldr r0, [r0] - ldr r0, [r0, #8] - add r0, r1, r0 - str r0, [r5, #0x2c] - ldr r0, [r5, #0x20] - ldr r1, [sp, #8] - ldr r0, [r0] - ldr r0, [r0, #0xc] - add r0, r1, r0 - str r0, [r5, #0x30] - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 - thumb_func_end MOD63_021DB940 - - .section .rodata - - .global MOD63_021DBEC0 -MOD63_021DBEC0: ; 0x021DBEC0 - .byte 0x03, 0x07, 0x00, 0x00, 0xCE, 0x07, 0x00, 0x00 - .byte 0xA8, 0x08, 0x00, 0x00 - - .global MOD63_021DBECC -MOD63_021DBECC: ; 0x021DBECC - .byte 0x83, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00 - - .global MOD63_021DBED8 -MOD63_021DBED8: ; 0x021DBED8 - .word MOD63_021DB720 - - .global MOD63_021DBEDC -MOD63_021DBEDC: ; 0x021DBEDC - .word MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884 - .word MOD63_021DB8E8 - - .global MOD63_021DBEF0 -MOD63_021DBEF0: ; 0x021DBEF0 - .byte 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 - .byte 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 - - .global MOD63_021DBF08 -MOD63_021DBF08: ; 0x021DBF08 - .byte 0x04, 0x00, 0x00, 0x00 - - .global MOD63_021DBF0C -MOD63_021DBF0C: ; 0x021DBF0C - .byte 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s new file mode 100644 index 00000000..044b2799 --- /dev/null +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -0,0 +1,701 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + + .extern MOD63_021DB450 + + thumb_func_start MOD63_021DB474 +MOD63_021DB474: ; 0x021DB474 + push {r4, lr} + ldr r3, _021DB494 ; =UNK_021064C0 + mov r2, #1 + ldr r3, [r3] + blx r3 + add r4, r0, #0 + bne _021DB486 + bl ErrorHandling +_021DB486: + add r0, r4, #0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_021DB494: .word UNK_021064C0 + thumb_func_end MOD63_021DB474 + + thumb_func_start MOD63_021DB498 +MOD63_021DB498: ; 0x021DB498 + mov r0, #0x20 + bx lr + thumb_func_end MOD63_021DB498 + + thumb_func_start MOD63_021DB49C +MOD63_021DB49C: ; 0x021DB49C + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + ldr r3, _021DB56C ; =MOD63_021DBECC + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x4c + bl FUN_02006D98 + ldr r7, _021DB570 ; =MOD63_021DBEF0 + str r0, [r5] + mov r4, #0 +_021DB4BA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + lsl r6, r4, #2 + add r1, sp, #0x10 + ldr r1, [r1, r6] + add r0, sp, #0x1c + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + mov r3, #2 + bl FUN_02068C00 + ldr r0, _021DB574 ; =0x000003FF + lsl r2, r4, #3 + str r0, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + add r3, r7, r2 + ldr r0, [r5] + ldr r2, [r7, r2] + ldr r3, [r3, #4] + add r1, sp, #0x1c + add r6, r5, r6 + bl FUN_020073A0 + mov r1, #6 + mov r2, #1 + str r0, [r6, #4] + bl FUN_02007558 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _021DB4BA + ldr r0, [r5, #8] + mov r1, #0x23 + mov r2, #1 + bl FUN_02007558 + mov r0, #1 + str r0, [r5, #0x10] + bl FUN_02012CC8 + mov r1, #0x12 + mov r0, #0x4c + lsl r1, r1, #0xa + bl AllocFromHeap + str r0, [r5, #0x14] + mov r0, #1 + str r0, [sp] + mov r0, #0x4c + str r0, [sp, #4] + mov r3, #0x12 + ldr r0, _021DB578 ; =MOD63_021DB450 + ldr r1, _021DB57C ; =MOD63_021DB474 + ldr r2, [r5, #0x14] + lsl r3, r3, #0xa + bl FUN_02012CDC + str r0, [r5, #0x18] + bl FUN_0201343C + add r2, r0, #0 + mov r0, #1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 + mov r0, #0x3d + mov r1, #4 + mov r2, #0x4c + bl FUN_0201318C + add r1, r0, #0 + ldr r0, [r5, #0x18] + mov r2, #0xa + mov r3, #1 + bl FUN_02013194 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021DB56C: .word MOD63_021DBECC +_021DB570: .word MOD63_021DBEF0 +_021DB574: .word 0x000003FF +_021DB578: .word MOD63_021DB450 +_021DB57C: .word MOD63_021DB474 + thumb_func_end MOD63_021DB49C + + thumb_func_start MOD63_021DB580 +MOD63_021DB580: ; 0x021DB580 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_02012DE4 + ldr r0, [r4, #0x14] + bl FreeToHeap + ldr r0, [r4] + bl FUN_020072E8 + pop {r4, pc} + thumb_func_end MOD63_021DB580 + + thumb_func_start MOD63_021DB598 +MOD63_021DB598: ; 0x021DB598 + push {r3, lr} + cmp r0, #0 + beq _021DB5A4 + ldr r0, [r0] + bl FUN_020081C4 +_021DB5A4: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD63_021DB598 + + thumb_func_start MOD63_021DB5A8 +MOD63_021DB5A8: ; 0x021DB5A8 + push {r4, lr} + add r4, r0, #0 + beq _021DB5C8 + bl FUN_020222AC + bl FUN_020B02C8 + ldr r0, [r4] + bl FUN_02006ED4 + bl MOD63_021DB934 + mov r0, #1 + mov r1, #0 + bl FUN_020222B4 +_021DB5C8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD63_021DB5A8 + + thumb_func_start MOD63_021DB5CC +MOD63_021DB5CC: ; 0x021DB5CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + add r7, r2, #0 + ldrb r2, [r4, #0x1c] + add r5, r4, #0 + add r6, r1, #0 + add r5, #0x1c + cmp r2, #5 + bls _021DB5E2 + b _021DB6FC +_021DB5E2: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021DB5EE: ; jump table + .short _021DB5FA - _021DB5EE - 2 ; case 0 + .short _021DB63C - _021DB5EE - 2 ; case 1 + .short _021DB658 - _021DB5EE - 2 ; case 2 + .short _021DB690 - _021DB5EE - 2 ; case 3 + .short _021DB6BE - _021DB5EE - 2 ; case 4 + .short _021DB6E4 - _021DB5EE - 2 ; case 5 +_021DB5FA: + ldr r0, _021DB704 ; =0x0400004A + mov r1, #0x3f + ldrh r2, [r0] + add r7, r4, #4 + bic r2, r1 + mov r1, #0x11 + orr r1, r2 + mov r2, #0x20 + orr r1, r2 + strh r1, [r0] + lsl r0, r6, #2 + str r0, [sp] + ldr r0, [r7, r0] + mov r1, #0xc + lsl r2, r2, #5 + bl FUN_02007558 + ldr r0, [sp] + mov r2, #1 + ldr r0, [r7, r0] + mov r1, #0xd + lsl r2, r2, #0xa + bl FUN_02007558 + ldr r0, [sp] + mov r1, #6 + ldr r0, [r7, r0] + mov r2, #0 + bl FUN_02007558 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DB63C: + ldr r2, _021DB708 ; =MOD63_021DBED8 + lsl r3, r6, #3 + ldr r2, [r2, r3] + add r0, r4, #0 + add r1, r6, #0 + blx r2 + cmp r0, #0 + beq _021DB6FC + mov r0, #0 + strb r0, [r4, #0x1d] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB658: + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02013440 + lsl r0, r6, #2 + str r0, [sp, #4] + ldr r1, _021DB70C ; =MOD63_021DBF08 + lsl r6, r6, #3 + ldr r3, [sp, #4] + add r7, r4, #4 + ldr r0, [r4, #0x18] + ldr r1, [r1, r6] + ldr r2, _021DB710 ; =MOD63_021DB940 + ldr r3, [r7, r3] + bl FUN_020133AC + ldr r1, _021DB714 ; =MOD63_021DBF0C + ldr r3, [sp, #4] + ldr r0, [r4, #0x18] + ldr r1, [r1, r6] + ldr r2, _021DB710 ; =MOD63_021DB940 + ldr r3, [r7, r3] + bl FUN_020133AC + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB690: + ldr r0, [r4, #0x18] + bl FUN_020133C8 + cmp r0, #0 + bne _021DB6FC + ldr r0, _021DB718 ; =MOD63_021DBEC0 + lsl r1, r6, #2 + ldr r0, [r0, r1] + cmp r7, r0 + blt _021DB6FC + ldr r1, _021DB704 ; =0x0400004A + mov r0, #0x3f + ldrh r2, [r1] + bic r2, r0 + mov r0, #0x10 + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB6BE: + ldr r2, _021DB71C ; =MOD63_021DBEDC + lsl r3, r6, #3 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021DB6FC + lsl r0, r6, #2 + add r0, r4, r0 + ldr r0, [r0, #4] + mov r1, #6 + mov r2, #1 + bl FUN_02007558 + mov r0, #0 + strb r0, [r4, #0x1d] + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] + b _021DB6FC +_021DB6E4: + ldrb r0, [r4, #0x1d] + add r0, r0, #1 + strb r0, [r4, #0x1d] + ldrb r0, [r4, #0x1d] + cmp r0, #0x14 + blo _021DB6FC + mov r0, #0 + strb r0, [r4, #0x1d] + strb r0, [r5] + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB6FC: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DB704: .word 0x0400004A +_021DB708: .word MOD63_021DBED8 +_021DB70C: .word MOD63_021DBF08 +_021DB710: .word MOD63_021DB940 +_021DB714: .word MOD63_021DBF0C +_021DB718: .word MOD63_021DBEC0 +_021DB71C: .word MOD63_021DBEDC + thumb_func_end MOD63_021DB5CC + + thumb_func_start MOD63_021DB720 +MOD63_021DB720: ; 0x021DB720 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB780 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB780: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB720 + + thumb_func_start MOD63_021DB784 +MOD63_021DB784: ; 0x021DB784 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + sub r2, r1, #3 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x13 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB7CC + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB7CC: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB784 + + thumb_func_start MOD63_021DB7D0 +MOD63_021DB7D0: ; 0x021DB7D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x10 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB832 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB832: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB7D0 + + thumb_func_start MOD63_021DB838 +MOD63_021DB838: ; 0x021DB838 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + sub r2, r1, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB880 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB880: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB838 + + thumb_func_start MOD63_021DB884 +MOD63_021DB884: ; 0x021DB884 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #8 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x11 + bl FUN_020079E0 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8c + bl FUN_020079E0 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x8d + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB8E4 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB8E4: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB884 + + thumb_func_start MOD63_021DB8E8 +MOD63_021DB8E8: ; 0x021DB8E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r1, #2 + add r0, r5, r0 + ldr r4, [r0, #4] + mov r1, #0 + add r0, r4, #0 + mov r2, #6 + bl FUN_020079E0 + mov r1, #1 + add r2, r1, #0 + add r0, r4, #0 + sub r2, #0x15 + bl FUN_020079E0 + ldrb r0, [r5, #0x1d] + add r0, r0, #1 + strb r0, [r5, #0x1d] + ldrb r0, [r5, #0x1d] + cmp r0, #6 + blo _021DB930 + mov r1, #0xc + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0 + add r0, r4, #0 + add r2, #0xf3 + bl FUN_02007558 + mov r0, #1 + pop {r3, r4, r5, pc} +_021DB930: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD63_021DB8E8 + + thumb_func_start MOD63_021DB934 +MOD63_021DB934: ; 0x021DB934 + push {r3, lr} + bl FUN_02013364 + bl FUN_02013388 + pop {r3, pc} + thumb_func_end MOD63_021DB934 + + thumb_func_start MOD63_021DB940 +MOD63_021DB940: ; 0x021DB940 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0201341C + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r4, r0, #0 + str r1, [r2, #8] + bl FUN_0200782C + sub r0, #0x80 + mov r1, #0xac + mul r1, r0 + str r1, [sp] + add r0, r4, #0 + mov r1, #1 + bl FUN_0200782C + sub r0, #0x60 + mov r1, #0xac + mul r1, r0 + str r1, [sp, #4] + mov r0, #0x40 + str r0, [sp, #8] + ldr r0, [r5, #0x20] + ldr r1, [sp] + ldr r0, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + str r0, [r5, #0x28] + ldr r0, [r5, #0x20] + ldr r1, [sp, #4] + ldr r0, [r0] + ldr r0, [r0, #8] + add r0, r1, r0 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r0, [r0, #0xc] + add r0, r1, r0 + str r0, [r5, #0x30] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD63_021DB940 + + .section .rodata + + .global MOD63_021DBEC0 +MOD63_021DBEC0: ; 0x021DBEC0 + .byte 0x03, 0x07, 0x00, 0x00, 0xCE, 0x07, 0x00, 0x00 + .byte 0xA8, 0x08, 0x00, 0x00 + + .global MOD63_021DBECC +MOD63_021DBECC: ; 0x021DBECC + .byte 0x83, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00 + + .global MOD63_021DBED8 +MOD63_021DBED8: ; 0x021DBED8 + .word MOD63_021DB720 + + .global MOD63_021DBEDC +MOD63_021DBEDC: ; 0x021DBEDC + .word MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884 + .word MOD63_021DB8E8 + + .global MOD63_021DBEF0 +MOD63_021DBEF0: ; 0x021DBEF0 + .byte 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 + .byte 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 + + .global MOD63_021DBF08 +MOD63_021DBF08: ; 0x021DBF08 + .byte 0x04, 0x00, 0x00, 0x00 + + .global MOD63_021DBF0C +MOD63_021DBF0C: ; 0x021DBF0C + .byte 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h new file mode 100644 index 00000000..df4c6c9e --- /dev/null +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -0,0 +1,8 @@ +#ifndef POKEDIAMOND_MOD63_021DB450_H +#define POKEDIAMOND_MOD63_021DB450_H + +#include "global.h" + +u32 MOD63_021DB450(u32 param0, u32 param1); + +#endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c new file mode 100644 index 00000000..d2ce9ef4 --- /dev/null +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -0,0 +1,13 @@ +#include "global.h" +#include "mod63_021DB450.h" + +extern u32 (*UNK_021064B8)(u32 param0, u32 param1, u32 param2); +extern void FUN_0201327C(u32 param0); + +THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) +{ + u32 res0 = (UNK_021064B8)(param0, param1, 0); + FUN_0201327C(res0); + GF_ASSERT(res0); + return (u32)((u16)res0 * 8); +} -- cgit v1.2.3 From ab66bbedaa6abed1a212aa1fef6fe8fee46bfcae Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 28 Jul 2020 20:18:57 +0100 Subject: 2 more functions --- arm9/modules/63/asm/mod63_021DB450_asm.s | 27 +-------------------------- arm9/modules/63/include/mod63_021DB450.h | 2 ++ arm9/modules/63/src/mod63_021DB450.c | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 044b2799..b16b248d 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -3,32 +3,7 @@ .section .text .extern MOD63_021DB450 - - thumb_func_start MOD63_021DB474 -MOD63_021DB474: ; 0x021DB474 - push {r4, lr} - ldr r3, _021DB494 ; =UNK_021064C0 - mov r2, #1 - ldr r3, [r3] - blx r3 - add r4, r0, #0 - bne _021DB486 - bl ErrorHandling -_021DB486: - add r0, r4, #0 - bl FUN_020132BC - lsl r0, r4, #0x10 - lsr r0, r0, #0xd - pop {r4, pc} - nop -_021DB494: .word UNK_021064C0 - thumb_func_end MOD63_021DB474 - - thumb_func_start MOD63_021DB498 -MOD63_021DB498: ; 0x021DB498 - mov r0, #0x20 - bx lr - thumb_func_end MOD63_021DB498 + .extern MOD63_021DB474 thumb_func_start MOD63_021DB49C MOD63_021DB49C: ; 0x021DB49C diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index df4c6c9e..915d2d00 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -4,5 +4,7 @@ #include "global.h" u32 MOD63_021DB450(u32 param0, u32 param1); +u32 MOD63_021DB474(u32 param0, u32 param1); +u32 MOD63_021DB498(void); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index d2ce9ef4..127c079f 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -1,8 +1,12 @@ #include "global.h" #include "mod63_021DB450.h" +//todo resolve to static code extern u32 (*UNK_021064B8)(u32 param0, u32 param1, u32 param2); +extern u32 (*UNK_021064C0)(u32 param0, u32 param1, u32 param2); + extern void FUN_0201327C(u32 param0); +extern void FUN_020132BC(u32 param0); THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) { @@ -11,3 +15,16 @@ THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) GF_ASSERT(res0); return (u32)((u16)res0 * 8); } + +THUMB_FUNC u32 MOD63_021DB474(u32 param0, u32 param1) +{ + u32 res0 = (UNK_021064C0)(param0, param1, 1); + GF_ASSERT(res0); + FUN_020132BC(res0); + return (u32)((u16)res0 * 8); +} + +THUMB_FUNC u32 MOD63_021DB498(void) +{ + return 32; +} -- cgit v1.2.3 From d7d85bf530a22e0078f6f8778f40686533d0dac1 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 28 Jul 2020 22:24:27 +0100 Subject: mod63_021DB49C --- arm9/modules/63/asm/mod63_021DB450_asm.s | 130 +------------------------------ arm9/modules/63/include/mod63_021DB450.h | 24 ++++++ arm9/modules/63/src/mod63_021DB450.c | 57 ++++++++++++++ 3 files changed, 84 insertions(+), 127 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index b16b248d..23e0b3a9 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,110 +2,9 @@ .include "global.inc" .section .text - .extern MOD63_021DB450 - .extern MOD63_021DB474 - - thumb_func_start MOD63_021DB49C -MOD63_021DB49C: ; 0x021DB49C - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - ldr r3, _021DB56C ; =MOD63_021DBECC - add r5, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x10 - stmia r2!, {r0, r1} - ldr r0, [r3] - str r0, [r2] - mov r0, #0x4c - bl FUN_02006D98 - ldr r7, _021DB570 ; =MOD63_021DBEF0 - str r0, [r5] - mov r4, #0 -_021DB4BA: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - lsl r6, r4, #2 - add r1, sp, #0x10 - ldr r1, [r1, r6] - add r0, sp, #0x1c - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - mov r2, #0 - mov r3, #2 - bl FUN_02068C00 - ldr r0, _021DB574 ; =0x000003FF - lsl r2, r4, #3 - str r0, [sp] - str r4, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - add r3, r7, r2 - ldr r0, [r5] - ldr r2, [r7, r2] - ldr r3, [r3, #4] - add r1, sp, #0x1c - add r6, r5, r6 - bl FUN_020073A0 - mov r1, #6 - mov r2, #1 - str r0, [r6, #4] - bl FUN_02007558 - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #3 - blo _021DB4BA - ldr r0, [r5, #8] - mov r1, #0x23 - mov r2, #1 - bl FUN_02007558 - mov r0, #1 - str r0, [r5, #0x10] - bl FUN_02012CC8 - mov r1, #0x12 - mov r0, #0x4c - lsl r1, r1, #0xa - bl AllocFromHeap - str r0, [r5, #0x14] - mov r0, #1 - str r0, [sp] - mov r0, #0x4c - str r0, [sp, #4] - mov r3, #0x12 - ldr r0, _021DB578 ; =MOD63_021DB450 - ldr r1, _021DB57C ; =MOD63_021DB474 - ldr r2, [r5, #0x14] - lsl r3, r3, #0xa - bl FUN_02012CDC - str r0, [r5, #0x18] - bl FUN_0201343C - add r2, r0, #0 - mov r0, #1 - mov r1, #0xe1 - lsl r0, r0, #0xc - lsl r1, r1, #0xe - bl FUN_0201EC94 - mov r0, #0x3d - mov r1, #4 - mov r2, #0x4c - bl FUN_0201318C - add r1, r0, #0 - ldr r0, [r5, #0x18] - mov r2, #0xa - mov r3, #1 - bl FUN_02013194 - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - nop -_021DB56C: .word MOD63_021DBECC -_021DB570: .word MOD63_021DBEF0 -_021DB574: .word 0x000003FF -_021DB578: .word MOD63_021DB450 -_021DB57C: .word MOD63_021DB474 - thumb_func_end MOD63_021DB49C + .extern MOD63_021DBED8 + .extern MOD63_021DBEC0 + .extern MOD63_021DBEDC thumb_func_start MOD63_021DB580 MOD63_021DB580: ; 0x021DB580 @@ -643,29 +542,6 @@ MOD63_021DB940: ; 0x021DB940 .section .rodata - .global MOD63_021DBEC0 -MOD63_021DBEC0: ; 0x021DBEC0 - .byte 0x03, 0x07, 0x00, 0x00, 0xCE, 0x07, 0x00, 0x00 - .byte 0xA8, 0x08, 0x00, 0x00 - - .global MOD63_021DBECC -MOD63_021DBECC: ; 0x021DBECC - .byte 0x83, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x89, 0x01, 0x00, 0x00 - - .global MOD63_021DBED8 -MOD63_021DBED8: ; 0x021DBED8 - .word MOD63_021DB720 - - .global MOD63_021DBEDC -MOD63_021DBEDC: ; 0x021DBEDC - .word MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884 - .word MOD63_021DB8E8 - - .global MOD63_021DBEF0 -MOD63_021DBEF0: ; 0x021DBEF0 - .byte 0x80, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 - .byte 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00 - .global MOD63_021DBF08 MOD63_021DBF08: ; 0x021DBF08 .byte 0x04, 0x00, 0x00, 0x00 diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 915d2d00..9d8df284 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -3,8 +3,32 @@ #include "global.h" +typedef struct UnkStruct63_021DB49C +{ + u32 field_00; + u32 field_04[3]; + u32 field_10; + void * field_14; + void * field_18; +} UnkStruct63_021DB49C; + +typedef struct UnkStruct63_021DB49C_2 +{ + u32 field_00; + u32 field_04; + u32 field_08; + u32 field_0C; +} UnkStruct63_021DB49C_2; + +typedef struct UnkStruct63_021DBEF0 +{ + u32 field_00; + u32 field_04; +} UnkStruct63_021DBEF0; + u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); +void MOD63_021DB49C(struct UnkStruct63_021DB49C * arg0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 127c079f..ce641d47 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -1,4 +1,6 @@ #include "global.h" +#include "heap.h" +#include "constants/species.h" #include "mod63_021DB450.h" //todo resolve to static code @@ -8,6 +10,30 @@ extern u32 (*UNK_021064C0)(u32 param0, u32 param1, u32 param2); extern void FUN_0201327C(u32 param0); extern void FUN_020132BC(u32 param0); +extern void * FUN_02012CDC(void *, void *, void *, u32, u32, u32); +extern u32 FUN_020073A0(u32, struct UnkStruct63_021DB49C_2 *, u32, u32, u32, u32, u32, u32); + +extern u32 FUN_02006D98(u32); +extern void FUN_02068C00(struct UnkStruct63_021DB49C_2*, u16, u32, u32, u32, u32, u32); +extern void FUN_02012CC8(void); +extern void FUN_02007558(u32, u32, u32); +extern void FUN_0201EC94(u32, u32, u32); +extern u32 FUN_0201343C(void); +extern void FUN_02013194(void *, u32, u32, u32); +extern u32 FUN_0201318C(u32, u32, u32); + +//todo funcs +void MOD63_021DB720(); +void MOD63_021DB784(); +void MOD63_021DB7D0(); +void MOD63_021DB838(); +void MOD63_021DB884(); +void MOD63_021DB8E8(); + +//todo data +const u32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8}; +const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3]; + THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) { u32 res0 = (UNK_021064B8)(param0, param1, 0); @@ -28,3 +54,34 @@ THUMB_FUNC u32 MOD63_021DB498(void) { return 32; } + +THUMB_FUNC void MOD63_021DB49C(struct UnkStruct63_021DB49C * arg0) +{ + struct UnkStruct63_021DB49C_2 sp1C; + int sp10[3] = {SPECIES_TURTWIG, SPECIES_CHIMCHAR, SPECIES_PIPLUP}; + + arg0->field_00 = FUN_02006D98(76); + + for (u8 i = 0; i < 3; i++) + { + FUN_02068C00(&sp1C, (u16)sp10[i], 0, 2, 0, 0, 0); + arg0->field_04[i] = FUN_020073A0(arg0->field_00, &sp1C, MOD63_021DBEF0[i].field_00, MOD63_021DBEF0[i].field_04, 0x3FF, i, 0, 0); + FUN_02007558(arg0->field_04[i], 6, 1); + } + FUN_02007558(arg0->field_04[1], 35, 1); + arg0->field_10 = 1; + FUN_02012CC8(); + arg0->field_14 = AllocFromHeap(0x4C, 0x4800); + arg0->field_18 = FUN_02012CDC(MOD63_021DB450, MOD63_021DB474, arg0->field_14, 0x4800, 1, 0x4C); + FUN_0201EC94(0x1000, 0x384000, FUN_0201343C()); + FUN_02013194(arg0->field_18, FUN_0201318C(0x3D, 4, 0x4C), 10, 1); +} + +const void * const MOD63_021DBED8 = MOD63_021DB720; +const void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; + +const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3] = { + {0x080, 0xC0}, + {0x100, 0xC0}, + {0x050, 0xC0} +}; -- cgit v1.2.3 From 1f1fd07d7b36b7ad37af5cebc300f53482875672 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 29 Jul 2020 01:23:41 +0100 Subject: document anim func --- arm9/global.inc | 2 +- arm9/modules/63/asm/mod63_021D8890.s | 2 +- arm9/modules/63/include/mod63_021DB450.h | 6 +++--- arm9/modules/63/src/mod63_021DB450.c | 12 ++++++------ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/arm9/global.inc b/arm9/global.inc index 35af1ebe..a10ad0cf 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7413,7 +7413,7 @@ .extern MOD63_021DB1AC .extern MOD63_021DB38C .extern MOD63_021DB498 -.extern MOD63_021DB49C +.extern Title_SetupMonAnimationSprites .extern MOD63_021DB580 .extern MOD63_021DB598 .extern MOD63_021DB5A8 diff --git a/arm9/modules/63/asm/mod63_021D8890.s b/arm9/modules/63/asm/mod63_021D8890.s index cd27e9bc..fb0726a4 100644 --- a/arm9/modules/63/asm/mod63_021D8890.s +++ b/arm9/modules/63/asm/mod63_021D8890.s @@ -1540,7 +1540,7 @@ MOD63_021D9498: ; 0x021D9498 add r0, #0x3b strb r1, [r0] ldr r0, [r5, #0x4c] - bl MOD63_021DB49C + bl Title_SetupMonAnimationSprites ldr r0, [r5, #0xc] mov r1, #1 str r0, [r5, #0x40] diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 9d8df284..5f3aaa03 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -3,10 +3,10 @@ #include "global.h" -typedef struct UnkStruct63_021DB49C +typedef struct UnkStruct63_021DB49C //animation struct? { u32 field_00; - u32 field_04[3]; + u32 field_04[3]; //animation array? u32 field_10; void * field_14; void * field_18; @@ -29,6 +29,6 @@ typedef struct UnkStruct63_021DBEF0 u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); -void MOD63_021DB49C(struct UnkStruct63_021DB49C * arg0); +void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index ce641d47..9593d612 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -55,16 +55,16 @@ THUMB_FUNC u32 MOD63_021DB498(void) return 32; } -THUMB_FUNC void MOD63_021DB49C(struct UnkStruct63_021DB49C * arg0) +THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0) { struct UnkStruct63_021DB49C_2 sp1C; - int sp10[3] = {SPECIES_TURTWIG, SPECIES_CHIMCHAR, SPECIES_PIPLUP}; + int introMonArray[3] = {SPECIES_TURTWIG, SPECIES_CHIMCHAR, SPECIES_PIPLUP}; arg0->field_00 = FUN_02006D98(76); - for (u8 i = 0; i < 3; i++) + for (u8 i = 0; i < 3; i++) //some kind of animation assignment TODO: investigate further { - FUN_02068C00(&sp1C, (u16)sp10[i], 0, 2, 0, 0, 0); + FUN_02068C00(&sp1C, (u16)introMonArray[i], 0, 2, 0, 0, 0); arg0->field_04[i] = FUN_020073A0(arg0->field_00, &sp1C, MOD63_021DBEF0[i].field_00, MOD63_021DBEF0[i].field_04, 0x3FF, i, 0, 0); FUN_02007558(arg0->field_04[i], 6, 1); } @@ -77,8 +77,8 @@ THUMB_FUNC void MOD63_021DB49C(struct UnkStruct63_021DB49C * arg0) FUN_02013194(arg0->field_18, FUN_0201318C(0x3D, 4, 0x4C), 10, 1); } -const void * const MOD63_021DBED8 = MOD63_021DB720; -const void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; +void * const MOD63_021DBED8 = MOD63_021DB720; +void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3] = { {0x080, 0xC0}, -- cgit v1.2.3 From cd07734f6129367e7b67bd96a55c72c9b78f31da Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 29 Jul 2020 16:06:46 +0100 Subject: mod63_021DB580 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 13 ------------- arm9/modules/63/include/mod63_021DB450.h | 9 +++++++++ arm9/modules/63/src/mod63_021DB450.c | 10 ++++++++++ 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 23e0b3a9..b9ac26f3 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -6,19 +6,6 @@ .extern MOD63_021DBEC0 .extern MOD63_021DBEDC - thumb_func_start MOD63_021DB580 -MOD63_021DB580: ; 0x021DB580 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x18] - bl FUN_02012DE4 - ldr r0, [r4, #0x14] - bl FreeToHeap - ldr r0, [r4] - bl FUN_020072E8 - pop {r4, pc} - thumb_func_end MOD63_021DB580 - thumb_func_start MOD63_021DB598 MOD63_021DB598: ; 0x021DB598 push {r3, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 5f3aaa03..917cf859 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -26,9 +26,18 @@ typedef struct UnkStruct63_021DBEF0 u32 field_04; } UnkStruct63_021DBEF0; +typedef struct UnkStruct63_021DB580 //possibly part of the above structs? +{ + u32 field_00; + u8 filler[0x10]; + void *field_20; + u32 field_24; +} UnkStruct63_021DB580; + u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0); +void MOD63_021DB580(UnkStruct63_021DB580 *param0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 9593d612..fd221b2c 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -22,6 +22,9 @@ extern u32 FUN_0201343C(void); extern void FUN_02013194(void *, u32, u32, u32); extern u32 FUN_0201318C(u32, u32, u32); +extern void FUN_02012DE4(u32); +extern void FUN_020072E8(u32); + //todo funcs void MOD63_021DB720(); void MOD63_021DB784(); @@ -77,6 +80,13 @@ THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg FUN_02013194(arg0->field_18, FUN_0201318C(0x3D, 4, 0x4C), 10, 1); } +THUMB_FUNC void MOD63_021DB580(UnkStruct63_021DB580 *param0) +{ + FUN_02012DE4(param0->field_24); + FreeToHeap(param0->field_20); + FUN_020072E8(param0->field_00); +} + void * const MOD63_021DBED8 = MOD63_021DB720; void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; -- cgit v1.2.3 From 815cbf5facc2d811ee7a8c39bfee8eda9055f5d8 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 29 Jul 2020 20:59:45 +0100 Subject: mod63_021DB598 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 12 ------------ arm9/modules/63/include/mod63_021DB450.h | 6 ++++++ arm9/modules/63/src/mod63_021DB450.c | 11 +++++++++++ 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index b9ac26f3..131804c3 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -6,18 +6,6 @@ .extern MOD63_021DBEC0 .extern MOD63_021DBEDC - thumb_func_start MOD63_021DB598 -MOD63_021DB598: ; 0x021DB598 - push {r3, lr} - cmp r0, #0 - beq _021DB5A4 - ldr r0, [r0] - bl FUN_020081C4 -_021DB5A4: - pop {r3, pc} - .align 2, 0 - thumb_func_end MOD63_021DB598 - thumb_func_start MOD63_021DB5A8 MOD63_021DB5A8: ; 0x021DB5A8 push {r4, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 917cf859..5e869f1e 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -34,10 +34,16 @@ typedef struct UnkStruct63_021DB580 //possibly part of the above structs? u32 field_24; } UnkStruct63_021DB580; +typedef struct UnkStruct63_021DB598 //part of the above? +{ + u32 field_00; +} UnkStruct63_021DB598; + u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0); void MOD63_021DB580(UnkStruct63_021DB580 *param0); +void MOD63_021DB598(UnkStruct63_021DB598 *param0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index fd221b2c..c3e6c84a 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -25,6 +25,8 @@ extern u32 FUN_0201318C(u32, u32, u32); extern void FUN_02012DE4(u32); extern void FUN_020072E8(u32); +extern void FUN_020081C4(u32); + //todo funcs void MOD63_021DB720(); void MOD63_021DB784(); @@ -87,6 +89,15 @@ THUMB_FUNC void MOD63_021DB580(UnkStruct63_021DB580 *param0) FUN_020072E8(param0->field_00); } +THUMB_FUNC void MOD63_021DB598(UnkStruct63_021DB598 *param0) +{ + if (param0 == NULL) + { + return; + } + FUN_020081C4(param0->field_00); +} + void * const MOD63_021DBED8 = MOD63_021DB720; void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; -- cgit v1.2.3 From 90b0ca8e0ed243029c773428e98f5e56319f2b60 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 29 Jul 2020 22:19:14 +0100 Subject: mod63_021DB5A8 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 18 ------------------ arm9/modules/63/include/mod63_021DB450.h | 6 ++++++ arm9/modules/63/src/mod63_021DB450.c | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 131804c3..e32c5ccf 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -6,24 +6,6 @@ .extern MOD63_021DBEC0 .extern MOD63_021DBEDC - thumb_func_start MOD63_021DB5A8 -MOD63_021DB5A8: ; 0x021DB5A8 - push {r4, lr} - add r4, r0, #0 - beq _021DB5C8 - bl FUN_020222AC - bl FUN_020B02C8 - ldr r0, [r4] - bl FUN_02006ED4 - bl MOD63_021DB934 - mov r0, #1 - mov r1, #0 - bl FUN_020222B4 -_021DB5C8: - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD63_021DB5A8 - thumb_func_start MOD63_021DB5CC MOD63_021DB5CC: ; 0x021DB5CC push {r3, r4, r5, r6, r7, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 5e869f1e..2fd902ce 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -39,11 +39,17 @@ typedef struct UnkStruct63_021DB598 //part of the above? u32 field_00; } UnkStruct63_021DB598; +typedef struct UnkStruct63_021DB5A8 //possibly the same as above +{ + u32 field_00; +} UnkStruct63_021DB5A8; + u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0); void MOD63_021DB580(UnkStruct63_021DB580 *param0); void MOD63_021DB598(UnkStruct63_021DB598 *param0); +void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index c3e6c84a..20aaa310 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -27,6 +27,12 @@ extern void FUN_020072E8(u32); extern void FUN_020081C4(u32); +extern void FUN_020222AC(void); +extern void FUN_020B02C8(void); +extern u32 FUN_02006ED4(u32 param0); +extern void MOD63_021DB934(void); +extern void FUN_020222B4(u32, u32); + //todo funcs void MOD63_021DB720(); void MOD63_021DB784(); @@ -98,6 +104,19 @@ THUMB_FUNC void MOD63_021DB598(UnkStruct63_021DB598 *param0) FUN_020081C4(param0->field_00); } +THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0) +{ + if (param0 == NULL) + { + return; + } + FUN_020222AC(); + FUN_020B02C8(); + (void)FUN_02006ED4(param0->field_00); + MOD63_021DB934(); + FUN_020222B4(1, 0); +} + void * const MOD63_021DBED8 = MOD63_021DB720; void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; -- cgit v1.2.3 From fbef7a4533b586518661a174ee6011e8cf9fac37 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 14:46:39 +0100 Subject: mod63_021DB5CC --- CMakeLists.txt | 2 +- arm9/lib/include/GX_g2.h | 34 ++++++ arm9/lib/include/registers.h | 13 +++ arm9/modules/63/asm/mod63_021DB450_asm.s | 180 +------------------------------ arm9/modules/63/include/mod63_021DB450.h | 16 +++ arm9/modules/63/src/mod63_021DB450.c | 87 +++++++++++++-- 6 files changed, 143 insertions(+), 189 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a8fbb58..d51525ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ add_compile_options(-fms-extensions) file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp") add_executable(PokeDiamond ${SOURCES}) -target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include) +target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include arm7/lib/include arm9/modules/63/include) add_executable(calcrom .travis/calcrom/calcrom.cpp) target_include_directories(calcrom PRIVATE /usr/local/include) diff --git a/arm9/lib/include/GX_g2.h b/arm9/lib/include/GX_g2.h index d1d1c82c..372be12b 100644 --- a/arm9/lib/include/GX_g2.h +++ b/arm9/lib/include/GX_g2.h @@ -2,6 +2,7 @@ #define GUARD_GX_G2_H #include "fx.h" +#include "registers.h" void G2x_SetBGyAffine_(u32 *ptr, struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d); void G2x_SetBlendAlpha_(u32 *ptr, fx32 a, fx32 b, fx32 c, fx32 d); @@ -9,6 +10,39 @@ void G2x_SetBlendBrightness_(u16 *ptr, fx32 a, fx32 brightness); void G2x_SetBlendBrightnessExt_(u16 *ptr, fx32 a, fx32 b, fx32 c, fx32 d, fx32 brightness); void G2x_ChangeBlendBrightness_(u16 *ptr, fx32 brightness); +typedef struct +{ + u8 planeMask:5; + u8 effect:1; + u8 _reserve:2; +} + GXWndPlane; + +typedef enum +{ + GX_WND_PLANEMASK_NONE = 0x0000, + GX_WND_PLANEMASK_BG0 = 0x0001, + GX_WND_PLANEMASK_BG1 = 0x0002, + GX_WND_PLANEMASK_BG2 = 0x0004, + GX_WND_PLANEMASK_BG3 = 0x0008, + GX_WND_PLANEMASK_OBJ = 0x0010 +} + GXWndPlaneMask; + +static inline void G2_SetWndOutsidePlane(int wnd, BOOL effect) +{ + u32 tmp; + + tmp = ((reg_G2_WINOUT & ~REG_G2_WINOUT_WINOUT_MASK) | ((u32)wnd << REG_G2_WINOUT_WINOUT_SHIFT)); + + if (effect) + { + tmp |= (0x20 << REG_G2_WINOUT_WINOUT_SHIFT); // EFCT + } + + reg_G2_WINOUT = (u16)tmp; +} + //The g2 and g2_oam headers contain a lot of inline functions and enums that may want to be ported over at some point #endif //GUARD_GX_G2_H diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h index 37ca97e6..6bfb52ac 100644 --- a/arm9/lib/include/registers.h +++ b/arm9/lib/include/registers.h @@ -454,6 +454,19 @@ #define REG_PAD_KEYCNT_A_SIZE 1 #define REG_PAD_KEYCNT_A_MASK 0x0001 +#define REG_G2_WINOUT_OBJWININ_SHIFT 8 +#define REG_G2_WINOUT_OBJWININ_SIZE 6 +#define REG_G2_WINOUT_OBJWININ_MASK 0x3f00 + +#define REG_G2_WINOUT_WINOUT_SHIFT 0 +#define REG_G2_WINOUT_WINOUT_SIZE 6 +#define REG_G2_WINOUT_WINOUT_MASK 0x003f + +#define REG_G2_WINOUT_FIELD( objwinin, winout ) \ + (u16)( \ + ((u32)(objwinin) << REG_G2_WINOUT_OBJWININ_SHIFT) | \ + ((u32)(winout) << REG_G2_WINOUT_WINOUT_SHIFT)) + #ifndef SDK_ASM #define REG_PAD_KEYCNT_FIELD( logic, intr, l, r, down, up, left, right, start, sel, b, a ) \ (u16)( \ diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index e32c5ccf..28265e78 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -5,174 +5,7 @@ .extern MOD63_021DBED8 .extern MOD63_021DBEC0 .extern MOD63_021DBEDC - - thumb_func_start MOD63_021DB5CC -MOD63_021DB5CC: ; 0x021DB5CC - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - add r7, r2, #0 - ldrb r2, [r4, #0x1c] - add r5, r4, #0 - add r6, r1, #0 - add r5, #0x1c - cmp r2, #5 - bls _021DB5E2 - b _021DB6FC -_021DB5E2: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021DB5EE: ; jump table - .short _021DB5FA - _021DB5EE - 2 ; case 0 - .short _021DB63C - _021DB5EE - 2 ; case 1 - .short _021DB658 - _021DB5EE - 2 ; case 2 - .short _021DB690 - _021DB5EE - 2 ; case 3 - .short _021DB6BE - _021DB5EE - 2 ; case 4 - .short _021DB6E4 - _021DB5EE - 2 ; case 5 -_021DB5FA: - ldr r0, _021DB704 ; =0x0400004A - mov r1, #0x3f - ldrh r2, [r0] - add r7, r4, #4 - bic r2, r1 - mov r1, #0x11 - orr r1, r2 - mov r2, #0x20 - orr r1, r2 - strh r1, [r0] - lsl r0, r6, #2 - str r0, [sp] - ldr r0, [r7, r0] - mov r1, #0xc - lsl r2, r2, #5 - bl FUN_02007558 - ldr r0, [sp] - mov r2, #1 - ldr r0, [r7, r0] - mov r1, #0xd - lsl r2, r2, #0xa - bl FUN_02007558 - ldr r0, [sp] - mov r1, #6 - ldr r0, [r7, r0] - mov r2, #0 - bl FUN_02007558 - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_021DB63C: - ldr r2, _021DB708 ; =MOD63_021DBED8 - lsl r3, r6, #3 - ldr r2, [r2, r3] - add r0, r4, #0 - add r1, r6, #0 - blx r2 - cmp r0, #0 - beq _021DB6FC - mov r0, #0 - strb r0, [r4, #0x1d] - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB658: - ldr r0, [r4, #0x18] - mov r1, #1 - bl FUN_02013440 - lsl r0, r6, #2 - str r0, [sp, #4] - ldr r1, _021DB70C ; =MOD63_021DBF08 - lsl r6, r6, #3 - ldr r3, [sp, #4] - add r7, r4, #4 - ldr r0, [r4, #0x18] - ldr r1, [r1, r6] - ldr r2, _021DB710 ; =MOD63_021DB940 - ldr r3, [r7, r3] - bl FUN_020133AC - ldr r1, _021DB714 ; =MOD63_021DBF0C - ldr r3, [sp, #4] - ldr r0, [r4, #0x18] - ldr r1, [r1, r6] - ldr r2, _021DB710 ; =MOD63_021DB940 - ldr r3, [r7, r3] - bl FUN_020133AC - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB690: - ldr r0, [r4, #0x18] - bl FUN_020133C8 - cmp r0, #0 - bne _021DB6FC - ldr r0, _021DB718 ; =MOD63_021DBEC0 - lsl r1, r6, #2 - ldr r0, [r0, r1] - cmp r7, r0 - blt _021DB6FC - ldr r1, _021DB704 ; =0x0400004A - mov r0, #0x3f - ldrh r2, [r1] - bic r2, r0 - mov r0, #0x10 - orr r2, r0 - mov r0, #0x20 - orr r0, r2 - strh r0, [r1] - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB6BE: - ldr r2, _021DB71C ; =MOD63_021DBEDC - lsl r3, r6, #3 - ldr r2, [r2, r3] - blx r2 - cmp r0, #0 - beq _021DB6FC - lsl r0, r6, #2 - add r0, r4, r0 - ldr r0, [r0, #4] - mov r1, #6 - mov r2, #1 - bl FUN_02007558 - mov r0, #0 - strb r0, [r4, #0x1d] - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] - b _021DB6FC -_021DB6E4: - ldrb r0, [r4, #0x1d] - add r0, r0, #1 - strb r0, [r4, #0x1d] - ldrb r0, [r4, #0x1d] - cmp r0, #0x14 - blo _021DB6FC - mov r0, #0 - strb r0, [r4, #0x1d] - strb r0, [r5] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DB6FC: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DB704: .word 0x0400004A -_021DB708: .word MOD63_021DBED8 -_021DB70C: .word MOD63_021DBF08 -_021DB710: .word MOD63_021DB940 -_021DB714: .word MOD63_021DBF0C -_021DB718: .word MOD63_021DBEC0 -_021DB71C: .word MOD63_021DBEDC - thumb_func_end MOD63_021DB5CC + .extern MOD63_021DBF08 thumb_func_start MOD63_021DB720 MOD63_021DB720: ; 0x021DB720 @@ -496,14 +329,3 @@ MOD63_021DB940: ; 0x021DB940 pop {r4, r5, pc} .align 2, 0 thumb_func_end MOD63_021DB940 - - .section .rodata - - .global MOD63_021DBF08 -MOD63_021DBF08: ; 0x021DBF08 - .byte 0x04, 0x00, 0x00, 0x00 - - .global MOD63_021DBF0C -MOD63_021DBF0C: ; 0x021DBF0C - .byte 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 2fd902ce..617912a7 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -44,6 +44,21 @@ typedef struct UnkStruct63_021DB5A8 //possibly the same as above u32 field_00; } UnkStruct63_021DB5A8; +typedef struct UnkStruct63_021DB5CC +{ + u8 filler_00[4]; + u32 field_04[5]; + u32 field_18; + u8 field_1C; + u8 field_1D; +} UnkStruct63_021DB5CC; + +typedef struct UnkStruct63_021DBED8 +{ + BOOL (*unk_00)(struct UnkStruct63_021DB5CC *, u32); + BOOL (*unk_04)(struct UnkStruct63_021DB5CC *, u32); +} UnkStruct63_021DBED8; + u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); @@ -51,5 +66,6 @@ void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0); void MOD63_021DB580(UnkStruct63_021DB580 *param0); void MOD63_021DB598(UnkStruct63_021DB598 *param0); void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0); +BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 20aaa310..a1704f68 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -1,6 +1,7 @@ #include "global.h" #include "heap.h" #include "constants/species.h" +#include "gx.h" #include "mod63_021DB450.h" //todo resolve to static code @@ -33,16 +34,21 @@ extern u32 FUN_02006ED4(u32 param0); extern void MOD63_021DB934(void); extern void FUN_020222B4(u32, u32); +extern void FUN_02013440(u32, u32); +extern void FUN_020133AC(u32, u32, const void *, u32); +extern BOOL FUN_020133C8(u32); + //todo funcs -void MOD63_021DB720(); -void MOD63_021DB784(); -void MOD63_021DB7D0(); -void MOD63_021DB838(); -void MOD63_021DB884(); -void MOD63_021DB8E8(); +extern BOOL MOD63_021DB720(struct UnkStruct63_021DB5CC *, u32); +extern BOOL MOD63_021DB784(struct UnkStruct63_021DB5CC *, u32); +extern BOOL MOD63_021DB7D0(struct UnkStruct63_021DB5CC *, u32); +extern BOOL MOD63_021DB838(struct UnkStruct63_021DB5CC *, u32); +extern BOOL MOD63_021DB884(struct UnkStruct63_021DB5CC *, u32); +extern BOOL MOD63_021DB8E8(struct UnkStruct63_021DB5CC *, u32); +extern void MOD63_021DB940(); //todo data -const u32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8}; +const s32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8}; const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3]; THUMB_FUNC u32 MOD63_021DB450(u32 param0, u32 param1) @@ -117,11 +123,74 @@ THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0) FUN_020222B4(1, 0); } -void * const MOD63_021DBED8 = MOD63_021DB720; -void * const MOD63_021DBEDC[5] = { MOD63_021DB784, MOD63_021DB7D0, MOD63_021DB838, MOD63_021DB884, MOD63_021DB8E8 }; +const struct UnkStruct63_021DBED8 MOD63_021DBED8[3] = { + {MOD63_021DB720, MOD63_021DB784}, + {MOD63_021DB7D0, MOD63_021DB838}, + {MOD63_021DB884, MOD63_021DB8E8} +}; const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3] = { {0x080, 0xC0}, {0x100, 0xC0}, {0x050, 0xC0} }; + +const struct UnkStruct63_021DBEF0 MOD63_021DBF08[3] = { //no idea if this is the right type + {4, 5}, + {2, 3}, + {0, 1} +}; + +THUMB_FUNC BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2) +{ + u8 * state = ¶m0->field_1C; + switch(*state) + { + case 0: + G2_SetWndOutsidePlane(GX_WND_PLANEMASK_OBJ | GX_WND_PLANEMASK_BG0, TRUE); + FUN_02007558(param0->field_04[param1], 12, 0x400); + FUN_02007558(param0->field_04[param1], 13, 0x400); + FUN_02007558(param0->field_04[param1], 6, 0); + (*state)++; + // fallthrough + case 1: + if (MOD63_021DBED8[param1].unk_00(param0, param1)) + { + param0->field_1D = 0; + (*state)++; + } + break; + case 2: + FUN_02013440(param0->field_18, 1); + FUN_020133AC(param0->field_18, MOD63_021DBF08[param1].field_00, MOD63_021DB940, param0->field_04[param1]); + FUN_020133AC(param0->field_18, MOD63_021DBF08[param1].field_04, MOD63_021DB940, param0->field_04[param1]); + (*state)++; + break; + case 3: + if (!FUN_020133C8(param0->field_18) && param2 >= MOD63_021DBEC0[param1]) + { + G2_SetWndOutsidePlane(GX_WND_PLANEMASK_OBJ, TRUE); + (*state)++; + } + break; + case 4: + if (MOD63_021DBED8[param1].unk_04(param0, param1)) + { + FUN_02007558(param0->field_04[param1], 6, 1); + param0->field_1D = 0; + (*state)++; + } + break; + case 5: + param0->field_1D++; + if (param0->field_1D >= 20) + { + param0->field_1D = 0; + *state = 0; + return TRUE; + } + break; + } + return FALSE; +} + -- cgit v1.2.3 From a9355e23042e6c20293ec2a46edd00d885bd30c9 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 16:08:09 +0100 Subject: mod63_021DB720 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 54 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 20 +++++++++++- 3 files changed, 20 insertions(+), 55 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 28265e78..323f9ea7 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,60 +2,6 @@ .include "global.inc" .section .text - .extern MOD63_021DBED8 - .extern MOD63_021DBEC0 - .extern MOD63_021DBEDC - .extern MOD63_021DBF08 - - thumb_func_start MOD63_021DB720 -MOD63_021DB720: ; 0x021DB720 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - mov r2, #6 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8c - bl FUN_020079E0 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8d - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB780 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB780: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB720 - thumb_func_start MOD63_021DB784 MOD63_021DB784: ; 0x021DB784 push {r3, r4, r5, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 617912a7..68c8432f 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -67,5 +67,6 @@ void MOD63_021DB580(UnkStruct63_021DB580 *param0); void MOD63_021DB598(UnkStruct63_021DB598 *param0); void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0); BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2); +BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index a1704f68..7587e0f3 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -38,8 +38,9 @@ extern void FUN_02013440(u32, u32); extern void FUN_020133AC(u32, u32, const void *, u32); extern BOOL FUN_020133C8(u32); +extern void FUN_020079E0(u32, u32, s32); + //todo funcs -extern BOOL MOD63_021DB720(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB784(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB7D0(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB838(struct UnkStruct63_021DB5CC *, u32); @@ -194,3 +195,20 @@ THUMB_FUNC BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 par return FALSE; } +THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1) +{ + u32 field = param0->field_04[param1]; + FUN_020079E0(field, 0x0, 0x6); + FUN_020079E0(field, 0x1, -0x10); + FUN_020079E0(field, 0xC, -0x80); + FUN_020079E0(field, 0xD, -0x80); + param0->field_1D++; + if (param0->field_1D >= 6) + { + FUN_02007558(field, 0xC, 0x100); + FUN_02007558(field, 0xD, 0x100); + return TRUE; + } + return FALSE; +} + -- cgit v1.2.3 From 53744ca1104984a44782f2376decb8d04999b961 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 16:19:54 +0100 Subject: mod63_021DB784 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 39 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 15 +++++++++++- 3 files changed, 15 insertions(+), 40 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 323f9ea7..88f93b68 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,45 +2,6 @@ .include "global.inc" .section .text - thumb_func_start MOD63_021DB784 -MOD63_021DB784: ; 0x021DB784 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - sub r2, r1, #3 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x13 - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB7CC - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB7CC: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB784 - thumb_func_start MOD63_021DB7D0 MOD63_021DB7D0: ; 0x021DB7D0 push {r3, r4, r5, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 68c8432f..8a94489f 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -68,5 +68,6 @@ void MOD63_021DB598(UnkStruct63_021DB598 *param0); void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0); BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2); BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1); +BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 7587e0f3..fa41895e 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -41,7 +41,6 @@ extern BOOL FUN_020133C8(u32); extern void FUN_020079E0(u32, u32, s32); //todo funcs -extern BOOL MOD63_021DB784(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB7D0(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB838(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB884(struct UnkStruct63_021DB5CC *, u32); @@ -212,3 +211,17 @@ THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1) return FALSE; } +THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1) +{ + u32 field = param0->field_04[param1]; + FUN_020079E0(field, 0x0, -0x3); + FUN_020079E0(field, 0x1, -0x12); + param0->field_1D++; + if (param0->field_1D >= 6) + { + FUN_02007558(field, 0xC, 0x100); + FUN_02007558(field, 0xD, 0x100); + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 83035d610b0a283c9126e7ee4dabc436d46eb564 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 16:29:57 +0100 Subject: mod63_021DB7D0 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 51 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 17 +++++++++++ 3 files changed, 18 insertions(+), 51 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 88f93b68..df57caeb 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,57 +2,6 @@ .include "global.inc" .section .text - thumb_func_start MOD63_021DB7D0 -MOD63_021DB7D0: ; 0x021DB7D0 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x10 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8c - bl FUN_020079E0 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8d - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB832 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB832: - mov r0, #0 - pop {r3, r4, r5, pc} - .align 2, 0 - thumb_func_end MOD63_021DB7D0 - thumb_func_start MOD63_021DB838 MOD63_021DB838: ; 0x021DB838 push {r3, r4, r5, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 8a94489f..f233f186 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -69,5 +69,6 @@ void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0); BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2); BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1); +BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index fa41895e..bac8ac54 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -225,3 +225,20 @@ THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1) } return FALSE; } + +THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1) +{ + u32 field = param0->field_04[param1]; + FUN_020079E0(field, 0x0, -0x10); + FUN_020079E0(field, 0x1, -0x10); + FUN_020079E0(field, 0xC, -0x80); + FUN_020079E0(field, 0xD, -0x80); + param0->field_1D++; + if (param0->field_1D >= 6) + { + FUN_02007558(field, 0xC, 0x100); + FUN_02007558(field, 0xD, 0x100); + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 1f3874be17338ec0e96b85cab42a06bae0fbe694 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 20:13:41 +0100 Subject: mod63_021DB838 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 39 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 17 ++++++++++++-- 3 files changed, 16 insertions(+), 41 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index df57caeb..6af0f920 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,45 +2,6 @@ .include "global.inc" .section .text - thumb_func_start MOD63_021DB838 -MOD63_021DB838: ; 0x021DB838 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - sub r2, r1, #6 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB880 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB880: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB838 - thumb_func_start MOD63_021DB884 MOD63_021DB884: ; 0x021DB884 push {r3, r4, r5, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index f233f186..671680d2 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -70,5 +70,6 @@ BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2); BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1); +BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index bac8ac54..48990b6b 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -41,8 +41,6 @@ extern BOOL FUN_020133C8(u32); extern void FUN_020079E0(u32, u32, s32); //todo funcs -extern BOOL MOD63_021DB7D0(struct UnkStruct63_021DB5CC *, u32); -extern BOOL MOD63_021DB838(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB884(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB8E8(struct UnkStruct63_021DB5CC *, u32); extern void MOD63_021DB940(); @@ -242,3 +240,18 @@ THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1) } return FALSE; } + +THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1) +{ + u32 field = param0->field_04[param1]; + FUN_020079E0(field, 0, -0x6); + FUN_020079E0(field, 1, -0x10); + param0->field_1D++; + if (param0->field_1D >= 6) + { + FUN_02007558(field, 0xC, 0x100); + FUN_02007558(field, 0xD, 0x100); + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 5d0135992b514b4f5a74bfdf1a162f520f76a6a0 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 20:20:20 +0100 Subject: mod63_021DB884 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 49 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 18 +++++++++++- 3 files changed, 18 insertions(+), 50 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 6af0f920..4f2988e7 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,55 +2,6 @@ .include "global.inc" .section .text - thumb_func_start MOD63_021DB884 -MOD63_021DB884: ; 0x021DB884 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - mov r2, #8 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x11 - bl FUN_020079E0 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8c - bl FUN_020079E0 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x8d - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB8E4 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB8E4: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB884 - thumb_func_start MOD63_021DB8E8 MOD63_021DB8E8: ; 0x021DB8E8 push {r3, r4, r5, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 671680d2..4505e8b4 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -71,5 +71,6 @@ BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1); +BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 48990b6b..565ffdb5 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -41,7 +41,6 @@ extern BOOL FUN_020133C8(u32); extern void FUN_020079E0(u32, u32, s32); //todo funcs -extern BOOL MOD63_021DB884(struct UnkStruct63_021DB5CC *, u32); extern BOOL MOD63_021DB8E8(struct UnkStruct63_021DB5CC *, u32); extern void MOD63_021DB940(); @@ -255,3 +254,20 @@ THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1) } return FALSE; } + +THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1) +{ + u32 field = param0->field_04[param1]; + FUN_020079E0(field, 0, 0x8); + FUN_020079E0(field, 1, -0x10); + FUN_020079E0(field, 0xC, -0x80); + FUN_020079E0(field, 0xD, -0x80); + param0->field_1D++; + if (param0->field_1D >= 6) + { + FUN_02007558(field, 0xC, 0x100); + FUN_02007558(field, 0xD, 0x100); + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 4072805c6f0360da195d13d2b055b894af38f25c Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 20:22:23 +0100 Subject: mod63_021DB8E8 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 39 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 15 ++++++++++++ 3 files changed, 16 insertions(+), 39 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 4f2988e7..06f5f9a4 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,45 +2,6 @@ .include "global.inc" .section .text - thumb_func_start MOD63_021DB8E8 -MOD63_021DB8E8: ; 0x021DB8E8 - push {r3, r4, r5, lr} - add r5, r0, #0 - lsl r0, r1, #2 - add r0, r5, r0 - ldr r4, [r0, #4] - mov r1, #0 - add r0, r4, #0 - mov r2, #6 - bl FUN_020079E0 - mov r1, #1 - add r2, r1, #0 - add r0, r4, #0 - sub r2, #0x15 - bl FUN_020079E0 - ldrb r0, [r5, #0x1d] - add r0, r0, #1 - strb r0, [r5, #0x1d] - ldrb r0, [r5, #0x1d] - cmp r0, #6 - blo _021DB930 - mov r1, #0xc - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf4 - bl FUN_02007558 - mov r1, #0xd - add r2, r1, #0 - add r0, r4, #0 - add r2, #0xf3 - bl FUN_02007558 - mov r0, #1 - pop {r3, r4, r5, pc} -_021DB930: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end MOD63_021DB8E8 - thumb_func_start MOD63_021DB934 MOD63_021DB934: ; 0x021DB934 push {r3, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 4505e8b4..1db9f6b7 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -72,5 +72,6 @@ BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1); +BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 565ffdb5..c11e9c3e 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -271,3 +271,18 @@ THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1) } return FALSE; } + +THUMB_FUNC BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1) +{ + u32 field = param0->field_04[param1]; + FUN_020079E0(field, 0, 0x6); + FUN_020079E0(field, 1, -0x14); + param0->field_1D++; + if (param0->field_1D >= 6) + { + FUN_02007558(field, 0xC, 0x100); + FUN_02007558(field, 0xD, 0x100); + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 6f3e7107cfa63832c1e9643443bcd9de08b4ec0d Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 20:25:28 +0100 Subject: mod63_021DB934 --- arm9/modules/63/asm/mod63_021DB450_asm.s | 8 -------- arm9/modules/63/include/mod63_021DB450.h | 1 + arm9/modules/63/src/mod63_021DB450.c | 11 +++++++++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s index 06f5f9a4..dd2f570d 100644 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ b/arm9/modules/63/asm/mod63_021DB450_asm.s @@ -2,14 +2,6 @@ .include "global.inc" .section .text - thumb_func_start MOD63_021DB934 -MOD63_021DB934: ; 0x021DB934 - push {r3, lr} - bl FUN_02013364 - bl FUN_02013388 - pop {r3, pc} - thumb_func_end MOD63_021DB934 - thumb_func_start MOD63_021DB940 MOD63_021DB940: ; 0x021DB940 push {r4, r5, lr} diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 1db9f6b7..32985960 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -73,5 +73,6 @@ BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1); +void MOD63_021DB934(void); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index c11e9c3e..51b9a3ad 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -31,7 +31,6 @@ extern void FUN_020081C4(u32); extern void FUN_020222AC(void); extern void FUN_020B02C8(void); extern u32 FUN_02006ED4(u32 param0); -extern void MOD63_021DB934(void); extern void FUN_020222B4(u32, u32); extern void FUN_02013440(u32, u32); @@ -40,8 +39,10 @@ extern BOOL FUN_020133C8(u32); extern void FUN_020079E0(u32, u32, s32); +extern void FUN_02013364(void); +extern void FUN_02013388(void); + //todo funcs -extern BOOL MOD63_021DB8E8(struct UnkStruct63_021DB5CC *, u32); extern void MOD63_021DB940(); //todo data @@ -286,3 +287,9 @@ THUMB_FUNC BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1) } return FALSE; } + +THUMB_FUNC void MOD63_021DB934(void) +{ + FUN_02013364(); + FUN_02013388(); +} -- cgit v1.2.3 From bc66969b13ed0e8279d93edd730ef584f0828c77 Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 31 Jul 2020 22:13:06 +0100 Subject: finish mod63_021DB450 --- arm9/arm9.lsf | 1 - arm9/modules/63/asm/mod63_021DB450_asm.s | 52 -------------------------------- arm9/modules/63/include/mod63_021DB450.h | 18 +++++++++++ arm9/modules/63/src/mod63_021DB450.c | 17 +++++++++-- 4 files changed, 32 insertions(+), 56 deletions(-) delete mode 100644 arm9/modules/63/asm/mod63_021DB450_asm.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 225d62cf..27d530ed 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -946,7 +946,6 @@ Overlay MODULE_63 Object mod63_021DA640.o Object mod63_021DAE5C.o Object mod63_021DB450.o - Object mod63_021DB450_asm.o } Overlay MODULE_64 diff --git a/arm9/modules/63/asm/mod63_021DB450_asm.s b/arm9/modules/63/asm/mod63_021DB450_asm.s deleted file mode 100644 index dd2f570d..00000000 --- a/arm9/modules/63/asm/mod63_021DB450_asm.s +++ /dev/null @@ -1,52 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .section .text - - thumb_func_start MOD63_021DB940 -MOD63_021DB940: ; 0x021DB940 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - bl FUN_0201341C - add r2, sp, #0 - mov r1, #0 - str r1, [r2] - str r1, [r2, #4] - add r4, r0, #0 - str r1, [r2, #8] - bl FUN_0200782C - sub r0, #0x80 - mov r1, #0xac - mul r1, r0 - str r1, [sp] - add r0, r4, #0 - mov r1, #1 - bl FUN_0200782C - sub r0, #0x60 - mov r1, #0xac - mul r1, r0 - str r1, [sp, #4] - mov r0, #0x40 - str r0, [sp, #8] - ldr r0, [r5, #0x20] - ldr r1, [sp] - ldr r0, [r0] - ldr r0, [r0, #4] - add r0, r1, r0 - str r0, [r5, #0x28] - ldr r0, [r5, #0x20] - ldr r1, [sp, #4] - ldr r0, [r0] - ldr r0, [r0, #8] - add r0, r1, r0 - str r0, [r5, #0x2c] - ldr r0, [r5, #0x20] - ldr r1, [sp, #8] - ldr r0, [r0] - ldr r0, [r0, #0xc] - add r0, r1, r0 - str r0, [r5, #0x30] - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 - thumb_func_end MOD63_021DB940 diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 32985960..5de4609b 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -59,6 +59,23 @@ typedef struct UnkStruct63_021DBED8 BOOL (*unk_04)(struct UnkStruct63_021DB5CC *, u32); } UnkStruct63_021DBED8; +typedef struct UnkStruct_02090A58 +{ + struct UnkStruct_02090A58 * unk_00; + u32 unk_04; + u32 unk_08; + u32 unk_0C; + u32 unk_10; + u32 unk_14; + u32 unk_18; + u32 unk_1C; + u32 ** unk_20; + u32 unk_24; + u32 unk_28; + u32 unk_2C; + u32 unk_30; +} UnkStruct_02090A58; + u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); @@ -74,5 +91,6 @@ BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1); BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1); void MOD63_021DB934(void); +void MOD63_021DB940(struct UnkStruct_02090A58 * a0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 51b9a3ad..975836e8 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -42,10 +42,9 @@ extern void FUN_020079E0(u32, u32, s32); extern void FUN_02013364(void); extern void FUN_02013388(void); -//todo funcs -extern void MOD63_021DB940(); +void * FUN_0201341C(struct UnkStruct_02090A58 *); +int FUN_0200782C(void *, int); -//todo data const s32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8}; const struct UnkStruct63_021DBEF0 MOD63_021DBEF0[3]; @@ -293,3 +292,15 @@ THUMB_FUNC void MOD63_021DB934(void) FUN_02013364(); FUN_02013388(); } + +THUMB_FUNC void MOD63_021DB940(struct UnkStruct_02090A58 * a0) +{ + void * r4 = FUN_0201341C(a0); + int sp0[3] = {0, 0, 0}; + sp0[0] = (FUN_0200782C(r4, 0) - 0x80) * 0xAC; + sp0[1] = (FUN_0200782C(r4, 1) - 0x60) * 0xAC; + sp0[2] = 0x40; + a0->unk_28 = sp0[0] + (*a0->unk_20)[1]; + a0->unk_2C = sp0[1] + (*a0->unk_20)[2]; + a0->unk_30 = sp0[2] + (*a0->unk_20)[3]; +} -- cgit v1.2.3 From 1a1c726dc4dfbd299f398e8530b6c2a93990b58c Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 1 Aug 2020 12:40:50 +0100 Subject: merge several structs --- arm9/modules/63/include/mod63_021DB450.h | 85 +++++++++++--------------------- arm9/modules/63/src/mod63_021DB450.c | 48 +++++++++--------- 2 files changed, 53 insertions(+), 80 deletions(-) diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 5de4609b..0e27eb47 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -3,22 +3,31 @@ #include "global.h" -typedef struct UnkStruct63_021DB49C //animation struct? +typedef struct UnkStruct63_021DB450 { - u32 field_00; - u32 field_04[3]; //animation array? + struct UnkStruct63_021DB450 * field_00; + u32 field_04[3]; u32 field_10; void * field_14; void * field_18; -} UnkStruct63_021DB49C; + u8 field_1C; + u8 field_1D; + u8 padding_1E[2]; + u32 ** field_20; + u32 field_24; + u32 field_28; + u32 field_2C; + u32 field_30; + u8 filler_34[0x30]; +} UnkStruct63_021DB450; -typedef struct UnkStruct63_021DB49C_2 +typedef struct UnkStruct63_021DB49C { u32 field_00; u32 field_04; u32 field_08; u32 field_0C; -} UnkStruct63_021DB49C_2; +} UnkStruct63_021DB49C; typedef struct UnkStruct63_021DBEF0 { @@ -26,7 +35,7 @@ typedef struct UnkStruct63_021DBEF0 u32 field_04; } UnkStruct63_021DBEF0; -typedef struct UnkStruct63_021DB580 //possibly part of the above structs? +typedef struct UnkStruct63_021DB580 { u32 field_00; u8 filler[0x10]; @@ -34,63 +43,27 @@ typedef struct UnkStruct63_021DB580 //possibly part of the above structs? u32 field_24; } UnkStruct63_021DB580; -typedef struct UnkStruct63_021DB598 //part of the above? -{ - u32 field_00; -} UnkStruct63_021DB598; - -typedef struct UnkStruct63_021DB5A8 //possibly the same as above -{ - u32 field_00; -} UnkStruct63_021DB5A8; - -typedef struct UnkStruct63_021DB5CC -{ - u8 filler_00[4]; - u32 field_04[5]; - u32 field_18; - u8 field_1C; - u8 field_1D; -} UnkStruct63_021DB5CC; - typedef struct UnkStruct63_021DBED8 { - BOOL (*unk_00)(struct UnkStruct63_021DB5CC *, u32); - BOOL (*unk_04)(struct UnkStruct63_021DB5CC *, u32); + BOOL (*unk_00)(struct UnkStruct63_021DB450 *, u32); + BOOL (*unk_04)(struct UnkStruct63_021DB450 *, u32); } UnkStruct63_021DBED8; -typedef struct UnkStruct_02090A58 -{ - struct UnkStruct_02090A58 * unk_00; - u32 unk_04; - u32 unk_08; - u32 unk_0C; - u32 unk_10; - u32 unk_14; - u32 unk_18; - u32 unk_1C; - u32 ** unk_20; - u32 unk_24; - u32 unk_28; - u32 unk_2C; - u32 unk_30; -} UnkStruct_02090A58; - u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); -void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0); +void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg0); void MOD63_021DB580(UnkStruct63_021DB580 *param0); -void MOD63_021DB598(UnkStruct63_021DB598 *param0); -void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0); -BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2); -BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1); -BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1); -BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1); -BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1); -BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1); -BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1); +void MOD63_021DB598(UnkStruct63_021DB450 *param0); +void MOD63_021DB5A8(UnkStruct63_021DB450 *param0); +BOOL MOD63_021DB5CC(UnkStruct63_021DB450 *param0, u32 param1, s32 param2); +BOOL MOD63_021DB720(UnkStruct63_021DB450 *param0, u32 param1); +BOOL MOD63_021DB784(UnkStruct63_021DB450 *param0, u32 param1); +BOOL MOD63_021DB7D0(UnkStruct63_021DB450 *param0, u32 param1); +BOOL MOD63_021DB838(UnkStruct63_021DB450 *param0, u32 param1); +BOOL MOD63_021DB884(UnkStruct63_021DB450 *param0, u32 param1); +BOOL MOD63_021DB8E8(UnkStruct63_021DB450 *param0, u32 param1); void MOD63_021DB934(void); -void MOD63_021DB940(struct UnkStruct_02090A58 * a0); +void MOD63_021DB940(struct UnkStruct63_021DB450 * a0); #endif //POKEDIAMOND_MOD63_021DB450_H diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 975836e8..124ef4df 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -12,10 +12,10 @@ extern void FUN_0201327C(u32 param0); extern void FUN_020132BC(u32 param0); extern void * FUN_02012CDC(void *, void *, void *, u32, u32, u32); -extern u32 FUN_020073A0(u32, struct UnkStruct63_021DB49C_2 *, u32, u32, u32, u32, u32, u32); +extern u32 FUN_020073A0(struct UnkStruct63_021DB450 *, struct UnkStruct63_021DB49C *, u32, u32, u32, u32, u32, u32); -extern u32 FUN_02006D98(u32); -extern void FUN_02068C00(struct UnkStruct63_021DB49C_2*, u16, u32, u32, u32, u32, u32); +extern struct UnkStruct63_021DB450 * FUN_02006D98(u32); +extern void FUN_02068C00(struct UnkStruct63_021DB49C*, u16, u32, u32, u32, u32, u32); extern void FUN_02012CC8(void); extern void FUN_02007558(u32, u32, u32); extern void FUN_0201EC94(u32, u32, u32); @@ -26,23 +26,23 @@ extern u32 FUN_0201318C(u32, u32, u32); extern void FUN_02012DE4(u32); extern void FUN_020072E8(u32); -extern void FUN_020081C4(u32); +extern void FUN_020081C4(struct UnkStruct63_021DB450 *); extern void FUN_020222AC(void); extern void FUN_020B02C8(void); -extern u32 FUN_02006ED4(u32 param0); +extern u32 FUN_02006ED4(struct UnkStruct63_021DB450 *); extern void FUN_020222B4(u32, u32); -extern void FUN_02013440(u32, u32); -extern void FUN_020133AC(u32, u32, const void *, u32); -extern BOOL FUN_020133C8(u32); +extern void FUN_02013440(void *, u32); +extern void FUN_020133AC(void *, u32, const void *, u32); +extern BOOL FUN_020133C8(void *); extern void FUN_020079E0(u32, u32, s32); extern void FUN_02013364(void); extern void FUN_02013388(void); -void * FUN_0201341C(struct UnkStruct_02090A58 *); +void * FUN_0201341C(struct UnkStruct63_021DB450 *); int FUN_0200782C(void *, int); const s32 MOD63_021DBEC0[3] = {0x703, 0x7CE, 0x8A8}; @@ -69,9 +69,9 @@ THUMB_FUNC u32 MOD63_021DB498(void) return 32; } -THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB49C * arg0) +THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg0) { - struct UnkStruct63_021DB49C_2 sp1C; + struct UnkStruct63_021DB49C sp1C; int introMonArray[3] = {SPECIES_TURTWIG, SPECIES_CHIMCHAR, SPECIES_PIPLUP}; arg0->field_00 = FUN_02006D98(76); @@ -98,7 +98,7 @@ THUMB_FUNC void MOD63_021DB580(UnkStruct63_021DB580 *param0) FUN_020072E8(param0->field_00); } -THUMB_FUNC void MOD63_021DB598(UnkStruct63_021DB598 *param0) +THUMB_FUNC void MOD63_021DB598(UnkStruct63_021DB450 *param0) { if (param0 == NULL) { @@ -107,7 +107,7 @@ THUMB_FUNC void MOD63_021DB598(UnkStruct63_021DB598 *param0) FUN_020081C4(param0->field_00); } -THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB5A8 *param0) +THUMB_FUNC void MOD63_021DB5A8(UnkStruct63_021DB450 *param0) { if (param0 == NULL) { @@ -138,7 +138,7 @@ const struct UnkStruct63_021DBEF0 MOD63_021DBF08[3] = { //no idea if this is the {0, 1} }; -THUMB_FUNC BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 param2) +THUMB_FUNC BOOL MOD63_021DB5CC(UnkStruct63_021DB450 *param0, u32 param1, s32 param2) { u8 * state = ¶m0->field_1C; switch(*state) @@ -191,7 +191,7 @@ THUMB_FUNC BOOL MOD63_021DB5CC(UnkStruct63_021DB5CC *param0, u32 param1, s32 par return FALSE; } -THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1) +THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB450 *param0, u32 param1) { u32 field = param0->field_04[param1]; FUN_020079E0(field, 0x0, 0x6); @@ -208,7 +208,7 @@ THUMB_FUNC BOOL MOD63_021DB720(UnkStruct63_021DB5CC *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1) +THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB450 *param0, u32 param1) { u32 field = param0->field_04[param1]; FUN_020079E0(field, 0x0, -0x3); @@ -223,7 +223,7 @@ THUMB_FUNC BOOL MOD63_021DB784(UnkStruct63_021DB5CC *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1) +THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB450 *param0, u32 param1) { u32 field = param0->field_04[param1]; FUN_020079E0(field, 0x0, -0x10); @@ -240,7 +240,7 @@ THUMB_FUNC BOOL MOD63_021DB7D0(UnkStruct63_021DB5CC *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1) +THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB450 *param0, u32 param1) { u32 field = param0->field_04[param1]; FUN_020079E0(field, 0, -0x6); @@ -255,7 +255,7 @@ THUMB_FUNC BOOL MOD63_021DB838(UnkStruct63_021DB5CC *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1) +THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB450 *param0, u32 param1) { u32 field = param0->field_04[param1]; FUN_020079E0(field, 0, 0x8); @@ -272,7 +272,7 @@ THUMB_FUNC BOOL MOD63_021DB884(UnkStruct63_021DB5CC *param0, u32 param1) return FALSE; } -THUMB_FUNC BOOL MOD63_021DB8E8(UnkStruct63_021DB5CC *param0, u32 param1) +THUMB_FUNC BOOL MOD63_021DB8E8(UnkStruct63_021DB450 *param0, u32 param1) { u32 field = param0->field_04[param1]; FUN_020079E0(field, 0, 0x6); @@ -293,14 +293,14 @@ THUMB_FUNC void MOD63_021DB934(void) FUN_02013388(); } -THUMB_FUNC void MOD63_021DB940(struct UnkStruct_02090A58 * a0) +THUMB_FUNC void MOD63_021DB940(struct UnkStruct63_021DB450 * a0) { void * r4 = FUN_0201341C(a0); int sp0[3] = {0, 0, 0}; sp0[0] = (FUN_0200782C(r4, 0) - 0x80) * 0xAC; sp0[1] = (FUN_0200782C(r4, 1) - 0x60) * 0xAC; sp0[2] = 0x40; - a0->unk_28 = sp0[0] + (*a0->unk_20)[1]; - a0->unk_2C = sp0[1] + (*a0->unk_20)[2]; - a0->unk_30 = sp0[2] + (*a0->unk_20)[3]; + a0->field_28 = sp0[0] + (*a0->field_20)[1]; + a0->field_2C = sp0[1] + (*a0->field_20)[2]; + a0->field_30 = sp0[2] + (*a0->field_20)[3]; } -- cgit v1.2.3 From b5fbb5f9a8917d1061f6b534664ee5071215aef2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 1 Aug 2020 09:44:12 -0400 Subject: Merge structs --- arm9/modules/63/include/mod63_021DB450.h | 10 +--------- arm9/modules/63/src/mod63_021DB450.c | 10 +++++----- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/arm9/modules/63/include/mod63_021DB450.h b/arm9/modules/63/include/mod63_021DB450.h index 0e27eb47..e5ecc7df 100644 --- a/arm9/modules/63/include/mod63_021DB450.h +++ b/arm9/modules/63/include/mod63_021DB450.h @@ -35,14 +35,6 @@ typedef struct UnkStruct63_021DBEF0 u32 field_04; } UnkStruct63_021DBEF0; -typedef struct UnkStruct63_021DB580 -{ - u32 field_00; - u8 filler[0x10]; - void *field_20; - u32 field_24; -} UnkStruct63_021DB580; - typedef struct UnkStruct63_021DBED8 { BOOL (*unk_00)(struct UnkStruct63_021DB450 *, u32); @@ -53,7 +45,7 @@ u32 MOD63_021DB450(u32 param0, u32 param1); u32 MOD63_021DB474(u32 param0, u32 param1); u32 MOD63_021DB498(void); void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg0); -void MOD63_021DB580(UnkStruct63_021DB580 *param0); +void MOD63_021DB580(UnkStruct63_021DB450 *param0); void MOD63_021DB598(UnkStruct63_021DB450 *param0); void MOD63_021DB5A8(UnkStruct63_021DB450 *param0); BOOL MOD63_021DB5CC(UnkStruct63_021DB450 *param0, u32 param1, s32 param2); diff --git a/arm9/modules/63/src/mod63_021DB450.c b/arm9/modules/63/src/mod63_021DB450.c index 124ef4df..6f9e7036 100644 --- a/arm9/modules/63/src/mod63_021DB450.c +++ b/arm9/modules/63/src/mod63_021DB450.c @@ -23,8 +23,8 @@ extern u32 FUN_0201343C(void); extern void FUN_02013194(void *, u32, u32, u32); extern u32 FUN_0201318C(u32, u32, u32); -extern void FUN_02012DE4(u32); -extern void FUN_020072E8(u32); +extern void FUN_02012DE4(void *); +extern void FUN_020072E8(struct UnkStruct63_021DB450 *); extern void FUN_020081C4(struct UnkStruct63_021DB450 *); @@ -91,10 +91,10 @@ THUMB_FUNC void Title_SetupMonAnimationSprites(struct UnkStruct63_021DB450 * arg FUN_02013194(arg0->field_18, FUN_0201318C(0x3D, 4, 0x4C), 10, 1); } -THUMB_FUNC void MOD63_021DB580(UnkStruct63_021DB580 *param0) +THUMB_FUNC void MOD63_021DB580(UnkStruct63_021DB450 *param0) { - FUN_02012DE4(param0->field_24); - FreeToHeap(param0->field_20); + FUN_02012DE4(param0->field_18); + FreeToHeap(param0->field_14); FUN_020072E8(param0->field_00); } -- cgit v1.2.3