diff --git a/Makefile b/Makefile index c7e5cca4..02ecba09 100644 --- a/Makefile +++ b/Makefile @@ -14,9 +14,6 @@ include filesystem.mk $(ASM_OBJS): MWASFLAGS += -DPM_ASM -include config.h -$(BUILD_DIR)/asm/nitrocrypto.o: MWCCVER := 1.2/sp2p3 -$(BUILD_DIR)/lib/msl/src/*.o: EXCCFLAGS := -Cpp_exceptions on - $(ASM_OBJS): $(WORK_DIR)/include/config.h $(C_OBJS): $(WORK_DIR)/include/global.h @@ -57,14 +54,14 @@ sub: ; @$(MAKE) -C sub ROMSPEC := rom.rsf MAKEROM_FLAGS := $(DEFINES) +$(SBIN_LZ): $(BUILD_DIR)/component.files + $(COMPSTATIC) -9 -c -f $< + $(NEF): libsyscall libsyscall: $(MAKE) -C lib/syscall all install INSTALL_PREFIX=$(abspath $(WORK_DIR)/$(BUILD_DIR)) GAME_CODE=$(GAME_CODE) -$(SBIN_LZ): $(BUILD_DIR)/component.files - $(COMPSTATIC) -9 -c -f $< - $(BUILD_DIR)/component.files: main ; $(HEADER_TEMPLATE): ; @@ -79,14 +76,6 @@ endif $(BANNER): $(BANNER_SPEC) $(ICON_PNG:%.png=%.nbfp) $(ICON_PNG:%.png=%.nbfc) $(WINE) $(MAKEBNR) $< $@ -# TODO: move to NitroSDK makefile -FX_CONST_H := $(WORK_DIR)/lib/include/nitro/fx/fx_const.h -PROJECT_CLEAN_TARGETS += $(FX_CONST_H) -$(FX_CONST_H): $(TOOLSDIR)/gen_fx_consts/fx_const.csv - $(MKFXCONST) $@ -sdk: $(FX_CONST_H) -$(WORK_DIR)/include/global.h: $(FX_CONST_H) ; - compare: @$(MAKE) COMPARE=1 .PHONY: compare diff --git a/asm/include/itcm.inc b/asm/include/itcm.inc index 3d51680a..17ab967b 100644 --- a/asm/include/itcm.inc +++ b/asm/include/itcm.inc @@ -1,4 +1,3 @@ -#include #pragma once .public IsMonster__0231A9D4 .public sub_0207A238 diff --git a/asm/include/main.inc b/asm/include/main.inc index 0e05da1c..217eb987 100644 --- a/asm/include/main.inc +++ b/asm/include/main.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov00_022C23EC .public ov00_02310C18 @@ -60,3 +59,9 @@ .public sub_01FF97CC .public GetKeyN2MSwitch .public sub_01FF8D0C +.public sub_02000088 +.public MIi_UncompressBackward +.public OSi_ReferSymbol +.public sub_0200078E +.public _start_ModuleParams +.public _start_AutoloadDoneCallback diff --git a/asm/include/middleware.inc b/asm/include/middleware.inc deleted file mode 100644 index 75929d9f..00000000 --- a/asm/include/middleware.inc +++ /dev/null @@ -1,9 +0,0 @@ -#include -#pragma once -.public _version_NINTENDO_DWC -.public _version_NINTENDO_WiFi -.public _version_UBIQUITOUS_CPS -.public _version_UBIQUITOUS_SSL -.public _version_Abiosso_libVCT -.public _version_NINTENDO_BACKUP -.public _version_NINTENDO_DWC_LOBBY diff --git a/asm/include/overlay_00.inc b/asm/include/overlay_00.inc index 96264b46..46e46770 100644 --- a/asm/include/overlay_00.inc +++ b/asm/include/overlay_00.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov00_0233103C .public sub_02079940 @@ -57,7 +56,7 @@ .public sub_0208B360 .public Wcslen .public sub_02085074 -.public sub_02000B9C +.public OSi_ReferSymbol .public Strcpy .public sub_0207C2B8 .public sub_02008F64 diff --git a/asm/include/overlay_01.inc b/asm/include/overlay_01.inc index e1363eaa..3a77231b 100644 --- a/asm/include/overlay_01.inc +++ b/asm/include/overlay_01.inc @@ -1,4 +1,3 @@ -#include #pragma once .public DebugPrint0__0200C1FC .public ov00_022EF548 diff --git a/asm/include/overlay_02.inc b/asm/include/overlay_02.inc index ae9d400a..746b7da3 100644 --- a/asm/include/overlay_02.inc +++ b/asm/include/overlay_02.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0207CB14 .public sub_0207911C diff --git a/asm/include/overlay_03.inc b/asm/include/overlay_03.inc index e7468936..3e3dc2fa 100644 --- a/asm/include/overlay_03.inc +++ b/asm/include/overlay_03.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02003BFC .public sub_0208FE48 diff --git a/asm/include/overlay_04.inc b/asm/include/overlay_04.inc index 42f8a190..a0d7c6a2 100644 --- a/asm/include/overlay_04.inc +++ b/asm/include/overlay_04.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0202E6E4 .public sub_0204316C diff --git a/asm/include/overlay_05.inc b/asm/include/overlay_05.inc index 43273932..ccedbfbc 100644 --- a/asm/include/overlay_05.inc +++ b/asm/include/overlay_05.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02055E14 .public ov01_02338C4C diff --git a/asm/include/overlay_06.inc b/asm/include/overlay_06.inc index 0b7daea2..0de73e3b 100644 --- a/asm/include/overlay_06.inc +++ b/asm/include/overlay_06.inc @@ -1,4 +1,3 @@ -#include #pragma once .public GetHeldButtons .public ov01_02338E54 diff --git a/asm/include/overlay_07.inc b/asm/include/overlay_07.inc index 5fb6f89e..bef4950f 100644 --- a/asm/include/overlay_07.inc +++ b/asm/include/overlay_07.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02026214 .public ov01_02337D00 diff --git a/asm/include/overlay_08.inc b/asm/include/overlay_08.inc index 0d96d7f9..7d800f27 100644 --- a/asm/include/overlay_08.inc +++ b/asm/include/overlay_08.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov00_022C4718 .public sub_02046BE8 diff --git a/asm/include/overlay_09.inc b/asm/include/overlay_09.inc index 9cf8a6ee..18aafdca 100644 --- a/asm/include/overlay_09.inc +++ b/asm/include/overlay_09.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ShowMessageInDBox .public sub_0202A66C diff --git a/asm/include/overlay_10.inc b/asm/include/overlay_10.inc index f168751b..5881cc73 100644 --- a/asm/include/overlay_10.inc +++ b/asm/include/overlay_10.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02032A38 .public sub_020331AC diff --git a/asm/include/overlay_11.inc b/asm/include/overlay_11.inc index 51be269d..cbcf5d74 100644 --- a/asm/include/overlay_11.inc +++ b/asm/include/overlay_11.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov10_022C0998 .public sub_02055410 diff --git a/asm/include/overlay_13.inc b/asm/include/overlay_13.inc index 86381612..be7e126c 100644 --- a/asm/include/overlay_13.inc +++ b/asm/include/overlay_13.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02048764 .public CreateDBox diff --git a/asm/include/overlay_14.inc b/asm/include/overlay_14.inc index 2e6d1d00..732f3d2d 100644 --- a/asm/include/overlay_14.inc +++ b/asm/include/overlay_14.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov11_022F7064 .public ov11_022F6F08 diff --git a/asm/include/overlay_15.inc b/asm/include/overlay_15.inc index 43d7cd88..932061c2 100644 --- a/asm/include/overlay_15.inc +++ b/asm/include/overlay_15.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ShowDBox .public sub_02039B0C diff --git a/asm/include/overlay_16.inc b/asm/include/overlay_16.inc index 746a08f6..f70dce7d 100644 --- a/asm/include/overlay_16.inc +++ b/asm/include/overlay_16.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0202836C .public ShowPortraitBox diff --git a/asm/include/overlay_17.inc b/asm/include/overlay_17.inc index a8130580..eafe9df0 100644 --- a/asm/include/overlay_17.inc +++ b/asm/include/overlay_17.inc @@ -1,4 +1,3 @@ -#include #pragma once .public FreeNormalMenu .public CreateNormalMenu diff --git a/asm/include/overlay_18.inc b/asm/include/overlay_18.inc index 575897e4..5fb3a1e5 100644 --- a/asm/include/overlay_18.inc +++ b/asm/include/overlay_18.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_020572EC .public sub_020182B8 diff --git a/asm/include/overlay_19.inc b/asm/include/overlay_19.inc index 9709e137..d48d5be8 100644 --- a/asm/include/overlay_19.inc +++ b/asm/include/overlay_19.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0203EFD4 .public sub_020117C0 diff --git a/asm/include/overlay_20.inc b/asm/include/overlay_20.inc index a86ce1cc..a2ba07be 100644 --- a/asm/include/overlay_20.inc +++ b/asm/include/overlay_20.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_020125CC .public sub_0202C70C diff --git a/asm/include/overlay_21.inc b/asm/include/overlay_21.inc index ea2baa85..eff9668c 100644 --- a/asm/include/overlay_21.inc +++ b/asm/include/overlay_21.inc @@ -1,4 +1,3 @@ -#include #pragma once .public MemAlloc .public SetPortraitUnknownAttr diff --git a/asm/include/overlay_22.inc b/asm/include/overlay_22.inc index 5c7b3af2..c6a6aa47 100644 --- a/asm/include/overlay_22.inc +++ b/asm/include/overlay_22.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0204426C .public GetNbItemsInBag diff --git a/asm/include/overlay_23.inc b/asm/include/overlay_23.inc index c39e7157..168a5caa 100644 --- a/asm/include/overlay_23.inc +++ b/asm/include/overlay_23.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0200D670 .public CreateDBox diff --git a/asm/include/overlay_24.inc b/asm/include/overlay_24.inc index aecf4d76..b42f270d 100644 --- a/asm/include/overlay_24.inc +++ b/asm/include/overlay_24.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ShowDBox .public Rand16Bit diff --git a/asm/include/overlay_25.inc b/asm/include/overlay_25.inc index 281ba963..c17939ca 100644 --- a/asm/include/overlay_25.inc +++ b/asm/include/overlay_25.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0202E6E4 .public ov11_0230BCF8 diff --git a/asm/include/overlay_26.inc b/asm/include/overlay_26.inc index 8431c73d..5adcac8e 100644 --- a/asm/include/overlay_26.inc +++ b/asm/include/overlay_26.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_0205633C .public IsMoneyAllowed diff --git a/asm/include/overlay_27.inc b/asm/include/overlay_27.inc index aa5261dc..f2c88973 100644 --- a/asm/include/overlay_27.inc +++ b/asm/include/overlay_27.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02042CF0 .public sub_0200D670 diff --git a/asm/include/overlay_28.inc b/asm/include/overlay_28.inc index 09e33506..6df1824c 100644 --- a/asm/include/overlay_28.inc +++ b/asm/include/overlay_28.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_020276C0 .public Strcpy diff --git a/asm/include/overlay_29.inc b/asm/include/overlay_29.inc index 10d4f63f..e95a4364 100644 --- a/asm/include/overlay_29.inc +++ b/asm/include/overlay_29.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov31_02388714 .public ov10_022BEC94 diff --git a/asm/include/overlay_30.inc b/asm/include/overlay_30.inc index ef6f2530..f5965f5e 100644 --- a/asm/include/overlay_30.inc +++ b/asm/include/overlay_30.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov29_022DEA10 .public sub_02029FBC diff --git a/asm/include/overlay_31.inc b/asm/include/overlay_31.inc index 16727e30..4891c922 100644 --- a/asm/include/overlay_31.inc +++ b/asm/include/overlay_31.inc @@ -1,4 +1,3 @@ -#include #pragma once .public ov29_0234FB6C .public GetRecruitRate2 diff --git a/asm/include/overlay_34.inc b/asm/include/overlay_34.inc index 9010f12d..5dbb1794 100644 --- a/asm/include/overlay_34.inc +++ b/asm/include/overlay_34.inc @@ -1,4 +1,3 @@ -#include #pragma once .public sub_02008F64 .public sub_02002878 diff --git a/asm/main.s b/asm/main.s index f52dc122..f97eb375 100644 --- a/asm/main.s +++ b/asm/main.s @@ -138,8 +138,8 @@ _02000792: .byte 0xAF, 0xBF, 0xA0, 0x34, 0xC5, 0xD4, 0xDE, 0x28, 0x1E, 0xEF, 0x93, 0xD2, 0x85, 0x83, 0x49, 0x41 .byte 0xA6, 0x20, 0x03, 0x5E, 0xAA, 0xB6, 0x53, 0x4A, 0xE1, 0x86, 0xDB, 0x3A, 0xF3, 0xC5, 0x00, 0x00 - arm_func_start NitroMain -NitroMain: ; 0x02000800 + arm_func_start _start +_start: ; 0x02000800 mov ip, #0x4000000 str ip, [ip, #0x208] _02000808: @@ -181,11 +181,11 @@ _02000854: ldr r1, _0200093C ; =0x07000000 mov r2, #0x400 bl sub_02000954 - ldr r1, _02000940 ; =0x02000BA0 + ldr r1, _02000940 ; =_start_ModuleParams ldr r0, [r1, #0x14] - bl sub_02000970 - bl sub_02000A1C - ldr r0, _02000940 ; =0x02000BA0 + bl MIi_UncompressBackward + bl do_autoload + ldr r0, _02000940 ; =_start_ModuleParams ldr r1, [r0, #0xc] ldr r2, [r0, #0x10] mov r3, r1 @@ -230,12 +230,12 @@ _02000930: .word 0x027E0000 _02000934: .word 0x00000800 _02000938: .word 0x05000000 _0200093C: .word 0x07000000 -_02000940: .word 0x02000BA0 +_02000940: .word _start_ModuleParams _02000944: .word 0x027FFF9C _02000948: .word 0x01FF95E8 _0200094C: .word 0x02000C6C _02000950: .word 0xFFFF0000 - arm_func_end NitroMain + arm_func_end _start arm_func_start sub_02000954 sub_02000954: ; 0x02000954 @@ -251,8 +251,8 @@ _02000968: bx lr arm_func_end sub_02000954 - arm_func_start sub_02000970 -sub_02000970: ; 0x02000970 + arm_func_start MIi_UncompressBackward +MIi_UncompressBackward: ; 0x02000970 cmp r0, #0 beq _02000A18 stmdb sp!, {r4, r5, r6, r7} @@ -304,11 +304,11 @@ _020009FC: ldmdb sp!, {r4, r5, r6, r7} _02000A18: bx lr - arm_func_end sub_02000970 + arm_func_end MIi_UncompressBackward - arm_func_start sub_02000A1C -sub_02000A1C: ; 0x02000A1C - ldr r0, _02000AA8 ; =0x02000BA0 + arm_func_start do_autoload +do_autoload: ; 0x02000A1C + ldr r0, _02000AA8 ; =_start_ModuleParams ldr r1, [r0] ldr r2, [r0, #4] ldr r3, [r0, #8] @@ -353,12 +353,15 @@ _02000A88: blt _02000A88 b _02000A2C _02000AA4: - b _02000AAC + b _start_AutoloadDoneCallback .align 2, 0 -_02000AA8: .word 0x02000BA0 -_02000AAC: +_02000AA8: .word _start_ModuleParams + arm_func_end do_autoload + + arm_func_start _start_AutoloadDoneCallback +_start_AutoloadDoneCallback: bx lr - arm_func_end sub_02000A1C + arm_func_end _start_AutoloadDoneCallback arm_func_start sub_02000AB0 sub_02000AB0: ; 0x02000AB0 @@ -428,11 +431,11 @@ sub_02000B98: ; 0x02000B98 bx lr arm_func_end sub_02000B98 - arm_func_start sub_02000B9C -sub_02000B9C: ; 0x02000B9C + arm_func_start OSi_ReferSymbol +OSi_ReferSymbol: ; 0x02000B9C bx lr - arm_func_end sub_02000B9C -_02000BA0: + arm_func_end OSi_ReferSymbol +_start_ModuleParams: .byte 0xE0, 0x73, 0x0B, 0x02, 0xF8, 0x73, 0x0B, 0x02, 0x80, 0x33, 0x0B, 0x02, 0x80, 0x33, 0x0B, 0x02 .byte 0x80, 0xCA, 0x2B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x34, 0x75, 0x02, 0x04, 0x21, 0x06, 0xC0, 0xDE .byte 0xDE, 0xC0, 0x06, 0x21, 0x5B, 0x53, 0x44, 0x4B, 0x2B, 0x4E, 0x49, 0x4E, 0x54, 0x45, 0x4E, 0x44 @@ -445,30 +448,107 @@ _02000BA0: .byte 0x00, 0x00, 0x00, 0x00, 0x5B, 0x53, 0x44, 0x4B, 0x2B, 0x4E, 0x49, 0x4E, 0x54, 0x45, 0x4E, 0x44 .byte 0x4F, 0x3A, 0x44, 0x57, 0x43, 0x33, 0x2E, 0x31, 0x2E, 0x33, 0x30, 0x30, 0x30, 0x34, 0x2E, 0x32 .byte 0x30, 0x30, 0x38, 0x31, 0x31, 0x30, 0x34, 0x2E, 0x31, 0x37, 0x30, 0x30, 0x5F, 0x44, 0x57, 0x43 - .byte 0x5F, 0x33, 0x5F, 0x31, 0x5F, 0x50, 0x4C, 0x55, 0x53, 0x34, 0x5D, 0x00, 0x10, 0x40, 0x2D, 0xE9 - .byte 0x08, 0xD0, 0x4D, 0xE2, 0xBC, 0xE5, 0x01, 0xEB, 0x12, 0x00, 0xA0, 0xE3, 0xDD, 0x09, 0x02, 0xEB - .byte 0x48, 0x01, 0x9F, 0xE5, 0x53, 0x0E, 0x02, 0xEB, 0x31, 0xE8, 0x01, 0xEB, 0xF7, 0xD4, 0x01, 0xEB - .byte 0x00, 0x00, 0xE0, 0xE3, 0xC8, 0xF9, 0x01, 0xEB, 0x60, 0xE5, 0x01, 0xEB, 0x9A, 0xE5, 0x01, 0xEB - .byte 0x00, 0x00, 0xA0, 0xE3, 0x1E, 0xE6, 0x01, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x20, 0xE6, 0x01, 0xEB, 0x04, 0x20, 0xA0, 0xE1, 0x00, 0x10, 0xA0, 0xE1, 0x10, 0x01, 0x9F, 0xE5 - .byte 0x4D, 0x2D, 0x00, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x15, 0xE6, 0x01, 0xEB, 0x00, 0x40, 0xA0, 0xE1 - .byte 0x00, 0x00, 0xA0, 0xE3, 0x17, 0xE6, 0x01, 0xEB, 0x04, 0x00, 0x50, 0xE1, 0x18, 0x00, 0x00, 0x2A - .byte 0x00, 0x00, 0xA0, 0xE3, 0x0E, 0xE6, 0x01, 0xEB, 0x00, 0x40, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x10, 0xE6, 0x01, 0xEB, 0x00, 0x10, 0xA0, 0xE1, 0x04, 0x20, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x01, 0x30, 0xA0, 0xE3, 0x20, 0xE7, 0x01, 0xEB, 0x00, 0x10, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x75, 0xE6, 0x01, 0xEB, 0x00, 0x00, 0xA0, 0xE3, 0x01, 0xE6, 0x01, 0xEB, 0x00, 0x40, 0xA0, 0xE1 - .byte 0x00, 0x00, 0xA0, 0xE3, 0x03, 0xE6, 0x01, 0xEB, 0x04, 0x20, 0xA0, 0xE1, 0x00, 0x10, 0xA0, 0xE1 - .byte 0x00, 0x00, 0xA0, 0xE3, 0x3E, 0xE7, 0x01, 0xEB, 0x00, 0x10, 0xA0, 0xE1, 0x00, 0x00, 0xA0, 0xE3 - .byte 0x05, 0xE7, 0x01, 0xEB, 0x8C, 0x20, 0x9F, 0xE5, 0x01, 0x00, 0xA0, 0xE3, 0xB0, 0x10, 0xD2, 0xE1 - .byte 0xB0, 0x00, 0xC2, 0xE1, 0x9D, 0xEA, 0x01, 0xEB, 0x13, 0x20, 0x00, 0xEB, 0x00, 0x00, 0x8D, 0xE2 - .byte 0x21, 0xEB, 0x01, 0xEB, 0x02, 0x10, 0xDD, 0xE5, 0x03, 0x00, 0xDD, 0xE5, 0x00, 0x30, 0xDD, 0xE5 - .byte 0x01, 0x20, 0xDD, 0xE5, 0x81, 0x00, 0x60, 0xE1, 0x93, 0x02, 0x20, 0xE0, 0x04, 0x20, 0xDD, 0xE5 - .byte 0x05, 0x10, 0xDD, 0xE5, 0x92, 0x01, 0x20, 0xE0, 0x26, 0x05, 0x00, 0xEB, 0xD4, 0x05, 0x00, 0xEB - .byte 0xC5, 0x06, 0x00, 0xEB, 0xEC, 0x06, 0x00, 0xEB, 0x3E, 0x07, 0x00, 0xEB, 0xA2, 0x07, 0x00, 0xEB - .byte 0x59, 0x08, 0x00, 0xEB, 0x1C, 0x09, 0x00, 0xEB, 0xC9, 0x2C, 0x00, 0xEB, 0x81, 0x08, 0x00, 0xEB - .byte 0x24, 0x00, 0x9F, 0xE5, 0x4E, 0x1D, 0x00, 0xEB, 0x04, 0x26, 0x01, 0xEB, 0x42, 0x0C, 0x00, 0xEB - .byte 0x58, 0x09, 0x00, 0xEB, 0x92, 0xE3, 0x01, 0xEB, 0x98, 0xEB, 0x01, 0xEB, 0xFD, 0xFF, 0xFF, 0xEA - .byte 0xD4, 0x24, 0x00, 0x02, 0x48, 0x24, 0x09, 0x02, 0x08, 0x02, 0x00, 0x04, 0x60, 0x24, 0x09, 0x02 + .byte 0x5F, 0x33, 0x5F, 0x31, 0x5F, 0x50, 0x4C, 0x55, 0x53, 0x34, 0x5D, 0x00 + + arm_func_start NitroMain +NitroMain: ; 0x02000C6C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + bl sub_0207A36C + mov r0, #0x12 + bl sub_020833F8 + ldr r0, _02000DD0 ; =0x020024D4 + bl sub_020845D8 + bl sub_0207AD54 + bl sub_02076070 + mvn r0, #0 + bl sub_0207F3BC + bl sub_0207A220 + bl sub_0207A30C + mov r0, #0 + bl sub_0207A524 + mov r4, r0 + mov r0, #0 + bl sub_0207A538 + mov r2, r4 + mov r1, r0 + ldr r0, _02000DD4 ; =0x02092448 + bl DebugPrint0__0200C1FC + mov r0, #0 + bl sub_0207A524 + mov r4, r0 + mov r0, #0 + bl sub_0207A538 + cmp r0, r4 + bhs _02000D44 + mov r0, #0 + bl sub_0207A524 + mov r4, r0 + mov r0, #0 + bl sub_0207A538 + mov r1, r0 + mov r2, r4 + mov r0, #0 + mov r3, #1 + bl sub_0207A98C + mov r1, r0 + mov r0, #0 + bl sub_0207A6EC + mov r0, #0 + bl sub_0207A524 + mov r4, r0 + mov r0, #0 + bl sub_0207A538 + mov r2, r4 + mov r1, r0 + mov r0, #0 + bl sub_0207AA34 + mov r1, r0 + mov r0, #0 + bl sub_0207A95C +_02000D44: + ldr r2, _02000DD8 ; =0x04000208 + mov r0, #1 + ldrh r1, [r2] + strh r0, [r2] + bl ClearIrqFlag + bl sub_02008DAC + add r0, sp, #0 + bl sub_0207B9EC + ldrb r1, [sp, #2] + ldrb r0, [sp, #3] + ldrb r3, [sp] + ldrb r2, [sp, #1] + smulbb r0, r1, r0 + mla r0, r3, r2, r0 + ldrb r2, [sp, #4] + ldrb r1, [sp, #5] + mla r0, r2, r1, r0 + bl sub_02002228 + bl sub_020024E4 + bl sub_020028AC + bl sub_0200294C + bl sub_02002A98 + bl sub_02002C2C + bl sub_02002F0C + bl InitMemAllocTableVeneer + bl sub_0200C0D4 + bl sub_02002FB8 + ldr r0, _02000DDC ; =0x02092460 + bl sub_020082F4 + bl sub_0204A5D0 + bl sub_02003ECC + bl TaskProcBoot + bl sub_02079C14 +_02000DC8: + bl WaitForInterrupt + b _02000DC8 + .align 2, 0 +_02000DD0: .word 0x020024D4 +_02000DD4: .word 0x02092448 +_02000DD8: .word 0x04000208 +_02000DDC: .word 0x02092460 + arm_func_end NitroMain arm_func_start InitMemAllocTable InitMemAllocTable: ; 0x02000DE0 @@ -2044,8 +2124,11 @@ ClampedLn: ; 0x020021F4 _02002220: .word 0x000007FF _02002224: .word 0x02091448 arm_func_end ClampedLn -_02002228: - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_02002228 +sub_02002228: ; 0x02002228 + bx lr + arm_func_end sub_02002228 arm_func_start GetRngSeed GetRngSeed: ; 0x0200222C @@ -2637,8 +2720,11 @@ _020028A4: mov r0, #0 ldmdb sp!, {r4, pc} arm_func_end sub_02002878 -_020028AC: - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_020028AC +sub_020028AC: ; 0x020028AC + bx lr + arm_func_end sub_020028AC arm_func_start sub_020028B0 sub_020028B0: ; 0x020028B0 @@ -2698,8 +2784,11 @@ _02002944: mov r0, #0 ldmdb sp!, {r4, pc} arm_func_end sub_02002910 -_0200294C: - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_0200294C +sub_0200294C: ; 0x0200294C + bx lr + arm_func_end sub_0200294C arm_func_start sub_02002950 sub_02002950: ; 0x02002950 @@ -2805,8 +2894,11 @@ sub_02002A44: ; 0x02002A44 .align 2, 0 _02002A94: .word 0x022B966C arm_func_end sub_02002A44 -_02002A98: - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_02002A98 +sub_02002A98: ; 0x02002A98 + bx lr + arm_func_end sub_02002A98 arm_func_start sub_02002A9C sub_02002A9C: ; 0x02002A9C @@ -2938,9 +3030,16 @@ sub_02002BD0: ; 0x02002BD0 .align 2, 0 _02002C28: .word 0x022B966C arm_func_end sub_02002BD0 -_02002C2C: - .byte 0x04, 0xC0, 0x9F, 0xE5 - .byte 0x04, 0x00, 0x9F, 0xE5, 0x1C, 0xFF, 0x2F, 0xE1, 0x30, 0xA0, 0x07, 0x02, 0xF8, 0xB0, 0x29, 0x02 + + arm_func_start sub_02002C2C +sub_02002C2C: ; 0x02002C2C + ldr ip, _02002C38 ; =sub_0207A030 + ldr r0, _02002C3C ; =0x0229B0F8 + bx ip + .align 2, 0 +_02002C38: .word sub_0207A030 +_02002C3C: .word 0x0229B0F8 + arm_func_end sub_02002C2C arm_func_start sub_02002C40 sub_02002C40: ; 0x02002C40 @@ -4460,8 +4559,11 @@ _02003EC0: .word 0x020AEF7C _02003EC4: .word 0x020AF050 _02003EC8: .word 0x02092540 arm_func_end HaltProcessDisp -_02003ECC: - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_02003ECC +sub_02003ECC: ; 0x02003ECC + bx lr + arm_func_end sub_02003ECC arm_func_start OverlayIsLoaded OverlayIsLoaded: ; 0x02003ED0 @@ -8140,16 +8242,45 @@ sub_02006FB8: ; 0x02006FB8 .align 2, 0 _02007000: .word 0x02092798 arm_func_end sub_02006FB8 -_02007004: - .byte 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x60, 0xB0, 0xE1, 0x13, 0x00, 0x00, 0x0A - .byte 0x3A, 0x10, 0xA0, 0xE3, 0xD3, 0xEC, 0xFF, 0xEB, 0x00, 0x40, 0xB0, 0xE1, 0x08, 0x00, 0x00, 0x0A - .byte 0x06, 0x50, 0x44, 0xE0, 0x48, 0x00, 0x9F, 0xE5, 0x06, 0x10, 0xA0, 0xE1, 0x05, 0x20, 0xA0, 0xE1 - .byte 0xC9, 0x09, 0x02, 0xEB, 0x38, 0x00, 0x9F, 0xE5, 0x00, 0x10, 0xA0, 0xE3, 0x05, 0x10, 0xC0, 0xE7 - .byte 0x01, 0x60, 0x84, 0xE2, 0xD0, 0x00, 0xD6, 0xE1, 0x00, 0x00, 0x50, 0xE3, 0x03, 0x00, 0x00, 0x0A - .byte 0x20, 0x00, 0x9F, 0xE5, 0x20, 0x10, 0x9F, 0xE5, 0x06, 0x20, 0xA0, 0xE1, 0x48, 0x09, 0x02, 0xEB - .byte 0x18, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0x9F, 0xE5, 0x08, 0x20, 0x9F, 0xE5, 0x62, 0x14, 0x00, 0xEB - .byte 0x70, 0x80, 0xBD, 0xE8, 0xB8, 0xF2, 0x0A, 0x02, 0xC4, 0xF2, 0x0A, 0x02, 0xB8, 0x27, 0x09, 0x02 - .byte 0xBC, 0x27, 0x09, 0x02 + + arm_func_start sub_02007004 +sub_02007004: ; 0x02007004 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + beq _02007060 + mov r1, #0x3a + bl sub_02002368 + movs r4, r0 + beq _02007044 + sub r5, r4, r6 + ldr r0, _02007074 ; =0x020AF2B8 + mov r1, r6 + mov r2, r5 + bl Strncpy + ldr r0, _02007074 ; =0x020AF2B8 + mov r1, #0 + strb r1, [r0, r5] + add r6, r4, #1 +_02007044: + ldrsb r0, [r6] + cmp r0, #0 + beq _02007060 + ldr r0, _02007078 ; =0x020AF2C4 + ldr r1, _0200707C ; =0x020927B8 + mov r2, r6 + bl Sprintf +_02007060: + ldr r0, _02007080 ; =0x020927BC + ldr r1, _02007074 ; =0x020AF2B8 + ldr r2, _02007078 ; =0x020AF2C4 + bl DebugPrint0__0200C1FC + ldmdb sp!, {r4, r5, r6, pc} + .align 2, 0 +_02007074: .word 0x020AF2B8 +_02007078: .word 0x020AF2C4 +_0200707C: .word 0x020927B8 +_02007080: .word 0x020927BC + arm_func_end sub_02007004 arm_func_start sub_02007084 sub_02007084: ; 0x02007084 @@ -8393,8 +8524,11 @@ sub_0200733C: ; 0x0200733C bl sub_02007254 ldmdb sp!, {r3, r4, r5, pc} arm_func_end sub_0200733C -_02007380: - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_02007380 +sub_02007380: ; 0x02007380 + bx lr + arm_func_end sub_02007380 arm_func_start sub_02007384 sub_02007384: ; 0x02007384 @@ -9517,29 +9651,98 @@ sub_020082E0: ; 0x020082E0 .align 2, 0 _020082F0: .word 0x020AF360 arm_func_end sub_020082E0 -_020082F4: - .byte 0xF0, 0x41, 0x2D, 0xE9, 0x00, 0x80, 0xA0, 0xE1, 0x0C, 0x01, 0x9F, 0xE5 - .byte 0x08, 0x10, 0xA0, 0xE3, 0x0A, 0xEB, 0xFF, 0xEB, 0x04, 0x01, 0x9F, 0xE5, 0x4B, 0xEA, 0xFF, 0xEB - .byte 0xFC, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0xA0, 0xE3, 0x63, 0xEA, 0xFF, 0xEB, 0xF0, 0x00, 0x9F, 0xE5 - .byte 0xDC, 0xEA, 0xFF, 0xEB, 0x08, 0x10, 0xA0, 0xE3, 0xE8, 0x00, 0x9F, 0xE5, 0x01, 0x20, 0xA0, 0xE1 - .byte 0xD9, 0xE9, 0xFF, 0xEB, 0xE0, 0x00, 0x9F, 0xE5, 0x08, 0x10, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3 - .byte 0xD5, 0xE9, 0xFF, 0xEB, 0xD4, 0x00, 0x9F, 0xE5, 0x80, 0xE9, 0xFF, 0xEB, 0xD0, 0x00, 0x9F, 0xE5 - .byte 0x3A, 0xEA, 0xFF, 0xEB, 0xCC, 0x00, 0x9F, 0xE5, 0x01, 0x10, 0xA0, 0xE3, 0x00, 0x20, 0xA0, 0xE3 - .byte 0xCD, 0xE9, 0xFF, 0xEB, 0x02, 0x0B, 0xA0, 0xE3, 0xF3, 0x10, 0x40, 0xE2, 0x7F, 0xE3, 0xFF, 0xEB - .byte 0x00, 0x60, 0xA0, 0xE1, 0xB0, 0x00, 0x9F, 0xE5, 0x00, 0x70, 0xA0, 0xE3, 0xAC, 0x40, 0x9F, 0xE5 - .byte 0x00, 0x60, 0x80, 0xE5, 0x07, 0x50, 0xA0, 0xE1, 0x06, 0x00, 0xA0, 0xE1, 0x05, 0x10, 0xA0, 0xE1 - .byte 0x05, 0x20, 0xA0, 0xE1, 0x04, 0x30, 0xA0, 0xE1, 0x78, 0x01, 0x00, 0xEB, 0x01, 0x70, 0x87, 0xE2 - .byte 0x08, 0x00, 0x57, 0xE3, 0x01, 0x6C, 0x86, 0xE2, 0xF6, 0xFF, 0xFF, 0xBA, 0x08, 0x00, 0xA0, 0xE1 - .byte 0x13, 0xFB, 0xFF, 0xEB, 0xCF, 0xFA, 0xFF, 0xEB, 0xF0, 0xFB, 0xFF, 0xEB, 0xF0, 0xFB, 0xFF, 0xEB - .byte 0x6C, 0x00, 0x9F, 0xE5, 0x8C, 0x0F, 0x00, 0xEB, 0x02, 0xFC, 0xFF, 0xEB, 0x64, 0x00, 0x9F, 0xE5 - .byte 0x89, 0x0F, 0x00, 0xEB, 0x60, 0x00, 0x9F, 0xE5, 0x60, 0x10, 0x9F, 0xE5, 0x08, 0x00, 0x90, 0xE5 - .byte 0x62, 0xE3, 0xFF, 0xEB, 0x50, 0x20, 0x9F, 0xE5, 0x54, 0x10, 0x9F, 0xE5, 0x04, 0x00, 0x82, 0xE5 - .byte 0x50, 0x00, 0x9F, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0xDE, 0xE8, 0xFF, 0xEB, 0x20, 0x00, 0x9F, 0xE5 - .byte 0xA4, 0xEA, 0xFF, 0xEB, 0x3C, 0x00, 0x9F, 0xE5, 0xF6, 0xE8, 0xFF, 0xEB, 0xF0, 0x81, 0xBD, 0xE8 - .byte 0x9C, 0x36, 0x2A, 0x02, 0xE4, 0xF3, 0x0A, 0x02, 0x90, 0xF4, 0x0A, 0x02, 0x3C, 0xF5, 0x0A, 0x02 - .byte 0x2C, 0xF4, 0x0A, 0x02, 0x08, 0xF4, 0x0A, 0x02, 0xE8, 0xF5, 0x0A, 0x02, 0x98, 0x36, 0x2A, 0x02 - .byte 0x78, 0x29, 0x09, 0x02, 0x7C, 0x29, 0x09, 0x02, 0x9C, 0x29, 0x09, 0x02, 0xD0, 0xF3, 0x0A, 0x02 - .byte 0x0D, 0x07, 0x00, 0x00, 0xD0, 0xF3, 0x0A, 0x02, 0xC4, 0x36, 0x2A, 0x02 + + arm_func_start sub_020082F4 +sub_020082F4: ; 0x020082F4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + ldr r0, _02008410 ; =0x022A369C + mov r1, #8 + bl sub_02002F34 + ldr r0, _02008414 ; =0x020AF3E4 + bl sub_02002C40 + ldr r0, _02008414 ; =0x020AF3E4 + mov r1, #8 + bl sub_02002CAC + ldr r0, _02008414 ; =0x020AF3E4 + bl sub_02002E98 + mov r1, #8 + ldr r0, _02008418 ; =0x020AF490 + mov r2, r1 + bl sub_02002A9C + ldr r0, _0200841C ; =0x020AF53C + mov r1, #8 + mov r2, #0 + bl sub_02002A9C + ldr r0, _02008420 ; =0x020AF42C + bl sub_02002950 + ldr r0, _02008424 ; =0x020AF408 + bl sub_02002C40 + ldr r0, _02008428 ; =0x020AF5E8 + mov r1, #1 + mov r2, #0 + bl sub_02002A9C + mov r0, #0x800 + sub r1, r0, #0xf3 + bl MemAlloc + mov r6, r0 + ldr r0, _0200842C ; =0x022A3698 + mov r7, #0 + ldr r4, _02008430 ; =0x02092978 + str r6, [r0] + mov r5, r7 +_02008388: + mov r0, r6 + mov r1, r5 + mov r2, r5 + mov r3, r4 + bl sub_02008980 + add r7, r7, #1 + cmp r7, #8 + add r6, r6, #0x100 + blt _02008388 + mov r0, r8 + bl sub_02007004 + bl sub_02006EF8 + bl sub_02007380 + bl sub_02007384 + ldr r0, _02008434 ; =0x0209297C + bl DebugPrint0__0200C1FC + bl sub_020073D8 + ldr r0, _02008438 ; =0x0209299C + bl DebugPrint0__0200C1FC + ldr r0, _0200843C ; =0x020AF3D0 + ldr r1, _02008440 ; =0x0000070D + ldr r0, [r0, #8] + bl MemAlloc + ldr r2, _0200843C ; =0x020AF3D0 + ldr r1, _02008444 ; =0x020AF3D0 + str r0, [r2, #4] + ldr r0, _02008448 ; =0x022A36C4 + mov r2, #0 + bl sub_02002778 + ldr r0, _02008424 ; =0x020AF408 + bl sub_02002E98 + ldr r0, _02008448 ; =0x022A36C4 + bl sub_020027E8 + ldmdb sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02008410: .word 0x022A369C +_02008414: .word 0x020AF3E4 +_02008418: .word 0x020AF490 +_0200841C: .word 0x020AF53C +_02008420: .word 0x020AF42C +_02008424: .word 0x020AF408 +_02008428: .word 0x020AF5E8 +_0200842C: .word 0x022A3698 +_02008430: .word 0x02092978 +_02008434: .word 0x0209297C +_02008438: .word 0x0209299C +_0200843C: .word 0x020AF3D0 +_02008440: .word 0x0000070D +_02008444: .word 0x020AF3D0 +_02008448: .word 0x022A36C4 + arm_func_end sub_020082F4 arm_func_start sub_0200844C sub_0200844C: ; 0x0200844C @@ -143831,9 +144034,16 @@ sub_0207A1FC: ; 0x0207A1FC strne r2, [r1, #0x10] bx lr arm_func_end sub_0207A1FC -_0207A220: - .byte 0x10, 0x1F, 0x11, 0xEE, 0x04, 0x00, 0x01, 0xE2, 0x20, 0x01, 0xA0, 0xE1, 0x04, 0x10, 0x81, 0xE3 - .byte 0x10, 0x1F, 0x01, 0xEE, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_0207A220 +sub_0207A220: ; 0x0207A220 + mrc p15, 0, r1, c1, c0, 0 + and r0, r1, #4 + mov r0, r0, lsr #2 + orr r1, r1, #4 + mcr p15, 0, r1, c1, c0, 0 + bx lr + arm_func_end sub_0207A220 arm_func_start sub_0207A238 sub_0207A238: ; 0x0207A238 @@ -143922,10 +144132,16 @@ sub_0207A300: ; 0x0207A300 mcr p15, 0, r0, c7, c10, 4 bx lr arm_func_end sub_0207A300 -_0207A30C: - .byte 0x10, 0x1F, 0x11, 0xEE - .byte 0x01, 0x0A, 0x01, 0xE2, 0x20, 0x06, 0xA0, 0xE1, 0x01, 0x1A, 0x81, 0xE3, 0x10, 0x1F, 0x01, 0xEE - .byte 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_0207A30C +sub_0207A30C: ; 0x0207A30C + mrc p15, 0, r1, c1, c0, 0 + and r0, r1, #0x1000 + mov r0, r0, lsr #0xc + orr r1, r1, #0x1000 + mcr p15, 0, r1, c1, c0, 0 + bx lr + arm_func_end sub_0207A30C arm_func_start sub_0207A324 sub_0207A324: ; 0x0207A324 @@ -144083,10 +144299,24 @@ _0207A518: .word 0x022B98C4 _0207A51C: .word 0x0200002B _0207A520: .word 0x023E0021 arm_func_end sub_0207A4B8 -_0207A524: - .byte 0x00, 0x01, 0xA0, 0xE1, 0x27, 0x06, 0x80, 0xE2, 0xFF, 0x0A, 0x80, 0xE2 - .byte 0xC4, 0x0D, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1, 0x00, 0x01, 0xA0, 0xE1, 0x27, 0x06, 0x80, 0xE2 - .byte 0xFF, 0x0A, 0x80, 0xE2, 0xA0, 0x0D, 0x90, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 + + arm_func_start sub_0207A524 +sub_0207A524: ; 0x0207A524 + mov r0, r0, lsl #2 + add r0, r0, #0x2700000 + add r0, r0, #0xff000 + ldr r0, [r0, #0xdc4] + bx lr + arm_func_end sub_0207A524 + + arm_func_start sub_0207A538 +sub_0207A538: ; 0x0207A538 + mov r0, r0, lsl #2 + add r0, r0, #0x2700000 + add r0, r0, #0xff000 + ldr r0, [r0, #0xda0] + bx lr + arm_func_end sub_0207A538 arm_func_start sub_0207A54C sub_0207A54C: ; 0x0207A54C @@ -144418,31 +144648,118 @@ sub_0207A8F4: ; 0x0207A8F4 .align 2, 0 _0207A958: .word 0x022B98CC arm_func_end sub_0207A8F4 -_0207A95C: - .byte 0x38, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x9D, 0x03, 0x00, 0xEB, 0x14, 0x10, 0x9F, 0xE5 - .byte 0x04, 0x11, 0x91, 0xE7, 0x00, 0x40, 0x91, 0xE5, 0x00, 0x50, 0x81, 0xE5, 0x9D, 0x03, 0x00, 0xEB - .byte 0x04, 0x00, 0xA0, 0xE1, 0x38, 0x80, 0xBD, 0xE8, 0xCC, 0x98, 0x2B, 0x02, 0xF8, 0x40, 0x2D, 0xE9 - .byte 0x00, 0x70, 0xA0, 0xE1, 0x01, 0x50, 0xA0, 0xE1, 0x02, 0x40, 0xA0, 0xE1, 0x03, 0x60, 0xA0, 0xE1 - .byte 0x8F, 0x03, 0x00, 0xEB, 0x84, 0x20, 0x9F, 0xE5, 0x0C, 0x10, 0xA0, 0xE3, 0x07, 0x51, 0x82, 0xE7 - .byte 0x14, 0x20, 0x85, 0xE2, 0x10, 0x20, 0x85, 0xE5, 0x96, 0x01, 0x01, 0xE0, 0x04, 0x60, 0x85, 0xE5 - .byte 0x00, 0x00, 0x56, 0xE3, 0x00, 0xE0, 0xA0, 0xE3, 0x0C, 0x00, 0x00, 0xDA, 0x0E, 0x60, 0xA0, 0xE1 - .byte 0x00, 0xC0, 0xE0, 0xE3, 0x0E, 0x30, 0xA0, 0xE1, 0x10, 0x20, 0x95, 0xE5, 0x01, 0xE0, 0x8E, 0xE2 - .byte 0x06, 0xC0, 0x82, 0xE7, 0x06, 0x20, 0x82, 0xE0, 0x08, 0x30, 0x82, 0xE5, 0x04, 0x30, 0x82, 0xE5 - .byte 0x04, 0x20, 0x95, 0xE5, 0x0C, 0x60, 0x86, 0xE2, 0x02, 0x00, 0x5E, 0xE1, 0xF5, 0xFF, 0xFF, 0xBA - .byte 0x00, 0x20, 0xE0, 0xE3, 0x00, 0x20, 0x85, 0xE5, 0x10, 0x30, 0x95, 0xE5, 0x1F, 0x20, 0xC4, 0xE3 - .byte 0x01, 0x10, 0x83, 0xE0, 0x1F, 0x10, 0x81, 0xE2, 0x1F, 0x10, 0xC1, 0xE3, 0x08, 0x10, 0x85, 0xE5 - .byte 0x0C, 0x20, 0x85, 0xE5, 0x73, 0x03, 0x00, 0xEB, 0x08, 0x00, 0x95, 0xE5, 0xF8, 0x80, 0xBD, 0xE8 - .byte 0xCC, 0x98, 0x2B, 0x02, 0x70, 0x40, 0x2D, 0xE9, 0x00, 0x40, 0xA0, 0xE1, 0x01, 0x60, 0xA0, 0xE1 - .byte 0x02, 0x50, 0xA0, 0xE1, 0x66, 0x03, 0x00, 0xEB, 0x78, 0x20, 0x9F, 0xE5, 0x1F, 0x10, 0x86, 0xE2 - .byte 0x04, 0x21, 0x92, 0xE7, 0x1F, 0x60, 0xC1, 0xE3, 0x04, 0xC0, 0x92, 0xE5, 0x1F, 0x50, 0xC5, 0xE3 - .byte 0x00, 0x00, 0x5C, 0xE3, 0x00, 0x40, 0xA0, 0xE3, 0x13, 0x00, 0x00, 0xDA, 0x10, 0x30, 0x92, 0xE5 - .byte 0x00, 0x10, 0x93, 0xE5, 0x00, 0x00, 0x51, 0xE3, 0x0B, 0x00, 0x00, 0xAA, 0x06, 0x10, 0x45, 0xE0 - .byte 0x00, 0x10, 0x83, 0xE5, 0x00, 0x20, 0xA0, 0xE3, 0x00, 0x20, 0x86, 0xE5, 0x04, 0x20, 0x86, 0xE5 - .byte 0x00, 0x10, 0x93, 0xE5, 0x08, 0x10, 0x86, 0xE5, 0x04, 0x60, 0x83, 0xE5, 0x08, 0x20, 0x83, 0xE5 - .byte 0x54, 0x03, 0x00, 0xEB, 0x04, 0x00, 0xA0, 0xE1, 0x70, 0x80, 0xBD, 0xE8, 0x01, 0x40, 0x84, 0xE2 - .byte 0x0C, 0x00, 0x54, 0xE1, 0x0C, 0x30, 0x83, 0xE2, 0xEC, 0xFF, 0xFF, 0xBA, 0x4D, 0x03, 0x00, 0xEB - .byte 0x00, 0x00, 0xE0, 0xE3, 0x70, 0x80, 0xBD, 0xE8, 0xCC, 0x98, 0x2B, 0x02 + + arm_func_start sub_0207A95C +sub_0207A95C: ; 0x0207A95C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl EnableIrqFlag + ldr r1, _0207A988 ; =0x022B98CC + ldr r1, [r1, r4, lsl #2] + ldr r4, [r1] + str r5, [r1] + bl SetIrqFlag + mov r0, r4 + ldmdb sp!, {r3, r4, r5, pc} + .align 2, 0 +_0207A988: .word 0x022B98CC + arm_func_end sub_0207A95C + + arm_func_start sub_0207A98C +sub_0207A98C: ; 0x0207A98C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r5, r1 + mov r4, r2 + mov r6, r3 + bl EnableIrqFlag + ldr r2, _0207AA30 ; =0x022B98CC + mov r1, #0xc + str r5, [r2, r7, lsl #2] + add r2, r5, #0x14 + str r2, [r5, #0x10] + mul r1, r6, r1 + str r6, [r5, #4] + cmp r6, #0 + mov lr, #0 + ble _0207AA00 + mov r6, lr + mvn ip, #0 + mov r3, lr +_0207A9D8: + ldr r2, [r5, #0x10] + add lr, lr, #1 + str ip, [r2, r6] + add r2, r2, r6 + str r3, [r2, #8] + str r3, [r2, #4] + ldr r2, [r5, #4] + add r6, r6, #0xc + cmp lr, r2 + blt _0207A9D8 +_0207AA00: + mvn r2, #0 + str r2, [r5] + ldr r3, [r5, #0x10] + bic r2, r4, #0x1f + add r1, r3, r1 + add r1, r1, #0x1f + bic r1, r1, #0x1f + str r1, [r5, #8] + str r2, [r5, #0xc] + bl SetIrqFlag + ldr r0, [r5, #8] + ldmdb sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0207AA30: .word 0x022B98CC + arm_func_end sub_0207A98C + + arm_func_start sub_0207AA34 +sub_0207AA34: ; 0x0207AA34 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + mov r5, r2 + bl EnableIrqFlag + ldr r2, _0207AAC8 ; =0x022B98CC + add r1, r6, #0x1f + ldr r2, [r2, r4, lsl #2] + bic r6, r1, #0x1f + ldr ip, [r2, #4] + bic r5, r5, #0x1f + cmp ip, #0 + mov r4, #0 + ble _0207AABC + ldr r3, [r2, #0x10] +_0207AA70: + ldr r1, [r3] + cmp r1, #0 + bge _0207AAAC + sub r1, r5, r6 + str r1, [r3] + mov r2, #0 + str r2, [r6] + str r2, [r6, #4] + ldr r1, [r3] + str r1, [r6, #8] + str r6, [r3, #4] + str r2, [r3, #8] + bl SetIrqFlag + mov r0, r4 + ldmdb sp!, {r4, r5, r6, pc} +_0207AAAC: + add r4, r4, #1 + cmp r4, ip + add r3, r3, #0xc + blt _0207AA70 +_0207AABC: + bl SetIrqFlag + mvn r0, #0 + ldmdb sp!, {r4, r5, r6, pc} + .align 2, 0 +_0207AAC8: .word 0x022B98CC + arm_func_end sub_0207AA34 arm_func_start sub_0207AACC sub_0207AACC: ; 0x0207AACC @@ -150955,7 +151272,7 @@ _0207FF4C: beq _0207FF68 ldr r0, [r5, #4] add r0, r0, r4 - bl sub_02000970 + bl MIi_UncompressBackward _0207FF68: ldmib r5, {r0, r1} bl sub_0207A2DC @@ -155149,7 +155466,7 @@ sub_02083828: ; 0x02083828 ldr r4, [sb, #0x34] ldr sl, [sb, #0x30] mov r5, #0x100 - bl sub_02000B9C + bl OSi_ReferSymbol cmp r7, #0xb bne _0208385C bl sub_02083B28 @@ -155291,7 +155608,7 @@ sub_02083A18: ; 0x02083A18 mov r8, r1 mov r7, r2 mov r6, r3 - bl sub_02000B9C + bl OSi_ReferSymbol bl EnableIrqFlag ldr r1, [r4, #0x114] mov r5, r0 @@ -155384,7 +155701,7 @@ sub_02083B3C: ; 0x02083B3C mov r6, r0 ldr r0, _02083C68 ; =0x02000BC4 ldr r4, _02083C6C ; =0x022BB7E0 - bl sub_02000B9C + bl OSi_ReferSymbol cmp r6, #0 bne _02083B5C bl WaitForever2 diff --git a/asm/middleware.s b/asm/middleware.s deleted file mode 100644 index fc829e30..00000000 --- a/asm/middleware.s +++ /dev/null @@ -1,36 +0,0 @@ - .section .version,4 - - .balign 4, 0 - .public _version_NINTENDO_DWC -_version_NINTENDO_DWC: ; 0x02000BC4 - .asciz "[SDK+NINTENDO:DWC2.2.30008.080630.1906_DWC_2_2_PLUS8]" - - .balign 4, 0 - .public _version_NINTENDO_WiFi -_version_NINTENDO_WiFi: ; 0x02000BFC - .asciz "[SDK+NINTENDO:WiFi2.1.30003.0709200229]" - - .balign 4, 0 - .public _version_UBIQUITOUS_CPS -_version_UBIQUITOUS_CPS: ; 0x02000C24 - .asciz "[SDK+UBIQUITOUS:CPS]" - - .balign 4, 0 - .public _version_UBIQUITOUS_SSL -_version_UBIQUITOUS_SSL: ; 0x02000C3C - .asciz "[SDK+UBIQUITOUS:SSL]" - - .balign 4, 0 - .public _version_Abiosso_libVCT -_version_Abiosso_libVCT: ; 0x02000C54 - .asciz "[SDK+Abiosso:libVCT 1.3.1]" - - .balign 4, 0 - .public _version_NINTENDO_BACKUP -_version_NINTENDO_BACKUP: ; 0x02000C70 - .asciz "[SDK+NINTENDO:BACKUP]" - - .balign 4, 0 - .public _version_NINTENDO_DWC_LOBBY -_version_NINTENDO_DWC_LOBBY: ; 0x02000C88 - .asciz "[SDK+NINTENDO:DWC_LOBBY]" diff --git a/asm/overlay_00.s b/asm/overlay_00.s index 4aa2626f..529dcf37 100644 --- a/asm/overlay_00.s +++ b/asm/overlay_00.s @@ -13951,7 +13951,7 @@ ov00_022C826C: ; 0x022C826C sub sp, sp, #8 mov r4, r0 ldr r0, _022C8464 ; =0x02000BDC - bl sub_02000B9C + bl OSi_ReferSymbol ldr r3, [r4, #0x18] ldr r5, [r4, #0x14] cmp r3, #0 @@ -19505,7 +19505,7 @@ ov00_022CCD90: ; 0x022CCD90 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _022CCDC4 ; =0x02000BF4 - bl sub_02000B9C + bl OSi_ReferSymbol ldr r0, _022CCDC8 ; =0x02318868 ldr r1, [r0] cmp r1, #0 @@ -26495,7 +26495,7 @@ ov00_022D2B44: ; 0x022D2B44 stmdb sp!, {r4, lr} mov r4, r0 ldr r0, _022D2B6C ; =0x02000C1C - bl sub_02000B9C + bl OSi_ReferSymbol ldr r0, _022D2B70 ; =0x022B966C ldr r0, [r0, #4] ldr r0, [r0, #0xa4] @@ -35912,7 +35912,7 @@ ov00_022DB054: ; 0x022DB054 mov r6, r0 ldr r0, _022DB0CC ; =0x02000C34 mov r5, #0 - bl sub_02000B9C + bl OSi_ReferSymbol mov r0, r6 bl ov00_022EE018 mov r4, r0 diff --git a/common.mk b/common.mk index 7920e6c5..e9cea171 100644 --- a/common.mk +++ b/common.mk @@ -75,13 +75,10 @@ NATIVE_TOOLS := \ TOOLDIRS := $(foreach tool,$(NATIVE_TOOLS),$(dir $(tool))) # Directories -NITROSDK_SRC_SUBDIRS := os - -LIB_SUBDIRS := cw NitroSDK NitroSystem NitroDWC NitroWiFi libCPS libVCT SRC_SUBDIR := src ASM_SUBDIR := asm -LIB_SRC_SUBDIR := lib/src $(LIB_SUBDIRS:%=lib/%/src) $(NITROSDK_SRC_SUBDIRS:%=lib/NitroSDK/src/%) -LIB_ASM_SUBDIR := lib/asm $(LIB_SUBDIRS:%=lib/%/asm) +LIB_SRC_SUBDIR := lib/src +LIB_ASM_SUBDIR := lib/asm ALL_SUBDIRS := $(SRC_SUBDIR) $(ASM_SUBDIR) $(LIB_SRC_SUBDIR) $(LIB_ASM_SUBDIR) SRC_BUILDDIR := $(addprefix $(BUILD_DIR)/,$(SRC_SUBDIR)) @@ -120,7 +117,7 @@ EXCCFLAGS := -Cpp_exceptions off MWCFLAGS = $(DEFINES) $(OPTFLAGS) -enum int -lang c99 $(EXCCFLAGS) -gccext,on -proc $(PROC) -msgstyle gcc -gccinc -i ./include -i ./include/library -i $(WORK_DIR)/files -I$(WORK_DIR)/lib/include -ipa file -interworking -inline on,noauto -char signed -W all -W pedantic -W noimpl_signedunsigned -W noimplicitconv -W nounusedarg -W nomissingreturn -W error -MWASFLAGS = $(DEFINES) -proc $(PROC_S) -gccinc -i . -i ./include -i $(WORK_DIR)/asm/include -i $(WORK_DIR)/files -i $(WORK_DIR)/lib/asm/include -i $(WORK_DIR)/lib/NitroDWC/asm/include -i $(WORK_DIR)/lib/NitroSDK/asm/include -i $(WORK_DIR)/lib/syscall/asm/include -I$(WORK_DIR)/lib/include -DSDK_ASM +MWASFLAGS = $(DEFINES) -proc $(PROC_S) -gccinc -i . -i ./include -i $(WORK_DIR)/asm/include -i $(WORK_DIR)/files -i $(WORK_DIR)/lib/asm/include -i $(WORK_DIR)/lib/syscall/asm/include -I$(WORK_DIR)/lib/include -DSDK_ASM MWLDFLAGS := -proc $(PROC) -nopic -nopid -interworking -map closure,unused -symtab sort -m _start -msgstyle gcc ARFLAGS := rcS @@ -173,8 +170,6 @@ BUILD_C ?= $(MW_COMPILE) -c -o $(DEPFILES): -$(BUILD_DIR)/lib/NitroSDK/%.o: MWCCVER := 2.0/sp2p3 - $(BUILD_DIR)/%.o: %.c $(BUILD_DIR)/%.o: %.c $(BUILD_DIR)/%.d $(BUILD_C) $@ $< diff --git a/global.inc b/global.inc index f74c205c..e69de29b 100644 --- a/global.inc +++ b/global.inc @@ -1,36 +0,0 @@ -FS_EXTERN_OVERLAY(OVY_0) -FS_EXTERN_OVERLAY(OVY_1) -FS_EXTERN_OVERLAY(OVY_2) -FS_EXTERN_OVERLAY(OVY_3) -FS_EXTERN_OVERLAY(OVY_4) -FS_EXTERN_OVERLAY(OVY_5) -FS_EXTERN_OVERLAY(OVY_6) -FS_EXTERN_OVERLAY(OVY_7) -FS_EXTERN_OVERLAY(OVY_8) -FS_EXTERN_OVERLAY(OVY_9) -FS_EXTERN_OVERLAY(OVY_10) -FS_EXTERN_OVERLAY(OVY_11) -FS_EXTERN_OVERLAY(OVY_12) -FS_EXTERN_OVERLAY(OVY_13) -FS_EXTERN_OVERLAY(OVY_14) -FS_EXTERN_OVERLAY(OVY_15) -FS_EXTERN_OVERLAY(OVY_16) -FS_EXTERN_OVERLAY(OVY_17) -FS_EXTERN_OVERLAY(OVY_18) -FS_EXTERN_OVERLAY(OVY_19) -FS_EXTERN_OVERLAY(OVY_20) -FS_EXTERN_OVERLAY(OVY_21) -FS_EXTERN_OVERLAY(OVY_22) -FS_EXTERN_OVERLAY(OVY_23) -FS_EXTERN_OVERLAY(OVY_24) -FS_EXTERN_OVERLAY(OVY_25) -FS_EXTERN_OVERLAY(OVY_26) -FS_EXTERN_OVERLAY(OVY_27) -FS_EXTERN_OVERLAY(OVY_28) -FS_EXTERN_OVERLAY(OVY_29) -FS_EXTERN_OVERLAY(OVY_30) -FS_EXTERN_OVERLAY(OVY_31) -FS_EXTERN_OVERLAY(OVY_32) -FS_EXTERN_OVERLAY(OVY_33) -FS_EXTERN_OVERLAY(OVY_34) -FS_EXTERN_OVERLAY(OVY_35) diff --git a/lib/NitroSDK/asm/fx.s b/lib/NitroSDK/asm/fx.s deleted file mode 100644 index 5ec64c59..00000000 --- a/lib/NitroSDK/asm/fx.s +++ /dev/null @@ -1,30 +0,0 @@ - .include "asm/macros.inc" - .include "fx.inc" - .include "global.inc" - .text - - arm_func_start FX_Init -FX_Init: ; 0x020CD784 - bx lr - arm_func_end FX_Init - - arm_func_start FX_Modf -FX_Modf: ; 0x020CD788 - cmp r0, #0 - ldr r2, _020CD7C0 ; =0x7FFFF000 - blt _020CD7A4 - and r3, r0, r2 - str r3, [r1] - and r0, r0, r2, lsr #19 - bx lr -_020CD7A4: - rsb ip, r0, #0 - and r0, ip, r2 - rsb r3, r0, #0 - and r0, ip, r2, lsr #19 - str r3, [r1] - rsb r0, r0, #0 - bx lr - .align 2, 0 -_020CD7C0: .word 0x7FFFF000 - arm_func_end FX_Modf diff --git a/lib/NitroSDK/asm/fx_atanidx.s b/lib/NitroSDK/asm/fx_atanidx.s deleted file mode 100644 index f8b80a05..00000000 --- a/lib/NitroSDK/asm/fx_atanidx.s +++ /dev/null @@ -1,264 +0,0 @@ - .include "asm/macros.inc" - .include "fx_atanidx.inc" - .include "global.inc" - .text - - arm_func_start FX_Atan2Idx -FX_Atan2Idx: ; 0x020CD5DC - stmdb sp!, {r4, lr} - cmp r0, #0 - ble _020CD670 - cmp r1, #0 - ble _020CD628 - cmp r1, r0 - ble _020CD608 - mov r2, r0 - mov r4, #0 - mov r0, #1 - b _020CD720 -_020CD608: - bge _020CD620 - mov r2, r1 - mov r1, r0 - mov r4, #0x4000 - mov r0, #0 - b _020CD720 -_020CD620: - mov r0, #0x2000 - ldmia sp!, {r4, pc} -_020CD628: - bge _020CD668 - rsb r1, r1, #0 - cmp r1, r0 - bge _020CD64C - mov r2, r1 - mov r1, r0 - mov r4, #0x4000 - mov r0, #1 - b _020CD720 -_020CD64C: - ble _020CD660 - mov r2, r0 - mov r4, #0x8000 - mov r0, #0 - b _020CD720 -_020CD660: - mov r0, #0x6000 - ldmia sp!, {r4, pc} -_020CD668: - mov r0, #0x4000 - ldmia sp!, {r4, pc} -_020CD670: - bge _020CD710 - cmp r1, #0 - rsb r0, r0, #0 - bge _020CD6C4 - rsb r1, r1, #0 - cmp r1, r0 - ble _020CD6A0 - mov r4, #0x8000 - mov r2, r0 - rsb r4, r4, #0 - mov r0, #1 - b _020CD720 -_020CD6A0: - bge _020CD6BC - mov r4, #0x4000 - mov r2, r1 - mov r1, r0 - rsb r4, r4, #0 - mov r0, #0 - b _020CD720 -_020CD6BC: - mov r0, #0xa000 - ldmia sp!, {r4, pc} -_020CD6C4: - cmp r1, #0 - ble _020CD708 - cmp r1, r0 - bge _020CD6EC - mov r4, #0x4000 - mov r2, r1 - mov r1, r0 - rsb r4, r4, #0 - mov r0, #1 - b _020CD720 -_020CD6EC: - ble _020CD700 - mov r4, #0 - mov r2, r0 - mov r0, r4 - b _020CD720 -_020CD700: - mov r0, #0xe000 - ldmia sp!, {r4, pc} -_020CD708: - mov r0, #0xc000 - ldmia sp!, {r4, pc} -_020CD710: - cmp r1, #0 - movge r0, #0 - movlt r0, #0x8000 - ldmia sp!, {r4, pc} -_020CD720: - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r0, #0 - mov r0, r2 - beq _020CD75C - bl FX_Div - mov r1, r0, asr #5 - ldr r0, _020CD780 ; =FX_AtanIdxTable_ - mov r1, r1, lsl #1 - ldrsh r0, [r0, r1] - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, pc} -_020CD75C: - bl FX_Div - mov r1, r0, asr #5 - ldr r0, _020CD780 ; =FX_AtanIdxTable_ - mov r1, r1, lsl #1 - ldrsh r0, [r0, r1] - sub r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CD780: .word FX_AtanIdxTable_ - arm_func_end FX_Atan2Idx - - .rodata - -FX_AtanIdxTable_: - .short 0x0000 - .short 0x0051 - .short 0x00A3 - .short 0x00F4 - .short 0x0146 - .short 0x0197 - .short 0x01E9 - .short 0x023A - .short 0x028B - .short 0x02DC - .short 0x032D - .short 0x037E - .short 0x03CF - .short 0x0420 - .short 0x0470 - .short 0x04C1 - .short 0x0511 - .short 0x0561 - .short 0x05B1 - .short 0x0601 - .short 0x0651 - .short 0x06A0 - .short 0x06EF - .short 0x073E - .short 0x078D - .short 0x07DC - .short 0x082A - .short 0x0878 - .short 0x08C6 - .short 0x0914 - .short 0x0961 - .short 0x09AE - .short 0x09FB - .short 0x0A48 - .short 0x0A94 - .short 0x0AE0 - .short 0x0B2C - .short 0x0B77 - .short 0x0BC2 - .short 0x0C0D - .short 0x0C57 - .short 0x0CA1 - .short 0x0CEB - .short 0x0D34 - .short 0x0D7D - .short 0x0DC6 - .short 0x0E0F - .short 0x0E56 - .short 0x0E9E - .short 0x0EE5 - .short 0x0F2C - .short 0x0F73 - .short 0x0FB9 - .short 0x0FFF - .short 0x1044 - .short 0x1089 - .short 0x10CE - .short 0x1112 - .short 0x1156 - .short 0x1199 - .short 0x11DC - .short 0x121F - .short 0x1261 - .short 0x12A3 - .short 0x12E4 - .short 0x1325 - .short 0x1366 - .short 0x13A6 - .short 0x13E6 - .short 0x1425 - .short 0x1464 - .short 0x14A2 - .short 0x14E0 - .short 0x151E - .short 0x155B - .short 0x1598 - .short 0x15D5 - .short 0x1611 - .short 0x164C - .short 0x1688 - .short 0x16C2 - .short 0x16FD - .short 0x1737 - .short 0x1770 - .short 0x17AA - .short 0x17E2 - .short 0x181B - .short 0x1853 - .short 0x188A - .short 0x18C1 - .short 0x18F8 - .short 0x192E - .short 0x1964 - .short 0x199A - .short 0x19CF - .short 0x1A04 - .short 0x1A38 - .short 0x1A6C - .short 0x1A9F - .short 0x1AD3 - .short 0x1B05 - .short 0x1B38 - .short 0x1B6A - .short 0x1B9C - .short 0x1BCD - .short 0x1BFE - .short 0x1C2E - .short 0x1C5E - .short 0x1C8E - .short 0x1CBE - .short 0x1CED - .short 0x1D1B - .short 0x1D4A - .short 0x1D78 - .short 0x1DA5 - .short 0x1DD3 - .short 0x1DFF - .short 0x1E2C - .short 0x1E58 - .short 0x1E84 - .short 0x1EB0 - .short 0x1EDB - .short 0x1F06 - .short 0x1F30 - .short 0x1F5A - .short 0x1F84 - .short 0x1FAE - .short 0x1FD7 - .short 0x2000 diff --git a/lib/NitroSDK/asm/fx_cp.s b/lib/NitroSDK/asm/fx_cp.s deleted file mode 100644 index c34ed454..00000000 --- a/lib/NitroSDK/asm/fx_cp.s +++ /dev/null @@ -1,181 +0,0 @@ - .include "asm/macros.inc" - .include "fx_cp.inc" - .include "global.inc" - .text - - arm_func_start FX_Div -FX_Div: ; 0x020CCBA0 - stmdb sp!, {r3, lr} - bl FX_DivAsync - bl FX_GetDivResult - ldmia sp!, {r3, pc} - arm_func_end FX_Div - - arm_func_start FX_Inv -FX_Inv: ; 0x020CCBB0 - stmdb sp!, {r3, lr} - bl FX_InvAsync - bl FX_GetDivResult - ldmia sp!, {r3, pc} - arm_func_end FX_Inv - - arm_func_start FX_InvFx64c -FX_InvFx64c: ; 0x020CCBC0 - stmdb sp!, {r3, lr} - bl FX_InvAsync - ldr r1, _020CCBE4 ; =0x04000280 -_020CCBCC: - ldrh r0, [r1] - tst r0, #0x8000 - bne _020CCBCC - ldr r1, _020CCBE8 ; =0x040002A0 - ldmia r1, {r0, r1} - ldmia sp!, {r3, pc} - .align 2, 0 -_020CCBE4: .word 0x04000280 -_020CCBE8: .word 0x040002A0 - arm_func_end FX_InvFx64c - - arm_func_start FX_Sqrt -FX_Sqrt: ; 0x020CCBEC - stmdb sp!, {r3, lr} - cmp r0, #0 - movle r0, #0 - ldmleia sp!, {r3, pc} - ldr r2, _020CCC1C ; =0x040002B0 - mov r1, #1 - strh r1, [r2] - mov r1, #0 - str r1, [r2, #8] - str r0, [r2, #0xc] - bl FX_GetSqrtResult - ldmia sp!, {r3, pc} - .align 2, 0 -_020CCC1C: .word 0x040002B0 - arm_func_end FX_Sqrt - - arm_func_start FX_GetDivResultFx64c -FX_GetDivResultFx64c: ; 0x020CCC20 - ldr r1, _020CCC3C ; =0x04000280 -_020CCC24: - ldrh r0, [r1] - tst r0, #0x8000 - bne _020CCC24 - ldr r1, _020CCC40 ; =0x040002A0 - ldmia r1, {r0, r1} - bx lr - .align 2, 0 -_020CCC3C: .word 0x04000280 -_020CCC40: .word 0x040002A0 - arm_func_end FX_GetDivResultFx64c - - arm_func_start FX_GetDivResult -FX_GetDivResult: ; 0x020CCC44 - ldr r1, _020CCC74 ; =0x04000280 -_020CCC48: - ldrh r0, [r1] - tst r0, #0x8000 - bne _020CCC48 - ldr r0, _020CCC78 ; =0x040002A0 - ldr r1, [r0] - ldr r0, [r0, #4] - adds r2, r1, #0x80000 - adc r1, r0, #0 - mov r0, r2, lsr #0x14 - orr r0, r0, r1, lsl #12 - bx lr - .align 2, 0 -_020CCC74: .word 0x04000280 -_020CCC78: .word 0x040002A0 - arm_func_end FX_GetDivResult - - arm_func_start FX_InvAsync -FX_InvAsync: ; 0x020CCC7C - ldr r2, _020CCCA8 ; =0x04000280 - mov r1, #1 - strh r1, [r2] - mov r1, #0 - str r1, [r2, #0x10] - mov r1, #0x1000 - str r1, [r2, #0x14] - str r0, [r2, #0x18] - mov r0, #0 - str r0, [r2, #0x1c] - bx lr - .align 2, 0 -_020CCCA8: .word 0x04000280 - arm_func_end FX_InvAsync - - arm_func_start FX_GetSqrtResult -FX_GetSqrtResult: ; 0x020CCCAC - ldr r1, _020CCCD0 ; =0x040002B0 -_020CCCB0: - ldrh r0, [r1] - tst r0, #0x8000 - bne _020CCCB0 - ldr r0, _020CCCD4 ; =0x040002B4 - ldr r0, [r0] - add r0, r0, #0x200 - mov r0, r0, lsr #0xa - bx lr - .align 2, 0 -_020CCCD0: .word 0x040002B0 -_020CCCD4: .word 0x040002B4 - arm_func_end FX_GetSqrtResult - - arm_func_start FX_DivAsync -FX_DivAsync: ; 0x020CCCD8 - ldr r3, _020CCCFC ; =0x04000280 - mov r2, #1 - strh r2, [r3] - mov r2, #0 - str r2, [r3, #0x10] - str r0, [r3, #0x14] - str r1, [r3, #0x18] - str r2, [r3, #0x1c] - bx lr - .align 2, 0 -_020CCCFC: .word 0x04000280 - arm_func_end FX_DivAsync - - arm_func_start FX_DivS32 -FX_DivS32: ; 0x020CCD00 - ldr r2, _020CCD34 ; =0x04000280 - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - str r1, [r2, #0x18] - mov r0, r3 - str r0, [r2, #0x1c] -_020CCD1C: - ldrh r0, [r2] - tst r0, #0x8000 - bne _020CCD1C - ldr r0, _020CCD38 ; =0x040002A0 - ldr r0, [r0] - bx lr - .align 2, 0 -_020CCD34: .word 0x04000280 -_020CCD38: .word 0x040002A0 - arm_func_end FX_DivS32 - - arm_func_start FX_ModS32 -FX_ModS32: ; 0x020CCD3C - ldr r2, _020CCD70 ; =0x04000280 - mov r3, #0 - strh r3, [r2] - str r0, [r2, #0x10] - str r1, [r2, #0x18] - mov r0, r3 - str r0, [r2, #0x1c] -_020CCD58: - ldrh r0, [r2] - tst r0, #0x8000 - bne _020CCD58 - ldr r0, _020CCD74 ; =0x040002A8 - ldr r0, [r0] - bx lr - .align 2, 0 -_020CCD70: .word 0x04000280 -_020CCD74: .word 0x040002A8 - arm_func_end FX_ModS32 diff --git a/lib/NitroSDK/asm/fx_mtx22.s b/lib/NitroSDK/asm/fx_mtx22.s deleted file mode 100644 index 64b7bb58..00000000 --- a/lib/NitroSDK/asm/fx_mtx22.s +++ /dev/null @@ -1,50 +0,0 @@ - .include "asm/macros.inc" - .include "fx_mtx22.inc" - .include "global.inc" - .text - - arm_func_start MTX_Identity22_ -MTX_Identity22_: ; 0x020CAF70 - mov r1, #0 - mov r2, #0x1000 - mov r3, #0 - stmia r0!, {r2, r3} - stmia r0!, {r1, r2} - bx lr - arm_func_end MTX_Identity22_ - - thumb_func_start MTX_Rot22_ -MTX_Rot22_: ; 0x020CAF88 - str r2, [r0] - str r1, [r0, #4] - neg r1, r1 - str r1, [r0, #8] - str r2, [r0, #0xc] - bx lr - thumb_func_end MTX_Rot22_ - - arm_func_start MTX_ScaleApply22 -MTX_ScaleApply22: ; 0x020CAF94 - stmdb sp!, {r3, lr} - ldr ip, [r0] - smull lr, ip, r2, ip - mov lr, lr, lsr #0xc - orr lr, lr, ip, lsl #20 - str lr, [r1] - ldr ip, [r0, #4] - smull lr, ip, r2, ip - mov r2, lr, lsr #0xc - orr r2, r2, ip, lsl #20 - str r2, [r1, #4] - ldr r2, [r0, #8] - smull ip, r2, r3, r2 - mov ip, ip, lsr #0xc - orr ip, ip, r2, lsl #20 - str ip, [r1, #8] - ldr r0, [r0, #0xc] - smull r2, r0, r3, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #20 - str r2, [r1, #0xc] - ldmia sp!, {r3, pc} - arm_func_end MTX_ScaleApply22 diff --git a/lib/NitroSDK/asm/fx_mtx33.s b/lib/NitroSDK/asm/fx_mtx33.s deleted file mode 100644 index 954be822..00000000 --- a/lib/NitroSDK/asm/fx_mtx33.s +++ /dev/null @@ -1,489 +0,0 @@ - .include "asm/macros.inc" - .include "fx_mtx33.inc" - .include "global.inc" - .text - - arm_func_start MTX_Identity33_ -MTX_Identity33_: ; 0x020CAFEC - mov r2, #0x1000 - str r2, [r0, #0x20] - mov r3, #0 - stmia r0!, {r2, r3} - mov r1, #0 - stmia r0!, {r1, r3} - stmia r0!, {r2, r3} - stmia r0!, {r1, r3} - bx lr - arm_func_end MTX_Identity33_ - - arm_func_start MTX_ScaleApply33 -MTX_ScaleApply33: ; 0x020CB010 - stmdb sp!, {r4, lr} - ldr r4, [r0] - ldr ip, [sp, #8] - smull lr, r4, r2, r4 - mov lr, lr, lsr #0xc - orr lr, lr, r4, lsl #20 - str lr, [r1] - ldr r4, [r0, #4] - smull lr, r4, r2, r4 - mov lr, lr, lsr #0xc - orr lr, lr, r4, lsl #20 - str lr, [r1, #4] - ldr lr, [r0, #8] - smull r4, lr, r2, lr - mov r2, r4, lsr #0xc - orr r2, r2, lr, lsl #20 - str r2, [r1, #8] - ldr r2, [r0, #0xc] - smull lr, r2, r3, r2 - mov lr, lr, lsr #0xc - orr lr, lr, r2, lsl #20 - str lr, [r1, #0xc] - ldr r2, [r0, #0x10] - smull lr, r2, r3, r2 - mov lr, lr, lsr #0xc - orr lr, lr, r2, lsl #20 - str lr, [r1, #0x10] - ldr r2, [r0, #0x14] - smull lr, r2, r3, r2 - mov r3, lr, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [r1, #0x14] - ldr r2, [r0, #0x18] - smull r3, r2, ip, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [r1, #0x18] - ldr r2, [r0, #0x1c] - smull r3, r2, ip, r2 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [r1, #0x1c] - ldr r0, [r0, #0x20] - smull r2, r0, ip, r0 - mov r2, r2, lsr #0xc - orr r2, r2, r0, lsl #20 - str r2, [r1, #0x20] - ldmia sp!, {r4, pc} - arm_func_end MTX_ScaleApply33 - - thumb_func_start MTX_RotX33_ -MTX_RotX33_: ; 0x020CB0D0 - mov r3, #1 - lsl r3, r3, #0xc - str r3, [r0] - mov r3, #0 - str r3, [r0, #4] - str r3, [r0, #8] - str r3, [r0, #0xc] - str r2, [r0, #0x10] - str r1, [r0, #0x14] - str r3, [r0, #0x18] - neg r1, r1 - str r1, [r0, #0x1c] - str r2, [r0, #0x20] - bx lr - thumb_func_end MTX_RotX33_ - - thumb_func_start MTX_RotY33_ -MTX_RotY33_: ; 0x020CB0EC - str r2, [r0] - str r2, [r0, #0x20] - mov r3, #0 - str r3, [r0, #4] - str r3, [r0, #0xc] - str r3, [r0, #0x14] - str r3, [r0, #0x1c] - neg r2, r1 - mov r3, #1 - lsl r3, r3, #0xc - str r1, [r0, #0x18] - str r2, [r0, #8] - str r3, [r0, #0x10] - bx lr - thumb_func_end MTX_RotY33_ - - thumb_func_start MTX_RotZ33_ -MTX_RotZ33_: ; 0x020CB108 - stmia r0!, {r2} - mov r3, #0 - stmia r0!, {r1, r3} - neg r1, r1 - stmia r0!, {r1, r2} - mov r1, #1 - lsl r1, r1, #0xc - str r3, [r0] - str r3, [r0, #4] - str r3, [r0, #8] - str r1, [r0, #0xc] - bx lr - thumb_func_end MTX_RotZ33_ - - arm_func_start MTX_Inverse33 -MTX_Inverse33: ; 0x020CB120 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - mov sl, r0 - ldr r0, [sl, #0x14] - cmp sl, r1 - addeq sb, sp, #0x2c - ldr r3, [sl, #0x18] - ldr r2, [sl, #0xc] - ldr r6, [sl, #0x20] - str r1, [sp] - movne sb, r1 - smull fp, r8, r2, r6 - smull r7, r1, r0, r3 - subs r7, fp, r7 - sbc ip, r8, r1 - ldr r4, [sl, #0x10] - ldr r5, [sl, #0x1c] - adds r1, r7, #0x800 - smull fp, r8, r4, r6 - smull r7, r6, r0, r5 - adc r0, ip, #0 - subs r7, fp, r7 - sbc r6, r8, r6 - mov r8, r1, lsr #0xc - orr r8, r8, r0, lsl #20 - smull r1, r0, r2, r5 - adds r7, r7, #0x800 - smull r5, r3, r4, r3 - adc r2, r6, #0 - mov r7, r7, lsr #0xc - orr r7, r7, r2, lsl #20 - subs r1, r1, r5 - sbc r5, r0, r3 - ldr r2, [sl] - adds r6, r1, #0x800 - ldr fp, [sl, #4] - smull r4, r3, r2, r7 - smull r1, r0, fp, r8 - adc r2, r5, #0 - mov r6, r6, lsr #0xc - orr r6, r6, r2, lsl #20 - subs r2, r4, r1 - ldr r1, [sl, #8] - sbc r0, r3, r0 - smlal r2, r0, r1, r6 - adds r1, r2, #0x800 - adc r2, r0, #0 - mov r0, r1, lsr #0xc - mov r1, r8, asr #0x1f - str r1, [sp, #4] - mov r1, r7, asr #0x1f - str r1, [sp, #8] - mov r1, r6, asr #0x1f - str r1, [sp, #0xc] - orrs r0, r0, r2, lsl #20 - mov r1, #0 - addeq sp, sp, #0x50 - subeq r0, r1, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl FX_InvAsync - ldr r1, [sl, #8] - ldr r2, [sl, #0x1c] - ldr fp, [sl, #0x10] - smull r0, r4, r2, r1 - smull r3, r2, fp, r1 - ldr r5, [sl, #0x18] - str r2, [sp, #0x18] - str r3, [sp, #0x14] - smull r3, r2, r5, r1 - str r2, [sp, #0x20] - ldr r2, [sl, #0x20] - str r3, [sp, #0x1c] - str r2, [sp, #0x10] - ldr r5, [sp, #0x10] - ldmia sl, {r3, lr} - smull ip, r5, lr, r5 - subs r0, ip, r0 - ldr r2, [sl, #0xc] - sbc r4, r5, r4 - smull r1, r5, r2, r1 - str r5, [sp, #0x28] - mov r5, r0, lsr #0xc - ldr fp, [sl, #0x14] - orr r5, r5, r4, lsl #20 - smull r4, r2, lr, fp - ldr r0, [sp, #0x14] - subs r4, r4, r0 - ldr r0, [sp, #0x18] - mov r4, r4, lsr #0xc - sbc r0, r2, r0 - orr r4, r4, r0, lsl #20 - ldr r0, [sp, #0x10] - ldr r2, [sp, #0x1c] - smull ip, r0, r3, r0 - subs r2, ip, r2 - ldr ip, [sp, #0x20] - sbc r0, r0, ip - smull ip, fp, r3, fp - ldr r3, [sp, #0x28] - subs r1, ip, r1 - sbc r3, fp, r3 - mov fp, r2, lsr #0xc - orr fp, fp, r0, lsl #20 - mov r0, r1, lsr #0xc - orr r0, r0, r3, lsl #20 - str r0, [sp, #0x24] - bl FX_GetDivResult - smull r2, r1, r0, r5 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - rsb lr, r2, #0 - smull r2, r1, r0, r4 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #20 - smull r2, r1, r0, fp - mov r3, r2, lsr #0xc - orr r3, r3, r1, lsl #20 - ldr r1, [sp, #0x24] - umull fp, r5, r0, r7 - smull r2, r1, r0, r1 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - ldr r1, [sp, #8] - mov ip, r0, asr #0x1f - mla r5, r0, r1, r5 - mla r5, ip, r7, r5 - mov r1, fp, lsr #0xc - orr r1, r1, r5, lsl #20 - stmia sb, {r1, lr} - str r4, [sb, #8] - ldr r1, [sp, #4] - umull r5, r4, r0, r8 - mla r4, r0, r1, r4 - mla r4, ip, r8, r4 - mov r1, r5, lsr #0xc - orr r1, r1, r4, lsl #20 - rsb r1, r1, #0 - str r1, [sb, #0xc] - ldr r1, [sp, #0xc] - rsb r2, r2, #0 - str r3, [sb, #0x10] - str r2, [sb, #0x14] - umull r3, r2, r0, r6 - mla r2, r0, r1, r2 - mla r2, ip, r6, r2 - mov r1, r3, lsr #0xc - orr r1, r1, r2, lsl #20 - str r1, [sb, #0x18] - ldr r3, [sl] - ldr r1, [sl, #0x1c] - ldr r2, [sl, #0x18] - smull r5, r4, r3, r1 - ldr r1, [sl, #4] - smull r3, r1, r2, r1 - subs r2, r5, r3 - sbc r1, r4, r1 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - smull r2, r1, r0, r2 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - rsb r1, r2, #0 - str r1, [sb, #0x1c] - ldr r4, [sl] - ldr r3, [sl, #0x10] - ldr r2, [sl, #0xc] - ldr r1, [sl, #4] - smull r6, r5, r4, r3 - smull r3, r1, r2, r1 - subs r2, r6, r3 - sbc r1, r5, r1 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - mov r1, r2, asr #0x1f - umull r4, r3, r0, r2 - mla r3, r0, r1, r3 - add r0, sp, #0x2c - mla r3, ip, r2, r3 - mov r1, r4, lsr #0xc - orr r1, r1, r3, lsl #20 - str r1, [sb, #0x20] - cmp sb, r0 - bne _020CB404 - ldr r1, [sp] - bl MI_Copy36B -_020CB404: - mov r0, #0 - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MTX_Inverse33 - - arm_func_start MTX_Concat33 -MTX_Concat33: ; 0x020CB410 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - mov ip, r2 - ldr r3, [r0, #4] - ldr r2, [r1, #0xc] - cmp ip, r1 - smull r7, r5, r3, r2 - ldr r6, [r0] - ldr r4, [r1] - addeq sl, sp, #0x1c - smlal r7, r5, r6, r4 - ldr r2, [r0, #8] - ldr r4, [r1, #0x18] - movne sl, ip - smlal r7, r5, r2, r4 - mov r4, r7, lsr #0xc - orr r4, r4, r5, lsl #20 - str r4, [sl] - ldr r4, [r1, #0x10] - ldr r5, [r1, #4] - smull r8, r7, r3, r4 - smlal r8, r7, r6, r5 - ldr r4, [r1, #0x1c] - smlal r8, r7, r2, r4 - mov r4, r8, lsr #0xc - orr r4, r4, r7, lsl #20 - str r4, [sl, #4] - ldr r4, [r1, #0x14] - ldr r5, [r1, #8] - smull r8, r7, r3, r4 - smlal r8, r7, r6, r5 - ldr r3, [r1, #0x20] - smlal r8, r7, r2, r3 - mov r2, r8, lsr #0xc - orr r2, r2, r7, lsl #20 - str r2, [sl, #8] - ldr sb, [r0, #0x10] - ldr r2, [r0, #0xc] - smull r7, r6, sb, r4 - smlal r7, r6, r2, r5 - ldr r4, [r0, #0x14] - smlal r7, r6, r4, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #20 - str r3, [sl, #0x14] - ldr r3, [r1, #0x10] - ldr r5, [r1, #4] - smull r7, r6, sb, r3 - smlal r7, r6, r2, r5 - ldr r5, [r1, #0x1c] - mov r3, sb, asr #0x1f - smlal r7, r6, r4, r5 - str r3, [sp] - mov r3, r7, lsr #0xc - orr r3, r3, r6, lsl #20 - str r3, [sl, #0x10] - mov r3, r2, asr #0x1f - str r3, [sp, #4] - mov r3, r4, asr #0x1f - ldr r8, [r1, #0xc] - str r3, [sp, #8] - mov r3, r8, asr #0x1f - str r3, [sp, #0x18] - ldr r7, [r1] - ldr r6, [r1, #0x18] - mov r3, r7, asr #0x1f - str r3, [sp, #0xc] - umull r3, r5, r4, r6 - mov fp, r6, asr #0x1f - str r3, [sp, #0x10] - mla r5, r4, fp, r5 - ldr r3, [sp, #8] - add lr, sp, #0x1c - mla r5, r3, r6, r5 - umull r3, r4, r2, r7 - str r3, [sp, #0x14] - ldr r3, [sp, #0xc] - mla r4, r2, r3, r4 - ldr r2, [sp, #4] - umull r3, fp, sb, r8 - mla r4, r2, r7, r4 - ldr r2, [sp, #0x14] - adds r3, r2, r3 - ldr r2, [sp, #0x18] - mla fp, sb, r2, fp - ldr r2, [sp] - mla fp, r2, r8, fp - adc r4, r4, fp - ldr r2, [sp, #0x10] - ldr fp, [sp, #0x18] - adds r3, r2, r3 - adc r2, r5, r4 - mov r3, r3, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [sl, #0xc] - ldr r2, [r0, #0x1c] - ldr r5, [r0, #0x18] - ldr r4, [r0, #0x20] - umull r3, r0, r2, r8 - mla r0, r2, fp, r0 - mov sb, r2, asr #0x1f - mla r0, sb, r8, r0 - smlal r3, r0, r5, r7 - smlal r3, r0, r4, r6 - mov r3, r3, lsr #0xc - orr r3, r3, r0, lsl #20 - str r3, [sl, #0x18] - ldr r0, [r1, #0x10] - ldr r3, [r1, #4] - smull r7, r0, r2, r0 - cmp sl, lr - smlal r7, r0, r5, r3 - ldr r6, [r1, #0x1c] - addne sp, sp, #0x40 - smlal r7, r0, r4, r6 - mov r3, r7, lsr #0xc - orr r3, r3, r0, lsl #20 - str r3, [sl, #0x1c] - ldr r0, [r1, #0x14] - ldr r6, [r1, #0x20] - ldr r3, [r1, #8] - smull r1, r0, r2, r0 - smlal r1, r0, r5, r3 - smlal r1, r0, r4, r6 - mov r1, r1, lsr #0xc - orr r1, r1, r0, lsl #20 - str r1, [sl, #0x20] - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r0, [lr] - str r0, [ip] - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MTX_Concat33 - - arm_func_start MTX_MultVec33 -MTX_MultVec33: ; 0x020CB630 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, [r1, #0xc] - ldmia r0, {r3, ip} - smull r6, r5, ip, r4 - ldr r4, [r1] - ldr r0, [r0, #8] - smlal r6, r5, r3, r4 - ldr r4, [r1, #0x18] - smlal r6, r5, r0, r4 - mov r4, r6, lsr #0xc - orr r4, r4, r5, lsl #20 - str r4, [r2] - ldr r4, [r1, #0x10] - ldr r5, [r1, #4] - smull r6, lr, ip, r4 - smlal r6, lr, r3, r5 - ldr r4, [r1, #0x1c] - smlal r6, lr, r0, r4 - mov r4, r6, lsr #0xc - orr r4, r4, lr, lsl #20 - str r4, [r2, #4] - ldr lr, [r1, #0x14] - ldr r4, [r1, #8] - smull r5, lr, ip, lr - smlal r5, lr, r3, r4 - ldr r1, [r1, #0x20] - smlal r5, lr, r0, r1 - mov r0, r5, lsr #0xc - orr r0, r0, lr, lsl #20 - str r0, [r2, #8] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MTX_MultVec33 diff --git a/lib/NitroSDK/asm/fx_mtx43.s b/lib/NitroSDK/asm/fx_mtx43.s deleted file mode 100644 index 284f3ed6..00000000 --- a/lib/NitroSDK/asm/fx_mtx43.s +++ /dev/null @@ -1,685 +0,0 @@ - .include "asm/macros.inc" - .include "fx_mtx43.inc" - .include "global.inc" - .text - - arm_func_start MTX_Identity43_ -MTX_Identity43_: ; 0x020CB6AC - mov r2, #0x1000 - mov r3, #0 - stmia r0!, {r2, r3} - mov r1, #0 - stmia r0!, {r1, r3} - stmia r0!, {r2, r3} - stmia r0!, {r1, r3} - stmia r0!, {r2, r3} - stmia r0!, {r1, r3} - bx lr - arm_func_end MTX_Identity43_ - - arm_func_start MTX_Copy43To44_ -MTX_Copy43To44_: ; 0x020CB6D4 - stmdb sp!, {r4} - mov ip, #0 - ldmia r0!, {r2, r3, r4} - stmia r1!, {r2, r3, r4, ip} - ldmia r0!, {r2, r3, r4} - stmia r1!, {r2, r3, r4, ip} - ldmia r0!, {r2, r3, r4} - stmia r1!, {r2, r3, r4, ip} - mov ip, #0x1000 - ldmia r0!, {r2, r3, r4} - stmia r1!, {r2, r3, r4, ip} - ldmia sp!, {r4} - bx lr - arm_func_end MTX_Copy43To44_ - - arm_func_start MTX_TransApply43 -MTX_TransApply43: ; 0x020CB708 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r7, r6 - beq _020CB728 - bl MI_Copy36B -_020CB728: - ldr r0, [r7, #0xc] - ldr r1, [r7] - smull r3, r2, r4, r0 - smlal r3, r2, r5, r1 - ldr r0, [sp, #0x18] - ldr r1, [r7, #0x18] - ldr ip, [r7, #0x24] - smlal r3, r2, r0, r1 - mov r1, r3, lsr #0xc - orr r1, r1, r2, lsl #20 - add r1, ip, r1 - str r1, [r6, #0x24] - ldr r1, [r7, #0x10] - ldr r2, [r7, #4] - smull ip, r3, r4, r1 - smlal ip, r3, r5, r2 - ldr r1, [r7, #0x1c] - ldr r2, [r7, #0x28] - smlal ip, r3, r0, r1 - mov r1, ip, lsr #0xc - orr r1, r1, r3, lsl #20 - add r1, r2, r1 - str r1, [r6, #0x28] - ldr r1, [r7, #0x14] - ldr r2, [r7, #8] - smull ip, r3, r4, r1 - smlal ip, r3, r5, r2 - ldr r1, [r7, #0x20] - ldr r2, [r7, #0x2c] - smlal ip, r3, r0, r1 - mov r0, ip, lsr #0xc - orr r0, r0, r3, lsl #20 - add r0, r2, r0 - str r0, [r6, #0x2c] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end MTX_TransApply43 - - thumb_func_start MTX_Scale43_ -MTX_Scale43_: ; 0x020CB7B4 - stmia r0!, {r1} - mov r1, #0 - str r3, [r0, #0x1c] - mov r3, #0 - stmia r0!, {r1, r3} - stmia r0!, {r1, r2, r3} - mov r2, #0 - stmia r0!, {r1, r3} - add r0, #4 - stmia r0!, {r1, r2, r3} - bx lr - .align 2, 0 - thumb_func_end MTX_Scale43_ - - arm_func_start MTX_ScaleApply43 -MTX_ScaleApply43: ; 0x020CB7CC - stmdb sp!, {r3, r4, r5, lr} - ldr ip, [sp, #0x10] - mov r5, r0 - str ip, [sp] - mov r4, r1 - bl MTX_ScaleApply33 - ldr r0, [r5, #0x24] - str r0, [r4, #0x24] - ldr r0, [r5, #0x28] - str r0, [r4, #0x28] - ldr r0, [r5, #0x2c] - str r0, [r4, #0x2c] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end MTX_ScaleApply43 - - thumb_func_start MTX_RotX43_ -MTX_RotX43_: ; 0x020CB800 - str r1, [r0, #0x14] - neg r1, r1 - str r1, [r0, #0x1c] - mov r1, #1 - lsl r1, r1, #0xc - stmia r0!, {r1} - mov r3, #0 - mov r1, #0 - stmia r0!, {r1, r3} - stmia r0!, {r1, r2} - str r1, [r0, #4] - add r0, #0xc - stmia r0!, {r2, r3} - stmia r0!, {r1, r3} - bx lr - .align 2, 0 - thumb_func_end MTX_RotX43_ - - thumb_func_start MTX_RotY43_ -MTX_RotY43_: ; 0x020CB820 - str r1, [r0, #0x18] - mov r3, #0 - stmia r0!, {r2, r3} - neg r1, r1 - stmia r0!, {r1, r3} - mov r1, #1 - lsl r1, r1, #0xc - stmia r0!, {r1, r3} - add r0, #4 - mov r1, #0 - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r3} - bx lr - .align 2, 0 - thumb_func_end MTX_RotY43_ - - arm_func_start MTX_Inverse43 -MTX_Inverse43: ; 0x020CB83C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5c - mov sl, r0 - ldr r0, [sl, #0x14] - cmp sl, r1 - addeq sb, sp, #0x2c - ldr r3, [sl, #0x18] - ldr r2, [sl, #0xc] - ldr r6, [sl, #0x20] - str r1, [sp] - movne sb, r1 - smull fp, r8, r2, r6 - smull r7, r1, r0, r3 - subs r7, fp, r7 - sbc ip, r8, r1 - ldr r4, [sl, #0x10] - ldr r5, [sl, #0x1c] - adds r1, r7, #0x800 - smull fp, r8, r4, r6 - smull r7, r6, r0, r5 - adc r0, ip, #0 - subs r7, fp, r7 - sbc r6, r8, r6 - mov r8, r1, lsr #0xc - orr r8, r8, r0, lsl #20 - smull r1, r0, r2, r5 - adds r7, r7, #0x800 - smull r5, r3, r4, r3 - adc r2, r6, #0 - mov r7, r7, lsr #0xc - orr r7, r7, r2, lsl #20 - subs r1, r1, r5 - sbc r5, r0, r3 - ldr r2, [sl] - adds r6, r1, #0x800 - ldr fp, [sl, #4] - smull r4, r3, r2, r7 - smull r1, r0, fp, r8 - adc r2, r5, #0 - mov r6, r6, lsr #0xc - orr r6, r6, r2, lsl #20 - subs r2, r4, r1 - ldr r1, [sl, #8] - sbc r0, r3, r0 - smlal r2, r0, r1, r6 - adds r1, r2, #0x800 - adc r2, r0, #0 - mov r0, r1, lsr #0xc - mov r1, r8, asr #0x1f - str r1, [sp, #4] - mov r1, r7, asr #0x1f - str r1, [sp, #8] - mov r1, r6, asr #0x1f - str r1, [sp, #0xc] - orrs r0, r0, r2, lsl #20 - mov r1, #0 - addeq sp, sp, #0x5c - subeq r0, r1, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl FX_InvAsync - ldr r1, [sl, #8] - ldr r2, [sl, #0x1c] - ldr fp, [sl, #0x10] - smull r0, r4, r2, r1 - smull r3, r2, fp, r1 - ldr r5, [sl, #0x18] - str r2, [sp, #0x18] - str r3, [sp, #0x14] - smull r3, r2, r5, r1 - str r2, [sp, #0x20] - ldr r2, [sl, #0x20] - str r3, [sp, #0x1c] - str r2, [sp, #0x10] - ldr r5, [sp, #0x10] - ldmia sl, {r3, lr} - smull ip, r5, lr, r5 - subs r0, ip, r0 - ldr r2, [sl, #0xc] - sbc r4, r5, r4 - smull r1, r5, r2, r1 - str r5, [sp, #0x28] - mov r5, r0, lsr #0xc - ldr fp, [sl, #0x14] - orr r5, r5, r4, lsl #20 - smull r4, r2, lr, fp - ldr r0, [sp, #0x14] - subs r4, r4, r0 - ldr r0, [sp, #0x18] - mov r4, r4, lsr #0xc - sbc r0, r2, r0 - orr r4, r4, r0, lsl #20 - ldr r0, [sp, #0x10] - ldr r2, [sp, #0x1c] - smull ip, r0, r3, r0 - subs r2, ip, r2 - ldr ip, [sp, #0x20] - sbc r0, r0, ip - smull ip, fp, r3, fp - ldr r3, [sp, #0x28] - subs r1, ip, r1 - sbc r3, fp, r3 - mov fp, r2, lsr #0xc - orr fp, fp, r0, lsl #20 - mov r0, r1, lsr #0xc - orr r0, r0, r3, lsl #20 - str r0, [sp, #0x24] - bl FX_GetDivResult - smull r2, r1, r0, r5 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - rsb lr, r2, #0 - smull r2, r1, r0, r4 - mov r4, r2, lsr #0xc - orr r4, r4, r1, lsl #20 - smull r2, r1, r0, fp - mov r3, r2, lsr #0xc - orr r3, r3, r1, lsl #20 - ldr r1, [sp, #0x24] - umull fp, r5, r0, r7 - smull r2, r1, r0, r1 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - ldr r1, [sp, #8] - mov ip, r0, asr #0x1f - mla r5, r0, r1, r5 - mla r5, ip, r7, r5 - mov r1, fp, lsr #0xc - orr r1, r1, r5, lsl #20 - stmia sb, {r1, lr} - str r4, [sb, #8] - ldr r1, [sp, #4] - umull r5, r4, r0, r8 - mla r4, r0, r1, r4 - mla r4, ip, r8, r4 - mov r1, r5, lsr #0xc - orr r1, r1, r4, lsl #20 - rsb r1, r1, #0 - str r1, [sb, #0xc] - ldr r1, [sp, #0xc] - rsb r2, r2, #0 - str r3, [sb, #0x10] - str r2, [sb, #0x14] - umull r3, r2, r0, r6 - mla r2, r0, r1, r2 - mla r2, ip, r6, r2 - mov r1, r3, lsr #0xc - orr r1, r1, r2, lsl #20 - str r1, [sb, #0x18] - ldr r3, [sl] - ldr r1, [sl, #0x1c] - ldr r2, [sl, #0x18] - smull r5, r4, r3, r1 - ldr r1, [sl, #4] - smull r3, r1, r2, r1 - subs r2, r5, r3 - sbc r1, r4, r1 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - smull r2, r1, r0, r2 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - rsb r1, r2, #0 - str r1, [sb, #0x1c] - ldr r4, [sl] - ldr r3, [sl, #0x10] - ldr r2, [sl, #0xc] - ldr r1, [sl, #4] - smull r6, r5, r4, r3 - smull r3, r1, r2, r1 - subs r2, r6, r3 - sbc r1, r5, r1 - mov r2, r2, lsr #0xc - orr r2, r2, r1, lsl #20 - mov r1, r2, asr #0x1f - umull r4, r3, r0, r2 - mla r3, r0, r1, r3 - mla r3, ip, r2, r3 - mov r0, r4, lsr #0xc - orr r0, r0, r3, lsl #20 - str r0, [sb, #0x20] - ldr r1, [sb, #0xc] - ldr r0, [sl, #0x28] - ldr r2, [sb] - smull r5, r4, r1, r0 - ldr r0, [sl, #0x24] - ldr r3, [sb, #0x18] - smlal r5, r4, r2, r0 - ldr r1, [sl, #0x2c] - add r0, sp, #0x2c - smlal r5, r4, r3, r1 - mov r1, r5, lsr #0xc - orr r1, r1, r4, lsl #20 - rsb r1, r1, #0 - str r1, [sb, #0x24] - ldr r2, [sb, #0x10] - ldr r1, [sl, #0x28] - ldr r3, [sb, #4] - smull r5, r4, r2, r1 - ldr r1, [sl, #0x24] - ldr r2, [sb, #0x1c] - smlal r5, r4, r3, r1 - ldr r1, [sl, #0x2c] - cmp sb, r0 - smlal r5, r4, r2, r1 - mov r1, r5, lsr #0xc - orr r1, r1, r4, lsl #20 - rsb r1, r1, #0 - str r1, [sb, #0x28] - ldr r2, [sb, #0x14] - ldr r1, [sl, #0x28] - ldr r3, [sb, #8] - smull r6, r5, r2, r1 - ldr r1, [sl, #0x24] - ldr r4, [sb, #0x20] - smlal r6, r5, r3, r1 - ldr r2, [sl, #0x2c] - smlal r6, r5, r4, r2 - mov r1, r6, lsr #0xc - orr r1, r1, r5, lsl #20 - rsb r1, r1, #0 - str r1, [sb, #0x2c] - bne _020CBBBC - ldr r1, [sp] - bl MI_Copy48B -_020CBBBC: - mov r0, #0 - add sp, sp, #0x5c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MTX_Inverse43 - - arm_func_start MTX_Concat43 -MTX_Concat43: ; 0x020CBBC8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - mov ip, r2 - ldr r2, [r0, #4] - ldr r3, [r1, #0xc] - cmp ip, r1 - smull r7, r4, r2, r3 - ldr r6, [r0] - ldr r3, [r1] - addeq sl, sp, #0x1c - smlal r7, r4, r6, r3 - ldr r5, [r0, #8] - ldr r3, [r1, #0x18] - movne sl, ip - smlal r7, r4, r5, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r4, lsl #20 - str r3, [sl] - ldr r3, [r1, #0x10] - ldr r4, [r1, #4] - smull r8, r7, r2, r3 - smlal r8, r7, r6, r4 - ldr r3, [r1, #0x1c] - smlal r8, r7, r5, r3 - mov r3, r8, lsr #0xc - orr r3, r3, r7, lsl #20 - str r3, [sl, #4] - ldr r3, [r1, #0x14] - ldr r4, [r1, #8] - smull r8, r7, r2, r3 - smlal r8, r7, r6, r4 - ldr r2, [r1, #0x20] - smlal r8, r7, r5, r2 - mov r5, r8, lsr #0xc - orr r5, r5, r7, lsl #20 - str r5, [sl, #8] - ldr r8, [r0, #0x10] - ldr sb, [r0, #0xc] - smull r5, r3, r8, r3 - smlal r5, r3, sb, r4 - ldr r7, [r0, #0x14] - mov r6, sb, asr #0x1f - smlal r5, r3, r7, r2 - mov r2, r5, lsr #0xc - orr r2, r2, r3, lsl #20 - str r2, [sl, #0x14] - ldr r2, [r1, #0x10] - ldr r3, [r1, #4] - smull r5, r4, r8, r2 - smlal r5, r4, sb, r3 - ldr r3, [r1, #0x1c] - mov r2, r8, asr #0x1f - smlal r5, r4, r7, r3 - str r2, [sp, #0x14] - mov r2, r5, lsr #0xc - orr r2, r2, r4, lsl #20 - str r2, [sl, #0x10] - mov r2, r7, asr #0x1f - ldr r5, [r1] - str r2, [sp] - ldr r4, [r1, #0xc] - ldr lr, [r1, #0x18] - mov r2, r4, asr #0x1f - str r2, [sp, #4] - mov r2, r5, asr #0x1f - str r2, [sp, #8] - umull r2, r3, r7, lr - mov fp, lr, asr #0x1f - mla r3, r7, fp, r3 - str r2, [sp, #0xc] - ldr r2, [sp] - ldr r7, [sp, #8] - mla r3, r2, lr, r3 - umull fp, r2, sb, r5 - mla r2, sb, r7, r2 - mla r2, r6, r5, r2 - ldr r6, [sp, #4] - umull sb, r7, r8, r4 - mla r7, r8, r6, r7 - ldr r8, [sp, #0x14] - adds r6, fp, sb - mla r7, r8, r4, r7 - adc r7, r2, r7 - ldr r2, [sp, #0xc] - adds r6, r2, r6 - adc r2, r3, r7 - mov r3, r6, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [sl, #0xc] - ldr r3, [r0, #0x1c] - ldr r6, [r0, #0x18] - smull r7, r4, r3, r4 - smlal r7, r4, r6, r5 - ldr r2, [r0, #0x20] - smlal r7, r4, r2, lr - mov r5, r7, lsr #0xc - orr r5, r5, r4, lsl #20 - str r5, [sl, #0x18] - ldr r4, [r1, #0x10] - ldr r5, [r1, #4] - smull r8, r4, r3, r4 - smlal r8, r4, r6, r5 - ldr r7, [r1, #0x1c] - smlal r8, r4, r2, r7 - mov r5, r8, lsr #0xc - orr r5, r5, r4, lsl #20 - str r5, [sl, #0x1c] - ldr r5, [r1, #0x14] - ldr r4, [r1, #8] - smull r8, r7, r3, r5 - smlal r8, r7, r6, r4 - ldr r3, [r1, #0x20] - smlal r8, r7, r2, r3 - mov r2, r8, lsr #0xc - orr r2, r2, r7, lsl #20 - str r2, [sl, #0x20] - ldr r2, [r0, #0x28] - ldr sb, [r0, #0x24] - ldr r7, [r0, #0x2c] - smull r5, r0, r2, r5 - smlal r5, r0, sb, r4 - smlal r5, r0, r7, r3 - mov r3, r5, lsr #0xc - orr r3, r3, r0, lsl #20 - mov r0, r7, asr #0x1f - str r0, [sp, #0x18] - ldr r0, [r1, #0x2c] - mov fp, r2, asr #0x1f - adds r0, r0, r3 - str r0, [sl, #0x2c] - ldr r3, [r1, #0x10] - ldr r4, [r1, #4] - smull r6, r3, r2, r3 - smlal r6, r3, sb, r4 - ldr r5, [r1, #0x1c] - ldr r0, [r1, #0x28] - smlal r6, r3, r7, r5 - mov r4, r6, lsr #0xc - orr r4, r4, r3, lsl #20 - adds r0, r0, r4 - mov r8, sb, asr #0x1f - str r0, [sl, #0x28] - ldr r4, [r1] - ldr r3, [r1, #0xc] - umull r0, r5, sb, r4 - mov lr, r4, asr #0x1f - mla r5, sb, lr, r5 - mov sb, r3, asr #0x1f - str r0, [sp, #0x10] - mla r5, r8, r4, r5 - umull r8, r0, r2, r3 - mla r0, r2, sb, r0 - ldr r4, [sp, #0x10] - mla r0, fp, r3, r0 - adds r4, r4, r8 - adc r2, r5, r0 - ldr r6, [r1, #0x18] - ldr r8, [r1, #0x24] - mov r1, r6, asr #0x1f - umull r5, r3, r7, r6 - mla r3, r7, r1, r3 - adds r1, r5, r4 - ldr r0, [sp, #0x18] - mov r1, r1, lsr #0xc - mla r3, r0, r6, r3 - adc r0, r3, r2 - orr r1, r1, r0, lsl #20 - adds r0, r8, r1 - add r4, sp, #0x1c - cmp sl, r4 - addne sp, sp, #0x4c - str r0, [sl, #0x24] - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldmia r4!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia r4!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia r4, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MTX_Concat43 - - arm_func_start MTX_MultVec43 -MTX_MultVec43: ; 0x020CBE9C - stmdb sp!, {r4, r5, r6, lr} - ldr r4, [r1, #0xc] - ldmia r0, {r3, ip} - smull r6, r5, ip, r4 - ldr r4, [r1] - ldr r0, [r0, #8] - smlal r6, r5, r3, r4 - ldr r4, [r1, #0x18] - smlal r6, r5, r0, r4 - mov r6, r6, lsr #0xc - orr r6, r6, r5, lsl #20 - str r6, [r2] - ldr r4, [r1, #0x24] - add r4, r6, r4 - str r4, [r2] - ldr r4, [r1, #0x10] - ldr r5, [r1, #4] - smull r6, lr, ip, r4 - smlal r6, lr, r3, r5 - ldr r4, [r1, #0x1c] - smlal r6, lr, r0, r4 - mov r5, r6, lsr #0xc - orr r5, r5, lr, lsl #20 - str r5, [r2, #4] - ldr r4, [r1, #0x28] - add r4, r5, r4 - str r4, [r2, #4] - ldr lr, [r1, #0x14] - ldr r4, [r1, #8] - smull r5, lr, ip, lr - smlal r5, lr, r3, r4 - ldr r3, [r1, #0x20] - smlal r5, lr, r0, r3 - mov r3, r5, lsr #0xc - orr r3, r3, lr, lsl #20 - str r3, [r2, #8] - ldr r0, [r1, #0x2c] - add r0, r3, r0 - str r0, [r2, #8] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MTX_MultVec43 - - arm_func_start MTX_LookAt -MTX_LookAt: ; 0x020CBF3C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x24 - mov r6, r0 - ldr r5, [r6] - ldr r4, [r2] - add r0, sp, #0x18 - sub r4, r5, r4 - str r4, [sp, #0x18] - ldr ip, [r6, #4] - ldr r4, [r2, #4] - mov r5, r1 - sub r1, ip, r4 - str r1, [sp, #0x1c] - ldr r4, [r6, #8] - ldr r2, [r2, #8] - mov r1, r0 - sub r2, r4, r2 - mov r4, r3 - str r2, [sp, #0x20] - bl VEC_Normalize - add r1, sp, #0x18 - add r2, sp, #0xc - mov r0, r5 - bl VEC_CrossProduct - add r0, sp, #0xc - mov r1, r0 - bl VEC_Normalize - add r0, sp, #0x18 - add r1, sp, #0xc - add r2, sp, #0 - bl VEC_CrossProduct - ldr r1, [sp, #0xc] - mov r0, r6 - str r1, [r4] - ldr r2, [sp] - add r1, sp, #0xc - str r2, [r4, #4] - ldr r2, [sp, #0x18] - str r2, [r4, #8] - ldr r2, [sp, #0x10] - str r2, [r4, #0xc] - ldr r2, [sp, #4] - str r2, [r4, #0x10] - ldr r2, [sp, #0x1c] - str r2, [r4, #0x14] - ldr r2, [sp, #0x14] - str r2, [r4, #0x18] - ldr r2, [sp, #8] - str r2, [r4, #0x1c] - ldr r2, [sp, #0x20] - str r2, [r4, #0x20] - bl VEC_DotProduct - rsb r0, r0, #0 - str r0, [r4, #0x24] - mov r0, r6 - add r1, sp, #0 - bl VEC_DotProduct - rsb r0, r0, #0 - str r0, [r4, #0x28] - mov r0, r6 - add r1, sp, #0x18 - bl VEC_DotProduct - rsb r0, r0, #0 - str r0, [r4, #0x2c] - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end MTX_LookAt diff --git a/lib/NitroSDK/asm/fx_mtx44.s b/lib/NitroSDK/asm/fx_mtx44.s deleted file mode 100644 index 582340a8..00000000 --- a/lib/NitroSDK/asm/fx_mtx44.s +++ /dev/null @@ -1,802 +0,0 @@ - .include "asm/macros.inc" - .include "fx_mtx44.inc" - .include "global.inc" - .text - - arm_func_start MTX_Identity44_ -MTX_Identity44_: ; 0x020CC044 - mov r2, #0x1000 - mov r3, #0 - stmia r0!, {r2, r3} - mov r1, #0 - stmia r0!, {r1, r3} - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r3} - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r3} - stmia r0!, {r1, r2} - bx lr - arm_func_end MTX_Identity44_ - - arm_func_start MTX_Copy44To43_ -MTX_Copy44To43_: ; 0x020CC070 - ldmia r0!, {r2, r3, ip} - add r0, r0, #4 - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - add r0, r0, #4 - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - add r0, r0, #4 - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - add r0, r0, #4 - stmia r1!, {r2, r3, ip} - bx lr - arm_func_end MTX_Copy44To43_ - - arm_func_start MTX_TransApply44 -MTX_TransApply44: ; 0x020CC0A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r7, r6 - beq _020CC0C4 - bl MI_Copy48B -_020CC0C4: - ldr r0, [r7, #0x10] - ldr r1, [r7] - smull r3, r2, r4, r0 - smlal r3, r2, r5, r1 - ldr r0, [sp, #0x18] - ldr r1, [r7, #0x20] - ldr ip, [r7, #0x30] - smlal r3, r2, r0, r1 - mov r1, r3, lsr #0xc - orr r1, r1, r2, lsl #20 - add r1, ip, r1 - str r1, [r6, #0x30] - ldr r1, [r7, #0x14] - ldr r2, [r7, #4] - smull ip, r3, r4, r1 - smlal ip, r3, r5, r2 - ldr r1, [r7, #0x24] - ldr r2, [r7, #0x34] - smlal ip, r3, r0, r1 - mov r1, ip, lsr #0xc - orr r1, r1, r3, lsl #20 - add r1, r2, r1 - str r1, [r6, #0x34] - ldr r1, [r7, #0x18] - ldr r2, [r7, #8] - smull ip, r3, r4, r1 - smlal ip, r3, r5, r2 - ldr r1, [r7, #0x28] - ldr r2, [r7, #0x38] - smlal ip, r3, r0, r1 - mov r1, ip, lsr #0xc - orr r1, r1, r3, lsl #20 - add r1, r2, r1 - str r1, [r6, #0x38] - ldr r1, [r7, #0x1c] - ldr r2, [r7, #0xc] - smull ip, r3, r4, r1 - smlal ip, r3, r5, r2 - ldr r1, [r7, #0x2c] - ldr r2, [r7, #0x3c] - smlal ip, r3, r0, r1 - mov r0, ip, lsr #0xc - orr r0, r0, r3, lsl #20 - add r0, r2, r0 - str r0, [r6, #0x3c] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end MTX_TransApply44 - - thumb_func_start MTX_RotX44_ -MTX_RotX44_: ; 0x020CC17C - str r2, [r0, #0x14] - str r2, [r0, #0x28] - str r1, [r0, #0x18] - neg r1, r1 - str r1, [r0, #0x24] - mov r1, #1 - mov r2, #0 - lsl r1, r1, #0xc - mov r3, #0 - stmia r0!, {r1, r2, r3} - stmia r0!, {r2, r3} - add r0, #8 - stmia r0!, {r2, r3} - add r0, #8 - stmia r0!, {r2, r3} - stmia r0!, {r2, r3} - str r1, [r0] - bx lr - thumb_func_end MTX_RotX44_ - - thumb_func_start MTX_RotY44_ -MTX_RotY44_: ; 0x020CC1A0 - str r2, [r0] - str r2, [r0, #0x28] - str r1, [r0, #0x20] - neg r1, r1 - str r1, [r0, #8] - mov r3, #1 - mov r1, #0 - lsl r3, r3, #0xc - mov r2, #0 - str r2, [r0, #4] - add r0, #0xc - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r2} - str r2, [r0, #4] - add r0, #0xc - stmia r0!, {r1, r2} - stmia r0!, {r1, r2, r3} - bx lr - thumb_func_end MTX_RotY44_ - - thumb_func_start MTX_RotZ44_ -MTX_RotZ44_: ; 0x020CC1C4 - str r2, [r0] - str r2, [r0, #0x14] - str r1, [r0, #4] - neg r1, r1 - str r1, [r0, #0x10] - mov r3, #1 - mov r1, #0 - lsl r3, r3, #0xc - mov r2, #0 - add r0, #8 - stmia r0!, {r1, r2} - add r0, #8 - stmia r0!, {r1, r2} - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r2} - stmia r0!, {r1, r2, r3} - bx lr - .align 2, 0 - thumb_func_end MTX_RotZ44_ - - arm_func_start MTX_Concat44 -MTX_Concat44: ; 0x020CC1E8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xe8 - cmp r2, r1 - addeq sl, sp, #0xa8 - str r2, [sp] - movne sl, r2 - ldr r4, [r0, #4] - ldr r2, [r1, #0x10] - ldr r5, [r0] - smull r8, r7, r4, r2 - ldr r2, [r1] - ldr r3, [r0, #8] - smlal r8, r7, r5, r2 - ldr r6, [r1, #0x20] - ldr r2, [r0, #0xc] - smlal r8, r7, r3, r6 - ldr r6, [r1, #0x30] - smlal r8, r7, r2, r6 - mov r6, r8, lsr #0xc - orr r6, r6, r7, lsl #20 - str r6, [sl] - ldr r6, [r1, #0x14] - ldr r7, [r1, #4] - smull sb, r8, r4, r6 - smlal sb, r8, r5, r7 - ldr r6, [r1, #0x24] - ldr r7, [r1, #0x34] - smlal sb, r8, r3, r6 - smlal sb, r8, r2, r7 - mov r6, sb, lsr #0xc - orr r6, r6, r8, lsl #20 - str r6, [sl, #4] - ldr r6, [r1, #0x1c] - ldr r7, [r1, #0xc] - smull sb, r8, r4, r6 - smlal sb, r8, r5, r7 - ldr r6, [r1, #0x2c] - ldr r7, [r1, #0x3c] - smlal sb, r8, r3, r6 - smlal sb, r8, r2, r7 - mov r6, sb, lsr #0xc - orr r6, r6, r8, lsl #20 - str r6, [sl, #0xc] - ldr fp, [r1, #0x18] - ldr ip, [r1, #8] - smull r7, r6, r4, fp - ldr r8, [r1, #0x38] - smlal r7, r6, r5, ip - ldr sb, [r1, #0x28] - mov lr, r8, asr #0x1f - smlal r7, r6, r3, sb - smlal r7, r6, r2, r8 - mov r2, r7, lsr #0xc - orr r2, r2, r6, lsl #20 - str r2, [sl, #8] - mov r2, fp, asr #0x1f - str r2, [sp, #4] - mov r2, ip, asr #0x1f - str r2, [sp, #8] - mov r2, sb, asr #0x1f - str r2, [sp, #0x8c] - ldr r6, [r0, #0x14] - ldr r7, [r0, #0x10] - mov r2, r6, asr #0x1f - str r2, [sp, #0xc] - mov r2, r7, asr #0x1f - ldr r5, [r0, #0x18] - str r2, [sp, #0x10] - mov r2, r5, asr #0x1f - ldr r4, [r0, #0x1c] - str r2, [sp, #0x14] - mov r2, r4, asr #0x1f - str r2, [sp, #0x18] - umull r2, r3, r4, r8 - str r2, [sp, #0x1c] - mla r3, r4, lr, r3 - ldr r2, [sp, #0x18] - mla r3, r2, r8, r3 - umull r8, r2, r5, sb - str r8, [sp, #0x20] - ldr r8, [sp, #0x8c] - mla r2, r5, r8, r2 - ldr r8, [sp, #0x14] - mla r2, r8, sb, r2 - ldr r8, [sp, #8] - umull lr, sb, r7, ip - mla sb, r7, r8, sb - ldr r8, [sp, #0x10] - mla sb, r8, ip, sb - umull ip, r8, r6, fp - adds lr, lr, ip - ldr ip, [sp, #4] - mla r8, r6, ip, r8 - ldr ip, [sp, #0xc] - mla r8, ip, fp, r8 - adc sb, sb, r8 - ldr r8, [sp, #0x20] - adds fp, r8, lr - adc r8, r2, sb - ldr r2, [sp, #0x1c] - adds sb, r2, fp - adc r2, r3, r8 - mov r3, sb, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [sl, #0x18] - ldr r2, [r1, #0x14] - ldr r3, [r1, #4] - smull fp, r2, r6, r2 - smlal fp, r2, r7, r3 - ldr r8, [r1, #0x24] - ldr sb, [r1, #0x34] - smlal fp, r2, r5, r8 - smlal fp, r2, r4, sb - mov r3, fp, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [sl, #0x14] - ldr r2, [r1, #0x1c] - ldr r3, [r1, #0xc] - smull fp, r2, r6, r2 - smlal fp, r2, r7, r3 - ldr r8, [r1, #0x2c] - ldr sb, [r1, #0x3c] - smlal fp, r2, r5, r8 - smlal fp, r2, r4, sb - mov r3, fp, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [sl, #0x1c] - ldr sb, [r1, #0x10] - ldr fp, [r1, #0x30] - smull ip, r8, r6, sb - ldr r3, [r1] - ldr r2, [r1, #0x20] - smlal ip, r8, r7, r3 - smlal ip, r8, r5, r2 - smlal ip, r8, r4, fp - mov r4, ip, lsr #0xc - orr r4, r4, r8, lsl #20 - str r4, [sl, #0x10] - mov r4, r3, asr #0x1f - mov r5, sb, asr #0x1f - str r4, [sp, #0x28] - mov r4, r2, asr #0x1f - str r5, [sp, #0x24] - ldr r7, [r0, #0x24] - str r4, [sp, #0x2c] - mov r4, r7, asr #0x1f - ldr r8, [r0, #0x20] - ldr r6, [r0, #0x28] - ldr r5, [r0, #0x2c] - mov lr, fp, asr #0x1f - str r4, [sp, #0x90] - mov r4, r8, asr #0x1f - str r4, [sp, #0x30] - mov r4, r6, asr #0x1f - str r4, [sp, #0x34] - mov r4, r5, asr #0x1f - str r4, [sp, #0x38] - umull ip, r4, r5, fp - str ip, [sp, #0x3c] - mla r4, r5, lr, r4 - ldr ip, [sp, #0x38] - mla r4, ip, fp, r4 - umull fp, lr, r6, r2 - str fp, [sp, #0x40] - ldr fp, [sp, #0x2c] - mla lr, r6, fp, lr - ldr fp, [sp, #0x34] - mla lr, fp, r2, lr - umull r2, ip, r8, r3 - str r2, [sp, #0x44] - ldr r2, [sp, #0x28] - mla ip, r8, r2, ip - ldr r2, [sp, #0x30] - mla ip, r2, r3, ip - umull r3, fp, r7, sb - ldr r2, [sp, #0x44] - adds r3, r2, r3 - ldr r2, [sp, #0x24] - mla fp, r7, r2, fp - ldr r2, [sp, #0x90] - mla fp, r2, sb, fp - ldr r2, [sp, #0x40] - adc sb, ip, fp - adds fp, r2, r3 - ldr r2, [sp, #0x3c] - adc r3, lr, sb - adds sb, r2, fp - adc r2, r4, r3 - mov r3, sb, lsr #0xc - orr r3, r3, r2, lsl #20 - str r3, [sl, #0x20] - ldr r2, [r1, #0x14] - ldr lr, [r1, #4] - str r2, [sp, #0x48] - ldr r3, [sp, #0x48] - mov r2, r2, asr #0x1f - umull ip, fp, r7, r3 - mla fp, r7, r2, fp - ldr r2, [sp, #0x90] - ldr r4, [r1, #0x24] - mla fp, r2, r3, fp - smlal ip, fp, r8, lr - smlal ip, fp, r6, r4 - ldr sb, [r1, #0x34] - smlal ip, fp, r5, sb - mov r2, ip, lsr #0xc - orr r2, r2, fp, lsl #20 - str r2, [sl, #0x24] - ldr r2, [r1, #0x1c] - ldr lr, [r1, #0xc] - str r2, [sp, #0x4c] - ldr r3, [sp, #0x4c] - mov r2, r2, asr #0x1f - umull ip, fp, r7, r3 - mla fp, r7, r2, fp - ldr r2, [sp, #0x90] - ldr r4, [r1, #0x2c] - mla fp, r2, r3, fp - smlal ip, fp, r8, lr - smlal ip, fp, r6, r4 - ldr sb, [r1, #0x3c] - smlal ip, fp, r5, sb - mov r2, ip, lsr #0xc - orr r2, r2, fp, lsl #20 - str r2, [sl, #0x2c] - ldr fp, [r1, #0x18] - ldr r3, [r1, #0x38] - mov ip, fp, asr #0x1f - str r3, [sp, #0x50] - umull r4, r3, r7, fp - mla r3, r7, ip, r3 - ldr r7, [sp, #0x90] - ldr r2, [r1, #8] - mla r3, r7, fp, r3 - smlal r4, r3, r8, r2 - ldr sb, [r1, #0x28] - smlal r4, r3, r6, sb - ldr r6, [sp, #0x50] - smlal r4, r3, r5, r6 - mov r4, r4, lsr #0xc - orr r4, r4, r3, lsl #20 - str r4, [sl, #0x28] - ldr r4, [r0, #0x34] - ldr r3, [r0, #0x30] - smull r6, r5, r4, fp - smlal r6, r5, r3, r2 - mov r2, r4, asr #0x1f - str r2, [sp, #0x54] - mov r2, r3, asr #0x1f - str r2, [sp, #0x58] - ldr r2, [r0, #0x38] - ldr ip, [r0, #0x3c] - smlal r6, r5, r2, sb - ldr r0, [sp, #0x50] - smlal r6, r5, ip, r0 - mov r0, r6, lsr #0xc - orr r0, r0, r5, lsl #20 - str r0, [sl, #0x38] - mov r0, r2, asr #0x1f - str r0, [sp, #0x5c] - mov r0, ip, asr #0x1f - str r0, [sp, #0x60] - ldr r8, [r1, #0x24] - ldr r7, [r1, #4] - mov r0, r8, asr #0x1f - ldr sb, [r1, #0x34] - str r0, [sp, #0x98] - mov r0, r7, asr #0x1f - ldr r6, [r1, #0x14] - str r0, [sp, #0x6c] - mov r0, r6, asr #0x1f - str r0, [sp, #0x70] - umull r0, fp, ip, sb - mov lr, sb, asr #0x1f - str r0, [sp, #0x64] - mla fp, ip, lr, fp - ldr r0, [sp, #0x60] - add r5, sp, #0xa8 - mla fp, r0, sb, fp - umull r0, sb, r2, r8 - str r0, [sp, #0x94] - ldr r0, [sp, #0x98] - mla sb, r2, r0, sb - ldr r0, [sp, #0x5c] - mla sb, r0, r8, sb - umull r0, r8, r3, r7 - str r0, [sp, #0x68] - ldr r0, [sp, #0x6c] - mla r8, r3, r0, r8 - ldr r0, [sp, #0x58] - mla r8, r0, r7, r8 - umull r7, lr, r4, r6 - ldr r0, [sp, #0x68] - adds r7, r0, r7 - ldr r0, [sp, #0x70] - mla lr, r4, r0, lr - ldr r0, [sp, #0x54] - mla lr, r0, r6, lr - ldr r0, [sp, #0x94] - adc r6, r8, lr - adds r7, r0, r7 - ldr r0, [sp, #0x64] - adc r6, sb, r6 - adds r7, r0, r7 - adc r0, fp, r6 - mov r6, r7, lsr #0xc - orr r6, r6, r0, lsl #20 - str r6, [sl, #0x34] - ldr r8, [r1, #0x20] - ldr sb, [r1, #0x30] - mov r0, r8, asr #0x1f - ldr r7, [r1] - str r0, [sp, #0xa0] - mov r0, r7, asr #0x1f - ldr r6, [r1, #0x10] - str r0, [sp, #0x7c] - mov r0, r6, asr #0x1f - str r0, [sp, #0x80] - umull r0, fp, ip, sb - mov lr, sb, asr #0x1f - str r0, [sp, #0x74] - mla fp, ip, lr, fp - ldr r0, [sp, #0x60] - mla fp, r0, sb, fp - umull r0, sb, r2, r8 - str r0, [sp, #0x9c] - ldr r0, [sp, #0xa0] - mla sb, r2, r0, sb - ldr r0, [sp, #0x5c] - mla sb, r0, r8, sb - umull r0, r8, r3, r7 - str r0, [sp, #0x78] - ldr r0, [sp, #0x7c] - mla r8, r3, r0, r8 - ldr r0, [sp, #0x58] - mla r8, r0, r7, r8 - umull r7, lr, r4, r6 - ldr r0, [sp, #0x78] - adds r7, r0, r7 - ldr r0, [sp, #0x80] - mla lr, r4, r0, lr - ldr r0, [sp, #0x54] - mla lr, r0, r6, lr - ldr r0, [sp, #0x9c] - adc r6, r8, lr - adds r7, r0, r7 - ldr r0, [sp, #0x74] - adc r6, sb, r6 - adds r7, r0, r7 - adc r0, fp, r6 - mov r6, r7, lsr #0xc - orr r6, r6, r0, lsl #20 - str r6, [sl, #0x30] - ldr r8, [r1, #0x3c] - ldr r6, [r1, #0xc] - mov r0, r8, asr #0x1f - str r0, [sp, #0x84] - ldr r7, [r1, #0x2c] - ldr fp, [sp, #0x84] - mov r0, r7, asr #0x1f - str r0, [sp, #0x88] - ldr r0, [r1, #0x1c] - mov lr, r6, asr #0x1f - mov r1, r0, asr #0x1f - str r1, [sp, #0xa4] - umull sb, r1, ip, r8 - mla r1, ip, fp, r1 - ldr fp, [sp, #0x60] - mla r1, fp, r8, r1 - ldr r8, [sp, #0x88] - umull ip, fp, r2, r7 - mla fp, r2, r8, fp - ldr r2, [sp, #0x5c] - ldr r8, [sp, #0xa4] - mla fp, r2, r7, fp - umull r7, r2, r3, r6 - mla r2, r3, lr, r2 - ldr r3, [sp, #0x58] - mla r2, r3, r6, r2 - umull r6, r3, r4, r0 - mla r3, r4, r8, r3 - ldr r4, [sp, #0x54] - mla r3, r4, r0, r3 - adds r4, r7, r6 - adc r0, r2, r3 - adds r2, ip, r4 - adc r0, fp, r0 - adds r2, sb, r2 - adc r0, r1, r0 - mov r1, r2, lsr #0xc - orr r1, r1, r0, lsl #20 - cmp sl, r5 - addne sp, sp, #0xe8 - str r1, [sl, #0x3c] - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, [sp] - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - str r4, [sp] - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - str r4, [sp] - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldmia r5, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - str r4, [sp] - add sp, sp, #0xe8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MTX_Concat44 - - arm_func_start MTX_PerspectiveW -MTX_PerspectiveW: ; 0x020CC84C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, r0 - mov r0, r1 - mov r1, r4 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x1c] - ldr r5, [sp, #0x20] - bl FX_Div - ldr r1, [sp, #0x18] - ldr r2, _020CC994 ; =0x04000290 - mov r3, #0 - str r3, [r2] - mov r3, #0x1000 - str r3, [r2, #4] - sub r1, r7, r1 - str r1, [r2, #8] - mov r1, #0 - mov r4, r0 - str r1, [r2, #0xc] - cmp r6, #0x1000 - beq _020CC8B4 - mul r1, r4, r6 - mov r0, r1, asr #0xb - add r0, r1, r0, lsr #20 - mov r4, r0, asr #0xc -_020CC8B4: - mov r1, #0 - str r1, [r5, #4] - str r1, [r5, #8] - str r1, [r5, #0xc] - str r1, [r5, #0x10] - str r4, [r5, #0x14] - str r1, [r5, #0x18] - str r1, [r5, #0x1c] - str r1, [r5, #0x20] - str r1, [r5, #0x24] - rsb r0, r6, #0 - str r0, [r5, #0x2c] - str r1, [r5, #0x30] - str r1, [r5, #0x34] - str r1, [r5, #0x3c] - bl FX_GetDivResultFx64c - ldr r2, _020CC994 ; =0x04000290 - mov r3, #0 - stmia r2, {r3, r4, r8} - str r3, [r2, #0xc] - cmp r6, #0x1000 - beq _020CC930 - mov r2, r6, asr #0x1f - umull r4, r3, r0, r6 - mla r3, r0, r2, r3 - mla r3, r1, r6, r3 - mov r0, r4 - mov r1, r3 - mov r2, #0x1000 - mov r3, #0 - bl _ll_sdiv -_020CC930: - ldr r4, [sp, #0x18] - mov r2, r7, lsl #1 - add r6, r4, r7 - mov r3, r6, asr #0x1f - umull r8, r7, r0, r6 - mla r7, r0, r3, r7 - smull r4, r3, r2, r4 - mla r7, r1, r6, r7 - adds r2, r8, #0x80000000 - adc r7, r7, #0 - adds r4, r4, #0x800 - adc r2, r3, #0 - mov r3, r4, lsr #0xc - orr r3, r3, r2, lsl #20 - umull r6, r4, r0, r3 - mov r2, r3, asr #0x1f - mla r4, r0, r2, r4 - mla r4, r1, r3, r4 - adds r0, r6, #0x80000000 - str r7, [r5, #0x28] - adc r0, r4, #0 - str r0, [r5, #0x38] - bl FX_GetDivResult - str r0, [r5] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020CC994: .word 0x04000290 - arm_func_end MTX_PerspectiveW - - arm_func_start MTX_OrthoW -MTX_OrthoW: ; 0x020CC998 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - str r2, [sp] - mov sl, r0 - ldr r0, [sp] - mov r2, r3 - sub r0, r2, r0 - ldr r8, [sp, #0x3c] - str r3, [sp, #4] - mov fp, r1 - ldr sb, [sp, #0x38] - bl FX_InvAsync - mov r0, #0 - str r0, [r8, #4] - str r0, [r8, #8] - str r0, [r8, #0xc] - str r0, [r8, #0x10] - str r0, [r8, #0x18] - str r0, [r8, #0x1c] - str r0, [r8, #0x20] - str r0, [r8, #0x24] - str r0, [r8, #0x2c] - str sb, [r8, #0x3c] - bl FX_GetDivResultFx64c - mov r6, r1 - mov r4, r0 - ldr r1, _020CCB9C ; =0x04000290 - mov r3, #0 - mov r2, #0x1000 - str r3, [r1] - sub r0, sl, fp - str r2, [r1, #4] - str r0, [r1, #8] - mov r0, r3 - cmp sb, #0x1000 - str r0, [r1, #0xc] - beq _020CCA48 - mov r5, sb, asr #0x1f - umull r0, r1, r4, sb - mla r1, r4, r5, r1 - mla r1, r6, sb, r1 - bl _ll_sdiv - mov r4, r0 - mov r6, r1 -_020CCA48: - mov r1, r6, lsl #0xd - mov r0, #0x80000000 - orr r1, r1, r4, lsr #19 - adds r0, r0, r4, lsl #13 - adc r0, r1, #0 - str r0, [r8] - bl FX_GetDivResultFx64c - mov r5, r0 - mov r7, r1 - mov r3, #0 - ldr ip, _020CCB9C ; =0x04000290 - ldr r1, [sp, #0x30] - ldr r0, [sp, #0x34] - str r3, [ip] - mov r2, #0x1000 - str r2, [ip, #4] - sub r0, r1, r0 - mov lr, r3 - str r0, [ip, #8] - cmp sb, #0x1000 - str lr, [ip, #0xc] - beq _020CCABC - mov ip, sb, asr #0x1f - umull r0, r1, r5, sb - mla r1, r5, ip, r1 - mla r1, r7, sb, r1 - bl _ll_sdiv - mov r5, r0 - mov r7, r1 -_020CCABC: - mov r1, r7, lsl #0xd - mov r0, #0x80000000 - orr r1, r1, r5, lsr #19 - adds r0, r0, r5, lsl #13 - adc r0, r1, #0 - str r0, [r8, #0x14] - bl FX_GetDivResultFx64c - cmp sb, #0x1000 - beq _020CCB04 - mov r2, sb, asr #0x1f - umull ip, r3, r0, sb - mla r3, r0, r2, r3 - mla r3, r1, sb, r3 - mov r0, ip - mov r1, r3 - mov r2, #0x1000 - mov r3, #0 - bl _ll_sdiv -_020CCB04: - ldr r3, [sp, #4] - ldr r2, [sp] - add r2, r3, r2 - rsb ip, r2, #0 - add r2, sl, fp - rsb r3, r2, #0 - ldr sl, [sp, #0x34] - ldr r2, [sp, #0x30] - mov sb, ip, asr #0x1f - add r2, sl, r2 - umull fp, sl, r4, ip - mla sl, r4, sb, sl - mov r4, #0x80000000 - mla sl, r6, ip, sl - adds r4, r4, r0, lsl #13 - mov sb, r1, lsl #0xd - mov r6, r3, asr #0x1f - umull ip, r4, r5, r3 - mla r4, r5, r6, r4 - orr sb, sb, r0, lsr #19 - mla r4, r7, r3, r4 - adc r3, sb, #0 - str r3, [r8, #0x28] - adds r3, fp, #0x80000000 - adc r7, sl, #0 - adds r3, ip, #0x80000000 - mov r3, r2, asr #0x1f - umull r6, r5, r0, r2 - mla r5, r0, r3, r5 - adc r3, r4, #0 - str r7, [r8, #0x30] - mla r5, r1, r2, r5 - adds r0, r6, #0x80000000 - str r3, [r8, #0x34] - adc r0, r5, #0 - str r0, [r8, #0x38] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020CCB9C: .word 0x04000290 - arm_func_end MTX_OrthoW diff --git a/lib/NitroSDK/asm/fx_sincos.s b/lib/NitroSDK/asm/fx_sincos.s deleted file mode 100644 index f47c973f..00000000 --- a/lib/NitroSDK/asm/fx_sincos.s +++ /dev/null @@ -1,4 +0,0 @@ - .include "asm/macros.inc" - .include "fx_sincos.inc" - .include "global.inc" - .text diff --git a/lib/NitroSDK/asm/fx_trig.s b/lib/NitroSDK/asm/fx_trig.s deleted file mode 100644 index f42bfb00..00000000 --- a/lib/NitroSDK/asm/fx_trig.s +++ /dev/null @@ -1,216 +0,0 @@ - .include "asm/macros.inc" - .include "fx_trig.inc" - .include "global.inc" - .text - - arm_func_start FX_SinFx64c_internal -FX_SinFx64c_internal: ; 0x020CD2FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov lr, #0 - cmp r1, #1 - cmpeq r0, #0 - mov r2, #1 - moveq r1, lr - ldreq r0, _020CD3CC ; =0xB504F334 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - umull r3, ip, r0, r0 - mla ip, r0, r1, ip - mla ip, r1, r0, ip - ldr r4, _020CD3D0 ; =0x02317888 - ldr r5, _020CD3D4 ; =0x03C2857C - umull r3, r8, ip, r4 - umull r3, r7, ip, r5 - mla r8, ip, lr, r8 - mov r3, lr - mla r7, ip, lr, r7 - mla r8, r3, r4, r8 - subs sb, lr, r8 - mla r7, r3, r5, r7 - umull r4, r5, sb, r7 - mla r5, sb, r3, r5 - sbc r8, r2, #0 - mla r5, r8, r7, r5 - subs r8, lr, r5 - ldr r6, _020CD3D8 ; =0x07E54B84 - sbc r7, r2, #0 - umull r4, r5, ip, r6 - mla r5, ip, lr, r5 - mla r5, r3, r6, r5 - umull r4, r6, r8, r5 - mla r6, r8, r3, r6 - mla r6, r7, r5, r6 - subs r8, lr, r6 - sbc r7, r2, #0 - ldr r2, _020CD3DC ; =0x14ABBCE6 - ldr r6, _020CD3E0 ; =0xC90FDAA2 - umull r4, r5, ip, r2 - mla r5, ip, lr, r5 - mla r5, r3, r2, r5 - umull r2, r4, r8, r5 - mla r4, r8, r3, r4 - mla r4, r7, r5, r4 - subs r6, r6, r4 - umull r2, r4, r6, r0 - mla r4, r6, r1, r4 - sbc r5, lr, #0 - mla r4, r5, r0, r4 - mov r0, r4 - mov r1, r3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020CD3CC: .word 0xB504F334 -_020CD3D0: .word 0x02317888 -_020CD3D4: .word 0x03C2857C -_020CD3D8: .word 0x07E54B84 -_020CD3DC: .word 0x14ABBCE6 -_020CD3E0: .word 0xC90FDAA2 - arm_func_end FX_SinFx64c_internal - - arm_func_start FX_CosFx64c_internal -FX_CosFx64c_internal: ; 0x020CD3E4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov ip, #0 - cmp r1, #1 - cmpeq r0, #0 - mov r2, #1 - moveq r1, ip - ldreq r0, _020CD49C ; =0xB504F334 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - umull r4, r3, r0, r0 - mla r3, r0, r1, r3 - mla r3, r1, r0, r3 - ldr r1, _020CD4A0 ; =0x02D1E41D - ldr lr, _020CD4A4 ; =0x054387AD - umull r0, r6, r3, r1 - umull r0, r5, r3, lr - mla r6, r3, ip, r6 - mov r0, ip - mla r5, r3, ip, r5 - mla r6, r0, r1, r6 - subs r8, ip, r6 - mla r5, r0, lr, r5 - umull r1, r6, r8, r5 - ldr r4, _020CD4A8 ; =0x0D28D331 - mla r6, r8, r0, r6 - umull r1, lr, r3, r4 - mla lr, r3, ip, lr - sbc r7, r2, #0 - mla r6, r7, r5, r6 - subs r6, ip, r6 - mla lr, r0, r4, lr - umull r1, r4, r6, lr - mla r4, r6, r0, r4 - sbc r5, r2, #0 - mla r4, r5, lr, r4 - subs r6, ip, r4 - ldr r1, _020CD4AC ; =0x4EF4F327 - sbc r5, r2, #0 - umull r4, lr, r3, r1 - mla lr, r3, ip, lr - mla lr, r0, r1, lr - umull r1, r3, r6, lr - mla r3, r6, r0, r3 - mla r3, r5, lr, r3 - subs r0, ip, r3 - sbc r1, r2, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020CD49C: .word 0xB504F334 -_020CD4A0: .word 0x02D1E41D -_020CD4A4: .word 0x054387AD -_020CD4A8: .word 0x0D28D331 -_020CD4AC: .word 0x4EF4F327 - arm_func_end FX_CosFx64c_internal - - arm_func_start FX_SinFx64c -FX_SinFx64c: ; 0x020CD4B0 - stmdb sp!, {r4, lr} - cmp r0, #0 - bge _020CD4D0 - rsb r0, r0, #0 - bl FX_SinFx64c - rsbs r0, r0, #0 - rsc r1, r1, #0 - ldmia sp!, {r4, pc} -_020CD4D0: - ldr r1, _020CD544 ; =0x45F306DD - mov r2, #1 - umull ip, lr, r0, r1 - mla lr, r0, r2, lr - mov r0, r0, asr #0x1f - mla lr, r0, r1, lr - mov r3, #0 - mov ip, ip, lsr #0xc - mov r4, lr, asr #0xc - orr ip, ip, lr, lsl #20 - sub r0, r3, #1 - tst r4, #1 - and r1, r3, lr, asr #12 - and r0, ip, r0 - beq _020CD514 - subs r0, r3, r0 - sbc r1, r2, r1 -_020CD514: - add r2, r4, #1 - tst r2, #2 - beq _020CD528 - bl FX_CosFx64c_internal - b _020CD52C -_020CD528: - bl FX_SinFx64c_internal -_020CD52C: - and r2, r4, #7 - cmp r2, #3 - ldmleia sp!, {r4, pc} - rsbs r0, r0, #0 - rsc r1, r1, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CD544: .word 0x45F306DD - arm_func_end FX_SinFx64c - - arm_func_start FX_CosFx64c -FX_CosFx64c: ; 0x020CD548 - stmdb sp!, {r4, lr} - cmp r0, #0 - bge _020CD560 - rsb r0, r0, #0 - bl FX_CosFx64c - ldmia sp!, {r4, pc} -_020CD560: - ldr r1, _020CD5D8 ; =0x45F306DD - mov r2, #1 - umull ip, lr, r0, r1 - mla lr, r0, r2, lr - mov r0, r0, asr #0x1f - mla lr, r0, r1, lr - mov r3, #0 - mov ip, ip, lsr #0xc - mov r4, lr, asr #0xc - orr ip, ip, lr, lsl #20 - sub r0, r3, #1 - tst r4, #1 - and r1, r3, lr, asr #12 - and r0, ip, r0 - beq _020CD5A4 - subs r0, r3, r0 - sbc r1, r2, r1 -_020CD5A4: - add r2, r4, #1 - tst r2, #2 - beq _020CD5B8 - bl FX_SinFx64c_internal - b _020CD5BC -_020CD5B8: - bl FX_CosFx64c_internal -_020CD5BC: - add r2, r4, #2 - and r2, r2, #7 - cmp r2, #3 - ldmleia sp!, {r4, pc} - rsbs r0, r0, #0 - rsc r1, r1, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CD5D8: .word 0x45F306DD - arm_func_end FX_CosFx64c diff --git a/lib/NitroSDK/asm/fx_vec.s b/lib/NitroSDK/asm/fx_vec.s deleted file mode 100644 index d512803c..00000000 --- a/lib/NitroSDK/asm/fx_vec.s +++ /dev/null @@ -1,415 +0,0 @@ - .include "asm/macros.inc" - .include "fx_vec.inc" - .include "global.inc" - .text - - arm_func_start VEC_Add -VEC_Add: ; 0x020CCD78 - ldr ip, [r0] - ldr r3, [r1] - add r3, ip, r3 - str r3, [r2] - ldr ip, [r0, #4] - ldr r3, [r1, #4] - add r3, ip, r3 - str r3, [r2, #4] - ldr r3, [r0, #8] - ldr r0, [r1, #8] - add r0, r3, r0 - str r0, [r2, #8] - bx lr - arm_func_end VEC_Add - - arm_func_start VEC_Subtract -VEC_Subtract: ; 0x020CCDAC - ldr ip, [r0] - ldr r3, [r1] - sub r3, ip, r3 - str r3, [r2] - ldr ip, [r0, #4] - ldr r3, [r1, #4] - sub r3, ip, r3 - str r3, [r2, #4] - ldr r3, [r0, #8] - ldr r0, [r1, #8] - sub r0, r3, r0 - str r0, [r2, #8] - bx lr - arm_func_end VEC_Subtract - - arm_func_start VEC_Fx16Add -VEC_Fx16Add: ; 0x020CCDE0 - ldrsh ip, [r0] - ldrsh r3, [r1] - add r3, ip, r3 - strh r3, [r2] - ldrsh ip, [r0, #2] - ldrsh r3, [r1, #2] - add r3, ip, r3 - strh r3, [r2, #2] - ldrsh r3, [r0, #4] - ldrsh r0, [r1, #4] - add r0, r3, r0 - strh r0, [r2, #4] - bx lr - arm_func_end VEC_Fx16Add - - arm_func_start VEC_DotProduct -VEC_DotProduct: ; 0x020CCE14 - stmdb sp!, {r4, lr} - ldr r3, [r0, #4] - ldr r2, [r1, #4] - ldr ip, [r0] - smull r4, lr, r3, r2 - ldr r2, [r1] - ldr r3, [r0, #8] - smlal r4, lr, ip, r2 - ldr r0, [r1, #8] - smlal r4, lr, r3, r0 - adds r0, r4, #0x800 - adc r1, lr, #0 - mov r0, r0, lsr #0xc - orr r0, r0, r1, lsl #20 - ldmia sp!, {r4, pc} - arm_func_end VEC_DotProduct - - arm_func_start VEC_Fx16DotProduct -VEC_Fx16DotProduct: ; 0x020CCE50 - stmdb sp!, {r3, r4, r5, lr} - ldrsh lr, [r0, #2] - ldrsh ip, [r1, #2] - ldrsh r3, [r0, #4] - ldrsh r2, [r1, #4] - ldrsh r5, [r0] - ldrsh r4, [r1] - smulbb r1, lr, ip - smulbb r0, r3, r2 - add r0, r0, #0x800 - smlabb r1, r5, r4, r1 - adds r2, r1, r0 - mov r0, r0, asr #0x1f - adc r1, r0, r1, asr #31 - mov r0, r2, lsr #0xc - orr r0, r0, r1, lsl #20 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end VEC_Fx16DotProduct - - arm_func_start VEC_CrossProduct -VEC_CrossProduct: ; 0x020CCE94 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldmia r0, {r5, lr} - ldr r6, [r1, #8] - ldr r0, [r0, #8] - ldmia r1, {r4, ip} - smull r8, r7, lr, r6 - smull r3, r1, r0, ip - subs r3, r8, r3 - sbc r1, r7, r1 - adds r3, r3, #0x800 - smull r8, r7, r0, r4 - smull r6, r0, r5, r6 - adc r1, r1, #0 - subs r6, r8, r6 - mov r3, r3, lsr #0xc - orr r3, r3, r1, lsl #20 - sbc r7, r7, r0 - adds r0, r6, #0x800 - smull ip, r6, r5, ip - adc r5, r7, #0 - smull r4, r1, lr, r4 - mov r7, r0, lsr #0xc - subs r4, ip, r4 - sbc r0, r6, r1 - adds r1, r4, #0x800 - str r3, [r2] - orr r7, r7, r5, lsl #20 - adc r0, r0, #0 - mov r1, r1, lsr #0xc - str r7, [r2, #4] - orr r1, r1, r0, lsl #20 - str r1, [r2, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end VEC_CrossProduct - - arm_func_start VEC_Fx16CrossProduct -VEC_Fx16CrossProduct: ; 0x020CCF18 - stmdb sp!, {r4, r5, r6, lr} - ldrsh r4, [r1, #4] - ldrsh ip, [r0, #2] - ldrsh lr, [r0] - ldrsh r3, [r1, #2] - ldrsh r6, [r0, #4] - ldrsh r1, [r1] - smulbb r5, ip, r4 - smulbb r0, r6, r3 - sub r0, r5, r0 - add r0, r0, #0x800 - mov r0, r0, asr #0xc - smulbb r5, r6, r1 - smulbb r4, lr, r4 - sub r4, r5, r4 - add r4, r4, #0x800 - smulbb r3, lr, r3 - smulbb r1, ip, r1 - sub r1, r3, r1 - add r1, r1, #0x800 - strh r0, [r2] - mov r0, r4, asr #0xc - strh r0, [r2, #2] - mov r0, r1, asr #0xc - strh r0, [r2, #4] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end VEC_Fx16CrossProduct - - arm_func_start VEC_Mag -VEC_Mag: ; 0x020CCF80 - ldr r1, [r0, #4] - ldr r2, [r0] - smull ip, r3, r1, r1 - smlal ip, r3, r2, r2 - ldr r0, [r0, #8] - ldr r2, _020CCFD8 ; =0x040002B0 - smlal ip, r3, r0, r0 - mov r1, #1 - mov r0, r3, lsl #2 - strh r1, [r2] - mov r1, ip, lsl #2 - str r1, [r2, #8] - orr r0, r0, ip, lsr #30 - str r0, [r2, #0xc] -_020CCFB8: - ldrh r0, [r2] - tst r0, #0x8000 - bne _020CCFB8 - ldr r0, _020CCFDC ; =0x040002B4 - ldr r0, [r0] - add r0, r0, #1 - mov r0, r0, asr #1 - bx lr - .align 2, 0 -_020CCFD8: .word 0x040002B0 -_020CCFDC: .word 0x040002B4 - arm_func_end VEC_Mag - - arm_func_start VEC_Normalize -VEC_Normalize: ; 0x020CCFE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, [r0, #4] - ldr r3, [r0] - smull r6, r5, r2, r2 - smlal r6, r5, r3, r3 - ldr r2, [r0, #8] - ldr r4, _020CD0EC ; =0x04000280 - smlal r6, r5, r2, r2 - mov r3, #2 - strh r3, [r4] - mov r3, #0 - str r3, [r4, #0x10] - mov r3, #0x1000000 - str r3, [r4, #0x14] - str r6, [r4, #0x18] - mov r2, r5, lsl #2 - str r5, [r4, #0x1c] - mov r3, #1 - strh r3, [r4, #0x30] - mov r3, r6, lsl #2 - str r3, [r4, #0x38] - orr r2, r2, r6, lsr #30 - str r2, [r4, #0x3c] -_020CD03C: - ldrh r2, [r4, #0x30] - tst r2, #0x8000 - bne _020CD03C - ldr r2, _020CD0F0 ; =0x040002B4 - ldr ip, [r2] - sub r3, r2, #0x34 -_020CD054: - ldrh r2, [r3] - tst r2, #0x8000 - bne _020CD054 - ldr sb, _020CD0F4 ; =0x040002A0 - ldr r5, [r0] - ldr r8, [sb] - mov r7, ip, asr #0x1f - umull r3, r2, r8, ip - umull r6, lr, r3, r5 - mov r4, r5, asr #0x1f - mla r2, r8, r7, r2 - ldr r7, [sb, #4] - mla lr, r3, r4, lr - mla r2, r7, ip, r2 - mla lr, r2, r5, lr - adds r4, r6, #0 - adc r4, lr, #0x1000 - mov r4, r4, asr #0xd - str r4, [r1] - ldr ip, [r0, #4] - umull r5, lr, r3, ip - mov r4, ip, asr #0x1f - mla lr, r3, r4, lr - mla lr, r2, ip, lr - adds r4, r5, #0 - adc r4, lr, #0x1000 - mov r4, r4, asr #0xd - str r4, [r1, #4] - ldr ip, [r0, #8] - umull r4, lr, r3, ip - mov r0, ip, asr #0x1f - mla lr, r3, r0, lr - mla lr, r2, ip, lr - adds r0, r4, #0 - adc r0, lr, #0x1000 - mov r0, r0, asr #0xd - str r0, [r1, #8] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020CD0EC: .word 0x04000280 -_020CD0F0: .word 0x040002B4 -_020CD0F4: .word 0x040002A0 - arm_func_end VEC_Normalize - - arm_func_start VEC_Fx16Normalize -VEC_Fx16Normalize: ; 0x020CD0F8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldrsh r5, [r0] - ldrsh r2, [r0, #2] - ldrsh r3, [r0, #4] - ldr r4, _020CD218 ; =0x04000280 - smulbb r6, r2, r2 - smulbb r8, r5, r5 - mov r2, #2 - strh r2, [r4] - mov r2, #0 - str r2, [r4, #0x10] - mov r2, #0x1000000 - smulbb r3, r3, r3 - mov r5, r6, asr #0x1f - adds r7, r8, r6 - adc r6, r5, r8, asr #31 - adds r5, r7, r3 - str r2, [r4, #0x14] - adc r3, r6, r3, asr #31 - str r5, [r4, #0x18] - mov r2, r3, lsl #2 - str r3, [r4, #0x1c] - mov r3, #1 - strh r3, [r4, #0x30] - mov r3, r5, lsl #2 - str r3, [r4, #0x38] - orr r2, r2, r5, lsr #30 - str r2, [r4, #0x3c] -_020CD168: - ldrh r2, [r4, #0x30] - tst r2, #0x8000 - bne _020CD168 - ldr r2, _020CD21C ; =0x040002B4 - ldr ip, [r2] - sub r3, r2, #0x34 -_020CD180: - ldrh r2, [r3] - tst r2, #0x8000 - bne _020CD180 - ldr sb, _020CD220 ; =0x040002A0 - ldrsh r5, [r0] - ldr r8, [sb] - mov r7, ip, asr #0x1f - umull r3, r2, r8, ip - umull r6, lr, r3, r5 - mov r4, r5, asr #0x1f - mla r2, r8, r7, r2 - ldr r7, [sb, #4] - mla lr, r3, r4, lr - mla r2, r7, ip, r2 - mla lr, r2, r5, lr - adds r4, r6, #0 - adc r4, lr, #0x1000 - mov r4, r4, asr #0xd - strh r4, [r1] - ldrsh ip, [r0, #2] - umull r5, lr, r3, ip - mov r4, ip, asr #0x1f - mla lr, r3, r4, lr - mla lr, r2, ip, lr - adds r4, r5, #0 - adc r4, lr, #0x1000 - mov r4, r4, asr #0xd - strh r4, [r1, #2] - ldrsh ip, [r0, #4] - umull r4, lr, r3, ip - mov r0, ip, asr #0x1f - mla lr, r3, r0, lr - mla lr, r2, ip, lr - adds r0, r4, #0 - adc r0, lr, #0x1000 - mov r0, r0, asr #0xd - strh r0, [r1, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020CD218: .word 0x04000280 -_020CD21C: .word 0x040002B4 -_020CD220: .word 0x040002A0 - arm_func_end VEC_Fx16Normalize - - arm_func_start VEC_MultAdd -VEC_MultAdd: ; 0x020CD224 - stmdb sp!, {r4, lr} - ldr r4, [r1] - ldr lr, [r2] - smull ip, r4, r0, r4 - mov ip, ip, lsr #0xc - orr ip, ip, r4, lsl #20 - add r4, lr, ip - str r4, [r3] - ldr ip, [r1, #4] - ldr r4, [r2, #4] - smull lr, ip, r0, ip - mov lr, lr, lsr #0xc - orr lr, lr, ip, lsl #20 - add r4, r4, lr - str r4, [r3, #4] - ldr r1, [r1, #8] - ldr ip, [r2, #8] - smull r2, r1, r0, r1 - mov r0, r2, lsr #0xc - orr r0, r0, r1, lsl #20 - add r0, ip, r0 - str r0, [r3, #8] - ldmia sp!, {r4, pc} - arm_func_end VEC_MultAdd - - arm_func_start VEC_Distance -VEC_Distance: ; 0x020CD280 - stmdb sp!, {r4, lr} - ldr r3, [r0, #4] - ldr r2, [r1, #4] - ldr r4, [r0] - sub r2, r3, r2 - smull ip, r3, r2, r2 - ldr lr, [r1] - ldr r2, [r0, #8] - sub r4, r4, lr - ldr r0, [r1, #8] - smlal ip, r3, r4, r4 - sub r0, r2, r0 - smlal ip, r3, r0, r0 - mov r0, r3, lsl #2 - ldr r2, _020CD2F4 ; =0x040002B0 - mov r1, #1 - strh r1, [r2] - mov r1, ip, lsl #2 - str r1, [r2, #8] - orr r0, r0, ip, lsr #30 - str r0, [r2, #0xc] -_020CD2D4: - ldrh r0, [r2] - tst r0, #0x8000 - bne _020CD2D4 - ldr r0, _020CD2F8 ; =0x040002B4 - ldr r0, [r0] - add r0, r0, #1 - mov r0, r0, asr #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CD2F4: .word 0x040002B0 -_020CD2F8: .word 0x040002B4 - arm_func_end VEC_Distance diff --git a/lib/NitroSDK/asm/g2.s b/lib/NitroSDK/asm/g2.s deleted file mode 100644 index c1f1d7ec..00000000 --- a/lib/NitroSDK/asm/g2.s +++ /dev/null @@ -1,100 +0,0 @@ - .include "asm/macros.inc" - .include "g2.inc" - .include "global.inc" - - .text - - arm_func_start G2x_SetBGyAffine_ -G2x_SetBGyAffine_: ; 0x020CF0AC - stmdb sp!, {r4, r5, r6, lr} - ldr r4, [r1, #4] - ldr r5, [r1] - mov ip, r4, lsl #0xc - mov r4, ip, asr #0x10 - mov ip, r5, lsl #0xc - mov lr, r4, lsl #0x10 - mov r5, ip, asr #0x10 - mov r4, lr, lsr #0x10 - mov ip, r5, lsl #0x10 - mov r4, r4, lsl #0x10 - orr r4, r4, ip, lsr #16 - str r4, [r0] - ldr r4, [r1, #0xc] - ldr r5, [r1, #8] - mov ip, r4, lsl #0xc - mov r4, ip, asr #0x10 - mov ip, r5, lsl #0xc - mov lr, r4, lsl #0x10 - mov r6, ip, asr #0x10 - mov r5, lr, lsr #0x10 - ldr r4, [sp, #0x14] - mov ip, r6, lsl #0x10 - mov r5, r5, lsl #0x10 - orr r5, r5, ip, lsr #16 - str r5, [r0, #4] - ldr r6, [sp, #0x10] - ldr ip, [r1, #4] - sub r5, r4, r3 - ldr r4, [r1, #0xc] - mul lr, ip, r5 - mul r5, r4, r5 - ldr ip, [r1] - sub r6, r6, r2 - ldr r4, [r1, #8] - mla r1, ip, r6, lr - mla r5, r4, r6, r5 - add r1, r1, r2, lsl #12 - add r2, r5, r3, lsl #12 - mov r1, r1, asr #4 - str r1, [r0, #8] - mov r1, r2, asr #4 - str r1, [r0, #0xc] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end G2x_SetBGyAffine_ - - arm_func_start G2x_SetBlendAlpha_ -G2x_SetBlendAlpha_: ; 0x020CF15C - ldr ip, [sp] - orr r1, r1, #0x40 - orr r2, r1, r2, lsl #8 - orr r1, r3, ip, lsl #8 - orr r1, r2, r1, lsl #16 - str r1, [r0] - bx lr - arm_func_end G2x_SetBlendAlpha_ - - arm_func_start G2x_SetBlendBrightness_ -G2x_SetBlendBrightness_: ; 0x020CF178 - cmp r2, #0 - orrge r1, r1, #0x80 - strgeh r1, [r0] - strgeh r2, [r0, #4] - bxge lr - orr r1, r1, #0xc0 - strh r1, [r0] - rsb r1, r2, #0 - strh r1, [r0, #4] - bx lr - arm_func_end G2x_SetBlendBrightness_ - - arm_func_start G2x_ChangeBlendBrightness_ -G2x_ChangeBlendBrightness_: ; 0x020CF1A0 - ldrh r3, [r0] - cmp r1, #0 - and r2, r3, #0xc0 - bge _020CF1CC - cmp r2, #0x80 - biceq r2, r3, #0xc0 - orreq r2, r2, #0xc0 - streqh r2, [r0] - rsb r1, r1, #0 - strh r1, [r0, #4] - bx lr -_020CF1CC: - cmp r2, #0xc0 - biceq r2, r3, #0xc0 - orreq r2, r2, #0x80 - streqh r2, [r0] - strh r1, [r0, #4] - bx lr - arm_func_end G2x_ChangeBlendBrightness_ diff --git a/lib/NitroSDK/asm/g3.s b/lib/NitroSDK/asm/g3.s deleted file mode 100644 index 49a75fec..00000000 --- a/lib/NitroSDK/asm/g3.s +++ /dev/null @@ -1,71 +0,0 @@ - .include "asm/macros.inc" - .include "g3.inc" - .include "global.inc" - - .text - - arm_func_start G3_BeginMakeDL -G3_BeginMakeDL: ; 0x020D0D60 - str r2, [r0, #0xc] - str r1, [r0, #8] - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - mov r1, #0 - str r1, [r0, #0x10] - bx lr - arm_func_end G3_BeginMakeDL - - arm_func_start G3_EndMakeDL -G3_EndMakeDL: ; 0x020D0D80 - ldr r3, [r0] - ldr r2, [r0, #8] - cmp r2, r3 - moveq r0, #0 - bxeq lr - and r1, r3, #3 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _020D0DF4 -_020D0DA4: ; jump table - b _020D0DB4 ; case 0 - b _020D0DBC ; case 1 - b _020D0DCC ; case 2 - b _020D0DE0 ; case 3 -_020D0DB4: - sub r0, r3, r2 - bx lr -_020D0DBC: - add r1, r3, #1 - str r1, [r0] - mov r1, #0 - strb r1, [r3] -_020D0DCC: - ldr r3, [r0] - mov r1, #0 - add r2, r3, #1 - str r2, [r0] - strb r1, [r3] -_020D0DE0: - ldr r3, [r0] - mov r1, #0 - add r2, r3, #1 - str r2, [r0] - strb r1, [r3] -_020D0DF4: - ldr r1, [r0, #0x10] - cmp r1, #0 - beq _020D0E18 - ldr r3, [r0, #4] - mov r1, #0 - add r2, r3, #4 - str r2, [r0, #4] - str r1, [r3] - str r1, [r0, #0x10] -_020D0E18: - ldr r1, [r0, #4] - str r1, [r0] - ldr r0, [r0, #8] - sub r0, r1, r0 - bx lr - arm_func_end G3_EndMakeDL diff --git a/lib/NitroSDK/asm/g3_util.s b/lib/NitroSDK/asm/g3_util.s deleted file mode 100644 index 51514707..00000000 --- a/lib/NitroSDK/asm/g3_util.s +++ /dev/null @@ -1,121 +0,0 @@ - .include "asm/macros.inc" - .include "g3_util.inc" - .include "global.inc" - - .public G3_LoadMtx44 - - .text - - arm_func_start G3i_OrthoW_ -G3i_OrthoW_: ; 0x020CFB08 - stmdb sp!, {r4, lr} - sub sp, sp, #0x50 - ldr ip, [sp, #0x58] - ldr lr, [sp, #0x5c] - str ip, [sp] - ldr r4, [sp, #0x68] - ldr ip, [sp, #0x60] - str lr, [sp, #4] - cmp r4, #0 - addeq r4, sp, #0x10 - str ip, [sp, #8] - str r4, [sp, #0xc] - bl MTX_OrthoW - ldr r0, [sp, #0x64] - cmp r0, #0 - addeq sp, sp, #0x50 - ldmeqia sp!, {r4, pc} - ldr r1, _020CFB68 ; =0x04000440 - mov r2, #0 - mov r0, r4 - str r2, [r1] - bl G3_LoadMtx44 - add sp, sp, #0x50 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CFB68: .word 0x04000440 - arm_func_end G3i_OrthoW_ - - arm_func_start G3i_LookAt_ -G3i_LookAt_: ; 0x020CFB6C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x30 - ldr r4, [sp, #0x40] - mov r5, r3 - cmp r4, #0 - addeq r4, sp, #0 - mov r3, r4 - bl MTX_LookAt - cmp r5, #0 - addeq sp, sp, #0x30 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _020CFBB4 ; =0x04000440 - mov r2, #2 - mov r0, r4 - str r2, [r1] - bl G3_LoadMtx43 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020CFBB4: .word 0x04000440 - arm_func_end G3i_LookAt_ - - arm_func_start G3_RotX -G3_RotX: ; 0x020CFBB8 - ldr r3, _020CFBF0 ; =0x04000468 - mov r2, #0x1000 - str r2, [r3] - mov r2, #0 - str r2, [r3] - str r2, [r3] - str r2, [r3] - str r1, [r3] - str r0, [r3] - str r2, [r3] - rsb r0, r0, #0 - str r0, [r3] - str r1, [r3] - bx lr - .align 2, 0 -_020CFBF0: .word 0x04000468 - arm_func_end G3_RotX - - arm_func_start G3_RotY -G3_RotY: ; 0x020CFBF4 - ldr ip, _020CFC2C ; =0x04000468 - mov r3, #0 - str r1, [ip] - str r3, [ip] - rsb r2, r0, #0 - str r2, [ip] - str r3, [ip] - mov r2, #0x1000 - str r2, [ip] - str r3, [ip] - str r0, [ip] - str r3, [ip] - str r1, [ip] - bx lr - .align 2, 0 -_020CFC2C: .word 0x04000468 - arm_func_end G3_RotY - - arm_func_start G3_RotZ -G3_RotZ: ; 0x020CFC30 - ldr r3, _020CFC68 ; =0x04000468 - mov r2, #0 - str r1, [r3] - str r0, [r3] - str r2, [r3] - rsb r0, r0, #0 - str r0, [r3] - str r1, [r3] - str r2, [r3] - str r2, [r3] - str r2, [r3] - mov r0, #0x1000 - str r0, [r3] - bx lr - .align 2, 0 -_020CFC68: .word 0x04000468 - arm_func_end G3_RotZ diff --git a/lib/NitroSDK/asm/g3b.s b/lib/NitroSDK/asm/g3b.s deleted file mode 100644 index 8d8f057b..00000000 --- a/lib/NitroSDK/asm/g3b.s +++ /dev/null @@ -1,259 +0,0 @@ - .include "asm/macros.inc" - .include "g3b.inc" - .include "global.inc" - - .text - - arm_func_start G3BS_LoadMtx44 -G3BS_LoadMtx44: ; 0x020CF1E4 - mov r3, r0 - ldr r0, [r3] - mov r2, #0x16 - str r2, [r0] - mov r0, r1 - ldr ip, _020CF204 ; =MI_Copy64B - ldr r1, [r3, #4] - bx ip - .align 2, 0 -_020CF204: .word MI_Copy64B - arm_func_end G3BS_LoadMtx44 - - arm_func_start G3B_PushMtx -G3B_PushMtx: ; 0x020CF208 - ldr r1, [r0] - mov r2, #0x11 - str r2, [r1] - ldr r1, [r0, #4] - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_PushMtx - - arm_func_start G3B_PopMtx -G3B_PopMtx: ; 0x020CF228 - ldr r2, [r0] - mov r3, #0x12 - str r3, [r2] - ldr r2, [r0, #4] - str r1, [r2] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_PopMtx - - arm_func_start G3B_LoadMtx44 -G3B_LoadMtx44: ; 0x020CF254 - stmdb sp!, {r4, lr} - mov r4, r0 - bl G3BS_LoadMtx44 - ldr r0, [r4, #4] - add r0, r0, #0x40 - str r0, [r4] - add r0, r0, #4 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end G3B_LoadMtx44 - - arm_func_start G3B_Color -G3B_Color: ; 0x020CF278 - ldr r2, [r0] - mov r3, #0x20 - str r3, [r2] - ldr r2, [r0, #4] - str r1, [r2] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_Color - - arm_func_start G3B_Normal -G3B_Normal: ; 0x020CF2A4 - stmdb sp!, {r4, lr} - mov r4, #0x21 - ldr lr, [r0] - rsb ip, r4, #0x420 - str r4, [lr] - mov lr, r3, asr #3 - and r3, ip, r1, asr #3 - mov r2, r2, asr #3 - mov r1, r2, lsl #0x16 - orr r2, r3, r1, lsr #12 - mov ip, lr, lsl #0x16 - ldr r1, [r0, #4] - orr r2, r2, ip, lsr #2 - str r2, [r1] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - ldmia sp!, {r4, pc} - arm_func_end G3B_Normal - - arm_func_start G3B_Vtx -G3B_Vtx: ; 0x020CF2F4 - stmdb sp!, {r3, lr} - ldr ip, [r0] - mov r2, r2, lsl #0x10 - mov lr, #0x23 - str lr, [ip] - mov r2, r2, lsr #0x10 - mov ip, r2, lsl #0x10 - mov r2, r3, lsl #0x10 - mov r1, r1, lsl #0x10 - ldr r3, [r0, #4] - orr r1, ip, r1, lsr #16 - str r1, [r3] - ldr r1, [r0, #4] - mov r2, r2, lsr #0x10 - str r2, [r1, #4] - ldr r1, [r0, #4] - add r1, r1, #8 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - arm_func_end G3B_Vtx - - arm_func_start G3B_PolygonAttr -G3B_PolygonAttr: ; 0x020CF348 - orr r1, r1, r2, lsl #4 - ldr r2, [r0] - mov ip, #0x29 - str ip, [r2] - orr r1, r1, r3, lsl #6 - ldr r2, [sp, #8] - ldr r3, [sp] - orr r1, r2, r1 - orr r2, r1, r3, lsl #24 - ldr ip, [sp, #4] - ldr r1, [r0, #4] - orr r2, r2, ip, lsl #16 - str r2, [r1] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_PolygonAttr - - arm_func_start G3B_MaterialColorDiffAmb -G3B_MaterialColorDiffAmb: ; 0x020CF394 - stmdb sp!, {r3, lr} - ldr ip, [r0] - mov lr, #0x30 - cmp r3, #0 - movne r3, #1 - str lr, [ip] - orr r2, r1, r2, lsl #16 - moveq r3, #0 - ldr r1, [r0, #4] - orr r2, r2, r3, lsl #15 - str r2, [r1] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - arm_func_end G3B_MaterialColorDiffAmb - - arm_func_start G3B_MaterialColorSpecEmi -G3B_MaterialColorSpecEmi: ; 0x020CF3D8 - stmdb sp!, {r3, lr} - ldr ip, [r0] - mov lr, #0x31 - cmp r3, #0 - movne r3, #1 - str lr, [ip] - orr r2, r1, r2, lsl #16 - moveq r3, #0 - ldr r1, [r0, #4] - orr r2, r2, r3, lsl #15 - str r2, [r1] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - arm_func_end G3B_MaterialColorSpecEmi - - arm_func_start G3B_LightVector -G3B_LightVector: ; 0x020CF41C - stmdb sp!, {r3, r4, r5, lr} - ldrsh lr, [sp, #0x10] - ldr ip, _020CF474 ; =0x000003FF - mov r3, r3, asr #3 - and ip, ip, r2, asr #3 - mov r2, r3, lsl #0x16 - mov lr, lr, asr #3 - ldr r4, [r0] - mov r5, #0x32 - str r5, [r4] - mov r3, lr, lsl #0x16 - orr r2, ip, r2, lsr #12 - orr r3, r2, r3, lsr #2 - ldr r2, [r0, #4] - orr r1, r3, r1, lsl #30 - str r1, [r2] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020CF474: .word 0x000003FF - arm_func_end G3B_LightVector - - arm_func_start G3B_LightColor -G3B_LightColor: ; 0x020CF478 - ldr r3, [r0] - mov ip, #0x33 - str ip, [r3] - ldr r3, [r0, #4] - orr r1, r2, r1, lsl #30 - str r1, [r3] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_LightColor - - arm_func_start G3B_Begin -G3B_Begin: ; 0x020CF4A8 - ldr r2, [r0] - mov r3, #0x40 - str r3, [r2] - ldr r2, [r0, #4] - str r1, [r2] - ldr r1, [r0, #4] - add r1, r1, #4 - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_Begin - - arm_func_start G3B_End -G3B_End: ; 0x020CF4D4 - ldr r1, [r0] - mov r2, #0x41 - str r2, [r1] - ldr r1, [r0, #4] - str r1, [r0] - add r1, r1, #4 - str r1, [r0, #4] - bx lr - arm_func_end G3B_End diff --git a/lib/NitroSDK/asm/g3imm.s b/lib/NitroSDK/asm/g3imm.s deleted file mode 100644 index a090c751..00000000 --- a/lib/NitroSDK/asm/g3imm.s +++ /dev/null @@ -1,56 +0,0 @@ - .include "asm/macros.inc" - .include "g3imm.inc" - .include "global.inc" - - .public GX_SendFifo64B - .public GX_SendFifo48B - - .text - - arm_func_start G3_LoadMtx44 -G3_LoadMtx44: ; 0x020CF4F4 - ldr r1, _020CF508 ; =0x04000400 - mov r2, #0x16 - ldr ip, _020CF50C ; =GX_SendFifo64B - str r2, [r1] - bx ip - .align 2, 0 -_020CF508: .word 0x04000400 -_020CF50C: .word GX_SendFifo64B - arm_func_end G3_LoadMtx44 - - arm_func_start G3_LoadMtx43 -G3_LoadMtx43: ; 0x020CF510 - ldr r1, _020CF524 ; =0x04000400 - mov r2, #0x17 - ldr ip, _020CF528 ; =GX_SendFifo48B - str r2, [r1] - bx ip - .align 2, 0 -_020CF524: .word 0x04000400 -_020CF528: .word GX_SendFifo48B - arm_func_end G3_LoadMtx43 - - arm_func_start G3_MultMtx43 -G3_MultMtx43: ; 0x020CF52C - ldr r1, _020CF540 ; =0x04000400 - mov r2, #0x19 - ldr ip, _020CF544 ; =GX_SendFifo48B - str r2, [r1] - bx ip - .align 2, 0 -_020CF540: .word 0x04000400 -_020CF544: .word GX_SendFifo48B - arm_func_end G3_MultMtx43 - - arm_func_start G3_MultMtx33 -G3_MultMtx33: ; 0x020CF548 - ldr r1, _020CF55C ; =0x04000400 - mov r2, #0x1a - ldr ip, _020CF560 ; =MI_Copy36B - str r2, [r1] - bx ip - .align 2, 0 -_020CF55C: .word 0x04000400 -_020CF560: .word MI_Copy36B - arm_func_end G3_MultMtx33 diff --git a/lib/NitroSDK/asm/g3x.s b/lib/NitroSDK/asm/g3x.s deleted file mode 100644 index 1e95cd90..00000000 --- a/lib/NitroSDK/asm/g3x.s +++ /dev/null @@ -1,463 +0,0 @@ - .include "asm/macros.inc" - .include "g3x.inc" - .include "global.inc" - - .public GXi_DmaId - - .text - - arm_func_start G3X_Init -G3X_Init: ; 0x020CF564 - stmdb sp!, {r3, lr} - bl G3X_ClearFifo - ldr r1, _020CF650 ; =0x04000504 - mov r0, #0 - str r0, [r1] -_020CF578: - ldr r0, [r1, #0xfc] - tst r0, #0x8000000 - bne _020CF578 - ldr r0, _020CF654 ; =0x04000060 - mov r2, #0 - strh r2, [r0] - str r2, [r1, #0xfc] - str r2, [r0, #-0x50] - ldrh ip, [r0] - ldr r2, _020CF658 ; =0xFFFFCFFD - ldr r3, _020CF65C ; =0x0000CFFB - orr ip, ip, #0x2000 - strh ip, [r0] - ldrh ip, [r0] - orr ip, ip, #0x1000 - strh ip, [r0] - ldrh ip, [r0] - and r2, ip, r2 - strh r2, [r0] - ldrh r2, [r0] - bic r2, r2, #0x3000 - orr r2, r2, #0x10 - strh r2, [r0] - ldrh r2, [r0] - and r2, r2, r3 - strh r2, [r0] - ldr r0, [r1, #0xfc] - orr r0, r0, #0x8000 - str r0, [r1, #0xfc] - ldr r0, [r1, #0xfc] - bic r0, r0, #0xc0000000 - orr r0, r0, #0x80000000 - str r0, [r1, #0xfc] - bl G3X_InitMtxStack - ldr r1, _020CF660 ; =0x04000350 - mov r2, #0 - ldr r0, _020CF664 ; =0x00007FFF - str r2, [r1] - strh r0, [r1, #4] - strh r2, [r1, #6] - str r2, [r1, #8] - strh r2, [r1, #0xc] - sub r1, r1, #0x348 - ldrh r0, [r1] - bic r0, r0, #3 - strh r0, [r1] - bl G3X_InitTable - ldr r2, _020CF668 ; =0x001F0080 - ldr r1, _020CF66C ; =0x040004A4 - mov r0, #0 - str r2, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_020CF650: .word 0x04000504 -_020CF654: .word 0x04000060 -_020CF658: .word 0xFFFFCFFD -_020CF65C: .word 0x0000CFFB -_020CF660: .word 0x04000350 -_020CF664: .word 0x00007FFF -_020CF668: .word 0x001F0080 -_020CF66C: .word 0x040004A4 - arm_func_end G3X_Init - - arm_func_start G3X_Reset -G3X_Reset: ; 0x020CF670 - stmdb sp!, {r3, lr} - ldr r2, _020CF6CC ; =0x04000600 -_020CF678: - ldr r0, [r2] - tst r0, #0x8000000 - bne _020CF678 - ldr r0, [r2] - ldr r1, _020CF6D0 ; =0x04000060 - orr r0, r0, #0x8000 - str r0, [r2] - ldrh r0, [r1] - orr r0, r0, #0x2000 - strh r0, [r1] - ldrh r0, [r1] - orr r0, r0, #0x1000 - strh r0, [r1] - bl G3X_ResetMtxStack - ldr r2, _020CF6D4 ; =0x001F0080 - ldr r1, _020CF6D8 ; =0x040004A4 - mov r0, #0 - str r2, [r1] - str r0, [r1, #4] - str r0, [r1, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_020CF6CC: .word 0x04000600 -_020CF6D0: .word 0x04000060 -_020CF6D4: .word 0x001F0080 -_020CF6D8: .word 0x040004A4 - arm_func_end G3X_Reset - - arm_func_start G3X_ClearFifo -G3X_ClearFifo: ; 0x020CF6DC - stmdb sp!, {r3, lr} - ldr r0, _020CF6FC ; =0x04000400 - bl GXi_NopClearFifo128_ - ldr r1, _020CF700 ; =0x04000600 -_020CF6EC: - ldr r0, [r1] - tst r0, #0x8000000 - bne _020CF6EC - ldmia sp!, {r3, pc} - .align 2, 0 -_020CF6FC: .word 0x04000400 -_020CF700: .word 0x04000600 - arm_func_end G3X_ClearFifo - - arm_func_start G3X_InitMtxStack -G3X_InitMtxStack: ; 0x020CF704 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _020CF790 ; =0x04000600 - ldr r0, [r1] - orr r0, r0, #0x8000 - str r0, [r1] - add r4, sp, #4 -_020CF720: - mov r0, r4 - bl G3X_GetMtxStackLevelPV - cmp r0, #0 - bne _020CF720 - add r4, sp, #0 -_020CF734: - mov r0, r4 - bl G3X_GetMtxStackLevelPJ - cmp r0, #0 - bne _020CF734 - ldr r1, _020CF794 ; =0x04000440 - mov r0, #3 - str r0, [r1] - mov r0, #0 - str r0, [r1, #0x14] - str r0, [r1] - ldr r0, [sp] - mov r2, #0 - cmp r0, #0 - strne r0, [r1, #8] - ldr r1, _020CF798 ; =0x04000454 - mov r0, #2 - str r2, [r1] - str r0, [r1, #-0x14] - ldr r0, [sp, #4] - str r0, [r1, #-0xc] - str r2, [r1] - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CF790: .word 0x04000600 -_020CF794: .word 0x04000440 -_020CF798: .word 0x04000454 - arm_func_end G3X_InitMtxStack - - arm_func_start G3X_ResetMtxStack -G3X_ResetMtxStack: ; 0x020CF79C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _020CF824 ; =0x04000600 - ldr r0, [r1] - orr r0, r0, #0x8000 - str r0, [r1] - add r4, sp, #4 -_020CF7B8: - mov r0, r4 - bl G3X_GetMtxStackLevelPV - cmp r0, #0 - bne _020CF7B8 - add r4, sp, #0 -_020CF7CC: - mov r0, r4 - bl G3X_GetMtxStackLevelPJ - cmp r0, #0 - bne _020CF7CC - ldr r1, _020CF828 ; =0x04000440 - mov r0, #3 - str r0, [r1] - mov r0, #0 - str r0, [r1, #0x14] - str r0, [r1] - ldr r0, [sp] - ldr r2, _020CF828 ; =0x04000440 - cmp r0, #0 - strne r0, [r1, #8] - mov r0, #2 - str r0, [r2] - ldr r1, [sp, #4] - mov r0, #0 - str r1, [r2, #8] - str r0, [r2, #0x14] - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CF824: .word 0x04000600 -_020CF828: .word 0x04000440 - arm_func_end G3X_ResetMtxStack - - arm_func_start G3X_SetFog -G3X_SetFog: ; 0x020CF82C - cmp r0, #0 - beq _020CF860 - ldr ip, _020CF878 ; =0x0400035C - mov r0, r1, lsl #6 - strh r3, [ip] - sub r3, ip, #0x2fc - ldrh r1, [r3] - orr r0, r0, r2, lsl #8 - orr r0, r0, #0x80 - bic r1, r1, #0x3f40 - orr r0, r1, r0 - strh r0, [r3] - bx lr -_020CF860: - ldr r2, _020CF87C ; =0x04000060 - ldr r0, _020CF880 ; =0x0000CF7F - ldrh r1, [r2] - and r0, r1, r0 - strh r0, [r2] - bx lr - .align 2, 0 -_020CF878: .word 0x0400035C -_020CF87C: .word 0x04000060 -_020CF880: .word 0x0000CF7F - arm_func_end G3X_SetFog - - arm_func_start G3X_GetClipMtx -G3X_GetClipMtx: ; 0x020CF884 - stmdb sp!, {r3, lr} - ldr r2, _020CF8B0 ; =0x04000600 - mov r1, r0 - ldr r0, [r2] - tst r0, #0x8000000 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x40 - bl MI_Copy64B - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CF8B0: .word 0x04000600 - arm_func_end G3X_GetClipMtx - - arm_func_start G3X_GetVectorMtx -G3X_GetVectorMtx: ; 0x020CF8B4 - stmdb sp!, {r3, lr} - ldr r2, _020CF8E0 ; =0x04000600 - mov r1, r0 - ldr r0, [r2] - tst r0, #0x8000000 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x80 - bl MI_Copy36B - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CF8E0: .word 0x04000600 - arm_func_end G3X_GetVectorMtx - - arm_func_start G3X_SetEdgeColorTable -G3X_SetEdgeColorTable: ; 0x020CF8E4 - ldr ip, _020CF8F4 ; =MIi_CpuCopy16 - ldr r1, _020CF8F8 ; =0x04000330 - mov r2, #0x10 - bx ip - .align 2, 0 -_020CF8F4: .word MIi_CpuCopy16 -_020CF8F8: .word 0x04000330 - arm_func_end G3X_SetEdgeColorTable - - arm_func_start G3X_SetFogTable -G3X_SetFogTable: ; 0x020CF8FC - ldr ip, _020CF908 ; =MI_Copy32B - ldr r1, _020CF90C ; =0x04000360 - bx ip - .align 2, 0 -_020CF908: .word MI_Copy32B -_020CF90C: .word 0x04000360 - arm_func_end G3X_SetFogTable - - arm_func_start G3X_SetClearColor -G3X_SetClearColor: ; 0x020CF910 - ldr ip, [sp] - orr r0, r0, r1, lsl #16 - orr r1, r0, r3, lsl #24 - cmp ip, #0 - ldr r0, _020CF934 ; =0x04000350 - orrne r1, r1, #0x8000 - str r1, [r0] - strh r2, [r0, #4] - bx lr - .align 2, 0 -_020CF934: .word 0x04000350 - arm_func_end G3X_SetClearColor - - arm_func_start G3X_InitTable -G3X_InitTable: ; 0x020CF938 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _020CF9C8 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - ldr r1, _020CF9CC ; =0x04000330 - beq _020CF988 - mov r2, #0 - str r2, [sp] - mov r3, #0x10 - str r2, [sp, #4] - bl MI_DmaFill32Async - ldr r0, _020CF9C8 ; =GXi_DmaId - ldr r1, _020CF9D0 ; =0x04000360 - ldr r0, [r0] - mov r2, #0 - mov r3, #0x60 - bl MI_DmaFill32 - b _020CF9A4 -_020CF988: - mov r0, #0 - mov r2, #0x10 - bl MIi_CpuClear32 - ldr r1, _020CF9D0 ; =0x04000360 - mov r0, #0 - mov r2, #0x60 - bl MIi_CpuClear32 -_020CF9A4: - mov r2, #0 - ldr r0, _020CF9D4 ; =0x040004D0 - mov r1, r2 -_020CF9B0: - add r2, r2, #1 - str r1, [r0] - cmp r2, #0x20 - blt _020CF9B0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CF9C8: .word GXi_DmaId -_020CF9CC: .word 0x04000330 -_020CF9D0: .word 0x04000360 -_020CF9D4: .word 0x040004D0 - arm_func_end G3X_InitTable - - arm_func_start G3X_GetMtxStackLevelPV -G3X_GetMtxStackLevelPV: ; 0x020CF9D8 - ldr r2, _020CFA04 ; =0x04000600 - ldr r1, [r2] - tst r1, #0x4000 - mvnne r0, #0 - bxne lr - ldr r1, [r2] - and r1, r1, #0x1f00 - mov r1, r1, lsr #8 - str r1, [r0] - mov r0, #0 - bx lr - .align 2, 0 -_020CFA04: .word 0x04000600 - arm_func_end G3X_GetMtxStackLevelPV - - arm_func_start G3X_GetMtxStackLevelPJ -G3X_GetMtxStackLevelPJ: ; 0x020CFA08 - ldr r2, _020CFA34 ; =0x04000600 - ldr r1, [r2] - tst r1, #0x4000 - mvnne r0, #0 - bxne lr - ldr r1, [r2] - and r1, r1, #0x2000 - mov r1, r1, lsr #0xd - str r1, [r0] - mov r0, #0 - bx lr - .align 2, 0 -_020CFA34: .word 0x04000600 - arm_func_end G3X_GetMtxStackLevelPJ - - arm_func_start G3X_GetBoxTestResult -G3X_GetBoxTestResult: ; 0x020CFA38 - ldr r2, _020CFA60 ; =0x04000600 - ldr r1, [r2] - tst r1, #1 - mvnne r0, #0 - bxne lr - ldr r1, [r2] - and r1, r1, #2 - str r1, [r0] - mov r0, #0 - bx lr - .align 2, 0 -_020CFA60: .word 0x04000600 - arm_func_end G3X_GetBoxTestResult - - arm_func_start G3X_SetHOffset -G3X_SetHOffset: ; 0x020CFA64 - ldr r1, _020CFA70 ; =0x04000010 - str r0, [r1] - bx lr - .align 2, 0 -_020CFA70: .word 0x04000010 - arm_func_end G3X_SetHOffset - - arm_func_start GXi_NopClearFifo128_ -GXi_NopClearFifo128_: ; 0x020CFA74 - mov r1, #0 - mov r2, #0 - mov r3, #0 - mov ip, #0 - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - stmia r0, {r1, r2, r3, ip} - bx lr - arm_func_end GXi_NopClearFifo128_ diff --git a/lib/NitroSDK/asm/gx.s b/lib/NitroSDK/asm/gx.s deleted file mode 100644 index 03327381..00000000 --- a/lib/NitroSDK/asm/gx.s +++ /dev/null @@ -1,273 +0,0 @@ - .include "asm/macros.inc" - .include "gx.inc" - .include "global.inc" - - .bss - -sDispMode: - .space 2 - - .public GXi_VRamLockId -GXi_VRamLockId: - .space 2 - - .data - - .public sIsDispOn -sIsDispOn: - .word 1 - .public GXi_DmaId -GXi_DmaId: - .word 3 - - .text - - arm_func_start GX_Init -GX_Init: ; 0x020CD7C4 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _020CD8EC ; =0x04000304 - ldr r0, _020CD8F0 ; =0xFFFFFDF1 - ldrh r1, [r2] - orr r1, r1, #0x8000 - strh r1, [r2] - ldrh r1, [r2] - and r0, r1, r0 - orr r0, r0, #0xe - orr r0, r0, #0x200 - strh r0, [r2] - ldrh r0, [r2] - orr r0, r0, #1 - strh r0, [r2] - bl GX_InitGXState - ldr r5, _020CD8F4 ; =GXi_VRamLockId - 2 - ldrh r0, [r5, #2] - cmp r0, #0 - bne _020CD838 - mvn r4, #2 -_020CD814: - bl OS_GetLockID - mov r6, r0 - cmp r6, r4 - bne _020CD828 - bl OS_Terminate -_020CD828: - strh r6, [r5, #2] - ldrh r0, [r5, #2] - cmp r0, #0 - beq _020CD814 -_020CD838: - ldr r0, _020CD8F8 ; =0x04000004 - mov r2, #0 - mov r3, #0x4000000 - strh r2, [r0] - ldr r0, _020CD8FC ; =sIsDispOn - str r2, [r3] - ldr r0, [r0, #4] - sub r1, r3, #0x4000001 - cmp r0, r1 - beq _020CD890 - add r1, r3, #8 - mov r3, #0x60 - bl MI_DmaFill32 - ldr r1, _020CD900 ; =0x0400006C - mov r2, #0 - ldr r0, _020CD8FC ; =sIsDispOn - strh r2, [r1] - ldr r0, [r0, #4] - ldr r1, _020CD904 ; =0x04001000 - mov r3, #0x70 - bl MI_DmaFill32 - b _020CD8B8 -_020CD890: - mov r0, r2 - add r1, r3, #8 - mov r2, #0x60 - bl MIi_CpuClear32 - ldr r3, _020CD900 ; =0x0400006C - mov r0, #0 - ldr r1, _020CD904 ; =0x04001000 - mov r2, #0x70 - strh r0, [r3] - bl MIi_CpuClear32 -_020CD8B8: - ldr r0, _020CD908 ; =0x04000020 - mov r2, #0x100 - strh r2, [r0] - strh r2, [r0, #6] - strh r2, [r0, #0x10] - strh r2, [r0, #0x16] - add r1, r0, #0x1000 - ldr r0, _020CD90C ; =0x04001026 - strh r2, [r1] - strh r2, [r0] - strh r2, [r0, #0xa] - strh r2, [r0, #0x10] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020CD8EC: .word 0x04000304 -_020CD8F0: .word 0xFFFFFDF1 -_020CD8F4: .word GXi_VRamLockId - 2 -_020CD8F8: .word 0x04000004 -_020CD8FC: .word sIsDispOn -_020CD900: .word 0x0400006C -_020CD904: .word 0x04001000 -_020CD908: .word 0x04000020 -_020CD90C: .word 0x04001026 - arm_func_end GX_Init - - arm_func_start GX_HBlankIntr -GX_HBlankIntr: ; 0x020CD910 - ldr r2, _020CD940 ; =0x04000004 - cmp r0, #0 - ldrh r0, [r2] - ldreqh r1, [r2] - and r0, r0, #0x10 - biceq r1, r1, #0x10 - streqh r1, [r2] - bxeq lr - ldrh r1, [r2] - orr r1, r1, #0x10 - strh r1, [r2] - bx lr - .align 2, 0 -_020CD940: .word 0x04000004 - arm_func_end GX_HBlankIntr - - arm_func_start GX_VBlankIntr -GX_VBlankIntr: ; 0x020CD944 - ldr r2, _020CD974 ; =0x04000004 - cmp r0, #0 - ldrh r0, [r2] - ldreqh r1, [r2] - and r0, r0, #8 - biceq r1, r1, #8 - streqh r1, [r2] - bxeq lr - ldrh r1, [r2] - orr r1, r1, #8 - strh r1, [r2] - bx lr - .align 2, 0 -_020CD974: .word 0x04000004 - arm_func_end GX_VBlankIntr - - arm_func_start GX_DispOff -GX_DispOff: ; 0x020CD978 - stmdb sp!, {r3, lr} - mov lr, #0x4000000 - ldr ip, [lr] - ldr r1, _020CD9AC ; =sIsDispOn - and r2, ip, #0x30000 - mov r3, #0 - ldr r0, _020CD9B0 ; =sDispMode - mov r2, r2, lsr #0x10 - strh r3, [r1] - strh r2, [r0] - bic r0, ip, #0x30000 - str r0, [lr] - ldmia sp!, {r3, pc} - .align 2, 0 -_020CD9AC: .word sIsDispOn -_020CD9B0: .word sDispMode - arm_func_end GX_DispOff - - arm_func_start GX_DispOn -GX_DispOn: ; 0x020CD9B4 - ldr r0, _020CD9F4 ; =sDispMode - ldr r1, _020CD9F8 ; =sIsDispOn - ldrh r2, [r0] - mov r0, #1 - strh r0, [r1] - mov r1, #0x4000000 - cmp r2, #0 - ldreq r0, [r1] - orreq r0, r0, #0x10000 - streq r0, [r1] - bxeq lr - ldr r0, [r1] - bic r0, r0, #0x30000 - orr r0, r0, r2, lsl #16 - str r0, [r1] - bx lr - .align 2, 0 -_020CD9F4: .word sDispMode -_020CD9F8: .word sIsDispOn - arm_func_end GX_DispOn - - arm_func_start GX_SetGraphicsMode -GX_SetGraphicsMode: ; 0x020CD9FC - stmdb sp!, {r3, lr} - ldr r3, _020CDA58 ; =sIsDispOn - mov lr, #0x4000000 - ldrh ip, [r3] - ldr lr, [lr] - ldr r3, _020CDA5C ; =sDispMode - cmp ip, #0 - strh r0, [r3] - ldr r3, _020CDA60 ; =0xFFF0FFF0 - moveq r0, #0 - and r3, lr, r3 - orr r0, r3, r0, lsl #16 - orr r0, r1, r0 - orr r1, r0, r2, lsl #3 - mov ip, #0x4000000 - ldr r0, _020CDA5C ; =sDispMode - str r1, [ip] - ldrh r0, [r0] - cmp r0, #0 - ldreq r0, _020CDA58 ; =sIsDispOn - moveq r1, #0 - streqh r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_020CDA58: .word sIsDispOn -_020CDA5C: .word sDispMode -_020CDA60: .word 0xFFF0FFF0 - arm_func_end GX_SetGraphicsMode - - arm_func_start GXS_SetGraphicsMode -GXS_SetGraphicsMode: ; 0x020CDA64 - ldr r2, _020CDA7C ; =0x04001000 - ldr r1, [r2] - bic r1, r1, #7 - orr r0, r1, r0 - str r0, [r2] - bx lr - .align 2, 0 -_020CDA7C: .word 0x04001000 - arm_func_end GXS_SetGraphicsMode - - arm_func_start GXx_SetMasterBrightness_ -GXx_SetMasterBrightness_: ; 0x020CDA80 - cmp r1, #0 - moveq r1, #0 - streqh r1, [r0] - bxeq lr - orrgt r1, r1, #0x4000 - strgth r1, [r0] - rsble r1, r1, #0 - orrle r1, r1, #0x8000 - strleh r1, [r0] - bx lr - arm_func_end GXx_SetMasterBrightness_ - - arm_func_start GXx_GetMasterBrightness_ -GXx_GetMasterBrightness_: ; 0x020CDAA8 - ldrh r1, [r0] - and r1, r1, #0xc000 - mov r1, r1, lsl #0x10 - movs r1, r1, lsr #0x10 - moveq r0, #0 - bxeq lr - cmp r1, #0x4000 - ldreqh r0, [r0] - andeq r0, r0, #0x1f - bxeq lr - cmp r1, #0x8000 - movne r0, #0 - bxne lr - ldrh r0, [r0] - and r0, r0, #0x1f - rsb r0, r0, #0 - bx lr - arm_func_end GXx_GetMasterBrightness_ diff --git a/lib/NitroSDK/asm/gx_bgcnt.s b/lib/NitroSDK/asm/gx_bgcnt.s deleted file mode 100644 index cd5e73d0..00000000 --- a/lib/NitroSDK/asm/gx_bgcnt.s +++ /dev/null @@ -1,393 +0,0 @@ - .include "asm/macros.inc" - .include "gx_bgcnt.inc" - .include "global.inc" - - .text - - arm_func_start G2_GetBG0ScrPtr -G2_GetBG0ScrPtr: ; 0x020CEC3C - ldr r1, _020CEC6C ; =0x04000008 - mov r0, #0x4000000 - ldrh r1, [r1] - ldr r0, [r0] - and r0, r0, #0x38000000 - mov r0, r0, lsr #0x1b - and r1, r1, #0x1f00 - mov r0, r0, lsl #0x10 - mov r1, r1, asr #8 - add r0, r0, #0x6000000 - add r0, r0, r1, lsl #11 - bx lr - .align 2, 0 -_020CEC6C: .word 0x04000008 - arm_func_end G2_GetBG0ScrPtr - - arm_func_start G2S_GetBG0ScrPtr -G2S_GetBG0ScrPtr: ; 0x020CEC70 - ldr r0, _020CEC8C ; =0x04001008 - ldrh r0, [r0] - and r0, r0, #0x1f00 - mov r0, r0, asr #8 - mov r0, r0, lsl #0xb - add r0, r0, #0x6200000 - bx lr - .align 2, 0 -_020CEC8C: .word 0x04001008 - arm_func_end G2S_GetBG0ScrPtr - - arm_func_start G2_GetBG1ScrPtr -G2_GetBG1ScrPtr: ; 0x020CEC90 - ldr r1, _020CECC0 ; =0x0400000A - mov r0, #0x4000000 - ldrh r1, [r1] - ldr r0, [r0] - and r0, r0, #0x38000000 - mov r0, r0, lsr #0x1b - and r1, r1, #0x1f00 - mov r0, r0, lsl #0x10 - mov r1, r1, asr #8 - add r0, r0, #0x6000000 - add r0, r0, r1, lsl #11 - bx lr - .align 2, 0 -_020CECC0: .word 0x0400000A - arm_func_end G2_GetBG1ScrPtr - - arm_func_start G2S_GetBG1ScrPtr -G2S_GetBG1ScrPtr: ; 0x020CECC4 - ldr r0, _020CECE0 ; =0x0400100A - ldrh r0, [r0] - and r0, r0, #0x1f00 - mov r0, r0, asr #8 - mov r0, r0, lsl #0xb - add r0, r0, #0x6200000 - bx lr - .align 2, 0 -_020CECE0: .word 0x0400100A - arm_func_end G2S_GetBG1ScrPtr - - arm_func_start G2_GetBG2ScrPtr -G2_GetBG2ScrPtr: ; 0x020CECE4 - mov r0, #0x4000000 - ldr r1, [r0] - ldrh r3, [r0, #0xc] - ldr r0, [r0] - and ip, r1, #7 - and r0, r0, #0x38000000 - mov r1, r0, lsr #0x1b - and r0, r3, #0x1f00 - mov r2, r1, lsl #0x10 - cmp ip, #6 - mov r1, r0, lsr #8 - addls pc, pc, ip, lsl #2 - b _020CED60 -_020CED18: ; jump table - b _020CED34 ; case 0 - b _020CED34 ; case 1 - b _020CED34 ; case 2 - b _020CED34 ; case 3 - b _020CED34 ; case 4 - b _020CED40 ; case 5 - b _020CED58 ; case 6 -_020CED34: - add r0, r2, #0x6000000 - add r0, r0, r1, lsl #11 - bx lr -_020CED40: - tst r3, #0x80 - movne r0, r1, lsl #0xe - addne r0, r0, #0x6000000 - addeq r0, r2, #0x6000000 - addeq r0, r0, r1, lsl #11 - bx lr -_020CED58: - mov r0, #0x6000000 - bx lr -_020CED60: - mov r0, #0 - bx lr - arm_func_end G2_GetBG2ScrPtr - - arm_func_start G2S_GetBG2ScrPtr -G2S_GetBG2ScrPtr: ; 0x020CED68 - ldr r1, _020CEDD8 ; =0x04001000 - ldr r0, [r1] - ldrh r1, [r1, #0xc] - and r2, r0, #7 - cmp r2, #6 - and r0, r1, #0x1f00 - mov r0, r0, lsr #8 - addls pc, pc, r2, lsl #2 - b _020CEDD0 -_020CED8C: ; jump table - b _020CEDA8 ; case 0 - b _020CEDA8 ; case 1 - b _020CEDA8 ; case 2 - b _020CEDA8 ; case 3 - b _020CEDA8 ; case 4 - b _020CEDB4 ; case 5 - b _020CEDC8 ; case 6 -_020CEDA8: - mov r0, r0, lsl #0xb - add r0, r0, #0x6200000 - bx lr -_020CEDB4: - tst r1, #0x80 - movne r0, r0, lsl #0xe - moveq r0, r0, lsl #0xb - add r0, r0, #0x6200000 - bx lr -_020CEDC8: - mov r0, #0 - bx lr -_020CEDD0: - mov r0, #0 - bx lr - .align 2, 0 -_020CEDD8: .word 0x04001000 - arm_func_end G2S_GetBG2ScrPtr - - arm_func_start G2_GetBG3ScrPtr -G2_GetBG3ScrPtr: ; 0x020CEDDC - mov r0, #0x4000000 - ldr r1, [r0] - ldrh r3, [r0, #0xe] - ldr r0, [r0] - and ip, r1, #7 - and r0, r0, #0x38000000 - mov r1, r0, lsr #0x1b - and r0, r3, #0x1f00 - mov r2, r1, lsl #0x10 - cmp ip, #6 - mov r1, r0, lsr #8 - addls pc, pc, ip, lsl #2 - b _020CEE58 -_020CEE10: ; jump table - b _020CEE2C ; case 0 - b _020CEE2C ; case 1 - b _020CEE2C ; case 2 - b _020CEE38 ; case 3 - b _020CEE38 ; case 4 - b _020CEE38 ; case 5 - b _020CEE50 ; case 6 -_020CEE2C: - add r0, r2, #0x6000000 - add r0, r0, r1, lsl #11 - bx lr -_020CEE38: - tst r3, #0x80 - movne r0, r1, lsl #0xe - addne r0, r0, #0x6000000 - addeq r0, r2, #0x6000000 - addeq r0, r0, r1, lsl #11 - bx lr -_020CEE50: - mov r0, #0 - bx lr -_020CEE58: - mov r0, #0 - bx lr - arm_func_end G2_GetBG3ScrPtr - - arm_func_start G2S_GetBG3ScrPtr -G2S_GetBG3ScrPtr: ; 0x020CEE60 - ldr r1, _020CEED0 ; =0x04001000 - ldr r0, [r1] - ldrh r1, [r1, #0xe] - and r2, r0, #7 - cmp r2, #6 - and r0, r1, #0x1f00 - mov r0, r0, lsr #8 - addls pc, pc, r2, lsl #2 - b _020CEEC8 -_020CEE84: ; jump table - b _020CEEA0 ; case 0 - b _020CEEA0 ; case 1 - b _020CEEA0 ; case 2 - b _020CEEAC ; case 3 - b _020CEEAC ; case 4 - b _020CEEAC ; case 5 - b _020CEEC0 ; case 6 -_020CEEA0: - mov r0, r0, lsl #0xb - add r0, r0, #0x6200000 - bx lr -_020CEEAC: - tst r1, #0x80 - movne r0, r0, lsl #0xe - moveq r0, r0, lsl #0xb - add r0, r0, #0x6200000 - bx lr -_020CEEC0: - mov r0, #0 - bx lr -_020CEEC8: - mov r0, #0 - bx lr - .align 2, 0 -_020CEED0: .word 0x04001000 - arm_func_end G2S_GetBG3ScrPtr - - arm_func_start G2_GetBG0CharPtr -G2_GetBG0CharPtr: ; 0x020CEED4 - ldr r1, _020CEF04 ; =0x04000008 - mov r0, #0x4000000 - ldrh r1, [r1] - ldr r0, [r0] - and r0, r0, #0x7000000 - mov r0, r0, lsr #0x18 - and r1, r1, #0x3c - mov r0, r0, lsl #0x10 - mov r1, r1, asr #2 - add r0, r0, #0x6000000 - add r0, r0, r1, lsl #14 - bx lr - .align 2, 0 -_020CEF04: .word 0x04000008 - arm_func_end G2_GetBG0CharPtr - - arm_func_start G2S_GetBG0CharPtr -G2S_GetBG0CharPtr: ; 0x020CEF08 - ldr r0, _020CEF24 ; =0x04001008 - ldrh r0, [r0] - and r0, r0, #0x3c - mov r0, r0, asr #2 - mov r0, r0, lsl #0xe - add r0, r0, #0x6200000 - bx lr - .align 2, 0 -_020CEF24: .word 0x04001008 - arm_func_end G2S_GetBG0CharPtr - - arm_func_start G2_GetBG1CharPtr -G2_GetBG1CharPtr: ; 0x020CEF28 - ldr r1, _020CEF58 ; =0x0400000A - mov r0, #0x4000000 - ldrh r1, [r1] - ldr r0, [r0] - and r0, r0, #0x7000000 - mov r0, r0, lsr #0x18 - and r1, r1, #0x3c - mov r0, r0, lsl #0x10 - mov r1, r1, asr #2 - add r0, r0, #0x6000000 - add r0, r0, r1, lsl #14 - bx lr - .align 2, 0 -_020CEF58: .word 0x0400000A - arm_func_end G2_GetBG1CharPtr - - arm_func_start G2S_GetBG1CharPtr -G2S_GetBG1CharPtr: ; 0x020CEF5C - ldr r0, _020CEF78 ; =0x0400100A - ldrh r0, [r0] - and r0, r0, #0x3c - mov r0, r0, asr #2 - mov r0, r0, lsl #0xe - add r0, r0, #0x6200000 - bx lr - .align 2, 0 -_020CEF78: .word 0x0400100A - arm_func_end G2S_GetBG1CharPtr - - arm_func_start G2_GetBG2CharPtr -G2_GetBG2CharPtr: ; 0x020CEF7C - mov r1, #0x4000000 - ldr r0, [r1] - ldrh r2, [r1, #0xc] - and r0, r0, #7 - cmp r0, #5 - blt _020CEF9C - tst r2, #0x80 - bne _020CEFC4 -_020CEF9C: - mov r0, #0x4000000 - ldr r1, [r0] - and r0, r2, #0x3c - and r1, r1, #0x7000000 - mov r1, r1, lsr #0x18 - mov r1, r1, lsl #0x10 - add r1, r1, #0x6000000 - mov r0, r0, lsr #2 - add r0, r1, r0, lsl #14 - bx lr -_020CEFC4: - mov r0, #0 - bx lr - arm_func_end G2_GetBG2CharPtr - - arm_func_start G2S_GetBG2CharPtr -G2S_GetBG2CharPtr: ; 0x020CEFCC - ldr r1, _020CF008 ; =0x04001000 - ldr r0, [r1] - ldrh r1, [r1, #0xc] - and r0, r0, #7 - cmp r0, #5 - blt _020CEFEC - tst r1, #0x80 - bne _020CF000 -_020CEFEC: - and r0, r1, #0x3c - mov r0, r0, lsr #2 - mov r0, r0, lsl #0xe - add r0, r0, #0x6200000 - bx lr -_020CF000: - mov r0, #0 - bx lr - .align 2, 0 -_020CF008: .word 0x04001000 - arm_func_end G2S_GetBG2CharPtr - - arm_func_start G2_GetBG3CharPtr -G2_GetBG3CharPtr: ; 0x020CF00C - mov r1, #0x4000000 - ldr r0, [r1] - ldrh r2, [r1, #0xe] - and r0, r0, #7 - cmp r0, #3 - blt _020CF034 - cmp r0, #6 - bge _020CF05C - tst r2, #0x80 - bne _020CF05C -_020CF034: - mov r0, #0x4000000 - ldr r1, [r0] - and r0, r2, #0x3c - and r1, r1, #0x7000000 - mov r1, r1, lsr #0x18 - mov r1, r1, lsl #0x10 - add r1, r1, #0x6000000 - mov r0, r0, lsr #2 - add r0, r1, r0, lsl #14 - bx lr -_020CF05C: - mov r0, #0 - bx lr - arm_func_end G2_GetBG3CharPtr - - arm_func_start G2S_GetBG3CharPtr -G2S_GetBG3CharPtr: ; 0x020CF064 - ldr r1, _020CF0A8 ; =0x04001000 - ldr r0, [r1] - ldrh r1, [r1, #0xe] - and r0, r0, #7 - cmp r0, #3 - blt _020CF08C - cmp r0, #6 - bge _020CF0A0 - tst r1, #0x80 - bne _020CF0A0 -_020CF08C: - and r0, r1, #0x3c - mov r0, r0, lsr #2 - mov r0, r0, lsl #0xe - add r0, r0, #0x6200000 - bx lr -_020CF0A0: - mov r0, #0 - bx lr - .align 2, 0 -_020CF0A8: .word 0x04001000 - arm_func_end G2S_GetBG3CharPtr diff --git a/lib/NitroSDK/asm/gx_load2d.s b/lib/NitroSDK/asm/gx_load2d.s deleted file mode 100644 index 084000a4..00000000 --- a/lib/NitroSDK/asm/gx_load2d.s +++ /dev/null @@ -1,1047 +0,0 @@ - .include "asm/macros.inc" - .include "gx_load2d.inc" - .include "global.inc" - .public GXi_DmaId - - .bss - -sSubBGExtPltt: ; 0x021E15DC - .space 0x4 - -sOBJExtPlttLCDCBlk: ; 0x021E15E0 - .space 0x4 - -sOBJExtPltt: ; 0x021E15E4 - .space 0x4 - -sBGExtPlttLCDCOffset: ; 0x021E15E8 - .space 0x4 - -sBGExtPlttLCDCBlk: ; 0x021E15EC - .space 0x4 - -sBGExtPltt: ; 0x021E15F0 - .space 0x4 - -sSubOBJExtPltt: ; 0x021E15F4 - .space 0x4 - - .text - - arm_func_start GX_LoadBGPltt -GX_LoadBGPltt: ; 0x020CFC6C - stmdb sp!, {r4, lr} - ldr r3, _020CFCBC ; =GXi_DmaId - mov r4, r0 - ldr r0, [r3] - mvn ip, #0 - mov lr, r1 - mov r3, r2 - cmp r0, ip - beq _020CFCA8 - cmp r3, #0x1c - bls _020CFCA8 - mov r1, r4 - add r2, lr, #0x5000000 - bl MI_DmaCopy16 - ldmia sp!, {r4, pc} -_020CFCA8: - mov r0, r4 - mov r2, r3 - add r1, lr, #0x5000000 - bl MIi_CpuCopy16 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CFCBC: .word GXi_DmaId - arm_func_end GX_LoadBGPltt - - arm_func_start GXS_LoadBGPltt -GXS_LoadBGPltt: ; 0x020CFCC0 - stmdb sp!, {r3, lr} - ldr r3, _020CFD14 ; =GXi_DmaId - mov lr, r0 - ldr r0, [r3] - mvn ip, #0 - mov r3, r2 - cmp r0, ip - beq _020CFCFC - cmp r3, #0x1c - bls _020CFCFC - add r2, r1, #0x400 - mov r1, lr - add r2, r2, #0x5000000 - bl MI_DmaCopy16 - ldmia sp!, {r3, pc} -_020CFCFC: - add r1, r1, #0x400 - mov r0, lr - mov r2, r3 - add r1, r1, #0x5000000 - bl MIi_CpuCopy16 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CFD14: .word GXi_DmaId - arm_func_end GXS_LoadBGPltt - - arm_func_start GX_LoadOBJPltt -GX_LoadOBJPltt: ; 0x020CFD18 - stmdb sp!, {r3, lr} - ldr r3, _020CFD6C ; =GXi_DmaId - mov lr, r0 - ldr r0, [r3] - mvn ip, #0 - mov r3, r2 - cmp r0, ip - beq _020CFD54 - cmp r3, #0x1c - bls _020CFD54 - add r2, r1, #0x200 - mov r1, lr - add r2, r2, #0x5000000 - bl MI_DmaCopy16 - ldmia sp!, {r3, pc} -_020CFD54: - add r1, r1, #0x200 - mov r0, lr - mov r2, r3 - add r1, r1, #0x5000000 - bl MIi_CpuCopy16 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CFD6C: .word GXi_DmaId - arm_func_end GX_LoadOBJPltt - - arm_func_start GXS_LoadOBJPltt -GXS_LoadOBJPltt: ; 0x020CFD70 - stmdb sp!, {r3, lr} - ldr r3, _020CFDC4 ; =GXi_DmaId - mov lr, r0 - ldr r0, [r3] - mvn ip, #0 - mov r3, r2 - cmp r0, ip - beq _020CFDAC - cmp r3, #0x1c - bls _020CFDAC - add r2, r1, #0x600 - mov r1, lr - add r2, r2, #0x5000000 - bl MI_DmaCopy16 - ldmia sp!, {r3, pc} -_020CFDAC: - add r1, r1, #0x600 - mov r0, lr - mov r2, r3 - add r1, r1, #0x5000000 - bl MIi_CpuCopy16 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CFDC4: .word GXi_DmaId - arm_func_end GXS_LoadOBJPltt - - arm_func_start GX_LoadOAM -GX_LoadOAM: ; 0x020CFDC8 - stmdb sp!, {r4, lr} - ldr r3, _020CFE18 ; =GXi_DmaId - mov r4, r0 - ldr r0, [r3] - mvn ip, #0 - mov lr, r1 - mov r3, r2 - cmp r0, ip - beq _020CFE04 - cmp r3, #0x30 - bls _020CFE04 - mov r1, r4 - add r2, lr, #0x7000000 - bl MI_DmaCopy32 - ldmia sp!, {r4, pc} -_020CFE04: - mov r0, r4 - mov r2, r3 - add r1, lr, #0x7000000 - bl MIi_CpuCopy32 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CFE18: .word GXi_DmaId - arm_func_end GX_LoadOAM - - arm_func_start GXS_LoadOAM -GXS_LoadOAM: ; 0x020CFE1C - stmdb sp!, {r3, lr} - ldr r3, _020CFE70 ; =GXi_DmaId - mov lr, r0 - ldr r0, [r3] - mvn ip, #0 - mov r3, r2 - cmp r0, ip - beq _020CFE58 - cmp r3, #0x30 - bls _020CFE58 - add r2, r1, #0x400 - mov r1, lr - add r2, r2, #0x7000000 - bl MI_DmaCopy32 - ldmia sp!, {r3, pc} -_020CFE58: - add r1, r1, #0x400 - mov r0, lr - mov r2, r3 - add r1, r1, #0x7000000 - bl MIi_CpuCopy32 - ldmia sp!, {r3, pc} - .align 2, 0 -_020CFE70: .word GXi_DmaId - arm_func_end GXS_LoadOAM - - arm_func_start GX_LoadOBJ -GX_LoadOBJ: ; 0x020CFE74 - stmdb sp!, {r4, lr} - ldr r3, _020CFEC8 ; =GXi_DmaId - mov r4, r0 - ldr r0, [r3] - mvn ip, #0 - mov lr, r1 - mov r3, r2 - cmp r0, ip - mov ip, #0x6400000 - beq _020CFEB4 - cmp r3, #0x30 - bls _020CFEB4 - mov r1, r4 - add r2, ip, lr - bl MI_DmaCopy32 - ldmia sp!, {r4, pc} -_020CFEB4: - mov r0, r4 - mov r2, r3 - add r1, ip, lr - bl MIi_CpuCopy32 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CFEC8: .word GXi_DmaId - arm_func_end GX_LoadOBJ - - arm_func_start GXS_LoadOBJ -GXS_LoadOBJ: ; 0x020CFECC - stmdb sp!, {r4, lr} - ldr r3, _020CFF20 ; =GXi_DmaId - mov r4, r0 - ldr r0, [r3] - mvn ip, #0 - mov lr, r1 - mov r3, r2 - cmp r0, ip - mov ip, #0x6600000 - beq _020CFF0C - cmp r3, #0x30 - bls _020CFF0C - mov r1, r4 - add r2, ip, lr - bl MI_DmaCopy32 - ldmia sp!, {r4, pc} -_020CFF0C: - mov r0, r4 - mov r2, r3 - add r1, ip, lr - bl MIi_CpuCopy32 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CFF20: .word GXi_DmaId - arm_func_end GXS_LoadOBJ - - arm_func_start GX_LoadBG0Scr -GX_LoadBG0Scr: ; 0x020CFF24 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG0ScrPtr - ldr r1, _020CFF80 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020CFF6C - cmp r4, #0x1c - bls _020CFF6C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020CFF6C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020CFF80: .word GXi_DmaId - arm_func_end GX_LoadBG0Scr - - arm_func_start GXS_LoadBG0Scr -GXS_LoadBG0Scr: ; 0x020CFF84 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG0ScrPtr - ldr r1, _020CFFE0 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020CFFCC - cmp r4, #0x1c - bls _020CFFCC - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020CFFCC: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020CFFE0: .word GXi_DmaId - arm_func_end GXS_LoadBG0Scr - - arm_func_start GX_LoadBG1Scr -GX_LoadBG1Scr: ; 0x020CFFE4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG1ScrPtr - ldr r1, _020D0040 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D002C - cmp r4, #0x1c - bls _020D002C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020D002C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0040: .word GXi_DmaId - arm_func_end GX_LoadBG1Scr - - arm_func_start GXS_LoadBG1Scr -GXS_LoadBG1Scr: ; 0x020D0044 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG1ScrPtr - ldr r1, _020D00A0 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D008C - cmp r4, #0x1c - bls _020D008C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020D008C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D00A0: .word GXi_DmaId - arm_func_end GXS_LoadBG1Scr - - arm_func_start GX_LoadBG2Scr -GX_LoadBG2Scr: ; 0x020D00A4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG2ScrPtr - ldr r1, _020D0100 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D00EC - cmp r4, #0x1c - bls _020D00EC - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020D00EC: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0100: .word GXi_DmaId - arm_func_end GX_LoadBG2Scr - - arm_func_start GXS_LoadBG2Scr -GXS_LoadBG2Scr: ; 0x020D0104 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG2ScrPtr - ldr r1, _020D0160 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D014C - cmp r4, #0x1c - bls _020D014C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020D014C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0160: .word GXi_DmaId - arm_func_end GXS_LoadBG2Scr - - arm_func_start GX_LoadBG3Scr -GX_LoadBG3Scr: ; 0x020D0164 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG3ScrPtr - ldr r1, _020D01C0 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D01AC - cmp r4, #0x1c - bls _020D01AC - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020D01AC: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D01C0: .word GXi_DmaId - arm_func_end GX_LoadBG3Scr - - arm_func_start GXS_LoadBG3Scr -GXS_LoadBG3Scr: ; 0x020D01C4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG3ScrPtr - ldr r1, _020D0220 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D020C - cmp r4, #0x1c - bls _020D020C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy16 - ldmia sp!, {r4, r5, r6, pc} -_020D020C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy16 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0220: .word GXi_DmaId - arm_func_end GXS_LoadBG3Scr - - arm_func_start GX_LoadBG0Char -GX_LoadBG0Char: ; 0x020D0224 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG0CharPtr - ldr r1, _020D0280 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D026C - cmp r4, #0x30 - bls _020D026C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D026C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0280: .word GXi_DmaId - arm_func_end GX_LoadBG0Char - - arm_func_start GXS_LoadBG0Char -GXS_LoadBG0Char: ; 0x020D0284 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG0CharPtr - ldr r1, _020D02E0 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D02CC - cmp r4, #0x30 - bls _020D02CC - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D02CC: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D02E0: .word GXi_DmaId - arm_func_end GXS_LoadBG0Char - - arm_func_start GX_LoadBG1Char -GX_LoadBG1Char: ; 0x020D02E4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG1CharPtr - ldr r1, _020D0340 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D032C - cmp r4, #0x30 - bls _020D032C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D032C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0340: .word GXi_DmaId - arm_func_end GX_LoadBG1Char - - arm_func_start GXS_LoadBG1Char -GXS_LoadBG1Char: ; 0x020D0344 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG1CharPtr - ldr r1, _020D03A0 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D038C - cmp r4, #0x30 - bls _020D038C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D038C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D03A0: .word GXi_DmaId - arm_func_end GXS_LoadBG1Char - - arm_func_start GX_LoadBG2Char -GX_LoadBG2Char: ; 0x020D03A4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG2CharPtr - ldr r1, _020D0400 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D03EC - cmp r4, #0x30 - bls _020D03EC - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D03EC: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0400: .word GXi_DmaId - arm_func_end GX_LoadBG2Char - - arm_func_start GXS_LoadBG2Char -GXS_LoadBG2Char: ; 0x020D0404 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG2CharPtr - ldr r1, _020D0460 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D044C - cmp r4, #0x30 - bls _020D044C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D044C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0460: .word GXi_DmaId - arm_func_end GXS_LoadBG2Char - - arm_func_start GX_LoadBG3Char -GX_LoadBG3Char: ; 0x020D0464 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2_GetBG3CharPtr - ldr r1, _020D04C0 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D04AC - cmp r4, #0x30 - bls _020D04AC - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D04AC: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D04C0: .word GXi_DmaId - arm_func_end GX_LoadBG3Char - - arm_func_start GXS_LoadBG3Char -GXS_LoadBG3Char: ; 0x020D04C4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl G2S_GetBG3CharPtr - ldr r1, _020D0520 ; =GXi_DmaId - mov ip, r0 - ldr r0, [r1] - mvn r1, #0 - cmp r0, r1 - beq _020D050C - cmp r4, #0x30 - bls _020D050C - mov r1, r6 - mov r3, r4 - add r2, ip, r5 - bl MI_DmaCopy32 - ldmia sp!, {r4, r5, r6, pc} -_020D050C: - mov r0, r6 - mov r2, r4 - add r1, ip, r5 - bl MIi_CpuCopy32 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0520: .word GXi_DmaId - arm_func_end GXS_LoadBG3Char - - arm_func_start GX_BeginLoadBGExtPltt -GX_BeginLoadBGExtPltt: ; 0x020D0524 - stmdb sp!, {r3, lr} - bl GX_ResetBankForBGExtPltt - ldr r1, _020D05B4 ; =sSubBGExtPltt - cmp r0, #0x20 - str r0, [r1, #0x14] - bgt _020D0558 - cmp r0, #0x20 - bge _020D059C - cmp r0, #0 - ldmleia sp!, {r3, pc} - cmp r0, #0x10 - beq _020D0574 - ldmia sp!, {r3, pc} -_020D0558: - cmp r0, #0x40 - bgt _020D0568 - beq _020D0588 - ldmia sp!, {r3, pc} -_020D0568: - cmp r0, #0x60 - beq _020D059C - ldmia sp!, {r3, pc} -_020D0574: - ldr r2, _020D05B8 ; =0x06880000 - mov r0, #0 - str r2, [r1, #0x10] - str r0, [r1, #0xc] - ldmia sp!, {r3, pc} -_020D0588: - ldr r2, _020D05BC ; =0x06894000 - mov r0, #0x4000 - str r2, [r1, #0x10] - str r0, [r1, #0xc] - ldmia sp!, {r3, pc} -_020D059C: - ldr r2, _020D05C0 ; =0x06890000 - ldr r0, _020D05B4 ; =sSubBGExtPltt - mov r1, #0 - str r2, [r0, #0x10] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D05B4: .word sSubBGExtPltt -_020D05B8: .word 0x06880000 -_020D05BC: .word 0x06894000 -_020D05C0: .word 0x06890000 - arm_func_end GX_BeginLoadBGExtPltt - - arm_func_start GX_LoadBGExtPltt -GX_LoadBGExtPltt: ; 0x020D05C4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr ip, _020D062C ; =sSubBGExtPltt - ldr r3, _020D0630 ; =GXi_DmaId - ldr lr, [ip, #0x10] - ldr r4, [ip, #0xc] - add r5, lr, r1 - ldr lr, [r3] - mvn ip, #0 - mov r1, r0 - mov r3, r2 - cmp lr, ip - sub r4, r5, r4 - beq _020D061C - mov ip, #0 - str ip, [sp] - mov r0, lr - mov r2, r4 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} -_020D061C: - mov r1, r4 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D062C: .word sSubBGExtPltt -_020D0630: .word GXi_DmaId - arm_func_end GX_LoadBGExtPltt - - arm_func_start GX_EndLoadBGExtPltt -GX_EndLoadBGExtPltt: ; 0x020D0634 - stmdb sp!, {r3, lr} - ldr r0, _020D0674 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D0650 - bl MI_WaitDma -_020D0650: - ldr r0, _020D0678 ; =sSubBGExtPltt - ldr r0, [r0, #0x14] - bl GX_SetBankForBGExtPltt - ldr r0, _020D0678 ; =sSubBGExtPltt - mov r1, #0 - str r1, [r0, #0x14] - str r1, [r0, #0x10] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0674: .word GXi_DmaId -_020D0678: .word sSubBGExtPltt - arm_func_end GX_EndLoadBGExtPltt - - arm_func_start GX_BeginLoadOBJExtPltt -GX_BeginLoadOBJExtPltt: ; 0x020D067C - stmdb sp!, {r3, lr} - bl GX_ResetBankForOBJExtPltt - ldr r1, _020D06B8 ; =sSubBGExtPltt - cmp r0, #0 - str r0, [r1, #8] - ldmeqia sp!, {r3, pc} - cmp r0, #0x20 - beq _020D06AC - cmp r0, #0x40 - ldreq r0, _020D06BC ; =0x06894000 - streq r0, [r1, #4] - ldmia sp!, {r3, pc} -_020D06AC: - ldr r0, _020D06C0 ; =0x06890000 - str r0, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D06B8: .word sSubBGExtPltt -_020D06BC: .word 0x06894000 -_020D06C0: .word 0x06890000 - arm_func_end GX_BeginLoadOBJExtPltt - - arm_func_start GX_LoadOBJExtPltt -GX_LoadOBJExtPltt: ; 0x020D06C4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r3, _020D0728 ; =GXi_DmaId - ldr lr, _020D072C ; =sSubBGExtPltt - ldr r4, [r3] - mvn ip, #0 - mov r6, r0 - mov r5, r1 - mov r3, r2 - cmp r4, ip - ldr lr, [lr, #4] - beq _020D0718 - mov ip, #0 - str ip, [sp] - mov r0, r4 - mov r1, r6 - add r2, lr, r5 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_020D0718: - add r1, lr, r5 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0728: .word GXi_DmaId -_020D072C: .word sSubBGExtPltt - arm_func_end GX_LoadOBJExtPltt - - arm_func_start GX_EndLoadOBJExtPltt -GX_EndLoadOBJExtPltt: ; 0x020D0730 - stmdb sp!, {r3, lr} - ldr r0, _020D076C ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D074C - bl MI_WaitDma -_020D074C: - ldr r0, _020D0770 ; =sSubBGExtPltt - ldr r0, [r0, #8] - bl GX_SetBankForOBJExtPltt - ldr r0, _020D0770 ; =sSubBGExtPltt - mov r1, #0 - str r1, [r0, #8] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D076C: .word GXi_DmaId -_020D0770: .word sSubBGExtPltt - arm_func_end GX_EndLoadOBJExtPltt - - arm_func_start GXS_BeginLoadBGExtPltt -GXS_BeginLoadBGExtPltt: ; 0x020D0774 - stmdb sp!, {r3, lr} - bl GX_ResetBankForSubBGExtPltt - ldr r1, _020D0788 ; =sSubBGExtPltt - str r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0788: .word sSubBGExtPltt - arm_func_end GXS_BeginLoadBGExtPltt - - arm_func_start GXS_LoadBGExtPltt -GXS_LoadBGExtPltt: ; 0x020D078C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r3, _020D07EC ; =GXi_DmaId - mvn ip, #0 - ldr lr, [r3] - mov r4, r0 - mov r3, r2 - cmp lr, ip - beq _020D07D8 - add r2, r1, #0x98000 - mov ip, #0 - str ip, [sp] - mov r0, lr - mov r1, r4 - add r2, r2, #0x6800000 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r4, pc} -_020D07D8: - add r1, r1, #0x98000 - add r1, r1, #0x6800000 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D07EC: .word GXi_DmaId - arm_func_end GXS_LoadBGExtPltt - - arm_func_start GXS_EndLoadBGExtPltt -GXS_EndLoadBGExtPltt: ; 0x020D07F0 - stmdb sp!, {r3, lr} - ldr r0, _020D0828 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D080C - bl MI_WaitDma -_020D080C: - ldr r0, _020D082C ; =sSubBGExtPltt - ldr r0, [r0] - bl GX_SetBankForSubBGExtPltt - ldr r0, _020D082C ; =sSubBGExtPltt - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0828: .word GXi_DmaId -_020D082C: .word sSubBGExtPltt - arm_func_end GXS_EndLoadBGExtPltt - - arm_func_start GXS_BeginLoadOBJExtPltt -GXS_BeginLoadOBJExtPltt: ; 0x020D0830 - stmdb sp!, {r3, lr} - bl GX_ResetBankForSubOBJExtPltt - ldr r1, _020D0844 ; =sSubBGExtPltt - str r0, [r1, #0x18] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0844: .word sSubBGExtPltt - arm_func_end GXS_BeginLoadOBJExtPltt - - arm_func_start GXS_LoadOBJExtPltt -GXS_LoadOBJExtPltt: ; 0x020D0848 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r3, _020D08A8 ; =GXi_DmaId - mvn ip, #0 - ldr lr, [r3] - mov r4, r0 - mov r3, r2 - cmp lr, ip - beq _020D0894 - add r2, r1, #0x8a0000 - mov ip, #0 - str ip, [sp] - mov r0, lr - mov r1, r4 - add r2, r2, #0x6000000 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r4, pc} -_020D0894: - add r1, r1, #0x8a0000 - add r1, r1, #0x6000000 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D08A8: .word GXi_DmaId - arm_func_end GXS_LoadOBJExtPltt - - arm_func_start GXS_EndLoadOBJExtPltt -GXS_EndLoadOBJExtPltt: ; 0x020D08AC - stmdb sp!, {r3, lr} - ldr r0, _020D08E4 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D08C8 - bl MI_WaitDma -_020D08C8: - ldr r0, _020D08E8 ; =sSubBGExtPltt - ldr r0, [r0, #0x18] - bl GX_SetBankForSubOBJExtPltt - ldr r0, _020D08E8 ; =sSubBGExtPltt - mov r1, #0 - str r1, [r0, #0x18] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D08E4: .word GXi_DmaId -_020D08E8: .word sSubBGExtPltt - arm_func_end GXS_EndLoadOBJExtPltt diff --git a/lib/NitroSDK/asm/gx_load3d.s b/lib/NitroSDK/asm/gx_load3d.s deleted file mode 100644 index e204e3c2..00000000 --- a/lib/NitroSDK/asm/gx_load3d.s +++ /dev/null @@ -1,414 +0,0 @@ - .include "asm/macros.inc" - .include "gx_load3d.inc" - .include "global.inc" - .public GXi_DmaId - .public GX_ResetBankForClearImage - - .bss - -sClrImg: ; 0x021E15F8 - .space 0x4 - -sTexLCDCBlk1: ; 0x021E15FC - .space 0x4 - -sTexPlttLCDCBlk: ; 0x021E1600 - .space 0x4 - -sTexPltt: ; 0x021E1604 - .space 0x4 - -sClrImgLCDCBlk: ; 0x021E1608 - .space 0x4 - -sTex: ; 0x021E160C - .space 0x4 - -sTexLCDCBlk2: ; 0x021E1610 - .space 0x4 - -sSzTexBlk1: ; 0x021E1614 - .space 0x4 - - .text - - arm_func_start GX_BeginLoadTex -GX_BeginLoadTex: ; 0x020D08EC - stmdb sp!, {r3, lr} - bl GX_ResetBankForTex - mov r1, #6 - mul lr, r0, r1 - ldr r2, _020D0938 ; =sTexStartAddrTable - ldr r1, _020D093C ; =sTexStartAddrTable + 2 - ldrh ip, [r2, lr] - ldr r2, _020D0940 ; =sTexStartAddrTable + 4 - ldrh r3, [r1, lr] - ldr r1, _020D0944 ; =sClrImg - ldrh r2, [r2, lr] - str r0, [r1, #0x14] - mov r0, ip, lsl #0xc - str r0, [r1, #4] - mov r0, r3, lsl #0xc - str r0, [r1, #0x18] - mov r0, r2, lsl #0xc - str r0, [r1, #0x1c] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0938: .word sTexStartAddrTable -_020D093C: .word sTexStartAddrTable + 2 -_020D0940: .word sTexStartAddrTable + 4 -_020D0944: .word sClrImg - arm_func_end GX_BeginLoadTex - - arm_func_start GX_LoadTex -GX_LoadTex: ; 0x020D0948 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r3, _020D0A80 ; =sClrImg - mov r7, r0 - ldr r4, [r3, #0x18] - mov ip, r1 - cmp r4, #0 - ldreq r0, [r3, #4] - mov r6, r2 - addeq r2, r0, ip - beq _020D0A34 - ldr r2, [r3, #0x1c] - add r0, ip, r6 - cmp r0, r2 - ldrlo r0, [r3, #4] - addlo r2, r0, ip - blo _020D0A34 - cmp ip, r2 - addhs r0, r4, ip - subhs r2, r0, r2 - bhs _020D0A34 - ldr r0, _020D0A84 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - sub r5, r2, ip - cmp r0, r1 - ldr lr, [r3, #4] - beq _020D09D4 - cmp r5, #0x30 - bls _020D09D4 - mov r1, r7 - mov r3, r5 - add r2, lr, ip - bl MI_DmaCopy32 - b _020D09E4 -_020D09D4: - mov r0, r7 - mov r2, r5 - add r1, lr, ip - bl MIi_CpuCopy32 -_020D09E4: - ldr r0, _020D0A84 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D0A1C - mov ip, #0 - str ip, [sp] - mov r2, r4 - add r1, r7, r5 - sub r3, r6, r5 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D0A1C: - mov r1, r4 - add r0, r7, r5 - sub r2, r6, r5 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D0A34: - ldr r0, _020D0A84 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D0A68 - mov r4, #0 - str r4, [sp] - mov r1, r7 - mov r3, r6 - str r4, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D0A68: - mov r1, r2 - mov r0, r7 - mov r2, r6 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D0A80: .word sClrImg -_020D0A84: .word GXi_DmaId - arm_func_end GX_LoadTex - - arm_func_start GX_EndLoadTex -GX_EndLoadTex: ; 0x020D0A88 - stmdb sp!, {r3, lr} - ldr r0, _020D0ACC ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D0AA4 - bl MI_WaitDma -_020D0AA4: - ldr r0, _020D0AD0 ; =sClrImg - ldr r0, [r0, #0x14] - bl GX_SetBankForTex - ldr r0, _020D0AD0 ; =sClrImg - mov r1, #0 - str r1, [r0, #0x1c] - str r1, [r0, #0x18] - str r1, [r0, #4] - str r1, [r0, #0x14] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0ACC: .word GXi_DmaId -_020D0AD0: .word sClrImg - arm_func_end GX_EndLoadTex - - arm_func_start GX_BeginLoadTexPltt -GX_BeginLoadTexPltt: ; 0x020D0AD4 - stmdb sp!, {r3, lr} - bl GX_ResetBankForTexPltt - mov r3, r0, asr #4 - ldr r1, _020D0B00 ; =sClrImg - ldr r2, _020D0B04 ; =sTexPlttStartAddrTable - mov r3, r3, lsl #1 - ldrh r2, [r2, r3] - str r0, [r1, #0xc] - mov r0, r2, lsl #0xc - str r0, [r1, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0B00: .word sClrImg -_020D0B04: .word sTexPlttStartAddrTable - arm_func_end GX_BeginLoadTexPltt - - arm_func_start GX_LoadTexPltt -GX_LoadTexPltt: ; 0x020D0B08 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r3, _020D0B6C ; =GXi_DmaId - ldr lr, _020D0B70 ; =sClrImg - ldr r4, [r3] - mvn ip, #0 - mov r6, r0 - mov r5, r1 - mov r3, r2 - cmp r4, ip - ldr lr, [lr, #8] - beq _020D0B5C - mov ip, #0 - str ip, [sp] - mov r0, r4 - mov r1, r6 - add r2, lr, r5 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} -_020D0B5C: - add r1, lr, r5 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D0B6C: .word GXi_DmaId -_020D0B70: .word sClrImg - arm_func_end GX_LoadTexPltt - - arm_func_start GX_EndLoadTexPltt -GX_EndLoadTexPltt: ; 0x020D0B74 - stmdb sp!, {r3, lr} - ldr r0, _020D0BB0 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D0B90 - bl MI_WaitDma -_020D0B90: - ldr r0, _020D0BB4 ; =sClrImg - ldr r0, [r0, #0xc] - bl GX_SetBankForTexPltt - ldr r0, _020D0BB4 ; =sClrImg - mov r1, #0 - str r1, [r0, #0xc] - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0BB0: .word GXi_DmaId -_020D0BB4: .word sClrImg - arm_func_end GX_EndLoadTexPltt - - arm_func_start GX_BeginLoadClearImage -GX_BeginLoadClearImage: ; 0x020D0BB8 - stmdb sp!, {r3, lr} - bl GX_ResetBankForClearImage - ldr r1, _020D0C38 ; =sClrImg - cmp r0, #0xc - str r0, [r1] - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_020D0BD4: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _020D0C20 ; case 1 - b _020D0C08 ; case 2 - b _020D0C08 ; case 3 - b _020D0C2C ; case 4 - ldmia sp!, {r3, pc} ; case 5 - ldmia sp!, {r3, pc} ; case 6 - ldmia sp!, {r3, pc} ; case 7 - b _020D0C14 ; case 8 - ldmia sp!, {r3, pc} ; case 9 - ldmia sp!, {r3, pc} ; case 10 - ldmia sp!, {r3, pc} ; case 11 - b _020D0C14 ; case 12 -_020D0C08: - mov r0, #0x6800000 - str r0, [r1, #0x10] - ldmia sp!, {r3, pc} -_020D0C14: - ldr r0, _020D0C3C ; =0x06840000 - str r0, [r1, #0x10] - ldmia sp!, {r3, pc} -_020D0C20: - ldr r0, _020D0C40 ; =0x067E0000 - str r0, [r1, #0x10] - ldmia sp!, {r3, pc} -_020D0C2C: - ldr r0, _020D0C44 ; =0x06820000 - str r0, [r1, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0C38: .word sClrImg -_020D0C3C: .word 0x06840000 -_020D0C40: .word 0x067E0000 -_020D0C44: .word 0x06820000 - arm_func_end GX_BeginLoadClearImage - - arm_func_start GX_LoadClearImageColor -GX_LoadClearImageColor: ; 0x020D0C48 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _020D0CA8 ; =GXi_DmaId - ldr ip, _020D0CAC ; =sClrImg - ldr lr, [r2] - mvn r2, #0 - mov r4, r0 - mov r3, r1 - cmp lr, r2 - ldr r2, [ip, #0x10] - beq _020D0C94 - mov ip, #0 - str ip, [sp] - mov r0, lr - mov r1, r4 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r4, pc} -_020D0C94: - mov r1, r2 - mov r2, r3 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D0CA8: .word GXi_DmaId -_020D0CAC: .word sClrImg - arm_func_end GX_LoadClearImageColor - - arm_func_start GX_LoadClearImageDepth -GX_LoadClearImageDepth: ; 0x020D0CB0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r2, _020D0D14 ; =GXi_DmaId - ldr ip, _020D0D18 ; =sClrImg - ldr lr, [r2] - mvn r2, #0 - mov r5, r0 - mov r3, r1 - cmp lr, r2 - ldr r4, [ip, #0x10] - beq _020D0D00 - mov ip, #0 - str ip, [sp] - mov r0, lr - mov r1, r5 - add r2, r4, #0x20000 - str ip, [sp, #4] - bl MI_DmaCopy32Async - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} -_020D0D00: - mov r2, r3 - add r1, r4, #0x20000 - bl MIi_CpuCopy32 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D0D14: .word GXi_DmaId -_020D0D18: .word sClrImg - arm_func_end GX_LoadClearImageDepth - - arm_func_start GX_EndLoadClearImage -GX_EndLoadClearImage: ; 0x020D0D1C - stmdb sp!, {r3, lr} - ldr r0, _020D0D58 ; =GXi_DmaId - mvn r1, #0 - ldr r0, [r0] - cmp r0, r1 - beq _020D0D38 - bl MI_WaitDma -_020D0D38: - ldr r0, _020D0D5C ; =sClrImg - ldr r0, [r0] - bl GX_SetBankForClearImage - ldr r0, _020D0D5C ; =sClrImg - mov r1, #0 - str r1, [r0] - str r1, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D0D58: .word GXi_DmaId -_020D0D5C: .word sClrImg - arm_func_end GX_EndLoadClearImage - - .rodata - -sTexPlttStartAddrTable: ; 0x0210D5E0 - .short 0x0000 - .short 0x6880 - .short 0x6890 - .short 0x6880 - .short 0x6894 - .short 0x0000 - .short 0x6890 - .short 0x6880 - -sTexStartAddrTable: ; 0x0210D5F0 - .short 0x0000, 0x0000, 0x0000 - .short 0x6800, 0x0000, 0x0000 - .short 0x6820, 0x0000, 0x0000 - .short 0x6800, 0x0000, 0x0000 - .short 0x6840, 0x0000, 0x0000 - .short 0x6800, 0x6840, 0x0020 - .short 0x6820, 0x0000, 0x0000 - .short 0x6800, 0x0000, 0x0000 - .short 0x6860, 0x0000, 0x0000 - .short 0x6800, 0x6860, 0x0020 - .short 0x6820, 0x6860, 0x0020 - .short 0x6800, 0x6860, 0x0040 - .short 0x6840, 0x0000, 0x0000 - .short 0x6800, 0x6840, 0x0020 - .short 0x6820, 0x0000, 0x0000 - .short 0x6800, 0x0000, 0x0000 diff --git a/lib/NitroSDK/asm/gx_vramcnt.s b/lib/NitroSDK/asm/gx_vramcnt.s deleted file mode 100644 index ee5e4196..00000000 --- a/lib/NitroSDK/asm/gx_vramcnt.s +++ /dev/null @@ -1,1424 +0,0 @@ - .include "asm/macros.inc" - .include "gx_vramcnt.inc" - .include "global.inc" - - .public gGXState - .public GXi_VRamLockId - - .text - - arm_func_start GX_VRAMCNT_SetLCDC_ -GX_VRAMCNT_SetLCDC_: ; 0x020CDB4C - tst r0, #1 - ldrne r1, _020CDBE0 ; =0x04000240 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #2 - ldrne r1, _020CDBE4 ; =0x04000241 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #4 - ldrne r1, _020CDBE8 ; =0x04000242 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #8 - ldrne r1, _020CDBEC ; =0x04000243 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #0x10 - ldrne r1, _020CDBF0 ; =0x04000244 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #0x20 - ldrne r1, _020CDBF4 ; =0x04000245 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #0x40 - ldrne r1, _020CDBF8 ; =0x04000246 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #0x80 - ldrne r1, _020CDBFC ; =0x04000248 - movne r2, #0x80 - strneb r2, [r1] - tst r0, #0x100 - ldrne r0, _020CDC00 ; =0x04000249 - movne r1, #0x80 - strneb r1, [r0] - bx lr - .align 2, 0 -_020CDBE0: .word 0x04000240 -_020CDBE4: .word 0x04000241 -_020CDBE8: .word 0x04000242 -_020CDBEC: .word 0x04000243 -_020CDBF0: .word 0x04000244 -_020CDBF4: .word 0x04000245 -_020CDBF8: .word 0x04000246 -_020CDBFC: .word 0x04000248 -_020CDC00: .word 0x04000249 - arm_func_end GX_VRAMCNT_SetLCDC_ - - arm_func_start GX_SetBankForBG -GX_SetBankForBG: ; 0x020CDC04 - stmdb sp!, {r3, lr} - ldr r1, _020CDE74 ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #2] - cmp r0, #0x40 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #2] - bgt _020CDCDC - cmp r0, #0x40 - bge _020CDE58 - cmp r0, #0x20 - bgt _020CDCD0 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _020CDE64 -_020CDC4C: ; jump table - b _020CDE64 ; case 0 - b _020CDD78 ; case 1 - b _020CDD44 ; case 2 - b _020CDD6C ; case 3 - b _020CDD1C ; case 4 - b _020CDDB4 ; case 5 - b _020CDD38 ; case 6 - b _020CDD60 ; case 7 - b _020CDD00 ; case 8 - b _020CDDCC ; case 9 - b _020CDDE4 ; case 10 - b _020CDD88 ; case 11 - b _020CDD10 ; case 12 - b _020CDDA8 ; case 13 - b _020CDD2C ; case 14 - b _020CDD54 ; case 15 - b _020CDE14 ; case 16 - b _020CDE64 ; case 17 - b _020CDE64 ; case 18 - b _020CDE64 ; case 19 - b _020CDE64 ; case 20 - b _020CDE64 ; case 21 - b _020CDE64 ; case 22 - b _020CDE64 ; case 23 - b _020CDE64 ; case 24 - b _020CDE64 ; case 25 - b _020CDE64 ; case 26 - b _020CDE64 ; case 27 - b _020CDE64 ; case 28 - b _020CDE64 ; case 29 - b _020CDE64 ; case 30 - b _020CDE64 ; case 31 - b _020CDE48 ; case 32 -_020CDCD0: - cmp r0, #0x30 - beq _020CDE08 - b _020CDE64 -_020CDCDC: - cmp r0, #0x60 - bgt _020CDCF4 - bge _020CDE3C - cmp r0, #0x50 - beq _020CDE24 - b _020CDE64 -_020CDCF4: - cmp r0, #0x70 - beq _020CDDFC - b _020CDE64 -_020CDD00: - ldr r0, _020CDE78 ; =0x04000243 - mov r1, #0x81 - strb r1, [r0] - b _020CDE64 -_020CDD10: - ldr r0, _020CDE78 ; =0x04000243 - mov r1, #0x89 - strb r1, [r0] -_020CDD1C: - ldr r0, _020CDE7C ; =0x04000242 - mov r1, #0x81 - strb r1, [r0] - b _020CDE64 -_020CDD2C: - ldr r0, _020CDE78 ; =0x04000243 - mov r1, #0x91 - strb r1, [r0] -_020CDD38: - ldr r0, _020CDE7C ; =0x04000242 - mov r1, #0x89 - strb r1, [r0] -_020CDD44: - ldr r0, _020CDE80 ; =0x04000241 - mov r1, #0x81 - strb r1, [r0] - b _020CDE64 -_020CDD54: - ldr r0, _020CDE78 ; =0x04000243 - mov r1, #0x99 - strb r1, [r0] -_020CDD60: - ldr r0, _020CDE7C ; =0x04000242 - mov r1, #0x91 - strb r1, [r0] -_020CDD6C: - ldr r0, _020CDE80 ; =0x04000241 - mov r1, #0x89 - strb r1, [r0] -_020CDD78: - ldr r0, _020CDE84 ; =0x04000240 - mov r1, #0x81 - strb r1, [r0] - b _020CDE64 -_020CDD88: - ldr r1, _020CDE84 ; =0x04000240 - mov r0, #0x81 - strb r0, [r1] - mov r0, #0x89 - strb r0, [r1, #1] - mov r0, #0x91 - strb r0, [r1, #3] - b _020CDE64 -_020CDDA8: - ldr r0, _020CDE78 ; =0x04000243 - mov r1, #0x91 - strb r1, [r0] -_020CDDB4: - ldr r1, _020CDE84 ; =0x04000240 - mov r0, #0x81 - strb r0, [r1] - mov r0, #0x89 - strb r0, [r1, #2] - b _020CDE64 -_020CDDCC: - ldr r1, _020CDE84 ; =0x04000240 - mov r0, #0x81 - strb r0, [r1] - mov r0, #0x89 - strb r0, [r1, #3] - b _020CDE64 -_020CDDE4: - ldr r1, _020CDE80 ; =0x04000241 - mov r0, #0x81 - strb r0, [r1] - mov r0, #0x89 - strb r0, [r1, #2] - b _020CDE64 -_020CDDFC: - ldr r0, _020CDE88 ; =0x04000246 - mov r1, #0x99 - strb r1, [r0] -_020CDE08: - ldr r0, _020CDE8C ; =0x04000245 - mov r1, #0x91 - strb r1, [r0] -_020CDE14: - ldr r0, _020CDE90 ; =0x04000244 - mov r1, #0x81 - strb r1, [r0] - b _020CDE64 -_020CDE24: - ldr r1, _020CDE88 ; =0x04000246 - mov r0, #0x91 - strb r0, [r1] - mov r0, #0x81 - strb r0, [r1, #-2] - b _020CDE64 -_020CDE3C: - ldr r0, _020CDE88 ; =0x04000246 - mov r1, #0x89 - strb r1, [r0] -_020CDE48: - ldr r0, _020CDE8C ; =0x04000245 - mov r1, #0x81 - strb r1, [r0] - b _020CDE64 -_020CDE58: - ldr r0, _020CDE88 ; =0x04000246 - mov r1, #0x81 - strb r1, [r0] -_020CDE64: - ldr r0, _020CDE74 ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CDE74: .word gGXState -_020CDE78: .word 0x04000243 -_020CDE7C: .word 0x04000242 -_020CDE80: .word 0x04000241 -_020CDE84: .word 0x04000240 -_020CDE88: .word 0x04000246 -_020CDE8C: .word 0x04000245 -_020CDE90: .word 0x04000244 - arm_func_end GX_SetBankForBG - - arm_func_start GX_SetBankForOBJ -GX_SetBankForOBJ: ; 0x020CDE94 - stmdb sp!, {r3, lr} - ldr r1, _020CDFCC ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #4] - cmp r0, #0x30 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #4] - bgt _020CDEFC - cmp r0, #0x30 - bge _020CDF70 - cmp r0, #0x10 - bgt _020CDEF0 - bge _020CDF7C - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _020CDFBC -_020CDEE0: ; jump table - b _020CDFBC ; case 0 - b _020CDF44 ; case 1 - b _020CDF54 ; case 2 - b _020CDF38 ; case 3 -_020CDEF0: - cmp r0, #0x20 - beq _020CDFB0 - b _020CDFBC -_020CDEFC: - cmp r0, #0x50 - bgt _020CDF1C - bge _020CDF8C - cmp r0, #0x40 - ldreq r0, _020CDFD0 ; =0x04000246 - moveq r1, #0x82 - streqb r1, [r0] - b _020CDFBC -_020CDF1C: - cmp r0, #0x60 - bgt _020CDF2C - beq _020CDFA4 - b _020CDFBC -_020CDF2C: - cmp r0, #0x70 - beq _020CDF64 - b _020CDFBC -_020CDF38: - ldr r0, _020CDFD4 ; =0x04000241 - mov r1, #0x8a - strb r1, [r0] -_020CDF44: - ldr r0, _020CDFD8 ; =0x04000240 - mov r1, #0x82 - strb r1, [r0] - b _020CDFBC -_020CDF54: - ldr r0, _020CDFD4 ; =0x04000241 - mov r1, #0x82 - strb r1, [r0] - b _020CDFBC -_020CDF64: - ldr r0, _020CDFD0 ; =0x04000246 - mov r1, #0x9a - strb r1, [r0] -_020CDF70: - ldr r0, _020CDFDC ; =0x04000245 - mov r1, #0x92 - strb r1, [r0] -_020CDF7C: - ldr r0, _020CDFE0 ; =0x04000244 - mov r1, #0x82 - strb r1, [r0] - b _020CDFBC -_020CDF8C: - ldr r1, _020CDFD0 ; =0x04000246 - mov r0, #0x92 - strb r0, [r1] - mov r0, #0x82 - strb r0, [r1, #-2] - b _020CDFBC -_020CDFA4: - ldr r0, _020CDFD0 ; =0x04000246 - mov r1, #0x8a - strb r1, [r0] -_020CDFB0: - ldr r0, _020CDFDC ; =0x04000245 - mov r1, #0x82 - strb r1, [r0] -_020CDFBC: - ldr r0, _020CDFCC ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CDFCC: .word gGXState -_020CDFD0: .word 0x04000246 -_020CDFD4: .word 0x04000241 -_020CDFD8: .word 0x04000240 -_020CDFDC: .word 0x04000245 -_020CDFE0: .word 0x04000244 - arm_func_end GX_SetBankForOBJ - - arm_func_start GX_SetBankForBGExtPltt -GX_SetBankForBGExtPltt: ; 0x020CDFE4 - stmdb sp!, {r3, lr} - ldr r1, _020CE0D8 ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0xe] - cmp r0, #0x20 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0xe] - bgt _020CE034 - cmp r0, #0x20 - bge _020CE098 - cmp r0, #0 - bgt _020CE028 - beq _020CE0B8 - b _020CE0C8 -_020CE028: - cmp r0, #0x10 - beq _020CE050 - b _020CE0C8 -_020CE034: - cmp r0, #0x40 - bgt _020CE044 - beq _020CE06C - b _020CE0C8 -_020CE044: - cmp r0, #0x60 - beq _020CE08C - b _020CE0C8 -_020CE050: - mov r2, #0x4000000 - ldr r1, [r2] - mov r0, #0x84 - orr r1, r1, #0x40000000 - str r1, [r2] - strb r0, [r2, #0x244] - b _020CE0C8 -_020CE06C: - mov r2, #0x4000000 - ldr r1, [r2] - ldr r0, _020CE0DC ; =0x04000246 - orr r1, r1, #0x40000000 - str r1, [r2] - mov r1, #0x8c - strb r1, [r0] - b _020CE0C8 -_020CE08C: - ldr r0, _020CE0DC ; =0x04000246 - mov r1, #0x8c - strb r1, [r0] -_020CE098: - ldr r0, _020CE0E0 ; =0x04000245 - mov r1, #0x84 - strb r1, [r0] - mov r1, #0x4000000 - ldr r0, [r1] - orr r0, r0, #0x40000000 - str r0, [r1] - b _020CE0C8 -_020CE0B8: - mov r1, #0x4000000 - ldr r0, [r1] - bic r0, r0, #0x40000000 - str r0, [r1] -_020CE0C8: - ldr r0, _020CE0D8 ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE0D8: .word gGXState -_020CE0DC: .word 0x04000246 -_020CE0E0: .word 0x04000245 - arm_func_end GX_SetBankForBGExtPltt - - arm_func_start GX_SetBankForOBJExtPltt -GX_SetBankForOBJExtPltt: ; 0x020CE0E4 - stmdb sp!, {r3, lr} - ldr r1, _020CE184 ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0x10] - cmp r0, #0 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0x10] - beq _020CE164 - cmp r0, #0x20 - beq _020CE124 - cmp r0, #0x40 - beq _020CE144 - b _020CE174 -_020CE124: - mov r2, #0x4000000 - ldr r1, [r2] - ldr r0, _020CE188 ; =0x04000245 - orr r1, r1, #0x80000000 - str r1, [r2] - mov r1, #0x85 - strb r1, [r0] - b _020CE174 -_020CE144: - mov r2, #0x4000000 - ldr r1, [r2] - ldr r0, _020CE18C ; =0x04000246 - orr r1, r1, #0x80000000 - str r1, [r2] - mov r1, #0x85 - strb r1, [r0] - b _020CE174 -_020CE164: - mov r1, #0x4000000 - ldr r0, [r1] - bic r0, r0, #0x80000000 - str r0, [r1] -_020CE174: - ldr r0, _020CE184 ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE184: .word gGXState -_020CE188: .word 0x04000245 -_020CE18C: .word 0x04000246 - arm_func_end GX_SetBankForOBJExtPltt - - arm_func_start GX_SetBankForTex -GX_SetBankForTex: ; 0x020CE190 - stmdb sp!, {r3, lr} - ldr r1, _020CE34C ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #8] - cmp r0, #0 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #8] - ldr r2, _020CE350 ; =0x04000060 - bne _020CE1D4 - ldrh r1, [r2] - ldr r0, _020CE354 ; =0x0000CFFE - and r0, r1, r0 - strh r0, [r2] - b _020CE33C -_020CE1D4: - ldrh r1, [r2] - cmp r0, #0xf - bic r1, r1, #0x3000 - orr r1, r1, #1 - strh r1, [r2] - addls pc, pc, r0, lsl #2 - b _020CE33C -_020CE1F0: ; jump table - b _020CE33C ; case 0 - b _020CE330 ; case 1 - b _020CE2FC ; case 2 - b _020CE324 ; case 3 - b _020CE2D4 ; case 4 - b _020CE230 ; case 5 - b _020CE2F0 ; case 6 - b _020CE318 ; case 7 - b _020CE2B8 ; case 8 - b _020CE248 ; case 9 - b _020CE260 ; case 10 - b _020CE278 ; case 11 - b _020CE2C8 ; case 12 - b _020CE298 ; case 13 - b _020CE2E4 ; case 14 - b _020CE30C ; case 15 -_020CE230: - mov r1, #0x83 - ldr r0, _020CE358 ; =0x04000242 - strb r1, [r2, #0x1e0] - mov r1, #0x8b - strb r1, [r0] - b _020CE33C -_020CE248: - mov r1, #0x83 - ldr r0, _020CE35C ; =0x04000243 - strb r1, [r2, #0x1e0] - mov r1, #0x8b - strb r1, [r0] - b _020CE33C -_020CE260: - ldr r1, _020CE360 ; =0x04000241 - mov r0, #0x83 - strb r0, [r1] - mov r0, #0x8b - strb r0, [r1, #2] - b _020CE33C -_020CE278: - mov r0, #0x83 - ldr r1, _020CE360 ; =0x04000241 - strb r0, [r2, #0x1e0] - mov r0, #0x8b - strb r0, [r1] - mov r0, #0x93 - strb r0, [r1, #2] - b _020CE33C -_020CE298: - mov r0, #0x83 - ldr r1, _020CE358 ; =0x04000242 - strb r0, [r2, #0x1e0] - mov r0, #0x8b - strb r0, [r1] - mov r0, #0x93 - strb r0, [r1, #1] - b _020CE33C -_020CE2B8: - ldr r0, _020CE35C ; =0x04000243 - mov r1, #0x83 - strb r1, [r0] - b _020CE33C -_020CE2C8: - ldr r0, _020CE35C ; =0x04000243 - mov r1, #0x8b - strb r1, [r0] -_020CE2D4: - ldr r0, _020CE358 ; =0x04000242 - mov r1, #0x83 - strb r1, [r0] - b _020CE33C -_020CE2E4: - ldr r0, _020CE35C ; =0x04000243 - mov r1, #0x93 - strb r1, [r0] -_020CE2F0: - ldr r0, _020CE358 ; =0x04000242 - mov r1, #0x8b - strb r1, [r0] -_020CE2FC: - ldr r0, _020CE360 ; =0x04000241 - mov r1, #0x83 - strb r1, [r0] - b _020CE33C -_020CE30C: - ldr r0, _020CE35C ; =0x04000243 - mov r1, #0x9b - strb r1, [r0] -_020CE318: - ldr r0, _020CE358 ; =0x04000242 - mov r1, #0x93 - strb r1, [r0] -_020CE324: - ldr r0, _020CE360 ; =0x04000241 - mov r1, #0x8b - strb r1, [r0] -_020CE330: - ldr r0, _020CE364 ; =0x04000240 - mov r1, #0x83 - strb r1, [r0] -_020CE33C: - ldr r0, _020CE34C ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE34C: .word gGXState -_020CE350: .word 0x04000060 -_020CE354: .word 0x0000CFFE -_020CE358: .word 0x04000242 -_020CE35C: .word 0x04000243 -_020CE360: .word 0x04000241 -_020CE364: .word 0x04000240 - arm_func_end GX_SetBankForTex - - arm_func_start GX_SetBankForTexPltt -GX_SetBankForTexPltt: ; 0x020CE368 - stmdb sp!, {r3, lr} - ldr r1, _020CE440 ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0xa] - cmp r0, #0x30 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0xa] - bgt _020CE3BC - cmp r0, #0x30 - bge _020CE418 - cmp r0, #0x10 - bgt _020CE3B0 - bge _020CE424 - cmp r0, #0 - b _020CE430 -_020CE3B0: - cmp r0, #0x20 - beq _020CE3EC - b _020CE430 -_020CE3BC: - cmp r0, #0x60 - bgt _020CE3D4 - bge _020CE3E0 - cmp r0, #0x40 - beq _020CE3FC - b _020CE430 -_020CE3D4: - cmp r0, #0x70 - beq _020CE40C - b _020CE430 -_020CE3E0: - ldr r0, _020CE444 ; =0x04000246 - mov r1, #0x8b - strb r1, [r0] -_020CE3EC: - ldr r0, _020CE448 ; =0x04000245 - mov r1, #0x83 - strb r1, [r0] - b _020CE430 -_020CE3FC: - ldr r0, _020CE444 ; =0x04000246 - mov r1, #0x83 - strb r1, [r0] - b _020CE430 -_020CE40C: - ldr r0, _020CE444 ; =0x04000246 - mov r1, #0x9b - strb r1, [r0] -_020CE418: - ldr r0, _020CE448 ; =0x04000245 - mov r1, #0x93 - strb r1, [r0] -_020CE424: - ldr r0, _020CE44C ; =0x04000244 - mov r1, #0x83 - strb r1, [r0] -_020CE430: - ldr r0, _020CE440 ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE440: .word gGXState -_020CE444: .word 0x04000246 -_020CE448: .word 0x04000245 -_020CE44C: .word 0x04000244 - arm_func_end GX_SetBankForTexPltt - - arm_func_start GX_SetBankForClearImage -GX_SetBankForClearImage: ; 0x020CE450 - stmdb sp!, {r3, lr} - ldr r1, _020CE56C ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0xc] - cmp r0, #0xc - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0xc] - addls pc, pc, r0, lsl #2 - b _020CE55C -_020CE480: ; jump table - b _020CE50C ; case 0 - b _020CE520 ; case 1 - b _020CE4C0 ; case 2 - b _020CE4B4 ; case 3 - b _020CE540 ; case 4 - b _020CE55C ; case 5 - b _020CE55C ; case 6 - b _020CE55C ; case 7 - b _020CE4EC ; case 8 - b _020CE55C ; case 9 - b _020CE55C ; case 10 - b _020CE55C ; case 11 - b _020CE4E0 ; case 12 -_020CE4B4: - ldr r0, _020CE570 ; =0x04000240 - mov r1, #0x93 - strb r1, [r0] -_020CE4C0: - ldr r0, _020CE574 ; =0x04000241 - mov r2, #0x9b - ldr r1, _020CE578 ; =0x04000060 - strb r2, [r0] - ldrh r0, [r1] - orr r0, r0, #0x4000 - strh r0, [r1] - b _020CE55C -_020CE4E0: - ldr r0, _020CE57C ; =0x04000242 - mov r1, #0x93 - strb r1, [r0] -_020CE4EC: - ldr r0, _020CE580 ; =0x04000243 - mov r2, #0x9b - ldr r1, _020CE578 ; =0x04000060 - strb r2, [r0] - ldrh r0, [r1] - orr r0, r0, #0x4000 - strh r0, [r1] - b _020CE55C -_020CE50C: - ldr r1, _020CE578 ; =0x04000060 - ldrh r0, [r1] - bic r0, r0, #0x4000 - strh r0, [r1] - b _020CE55C -_020CE520: - ldr r0, _020CE570 ; =0x04000240 - mov r1, #0x9b - strb r1, [r0] - sub r1, r0, #0x1e0 - ldrh r0, [r1] - orr r0, r0, #0x4000 - strh r0, [r1] - b _020CE55C -_020CE540: - ldr r0, _020CE57C ; =0x04000242 - mov r2, #0x9b - ldr r1, _020CE578 ; =0x04000060 - strb r2, [r0] - ldrh r0, [r1] - orr r0, r0, #0x4000 - strh r0, [r1] -_020CE55C: - ldr r0, _020CE56C ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE56C: .word gGXState -_020CE570: .word 0x04000240 -_020CE574: .word 0x04000241 -_020CE578: .word 0x04000060 -_020CE57C: .word 0x04000242 -_020CE580: .word 0x04000243 - arm_func_end GX_SetBankForClearImage - - arm_func_start GX_SetBankForARM7 -GX_SetBankForARM7: ; 0x020CE584 - stmdb sp!, {r3, lr} - ldr r1, _020CE624 ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #6] - cmp r0, #8 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #6] - bgt _020CE5D8 - cmp r0, #8 - bge _020CE608 - cmp r0, #4 - bgt _020CE614 - cmp r0, #0 - blt _020CE614 - beq _020CE614 - cmp r0, #4 - beq _020CE5F8 - b _020CE614 -_020CE5D8: - cmp r0, #0xc - bne _020CE614 - ldr r1, _020CE628 ; =0x04000243 - mov r0, #0x8a - strb r0, [r1] - mov r0, #0x82 - strb r0, [r1, #-1] - b _020CE614 -_020CE5F8: - ldr r0, _020CE62C ; =0x04000242 - mov r1, #0x82 - strb r1, [r0] - b _020CE614 -_020CE608: - ldr r0, _020CE628 ; =0x04000243 - mov r1, #0x82 - strb r1, [r0] -_020CE614: - ldr r0, _020CE624 ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE624: .word gGXState -_020CE628: .word 0x04000243 -_020CE62C: .word 0x04000242 - arm_func_end GX_SetBankForARM7 - - arm_func_start GX_SetBankForLCDC -GX_SetBankForLCDC: ; 0x020CE630 - ldr r1, _020CE648 ; =gGXState - ldr ip, _020CE64C ; =GX_VRAMCNT_SetLCDC_ - ldrh r2, [r1] - orr r2, r2, r0 - strh r2, [r1] - bx ip - .align 2, 0 -_020CE648: .word gGXState -_020CE64C: .word GX_VRAMCNT_SetLCDC_ - arm_func_end GX_SetBankForLCDC - - arm_func_start GX_SetBankForSubBG -GX_SetBankForSubBG: ; 0x020CE650 - stmdb sp!, {r3, lr} - ldr r1, _020CE6E8 ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0x12] - cmp r0, #0x80 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0x12] - bgt _020CE6A4 - cmp r0, #0x80 - bge _020CE6CC - cmp r0, #4 - bgt _020CE6D8 - cmp r0, #0 - blt _020CE6D8 - beq _020CE6D8 - cmp r0, #4 - beq _020CE6B0 - b _020CE6D8 -_020CE6A4: - cmp r0, #0x180 - beq _020CE6C0 - b _020CE6D8 -_020CE6B0: - ldr r0, _020CE6EC ; =0x04000242 - mov r1, #0x84 - strb r1, [r0] - b _020CE6D8 -_020CE6C0: - ldr r0, _020CE6F0 ; =0x04000249 - mov r1, #0x81 - strb r1, [r0] -_020CE6CC: - ldr r0, _020CE6F4 ; =0x04000248 - mov r1, #0x81 - strb r1, [r0] -_020CE6D8: - ldr r0, _020CE6E8 ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE6E8: .word gGXState -_020CE6EC: .word 0x04000242 -_020CE6F0: .word 0x04000249 -_020CE6F4: .word 0x04000248 - arm_func_end GX_SetBankForSubBG - - arm_func_start GX_SetBankForSubOBJ -GX_SetBankForSubOBJ: ; 0x020CE6F8 - stmdb sp!, {r3, lr} - ldr r1, _020CE75C ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0x14] - cmp r0, #0 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0x14] - beq _020CE74C - cmp r0, #8 - beq _020CE740 - cmp r0, #0x100 - ldreq r0, _020CE760 ; =0x04000249 - moveq r1, #0x82 - streqb r1, [r0] - b _020CE74C -_020CE740: - ldr r0, _020CE764 ; =0x04000243 - mov r1, #0x84 - strb r1, [r0] -_020CE74C: - ldr r0, _020CE75C ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE75C: .word gGXState -_020CE760: .word 0x04000249 -_020CE764: .word 0x04000243 - arm_func_end GX_SetBankForSubOBJ - - arm_func_start GX_SetBankForSubBGExtPltt -GX_SetBankForSubBGExtPltt: ; 0x020CE768 - stmdb sp!, {r3, lr} - ldr r1, _020CE7DC ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0x16] - cmp r0, #0 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0x16] - beq _020CE7BC - cmp r0, #0x80 - bne _020CE7CC - ldr r3, _020CE7E0 ; =0x04001000 - ldr r0, _020CE7E4 ; =0x04000248 - ldr r2, [r3] - mov r1, #0x82 - orr r2, r2, #0x40000000 - str r2, [r3] - strb r1, [r0] - b _020CE7CC -_020CE7BC: - ldr r1, _020CE7E0 ; =0x04001000 - ldr r0, [r1] - bic r0, r0, #0x40000000 - str r0, [r1] -_020CE7CC: - ldr r0, _020CE7DC ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE7DC: .word gGXState -_020CE7E0: .word 0x04001000 -_020CE7E4: .word 0x04000248 - arm_func_end GX_SetBankForSubBGExtPltt - - arm_func_start GX_SetBankForSubOBJExtPltt -GX_SetBankForSubOBJExtPltt: ; 0x020CE7E8 - stmdb sp!, {r3, lr} - ldr r1, _020CE85C ; =gGXState - mvn ip, r0 - ldrh r3, [r1] - ldrh r2, [r1, #0x18] - cmp r0, #0 - orr r2, r3, r2 - and r2, ip, r2 - strh r2, [r1] - strh r0, [r1, #0x18] - beq _020CE83C - cmp r0, #0x100 - bne _020CE84C - ldr r3, _020CE860 ; =0x04001000 - ldr r0, _020CE864 ; =0x04000249 - ldr r2, [r3] - mov r1, #0x83 - orr r2, r2, #0x80000000 - str r2, [r3] - strb r1, [r0] - b _020CE84C -_020CE83C: - ldr r1, _020CE860 ; =0x04001000 - ldr r0, [r1] - bic r0, r0, #0x80000000 - str r0, [r1] -_020CE84C: - ldr r0, _020CE85C ; =gGXState - ldrh r0, [r0] - bl GX_VRAMCNT_SetLCDC_ - ldmia sp!, {r3, pc} - .align 2, 0 -_020CE85C: .word gGXState -_020CE860: .word 0x04001000 -_020CE864: .word 0x04000249 - arm_func_end GX_SetBankForSubOBJExtPltt - - arm_func_start resetBankForX_ -resetBankForX_: ; 0x020CE868 - stmdb sp!, {r4, lr} - ldrh r4, [r0] - mov r2, #0 - ldr r1, _020CE898 ; =gGXState - strh r2, [r0] - ldrh r2, [r1] - mov r0, r4 - orr r2, r2, r4 - strh r2, [r1] - bl GX_VRAMCNT_SetLCDC_ - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CE898: .word gGXState - arm_func_end resetBankForX_ - - arm_func_start GX_ResetBankForBG -GX_ResetBankForBG: ; 0x020CE89C - ldr ip, _020CE8A8 ; =resetBankForX_ - ldr r0, _020CE8AC ; =gGXState + 0x02 - bx ip - .align 2, 0 -_020CE8A8: .word resetBankForX_ -_020CE8AC: .word gGXState + 0x02 - arm_func_end GX_ResetBankForBG - - arm_func_start GX_ResetBankForOBJ -GX_ResetBankForOBJ: ; 0x020CE8B0 - ldr ip, _020CE8BC ; =resetBankForX_ - ldr r0, _020CE8C0 ; =gGXState + 0x04 - bx ip - .align 2, 0 -_020CE8BC: .word resetBankForX_ -_020CE8C0: .word gGXState + 0x04 - arm_func_end GX_ResetBankForOBJ - - arm_func_start GX_ResetBankForBGExtPltt -GX_ResetBankForBGExtPltt: ; 0x020CE8C4 - mov r2, #0x4000000 - ldr r1, [r2] - ldr ip, _020CE8E0 ; =resetBankForX_ - bic r1, r1, #0x40000000 - ldr r0, _020CE8E4 ; =gGXState + 0x0E - str r1, [r2] - bx ip - .align 2, 0 -_020CE8E0: .word resetBankForX_ -_020CE8E4: .word gGXState + 0x0E - arm_func_end GX_ResetBankForBGExtPltt - - arm_func_start GX_ResetBankForOBJExtPltt -GX_ResetBankForOBJExtPltt: ; 0x020CE8E8 - mov r2, #0x4000000 - ldr r1, [r2] - ldr ip, _020CE904 ; =resetBankForX_ - bic r1, r1, #0x80000000 - ldr r0, _020CE908 ; =gGXState + 0x10 - str r1, [r2] - bx ip - .align 2, 0 -_020CE904: .word resetBankForX_ -_020CE908: .word gGXState + 0x10 - arm_func_end GX_ResetBankForOBJExtPltt - - arm_func_start GX_ResetBankForTex -GX_ResetBankForTex: ; 0x020CE90C - ldr ip, _020CE918 ; =resetBankForX_ - ldr r0, _020CE91C ; =gGXState + 0x08 - bx ip - .align 2, 0 -_020CE918: .word resetBankForX_ -_020CE91C: .word gGXState + 0x08 - arm_func_end GX_ResetBankForTex - - arm_func_start GX_ResetBankForTexPltt -GX_ResetBankForTexPltt: ; 0x020CE920 - ldr ip, _020CE92C ; =resetBankForX_ - ldr r0, _020CE930 ; =gGXState + 0x0A - bx ip - .align 2, 0 -_020CE92C: .word resetBankForX_ -_020CE930: .word gGXState + 0x0A - arm_func_end GX_ResetBankForTexPltt - - arm_func_start GX_ResetBankForClearImage -GX_ResetBankForClearImage: ; 0x020CE934 - ldr ip, _020CE940 ; =resetBankForX_ - ldr r0, _020CE944 ; =gGXState + 0x0C - bx ip - .align 2, 0 -_020CE940: .word resetBankForX_ -_020CE944: .word gGXState + 0x0C - arm_func_end GX_ResetBankForClearImage - - arm_func_start GX_ResetBankForSubBG -GX_ResetBankForSubBG: ; 0x020CE948 - ldr ip, _020CE954 ; =resetBankForX_ - ldr r0, _020CE958 ; =gGXState + 0x12 - bx ip - .align 2, 0 -_020CE954: .word resetBankForX_ -_020CE958: .word gGXState + 0x12 - arm_func_end GX_ResetBankForSubBG - - arm_func_start GX_ResetBankForSubOBJ -GX_ResetBankForSubOBJ: ; 0x020CE95C - ldr ip, _020CE968 ; =resetBankForX_ - ldr r0, _020CE96C ; =gGXState + 0x14 - bx ip - .align 2, 0 -_020CE968: .word resetBankForX_ -_020CE96C: .word gGXState + 0x14 - arm_func_end GX_ResetBankForSubOBJ - - arm_func_start GX_ResetBankForSubBGExtPltt -GX_ResetBankForSubBGExtPltt: ; 0x020CE970 - ldr r2, _020CE98C ; =0x04001000 - ldr ip, _020CE990 ; =resetBankForX_ - ldr r1, [r2] - ldr r0, _020CE994 ; =gGXState + 0x16 - bic r1, r1, #0x40000000 - str r1, [r2] - bx ip - .align 2, 0 -_020CE98C: .word 0x04001000 -_020CE990: .word resetBankForX_ -_020CE994: .word gGXState + 0x16 - arm_func_end GX_ResetBankForSubBGExtPltt - - arm_func_start GX_ResetBankForSubOBJExtPltt -GX_ResetBankForSubOBJExtPltt: ; 0x020CE998 - ldr r2, _020CE9B4 ; =0x04001000 - ldr ip, _020CE9B8 ; =resetBankForX_ - ldr r1, [r2] - ldr r0, _020CE9BC ; =gGXState + 0x18 - bic r1, r1, #0x80000000 - str r1, [r2] - bx ip - .align 2, 0 -_020CE9B4: .word 0x04001000 -_020CE9B8: .word resetBankForX_ -_020CE9BC: .word gGXState + 0x18 - arm_func_end GX_ResetBankForSubOBJExtPltt - - arm_func_start disableBankForX_ -disableBankForX_: ; 0x020CE9C0 - stmdb sp!, {r4, lr} - ldrh r4, [r0] - mov r1, #0 - strh r1, [r0] - tst r4, #1 - ldrne r0, _020CEA78 ; =0x04000240 - strneb r1, [r0] - tst r4, #2 - ldrne r0, _020CEA7C ; =0x04000241 - movne r1, #0 - strneb r1, [r0] - tst r4, #4 - ldrne r0, _020CEA80 ; =0x04000242 - movne r1, #0 - strneb r1, [r0] - tst r4, #8 - ldrne r0, _020CEA84 ; =0x04000243 - movne r1, #0 - strneb r1, [r0] - tst r4, #0x10 - ldrne r0, _020CEA88 ; =0x04000244 - movne r1, #0 - strneb r1, [r0] - tst r4, #0x20 - ldrne r0, _020CEA8C ; =0x04000245 - movne r1, #0 - strneb r1, [r0] - tst r4, #0x40 - ldrne r0, _020CEA90 ; =0x04000246 - movne r1, #0 - strneb r1, [r0] - tst r4, #0x80 - ldrne r0, _020CEA94 ; =0x04000248 - movne r1, #0 - strneb r1, [r0] - tst r4, #0x100 - ldrne r0, _020CEA98 ; =0x04000249 - movne r1, #0 - strneb r1, [r0] - ldr r1, _020CEA9C ; =GXi_VRamLockId - mov r0, r4, lsl #0x10 - ldrh r1, [r1] - mov r0, r0, lsr #0x10 - bl OSi_UnlockVram - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020CEA78: .word 0x04000240 -_020CEA7C: .word 0x04000241 -_020CEA80: .word 0x04000242 -_020CEA84: .word 0x04000243 -_020CEA88: .word 0x04000244 -_020CEA8C: .word 0x04000245 -_020CEA90: .word 0x04000246 -_020CEA94: .word 0x04000248 -_020CEA98: .word 0x04000249 -_020CEA9C: .word GXi_VRamLockId - arm_func_end disableBankForX_ - - arm_func_start GX_DisableBankForBG -GX_DisableBankForBG: ; 0x020CEAA0 - ldr ip, _020CEAAC ; =disableBankForX_ - ldr r0, _020CEAB0 ; =gGXState + 0x02 - bx ip - .align 2, 0 -_020CEAAC: .word disableBankForX_ -_020CEAB0: .word gGXState + 0x02 - arm_func_end GX_DisableBankForBG - - arm_func_start GX_DisableBankForOBJ -GX_DisableBankForOBJ: ; 0x020CEAB4 - ldr ip, _020CEAC0 ; =disableBankForX_ - ldr r0, _020CEAC4 ; =gGXState + 0x04 - bx ip - .align 2, 0 -_020CEAC0: .word disableBankForX_ -_020CEAC4: .word gGXState + 0x04 - arm_func_end GX_DisableBankForOBJ - - arm_func_start GX_DisableBankForBGExtPltt -GX_DisableBankForBGExtPltt: ; 0x020CEAC8 - mov r2, #0x4000000 - ldr r1, [r2] - ldr ip, _020CEAE4 ; =disableBankForX_ - bic r1, r1, #0x40000000 - ldr r0, _020CEAE8 ; =gGXState + 0x0E - str r1, [r2] - bx ip - .align 2, 0 -_020CEAE4: .word disableBankForX_ -_020CEAE8: .word gGXState + 0x0E - arm_func_end GX_DisableBankForBGExtPltt - - arm_func_start GX_DisableBankForOBJExtPltt -GX_DisableBankForOBJExtPltt: ; 0x020CEAEC - mov r2, #0x4000000 - ldr r1, [r2] - ldr ip, _020CEB08 ; =disableBankForX_ - bic r1, r1, #0x80000000 - ldr r0, _020CEB0C ; =gGXState + 0x10 - str r1, [r2] - bx ip - .align 2, 0 -_020CEB08: .word disableBankForX_ -_020CEB0C: .word gGXState + 0x10 - arm_func_end GX_DisableBankForOBJExtPltt - - arm_func_start GX_DisableBankForTex -GX_DisableBankForTex: ; 0x020CEB10 - ldr ip, _020CEB1C ; =disableBankForX_ - ldr r0, _020CEB20 ; =gGXState + 0x08 - bx ip - .align 2, 0 -_020CEB1C: .word disableBankForX_ -_020CEB20: .word gGXState + 0x08 - arm_func_end GX_DisableBankForTex - - arm_func_start GX_DisableBankForTexPltt -GX_DisableBankForTexPltt: ; 0x020CEB24 - ldr ip, _020CEB30 ; =disableBankForX_ - ldr r0, _020CEB34 ; =gGXState + 0x0A - bx ip - .align 2, 0 -_020CEB30: .word disableBankForX_ -_020CEB34: .word gGXState + 0x0A - arm_func_end GX_DisableBankForTexPltt - - arm_func_start GX_DisableBankForClearImage -GX_DisableBankForClearImage: ; 0x020CEB38 - ldr ip, _020CEB44 ; =disableBankForX_ - ldr r0, _020CEB48 ; =gGXState + 0x0C - bx ip - .align 2, 0 -_020CEB44: .word disableBankForX_ -_020CEB48: .word gGXState + 0x0C - arm_func_end GX_DisableBankForClearImage - - arm_func_start GX_DisableBankForARM7 -GX_DisableBankForARM7: ; 0x020CEB4C - ldr ip, _020CEB58 ; =disableBankForX_ - ldr r0, _020CEB5C ; =gGXState + 0x06 - bx ip - .align 2, 0 -_020CEB58: .word disableBankForX_ -_020CEB5C: .word gGXState + 0x06 - arm_func_end GX_DisableBankForARM7 - - arm_func_start GX_DisableBankForLCDC -GX_DisableBankForLCDC: ; 0x020CEB60 - ldr ip, _020CEB6C ; =disableBankForX_ - ldr r0, _020CEB70 ; =gGXState - bx ip - .align 2, 0 -_020CEB6C: .word disableBankForX_ -_020CEB70: .word gGXState - arm_func_end GX_DisableBankForLCDC - - arm_func_start GX_DisableBankForSubBG -GX_DisableBankForSubBG: ; 0x020CEB74 - ldr ip, _020CEB80 ; =disableBankForX_ - ldr r0, _020CEB84 ; =gGXState + 0x12 - bx ip - .align 2, 0 -_020CEB80: .word disableBankForX_ -_020CEB84: .word gGXState + 0x12 - arm_func_end GX_DisableBankForSubBG - - arm_func_start GX_DisableBankForSubOBJ -GX_DisableBankForSubOBJ: ; 0x020CEB88 - ldr ip, _020CEB94 ; =disableBankForX_ - ldr r0, _020CEB98 ; =gGXState + 0x14 - bx ip - .align 2, 0 -_020CEB94: .word disableBankForX_ -_020CEB98: .word gGXState + 0x14 - arm_func_end GX_DisableBankForSubOBJ - - arm_func_start GX_DisableBankForSubBGExtPltt -GX_DisableBankForSubBGExtPltt: ; 0x020CEB9C - ldr r2, _020CEBB8 ; =0x04001000 - ldr ip, _020CEBBC ; =disableBankForX_ - ldr r1, [r2] - ldr r0, _020CEBC0 ; =gGXState + 0x16 - bic r1, r1, #0x40000000 - str r1, [r2] - bx ip - .align 2, 0 -_020CEBB8: .word 0x04001000 -_020CEBBC: .word disableBankForX_ -_020CEBC0: .word gGXState + 0x16 - arm_func_end GX_DisableBankForSubBGExtPltt - - arm_func_start GX_DisableBankForSubOBJExtPltt -GX_DisableBankForSubOBJExtPltt: ; 0x020CEBC4 - ldr r2, _020CEBE0 ; =0x04001000 - ldr ip, _020CEBE4 ; =disableBankForX_ - ldr r1, [r2] - ldr r0, _020CEBE8 ; =gGXState + 0x18 - bic r1, r1, #0x80000000 - str r1, [r2] - bx ip - .align 2, 0 -_020CEBE0: .word 0x04001000 -_020CEBE4: .word disableBankForX_ -_020CEBE8: .word gGXState + 0x18 - arm_func_end GX_DisableBankForSubOBJExtPltt - - arm_func_start GX_GetBankForOBJ -GX_GetBankForOBJ: ; 0x020CEBEC - ldr r0, _020CEBF8 ; =gGXState - ldrh r0, [r0, #4] - bx lr - .align 2, 0 -_020CEBF8: .word gGXState - arm_func_end GX_GetBankForOBJ - - arm_func_start GX_GetBankForOBJExtPltt -GX_GetBankForOBJExtPltt: ; 0x020CEBFC - ldr r0, _020CEC08 ; =gGXState - ldrh r0, [r0, #0x10] - bx lr - .align 2, 0 -_020CEC08: .word gGXState - arm_func_end GX_GetBankForOBJExtPltt - - arm_func_start GX_GetBankForLCDC -GX_GetBankForLCDC: ; 0x020CEC0C - ldr r0, _020CEC18 ; =gGXState - ldrh r0, [r0] - bx lr - .align 2, 0 -_020CEC18: .word gGXState - arm_func_end GX_GetBankForLCDC - - arm_func_start GX_GetBankForSubOBJ -GX_GetBankForSubOBJ: ; 0x020CEC1C - ldr r0, _020CEC28 ; =gGXState - ldrh r0, [r0, #0x14] - bx lr - .align 2, 0 -_020CEC28: .word gGXState - arm_func_end GX_GetBankForSubOBJ - - arm_func_start GX_GetBankForSubOBJExtPltt -GX_GetBankForSubOBJExtPltt: ; 0x020CEC2C - ldr r0, _020CEC38 ; =gGXState - ldrh r0, [r0, #0x18] - bx lr - .align 2, 0 -_020CEC38: .word gGXState - arm_func_end GX_GetBankForSubOBJExtPltt diff --git a/lib/NitroSDK/asm/gxasm.s b/lib/NitroSDK/asm/gxasm.s deleted file mode 100644 index 37fa51df..00000000 --- a/lib/NitroSDK/asm/gxasm.s +++ /dev/null @@ -1,29 +0,0 @@ - .include "asm/macros.inc" - .include "gxasm.inc" - .include "global.inc" - - .text - - arm_func_start GX_SendFifo48B -GX_SendFifo48B: ; 0x020D0E2C - ldmia r0!, {r2, r3, ip} - stmia r1, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1, {r2, r3, ip} - bx lr - arm_func_end GX_SendFifo48B - - arm_func_start GX_SendFifo64B -GX_SendFifo64B: ; 0x020D0E50 - stmdb sp!, {r4, r5, r6, r7, r8} - ldmia r0!, {r2, r3, r4, r5, r6, r7, r8, ip} - stmia r1, {r2, r3, r4, r5, r6, r7, r8, ip} - ldmia r0!, {r2, r3, r4, r5, r6, r7, r8, ip} - stmia r1, {r2, r3, r4, r5, r6, r7, r8, ip} - ldmia sp!, {r4, r5, r6, r7, r8} - bx lr - arm_func_end GX_SendFifo64B diff --git a/lib/NitroSDK/asm/gxstate.s b/lib/NitroSDK/asm/gxstate.s deleted file mode 100644 index a8cd50e3..00000000 --- a/lib/NitroSDK/asm/gxstate.s +++ /dev/null @@ -1,40 +0,0 @@ - .include "asm/macros.inc" - .include "gxstate.inc" - .include "global.inc" - - .bss - - .public gGXState -gGXState: - .space 0x1A - - .text - - arm_func_start GX_InitGXState -GX_InitGXState: ; 0x020CDAEC - ldr r0, _020CDB44 ; =gGXState - mov r2, #0 - strh r2, [r0] - strh r2, [r0, #2] - strh r2, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - strh r2, [r0, #0xa] - strh r2, [r0, #0xc] - strh r2, [r0, #0xe] - strh r2, [r0, #0x10] - strh r2, [r0, #0x12] - strh r2, [r0, #0x14] - strh r2, [r0, #0x16] - ldr r1, _020CDB48 ; =0x04000240 - strh r2, [r0, #0x18] - str r2, [r1] - strb r2, [r1, #4] - strb r2, [r1, #5] - strb r2, [r1, #6] - strh r2, [r1, #8] - bx lr - .align 2, 0 -_020CDB44: .word gGXState -_020CDB48: .word 0x04000240 - arm_func_end GX_InitGXState diff --git a/lib/NitroSDK/asm/include/fx.inc b/lib/NitroSDK/asm/include/fx.inc deleted file mode 100644 index 83fcf457..00000000 --- a/lib/NitroSDK/asm/include/fx.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public FX_Init -.public FX_Modf diff --git a/lib/NitroSDK/asm/include/fx_atanidx.inc b/lib/NitroSDK/asm/include/fx_atanidx.inc deleted file mode 100644 index 4be6f9c9..00000000 --- a/lib/NitroSDK/asm/include/fx_atanidx.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public FX_Div -.public FX_Atan2Idx diff --git a/lib/NitroSDK/asm/include/fx_cp.inc b/lib/NitroSDK/asm/include/fx_cp.inc deleted file mode 100644 index 8a885d61..00000000 --- a/lib/NitroSDK/asm/include/fx_cp.inc +++ /dev/null @@ -1,12 +0,0 @@ -#include -#pragma once -.public FX_Div -.public FX_Inv -.public FX_InvFx64c -.public FX_Sqrt -.public FX_GetDivResultFx64c -.public FX_GetDivResult -.public FX_InvAsync -.public FX_DivAsync -.public FX_DivS32 -.public FX_ModS32 diff --git a/lib/NitroSDK/asm/include/fx_mtx22.inc b/lib/NitroSDK/asm/include/fx_mtx22.inc deleted file mode 100644 index a664c86d..00000000 --- a/lib/NitroSDK/asm/include/fx_mtx22.inc +++ /dev/null @@ -1,5 +0,0 @@ -#include -#pragma once -.public MTX_Identity22_ -.public MTX_Rot22_ -.public MTX_ScaleApply22 diff --git a/lib/NitroSDK/asm/include/fx_mtx33.inc b/lib/NitroSDK/asm/include/fx_mtx33.inc deleted file mode 100644 index e5318633..00000000 --- a/lib/NitroSDK/asm/include/fx_mtx33.inc +++ /dev/null @@ -1,13 +0,0 @@ -#include -#pragma once -.public MTX_Identity33_ -.public MTX_ScaleApply33 -.public MTX_RotX33_ -.public MTX_RotY33_ -.public MTX_RotZ33_ -.public MTX_Inverse33 -.public MTX_Concat33 -.public MTX_MultVec33 -.public FX_GetDivResult -.public FX_InvAsync -.public MI_Copy36B diff --git a/lib/NitroSDK/asm/include/fx_mtx43.inc b/lib/NitroSDK/asm/include/fx_mtx43.inc deleted file mode 100644 index c9874951..00000000 --- a/lib/NitroSDK/asm/include/fx_mtx43.inc +++ /dev/null @@ -1,20 +0,0 @@ -#include -#pragma once -.public MTX_ScaleApply33 -.public MTX_Identity43_ -.public MTX_Copy43To44_ -.public MTX_TransApply43 -.public MTX_Scale43_ -.public MTX_ScaleApply43 -.public MTX_RotY43_ -.public MTX_Inverse43 -.public MTX_Concat43 -.public MTX_MultVec43 -.public MTX_LookAt -.public FX_GetDivResult -.public FX_InvAsync -.public VEC_DotProduct -.public VEC_CrossProduct -.public VEC_Normalize -.public MI_Copy36B -.public MI_Copy48B diff --git a/lib/NitroSDK/asm/include/fx_mtx44.inc b/lib/NitroSDK/asm/include/fx_mtx44.inc deleted file mode 100644 index 6984243c..00000000 --- a/lib/NitroSDK/asm/include/fx_mtx44.inc +++ /dev/null @@ -1,17 +0,0 @@ -#include -#pragma once -.public MTX_Identity44_ -.public MTX_Copy44To43_ -.public MTX_TransApply44 -.public MTX_RotX44_ -.public MTX_RotY44_ -.public MTX_RotZ44_ -.public MTX_Concat44 -.public MTX_PerspectiveW -.public MTX_OrthoW -.public FX_Div -.public FX_GetDivResultFx64c -.public FX_GetDivResult -.public FX_InvAsync -.public MI_Copy48B -.public _ll_sdiv diff --git a/lib/NitroSDK/asm/include/fx_sincos.inc b/lib/NitroSDK/asm/include/fx_sincos.inc deleted file mode 100644 index 752d922c..00000000 --- a/lib/NitroSDK/asm/include/fx_sincos.inc +++ /dev/null @@ -1,2 +0,0 @@ -#include -#pragma once diff --git a/lib/NitroSDK/asm/include/fx_trig.inc b/lib/NitroSDK/asm/include/fx_trig.inc deleted file mode 100644 index 9048fb5b..00000000 --- a/lib/NitroSDK/asm/include/fx_trig.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public FX_SinFx64c -.public FX_CosFx64c diff --git a/lib/NitroSDK/asm/include/fx_vec.inc b/lib/NitroSDK/asm/include/fx_vec.inc deleted file mode 100644 index fa75d9ce..00000000 --- a/lib/NitroSDK/asm/include/fx_vec.inc +++ /dev/null @@ -1,14 +0,0 @@ -#include -#pragma once -.public VEC_Add -.public VEC_Subtract -.public VEC_Fx16Add -.public VEC_DotProduct -.public VEC_Fx16DotProduct -.public VEC_CrossProduct -.public VEC_Fx16CrossProduct -.public VEC_Mag -.public VEC_Normalize -.public VEC_Fx16Normalize -.public VEC_MultAdd -.public VEC_Distance diff --git a/lib/NitroSDK/asm/include/g2.inc b/lib/NitroSDK/asm/include/g2.inc deleted file mode 100644 index 9b90333a..00000000 --- a/lib/NitroSDK/asm/include/g2.inc +++ /dev/null @@ -1,6 +0,0 @@ -#include -#pragma once -.public G2x_SetBGyAffine_ -.public G2x_SetBlendAlpha_ -.public G2x_SetBlendBrightness_ -.public G2x_ChangeBlendBrightness_ diff --git a/lib/NitroSDK/asm/include/g3.inc b/lib/NitroSDK/asm/include/g3.inc deleted file mode 100644 index d2474efc..00000000 --- a/lib/NitroSDK/asm/include/g3.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public G3_BeginMakeDL -.public G3_EndMakeDL diff --git a/lib/NitroSDK/asm/include/g3_util.inc b/lib/NitroSDK/asm/include/g3_util.inc deleted file mode 100644 index 96c4572e..00000000 --- a/lib/NitroSDK/asm/include/g3_util.inc +++ /dev/null @@ -1,11 +0,0 @@ -#include -#pragma once -.public MTX_LookAt -.public MTX_OrthoW -.public G3_LoadMtx44 -.public G3_LoadMtx43 -.public G3i_OrthoW_ -.public G3i_LookAt_ -.public G3_RotX -.public G3_RotY -.public G3_RotZ diff --git a/lib/NitroSDK/asm/include/g3b.inc b/lib/NitroSDK/asm/include/g3b.inc deleted file mode 100644 index 3243726e..00000000 --- a/lib/NitroSDK/asm/include/g3b.inc +++ /dev/null @@ -1,16 +0,0 @@ -#include -#pragma once -.public G3B_PushMtx -.public G3B_PopMtx -.public G3B_LoadMtx44 -.public G3B_Color -.public G3B_Normal -.public G3B_Vtx -.public G3B_PolygonAttr -.public G3B_MaterialColorDiffAmb -.public G3B_MaterialColorSpecEmi -.public G3B_LightVector -.public G3B_LightColor -.public G3B_Begin -.public G3B_End -.public MI_Copy64B diff --git a/lib/NitroSDK/asm/include/g3imm.inc b/lib/NitroSDK/asm/include/g3imm.inc deleted file mode 100644 index cb0342ca..00000000 --- a/lib/NitroSDK/asm/include/g3imm.inc +++ /dev/null @@ -1,9 +0,0 @@ -#include -#pragma once -.public G3_LoadMtx44 -.public G3_LoadMtx43 -.public G3_MultMtx43 -.public G3_MultMtx33 -.public GX_SendFifo48B -.public GX_SendFifo64B -.public MI_Copy36B diff --git a/lib/NitroSDK/asm/include/g3x.inc b/lib/NitroSDK/asm/include/g3x.inc deleted file mode 100644 index 42c2a864..00000000 --- a/lib/NitroSDK/asm/include/g3x.inc +++ /dev/null @@ -1,21 +0,0 @@ -#include -#pragma once -.public G3X_Init -.public G3X_Reset -.public G3X_InitMtxStack -.public G3X_SetFog -.public G3X_GetClipMtx -.public G3X_GetVectorMtx -.public G3X_SetEdgeColorTable -.public G3X_SetFogTable -.public G3X_SetClearColor -.public G3X_GetBoxTestResult -.public G3X_SetHOffset -.public MI_DmaFill32 -.public MI_DmaFill32Async -.public MIi_CpuCopy16 -.public MIi_CpuClear32 -.public MI_Copy32B -.public MI_Copy36B -.public MI_Copy64B -.public GXi_DmaId diff --git a/lib/NitroSDK/asm/include/gx.inc b/lib/NitroSDK/asm/include/gx.inc deleted file mode 100644 index 99609a34..00000000 --- a/lib/NitroSDK/asm/include/gx.inc +++ /dev/null @@ -1,19 +0,0 @@ -#include -#pragma once -.public GX_Init -.public GX_HBlankIntr -.public GX_VBlankIntr -.public GX_DispOff -.public GX_DispOn -.public GX_SetGraphicsMode -.public GXS_SetGraphicsMode -.public GXx_SetMasterBrightness_ -.public GXx_GetMasterBrightness_ -.public GX_InitGXState -.public OS_GetLockID -.public OS_Terminate -.public MI_DmaFill32 -.public MIi_CpuClear32 -.public sIsDispOn -.public GXi_DmaId -.public GXi_VRamLockId diff --git a/lib/NitroSDK/asm/include/gx_bgcnt.inc b/lib/NitroSDK/asm/include/gx_bgcnt.inc deleted file mode 100644 index 9582bd16..00000000 --- a/lib/NitroSDK/asm/include/gx_bgcnt.inc +++ /dev/null @@ -1,18 +0,0 @@ -#include -#pragma once -.public G2_GetBG0ScrPtr -.public G2S_GetBG0ScrPtr -.public G2_GetBG1ScrPtr -.public G2S_GetBG1ScrPtr -.public G2_GetBG2ScrPtr -.public G2S_GetBG2ScrPtr -.public G2_GetBG3ScrPtr -.public G2S_GetBG3ScrPtr -.public G2_GetBG0CharPtr -.public G2S_GetBG0CharPtr -.public G2_GetBG1CharPtr -.public G2S_GetBG1CharPtr -.public G2_GetBG2CharPtr -.public G2S_GetBG2CharPtr -.public G2_GetBG3CharPtr -.public G2S_GetBG3CharPtr diff --git a/lib/NitroSDK/asm/include/gx_load2d.inc b/lib/NitroSDK/asm/include/gx_load2d.inc deleted file mode 100644 index 18f10427..00000000 --- a/lib/NitroSDK/asm/include/gx_load2d.inc +++ /dev/null @@ -1,69 +0,0 @@ -#include -#pragma once -.public GX_SetBankForBGExtPltt -.public GX_SetBankForOBJExtPltt -.public GX_SetBankForSubBGExtPltt -.public GX_SetBankForSubOBJExtPltt -.public GX_ResetBankForBGExtPltt -.public GX_ResetBankForOBJExtPltt -.public GX_ResetBankForSubBGExtPltt -.public GX_ResetBankForSubOBJExtPltt -.public G2_GetBG0ScrPtr -.public G2S_GetBG0ScrPtr -.public G2_GetBG1ScrPtr -.public G2S_GetBG1ScrPtr -.public G2_GetBG2ScrPtr -.public G2S_GetBG2ScrPtr -.public G2_GetBG3ScrPtr -.public G2S_GetBG3ScrPtr -.public G2_GetBG0CharPtr -.public G2S_GetBG0CharPtr -.public G2_GetBG1CharPtr -.public G2S_GetBG1CharPtr -.public G2_GetBG2CharPtr -.public G2S_GetBG2CharPtr -.public G2_GetBG3CharPtr -.public G2S_GetBG3CharPtr -.public GX_LoadBGPltt -.public GXS_LoadBGPltt -.public GX_LoadOBJPltt -.public GXS_LoadOBJPltt -.public GX_LoadOAM -.public GXS_LoadOAM -.public GX_LoadOBJ -.public GXS_LoadOBJ -.public GX_LoadBG0Scr -.public GXS_LoadBG0Scr -.public GX_LoadBG1Scr -.public GXS_LoadBG1Scr -.public GX_LoadBG2Scr -.public GXS_LoadBG2Scr -.public GX_LoadBG3Scr -.public GXS_LoadBG3Scr -.public GX_LoadBG0Char -.public GXS_LoadBG0Char -.public GX_LoadBG1Char -.public GXS_LoadBG1Char -.public GX_LoadBG2Char -.public GXS_LoadBG2Char -.public GX_LoadBG3Char -.public GXS_LoadBG3Char -.public GX_BeginLoadBGExtPltt -.public GX_LoadBGExtPltt -.public GX_EndLoadBGExtPltt -.public GX_BeginLoadOBJExtPltt -.public GX_LoadOBJExtPltt -.public GX_EndLoadOBJExtPltt -.public GXS_BeginLoadBGExtPltt -.public GXS_LoadBGExtPltt -.public GXS_EndLoadBGExtPltt -.public GXS_BeginLoadOBJExtPltt -.public GXS_LoadOBJExtPltt -.public GXS_EndLoadOBJExtPltt -.public MI_DmaCopy32 -.public MI_DmaCopy16 -.public MI_DmaCopy32Async -.public MI_WaitDma -.public MIi_CpuCopy16 -.public MIi_CpuCopy32 -.public GXi_DmaId diff --git a/lib/NitroSDK/asm/include/gx_load3d.inc b/lib/NitroSDK/asm/include/gx_load3d.inc deleted file mode 100644 index 6a1edfbb..00000000 --- a/lib/NitroSDK/asm/include/gx_load3d.inc +++ /dev/null @@ -1,23 +0,0 @@ -#include -#pragma once -.public GX_SetBankForTex -.public GX_SetBankForTexPltt -.public GX_SetBankForClearImage -.public GX_ResetBankForTex -.public GX_ResetBankForTexPltt -.public GX_ResetBankForClearImage -.public GX_BeginLoadTex -.public GX_LoadTex -.public GX_EndLoadTex -.public GX_BeginLoadTexPltt -.public GX_LoadTexPltt -.public GX_EndLoadTexPltt -.public GX_BeginLoadClearImage -.public GX_LoadClearImageColor -.public GX_LoadClearImageDepth -.public GX_EndLoadClearImage -.public MI_DmaCopy32 -.public MI_DmaCopy32Async -.public MI_WaitDma -.public MIi_CpuCopy32 -.public GXi_DmaId diff --git a/lib/NitroSDK/asm/include/gx_vramcnt.inc b/lib/NitroSDK/asm/include/gx_vramcnt.inc deleted file mode 100644 index 3375e826..00000000 --- a/lib/NitroSDK/asm/include/gx_vramcnt.inc +++ /dev/null @@ -1,47 +0,0 @@ -#include -#pragma once -.public GX_SetBankForBG -.public GX_SetBankForOBJ -.public GX_SetBankForBGExtPltt -.public GX_SetBankForOBJExtPltt -.public GX_SetBankForTex -.public GX_SetBankForTexPltt -.public GX_SetBankForClearImage -.public GX_SetBankForARM7 -.public GX_SetBankForLCDC -.public GX_SetBankForSubBG -.public GX_SetBankForSubOBJ -.public GX_SetBankForSubBGExtPltt -.public GX_SetBankForSubOBJExtPltt -.public GX_ResetBankForBG -.public GX_ResetBankForOBJ -.public GX_ResetBankForBGExtPltt -.public GX_ResetBankForOBJExtPltt -.public GX_ResetBankForTex -.public GX_ResetBankForTexPltt -.public GX_ResetBankForClearImage -.public GX_ResetBankForSubBG -.public GX_ResetBankForSubOBJ -.public GX_ResetBankForSubBGExtPltt -.public GX_ResetBankForSubOBJExtPltt -.public GX_DisableBankForBG -.public GX_DisableBankForOBJ -.public GX_DisableBankForBGExtPltt -.public GX_DisableBankForOBJExtPltt -.public GX_DisableBankForTex -.public GX_DisableBankForTexPltt -.public GX_DisableBankForClearImage -.public GX_DisableBankForARM7 -.public GX_DisableBankForLCDC -.public GX_DisableBankForSubBG -.public GX_DisableBankForSubOBJ -.public GX_DisableBankForSubBGExtPltt -.public GX_DisableBankForSubOBJExtPltt -.public GX_GetBankForOBJ -.public GX_GetBankForOBJExtPltt -.public GX_GetBankForLCDC -.public GX_GetBankForSubOBJ -.public GX_GetBankForSubOBJExtPltt -.public OSi_UnlockVram -.public GXi_VRamLockId -.public gGXState diff --git a/lib/NitroSDK/asm/include/gxasm.inc b/lib/NitroSDK/asm/include/gxasm.inc deleted file mode 100644 index 738538d7..00000000 --- a/lib/NitroSDK/asm/include/gxasm.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public GX_SendFifo48B -.public GX_SendFifo64B diff --git a/lib/NitroSDK/asm/include/gxstate.inc b/lib/NitroSDK/asm/include/gxstate.inc deleted file mode 100644 index 1ea12124..00000000 --- a/lib/NitroSDK/asm/include/gxstate.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public GX_InitGXState -.public gGXState diff --git a/lib/NitroSDK/asm/include/mb.inc b/lib/NitroSDK/asm/include/mb.inc deleted file mode 100644 index a2abc282..00000000 --- a/lib/NitroSDK/asm/include/mb.inc +++ /dev/null @@ -1,64 +0,0 @@ -#include -#pragma once -.public _start_AutoloadDoneCallback -.public OS_CreateThread -.public OS_ExitThread -.public OS_SleepThread -.public OS_WakeupThreadDirect -.public OS_SetThreadPriority -.public OS_GetThreadPriority -.public DC_InvalidateRange -.public DC_FlushRange -.public DC_WaitWriteBufferEmpty -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_SpinWait -.public OS_GetMacAddress -.public OS_Terminate -.public MI_DmaCopy16 -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public MIi_CpuClear32 -.public MIi_CpuClearFast -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public PXI_IsCallbackReady -.public FS_FindArchive -.public FS_InitFile -.public FS_OpenFileDirect -.public FS_OpenFile -.public FS_CloseFile -.public FS_ReadFile -.public FS_SeekFile -.public WM_SetIndCallback -.public WM_SetPortCallback -.public WM_ReadMPData -.public WM_GetAllowedChannel -.public WM_GetNextTgid -.public WM_Initialize -.public WM_Reset -.public WM_End -.public WM_SetParentParameter -.public WMi_StartParentEx -.public WM_StartScan -.public WM_StartConnectEx -.public WM_Disconnect -.public WM_StartMPEx -.public WM_SetMPDataToPortEx -.public WM_SetGameInfo -.public WM_SetBeaconIndication -.public WM_SetLifeTime -.public _s32_div_f -.public _u32_div_f -.public MB_CommSetParentStateCallback -.public MB_CommGetChildUser -.public MB_CommIsBootable -.public MB_CommResponseRequest -.public MB_GetSegmentLength -.public MB_ReadSegment -.public MB_RegisterFile -.public MB_Init -.public MB_SetParentCommParam -.public MB_StartParentFromIdle -.public MB_End -.public MB_DisconnectChild diff --git a/lib/NitroSDK/asm/include/mi_compress.inc b/lib/NitroSDK/asm/include/mi_compress.inc deleted file mode 100644 index 82c502ac..00000000 --- a/lib/NitroSDK/asm/include/mi_compress.inc +++ /dev/null @@ -1,3 +0,0 @@ -#include -#pragma once -.public MI_CompressLZImpl diff --git a/lib/NitroSDK/asm/include/mi_dma.inc b/lib/NitroSDK/asm/include/mi_dma.inc deleted file mode 100644 index 622369db..00000000 --- a/lib/NitroSDK/asm/include/mi_dma.inc +++ /dev/null @@ -1,16 +0,0 @@ -#include -#pragma once -.public OSi_EnterDmaCallback -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_Terminate -.public MI_DmaFill32 -.public MI_DmaCopy32 -.public MI_DmaCopy16 -.public MI_DmaFill32Async -.public MI_DmaCopy32Async -.public MI_WaitDma -.public MI_StopDma -.public MIi_CheckAnotherAutoDMA -.public MIi_CheckDma0SourceAddress -.public MIi_DmaSetParams diff --git a/lib/NitroSDK/asm/include/mi_dma_card.inc b/lib/NitroSDK/asm/include/mi_dma_card.inc deleted file mode 100644 index 906f986c..00000000 --- a/lib/NitroSDK/asm/include/mi_dma_card.inc +++ /dev/null @@ -1,6 +0,0 @@ -#include -#pragma once -.public MIi_CheckAnotherAutoDMA -.public MIi_CheckDma0SourceAddress -.public MIi_CardDmaCopy32 -.public MIi_DmaSetParams diff --git a/lib/NitroSDK/asm/include/mi_dma_gxcommand.inc b/lib/NitroSDK/asm/include/mi_dma_gxcommand.inc deleted file mode 100644 index e6e87405..00000000 --- a/lib/NitroSDK/asm/include/mi_dma_gxcommand.inc +++ /dev/null @@ -1,17 +0,0 @@ -#include -#pragma once -.public OS_SetIrqFunction -.public OS_GetIrqFunction -.public OSi_EnterDmaCallback -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_ResetRequestIrqMask -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MI_WaitDma -.public MIi_CheckAnotherAutoDMA -.public MIi_CheckDma0SourceAddress -.public MI_SendGXCommandAsync -.public MI_SendGXCommandAsyncFast -.public MIi_DmaSetParams -.public MI_SendGXCommand diff --git a/lib/NitroSDK/asm/include/mi_dma_hblank.inc b/lib/NitroSDK/asm/include/mi_dma_hblank.inc deleted file mode 100644 index a4c681ce..00000000 --- a/lib/NitroSDK/asm/include/mi_dma_hblank.inc +++ /dev/null @@ -1,8 +0,0 @@ -#include -#pragma once -.public MI_WaitDma -.public MIi_CheckAnotherAutoDMA -.public MIi_CheckDma0SourceAddress -.public MI_HBlankDmaCopy32 -.public MI_HBlankDmaCopy16 -.public MIi_DmaSetParams diff --git a/lib/NitroSDK/asm/include/mi_init.inc b/lib/NitroSDK/asm/include/mi_init.inc deleted file mode 100644 index 9254714e..00000000 --- a/lib/NitroSDK/asm/include/mi_init.inc +++ /dev/null @@ -1,4 +0,0 @@ -#include -#pragma once -.public MI_SetWramBank -.public MI_StopDma diff --git a/lib/NitroSDK/asm/include/mi_memory.inc b/lib/NitroSDK/asm/include/mi_memory.inc deleted file mode 100644 index eeff2ca6..00000000 --- a/lib/NitroSDK/asm/include/mi_memory.inc +++ /dev/null @@ -1,16 +0,0 @@ -#include -#pragma once -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public MIi_CpuClear32 -.public MIi_CpuCopy32 -.public MIi_CpuSend32 -.public MIi_CpuClearFast -.public MIi_CpuCopyFast -.public MI_Copy32B -.public MI_Copy36B -.public MI_Copy48B -.public MI_Copy64B -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public MI_Zero36B diff --git a/lib/NitroSDK/asm/include/mi_swap.inc b/lib/NitroSDK/asm/include/mi_swap.inc deleted file mode 100644 index 752d922c..00000000 --- a/lib/NitroSDK/asm/include/mi_swap.inc +++ /dev/null @@ -1,2 +0,0 @@ -#include -#pragma once diff --git a/lib/NitroSDK/asm/include/mi_uncompress.inc b/lib/NitroSDK/asm/include/mi_uncompress.inc deleted file mode 100644 index 2eaea8ee..00000000 --- a/lib/NitroSDK/asm/include/mi_uncompress.inc +++ /dev/null @@ -1,3 +0,0 @@ -#include -#pragma once -.public MI_UncompressLZ8 diff --git a/lib/NitroSDK/asm/include/mi_wram.inc b/lib/NitroSDK/asm/include/mi_wram.inc deleted file mode 100644 index c75cbb41..00000000 --- a/lib/NitroSDK/asm/include/mi_wram.inc +++ /dev/null @@ -1,3 +0,0 @@ -#include -#pragma once -.public MI_SetWramBank diff --git a/lib/NitroSDK/asm/include/wvr.inc b/lib/NitroSDK/asm/include/wvr.inc deleted file mode 100644 index 1fe85ac6..00000000 --- a/lib/NitroSDK/asm/include/wvr.inc +++ /dev/null @@ -1,13 +0,0 @@ -#include -#pragma once -.public WVR_StartUpAsync -.public WVR_TerminateAsync -.public OS_GetLockID -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OSi_TryLockVram -.public OSi_UnlockVram -.public PXI_Init -.public PXI_SetFifoRecvCallback -.public PXI_IsCallbackReady -.public PXI_SendWordByFifo diff --git a/lib/NitroSDK/asm/mb.s b/lib/NitroSDK/asm/mb.s deleted file mode 100644 index 136d510b..00000000 --- a/lib/NitroSDK/asm/mb.s +++ /dev/null @@ -1,5848 +0,0 @@ - .include "asm/macros.inc" - .include "mb.inc" - .include "global.inc" - - .public _start_AutoloadDoneCallback - - .text - - arm_func_start MB_CommSetParentStateCallback -MB_CommSetParentStateCallback: ; 0x0221BA70 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _0221BA94 ; =mbc - ldr r1, [r1] - add r1, r1, #0x1000 - str r4, [r1, #0x4e4] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221BA94: .word mbc - arm_func_end MB_CommSetParentStateCallback - - arm_func_start MB_CommGetChildUser -MB_CommGetChildUser: ; 0x0221BA98 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl OS_DisableInterrupts - ldr r1, _0221BB18 ; =mbc - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - beq _0221BB08 - mov r0, r5 - bl IsChildAidValid - cmp r0, #0 - beq _0221BB08 - ldr r0, _0221BB18 ; =mbc - sub r1, r5, #1 - ldr r3, [r0] - mov r2, #0x16 - add r0, r3, #0x1340 - mla r0, r1, r2, r0 - add r1, r3, #0x72 - add r1, r1, #0x1700 - bl MI_CpuCopy8 - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _0221BB18 ; =mbc - ldr r0, [r0] - add r0, r0, #0x72 - add r0, r0, #0x1700 - ldmia sp!, {r3, r4, r5, pc} -_0221BB08: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .balign 4, 0 -_0221BB18: .word mbc - arm_func_end MB_CommGetChildUser - - arm_func_start MB_CommIsBootable -MB_CommIsBootable: ; 0x0221BB1C - stmdb sp!, {r4, lr} - ldr r1, _0221BB6C ; =mbc - mov r4, r0 - ldr r1, [r1] - cmp r1, #0 - beq _0221BB64 - bl IsChildAidValid - cmp r0, #0 - beq _0221BB64 - ldr r0, _0221BB6C ; =mbc - sub r1, r4, #1 - ldr r0, [r0] - add r0, r0, r1, lsl #2 - add r0, r0, #0x1000 - ldr r0, [r0, #0x4e8] - cmp r0, #7 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_0221BB64: - mov r0, #0 - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221BB6C: .word mbc - arm_func_end MB_CommIsBootable - - arm_func_start MB_CommResponseRequest -MB_CommResponseRequest: ; 0x0221BB70 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r7, r0 - bl OS_DisableInterrupts - mov r6, r0 - cmp r4, #3 - addls pc, pc, r4, lsl #2 - b _0221BBD0 -_0221BB90: ; jump table - b _0221BBA0 ; case 0 - b _0221BBAC ; case 1 - b _0221BBB8 ; case 2 - b _0221BBC4 ; case 3 -_0221BBA0: - mov r5, #0xa - mov r4, #4 - b _0221BBE0 -_0221BBAC: - mov r5, #0xa - mov r4, #3 - b _0221BBE0 -_0221BBB8: - mov r5, #0xe - mov r4, #2 - b _0221BBE0 -_0221BBC4: - mov r5, #7 - mov r4, #5 - b _0221BBE0 -_0221BBD0: - mov r0, r6 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221BBE0: - ldr r0, _0221BC4C ; =mbc - ldr r0, [r0] - cmp r0, #0 - beq _0221BC3C - mov r0, r7 - bl IsChildAidValid - cmp r0, #0 - beq _0221BC3C - ldr r0, _0221BC4C ; =mbc - sub r2, r7, #1 - ldr r1, [r0] - add r0, r1, r2, lsl #2 - add r0, r0, #0x1000 - ldr r0, [r0, #0x4e8] - cmp r5, r0 - bne _0221BC3C - add r0, r1, r2, lsl #1 - add r1, r0, #0x1700 - mov r0, r6 - strh r4, [r1, #0x54] - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221BC3C: - mov r0, r6 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221BC4C: .word mbc - arm_func_end MB_CommResponseRequest - - arm_func_start MBi_CommChangeParentState -MBi_CommChangeParentState: ; 0x0221BC50 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl IsChildAidValid - cmp r0, #0 - beq _0221BC84 - ldr r0, _0221BC98 ; =mbc - sub r1, r6, #1 - ldr r0, [r0] - add r0, r0, r1, lsl #2 - add r0, r0, #0x1000 - str r5, [r0, #0x4e8] -_0221BC84: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MBi_CommChangeParentStateCallbackOnly - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_0221BC98: .word mbc - arm_func_end MBi_CommChangeParentState - - arm_func_start MBi_CommChangeParentStateCallbackOnly -MBi_CommChangeParentStateCallbackOnly: ; 0x0221BC9C - stmdb sp!, {r3, lr} - ldr r3, _0221BCC0 ; =mbc - ldr r3, [r3] - add r3, r3, #0x1000 - ldr r3, [r3, #0x4e4] - cmp r3, #0 - ldmeqia sp!, {r3, pc} - blx r3 - ldmia sp!, {r3, pc} - .balign 4, 0 -_0221BCC0: .word mbc - arm_func_end MBi_CommChangeParentStateCallbackOnly - - arm_func_start MBi_CommParentCallback -MBi_CommParentCallback: ; 0x0221BCC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r5, r0 - mov r4, r1 - cmp r5, #0x19 - bgt _0221BD1C - bge _0221BF60 - cmp r5, #0x11 - bgt _0221BD10 - bge _0221C114 - cmp r5, #3 - bgt _0221C114 - cmp r5, #0 - blt _0221C114 - beq _0221BD54 - cmp r5, #1 - beq _0221BD78 - cmp r5, #3 - beq _0221BF54 - b _0221C114 -_0221BD10: - cmp r5, #0x15 - beq _0221BD40 - b _0221C114 -_0221BD1C: - cmp r5, #0xff - bgt _0221BD34 - bge _0221C000 - cmp r5, #0x1c - beq _0221BF68 - b _0221C114 -_0221BD34: - cmp r5, #0x100 - beq _0221C070 - b _0221C114 -_0221BD40: - mov r2, r4 - mov r0, #0 - mov r1, #1 - bl MBi_CommChangeParentState - b _0221C114 -_0221BD54: - ldrh r0, [r4, #0x10] - cmp r0, #0 - beq _0221C114 - cmp r0, #0x10 - bhs _0221C114 - mov r2, r4 - mov r1, #2 - bl MBi_CommChangeParentState - b _0221C114 -_0221BD78: - ldrh r0, [r4, #0x10] - cmp r0, #0 - beq _0221C114 - cmp r0, #0x10 - bhs _0221C114 - ldr r2, _0221C15C ; =mbc - sub r0, r0, #1 - ldr r3, [r2] - mov r1, #0 - add r0, r3, r0, lsl #1 - add r0, r0, #0x1400 - strh r1, [r0, #0x8a] - ldr r0, [r2] - ldrh r2, [r4, #0x10] - add r0, r0, #0xa8 - add r3, r0, #0x1400 - sub r0, r2, #1 - add r0, r3, r0, lsl #2 - mov r2, #4 - bl MI_CpuFill8 - ldr r0, _0221C15C ; =mbc - ldrh r1, [r4, #0x10] - ldr r0, [r0] - mov r2, #0x16 - add r0, r0, #0x1340 - sub r1, r1, #1 - mla r0, r1, r2, r0 - mov r1, #0 - bl MI_CpuFill8 - ldrh r0, [r4, #0x10] - bl MBi_ClearParentPieceBuffer - ldrh r1, [r4, #0x10] - ldr r0, _0221C15C ; =mbc - mov r3, #0 - ldr r2, [r0] - sub r1, r1, #1 - add r1, r2, r1, lsl #1 - add r1, r1, #0x1700 - strh r3, [r1, #0x54] - ldrh r7, [r4, #0x10] - ldr r8, [r0] - sub r2, r3, #1 - sub r6, r7, #1 - add r1, r8, r6 - add r1, r1, #0x1500 - ldrsb r3, [r1, #0x26] - cmp r3, r2 - beq _0221BEA4 - ldr r1, _0221C160 ; =0x000005D4 - and r2, r3, #0xff - mul r1, r2, r1 - add r2, r8, r1 - add r8, r2, #0x1d00 - mov r3, #1 - ldrh sb, [r8, #0x4e] - mvn r2, r3, lsl r7 - and sb, sb, r2 - strh sb, [r8, #0x4e] - ldr r8, [r0] - sub sb, r3, #2 - add r8, r8, r1 - add r8, r8, #0x1d00 - ldrh ip, [r8, #0x50] - orr r3, ip, r3, lsl r7 - strh r3, [r8, #0x50] - ldr r3, [r0] - add r3, r3, r6 - add r3, r3, #0x1000 - strb sb, [r3, #0x526] - ldr r0, [r0] - add r0, r0, r1 - add r0, r0, #0x1d00 - ldrh r1, [r0, #0x4c] - and r1, r1, r2 - strh r1, [r0, #0x4c] -_0221BEA4: - ldr r1, _0221C15C ; =mbc - ldrh r2, [r4, #0x10] - ldr r6, [r1] - mov r3, #1 - add r0, r6, #0x1500 - ldrh r0, [r0, #0x36] - tst r0, r3, lsl r2 - beq _0221BEF0 - add r0, r6, #0x1000 - ldrb r2, [r0, #0x535] - sub r2, r2, #1 - strb r2, [r0, #0x535] - ldr r0, [r1] - ldrh r1, [r4, #0x10] - add r0, r0, #0x1500 - ldrh r2, [r0, #0x36] - mvn r1, r3, lsl r1 - and r1, r2, r1 - strh r1, [r0, #0x36] -_0221BEF0: - ldrh r0, [r4, #0x10] - ldr r1, _0221C15C ; =mbc - ldr r2, [r1] - sub r1, r0, #1 - add r1, r2, r1, lsl #2 - add r1, r1, #0x1000 - ldr r1, [r1, #0x4e8] - cmp r1, #8 - bne _0221BF20 - mov r1, #9 - mov r2, #0 - bl MBi_CommChangeParentState -_0221BF20: - ldrh r0, [r4, #0x10] - mov r2, r4 - mov r1, #3 - bl MBi_CommChangeParentState - ldrh r1, [r4, #0x10] - ldr r0, _0221C15C ; =mbc - mov r3, #0 - ldr r2, [r0] - sub r0, r1, #1 - add r0, r2, r0, lsl #2 - add r0, r0, #0x1000 - str r3, [r0, #0x4e8] - b _0221C114 -_0221BF54: - mov r0, r4 - bl MBi_CommParentRecvData - b _0221C114 -_0221BF60: - bl MBi_CommParentSendData - b _0221C114 -_0221BF68: - mov r8, #0 - ldr r6, _0221C15C ; =mbc - ldr r4, _0221C160 ; =0x000005D4 - mov r7, r8 -_0221BF78: - mul sb, r8, r4 - ldr r1, [r6] - add r2, r1, sb - add r0, r2, #0x1000 - ldrb r0, [r0, #0xd52] - cmp r0, #0 - addne r2, r2, #0x1d00 - ldrneh r3, [r2, #0x50] - cmpne r3, #0 - beq _0221BFC8 - add r0, r1, #0x6c - add r0, r0, #0x1800 - ldrh r2, [r2, #0x4e] - add r0, r0, sb - add r1, r1, #0x1340 - bl MB_UpdateGameInfoMember - ldr r0, [r6] - add r0, r0, sb - add r0, r0, #0x1d00 - strh r7, [r0, #0x50] -_0221BFC8: - add r0, r8, #1 - and r8, r0, #0xff - cmp r8, #0x10 - blo _0221BF78 - bl MBi_GetGgid - mov r6, r0 - bl MBi_GetTgid - mov r4, r0 - bl MBi_GetAttribute - mov r2, r0 - mov r0, r6 - mov r1, r4 - bl MB_SendGameInfoBeacon - b _0221C114 -_0221C000: - ldrh r0, [r4, #2] - cmp r0, #0xf - addls pc, pc, r0, lsl #2 - b _0221C060 -_0221C010: ; jump table - b _0221C060 ; case 0 - b _0221C050 ; case 1 - b _0221C060 ; case 2 - b _0221C060 ; case 3 - b _0221C050 ; case 4 - b _0221C050 ; case 5 - b _0221C050 ; case 6 - b _0221C060 ; case 7 - b _0221C050 ; case 8 - b _0221C050 ; case 9 - b _0221C060 ; case 10 - b _0221C060 ; case 11 - b _0221C060 ; case 12 - b _0221C060 ; case 13 - b _0221C060 ; case 14 - b _0221C060 ; case 15 -_0221C050: - mov r0, #0 - mov r1, #9 - bl MBi_CommCallParentError - b _0221C114 -_0221C060: - mov r0, #0 - mov r1, #8 - bl MBi_CommCallParentError - b _0221C114 -_0221C070: - ldrh r0, [r4] - cmp r0, #0x1d - addls pc, pc, r0, lsl #2 - b _0221C108 -_0221C080: ; jump table - b _0221C0F8 ; case 0 - b _0221C108 ; case 1 - b _0221C108 ; case 2 - b _0221C108 ; case 3 - b _0221C108 ; case 4 - b _0221C108 ; case 5 - b _0221C108 ; case 6 - b _0221C0F8 ; case 7 - b _0221C0F8 ; case 8 - b _0221C108 ; case 9 - b _0221C108 ; case 10 - b _0221C108 ; case 11 - b _0221C108 ; case 12 - b _0221C0F8 ; case 13 - b _0221C0F8 ; case 14 - b _0221C0F8 ; case 15 - b _0221C108 ; case 16 - b _0221C0F8 ; case 17 - b _0221C0F8 ; case 18 - b _0221C108 ; case 19 - b _0221C108 ; case 20 - b _0221C0F8 ; case 21 - b _0221C108 ; case 22 - b _0221C108 ; case 23 - b _0221C108 ; case 24 - b _0221C0F8 ; case 25 - b _0221C108 ; case 26 - b _0221C108 ; case 27 - b _0221C108 ; case 28 - b _0221C0F8 ; case 29 -_0221C0F8: - mov r0, #0 - mov r1, #9 - bl MBi_CommCallParentError - b _0221C114 -_0221C108: - mov r0, #0 - mov r1, #8 - bl MBi_CommCallParentError -_0221C114: - cmp r5, #0x11 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, _0221C15C ; =mbc - mov r0, #0 - ldr r1, [r1] - mov r2, #0x7d00 - add r3, r1, #0x1000 - ldr r4, [r3, #0x4e4] - bl MIi_CpuClearFast - ldr r1, _0221C15C ; =mbc - mov r0, #0 - str r0, [r1] - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r2, r0 - mov r1, #0xc - blx r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .balign 4, 0 -_0221C15C: .word mbc -_0221C160: .word 0x000005D4 - arm_func_end MBi_CommParentCallback - - arm_func_start MBi_CommParentRecvDataPerChild -MBi_CommParentRecvDataPerChild: ; 0x0221C164 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x34 - movs r6, r1 - addeq sp, sp, #0x34 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - cmp r6, #0xf - addhi sp, sp, #0x34 - ldmhiia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r1, sp, #0x20 - mov r2, r6 - add r0, r0, #0xa - bl MBi_SetRecvBufferFromChild - ldr r1, _0221C63C ; =mbc - ldrb r7, [sp, #0x20] - ldr r2, [r1] - sub r3, r6, #1 - add r4, r2, r3, lsl #2 - add r4, r4, #0x1000 - ldr r4, [r4, #0x4e8] - mov r5, r0 - cmp r7, #0xb - addls pc, pc, r7, lsl #2 - b _0221C634 -_0221C1C0: ; jump table - b _0221C634 ; case 0 - b _0221C634 ; case 1 - b _0221C634 ; case 2 - b _0221C634 ; case 3 - b _0221C634 ; case 4 - b _0221C634 ; case 5 - b _0221C634 ; case 6 - b _0221C1F0 ; case 7 - b _0221C488 ; case 8 - b _0221C530 ; case 9 - b _0221C5A0 ; case 10 - b _0221C634 ; case 11 -_0221C1F0: - cmp r4, #2 - bne _0221C298 - cmp r5, #0 - addeq sp, sp, #0x34 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r1, sp, #0 - mov r2, #0x1d - bl MI_CpuCopy8 - ldr r2, _0221C63C ; =mbc - sub r0, r6, #1 - ldr r1, [r2] - ldr r3, [sp] - add r1, r1, r0, lsl #2 - add r1, r1, #0x1000 - str r3, [r1, #0x4a8] - ldr r1, [r2] - ldrh r3, [sp, #0x1a] - add r1, r1, r0, lsl #1 - add r1, r1, #0x1400 - strh r3, [r1, #0x8a] - ldr r1, [r2] - mov r2, #0x16 - add r1, r1, #0x1340 - mla r1, r0, r2, r1 - add r0, sp, #4 - bl MI_CpuCopy8 - ldr r0, _0221C63C ; =mbc - sub r2, r6, #1 - ldr r3, [r0] - mov r0, #0x16 - mul r7, r2, r0 - add r8, r3, #0x1340 - and r1, r6, #0xff - ldrb r3, [r8, r7] - mov r0, r1, lsl #0x1c - add r2, sp, #4 - bic r1, r3, #0xf0 - orr r1, r1, r0, lsr #24 - strb r1, [r8, r7] - mov r0, r6 - mov r1, #0xa - bl MBi_CommChangeParentState -_0221C298: - cmp r4, #0xa - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrb lr, [r5, #0x1c] - mov r0, #0 - cmp lr, #0x10 - bhs _0221C2F4 - ldr r2, _0221C63C ; =mbc - ldr r1, _0221C640 ; =0x000005D4 - ldr r3, [r2] - mla r4, lr, r1, r3 - add r1, r4, #0x1000 - ldrb r2, [r1, #0xd52] - cmp r2, #0 - beq _0221C2F4 - sub r2, r6, #1 - add r3, r3, r2, lsl #2 - ldr r2, [r1, #0xd40] - add r1, r3, #0x1000 - ldr r3, [r1, #0x4a8] - ldr r1, [r2, #0x14] - cmp r3, r1 - beq _0221C314 -_0221C2F4: - ldr r0, _0221C63C ; =mbc - sub r1, r6, #1 - ldr r0, [r0] - mov r2, #4 - add r0, r0, r1, lsl #1 - add r0, r0, #0x1700 - strh r2, [r0, #0x54] - b _0221C390 -_0221C314: - mov r5, r0 - add r1, r4, #0x1d00 - mov r3, #1 - b _0221C33C -_0221C324: - ldrh r2, [r1, #0x4e] - tst r2, r3, lsl r5 - addne r0, r0, #1 - add r2, r5, #1 - andne r0, r0, #0xff - and r5, r2, #0xff -_0221C33C: - cmp r5, #0x10 - blo _0221C324 - ldr r2, _0221C63C ; =mbc - ldr r1, _0221C640 ; =0x000005D4 - ldr r2, [r2] - mla r1, lr, r1, r2 - add r1, r1, #0x1000 - ldr r1, [r1, #0xd40] - ldrb r1, [r1, #0x18] - cmp r0, r1 - blo _0221C390 - sub r0, r6, #1 - add r1, r2, r0, lsl #1 - add r3, r1, #0x1700 - mov r2, #0 - mov r0, r6 - mov r1, #0xb - strh r2, [r3, #0x54] - bl MBi_CommChangeParentState - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C390: - ldr r3, _0221C63C ; =mbc - sub ip, r6, #1 - ldr r1, [r3] - add r0, r1, ip, lsl #1 - add r4, r0, #0x1700 - ldrh r0, [r4, #0x54] - cmp r0, #3 - beq _0221C3C0 - cmp r0, #4 - beq _0221C46C - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C3C0: - add r0, r1, #0x1500 - ldrh r0, [r0, #0x36] - mov r5, #1 - tst r0, r5, lsl r6 - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r1, r1, #0x1000 - ldrb r4, [r1, #0x535] - ldr r2, _0221C640 ; =0x000005D4 - mov r0, r6 - add r4, r4, #1 - strb r4, [r1, #0x535] - ldr r1, [r3] - mul r4, lr, r2 - add r7, r1, #0x1500 - ldrh r8, [r7, #0x36] - mov r2, #0 - mov r1, #5 - orr r8, r8, r5, lsl r6 - strh r8, [r7, #0x36] - ldr r7, [r3] - add r7, r7, ip - add r7, r7, #0x1000 - strb lr, [r7, #0x526] - ldr r7, [r3] - add r7, r7, #0x4e - add lr, r7, #0x1d00 - ldrh r7, [lr, r4] - orr r7, r7, r5, lsl r6 - strh r7, [lr, r4] - ldr r7, [r3] - add r7, r7, #0xd50 - add lr, r7, #0x1000 - ldrh r7, [lr, r4] - orr r5, r7, r5, lsl r6 - strh r5, [lr, r4] - ldr r3, [r3] - add r3, r3, ip, lsl #1 - add r3, r3, #0x1700 - strh r2, [r3, #0x54] - bl MBi_CommChangeParentState - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C46C: - mov r2, #0 - mov r0, r6 - mov r1, #4 - strh r2, [r4, #0x54] - bl MBi_CommChangeParentState - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C488: - cmp r4, #5 - bne _0221C4A8 - mov r0, r6 - mov r1, #0xe - mov r2, #0 - bl MBi_CommChangeParentState - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C4A8: - cmp r4, #0xe - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r0, r2, r3, lsl #1 - add r0, r0, #0x1700 - ldrh r0, [r0, #0x54] - cmp r0, #2 - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r0, r2, r3 - add r0, r0, #0x1000 - ldrb r7, [r0, #0x526] - ldr r4, _0221C640 ; =0x000005D4 - add r0, r2, #0x14c - mul r5, r7, r4 - add r7, r0, #0x1c00 - ldrh r4, [r7, r5] - mov r0, #1 - mov r2, #0 - orr r0, r4, r0, lsl r6 - strh r0, [r7, r5] - ldr r4, [r1] - mov r0, r6 - add r4, r4, r5 - add r4, r4, #0x1d00 - strh r2, [r4, #0x48] - ldr r4, [r1] - mov r1, #6 - add r3, r4, r3, lsl #1 - add r3, r3, #0x1700 - strh r2, [r3, #0x54] - bl MBi_CommChangeParentState - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C530: - cmp r4, #6 - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r0, r2, r3 - add r0, r0, #0x1000 - ldrb r4, [r0, #0x526] - cmp r4, #0xff - addeq sp, sp, #0x34 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, _0221C640 ; =0x000005D4 - ldrh r1, [sp, #0x22] - mla r0, r4, r0, r2 - add r0, r0, #0x1d00 - ldrh r0, [r0, #0x4a] - bl MBi_calc_nextsendblock - ldr r2, _0221C63C ; =mbc - ldr r1, _0221C640 ; =0x000005D4 - ldr r3, [r2] - ldr r2, _0221C644 ; =_02247480 - mla r1, r4, r1, r3 - add r1, r1, #0x1d00 - strh r0, [r1, #0x4a] - ldr r1, [r2] - mov r0, #1 - orr r0, r1, r0, lsl r4 - str r0, [r2] - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C5A0: - cmp r4, #6 - bne _0221C5FC - add r0, r2, r3 - add r0, r0, #0x1000 - ldrb r3, [r0, #0x526] - cmp r3, #0xff - addeq sp, sp, #0x34 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, _0221C640 ; =0x000005D4 - add r0, r2, #0x14c - mul r4, r3, r1 - add r5, r0, #0x1c00 - mov r0, #1 - ldrh r1, [r5, r4] - mvn r0, r0, lsl r6 - and r3, r1, r0 - mov r0, r6 - mov r1, #7 - mov r2, #0 - strh r3, [r5, r4] - bl MBi_CommChangeParentState - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0221C5FC: - cmp r4, #7 - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r0, r2, r3, lsl #1 - add r3, r0, #0x1700 - ldrh r0, [r3, #0x54] - cmp r0, #5 - addne sp, sp, #0x34 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r2, #0 - mov r0, r6 - mov r1, #8 - strh r2, [r3, #0x54] - bl MBi_CommChangeParentState -_0221C634: - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .balign 4, 0 -_0221C63C: .word mbc -_0221C640: .word 0x000005D4 -_0221C644: .word _02247480 - arm_func_end MBi_CommParentRecvDataPerChild - - arm_func_start MBi_CommParentRecvData -MBi_CommParentRecvData: ; 0x0221C648 - stmdb sp!, {r4, r5, r6, lr} - mov ip, #0 - ldr r2, _0221C6E4 ; =mbc - ldr r1, _0221C6E8 ; =0x000005D4 - mov r4, r0 - mov r3, ip -_0221C660: - ldr r0, [r2] - mla r5, ip, r1, r0 - add r0, r5, #0x1000 - ldrb r0, [r0, #0xd52] - cmp r0, #0 - addne r0, r5, #0x1d00 - strneh r3, [r0, #0x4a] - add r0, ip, #1 - mov r0, r0, lsl #0x10 - mov ip, r0, lsr #0x10 - cmp ip, #0x10 - blo _0221C660 - ldr r0, _0221C6EC ; =_02247480 - mov r1, #0 - ldr r5, _0221C6F0 ; =0x0000FFFF - str r1, [r0] - mov r6, #1 -_0221C6A4: - mov r0, r4 - mov r1, r6 - bl WM_ReadMPData - cmp r0, #0 - ldrneh r1, [r0] - cmpne r1, r5 - cmpne r1, #0 - beq _0221C6CC - mov r1, r6 - bl MBi_CommParentRecvDataPerChild -_0221C6CC: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, #0xf - bls _0221C6A4 - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_0221C6E4: .word mbc -_0221C6E8: .word 0x000005D4 -_0221C6EC: .word _02247480 -_0221C6F0: .word 0x0000FFFF - arm_func_end MBi_CommParentRecvData - - arm_func_start MBi_CommParentSendMsg -MBi_CommParentSendMsg: ; 0x0221C6F4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0221C730 ; =mbc - mov r4, r1 - ldr r1, [r2] - strb r0, [sp] - add r0, sp, #0 - bl MBi_MakeParentSendBuffer - ldr r0, _0221C730 ; =mbc - mov r1, r4 - ldr r2, [r0] - mov r0, #6 - bl MBi_BlockHeaderEnd - add sp, sp, #8 - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221C730: .word mbc - arm_func_end MBi_CommParentSendMsg - - arm_func_start MBi_CommParentSendDLFileInfo -MBi_CommParentSendDLFileInfo: ; 0x0221C734 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - mov r5, #0 - add r0, sp, #6 - mov r1, r5 - mov r2, #0x10 - mvn r4, #0 - bl MI_CpuFill8 - ldr r1, _0221C8C0 ; =mbc - mov r0, #1 - ldr r1, [r1] - add ip, sp, #6 -_0221C764: - add r2, r1, r0, lsl #2 - add r2, r2, #0x1000 - ldr r2, [r2, #0x4e4] - cmp r2, #5 - bne _0221C790 - add r2, r1, r0 - add r2, r2, #0x1500 - ldrsb r3, [r2, #0x25] - ldrb r2, [ip, r3] - add r2, r2, #1 - strb r2, [ip, r3] -_0221C790: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #0xf - bls _0221C764 - ldr r2, _0221C8C4 ; =_02245980 - ldr ip, _0221C8C8 ; =0x000005D4 - ldrb r3, [r2] - mov r0, #0 - add lr, sp, #6 -_0221C7B8: - add r2, r3, #1 - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #28 - add r2, r3, r2, ror #28 - and r3, r2, #0xff - mla r2, r3, ip, r1 - add r2, r2, #0x1000 - ldrb r2, [r2, #0xd52] - cmp r2, #0 - ldrneb r2, [lr, r3] - cmpne r2, #0 - movne r0, r3, lsl #0x18 - movne r4, r0, asr #0x18 - bne _0221C800 - add r0, r0, #1 - and r0, r0, #0xff - cmp r0, #0x10 - blo _0221C7B8 -_0221C800: - mvn r0, #0 - cmp r4, r0 - addeq sp, sp, #0x18 - moveq r0, #0x15 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _0221C8C4 ; =_02245980 - mov r0, #1 - strb r4, [r2] - mov r3, r0 -_0221C824: - add r2, r1, r0, lsl #2 - add r2, r2, #0x1000 - ldr r2, [r2, #0x4e4] - cmp r2, #5 - bne _0221C854 - add r2, r1, r0 - add r2, r2, #0x1500 - ldrsb r2, [r2, #0x25] - cmp r4, r2 - orreq r2, r5, r3, lsl r0 - moveq r2, r2, lsl #0x10 - moveq r5, r2, lsr #0x10 -_0221C854: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #0xf - bls _0221C824 - mov r2, #3 - add r0, sp, #0 - strb r2, [sp] - strh r4, [sp, #2] - bl MBi_MakeParentSendBuffer - movs r1, r0 - beq _0221C8A4 - ldr r0, _0221C8C0 ; =mbc - ldr r3, _0221C8C8 ; =0x000005D4 - ldr r0, [r0] - mov r2, #0xe4 - add r0, r0, #0x388 - add r0, r0, #0x1400 - mla r0, r4, r3, r0 - bl MI_CpuCopy8 -_0221C8A4: - ldr r0, _0221C8C0 ; =mbc - mov r1, r5 - ldr r2, [r0] - mov r0, #0xea - bl MBi_BlockHeaderEnd - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - .balign 4, 0 -_0221C8C0: .word mbc -_0221C8C4: .word _02245980 -_0221C8C8: .word 0x000005D4 - arm_func_end MBi_CommParentSendDLFileInfo - - arm_func_start MBi_ReloadCache -MBi_ReloadCache: ; 0x0221C8CC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x4c - ldr r5, [r0, #0x14] - ldr r4, [r0, #0x10] - ldr r1, [r5, #0x14] - add r0, r5, #0x10 - bl FS_FindArchive - movs r6, r0 - add r0, sp, #4 - ldreq r6, [r5, #0x18] - bl FS_InitFile - ldr r2, [r4] - mvn r0, #0 - str r0, [sp] - ldr r3, [r4, #4] - add r0, sp, #4 - mov r1, r6 - add r3, r2, r3 - bl FS_OpenFileDirect - cmp r0, #0 - beq _0221C948 - ldr r1, [r4, #8] - ldr r2, [r4, #4] - add r0, sp, #4 - bl FS_ReadFile - ldr r1, [r4, #4] - cmp r1, r0 - moveq r0, #2 - streq r0, [r4, #0xc] - add r0, sp, #4 - bl FS_CloseFile -_0221C948: - ldr r0, [r4, #0xc] - cmp r0, #2 - addeq sp, sp, #0x4c - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, #0 - str r0, [r4] - mov r0, #2 - str r0, [r4, #0xc] - add sp, sp, #0x4c - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end MBi_ReloadCache - - arm_func_start MBi_CommParentSendBlock -MBi_CommParentSendBlock: ; 0x0221C970 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - ldr r5, _0221CC00 ; =mbc - ldr r0, [r5] - add r0, r0, #0x1000 - ldrb r0, [r0, #0x524] - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0x15 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _0221CC04 ; =0x000005D4 - mov r1, #0 -_0221C9A0: - ldr r0, [r5] - add r3, r0, #0x1000 - ldrb r0, [r3, #0x525] - add r0, r0, #1 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #28 - add r0, r2, r0, ror #28 - strb r0, [r3, #0x525] - ldr r2, [r5] - add r0, r2, #0x1000 - ldrb r0, [r0, #0x525] - mla r3, r0, r4, r2 - add r2, r3, #0x1000 - ldrb r2, [r2, #0xd52] - cmp r2, #0 - addne r2, r3, #0x1d00 - ldrneh r2, [r2, #0x4c] - cmpne r2, #0 - bne _0221C9FC - add r1, r1, #1 - and r1, r1, #0xff - cmp r1, #0x10 - blo _0221C9A0 -_0221C9FC: - cmp r1, #0x10 - addeq sp, sp, #0x18 - moveq r0, #0x15 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl MBi_calc_sendblock - ldr r0, _0221CC00 ; =mbc - ldr r2, _0221CC04 ; =0x000005D4 - ldr r6, [r0] - add r0, sp, #8 - add r1, r6, #0x1000 - ldrb r4, [r1, #0x525] - add r1, r6, #0x12c - add r3, r6, #0x388 - mul r5, r4, r2 - add r2, r6, r5 - add r2, r2, #0x1d00 - add r1, r1, #0x1c00 - add r3, r3, #0x1400 - ldrh r2, [r2, #0x48] - add r1, r1, r5 - add r3, r3, r5 - bl MBi_get_blockinfo - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0x15 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _0221CC00 ; =mbc - mov r3, #4 - ldr r1, [r0] - strb r3, [sp] - add r2, r1, #0x1000 - ldrb r4, [r2, #0x525] - add r3, r3, #0x5d0 - add r0, sp, #0 - strh r4, [sp, #2] - ldrb r4, [r2, #0x525] - mla r2, r4, r3, r1 - add r2, r2, #0x1d00 - ldrh r2, [r2, #0x48] - strh r2, [sp, #4] - bl MBi_MakeParentSendBuffer - ldr r1, _0221CC00 ; =mbc - ldr r4, _0221CC04 ; =0x000005D4 - ldr r5, [r1] - ldrb r1, [sp, #0x14] - add r2, r5, #0x1000 - ldrb r2, [r2, #0x525] - ldr r6, [sp, #0x10] - ldr r3, [sp, #0xc] - mla r4, r2, r4, r5 - add r2, r4, r1, lsl #2 - add r5, r4, #0x1000 - ldr r4, [r5, #0xd58] - add r2, r2, #0x1000 - ldr r2, [r2, #0xd2c] - ldr r1, [r4, r1, lsl #2] - sub r2, r6, r2 - add r4, r2, r1 - ldr r5, [r5, #0xd54] - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl MBi_ReadFromCache - cmp r0, #0 - bne _0221CBCC - ldr r0, _0221CC00 ; =mbc - ldr r0, [r0] - add r0, r0, #0xce0 - add r6, r0, #0x7000 - mov r0, r6 - bl MBi_IsTaskBusy - cmp r0, #0 - bne _0221CBC0 - ldr r0, [r5] - cmp r0, #0 - subne r0, r0, #1 - strne r0, [r5] - bne _0221CBC0 - add r2, r5, #0x30 - mov r7, #0 - mov r3, r7 - mov ip, r2 -_0221CB44: - add r0, r2, r3, lsl #4 - ldr r0, [r0, #0xc] - cmp r0, #2 - bne _0221CB70 - cmp r7, #0 - beq _0221CB6C - ldr r1, [r7] - ldr r0, [r2, r3, lsl #4] - cmp r1, r0 - bls _0221CB70 -_0221CB6C: - mov r7, ip -_0221CB70: - add r3, r3, #1 - cmp r3, #4 - add ip, ip, #0x10 - blt _0221CB44 - cmp r7, #0 - bne _0221CB8C - bl OS_Terminate -_0221CB8C: - mov r0, #2 - str r0, [r5] - mov r0, #1 - str r0, [r7, #0xc] - bic r0, r4, #0x1f - str r0, [r7] - str r7, [r6, #0x10] - ldr r1, _0221CC08 ; =MBi_ReloadCache - mov r0, r6 - mov r2, #0 - mov r3, #4 - str r5, [r6, #0x14] - bl MBi_SetTask -_0221CBC0: - add sp, sp, #0x18 - mov r0, #0x15 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221CBCC: - ldr r0, _0221CC00 ; =mbc - ldr r4, [sp, #0xc] - ldr r2, [r0] - ldr r1, _0221CC04 ; =0x000005D4 - add r0, r2, #0x1000 - ldrb r3, [r0, #0x525] - add r0, r4, #6 - mla r1, r3, r1, r2 - add r1, r1, #0x1d00 - ldrh r1, [r1, #0x4c] - bl MBi_BlockHeaderEnd - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221CC00: .word mbc -_0221CC04: .word 0x000005D4 -_0221CC08: .word MBi_ReloadCache - arm_func_end MBi_CommParentSendBlock - - arm_func_start MBi_CommParentSendData -MBi_CommParentSendData: ; 0x0221CC0C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - add r1, sp, #0 - mov r0, #0 - mov r2, #0xa - bl MIi_CpuClear16 - mov r3, #1 - ldr r0, _0221CD84 ; =mbc - mov r4, r3 - ldr ip, [r0] - mov r5, r3 - mov r0, r3 - mov r1, r3 - mov r2, r3 -_0221CC44: - add lr, ip, r3, lsl #2 - add lr, lr, #0x1000 - ldr lr, [lr, #0x4e4] - cmp lr, #0xb - addls pc, pc, lr, lsl #2 - b _0221CCD8 -_0221CC5C: ; jump table - b _0221CCD8 ; case 0 - b _0221CCD8 ; case 1 - b _0221CC8C ; case 2 - b _0221CCD8 ; case 3 - b _0221CCAC ; case 4 - b _0221CC9C ; case 5 - b _0221CCD8 ; case 6 - b _0221CCD8 ; case 7 - b _0221CCBC ; case 8 - b _0221CCD8 ; case 9 - b _0221CCD8 ; case 10 - b _0221CCCC ; case 11 -_0221CC8C: - ldrh lr, [sp] - orr lr, lr, r2, lsl r3 - strh lr, [sp] - b _0221CCD8 -_0221CC9C: - ldrh lr, [sp, #2] - orr lr, lr, r1, lsl r3 - strh lr, [sp, #2] - b _0221CCD8 -_0221CCAC: - ldrh lr, [sp, #4] - orr lr, lr, r0, lsl r3 - strh lr, [sp, #4] - b _0221CCD8 -_0221CCBC: - ldrh lr, [sp, #6] - orr lr, lr, r5, lsl r3 - strh lr, [sp, #6] - b _0221CCD8 -_0221CCCC: - ldrh lr, [sp, #8] - orr lr, lr, r4, lsl r3 - strh lr, [sp, #8] -_0221CCD8: - add r3, r3, #1 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - cmp r3, #0xf - bls _0221CC44 - ldrh r1, [sp, #6] - cmp r1, #0 - beq _0221CD04 - mov r0, #5 - bl MBi_CommParentSendMsg - b _0221CD64 -_0221CD04: - ldrh r1, [sp] - cmp r1, #0 - beq _0221CD1C - mov r0, #1 - bl MBi_CommParentSendMsg - b _0221CD64 -_0221CD1C: - ldrh r1, [sp, #8] - cmp r1, #0 - beq _0221CD34 - mov r0, #6 - bl MBi_CommParentSendMsg - b _0221CD64 -_0221CD34: - ldrh r1, [sp, #4] - cmp r1, #0 - beq _0221CD4C - mov r0, #2 - bl MBi_CommParentSendMsg - b _0221CD64 -_0221CD4C: - ldrh r0, [sp, #2] - cmp r0, #0 - beq _0221CD60 - bl MBi_CommParentSendDLFileInfo - b _0221CD64 -_0221CD60: - bl MBi_CommParentSendBlock -_0221CD64: - cmp r0, #0x15 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r1, _0221CD88 ; =0x0000FFFF - mov r0, #0 - bl MBi_CommParentSendMsg - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .balign 4, 0 -_0221CD84: .word mbc -_0221CD88: .word 0x0000FFFF - arm_func_end MBi_CommParentSendData - - arm_func_start MBi_calc_sendblock -MBi_calc_sendblock: ; 0x0221CD8C - ldr r1, _0221CDFC ; =_02247480 - mov r2, #1 - ldr r1, [r1] - tst r1, r2, lsl r0 - bxeq lr - ldr r2, _0221CE00 ; =mbc - ldr r1, _0221CE04 ; =0x000005D4 - ldr r2, [r2] - mla ip, r0, r1, r2 - add r0, ip, #0x1000 - ldrb r0, [r0, #0xd52] - cmp r0, #0 - addne r0, ip, #0x1d00 - ldrneh r1, [r0, #0x4c] - cmpne r1, #0 - bxeq lr - ldrh r2, [r0, #0x48] - ldrh r3, [r0, #0x4a] - cmp r3, r2 - bhi _0221CDF0 - add r1, r3, #2 - cmp r2, r1 - addle r1, r2, #1 - strleh r1, [r0, #0x48] - bxle lr -_0221CDF0: - add r0, ip, #0x1d00 - strh r3, [r0, #0x48] - bx lr - .balign 4, 0 -_0221CDFC: .word _02247480 -_0221CE00: .word mbc -_0221CE04: .word 0x000005D4 - arm_func_end MBi_calc_sendblock - - arm_func_start MBi_calc_nextsendblock -MBi_calc_nextsendblock: ; 0x0221CE08 - cmp r1, r0 - movls r1, r0 - mov r0, r1 - bx lr - arm_func_end MBi_calc_nextsendblock - - arm_func_start IsChildAidValid -IsChildAidValid: ; 0x0221CE18 - cmp r0, #1 - blo _0221CE2C - cmp r0, #0xf - movls r0, #1 - bxls lr -_0221CE2C: - mov r0, #0 - bx lr - arm_func_end IsChildAidValid - - arm_func_start MBi_CommCallParentError -MBi_CommCallParentError: ; 0x0221CE34 - stmdb sp!, {r3, lr} - strh r1, [sp] - add r2, sp, #0 - mov r1, #0xd - bl MBi_CommChangeParentStateCallbackOnly - ldmia sp!, {r3, pc} - arm_func_end MBi_CommCallParentError - - arm_func_start MB_GetSegmentLength -MB_GetSegmentLength: ; 0x0221CE4C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x60 - mov r4, #0 - movs r7, r0 - mov r5, r4 - beq _0221CE98 - ldr ip, [r7, #0x2c] - ldr r3, [r7, #0x24] - add r1, sp, #0 - mov r2, #0x60 - sub r6, ip, r3 - bl FS_ReadFile - cmp r0, #0x60 - mov r0, r7 - mov r1, r6 - mov r2, #0 - addhs r4, sp, #0 - bl FS_SeekFile - b _0221CE9C -_0221CE98: - ldr r4, _0221CEC8 ; =0x027FFE00 -_0221CE9C: - cmp r4, #0 - beq _0221CEBC - ldr r1, [r4, #0x2c] - ldr r0, [r4, #0x3c] - add r1, r1, #0x268 - add r5, r1, r0 - cmp r5, #0x10000 - movlo r5, #0x10000 -_0221CEBC: - mov r0, r5 - add sp, sp, #0x60 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221CEC8: .word 0x027FFE00 - arm_func_end MB_GetSegmentLength - - arm_func_start MB_ReadSegment -MB_ReadSegment: ; 0x0221CECC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x6c - str r2, [sp, #4] - cmp r2, #0x164 - mov r2, #0 - mov sl, r0 - mov sb, r1 - str r2, [sp, #0x10] - blo _0221D324 - ldr r4, [sp, #4] - mov r5, sb - str r2, [sp, #0xc] - mov r6, r2 - mov fp, r2 - cmp sl, #0 - add r5, r5, #0x160 - sub r4, r4, #0x160 - beq _0221CF44 - ldr r7, [sl, #0x2c] - ldr r3, [sl, #0x24] - mov r2, #0x160 - sub r3, r7, r3 - str r3, [sp, #8] - bl FS_ReadFile - cmp r0, #0x160 - ldr r7, [sb, #0x80] - movlt r4, fp - cmp r7, #0 - moveq r7, #0x1000000 - b _0221CFC0 -_0221CF44: - ldr r0, _0221D330 ; =0x027FFE00 - mov r1, #1 - ldr r7, [r0, #0x80] - add r0, sp, #0x24 - cmp r7, #0 - moveq r7, #0x1000000 - str r1, [sp, #0xc] - bl FS_InitFile - ldr r0, _0221D334 ; =ov13_02245988 - mov r1, #3 - bl FS_FindArchive - mov r1, r0 - mvn r0, #0 - str r0, [sp] - add r0, sp, #0x24 - mov r2, #0 - add r3, r7, #0x88 - bl FS_OpenFileDirect - ldr r2, [sp, #0x50] - ldr r1, [sp, #0x48] - ldr r0, _0221D330 ; =0x027FFE00 - sub r1, r2, r1 - str r1, [sp, #8] - mov r1, sb - mov r2, #0x160 - add sl, sp, #0x24 - bl MI_CpuCopy8 - ldr r0, [sb, #0x60] - orr r0, r0, #0x6000 - orr r0, r0, #0x400000 - str r0, [sb, #0x60] -_0221CFC0: - cmp r4, #0x88 - movlo r4, #0 - blo _0221CFF8 - ldr r1, [sp, #8] - mov r0, sl - add r1, r1, r7 - mov r2, #0 - bl FS_SeekFile - mov r0, sl - mov r1, r5 - mov r2, #0x88 - bl FS_ReadFile - add r5, r5, #0x88 - sub r4, r4, #0x88 -_0221CFF8: - cmp r4, #0x70 - blo _0221D070 - mov r0, r5 - mov r6, r5 - bl MBi_InitCache - mov r0, #3 - str r0, [sp] - mov r0, r6 - mov r1, #0 - mov r2, #0x160 - mov r3, sb - add r5, r5, #0x70 - sub r4, r4, #0x70 - bl MBi_AttachCacheBuffer - ldr r8, [sl, #8] - mov r7, #0 - b _0221D040 -_0221D03C: - add r7, r7, #1 -_0221D040: - cmp r7, #3 - bge _0221D054 - ldrsb r0, [r8, r7] - cmp r0, #0 - bne _0221D03C -_0221D054: - mov r0, r8 - mov r2, r7 - add r1, r6, #0x10 - bl MI_CpuCopy8 - str r7, [r6, #0x14] - str r8, [r6, #0x18] - b _0221D074 -_0221D070: - mov r4, #0 -_0221D074: - cmp r4, #0x10 - movlo r4, #0 - blo _0221D0C4 - mov r0, #0 - str r0, [r5] - ldr r1, [sl, #0x24] - ldr r0, [sp, #8] - ldr r2, [sb, #0x20] - add r0, r0, r1 - add r0, r2, r0 - str r0, [r5, #4] - ldr r1, [sl, #0x24] - ldr r0, [sp, #8] - ldr r2, [sb, #0x30] - add r0, r0, r1 - add r0, r2, r0 - mov fp, r5 - str r0, [r5, #8] - add r5, r5, #0x10 - sub r4, r4, #0x10 -_0221D0C4: - ldr r1, [sb, #0x2c] - ldr r0, [sb, #0x3c] - add r0, r1, r0 - cmp r4, r0 - blo _0221D16C - ldr r7, [sl, #0x24] - ldr r1, [fp, #4] - mov r0, sl - sub r1, r1, r7 - mov r2, #0 - bl FS_SeekFile - ldr r2, [sb, #0x2c] - mov r0, sl - mov r1, r5 - bl FS_ReadFile - mov r0, #3 - str r0, [sp] - ldr r1, [fp, #4] - ldr r2, [sb, #0x2c] - mov r0, r6 - mov r3, r5 - bl MBi_AttachCacheBuffer - ldr r1, [fp, #8] - ldr r4, [sb, #0x2c] - mov r0, sl - mov r2, #0 - sub r1, r1, r7 - bl FS_SeekFile - ldr r2, [sb, #0x3c] - mov r0, sl - add r1, r5, r4 - bl FS_ReadFile - mov r0, #3 - str r0, [sp] - ldr r1, [fp, #8] - ldr r2, [sb, #0x3c] - add r3, r5, r4 - mov r0, r6 - bl MBi_AttachCacheBuffer - mov r0, #1 - str r0, [sp, #0x10] - b _0221D240 -_0221D16C: - cmp r4, #0xcc00 - blo _0221D240 - ldr r7, [sl, #0x24] - ldr r4, [fp, #4] - mov r0, sl - sub r1, r4, r7 - mov r2, #0 - bl FS_SeekFile - mov r0, sl - mov r1, r5 - mov r2, #0x4400 - bl FS_ReadFile - mov r0, #3 - str r0, [sp] - mov r0, r6 - mov r1, r4 - mov r2, #0x4400 - mov r3, r5 - bl MBi_AttachCacheBuffer - add r1, r4, #0x4400 - mov r0, sl - sub r1, r1, r7 - mov r2, #0 - bl FS_SeekFile - mov r0, sl - add r1, r5, #0x4400 - mov r2, #0x4400 - bl FS_ReadFile - mov r0, #2 - str r0, [sp] - mov r0, r6 - add r1, r4, #0x4400 - mov r2, #0x4400 - add r3, r5, #0x4400 - bl MBi_AttachCacheBuffer - add r1, r4, #0x8800 - mov r0, sl - sub r1, r1, r7 - mov r2, #0 - bl FS_SeekFile - mov r0, sl - add r1, r5, #0x8800 - mov r2, #0x4400 - bl FS_ReadFile - mov r0, #2 - str r0, [sp] - add r1, r4, #0x8800 - add r3, r5, #0x8800 - mov r0, r6 - mov r2, #0x4400 - bl MBi_AttachCacheBuffer - mov r0, #1 - str r0, [sp, #0x10] -_0221D240: - ldr r1, [sp, #8] - mov r0, sl - mov r2, #0 - bl FS_SeekFile - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _0221D30C - add r0, sp, #0x24 - bl FS_CloseFile - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _0221D30C - ldr r1, [sb, #0x20] - ldr r0, _0221D338 ; =mbi_seg_header - str r1, [sp, #0x14] - ldr r2, [sb, #0x28] - ldr r1, [sb, #0x20] - ldr r4, [r0] - sub r0, r2, r1 - str r0, [sp, #0x18] - ldr r2, [r6, #0x48] - ldr r1, [sb, #0x20] - add r0, sp, #0x14 - sub r1, r2, r1 - str r1, [sp, #0x1c] - ldr r1, [sp, #4] - mov r2, #0x8000 - str r1, [sp, #0x20] - mov r1, #0x4000 - mov r3, #1 - bl MBi_ReadSegmentHeader - ldr r0, [r4, #4] - cmp r0, #0 - beq _0221D2F4 - add r7, sp, #0x14 - mov r5, #0 -_0221D2D0: - ldmia r4, {r1, r2} - mov r0, r7 - mov r3, r5 - add r2, r1, r2 - bl MBi_ReadSegmentHeader - add r4, r4, #8 - ldr r0, [r4, #4] - cmp r0, #0 - bne _0221D2D0 -_0221D2F4: - ldr r1, [sb, #0x28] - ldr r2, _0221D33C ; =_start_AutoloadDoneCallback - ldr r3, [r6, #0x48] - ldr r0, _0221D340 ; =0xE12FFF1E - sub r1, r2, r1 - str r0, [r3, r1] -_0221D30C: - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _0221D324 - ldr r1, [sp, #4] - mov r0, sb - bl DC_FlushRange -_0221D324: - ldr r0, [sp, #0x10] - add sp, sp, #0x6c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .balign 4, 0 -_0221D330: .word 0x027FFE00 -_0221D334: .word ov13_02245988 -_0221D338: .word mbi_seg_header -_0221D33C: .word _start_AutoloadDoneCallback -_0221D340: .word 0xE12FFF1E - arm_func_end MB_ReadSegment - - arm_func_start MBi_ReadSegmentHeader -MBi_ReadSegmentHeader: ; 0x0221D344 - stmdb sp!, {r3, lr} - mov lr, r1 - ldr ip, [r0] - ldr r1, [r0, #0xc] - cmp lr, #0x4000 - movlo lr, #0x4000 - cmp r2, #0x8000 - movhi r2, #0x8000 - cmp lr, ip - add r1, ip, r1 - movlo lr, ip - cmp r2, r1 - movhi r2, r1 - cmp lr, r2 - ldmhsia sp!, {r3, pc} - cmp r3, #0 - beq _0221D3A0 - ldr r0, [r0, #8] - sub r2, r2, lr - add r0, r0, lr - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r3, pc} -_0221D3A0: - ldr r3, [r0, #4] - ldr r1, [r0, #8] - add r0, r3, lr - add r1, r1, lr - sub r2, r2, lr - bl MI_CpuCopy8 - ldmia sp!, {r3, pc} - arm_func_end MBi_ReadSegmentHeader - - arm_func_start MB_RegisterFile -MB_RegisterFile: ; 0x0221D3BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r1 - mov r4, #0xff - bl OS_DisableInterrupts - mov r5, r0 - bl MBi_IsStarted - cmp r0, #0 - bne _0221D3F0 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0221D3F0: - ldr r0, _0221D640 ; =mbc - ldr r0, [r0] - add r1, r0, #0x1000 - ldrb r1, [r1, #0x524] - add r1, r1, #1 - cmp r1, #0x10 - ble _0221D41C - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0221D41C: - ldr r1, _0221D644 ; =0x000005D4 - mov r6, #0 -_0221D424: - mla r2, r6, r1, r0 - add r2, r2, #0x1000 - ldr r3, [r2, #0xd40] - cmp r3, r8 - bne _0221D448 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0221D448: - ldrb r2, [r2, #0xd52] - cmp r2, #0 - moveq r4, r6 - beq _0221D468 - add r2, r6, #1 - and r6, r2, #0xff - cmp r6, #0x10 - blo _0221D424 -_0221D468: - cmp r6, #0x10 - bne _0221D480 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0221D480: - ldr r1, _0221D644 ; =0x000005D4 - ldr r2, _0221D640 ; =mbc - mul r6, r4, r1 - add r0, r0, r6 - add r0, r0, #0x1000 - str r8, [r0, #0xd40] - ldr r0, [r2] - mov r1, r7 - add r0, r0, #0x388 - add r0, r0, #0x1400 - add sb, r0, r6 - mov r0, sb - bl MBi_MakeDownloadFileInfo - add r0, r8, #0x1c - add r1, sb, #0xc4 - mov r2, #0x20 - bl MI_CpuCopy8 - ldr r0, _0221D640 ; =mbc - mov r1, sb - ldr r0, [r0] - add r0, r0, #0x12c - add r0, r0, #0x1c00 - add r0, r0, r6 - bl MBi_MakeBlockInfoTable - cmp r0, #0 - bne _0221D4F8 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0221D4F8: - ldr r0, _0221D640 ; =mbc - mov r1, r8 - ldr r2, [r0] - add r0, r2, #0x6c - add r0, r0, #0x1800 - add r0, r0, r6 - add r2, r2, #0x1300 - bl MBi_MakeGameInfo - ldr r1, _0221D640 ; =mbc - ldr r0, [r1] - add r0, r0, r6 - add r0, r0, #0x1000 - strb r4, [r0, #0xd21] - ldr r0, [r1] - add r0, r0, #0x6c - add r0, r0, #0x1800 - add r0, r0, r6 - bl MB_AddGameInfo - ldr r2, _0221D640 ; =mbc - ldr r3, _0221D648 ; =ov13_02247484 - ldr r1, [r2] - ldrb r0, [r3] - add r1, r1, r6 - add r1, r1, #0x1000 - strb r0, [r1, #0xd1f] - ldr r1, [r2] - mov r4, #1 - add r1, r1, r6 - add r1, r1, #0x1d00 - strh r4, [r1, #0x4e] - ldr r1, [r2] - add r8, r7, #0x1e8 - add r1, r1, r6 - add r1, r1, #0x1000 - str r7, [r1, #0xd44] - ldr r1, [r2] - add r4, r7, #0x258 - add r1, r1, r6 - add r1, r1, #0x1000 - str r8, [r1, #0xd54] - ldr r1, [r2] - add r7, r0, #1 - add r0, r1, r6 - add r0, r0, #0x1000 - str r4, [r0, #0xd58] - ldr r0, [r2] - strb r7, [r3] - add r0, r0, r6 - add r0, r0, #0x1000 - ldr r0, [r0, #0xd54] - ldr r0, [r0, #0x6c] - cmp r0, #0 - beq _0221D604 - bl MBi_IsTaskAvailable - cmp r0, #0 - bne _0221D604 - ldr r0, _0221D640 ; =mbc - ldr r0, [r0] - add r0, r0, #0xce0 - add r0, r0, #0x7000 - bl MBi_InitTaskInfo - ldr r0, _0221D640 ; =mbc - mov r1, #0x800 - ldr r0, [r0] - add r0, r0, #0x4e0 - add r0, r0, #0x7000 - bl MBi_InitTaskThread -_0221D604: - ldr r2, _0221D640 ; =mbc - mov r3, #1 - ldr r1, [r2] - mov r0, r5 - add r1, r1, r6 - add r1, r1, #0x1000 - strb r3, [r1, #0xd52] - ldr r1, [r2] - add r1, r1, #0x1000 - ldrb r2, [r1, #0x524] - add r2, r2, #1 - strb r2, [r1, #0x524] - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .balign 4, 0 -_0221D640: .word mbc -_0221D644: .word 0x000005D4 -_0221D648: .word ov13_02247484 - arm_func_end MB_RegisterFile - - arm_func_start MBi_MakeDownloadFileInfo -MBi_MakeDownloadFileInfo: ; 0x0221D64C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r2, #0x22c0000 - mov r4, r1 - mov r5, r0 - str r2, [sp] - ldr r0, [r4, #0x24] - ldr r7, _0221D6BC ; =MBi_defaultLoadSegList - str r0, [r5] - ldr r0, [r4, #0x34] - add r8, r5, #0xc - str r0, [r5, #4] - mov sb, #0 - add r6, sp, #0 -_0221D680: - mov r0, r4 - mov r1, r7 - mov r2, r8 - mov r3, r6 - bl MBi_SetSegmentInfo - add sb, sb, #1 - cmp sb, #3 - add r8, r8, #0x10 - add r7, r7, #4 - blt _0221D680 - add r0, r4, #0x160 - add r1, r5, #0x3c - mov r2, #0x88 - bl MI_CpuCopy8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .balign 4, 0 -_0221D6BC: .word MBi_defaultLoadSegList - arm_func_end MBi_MakeDownloadFileInfo - - arm_func_start MBi_SetSegmentInfo -MBi_SetSegmentInfo: ; 0x0221D6C0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, [r1] - mov r7, r0 - mov r6, r2 - mov r5, r3 - cmp r1, #0 - beq _0221D6F0 - cmp r1, #1 - beq _0221D73C - cmp r1, #2 - beq _0221D80C - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221D6F0: - ldr r0, [r7, #0x28] - cmp r0, #0x2000000 - blo _0221D734 - cmp r0, #0x22c0000 - bhs _0221D734 - ldr r1, [r7, #0x2c] - add r0, r0, r1 - cmp r0, #0x22c0000 - bhi _0221D734 - str r1, [r6, #8] - ldr r0, [r7, #0x28] - str r0, [r6, #4] - str r0, [r6] - ldr r0, [r6, #0xc] - bic r0, r0, #1 - str r0, [r6, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221D734: - bl OS_Terminate - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221D73C: - ldr ip, [r7, #0x38] - ldr r1, [r7, #0x3c] - mov r2, #0 - mov r4, r2 - cmp ip, #0x2000000 - add r3, ip, r1 - blo _0221D788 - ldr r0, _0221D82C ; =0x023FE800 - cmp ip, r0 - bhs _0221D788 - cmp r3, #0x2300000 - bls _0221D7B4 - cmp r3, r0 - bhs _0221D780 - cmp r1, #0x40000 - movls r4, #1 - bls _0221D7B4 -_0221D780: - mov r2, #1 - b _0221D7B4 -_0221D788: - ldr r1, _0221D830 ; =0x037F8000 - cmp ip, r1 - blo _0221D7B0 - add r0, r1, #0x17000 - cmp ip, r0 - bhs _0221D7B0 - cmp r3, r0 - movls r4, #1 - movhi r2, #1 - b _0221D7B4 -_0221D7B0: - mov r2, #1 -_0221D7B4: - cmp r2, #1 - bne _0221D7C0 - bl OS_Terminate -_0221D7C0: - ldr r0, [r7, #0x3c] - cmp r4, #0 - str r0, [r6, #8] - ldr r0, [r7, #0x38] - str r0, [r6, #4] - ldreq r0, [r6, #4] - streq r0, [r6] - beq _0221D7F8 - ldr r0, [r5] - str r0, [r6] - ldr r1, [r5] - ldr r0, [r6, #8] - add r0, r1, r0 - str r0, [r5] -_0221D7F8: - ldr r0, [r6, #0xc] - bic r0, r0, #1 - orr r0, r0, #1 - str r0, [r6, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221D80C: - ldr r0, _0221D834 ; =0x027FFE00 - mov r1, #0x160 - stmib r6, {r0, r1} - str r0, [r6] - ldr r0, [r6, #0xc] - bic r0, r0, #1 - str r0, [r6, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221D82C: .word 0x023FE800 -_0221D830: .word 0x037F8000 -_0221D834: .word 0x027FFE00 - arm_func_end MBi_SetSegmentInfo - - arm_func_start MBi_MakeBlockInfoTable -MBi_MakeBlockInfoTable: ; 0x0221D838 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - add r6, sl, #0xc - cmp r1, #0 - mov r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r2, r0 -_0221D854: - str r0, [sl, r2, lsl #2] - add r3, r1, r2, lsl #4 - add r2, r2, #1 - ldr r3, [r3, #0x14] - and r2, r2, #0xff - cmp r2, #3 - add r0, r0, r3 - blo _0221D854 - mov sb, #0 - ldr r4, _0221D900 ; =mbc - strh sb, [r6] - add r5, r1, #0xc -_0221D884: - ldr r0, [r4] - add r7, r5, sb, lsl #4 - add r0, r0, #0x1000 - ldr r1, [r0, #0x318] - ldr r8, [r7, #8] - add r0, r8, r1 - sub r0, r0, #1 - bl _u32_div_f - mov r1, sb, lsl #1 - ldrh r3, [r6, r1] - mov r2, r0, lsl #0x10 - ldr r1, [r7, #4] - add r2, r3, r2, lsr #16 - mov r3, r2, lsl #0x10 - mov r0, sb - mov r2, r8 - mov r7, r3, lsr #0x10 - bl IsAbleToLoad - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp sb, #2 - addlo r0, r6, sb, lsl #1 - strloh r7, [r0, #2] - add r0, sb, #1 - and sb, r0, #0xff - strhsh r7, [sl, #0x12] - cmp sb, #3 - blo _0221D884 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .balign 4, 0 -_0221D900: .word mbc - arm_func_end MBi_MakeBlockInfoTable - - arm_func_start MBi_get_blockinfo -MBi_get_blockinfo: ; 0x0221D904 - stmdb sp!, {r3, r4, r5, lr} - ldrh r4, [r1, #0x12] - cmp r2, r4 - movhs r0, #0 - ldmhsia sp!, {r3, r4, r5, pc} - mov ip, #2 -_0221D91C: - add r4, r1, ip, lsl #1 - ldrh r4, [r4, #0xc] - cmp r2, r4 - bhs _0221D93C - sub r4, ip, #1 - mov ip, r4, lsl #0x18 - movs ip, ip, asr #0x18 - bpl _0221D91C -_0221D93C: - cmp ip, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - ldr r4, _0221D9B4 ; =mbc - add r5, r1, ip, lsl #1 - ldr lr, [r4] - ldrh r5, [r5, #0xc] - add lr, lr, #0x1000 - ldr lr, [lr, #0x318] - sub r5, r2, r5 - mul r2, r5, lr - add r3, r3, #0xc - add r5, r3, ip, lsl #4 - ldr r3, [r5, #8] - sub lr, r3, r2 - str lr, [r0, #4] - ldr r3, [r4] - add r3, r3, #0x1000 - ldr r3, [r3, #0x318] - cmp lr, r3 - strhi r3, [r0, #4] - ldr r1, [r1, ip, lsl #2] - add r1, r2, r1 - str r1, [r0, #8] - ldr r1, [r5] - add r1, r2, r1 - str r1, [r0] - strb ip, [r0, #0xc] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .balign 4, 0 -_0221D9B4: .word mbc - arm_func_end MBi_get_blockinfo - - arm_func_start MBi_IsAbleToRecv -MBi_IsAbleToRecv: ; 0x0221D9B8 - ldr r3, _0221DA5C ; =MBi_defaultLoadSegList - ldr r0, [r3, r0, lsl #2] - cmp r0, #0 - beq _0221D9FC - cmp r0, #1 - beq _0221DA18 - cmp r0, #2 - bne _0221DA4C - ldr r0, _0221DA60 ; =0x027FFE00 - cmp r1, r0 - blo _0221DA54 - add r1, r1, r2 - add r0, r0, #0x160 - cmp r1, r0 - bhi _0221DA54 - mov r0, #1 - bx lr -_0221D9FC: - cmp r1, #0x2000000 - blo _0221DA54 - add r0, r1, r2 - cmp r0, #0x22c0000 - bhi _0221DA54 - mov r0, #1 - bx lr -_0221DA18: - cmp r1, #0x22c0000 - blo _0221DA30 - add r0, r1, r2 - cmp r0, #0x2300000 - movls r0, #1 - bxls lr -_0221DA30: - cmp r1, #0x2000000 - blo _0221DA54 - add r0, r1, r2 - cmp r0, #0x2300000 - bhi _0221DA54 - mov r0, #1 - bx lr -_0221DA4C: - mov r0, #0 - bx lr -_0221DA54: - mov r0, #0 - bx lr - .balign 4, 0 -_0221DA5C: .word MBi_defaultLoadSegList -_0221DA60: .word 0x027FFE00 - arm_func_end MBi_IsAbleToRecv - - arm_func_start IsAbleToLoad -IsAbleToLoad: ; 0x0221DA64 - stmdb sp!, {r3, lr} - ldr r3, _0221DB24 ; =MBi_defaultLoadSegList - ldr r3, [r3, r0, lsl #2] - cmp r3, #0 - beq _0221DA88 - cmp r3, #1 - beq _0221DA90 - cmp r3, #2 - bne _0221DB14 -_0221DA88: - bl MBi_IsAbleToRecv - ldmia sp!, {r3, pc} -_0221DA90: - cmp r1, #0x2000000 - blo _0221DAE8 - ldr r0, _0221DB28 ; =0x023FE800 - cmp r1, r0 - bhs _0221DAE8 - cmp r1, #0x2300000 - add r1, r1, r2 - bhs _0221DABC - cmp r1, #0x2300000 - movhi r0, #0 - ldmhiia sp!, {r3, pc} -_0221DABC: - cmp r1, #0x2300000 - movls r0, #1 - ldmlsia sp!, {r3, pc} - ldr r0, _0221DB28 ; =0x023FE800 - cmp r1, r0 - bhs _0221DAE0 - cmp r2, #0x40000 - movls r0, #1 - ldmlsia sp!, {r3, pc} -_0221DAE0: - mov r0, #0 - ldmia sp!, {r3, pc} -_0221DAE8: - ldr r3, _0221DB2C ; =0x037F8000 - cmp r1, r3 - blo _0221DB1C - add r0, r3, #0x17000 - cmp r1, r0 - bhs _0221DB1C - add r1, r1, r2 - cmp r1, r0 - movls r0, #1 - movhi r0, #0 - ldmia sp!, {r3, pc} -_0221DB14: - mov r0, #0 - ldmia sp!, {r3, pc} -_0221DB1C: - mov r0, #0 - ldmia sp!, {r3, pc} - .balign 4, 0 -_0221DB24: .word MBi_defaultLoadSegList -_0221DB28: .word 0x023FE800 -_0221DB2C: .word 0x037F8000 - arm_func_end IsAbleToLoad - - arm_func_start MBi_BlockHeaderEnd -MBi_BlockHeaderEnd: ; 0x0221DB30 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r4, r2 - add r2, r6, #0x1f - mov r5, r1 - mov r0, r4 - bic r1, r2, #0x1f - bl DC_FlushRange - bl DC_WaitWriteBufferEmpty - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl MBi_SendMP - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MBi_BlockHeaderEnd - - arm_func_start MBi_calc_cksum -MBi_calc_cksum: ; 0x0221DB68 - mov r3, r1, asr #1 - cmp r3, #0 - mov r2, #0 - ble _0221DB8C -_0221DB78: - ldrh r1, [r0], #2 - sub r3, r3, #1 - cmp r3, #0 - add r2, r2, r1 - bgt _0221DB78 -_0221DB8C: - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - add r1, r0, r2, lsr #16 - ldr r0, _0221DBB0 ; =0x0000FFFF - add r1, r1, r1, lsr #16 - eor r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - .balign 4, 0 -_0221DBB0: .word 0x0000FFFF - arm_func_end MBi_calc_cksum - - arm_func_start MBi_MakeGameInfo -MBi_MakeGameInfo: ; 0x0221DBB4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r1, r6 - mov r0, #0 - mov r2, #0x4c0 - bl MIi_CpuClear16 - mov r0, #0 - strb r0, [r6, #0x4b2] - ldr r0, [r5, #0xc] - mov r1, r6 - mov r2, #1 - bl MBi_ReadIconInfo - cmp r0, #0 - moveq r7, #1 - ldr r0, [r5, #0x10] - mov r1, r6 - mov r2, #0 - movne r7, #0 - bl MBi_ReadIconInfo - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - orrs r0, r7, r0 - beq _0221DC34 - mov r3, #1 - mov r1, r6 - mov r0, #0 - mov r2, #0x220 - strb r3, [r6, #0x4b2] - bl MIi_CpuClearFast -_0221DC34: - ldr r0, [r5, #0x14] - cmp r4, #0 - str r0, [r6, #0x4b8] - beq _0221DC54 - mov r0, r4 - add r1, r6, #0x220 - mov r2, #0x16 - bl MIi_CpuCopy16 -_0221DC54: - ldrb r0, [r5, #0x18] - strb r0, [r6, #0x236] - ldr r0, [r5, #4] - bl mystrlen - mov r2, r0, lsl #0x11 - ldr r0, [r5, #4] - add r1, r6, #0x238 - mov r2, r2, lsr #0x10 - bl MIi_CpuCopy16 - ldr r0, [r5, #8] - add r1, r6, #0x298 - mov r2, #0xc0 - bl MIi_CpuCopy16 - mov r1, #1 - strb r1, [r6, #0x358] - add r0, r6, #0x300 - strh r1, [r0, #0x5a] - add r0, r6, #0x400 - strh r1, [r0, #0xb0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end MBi_MakeGameInfo - - arm_func_start MBi_ReadIconInfo -MBi_ReadIconInfo: ; 0x0221DCA4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x48 - cmp r2, #0 - movne r4, #0x200 - moveq r4, #0x20 - mov r6, r0 - mov r5, r1 - cmp r2, #0 - addne r5, r5, #0x20 - cmp r6, #0 - addeq sp, sp, #0x48 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, sp, #0 - bl FS_InitFile - add r0, sp, #0 - mov r1, r6 - bl FS_OpenFile - cmp r0, #0 - addeq sp, sp, #0x48 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [sp, #0x28] - ldr r0, [sp, #0x24] - sub r0, r1, r0 - cmp r4, r0 - add r0, sp, #0 - beq _0221DD24 - bl FS_CloseFile - add sp, sp, #0x48 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0221DD24: - mov r1, r5 - mov r2, r4 - bl FS_ReadFile - add r0, sp, #0 - bl FS_CloseFile - mov r0, #1 - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MBi_ReadIconInfo - - arm_func_start MB_UpdateGameInfoMember -MB_UpdateGameInfoMember: ; 0x0221DD44 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r2 - add r4, r6, #0x5e - mov r0, r1 - add r1, r4, #0x300 - ldr r2, _0221DDB0 ; =0x0000014A - mov r4, r3 - mov r7, #1 - bl MIi_CpuCopy16 - mov r2, #0 - mov r1, #2 -_0221DD74: - tst r5, r1, lsl r2 - addne r0, r7, #1 - add r2, r2, #1 - andne r7, r0, #0xff - cmp r2, #0xf - blt _0221DD74 - strb r7, [r6, #0x358] - orr r1, r5, #1 - add r0, r6, #0x300 - strh r1, [r0, #0x5a] - strh r4, [r0, #0x5c] - ldrb r0, [r6, #0x4b4] - add r0, r0, #1 - strb r0, [r6, #0x4b4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221DDB0: .word 0x0000014A - arm_func_end MB_UpdateGameInfoMember - - arm_func_start mystrlen -mystrlen: ; 0x0221DDB4 - ldrh r1, [r0], #2 - mov r2, #0 - cmp r1, #0 - beq _0221DDD4 -_0221DDC4: - ldrh r1, [r0], #2 - add r2, r2, #1 - cmp r1, #0 - bne _0221DDC4 -_0221DDD4: - mov r0, r2 - bx lr - arm_func_end mystrlen - - arm_func_start MB_AddGameInfo -MB_AddGameInfo: ; 0x0221DDDC - ldr r1, _0221DE1C ; =ov13_022474A0 - ldr r2, [r1, #0x18] - cmp r2, #0 - streq r0, [r1, #0x18] - beq _0221DE10 - ldr r1, [r2, #0x4bc] - cmp r1, #0 - beq _0221DE0C -_0221DDFC: - mov r2, r1 - ldr r1, [r1, #0x4bc] - cmp r1, #0 - bne _0221DDFC -_0221DE0C: - str r0, [r2, #0x4bc] -_0221DE10: - mov r1, #0 - str r1, [r0, #0x4bc] - bx lr - .balign 4, 0 -_0221DE1C: .word ov13_022474A0 - arm_func_end MB_AddGameInfo - - arm_func_start MB_InitSendGameInfoStatus -MB_InitSendGameInfoStatus: ; 0x0221DE20 - ldr r0, _0221DE44 ; =ov13_022474A0 - mov r2, #0 - str r2, [r0, #0x18] - str r2, [r0, #0x1c] - mov r1, #1 - strb r1, [r0, #0x24] - ldr ip, _0221DE48 ; =MBi_ClearSendStatus - str r2, [r0, #0x14] - bx ip - .balign 4, 0 -_0221DE44: .word ov13_022474A0 -_0221DE48: .word MBi_ClearSendStatus - arm_func_end MB_InitSendGameInfoStatus - - arm_func_start MBi_ClearSendStatus -MBi_ClearSendStatus: ; 0x0221DE4C - ldr r0, _0221DE6C ; =ov13_022474A0 - mov r1, #0 - strb r1, [r0, #0x25] - strb r1, [r0, #0x26] - strb r1, [r0, #0x27] - strb r1, [r0, #0x28] - strb r1, [r0, #0x29] - bx lr - .balign 4, 0 -_0221DE6C: .word ov13_022474A0 - arm_func_end MBi_ClearSendStatus - - arm_func_start MB_SendGameInfoBeacon -MB_SendGameInfoBeacon: ; 0x0221DE70 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _0221DEF8 ; =ov13_022474A0 - mov r7, r0 - mov r6, r1 - mov r5, r2 -_0221DE84: - ldrb r0, [r4, #0x24] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0221DE84 -_0221DE94: ; jump table - b _0221DEB0 ; case 0 - b _0221DEB0 ; case 1 - b _0221DEC0 ; case 2 - b _0221DEC8 ; case 3 - b _0221DEDC ; case 4 - b _0221DEE4 ; case 5 - b _0221DE84 ; case 6 -_0221DEB0: - bl MBi_ReadyBeaconSendStatus - cmp r0, #0 - bne _0221DE84 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221DEC0: - bl MBi_InitSendFixedBeacon - b _0221DE84 -_0221DEC8: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl MBi_SendFixedBeacon - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0221DEDC: - bl MBi_InitSendVolatBeacon - b _0221DE84 -_0221DEE4: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl MBi_SendVolatBeacon - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221DEF8: .word ov13_022474A0 - arm_func_end MB_SendGameInfoBeacon - - arm_func_start MBi_ReadyBeaconSendStatus -MBi_ReadyBeaconSendStatus: ; 0x0221DEFC - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _0221DF94 ; =ov13_022474A0 - ldr r1, [r0, #0x18] - cmp r1, #0 - bne _0221DF4C - bl MBi_GetGgid - mov r4, r0 - bl MBi_GetTgid - str r0, [sp] - mov ip, #8 - ldr r1, _0221DF98 ; =bsendBuff - mov r3, r4 - mov r0, #0 - mov r2, #0x70 - str ip, [sp, #4] - bl WM_SetGameInfo - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, pc} -_0221DF4C: - ldr r0, [r0, #0x1c] - cmp r0, #0 - ldrne r1, [r0, #0x4bc] - cmpne r1, #0 - ldreq r0, _0221DF94 ; =ov13_022474A0 - ldreq r1, [r0, #0x18] - ldr r0, _0221DF94 ; =ov13_022474A0 - str r1, [r0, #0x1c] - bl MBi_ClearSendStatus - ldr r1, _0221DF94 ; =ov13_022474A0 - mov r2, #2 - ldr r3, [r1, #0x1c] - mov r0, #1 - ldrb r3, [r3, #0x4b4] - strb r3, [r1, #0x26] - strb r2, [r1, #0x24] - add sp, sp, #8 - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221DF94: .word ov13_022474A0 -_0221DF98: .word bsendBuff - arm_func_end MBi_ReadyBeaconSendStatus - - arm_func_start MBi_InitSendFixedBeacon -MBi_InitSendFixedBeacon: ; 0x0221DF9C - ldr r0, _0221DFEC ; =ov13_022474A0 - ldrb r1, [r0, #0x24] - cmp r1, #2 - bxne lr - ldr r2, [r0, #0x1c] - ldrb r1, [r2, #0x4b2] - cmp r1, #0 - bne _0221DFCC - mov r1, #9 - strb r1, [r0, #0x28] - str r2, [r0, #0x20] - b _0221DFDC -_0221DFCC: - mov r1, #4 - strb r1, [r0, #0x28] - add r1, r2, #0x220 - str r1, [r0, #0x20] -_0221DFDC: - ldr r0, _0221DFEC ; =ov13_022474A0 - mov r1, #3 - strb r1, [r0, #0x24] - bx lr - .balign 4, 0 -_0221DFEC: .word ov13_022474A0 - arm_func_end MBi_InitSendFixedBeacon - - arm_func_start MBi_SendFixedBeacon -MBi_SendFixedBeacon: ; 0x0221DFF0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r3, _0221E144 ; =ov13_022474A0 - mov r6, r0 - ldr r4, [r3, #0x1c] - ldr r0, [r3, #0x20] - add ip, r4, #0x358 - add r7, r0, #0x62 - cmp r7, ip - movls r0, #0x62 - mov r5, r1 - mov r4, r2 - strlsb r0, [r3, #0x4c] - bls _0221E048 - sub r7, ip, r0 - and r1, r7, #0xff - ldr r0, _0221E148 ; =bsendBuff + 0xE - rsb r2, r1, #0x62 - add r1, r0, r1 - mov r0, #0 - strb r7, [r3, #0x4c] - bl MIi_CpuClear16 -_0221E048: - ldr r0, _0221E144 ; =ov13_022474A0 - ldr r1, _0221E148 ; =bsendBuff + 0xE - ldrb r2, [r0, #0x4c] - ldr r0, [r0, #0x20] - bl MIi_CpuCopy16 - ldr r2, _0221E144 ; =ov13_022474A0 - ldr r0, _0221E14C ; =bsendBuff + 0x8 - ldrb r7, [r2, #0x27] - mov r3, #0 - mov r1, #0x68 - strb r7, [r2, #0x4a] - ldrb r7, [r2, #0x28] - strb r7, [r2, #0x4b] - ldr r7, [r2, #0x1c] - ldrb lr, [r2, #0x44] - ldrb ip, [r7, #0x4b2] - bic lr, lr, #3 - and ip, ip, #3 - orr ip, lr, ip - strb ip, [r2, #0x44] - ldrb ip, [r7, #0x4b3] - strb ip, [r2, #0x45] - ldrb ip, [r2, #0x26] - strb ip, [r2, #0x46] - ldr ip, [r7, #0x4b8] - str ip, [r2, #0x40] - ldrb lr, [r2, #0x44] - ldrb ip, [r7, #0x4b5] - bic lr, lr, #0xfc - mov ip, ip, lsl #0x1a - orr ip, lr, ip, lsr #24 - strb ip, [r2, #0x44] - ldrb lr, [r2, #0x29] - add ip, lr, #1 - strb ip, [r2, #0x29] - strb lr, [r2, #0x47] - strh r3, [r2, #0x48] - bl MBi_calc_cksum - ldr r1, _0221E144 ; =ov13_022474A0 - strh r0, [r1, #0x48] - ldrb r0, [r1, #0x27] - add r2, r0, #1 - strb r2, [r1, #0x27] - ldrb r0, [r1, #0x28] - and r2, r2, #0xff - cmp r2, r0 - movhs r0, #4 - strhsb r0, [r1, #0x24] - bhs _0221E118 - ldr r0, [r1, #0x20] - add r0, r0, #0x62 - str r0, [r1, #0x20] -_0221E118: - orr r0, r4, #3 - ldr r1, _0221E150 ; =bsendBuff - mov r3, r6 - str r5, [sp] - and r4, r0, #0xff - mov r0, #0 - mov r2, #0x70 - str r4, [sp, #4] - bl WM_SetGameInfo - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221E144: .word ov13_022474A0 -_0221E148: .word bsendBuff + 0xE -_0221E14C: .word bsendBuff + 0x8 -_0221E150: .word bsendBuff - arm_func_end MBi_SendFixedBeacon - - arm_func_start MBi_InitSendVolatBeacon -MBi_InitSendVolatBeacon: ; 0x0221E154 - ldr r1, _0221E180 ; =ov13_022474A0 - mov r3, #1 - ldr r0, [r1, #0x1c] - mov r2, #5 - add r0, r0, #0x400 - strh r3, [r0, #0xb0] - ldr r0, [r1, #0x1c] - ldrb r0, [r0, #0x4b4] - strb r0, [r1, #0x26] - strb r2, [r1, #0x24] - bx lr - .balign 4, 0 -_0221E180: .word ov13_022474A0 - arm_func_end MBi_InitSendVolatBeacon - - arm_func_start MBi_SendVolatBeacon -MBi_SendVolatBeacon: ; 0x0221E184 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r3, _0221E3DC ; =ov13_022474A0 - str r0, [sp, #8] - ldr r0, [r3, #0x1c] - ldrb r3, [r3, #0x26] - ldrb r0, [r0, #0x4b4] - str r1, [sp, #0xc] - str r2, [sp, #0x10] - cmp r3, r0 - beq _0221E1B4 - bl MBi_InitSendVolatBeacon -_0221E1B4: - ldr r2, _0221E3DC ; =ov13_022474A0 - ldrb r0, [r2, #0x44] - bic r0, r0, #3 - orr r0, r0, #2 - strb r0, [r2, #0x44] - ldr r0, [r2, #0x1c] - ldrb r3, [r0, #0x4b3] - add r1, r0, #0x300 - strb r3, [r2, #0x45] - ldrb r3, [r2, #0x26] - strb r3, [r2, #0x46] - ldr r3, [r0, #0x4b8] - str r3, [r2, #0x40] - ldrb r4, [r2, #0x44] - ldrb r3, [r0, #0x4b5] - bic r4, r4, #0xfc - mov r3, r3, lsl #0x1a - orr r3, r4, r3, lsr #24 - strb r3, [r2, #0x44] - ldrb r4, [r2, #0x29] - add r3, r4, #1 - strb r3, [r2, #0x29] - strb r4, [r2, #0x47] - ldrb r3, [r0, #0x358] - strb r3, [r2, #0x4a] - ldrh r3, [r1, #0x5a] - strh r3, [r2, #0x4c] - ldrh r1, [r1, #0x5c] - strh r1, [r2, #0x4e] - ldr r1, [r2, #0x10] - cmp r1, #0 - bne _0221E248 - ldr r1, [r2, #0x14] - cmp r1, #0 - beq _0221E248 - ldr r0, [r0, #0x4b8] - blx r1 -_0221E248: - ldr r0, _0221E3DC ; =ov13_022474A0 - mov sb, #0 - ldr r1, _0221E3E0 ; =bsendBuff + 0x68 - ldr r2, [r0, #0x1c] - b _0221E26C -_0221E25C: - add r0, r2, sb - ldrb r0, [r0, #0x4a8] - strb r0, [r1, sb] - add sb, sb, #1 -_0221E26C: - cmp sb, #8 - blt _0221E25C - ldr r1, _0221E3E4 ; =bsendBuff + 0x10 - mov r0, #0 - mov r2, #0x58 - bl MIi_CpuClear16 - ldr r5, _0221E3DC ; =ov13_022474A0 - mov sl, #0 - ldr r1, [r5, #0x1c] - mov r6, #2 - add r0, r1, #0x400 - add r1, r1, #0x300 - ldrh r2, [r0, #0xb0] - ldrh r0, [r1, #0x5a] - mov sb, sl - ldr r7, _0221E3E4 ; =bsendBuff + 0x10 - eor r0, r2, r0 - mov r4, r0, lsl #0x10 - mov r8, r6 - mov fp, #0x16 - b _0221E310 -_0221E2C0: - mov r0, r8, lsl sb - tst r0, r4, lsr #16 - beq _0221E30C - ldr r0, [r5, #0x1c] - mla r1, sl, fp, r7 - add r0, r0, #0x5e - add r2, r0, #0x300 - mov r0, #0x16 - mla r0, sb, r0, r2 - mov r2, #0x16 - bl MIi_CpuCopy16 - ldr r0, [r5, #0x1c] - add sl, sl, #1 - add r0, r0, #0x400 - ldrh r1, [r0, #0xb0] - cmp sl, #4 - orr r1, r1, r6, lsl sb - strh r1, [r0, #0xb0] - beq _0221E318 -_0221E30C: - add sb, sb, #1 -_0221E310: - cmp sb, #0xf - blt _0221E2C0 -_0221E318: - cmp sl, #4 - bhs _0221E338 - mov r0, #0x16 - mul r1, sl, r0 - ldr r2, _0221E3E4 ; =bsendBuff + 0x10 - ldrb r0, [r2, r1] - bic r0, r0, #0xf0 - strb r0, [r2, r1] -_0221E338: - ldr r2, _0221E3DC ; =ov13_022474A0 - mov r3, #0 - ldr r0, _0221E3E8 ; =bsendBuff + 0x8 - mov r1, #0x68 - strh r3, [r2, #0x48] - bl MBi_calc_cksum - ldr r2, _0221E3DC ; =ov13_022474A0 - strh r0, [r2, #0x48] - ldr r1, [r2, #0x1c] - add r0, r1, #0x400 - add r1, r1, #0x300 - ldrh r3, [r0, #0xb0] - ldrh r0, [r1, #0x5a] - ldr r1, _0221E3EC ; =bsendBuff - cmp r3, r0 - moveq r0, #1 - streqb r0, [r2, #0x24] - ldr r0, [sp, #0x10] - ldr r3, [sp, #8] - orr r2, r0, #3 - ldr r0, [sp, #0xc] - and r4, r2, #0xff - str r0, [sp] - mov r0, #0 - mov r2, #0x70 - str r4, [sp, #4] - bl WM_SetGameInfo - ldr r0, _0221E3DC ; =ov13_022474A0 - ldr r1, [r0, #0x10] - cmp r1, #1 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r0, #0x14] - cmp r1, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r0, #0x1c] - ldr r0, [r0, #0x4b8] - blx r1 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .balign 4, 0 -_0221E3DC: .word ov13_022474A0 -_0221E3E0: .word bsendBuff + 0x68 -_0221E3E4: .word bsendBuff + 0x10 -_0221E3E8: .word bsendBuff + 0x8 -_0221E3EC: .word bsendBuff - arm_func_end MBi_SendVolatBeacon - - arm_func_start changeScanChannel -changeScanChannel: ; 0x0221E3F0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl WM_GetAllowedChannel - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh lr, [r4, #4] - mov r2, #1 - mov ip, #0 - mov r5, lr - mov r3, r2 -_0221E41C: - sub r1, r5, #1 - tst r0, r3, lsl r1 - cmpne lr, r5 - strneh r5, [r4, #4] - bne _0221E458 - add r1, ip, #1 - mov r1, r1, lsl #0x10 - cmp r5, #0x10 - mov ip, r1, lsr #0x10 - moveq r1, r2 - addne r1, r5, #1 - mov r1, r1, lsl #0x10 - cmp ip, #0x10 - mov r5, r1, lsr #0x10 - blo _0221E41C -_0221E458: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end changeScanChannel - - arm_func_start MBi_IsSendEnabled -MBi_IsSendEnabled: ; 0x0221E460 - ldr r1, _0221E4BC ; =ov13_0224CF40 - mov r0, #0 - ldr ip, [r1, #8] - mov r3, r0 - add r1, ip, #0x500 - ldrh r1, [r1, #0x28] - mov r2, r0 - cmp r1, #1 - ldreqb r1, [ip, #0x50c] - cmpeq r1, #0 - moveq r3, #1 - cmp r3, #0 - beq _0221E4A4 - add r1, ip, #0x500 - ldrh r1, [r1, #0x26] - cmp r1, #0 - moveq r2, #1 -_0221E4A4: - cmp r2, #0 - addne r1, ip, #0x500 - ldrneh r1, [r1, #0x2a] - cmpne r1, #0 - movne r0, #1 - bx lr - .balign 4, 0 -_0221E4BC: .word ov13_0224CF40 - arm_func_end MBi_IsSendEnabled - - arm_func_start MBi_OnInitializeDone -MBi_OnInitializeDone: ; 0x0221E4C0 - stmdb sp!, {r3, lr} - ldr r0, _0221E508 ; =MBi_ParentCallback - bl WM_SetIndCallback - mov r1, r0 - mov r0, #0x80 - bl MBi_CheckWmErrcode - ldr r3, _0221E50C ; =ov13_0224598C - ldr r0, _0221E508 ; =MBi_ParentCallback - ldrh r1, [r3, #4] - str r1, [sp] - ldrh r1, [r3, #6] - ldrh r2, [r3, #2] - ldrh r3, [r3] - bl WM_SetLifeTime - mov r1, r0 - mov r0, #0x1d - bl MBi_CheckWmErrcode - ldmia sp!, {r3, pc} - .balign 4, 0 -_0221E508: .word MBi_ParentCallback -_0221E50C: .word ov13_0224598C - arm_func_end MBi_OnInitializeDone - - arm_func_start MBi_EndCommon -MBi_EndCommon: ; 0x0221E510 - stmdb sp!, {r3, lr} - ldr r2, _0221E550 ; =ov13_0224CF40 - mov ip, #0 - ldr r3, [r2, #8] - mov r1, r0 - strb ip, [r3, #0x50d] - ldr r0, [r2, #0xc] - add r0, r0, #0x1300 - strh ip, [r0, #0x16] - ldr r0, [r2, #8] - ldr r2, [r0, #0x51c] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x11 - blx r2 - ldmia sp!, {r3, pc} - .balign 4, 0 -_0221E550: .word ov13_0224CF40 - arm_func_end MBi_EndCommon - - arm_func_start MBi_ParentCallback -MBi_ParentCallback: ; 0x0221E554 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x1c - mov r4, r0 - ldrh r1, [r4] - cmp r1, #0x19 - bgt _0221E5BC - bge _0221E698 - cmp r1, #0xf - addls pc, pc, r1, lsl #2 - b _0221ED7C -_0221E57C: ; jump table - b _0221E5D8 ; case 0 - b _0221EB4C ; case 1 - b _0221EC3C ; case 2 - b _0221ED7C ; case 3 - b _0221ED7C ; case 4 - b _0221ED7C ; case 5 - b _0221ED7C ; case 6 - b _0221E660 ; case 7 - b _0221E734 ; case 8 - b _0221ED7C ; case 9 - b _0221ED7C ; case 10 - b _0221ED7C ; case 11 - b _0221ED7C ; case 12 - b _0221EC84 ; case 13 - b _0221E988 ; case 14 - b _0221EA28 ; case 15 -_0221E5BC: - cmp r1, #0x1d - bgt _0221E5CC - beq _0221E610 - b _0221ED7C -_0221E5CC: - cmp r1, #0x80 - beq _0221ECBC - b _0221ED7C -_0221E5D8: - ldrh r0, [r4, #2] - cmp r0, #0 - beq _0221E604 - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E604: - bl MBi_OnInitializeDone - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E610: - ldrh r0, [r4, #2] - cmp r0, #0 - beq _0221E63C - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E63C: - ldr r1, _0221ED9C ; =ov13_0224CF40 - ldr r0, _0221EDA0 ; =MBi_ParentCallback - ldr r1, [r1, #8] - bl WM_SetParentParameter - mov r1, r0 - mov r0, #7 - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E660: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x15 - ldr r2, [r2, #0x51c] - blx r2 - ldr r0, _0221EDA0 ; =MBi_ParentCallback - mov r1, #1 - bl WM_SetBeaconIndication - mov r1, r0 - mov r0, #0x19 - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E698: - ldr r2, _0221ED9C ; =ov13_0224CF40 - ldr ip, [r2, #8] - add r1, ip, #0x500 - ldrh r3, [r1, #0x26] - cmp r3, #0 - bne _0221E6F8 - ldrh r0, [r4, #2] - cmp r0, #0 - beq _0221E6D4 - ldr r2, [ip, #0x51c] - mov r1, r4 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E6D4: - ldr r1, _0221EDA4 ; =ov13_0224598C - ldr r0, _0221EDA0 ; =MBi_ParentCallback - ldr r1, [r1, #0xc] - bl WMi_StartParentEx - mov r1, r0 - mov r0, #8 - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E6F8: - ldrh r3, [r4, #2] - cmp r3, #0 - beq _0221E728 - mov r0, #0 - strh r0, [r1, #0x26] - ldr r0, [r2, #8] - mov r1, r4 - ldr r2, [r0, #0x51c] - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E728: - bl MBi_EndCommon - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E734: - ldrh r0, [r4, #2] - cmp r0, #0 - beq _0221E760 - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E760: - ldrh r0, [r4, #8] - cmp r0, #7 - bgt _0221E790 - bge _0221E7D8 - cmp r0, #2 - bgt _0221E968 - cmp r0, #0 - blt _0221E968 - beq _0221E7B0 - cmp r0, #2 - beq _0221E934 - b _0221E968 -_0221E790: - cmp r0, #9 - bgt _0221E7A0 - beq _0221E8F8 - b _0221E968 -_0221E7A0: - cmp r0, #0x1a - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, pc} - b _0221E968 -_0221E7B0: - ldr r1, _0221ED9C ; =ov13_0224CF40 - mov r2, #0 - ldr r0, [r1, #8] - add sp, sp, #0x1c - add r0, r0, #0x500 - strh r2, [r0, #0x2a] - ldr r0, [r1, #8] - add r0, r0, #0x500 - strh r2, [r0, #0x28] - ldmia sp!, {r3, r4, pc} -_0221E7D8: - ldr r2, _0221ED9C ; =ov13_0224CF40 - ldr r0, [r2, #8] - add r0, r0, #0x500 - ldrh r1, [r0, #0x26] - cmp r1, #1 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, pc} - ldrh lr, [r0, #0x2a] - ldrh r3, [r4, #0x10] - mov ip, #1 - mov r1, r4 - orr r3, lr, ip, lsl r3 - strh r3, [r0, #0x2a] - ldr r2, [r2, #8] - mov r0, #0 - ldr r2, [r2, #0x51c] - blx r2 - ldr r1, _0221ED9C ; =ov13_0224CF40 - ldr r0, [r1, #8] - add r0, r0, #0x500 - ldrh r0, [r0, #0x28] - cmp r0, #0 - bne _0221E8C8 - ldr r0, [r1, #0xc] - add r0, r0, #0x1000 - ldr r2, [r0, #0x31c] - cmp r2, #0 - bne _0221E8C8 - mov r2, #1 - str r2, [r0, #0x31c] - ldr r0, [r1, #8] - ldr r1, _0221ED9C ; =ov13_0224CF40 - add r0, r0, #0x500 - ldrh r0, [r0, #0x2c] - ldr ip, [r1, #8] - mov r1, #1 - cmp r0, #0 - movne r2, #0 - mov r0, r2, lsl #0x10 - mov r3, r0, lsr #0x10 - add r0, ip, #0x500 - ldrh r4, [r0, #0x18] - mov r2, #0 - str r4, [sp] - str r3, [sp, #4] - str r2, [sp, #8] - str r2, [sp, #0xc] - str r2, [sp, #0x10] - str r1, [sp, #0x14] - str r1, [sp, #0x18] - ldrh r2, [r0, #0x1a] - ldr r1, [ip, #0x504] - ldr r0, _0221EDA0 ; =MBi_ParentCallback - add r3, ip, #0x40 - bl WM_StartMPEx - mov r1, r0 - mov r0, #0xe - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E8C8: - bl MBi_IsSendEnabled - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, pc} - ldr r1, _0221ED9C ; =ov13_0224CF40 - mov r0, #0x19 - ldr r2, [r1, #8] - mov r1, #0 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E8F8: - ldr r2, _0221ED9C ; =ov13_0224CF40 - ldrh r3, [r4, #0x10] - ldr r1, [r2, #8] - mov r0, #1 - add r1, r1, #0x500 - ldrh ip, [r1, #0x2a] - mvn r3, r0, lsl r3 - and r3, ip, r3 - strh r3, [r1, #0x2a] - ldr r2, [r2, #8] - mov r1, r4 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E934: - ldr r0, _0221ED9C ; =ov13_0224CF40 - ldr r1, [r0, #8] - add r0, r1, #0x500 - ldrh r0, [r0, #0x26] - cmp r0, #1 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, pc} - ldr r2, [r1, #0x51c] - mov r1, r4 - mov r0, #0x1c - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E968: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E988: - ldr r2, _0221ED9C ; =ov13_0224CF40 - mov r1, #0 - ldr r0, [r2, #0xc] - add r0, r0, #0x1000 - str r1, [r0, #0x31c] - ldrh r0, [r4, #4] - cmp r0, #0xa - beq _0221E9B4 - cmp r0, #0xb - beq _0221E9F0 - b _0221EA0C -_0221E9B4: - ldr r0, [r2, #8] - mov r3, #1 - add r0, r0, #0x500 - strh r3, [r0, #0x28] - ldr r2, [r2, #8] - add r0, r2, #0x500 - ldrh r0, [r0, #0x26] - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, pc} - ldr r2, [r2, #0x51c] - mov r0, #0x19 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221E9F0: - ldr r0, [r2, #8] - ldr r1, [r4, #8] - ldr r2, [r0, #0x51c] - mov r0, #3 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EA0C: - ldr r0, [r2, #8] - mov r1, r4 - ldr r2, [r0, #0x51c] - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EA28: - ldr r0, _0221ED9C ; =ov13_0224CF40 - ldr r3, [r0, #0xc] - add r0, r3, #0x7000 - ldr r0, [r0, #0x4c8] - cmp r0, #0 - beq _0221EA84 - mov r2, #0 - mov r1, r2 -_0221EA48: - add r0, r3, r1, lsl #2 - add r0, r0, #0x1000 - ldr r0, [r0, #0x4e8] - cmp r0, #0 - beq _0221EA68 - add r2, r2, #1 - cmp r2, #2 - bhs _0221EA74 -_0221EA68: - add r1, r1, #1 - cmp r1, #0xf - blo _0221EA48 -_0221EA74: - cmp r2, #1 - bne _0221EA84 - ldr r0, _0221EDA8 ; =0x000032C8 - bl OS_SpinWait -_0221EA84: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r2, #0 - ldr r1, [r0, #8] - strb r2, [r1, #0x50c] - ldrh r1, [r4, #2] - cmp r1, #0 - bne _0221EAE8 - ldr r0, [r0, #8] - mov r1, r4 - ldr r2, [r0, #0x51c] - mov r0, #2 - blx r2 - ldr r0, _0221ED9C ; =ov13_0224CF40 - ldr r1, [r0, #8] - add r0, r1, #0x500 - ldrh r0, [r0, #0x26] - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, pc} - ldr r2, [r1, #0x51c] - mov r0, #0x19 - mov r1, #0 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EAE8: - cmp r1, #0xa - ldr r0, [r0, #8] - mov r1, r4 - bne _0221EB0C - ldr r2, [r0, #0x51c] - mov r0, #0x2a - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EB0C: - ldr r2, [r0, #0x51c] - mov r0, #0x13 - blx r2 - ldr r0, _0221ED9C ; =ov13_0224CF40 - ldr r1, [r0, #8] - add r0, r1, #0x500 - ldrh r0, [r0, #0x26] - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, pc} - ldr r2, [r1, #0x51c] - mov r0, #0x19 - mov r1, #0 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EB4C: - ldr r1, _0221ED9C ; =ov13_0224CF40 - ldr r0, [r1, #0xc] - add r0, r0, #0x1000 - ldr r0, [r0, #0x320] - cmp r0, #0 - bne _0221EBC8 - ldrh r0, [r4, #2] - mov r2, #0 - cmp r0, #0 - ldr r0, [r1, #8] - add r0, r0, #0x500 - beq _0221EB9C - strh r2, [r0, #0x26] - ldr r0, [r1, #8] - mov r1, r4 - ldr r2, [r0, #0x51c] - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EB9C: - strh r2, [r0, #0x2a] - ldr r1, [r1, #8] - ldr r0, _0221EDA0 ; =MBi_ParentCallback - add r1, r1, #0x500 - strh r2, [r1, #0x28] - bl WM_End - mov r1, r0 - mov r0, #2 - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EBC8: - mov r1, #0 - mov r2, r1 - mov r0, #1 - bl WM_SetPortCallback - mov r0, #0 - bl WM_SetIndCallback - ldrh r0, [r4, #2] - cmp r0, #0 - beq _0221EC1C - ldr r2, _0221ED9C ; =ov13_0224CF40 - mov r3, #0 - ldr r0, [r2, #8] - mov r1, r4 - add r0, r0, #0x500 - strh r3, [r0, #0x26] - ldr r2, [r2, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EC1C: - ldr r0, _0221EDA0 ; =MBi_ParentCallback - mov r1, #0 - bl WM_SetBeaconIndication - mov r1, r0 - mov r0, #0x19 - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EC3C: - ldrh r1, [r4, #2] - cmp r1, #0 - beq _0221EC78 - ldr r2, _0221ED9C ; =ov13_0224CF40 - mov r3, #0 - ldr r0, [r2, #8] - mov r1, r4 - add r0, r0, #0x500 - strh r3, [r0, #0x26] - ldr r2, [r2, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EC78: - bl MBi_EndCommon - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221EC84: - ldrh r0, [r4, #2] - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, pc} - ldr r0, _0221ED9C ; =ov13_0224CF40 - ldrh r1, [r4, #0xa] - ldr r0, [r0, #8] - add sp, sp, #0x1c - add r0, r0, #0x500 - ldrh r2, [r0, #0x2a] - mvn r1, r1 - and r1, r2, r1 - strh r1, [r0, #0x2a] - ldmia sp!, {r3, r4, pc} -_0221ECBC: - ldrh r0, [r4, #4] - sub r0, r0, #0x10 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0221ED94 -_0221ECD0: ; jump table - b _0221ECF0 ; case 0 - b _0221ED10 ; case 1 - b _0221ED30 ; case 2 - b _0221ED50 ; case 3 - b _0221ED94 ; case 4 - b _0221ED94 ; case 5 - b _0221ED70 ; case 6 - b _0221ED94 ; case 7 -_0221ECF0: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x1d - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221ED10: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x1f - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221ED30: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x20 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221ED50: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x21 - ldr r2, [r2, #0x51c] - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221ED70: - bl OS_Terminate - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} -_0221ED7C: - ldr r0, _0221ED9C ; =ov13_0224CF40 - mov r1, r4 - ldr r2, [r0, #8] - mov r0, #0x100 - ldr r2, [r2, #0x51c] - blx r2 -_0221ED94: - add sp, sp, #0x1c - ldmia sp!, {r3, r4, pc} - .balign 4, 0 -_0221ED9C: .word ov13_0224CF40 -_0221EDA0: .word MBi_ParentCallback -_0221EDA4: .word ov13_0224598C -_0221EDA8: .word 0x000032C8 - arm_func_end MBi_ParentCallback - - arm_func_start MBi_ChildPortCallback -MBi_ChildPortCallback: ; 0x0221EDAC - stmdb sp!, {r3, lr} - mov r1, r0 - ldrh r0, [r1, #2] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldrh r0, [r1, #4] - cmp r0, #0x15 - bgt _0221EDE8 - bge _0221EE00 - cmp r0, #9 - ldmgtia sp!, {r3, pc} - cmp r0, #7 - ldmltia sp!, {r3, pc} - cmpne r0, #9 - ldmia sp!, {r3, pc} -_0221EDE8: - cmp r0, #0x1a - ldmgtia sp!, {r3, pc} - cmp r0, #0x19 - ldmltia sp!, {r3, pc} - cmpne r0, #0x1a - ldmia sp!, {r3, pc} -_0221EE00: - ldr r2, _0221EE18 ; =ov13_0224CF40 - mov r0, #9 - ldr r2, [r2, #8] - ldr r2, [r2, #0x51c] - blx r2 - ldmia sp!, {r3, pc} - .balign 4, 0 -_0221EE18: .word ov13_0224CF40 - arm_func_end MBi_ChildPortCallback - - arm_func_start MBi_ChildCallback -MBi_ChildCallback: ; 0x0221EE1C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov r6, r0 - ldrh r2, [r6] - ldr r1, _0221F634 ; =ov13_0224CF40 - cmp r2, #0x1d - ldr r4, [r1, #8] - bgt _0221EEA8 - cmp r2, #0x1d - bge _0221EF14 - cmp r2, #0x15 - addls pc, pc, r2, lsl #2 - b _0221F61C -_0221EE50: ; jump table - b _0221EEB4 ; case 0 - b _0221F534 ; case 1 - b _0221F594 ; case 2 - b _0221F61C ; case 3 - b _0221F61C ; case 4 - b _0221F61C ; case 5 - b _0221F61C ; case 6 - b _0221F61C ; case 7 - b _0221F61C ; case 8 - b _0221F61C ; case 9 - b _0221EFB0 ; case 10 - b _0221F278 ; case 11 - b _0221F2C8 ; case 12 - b _0221F61C ; case 13 - b _0221F440 ; case 14 - b _0221F4B4 ; case 15 - b _0221F61C ; case 16 - b _0221F61C ; case 17 - b _0221F61C ; case 18 - b _0221F61C ; case 19 - b _0221F61C ; case 20 - b _0221F5D0 ; case 21 -_0221EEA8: - cmp r2, #0x80 - beq _0221F5F8 - b _0221F61C -_0221EEB4: - ldrh r0, [r6, #2] - ldr r2, [r4, #0x51c] - mov r1, r6 - cmp r0, #0 - beq _0221EED8 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221EED8: - mov r0, #0x15 - blx r2 - ldr r3, _0221F638 ; =ov13_0224598C - ldr r0, _0221F63C ; =MBi_ChildCallback - ldrh r1, [r3, #4] - str r1, [sp] - ldrh r1, [r3, #6] - ldrh r2, [r3, #2] - ldrh r3, [r3] - bl WM_SetLifeTime - mov r1, r0 - mov r0, #0x1d - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221EF14: - ldrh r0, [r6, #2] - cmp r0, #0 - beq _0221EF38 - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221EF38: - add r0, r4, #0x440 - str r0, [r1, #0x20] - ldrh r0, [r1, #0x24] - mov r2, #1 - cmp r0, #0 - moveq r0, #1 - streqh r0, [r1, #0x24] - ldr r0, _0221F634 ; =ov13_0224CF40 - ldrh r1, [r0, #0x26] - cmp r1, #0 - moveq r1, #0xc8 - streqh r1, [r0, #0x26] - ldr r0, _0221F634 ; =ov13_0224CF40 - mov r1, #0xff - strb r1, [r0, #0x28] - strb r1, [r0, #0x29] - strb r1, [r0, #0x2a] - strb r1, [r0, #0x2b] - strb r1, [r0, #0x2c] - strb r1, [r0, #0x2d] - str r2, [r4, #0x5e4] - ldr r0, _0221F63C ; =MBi_ChildCallback - ldr r1, _0221F640 ; =ov13_0224CF60 - str r2, [r4, #0x5e8] - bl WM_StartScan - mov r1, r0 - mov r0, #0xa - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221EFB0: - ldrh r0, [r6, #2] - cmp r0, #0 - beq _0221EFD4 - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221EFD4: - ldrh r0, [r6, #8] - cmp r0, #3 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #4 - beq _0221F200 - cmp r0, #5 - bne _0221F260 - add ip, r4, #0x600 - mov r5, #0 - add r0, r4, #0x500 - mov fp, #0x180 - b _0221F130 -_0221F008: - mla r2, r5, fp, ip - ldrb r3, [r6, #0xa] - ldrb r1, [r2, #0xca] - mov lr, #0 - mov sl, lr - cmp r3, r1 - ldreqb r1, [r2, #0xcb] - ldreqb r2, [r6, #0xb] - mov r7, lr - mov r8, lr - cmpeq r2, r1 - moveq sl, #1 - mov sb, lr - cmp sl, #0 - beq _0221F05C - mov r2, #0x180 - mla r2, r5, r2, ip - ldrb r1, [r6, #0xc] - ldrb r2, [r2, #0xcc] - cmp r1, r2 - moveq sb, #1 -_0221F05C: - cmp sb, #0 - beq _0221F07C - mov r1, #0x180 - mla r1, r5, r1, ip - ldrb r2, [r6, #0xd] - ldrb r1, [r1, #0xcd] - cmp r2, r1 - moveq r8, #1 -_0221F07C: - cmp r8, #0 - beq _0221F09C - mov r1, #0x180 - mla r1, r5, r1, ip - ldrb r2, [r6, #0xe] - ldrb r1, [r1, #0xce] - cmp r2, r1 - moveq r7, #1 -_0221F09C: - cmp r7, #0 - beq _0221F0BC - mov r1, #0x180 - mla r1, r5, r1, ip - ldrb r2, [r6, #0xf] - ldrb r1, [r1, #0xcf] - cmp r2, r1 - moveq lr, #1 -_0221F0BC: - cmp lr, #0 - beq _0221F12C - mov r0, #0x180 - mla r0, r5, r0, ip - ldrh r1, [r6, #0x36] - add sb, r6, #0x38 - add r8, r0, #0xf8 - strh r1, [r0, #0xf6] - mov r7, #8 -_0221F0E0: - ldmia sb!, {r0, r1, r2, r3} - stmia r8!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _0221F0E0 - add r1, r4, #0x600 - mov r0, #0x180 - mla r0, r5, r0, r1 - mov r1, #0xc0 - bl DC_InvalidateRange - ldr r1, _0221F634 ; =ov13_0224CF40 - add r2, r4, #0x600 - mov r0, #0x180 - mla r2, r5, r0, r2 - ldrh r0, [r1] - add r1, r4, #0x440 - mov r3, #0xc0 - bl MI_DmaCopy16 - str r5, [r4, #0x5ec] - b _0221F1A0 -_0221F12C: - add r5, r5, #1 -_0221F130: - ldrh r1, [r0, #0xe0] - cmp r5, r1 - blt _0221F008 - cmp r5, #0x10 - bge _0221F1A0 - mov r0, #0x180 - mla r1, r5, r0, ip - mov r0, r6 - add r7, r5, #1 - add r3, r4, #0x500 - add r1, r1, #0xc0 - mov r2, #0xb8 - strh r7, [r3, #0xe0] - bl MIi_CpuCopy16 - add r1, r4, #0x600 - mov r0, #0x180 - mla r0, r5, r0, r1 - mov r1, #0xc0 - bl DC_InvalidateRange - ldr r1, _0221F634 ; =ov13_0224CF40 - add r2, r4, #0x600 - mov r0, #0x180 - mla r2, r5, r0, r2 - ldrh r0, [r1] - add r1, r4, #0x440 - mov r3, #0xc0 - bl MI_DmaCopy16 - str r5, [r4, #0x5ec] -_0221F1A0: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #4 - blx r2 - ldr r0, [r4, #0x5e4] - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x5e8] - cmp r0, #0 - beq _0221F1E0 - ldr r0, _0221F640 ; =ov13_0224CF60 - bl changeScanChannel - cmp r0, #0 - bne _0221F1E0 - bl MBi_CommEnd -_0221F1E0: - ldr r0, _0221F63C ; =MBi_ChildCallback - ldr r1, _0221F640 ; =ov13_0224CF60 - bl WM_StartScan - mov r1, r0 - mov r0, #0xa - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F200: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #5 - blx r2 - ldr r0, [r4, #0x5e4] - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x5e8] - cmp r0, #0 - beq _0221F240 - ldr r0, _0221F640 ; =ov13_0224CF60 - bl changeScanChannel - cmp r0, #0 - bne _0221F240 - bl MBi_CommEnd -_0221F240: - ldr r0, _0221F63C ; =MBi_ChildCallback - ldr r1, _0221F640 ; =ov13_0224CF60 - bl WM_StartScan - mov r1, r0 - mov r0, #0xa - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F260: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F278: - ldrh r0, [r6, #2] - cmp r0, #0 - beq _0221F29C - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F29C: - ldr r1, [r4, #0x520] - mov r2, #0 - ldr r0, _0221F63C ; =MBi_ChildCallback - mov r3, #1 - str r2, [sp] - bl WM_StartConnectEx - mov r1, r0 - mov r0, #0xc - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F2C8: - ldrh r0, [r6, #2] - cmp r0, #0 - beq _0221F2F8 - add r0, r4, #0x500 - mov r1, #0 - strh r1, [r0, #0xe0] - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0xb - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F2F8: - ldrh r0, [r6, #8] - cmp r0, #9 - bgt _0221F324 - cmp r0, #6 - blt _0221F428 - beq _0221F334 - cmp r0, #7 - beq _0221F350 - cmp r0, #9 - beq _0221F400 - b _0221F428 -_0221F324: - cmp r0, #0x1a - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - b _0221F428 -_0221F334: - add r0, r4, #0x500 - mov r1, #0 - strh r1, [r0, #0x2a] - mov r1, #1 - strh r1, [r0, #0x28] - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F350: - ldrh r2, [r6, #0xa] - add r0, r4, #0x500 - mov r1, r6 - strh r2, [r0, #0xe2] - ldr r2, [r4, #0x51c] - mov r0, #6 - blx r2 - ldr r1, _0221F644 ; =MBi_ChildPortCallback - add r3, r4, #0x500 - mov r0, #1 - mov r2, #0 - strh r0, [r3, #0x2a] - bl WM_SetPortCallback - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r4, #0x500 - ldrh r0, [r0, #0x2c] - add r1, r4, #0x500 - ldrh r2, [r1, #0x18] - cmp r0, #0 - movne r0, #0 - moveq r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r2, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0x14] - str r0, [sp, #0x18] - ldrh r2, [r1, #0x1a] - ldr r1, [r4, #0x504] - ldr r0, _0221F63C ; =MBi_ChildCallback - add r3, r4, #0x40 - bl WM_StartMPEx - mov r1, r0 - mov r0, #0xe - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F400: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0xa - blx r2 - add r0, r4, #0x500 - mov r1, #0 - strh r1, [r0, #0x2a] - strh r1, [r0, #0x28] - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F428: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F440: - ldrh r0, [r6, #4] - cmp r0, #0xa - beq _0221F468 - cmp r0, #0xc - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0xd - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - b _0221F49C -_0221F468: - add r0, r4, #0x500 - mov r1, #1 - strh r1, [r0, #0x28] - bl MBi_IsSendEnabled - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x51c] - mov r0, #0x19 - mov r1, #0 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F49C: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F4B4: - mov r0, #0 - strb r0, [r4, #0x50c] - ldrh r0, [r6, #2] - cmp r0, #0 - bne _0221F4DC - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #8 - blx r2 - b _0221F500 -_0221F4DC: - cmp r0, #9 - ldr r2, [r4, #0x51c] - mov r1, r6 - bne _0221F4F8 - mov r0, #0x29 - blx r2 - b _0221F500 -_0221F4F8: - mov r0, #0x12 - blx r2 -_0221F500: - ldr r0, _0221F634 ; =ov13_0224CF40 - ldr r0, [r0, #8] - add r0, r0, #0x500 - ldrh r0, [r0, #0x26] - cmp r0, #0 - addne sp, sp, #0x1c - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x51c] - mov r0, #0x19 - mov r1, #0 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F534: - ldrh r0, [r6, #2] - cmp r0, #0 - add r0, r4, #0x500 - beq _0221F564 - mov r1, #0 - strh r1, [r0, #0x26] - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F564: - mov r2, #0 - strh r2, [r0, #0x2a] - ldr r1, [r1, #8] - ldr r0, _0221F63C ; =MBi_ChildCallback - add r1, r1, #0x500 - strh r2, [r1, #0x28] - bl WM_End - mov r1, r0 - mov r0, #2 - bl MBi_CheckWmErrcode - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F594: - ldrh r1, [r6, #2] - cmp r1, #0 - beq _0221F5C4 - add r0, r4, #0x500 - mov r1, #0 - strh r1, [r0, #0x26] - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F5C4: - bl MBi_EndCommon - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F5D0: - bl MBi_IsSendEnabled - cmp r0, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0x51c] - mov r0, #0x19 - mov r1, #0 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F5F8: - ldrh r0, [r6, #4] - cmp r0, #0x16 - beq _0221F610 - add sp, sp, #0x1c - cmp r0, #0x17 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F610: - bl OS_Terminate - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0221F61C: - ldr r2, [r4, #0x51c] - mov r1, r6 - mov r0, #0x100 - blx r2 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .balign 4, 0 -_0221F634: .word ov13_0224CF40 -_0221F638: .word ov13_0224598C -_0221F63C: .word MBi_ChildCallback -_0221F640: .word ov13_0224CF60 -_0221F644: .word MBi_ChildPortCallback - arm_func_end MBi_ChildCallback - - arm_func_start MBi_GetBeaconPeriodDispersion -MBi_GetBeaconPeriodDispersion: ; 0x0221F648 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r0, sp, #0 - bl OS_GetMacAddress - mov r1, #0 - add r2, sp, #0 - mov r3, r1 -_0221F664: - ldrb r0, [r2], #1 - add r1, r1, #1 - cmp r1, #6 - add r3, r3, r0 - blt _0221F664 - ldr r1, _0221F6A8 ; =0x027FFC3C - ldr r0, _0221F6AC ; =0xCCCCCCCD - ldr r1, [r1] - mov r2, #0x14 - add r1, r3, r1 - rsb r3, r1, r1, lsl #3 - umull r1, r0, r3, r0 - mov r0, r0, lsr #4 - umull r0, r1, r2, r0 - sub r0, r3, r0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .balign 4, 0 -_0221F6A8: .word 0x027FFC3C -_0221F6AC: .word 0xCCCCCCCD - arm_func_end MBi_GetBeaconPeriodDispersion - - arm_func_start MB_Init -MB_Init: ; 0x0221F6B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0221F888 ; =ov13_0224CF40 - mov sb, r1 - ldr r1, [r4, #0xc] - mov r8, r2 - cmp r1, #0 - addne r1, r1, #0x1300 - ldrneh r1, [r1, #0x16] - mov r7, r3 - cmpne r1, #0 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r0, #0x1f - bic r4, r0, #0x1f - add r0, r4, #0x1f - add r0, r0, #0x1e00 - cmp r7, #0x10000 - bic r5, r0, #0x1f - bne _0221F704 - bl WM_GetNextTgid - mov r7, r0 -_0221F704: - bl OS_DisableInterrupts - ldr r3, _0221F88C ; =0x0000FFFF - ldr r1, _0221F890 ; =ov13_0224598C - mov r2, #5 - strh r3, [r1, #6] - strh r2, [r1] - mov r2, #0x28 - strh r2, [r1, #2] - mov r6, r0 - strh r2, [r1, #4] - mov r2, #1 - ldr r0, [sp, #0x20] - ldr r3, _0221F888 ; =ov13_0224CF40 - str r2, [r1, #0xc] - strh r0, [r3] - str r4, [r3, #8] - mov r1, r4 - mov r0, #0 - mov r2, #0x1e00 - str r5, [r3, #0xc] - bl MIi_CpuClear32 - mov r1, r5 - mov r0, #0 - mov r2, #0x1340 - bl MIi_CpuClear16 - ldrb r0, [sb, #1] - add r2, r4, #0x530 - mov r1, #0 - cmp r0, #0 - ble _0221F798 -_0221F77C: - add r0, sb, r1, lsl #1 - ldrh r0, [r0, #2] - add r1, r1, #1 - strh r0, [r2], #2 - ldrb r0, [sb, #1] - cmp r1, r0 - blt _0221F77C -_0221F798: - add r0, r4, #0x138 - add r3, r0, #0x400 - ldr r0, _0221F890 ; =ov13_0224598C - mov ip, #0 - ldr r1, [r0, #8] -_0221F7AC: - ldrh r2, [r1] - cmp r2, #0 - beq _0221F7D0 - add r1, r1, #2 - add ip, ip, #1 - str r1, [r0, #8] - cmp ip, #0x10 - strh r2, [r3], #2 - blt _0221F7AC -_0221F7D0: - mov r0, sb - add r1, r5, #0x1300 - mov r2, #0x16 - bl MI_CpuCopy8 - ldrb r0, [sb, #1] - cmp r0, #0xa - bhs _0221F7FC - add r0, r5, r0, lsl #1 - add r0, r0, #0x1300 - mov r1, #0 - strh r1, [r0, #2] -_0221F7FC: - add r0, r4, #0x500 - mov r1, #0x100 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r2, #0 - strh r2, [r0, #0x18] - strh r2, [r0, #0x1a] - mov r1, #1 - strh r1, [r0, #0x2c] - add r0, r5, #0x400 - str r0, [r4, #0x504] - strh r2, [r4, #0xe] - strh r2, [r4, #0x12] - strh r1, [r4, #0x16] - strh r2, [r4, #0x14] - str r8, [r4, #8] - strh r7, [r4, #0xc] - bl MBi_GetBeaconPeriodDispersion - add r0, r0, #0xc8 - strh r0, [r4, #0x18] - mov r0, #0xf - strh r0, [r4, #0x10] - mov r3, #0 - strb r3, [r4, #0x50c] - strb r3, [r4, #0x50d] - add r1, r5, #0x1300 - mov r2, #1 - mov r0, r6 - strh r2, [r1, #0x16] - add r1, r5, #0x1000 - str r3, [r1, #0x31c] - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .balign 4, 0 -_0221F888: .word ov13_0224CF40 -_0221F88C: .word 0x0000FFFF -_0221F890: .word ov13_0224598C - arm_func_end MB_Init - - arm_func_start MBi_IsCommSizeValid -MBi_IsCommSizeValid: ; 0x0221F894 - ldr r3, _0221F8FC ; =0x000001FE - cmp r0, r3 - bhi _0221F8A8 - cmp r0, #0xe4 - bhs _0221F8B0 -_0221F8A8: - mov r0, #0 - bx lr -_0221F8B0: - cmp r1, #0x10 - bhi _0221F8C0 - cmp r1, #8 - bhs _0221F8C8 -_0221F8C0: - mov r0, #0 - bx lr -_0221F8C8: - add r0, r0, #0x26 - mov r0, r0, lsl #2 - add r1, r1, #0x20 - add r0, r0, #0x4a - mov r1, r1, lsl #2 - add r3, r0, #0x100 - add r0, r1, #0x70 - mla r1, r2, r0, r3 - ldr r0, _0221F900 ; =0x000015E0 - cmp r1, r0 - movlt r0, #1 - movge r0, #0 - bx lr - .balign 4, 0 -_0221F8FC: .word 0x000001FE -_0221F900: .word 0x000015E0 - arm_func_end MBi_IsCommSizeValid - - arm_func_start MB_SetParentCommParam -MB_SetParentCommParam: ; 0x0221F904 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r1 - bl OS_DisableInterrupts - ldr r1, _0221F998 ; =ov13_0224CF40 - mov r6, r0 - ldr r1, [r1, #8] - ldrb r1, [r1, #0x50d] - cmp r1, #0 - beq _0221F938 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0221F938: - mov r0, r5 - mov r2, r4 - mov r1, #8 - bl MBi_IsCommSizeValid - cmp r0, #0 - bne _0221F960 - mov r0, r6 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0221F960: - ldr r2, _0221F998 ; =ov13_0224CF40 - mov r0, r6 - ldr r1, [r2, #8] - mov r3, #8 - strh r4, [r1, #0x10] - ldr r1, [r2, #8] - add r1, r1, #0x500 - strh r5, [r1] - ldr r1, [r2, #8] - add r1, r1, #0x500 - strh r3, [r1, #2] - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_0221F998: .word ov13_0224CF40 - arm_func_end MB_SetParentCommParam - - arm_func_start MBi_StartCommon -MBi_StartCommon: ; 0x0221F99C - stmdb sp!, {r4, lr} - ldr r2, _0221FA6C ; =ov13_0224CF40 - mov r3, #0 - ldr r1, [r2, #8] - mov r0, #0xa - add r1, r1, #0x500 - strh r3, [r1, #0x28] - ldr r1, [r2, #8] - add r1, r1, #0x500 - strh r3, [r1, #0x2a] - ldr r1, [r2, #8] - add r1, r1, #0x500 - strh r3, [r1, #0x26] - ldr r1, [r2, #8] - add r1, r1, #0x500 - strh r3, [r1, #0x48] - bl MBi_SetMaxScanTime - ldr r4, _0221FA6C ; =ov13_0224CF40 - ldr r0, [r4, #0xc] - add r0, r0, #0x1000 - ldr r0, [r0, #0x320] - cmp r0, #0 - bne _0221FA44 -_0221F9F8: - ldrh r2, [r4] - ldmib r4, {r0, r1} - ldr r1, [r1, #0x508] - bl WM_Initialize - cmp r0, #4 - beq _0221F9F8 - cmp r0, #2 - movne r0, #8 - ldmneia sp!, {r4, pc} - ldr r0, _0221FA6C ; =ov13_0224CF40 - ldr r0, [r0, #8] - ldr r0, [r0, #0x508] - bl WM_SetIndCallback - ldr r0, _0221FA6C ; =ov13_0224CF40 - mov r2, #1 - ldr r1, [r0, #8] - mov r0, #0 - strb r2, [r1, #0x50d] - ldmia sp!, {r4, pc} -_0221FA44: - ldr r0, [r4, #8] - ldr r0, [r0, #0x508] - bl WM_SetIndCallback - mov r0, r4 - ldr r0, [r0, #8] - mov r1, #1 - strb r1, [r0, #0x50d] - bl MBi_OnInitializeDone - mov r0, #0 - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221FA6C: .word ov13_0224CF40 - arm_func_end MBi_StartCommon - - arm_func_start MBi_StartParentCore -MBi_StartParentCore: ; 0x0221FA70 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl OS_DisableInterrupts - ldr r3, _0221FC40 ; =ov13_0224CF40 - mov r4, r0 - ldr r0, [r3, #8] - ldr r2, _0221FC44 ; =0x000069C0 - strh r5, [r0, #0x32] - ldr r5, [r3, #0xc] - mov r0, #0 - add r1, r5, #0x1f - add r1, r1, #0x7d00 - bic r1, r1, #0x1f - str r1, [r3, #4] - add r1, r5, #0x1000 - ldr r6, [r1, #0x4e4] - add r1, r5, #0x1340 - bl MIi_CpuClear16 - mov r0, r6 - bl MB_CommSetParentStateCallback - ldr r1, _0221FC40 ; =ov13_0224CF40 - ldr r0, [r1, #8] - ldr r2, [r1, #0xc] - add r0, r0, #0x500 - ldrh r3, [r0] - add r0, r2, #0x1000 - sub r2, r3, #6 - str r2, [r0, #0x318] - ldr r0, [r1, #8] - add r0, r0, #0x500 - ldrh r0, [r0, #2] - bl MBi_SetChildMPMaxSize - ldr r0, _0221FC40 ; =ov13_0224CF40 - ldr r0, [r0, #0xc] - add r0, r0, #0x138 - add r0, r0, #0x1400 - bl MBi_SetParentPieceBuffer - mov r5, #0 - ldr r2, _0221FC40 ; =ov13_0224CF40 - mov r0, r5 - mvn r3, #0 -_0221FB14: - ldr r1, [r2, #0xc] - add r1, r1, r5, lsl #2 - add r1, r1, #0x1000 - str r0, [r1, #0x4e8] - ldr r1, [r2, #0xc] - add r1, r1, r5 - add r1, r1, #0x1000 - add r5, r5, #1 - strb r3, [r1, #0x526] - cmp r5, #0xf - blt _0221FB14 - ldr r3, _0221FC40 ; =ov13_0224CF40 - ldr r2, _0221FC48 ; =0x00005D40 - ldr r1, [r3, #0xc] - add r1, r1, #0x1000 - strb r0, [r1, #0x524] - ldr r1, [r3, #0xc] - add r1, r1, #0x388 - add r1, r1, #0x1400 - bl MIi_CpuClear16 - ldr r0, _0221FC40 ; =ov13_0224CF40 - mov r1, #0 - ldr r0, [r0, #0xc] - mov r2, #0x1e - add r0, r0, #0x354 - add r0, r0, #0x1400 - bl MI_CpuFill8 - ldr r1, _0221FC40 ; =ov13_0224CF40 - mov r2, #1 - ldr r0, [r1, #8] - ldr r3, _0221FC4C ; =MBi_CommParentCallback - add r0, r0, #0x500 - strh r2, [r0, #0x24] - ldr r0, [r1, #8] - ldr r2, _0221FC50 ; =MBi_ParentCallback - str r3, [r0, #0x51c] - ldr r0, [r1, #8] - str r2, [r0, #0x508] - ldr r2, [r1, #8] - add r0, r2, #0x500 - ldrh r0, [r0] - strh r0, [r2, #0x34] - ldr r0, [r1, #8] - ldrh r2, [r0, #0x34] - add r0, r0, #0x500 - add r2, r2, #0x23 - bic r2, r2, #0x1f - strh r2, [r0, #0x18] - ldr r2, [r1, #8] - add r0, r2, #0x500 - ldrh r0, [r0, #2] - strh r0, [r2, #0x36] - ldr r0, [r1, #8] - ldrh r1, [r0, #0x36] - add r0, r0, #0x500 - add r1, r1, #0xe - rsb r1, r1, r1, lsl #4 - add r1, r1, #0x29 - bic r1, r1, #0x1f - mov r1, r1, lsl #1 - strh r1, [r0, #0x1a] - bl MB_InitSendGameInfoStatus - bl MBi_StartCommon - mov r5, r0 - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #0xf - mov r1, #1 - bl PXI_IsCallbackReady - ldr r1, _0221FC40 ; =ov13_0224CF40 - ldr r1, [r1, #0xc] - add r1, r1, #0x7000 - str r0, [r1, #0x4c8] - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_0221FC40: .word ov13_0224CF40 -_0221FC44: .word 0x000069C0 -_0221FC48: .word 0x00005D40 -_0221FC4C: .word MBi_CommParentCallback -_0221FC50: .word MBi_ParentCallback - arm_func_end MBi_StartParentCore - - arm_func_start MB_StartParentFromIdle -MB_StartParentFromIdle: ; 0x0221FC54 - ldr r1, _0221FC70 ; =ov13_0224CF40 - ldr ip, _0221FC74 ; =MBi_StartParentCore - ldr r1, [r1, #0xc] - mov r2, #1 - add r1, r1, #0x1000 - str r2, [r1, #0x320] - bx ip - .balign 4, 0 -_0221FC70: .word ov13_0224CF40 -_0221FC74: .word MBi_StartParentCore - arm_func_end MB_StartParentFromIdle - - arm_func_start MBi_CallReset -MBi_CallReset: ; 0x0221FC78 - stmdb sp!, {r4, lr} - ldr r0, _0221FCAC ; =ov13_0224CF40 - ldr r0, [r0, #8] - ldr r0, [r0, #0x508] - bl WM_Reset - mov r4, r0 - mov r1, r4 - mov r0, #1 - bl MBi_CheckWmErrcode - cmp r4, #2 - moveq r4, #0 - mov r0, r4 - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221FCAC: .word ov13_0224CF40 - arm_func_end MBi_CallReset - - arm_func_start MBi_OnReset -MBi_OnReset: ; 0x0221FCB0 - ldr ip, _0221FCB8 ; =MBi_CallReset - bx ip - .balign 4, 0 -_0221FCB8: .word MBi_CallReset - arm_func_end MBi_OnReset - - arm_func_start MBi_CommEnd -MBi_CommEnd: ; 0x0221FCBC - stmdb sp!, {r3, r4, r5, lr} - mov r5, #1 - bl OS_DisableInterrupts - ldr r1, _0221FD48 ; =ov13_0224CF40 - mov r4, r0 - ldr r2, [r1, #8] - ldrb r0, [r2, #0x50d] - cmp r0, #0 - bne _0221FCEC - mov r0, #0 - bl MBi_EndCommon - b _0221FD38 -_0221FCEC: - add r0, r2, #0x500 - ldrh r0, [r0, #0x26] - cmp r0, #0 - bne _0221FD38 - mov r0, #0 - str r0, [r2, #0x5e4] - ldr r0, [r1, #8] - mov r1, r5 - add r0, r0, #0x500 - strh r1, [r0, #0x26] - bl MBi_IsTaskAvailable - cmp r0, #0 - beq _0221FD30 - ldr r0, _0221FD4C ; =MBi_OnReset - bl MBi_EndTaskThread - mov r5, #0 - b _0221FD38 -_0221FD30: - bl MBi_CallReset - mov r5, r0 -_0221FD38: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .balign 4, 0 -_0221FD48: .word ov13_0224CF40 -_0221FD4C: .word MBi_OnReset - arm_func_end MBi_CommEnd - - arm_func_start MB_End -MB_End: ; 0x0221FD50 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _0221FD88 ; =ov13_0224CF40 - mov r4, r0 - ldr r0, [r1, #0xc] - add r0, r0, #0x1000 - ldr r0, [r0, #0x320] - cmp r0, #0 - bne _0221FD78 - bl OS_Terminate -_0221FD78: - bl MBi_CommEnd - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .balign 4, 0 -_0221FD88: .word ov13_0224CF40 - arm_func_end MB_End - - arm_func_start MB_DisconnectChild -MB_DisconnectChild: ; 0x0221FD8C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - ldr r0, _0221FF0C ; =MBi_ParentCallback - mov r1, r5 - bl WM_Disconnect - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0x10 - ldmhsia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _0221FF10 ; =ov13_0224CF40 - sub r4, r5, #1 - ldr r0, [r2, #0xc] - mov r1, #0 - add r0, r0, r4, lsl #1 - add r0, r0, #0x1400 - strh r1, [r0, #0x8a] - ldr r0, [r2, #0xc] - mov r2, #4 - add r0, r0, #0xa8 - add r0, r0, #0x1400 - add r0, r0, r4, lsl #2 - bl MI_CpuFill8 - ldr r0, _0221FF10 ; =ov13_0224CF40 - mov r2, #0x16 - ldr r0, [r0, #0xc] - mov r1, #0 - add r0, r0, #0x1340 - mla r0, r4, r2, r0 - bl MI_CpuFill8 - mov r0, r5 - bl MBi_ClearParentPieceBuffer - ldr ip, _0221FF10 ; =ov13_0224CF40 - mov r2, #0 - ldr r0, [ip, #0xc] - sub r1, r2, #1 - add r0, r0, r4, lsl #1 - add r0, r0, #0x1700 - strh r2, [r0, #0x54] - ldr r3, [ip, #0xc] - add r0, r3, r4 - add r0, r0, #0x1500 - ldrsb r2, [r0, #0x26] - cmp r2, r1 - beq _0221FEAC - ldr r0, _0221FF14 ; =0x000005D4 - and r1, r2, #0xff - mul r0, r1, r0 - add r1, r3, r0 - add r3, r1, #0x1d00 - mov r2, #1 - ldrh r6, [r3, #0x4e] - mvn r1, r2, lsl r5 - and r6, r6, r1 - strh r6, [r3, #0x4e] - ldr r3, [ip, #0xc] - sub r6, r2, #2 - add r3, r3, r0 - add r3, r3, #0x1d00 - ldrh r7, [r3, #0x50] - mov lr, r4 - orr r2, r7, r2, lsl r5 - strh r2, [r3, #0x50] - ldr r2, [ip, #0xc] - add r2, r2, lr - add r2, r2, #0x1000 - strb r6, [r2, #0x526] - ldr r2, [ip, #0xc] - add r0, r2, r0 - add r0, r0, #0x1d00 - ldrh r2, [r0, #0x4c] - and r1, r2, r1 - strh r1, [r0, #0x4c] -_0221FEAC: - ldr r1, _0221FF10 ; =ov13_0224CF40 - mov ip, #1 - ldr r2, [r1, #0xc] - add r0, r2, #0x1500 - ldrh r0, [r0, #0x36] - tst r0, ip, lsl r5 - beq _0221FEF0 - add r0, r2, #0x1000 - ldrb r3, [r0, #0x535] - mvn r2, ip, lsl r5 - sub r3, r3, #1 - strb r3, [r0, #0x535] - ldr r0, [r1, #0xc] - add r0, r0, #0x1500 - ldrh r1, [r0, #0x36] - and r1, r1, r2 - strh r1, [r0, #0x36] -_0221FEF0: - ldr r0, _0221FF10 ; =ov13_0224CF40 - mov r1, #0 - ldr r0, [r0, #0xc] - add r0, r0, r4, lsl #2 - add r0, r0, #0x1000 - str r1, [r0, #0x4e8] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221FF0C: .word MBi_ParentCallback -_0221FF10: .word ov13_0224CF40 -_0221FF14: .word 0x000005D4 - arm_func_end MB_DisconnectChild - - arm_func_start MBi_SetMaxScanTime -MBi_SetMaxScanTime: ; 0x0221FF18 - ldr r1, _0221FF24 ; =ov13_0224CF40 - strh r0, [r1, #0x26] - bx lr - .balign 4, 0 -_0221FF24: .word ov13_0224CF40 - arm_func_end MBi_SetMaxScanTime - - arm_func_start MBi_SetMPData -MBi_SetMPData: ; 0x0221FF28 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - ldrh r4, [sp, #0x18] - mov r3, r2 - mov r2, r1 - str r4, [sp] - mov r4, #1 - str r4, [sp, #4] - mov r4, #3 - mov r1, #0 - str r4, [sp, #8] - bl WM_SetMPDataToPortEx - mov r4, r0 - mov r1, r4 - mov r0, #0xf - bl MBi_CheckWmErrcode - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - arm_func_end MBi_SetMPData - - arm_func_start MBi_SendMP -MBi_SendMP: ; 0x0221FF74 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, _0222004C ; =ov13_0224CF40 - mov r3, r1, lsl #0x10 - ldr r5, [ip, #8] - mov ip, r2, lsl #0x10 - add lr, r5, #0x500 - ldrh r4, [lr, #0x28] - mov r1, r0 - mov r2, r3, lsr #0x10 - cmp r4, #0 - ldrneh r0, [lr, #0x26] - mov r4, ip, lsr #0x10 - cmpne r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [lr, #0x24] - cmp r0, #1 - beq _0221FFC8 - cmp r0, #2 - beq _02220010 - b _02220044 -_0221FFC8: - ldrh r0, [lr, #0x2c] - cmp r0, #0 - moveq r0, #0x3e8 - movne r0, #0 - mov r3, r0, lsl #0x10 - str r4, [sp] - ldr r0, [r5, #0x508] - mov r3, r3, lsr #0x10 - bl MBi_SetMPData - cmp r0, #2 - bne _02220004 - ldr r1, _0222004C ; =ov13_0224CF40 - mov r2, #1 - ldr r1, [r1, #8] - strb r2, [r1, #0x50c] -_02220004: - cmp r0, #2 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02220010: - ldr r0, _02220050 ; =MBi_ChildCallback - mov r3, #0 - str r4, [sp] - bl MBi_SetMPData - cmp r0, #2 - bne _02220038 - ldr r1, _0222004C ; =ov13_0224CF40 - mov r2, #1 - ldr r1, [r1, #8] - strb r2, [r1, #0x50c] -_02220038: - cmp r0, #2 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02220044: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .balign 4, 0 -_0222004C: .word ov13_0224CF40 -_02220050: .word MBi_ChildCallback - arm_func_end MBi_SendMP - - arm_func_start MBi_GetGgid -MBi_GetGgid: ; 0x02220054 - ldr r0, _02220064 ; =ov13_0224CF40 - ldr r0, [r0, #8] - ldr r0, [r0, #8] - bx lr - .balign 4, 0 -_02220064: .word ov13_0224CF40 - arm_func_end MBi_GetGgid - - arm_func_start MBi_GetTgid -MBi_GetTgid: ; 0x02220068 - ldr r0, _02220078 ; =ov13_0224CF40 - ldr r0, [r0, #8] - ldrh r0, [r0, #0xc] - bx lr - .balign 4, 0 -_02220078: .word ov13_0224CF40 - arm_func_end MBi_GetTgid - - arm_func_start MBi_GetAttribute -MBi_GetAttribute: ; 0x0222007C - ldr r0, _022200D8 ; =ov13_0224CF40 - ldr r1, [r0, #8] - ldrh r0, [r1, #0x12] - cmp r0, #0 - ldrh r0, [r1, #0xe] - movne r2, #2 - moveq r2, #0 - cmp r0, #0 - movne r3, #1 - ldrh r0, [r1, #0x14] - moveq r3, #0 - cmp r0, #0 - movne ip, #4 - ldrh r0, [r1, #0x16] - moveq ip, #0 - cmp r0, #0 - movne r1, #8 - orr r0, r3, r2 - moveq r1, #0 - orr r0, ip, r0 - orr r0, r1, r0 - and r0, r0, #0xff - bx lr - .balign 4, 0 -_022200D8: .word ov13_0224CF40 - arm_func_end MBi_GetAttribute - - arm_func_start MBi_IsStarted -MBi_IsStarted: ; 0x022200DC - ldr r0, _022200F8 ; =ov13_0224CF40 - ldr r0, [r0, #8] - ldrb r0, [r0, #0x50d] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - bx lr - .balign 4, 0 -_022200F8: .word ov13_0224CF40 - arm_func_end MBi_IsStarted - - arm_func_start MBi_CheckWmErrcode -MBi_CheckWmErrcode: ; 0x022200FC - stmdb sp!, {r3, lr} - cmp r1, #2 - cmpne r1, #0 - ldmeqia sp!, {r3, pc} - ldr r2, _02220130 ; =ov13_0224CF40 - strh r0, [sp] - ldr r0, [r2, #8] - strh r1, [sp, #2] - ldr r2, [r0, #0x51c] - add r1, sp, #0 - mov r0, #0xff - blx r2 - ldmia sp!, {r3, pc} - .balign 4, 0 -_02220130: .word ov13_0224CF40 - arm_func_end MBi_CheckWmErrcode - - arm_func_start MBi_InitCache -MBi_InitCache: ; 0x02220134 - ldr ip, _02220144 ; =MI_CpuFill8 - mov r1, #0 - mov r2, #0x70 - bx ip - .balign 4, 0 -_02220144: .word MI_CpuFill8 - arm_func_end MBi_InitCache - - arm_func_start MBi_AttachCacheBuffer -MBi_AttachCacheBuffer: ; 0x02220148 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - bl OS_DisableInterrupts - add r6, r4, #0x30 - mov r5, r0 - add r4, r4, #0x70 -_0222016C: - cmp r6, r4 - blo _02220178 - bl OS_Terminate -_02220178: - ldr r0, [r6, #0xc] - cmp r0, #0 - bne _0222019C - str sb, [r6] - str r8, [r6, #4] - ldr r0, [sp, #0x20] - str r7, [r6, #8] - str r0, [r6, #0xc] - b _022201A4 -_0222019C: - add r6, r6, #0x10 - b _0222016C -_022201A4: - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end MBi_AttachCacheBuffer - - arm_func_start MBi_ReadFromCache -MBi_ReadFromCache: ; 0x022201B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - mov r4, #0 - bl OS_DisableInterrupts - add r2, sb, #0x30 - add r1, sb, #0x70 - mov r5, r0 - cmp r2, r1 - bhs _02220238 -_022201E0: - ldr r0, [r2, #0xc] - cmp r0, #2 - blo _0222022C - ldr r0, [r2] - subs r0, r8, r0 - bmi _0222022C - ldr r3, [r2, #4] - add ip, r0, r6 - cmp ip, r3 - bhi _0222022C - ldr r3, [r2, #8] - mov r1, r7 - mov r2, r6 - add r0, r3, r0 - bl MI_CpuCopy8 - mov r0, #0 - str r0, [sb] - mov r4, #1 - b _02220238 -_0222022C: - add r2, r2, #0x10 - cmp r2, r1 - blo _022201E0 -_02220238: - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end MBi_ReadFromCache - - arm_func_start MBi_TaskThread -MBi_TaskThread: ; 0x02220248 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 -_02220250: - bl OS_DisableInterrupts - ldr r1, [r7, #0xc0] - mov r5, r0 - cmp r1, #0 - bne _0222028C - mov r6, #0 - mov r4, r6 -_0222026C: - mov r0, r7 - mov r1, r6 - bl OS_SetThreadPriority - mov r0, r4 - bl OS_SleepThread - ldr r0, [r7, #0xc0] - cmp r0, #0 - beq _0222026C -_0222028C: - ldr r4, [r7, #0xc0] - ldr r1, [r7, #0xc0] - mov r0, r7 - ldr r1, [r1] - str r1, [r7, #0xc0] - ldr r1, [r4, #4] - mov r1, r1, lsr #1 - bl OS_SetThreadPriority - mov r0, r5 - bl OS_RestoreInterrupts - ldr r1, [r4, #8] - cmp r1, #0 - beq _022202C8 - mov r0, r4 - blx r1 -_022202C8: - bl OS_DisableInterrupts - mov r5, r0 - mov r0, r7 - ldr r6, [r4, #0xc] - bl OS_GetThreadPriority - ldr r1, [r7, #0xc0] - cmp r1, #0 - moveq r1, #0 - beq _0222030C - ldr r1, [r7, #0xc0] - ldr r1, [r1, #4] - cmp r0, r1, lsr #1 - movhs r1, r0 - bhs _0222030C - ldr r1, [r7, #0xc0] - ldr r1, [r1, #4] - mov r1, r1, lsr #1 -_0222030C: - cmp r1, r0 - beq _0222031C - mov r0, r7 - bl OS_SetThreadPriority -_0222031C: - mov r0, #0 - str r0, [r4] - ldr r0, [r4, #4] - cmp r6, #0 - bic r0, r0, #1 - str r0, [r4, #4] - beq _02220340 - mov r0, r4 - blx r6 -_02220340: - add r0, r7, #0xc4 - cmp r4, r0 - beq _02220358 - mov r0, r5 - bl OS_RestoreInterrupts - b _02220250 -_02220358: - bl OS_ExitThread - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end MBi_TaskThread - - arm_func_start MBi_InitTaskThread -MBi_InitTaskThread: ; 0x02220360 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r0 - mov r6, r1 - bl OS_DisableInterrupts - ldr r1, _022203D8 ; =ov13_0224CF80 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - bne _022203C8 - add r0, r5, #0xc4 - str r5, [r1] - bl MBi_InitTaskInfo - sub r0, r6, #0xe4 - mov lr, #0 - bic ip, r0, #3 - add r3, r5, #0xe4 - str lr, [r5, #0xc0] - ldr r1, _022203DC ; =MBi_TaskThread - mov r0, r5 - mov r2, r5 - add r3, r3, ip - stmia sp, {ip, lr} - bl OS_CreateThread - mov r0, r5 - bl OS_WakeupThreadDirect -_022203C8: - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_022203D8: .word ov13_0224CF80 -_022203DC: .word MBi_TaskThread - arm_func_end MBi_InitTaskThread - - arm_func_start MBi_IsTaskAvailable -MBi_IsTaskAvailable: ; 0x022203E0 - ldr r0, _022203F8 ; =ov13_0224CF80 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - .balign 4, 0 -_022203F8: .word ov13_0224CF80 - arm_func_end MBi_IsTaskAvailable - - arm_func_start MBi_InitTaskInfo -MBi_InitTaskInfo: ; 0x022203FC - ldr ip, _0222040C ; =MI_CpuFill8 - mov r1, #0 - mov r2, #0x20 - bx ip - .balign 4, 0 -_0222040C: .word MI_CpuFill8 - arm_func_end MBi_InitTaskInfo - - arm_func_start MBi_IsTaskBusy -MBi_IsTaskBusy: ; 0x02220410 - ldr r0, [r0, #4] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end MBi_IsTaskBusy - - arm_func_start MBi_SetTask -MBi_SetTask: ; 0x02220428 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _02220588 ; =ov13_0224CF80 - mov sb, r0 - ldr r4, [r4] - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl MBi_IsTaskAvailable - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [sb, #4] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0x1f - bls _022204AC - mov r0, r4 - bl OS_GetThreadPriority - cmp r6, #0x20 - bne _02220488 - cmp r0, #0 - subne r6, r0, #1 - moveq r6, #0 - b _022204AC -_02220488: - cmp r6, #0x21 - bne _022204A0 - cmp r0, #0x1f - addlo r6, r0, #1 - movhs r6, #0x1f - b _022204AC -_022204A0: - cmp r6, #0x22 - moveq r6, r0 - movne r6, #0x1f -_022204AC: - bl OS_DisableInterrupts - ldr r1, [sb, #4] - mov r5, r0 - bic r0, r1, #1 - orr r1, r0, #1 - and r0, r1, #1 - str r1, [sb, #4] - orr r0, r0, r6, lsl #1 - stmib sb, {r0, r8} - str r7, [sb, #0xc] - ldr r0, [r4, #0xc0] - cmp r0, #0 - add r0, r4, #0xc4 - bne _02220504 - cmp sb, r0 - ldreq r0, _02220588 ; =ov13_0224CF80 - moveq r1, #0 - streq r1, [r0] - mov r0, r4 - str sb, [r4, #0xc0] - bl OS_WakeupThreadDirect - b _0222057C -_02220504: - cmp sb, r0 - ldr r1, [r4, #0xc0] - bne _02220540 - ldr r0, [r1] - cmp r0, #0 - beq _0222052C -_0222051C: - mov r1, r0 - ldr r0, [r0] - cmp r0, #0 - bne _0222051C -_0222052C: - ldr r0, _02220588 ; =ov13_0224CF80 - str sb, [r1] - mov r1, #0 - str r1, [r0] - b _0222057C -_02220540: - ldr r0, [r1, #4] - cmp r6, r0, lsr #1 - strlo sb, [r4, #0xc0] - strlo r1, [sb] - blo _0222057C - b _0222055C -_02220558: - mov r1, r2 -_0222055C: - ldr r2, [r1] - cmp r2, #0 - beq _02220574 - ldr r0, [r2, #4] - cmp r6, r0, lsr #1 - bhs _02220558 -_02220574: - str r2, [sb] - str sb, [r1] -_0222057C: - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .balign 4, 0 -_02220588: .word ov13_0224CF80 - arm_func_end MBi_SetTask - - arm_func_start MBi_EndTaskThread -MBi_EndTaskThread: ; 0x0222058C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - bl MBi_IsTaskAvailable - cmp r0, #0 - beq _022205C4 - ldr r0, _022205D0 ; =ov13_0224CF80 - mov r1, #0 - ldr r0, [r0] - mov r2, r5 - mov r3, r1 - add r0, r0, #0xc4 - bl MBi_SetTask -_022205C4: - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - .balign 4, 0 -_022205D0: .word ov13_0224CF80 - arm_func_end MBi_EndTaskThread - - arm_func_start MBi_SetChildMPMaxSize -MBi_SetChildMPMaxSize: ; 0x022205D4 - stmdb sp!, {r3, lr} - ldr r2, _02220600 ; =ov13_0224CF84 - sub r1, r0, #2 - mov r0, #0x1e - str r1, [r2, #8] - bl _s32_div_f - ldr r1, _02220600 ; =ov13_0224CF84 - mov r2, #0x1e - str r0, [r1, #0xc] - str r2, [r1, #0x10] - ldmia sp!, {r3, pc} - .balign 4, 0 -_02220600: .word ov13_0224CF84 - arm_func_end MBi_SetChildMPMaxSize - - arm_func_start MBi_SetParentPieceBuffer -MBi_SetParentPieceBuffer: ; 0x02220604 - ldr r3, _0222061C ; =ov13_0224CF84 - ldr ip, _02220620 ; =MI_CpuFill8 - mov r1, #0 - mov r2, #0x21c - str r0, [r3, #4] - bx ip - .balign 4, 0 -_0222061C: .word ov13_0224CF84 -_02220620: .word MI_CpuFill8 - arm_func_end MBi_SetParentPieceBuffer - - arm_func_start MBi_ClearParentPieceBuffer -MBi_ClearParentPieceBuffer: ; 0x02220624 - stmdb sp!, {r4, lr} - ldr r1, _02220664 ; =ov13_0224CF84 - ldr r1, [r1, #4] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - sub r4, r0, #1 - add r0, r1, r4, lsl #5 - mov r1, #0 - mov r2, #0x1e - bl MI_CpuFill8 - ldr r0, _02220664 ; =ov13_0224CF84 - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, r4, lsl #2 - str r1, [r0, #0x1e0] - ldmia sp!, {r4, pc} - .balign 4, 0 -_02220664: .word ov13_0224CF84 - arm_func_end MBi_ClearParentPieceBuffer - - arm_func_start MBi_MakeParentSendBuffer -MBi_MakeParentSendBuffer: ; 0x02220668 - ldrb r2, [r0] - mov r3, r1 - add r3, r3, #1 - strb r2, [r1] - ldrb r1, [r0] - cmp r1, #6 - addls pc, pc, r1, lsl #2 - b _022206DC -_02220688: ; jump table - b _022206DC ; case 0 - b _022206E4 ; case 1 - b _022206E4 ; case 2 - b _022206E4 ; case 3 - b _022206A4 ; case 4 - b _022206E4 ; case 5 - b _022206E4 ; case 6 -_022206A4: - ldrh r1, [r0, #2] - strb r1, [r3] - ldrh r1, [r0, #2] - and r1, r1, #0xff00 - mov r1, r1, asr #8 - strb r1, [r3, #1] - ldrh r1, [r0, #4] - strb r1, [r3, #2] - ldrh r0, [r0, #4] - and r0, r0, #0xff00 - mov r0, r0, asr #8 - strb r0, [r3, #3] - add r3, r3, #4 - b _022206E4 -_022206DC: - mov r0, #0 - bx lr -_022206E4: - mov r0, r3 - bx lr - arm_func_end MBi_MakeParentSendBuffer - - arm_func_start MBi_SetRecvBufferFromChild -MBi_SetRecvBufferFromChild: ; 0x022206EC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrb r0, [r6] - mov r5, r1 - mov r4, r2 - strb r0, [r5] - cmp r0, #7 - beq _02220720 - cmp r0, #8 - beq _02220784 - cmp r0, #9 - beq _022207AC - b _022207F4 -_02220720: - mov r0, r4 - bl IsGetAllRequestData - cmp r0, #0 - beq _02220744 - ldr r0, _02220804 ; =ov13_0224CF84 - sub r1, r4, #1 - ldr r0, [r0, #4] - add r0, r0, r1, lsl #5 - ldmia sp!, {r4, r5, r6, pc} -_02220744: - ldrb r2, [r6, #1] - ldr r0, _02220804 ; =ov13_0224CF84 - strb r2, [r5, #2] - ldr r1, [r0, #0xc] - cmp r2, r1 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, pc} - ldr r2, [r0, #8] - add r0, r6, #2 - add r1, r5, #3 - bl MI_CpuCopy8 - mov r0, r5 - mov r1, r4 - bl MBi_ReceiveRequestDataPiece - mov r4, r0 - b _022207FC -_02220784: - ldrb r0, [r6, #1] - add r4, r6, #3 - strh r0, [r5, #2] - ldrb r0, [r6, #2] - ldrh r1, [r5, #2] - mov r0, r0, lsl #8 - and r0, r0, #0xff00 - orr r0, r1, r0 - strh r0, [r5, #2] - b _022207FC -_022207AC: - ldrb r0, [r6, #1] - add r4, r6, #3 - ldr r1, _02220804 ; =ov13_0224CF84 - strh r0, [r5, #2] - ldrb r2, [r6, #2] - ldrh r3, [r5, #2] - mov r0, r4 - mov r2, r2, lsl #8 - and r2, r2, #0xff00 - orr r2, r3, r2 - strh r2, [r5, #2] - ldr r2, [r1, #8] - add r1, r5, #4 - bl MI_CpuCopy8 - ldr r0, _02220804 ; =ov13_0224CF84 - ldr r0, [r0, #8] - add r4, r4, r0 - b _022207FC -_022207F4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_022207FC: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_02220804: .word ov13_0224CF84 - arm_func_end MBi_SetRecvBufferFromChild - - arm_func_start MBi_ReceiveRequestDataPiece -MBi_ReceiveRequestDataPiece: ; 0x02220808 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02220890 ; =ov13_0224CF84 - mov r6, r1 - ldr r3, [r2, #4] - cmp r3, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r5, [r0, #2] - ldr r1, [r2, #0xc] - cmp r5, r1 - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, pc} - sub r4, r6, #1 - ldr r2, [r2, #8] - add r1, r3, r4, lsl #5 - mla r1, r5, r2, r1 - add r0, r0, #3 - bl MI_CpuCopy8 - ldr r0, _02220890 ; =ov13_0224CF84 - mov r1, #1 - ldr r2, [r0, #4] - mov r0, r6 - add r3, r2, #0x1e0 - ldr r2, [r3, r4, lsl #2] - orr r1, r2, r1, lsl r5 - str r1, [r3, r4, lsl #2] - bl IsGetAllRequestData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, _02220890 ; =ov13_0224CF84 - ldr r0, [r0, #4] - add r0, r0, r4, lsl #5 - ldmia sp!, {r4, r5, r6, pc} - .balign 4, 0 -_02220890: .word ov13_0224CF84 - arm_func_end MBi_ReceiveRequestDataPiece - - arm_func_start IsGetAllRequestData -IsGetAllRequestData: ; 0x02220894 - ldr r1, _022208E4 ; =ov13_0224CF84 - mov r2, #0 - ldr ip, [r1, #0xc] - cmp ip, #0 - ble _022208DC - ldr r1, [r1, #4] - sub r0, r0, #1 - add r0, r1, r0, lsl #2 - ldr r3, [r0, #0x1e0] - mov r1, #1 -_022208BC: - tst r3, r1, lsl r2 - moveq r0, #0 - bxeq lr - add r0, r2, #1 - mov r0, r0, lsl #0x10 - cmp ip, r0, lsr #16 - mov r2, r0, lsr #0x10 - bgt _022208BC -_022208DC: - mov r0, #1 - bx lr - .balign 4, 0 -_022208E4: .word ov13_0224CF84 - arm_func_end IsGetAllRequestData - - .rodata - -MBi_defaultLoadSegList: - .word 2 - .word 0 - .word 1 - -mbi_seg_header_default: - .word 0x00004000, 0x00001000 - .word 0x00007000, 0x00001000 - .word 0x00000000, 0x00000000 - - .data - -_02245980: - .byte 0xFF, 0x00, 0x00, 0x00 - -mbi_seg_header: ; 0x02245984 - .word mbi_seg_header_default - -ov13_02245988: ; 0x02245988 - .asciz "rom" - .balign 4, 0 - -ov13_0224598C: ; 0x0224598C - .byte 0x05, 0x00, 0x28, 0x00 - .byte 0x28, 0x00, 0xFF, 0xFF - .word ov13_0224599C - .byte 0x01, 0x00, 0x00, 0x00 - -ov13_0224599C: - .byte 0x6D, 0x00, 0x75, 0x00 - .byte 0x6C, 0x00, 0x74, 0x00, 0x69, 0x00, 0x62, 0x00, 0x6F, 0x00, 0x6F, 0x00, 0x74, 0x00, 0x00, 0x00 - - .bss - -_02247480: - .space 0x4 - -ov13_02247484: ; 0x02247484 - .space 0x1C - -ov13_022474A0: ; 0x022474A0 - .space 0x40 - -bsendBuff: ; 0x022474E0 - .space 0x5A60 - -ov13_0224CF40: ; 0x0224CF40 - .space 0xC - -mbc: ; 0x0224CF4C - .space 0x14 - -ov13_0224CF60: ; 0x0224CF60 - .space 0x20 - -ov13_0224CF80: ; 0x0224CF80 - .space 0x4 - -ov13_0224CF84: ; 0x0224CF84 - .space 0x14 diff --git a/lib/NitroSDK/asm/mi_compress.s b/lib/NitroSDK/asm/mi_compress.s deleted file mode 100644 index 088300b4..00000000 --- a/lib/NitroSDK/asm/mi_compress.s +++ /dev/null @@ -1,212 +0,0 @@ - .include "asm/macros.inc" - .include "mi_compress.inc" - .include "global.inc" - - .text - - arm_func_start MI_CompressLZImpl -MI_CompressLZImpl: ; 0x020D4D5C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r0 - movs r0, r3 - ldrne r0, _020D4F30 ; =0x00010110 - str r3, [sp, #4] - strne r0, [sp, #8] - moveq r0, #0x12 - streq r0, [sp, #8] - ldr r0, [sp, #4] - mov sb, r1 - cmp r0, #0 - movne r1, #1 - mov r0, sb, lsl #8 - moveq r1, #0 - orr r0, r0, #0x10 - mov r8, r2 - orr r0, r0, r1 - str sl, [sp, #0x10] - mov r7, sb - cmp sb, #0 - str r0, [r8], #4 - mov r4, #4 - beq _020D4EFC -_020D4DBC: - ldr r0, _020D4F34 ; =0x00000111 - mov r5, #0 - str r8, [sp, #0xc] - mov r6, r5 - add r8, r8, #1 - add r4, r4, #1 - rsb fp, r0, #0 -_020D4DD8: - cmp sb, #0 - mov r0, r5, lsl #1 - and r5, r0, #0xff - beq _020D4EDC - ldr r0, [sp, #8] - mov r1, sl - str r0, [sp] - ldr r0, [sp, #0x10] - mov r2, sb - add r3, sp, #0x14 - bl SearchLZ - cmp r0, #0 - beq _020D4EBC - orr r1, r5, #1 - add r2, r4, #2 - cmp r2, r7 - and r5, r1, #0xff - addhs sp, sp, #0x18 - movhs r0, #0 - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #4] - cmp r1, #0 - beq _020D4E84 - ldr r1, _020D4F34 ; =0x00000111 - cmp r0, r1 - blo _020D4E64 - mov r4, r2 - add r1, r0, fp - mov r2, r1, lsr #0xc - orr r2, r2, #0x10 - strb r2, [r8] - mov r2, r1, lsr #4 - strb r2, [r8, #1] - add r8, r8, #2 - b _020D4E88 -_020D4E64: - cmp r0, #0x11 - sublo r1, r0, #1 - blo _020D4E88 - sub r1, r0, #0x11 - mov r2, r1, lsr #4 - strb r2, [r8], #1 - add r4, r4, #1 - b _020D4E88 -_020D4E84: - sub r1, r0, #3 -_020D4E88: - ldrh r2, [sp, #0x14] - add r4, r4, #2 - add sl, sl, r0 - sub r2, r2, #1 - mov r2, r2, asr #8 - orr r1, r2, r1, lsl #4 - strb r1, [r8] - sub sb, sb, r0 - ldrh r0, [sp, #0x14] - sub r0, r0, #1 - strb r0, [r8, #1] - add r8, r8, #2 - b _020D4EDC -_020D4EBC: - add r4, r4, #1 - cmp r4, r7 - addhs sp, sp, #0x18 - movhs r0, #0 - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sl], #1 - sub sb, sb, #1 - strb r0, [r8], #1 -_020D4EDC: - add r0, r6, #1 - and r6, r0, #0xff - cmp r6, #8 - blo _020D4DD8 - ldr r0, [sp, #0xc] - cmp sb, #0 - strb r5, [r0] - bne _020D4DBC -_020D4EFC: - tst r4, #3 - mov r2, #0 - beq _020D4F24 - mov r1, r2 -_020D4F0C: - add r0, r2, #1 - and r2, r0, #0xff - add r0, r4, r2 - tst r0, #3 - strb r1, [r8], #1 - bne _020D4F0C -_020D4F24: - mov r0, r4 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020D4F30: .word 0x00010110 -_020D4F34: .word 0x00000111 - arm_func_end MI_CompressLZImpl - - arm_func_start SearchLZ -SearchLZ: ; 0x020D4F38 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r7, [sp, #0x20] - mov r4, #2 - cmp r2, #3 - movlo r0, #0 - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - sub ip, r1, #0x1000 - cmp ip, r0 - movlo ip, r0 - sub r6, r1, ip - cmp r6, #2 - blt _020D5018 -_020D4F68: - mov r0, r1 - ldrb r5, [r1] - b _020D4F84 -_020D4F74: - add ip, ip, #1 - sub r6, r1, ip - cmp r6, #2 - blt _020D5018 -_020D4F84: - ldrb r8, [ip] - cmp r5, r8 - ldreqb sb, [r1, #1] - ldreqb r8, [ip, #1] - cmpeq sb, r8 - ldreqb sb, [r1, #2] - ldreqb r8, [ip, #2] - cmpeq sb, r8 - bne _020D4F74 - add sl, ip, #3 - add r0, r0, #3 - mov r5, #3 - b _020D4FCC -_020D4FB8: - add r5, r5, #1 - cmp r5, r7 - add r0, r0, #1 - add sl, sl, #1 - beq _020D4FE8 -_020D4FCC: - sub r8, r0, r1 - cmp r8, r2 - bhs _020D4FE8 - ldrb sb, [r0] - ldrb r8, [sl] - cmp sb, r8 - beq _020D4FB8 -_020D4FE8: - cmp r5, r4 - bls _020D5008 - mov r0, r6, lsl #0x10 - cmp r5, r7 - mov r4, r5 - mov lr, r0, lsr #0x10 - cmpne r5, r2 - beq _020D5018 -_020D5008: - add ip, ip, #1 - sub r6, r1, ip - cmp r6, #2 - bge _020D4F68 -_020D5018: - cmp r4, #3 - movlo r0, #0 - movhs r0, r4 - strhsh lr, [r3] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end SearchLZ diff --git a/lib/NitroSDK/asm/mi_dma.s b/lib/NitroSDK/asm/mi_dma.s deleted file mode 100644 index f939b1d5..00000000 --- a/lib/NitroSDK/asm/mi_dma.s +++ /dev/null @@ -1,449 +0,0 @@ - .include "asm/macros.inc" - .include "mi_dma.inc" - .include "global.inc" - - .public OSi_EnterDmaCallback - - .section .itcm,4,1,4 - - arm_func_start MIi_DmaSetParams -MIi_DmaSetParams: ; 0x01FF8448 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl OS_DisableInterrupts - mov r1, #0xc - mul r2, r7, r1 - add r1, r2, #0xb0 - add r2, r2, #0x4000000 - str r6, [r2, #0xb0] - add r1, r1, #0x4000000 - str r5, [r1, #4] - str r4, [r1, #8] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end MIi_DmaSetParams - - arm_func_start MIi_DmaSetParams_wait -MIi_DmaSetParams_wait: ; 0x01FF8488 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl OS_DisableInterrupts - mov r1, #0xc - mul r2, r7, r1 - add r1, r2, #0xb0 - add r2, r2, #0x4000000 - str r6, [r2, #0xb0] - add r3, r1, #0x4000000 - str r5, [r3, #4] - ldr r2, _01FF84F0 ; =0x040000B0 - str r4, [r3, #8] - ldr r1, [r2] - cmp r7, #0 - ldr r1, [r2] - bne _01FF84E8 - mov r2, #0 - str r2, [r3] - ldr r1, _01FF84F4 ; =0x81400001 - str r2, [r3, #4] - str r1, [r3, #8] -_01FF84E8: - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_01FF84F0: .word 0x040000B0 -_01FF84F4: .word 0x81400001 - arm_func_end MIi_DmaSetParams_wait - - arm_func_start MIi_DmaSetParams_noInt -MIi_DmaSetParams_noInt: ; 0x01FF84F8 - mov ip, #0xc - mul ip, r0, ip - add r0, ip, #0xb0 - add ip, ip, #0x4000000 - str r1, [ip, #0xb0] - add r0, r0, #0x4000000 - str r2, [r0, #4] - str r3, [r0, #8] - bx lr - arm_func_end MIi_DmaSetParams_noInt - - arm_func_start MIi_DmaSetParams_wait_noInt -MIi_DmaSetParams_wait_noInt: ; 0x01FF851C - stmdb sp!, {r3, lr} - mov ip, #0xc - mul lr, r0, ip - add ip, lr, #0xb0 - add lr, lr, #0x4000000 - str r1, [lr, #0xb0] - add ip, ip, #0x4000000 - str r2, [ip, #4] - ldr r2, _01FF8578 ; =0x040000B0 - str r3, [ip, #8] - ldr r1, [r2] - cmp r0, #0 - ldr r0, [r2] - bne _01FF8568 - mov r1, #0 - str r1, [ip] - ldr r0, _01FF857C ; =0x81400001 - str r1, [ip, #4] - str r0, [ip, #8] -_01FF8568: - ldr r1, _01FF8578 ; =0x040000B0 - ldr r0, [r1] - ldr r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_01FF8578: .word 0x040000B0 -_01FF857C: .word 0x81400001 - arm_func_end MIi_DmaSetParams_wait_noInt - - .text - - arm_func_start MI_DmaFill32 -MI_DmaFill32: ; 0x020D3F74 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r4, r3 - mov r8, r0 - mov r7, r1 - mov r6, r2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r8, r8, lsl #1 - add r0, r0, #2 - mov r0, r0, lsl #2 - add r0, r0, #0xb0 - add r5, r0, #0x4000000 -_020D3FA0: - ldr r0, [r5] - tst r0, #0x80000000 - bne _020D3FA0 - bl OS_DisableInterrupts - mov r2, r8, lsl #2 - add r1, r2, #0xe0 - mov r3, r4, lsr #2 - mov r4, r0 - add ip, r2, #0x4000000 - mov r0, r8 - mov r2, r7 - add r1, r1, #0x4000000 - orr r3, r3, #0x85000000 - str r6, [ip, #0xe0] - bl MIi_DmaSetParams_wait_noInt - mov r0, r4 - bl OS_RestoreInterrupts -_020D3FE4: - ldr r0, [r5] - tst r0, #0x80000000 - bne _020D3FE4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MI_DmaFill32 - - arm_func_start MI_DmaCopy32 -MI_DmaCopy32: ; 0x020D3FF4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r3 - mov r6, r2 - mov r2, r5 - mov r3, #0 - mov r8, r0 - mov r7, r1 - bl MIi_CheckDma0SourceAddress - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r8, r8, lsl #1 - add r0, r0, #2 - mov r0, r0, lsl #2 - add r0, r0, #0xb0 - add r4, r0, #0x4000000 -_020D4030: - ldr r0, [r4] - tst r0, #0x80000000 - bne _020D4030 - mov r3, r5, lsr #2 - mov r0, r8 - mov r1, r7 - mov r2, r6 - orr r3, r3, #0x84000000 - bl MIi_DmaSetParams_wait -_020D4054: - ldr r0, [r4] - tst r0, #0x80000000 - bne _020D4054 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MI_DmaCopy32 - - arm_func_start MI_DmaCopy16 -MI_DmaCopy16: ; 0x020D4064 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r5, r3 - mov r8, r0 - mov r7, r1 - mov r6, r2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r2, r5 - mov r3, #0 - bl MIi_CheckDma0SourceAddress - add r0, r8, r8, lsl #1 - add r0, r0, #2 - mov r0, r0, lsl #2 - add r0, r0, #0xb0 - add r4, r0, #0x4000000 -_020D409C: - ldr r0, [r4] - tst r0, #0x80000000 - bne _020D409C - mov r3, r5, lsr #1 - mov r0, r8 - mov r1, r7 - mov r2, r6 - orr r3, r3, #0x80000000 - bl MIi_DmaSetParams_wait -_020D40C0: - ldr r0, [r4] - tst r0, #0x80000000 - bne _020D40C0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MI_DmaCopy16 - - arm_func_start MI_DmaFill32Async -MI_DmaFill32Async: ; 0x020D40D0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r4, r3 - mov r7, r0 - mov r6, r1 - mov r5, r2 - ldr r8, [sp, #0x18] - bne _020D4100 - cmp r8, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [sp, #0x1c] - blx r8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D4100: - bl MI_WaitDma - cmp r8, #0 - beq _020D4158 - ldr r2, [sp, #0x1c] - mov r0, r7 - mov r1, r8 - bl OSi_EnterDmaCallback - bl OS_DisableInterrupts - mov r3, r4, lsr #2 - mov r2, r7, lsl #2 - add r1, r2, #0xe0 - add r2, r2, #0x4000000 - str r5, [r2, #0xe0] - mov r4, r0 - mov r0, r7 - mov r2, r6 - add r1, r1, #0x4000000 - orr r3, r3, #0xc5000000 - bl MIi_DmaSetParams_noInt - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D4158: - bl OS_DisableInterrupts - mov r2, r7, lsl #2 - add r1, r2, #0xe0 - mov r3, r4, lsr #2 - mov r4, r0 - add ip, r2, #0x4000000 - mov r0, r7 - mov r2, r6 - add r1, r1, #0x4000000 - orr r3, r3, #0x85000000 - str r5, [ip, #0xe0] - bl MIi_DmaSetParams_noInt - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MI_DmaFill32Async - - arm_func_start MI_DmaCopy32Async -MI_DmaCopy32Async: ; 0x020D4194 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r3 - mov r6, r2 - mov r2, r5 - mov r3, #0 - mov r8, r0 - mov r7, r1 - ldr r4, [sp, #0x18] - bl MIi_CheckDma0SourceAddress - cmp r5, #0 - bne _020D41D4 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [sp, #0x1c] - blx r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D41D4: - mov r0, r8 - bl MI_WaitDma - cmp r4, #0 - beq _020D4210 - ldr r2, [sp, #0x1c] - mov r0, r8 - mov r1, r4 - bl OSi_EnterDmaCallback - mov r3, r5, lsr #2 - mov r0, r8 - mov r1, r7 - mov r2, r6 - orr r3, r3, #0xc4000000 - bl MIi_DmaSetParams - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D4210: - mov r3, r5, lsr #2 - mov r0, r8 - mov r1, r7 - mov r2, r6 - orr r3, r3, #0x84000000 - bl MIi_DmaSetParams - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end MI_DmaCopy32Async - - arm_func_start MI_WaitDma -MI_WaitDma: ; 0x020D422C - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - add r1, r4, r4, lsl #1 - add r1, r1, #2 - mov r1, r1, lsl #2 - add r1, r1, #0xb0 - add r2, r1, #0x4000000 -_020D424C: - ldr r1, [r2] - tst r1, #0x80000000 - bne _020D424C - cmp r4, #0 - bne _020D4288 - mov r1, #0xc - mul r2, r4, r1 - add r1, r2, #0xb0 - add r2, r2, #0x4000000 - mov r3, #0 - str r3, [r2, #0xb0] - add r2, r1, #0x4000000 - ldr r1, _020D4290 ; =0x81400001 - str r3, [r2, #4] - str r1, [r2, #8] -_020D4288: - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020D4290: .word 0x81400001 - arm_func_end MI_WaitDma - - arm_func_start MI_StopDma -MI_StopDma: ; 0x020D4294 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - mov r1, #6 - mul r1, r4, r1 - add r1, r1, #5 - mov r1, r1, lsl #1 - add r1, r1, #0x4000000 - ldrh r2, [r1, #0xb0] - cmp r4, #0 - bic r2, r2, #0x3a00 - strh r2, [r1, #0xb0] - ldrh r2, [r1, #0xb0] - bic r2, r2, #0x8000 - strh r2, [r1, #0xb0] - ldrh r2, [r1, #0xb0] - ldrh r1, [r1, #0xb0] - bne _020D4304 - mov r1, #0xc - mul r2, r4, r1 - add r1, r2, #0xb0 - add r2, r2, #0x4000000 - mov r3, #0 - str r3, [r2, #0xb0] - add r2, r1, #0x4000000 - ldr r1, _020D430C ; =0x81400001 - str r3, [r2, #4] - str r1, [r2, #8] -_020D4304: - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020D430C: .word 0x81400001 - arm_func_end MI_StopDma - - arm_func_start MIi_CheckAnotherAutoDMA -MIi_CheckAnotherAutoDMA: ; 0x020D4310 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, _020D4390 ; =0x040000B8 - mov r7, r0 - mov r6, r1 - mov r4, #0 -_020D4324: - cmp r4, r7 - beq _020D437C - ldr r0, [r5] - tst r0, #0x80000000 - andne r0, r0, #0x38000000 - cmpne r0, r6 - beq _020D437C - cmp r0, #0x8000000 - cmpeq r6, #0x10000000 - beq _020D437C - cmp r0, #0x10000000 - cmpeq r6, #0x8000000 - beq _020D437C - cmp r0, #0x18000000 - cmpne r0, #0x20000000 - cmpne r0, #0x28000000 - cmpne r0, #0x30000000 - cmpne r0, #0x38000000 - cmpne r0, #0x8000000 - cmpne r0, #0x10000000 - bne _020D437C - bl OS_Terminate -_020D437C: - add r4, r4, #1 - cmp r4, #3 - add r5, r5, #0xc - blt _020D4324 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D4390: .word 0x040000B8 - arm_func_end MIi_CheckAnotherAutoDMA - - arm_func_start MIi_CheckDma0SourceAddress -MIi_CheckDma0SourceAddress: ; 0x020D4394 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldmneia sp!, {r3, pc} - cmp r3, #0 - and ip, r1, #0xff000000 - beq _020D43B8 - cmp r3, #0x800000 - subeq r1, r1, r2 - b _020D43BC -_020D43B8: - add r1, r1, r2 -_020D43BC: - cmp ip, #0x4000000 - and r0, r1, #0xff000000 - beq _020D43E0 - cmp ip, #0x8000000 - bhs _020D43E0 - cmp r0, #0x4000000 - beq _020D43E0 - cmp r0, #0x8000000 - ldmloia sp!, {r3, pc} -_020D43E0: - bl OS_Terminate - ldmia sp!, {r3, pc} - arm_func_end MIi_CheckDma0SourceAddress diff --git a/lib/NitroSDK/asm/mi_dma_card.s b/lib/NitroSDK/asm/mi_dma_card.s deleted file mode 100644 index 9e6fe433..00000000 --- a/lib/NitroSDK/asm/mi_dma_card.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "asm/macros.inc" - .include "mi_dma_card.inc" - .include "global.inc" - - .public MIi_CheckAnotherAutoDMA - .public MIi_CheckDma0SourceAddress - .public MIi_DmaSetParams - - .text - - arm_func_start MIi_CardDmaCopy32 -MIi_CardDmaCopy32: ; 0x020D4CE8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r1 - mov r6, r0 - mov r7, r3 - mvn r1, #0 - mov r4, r2 - bl MIi_CheckAnotherAutoDMA - mov r0, r6 - mov r1, r5 - mov r2, r7 - mov r3, #0x1000000 - bl MIi_CheckDma0SourceAddress - cmp r7, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, r6, r6, lsl #1 - add r0, r0, #2 - mov r0, r0, lsl #2 - add r0, r0, #0xb0 - add r1, r0, #0x4000000 -_020D4D34: - ldr r0, [r1] - tst r0, #0x80000000 - bne _020D4D34 - ldr r3, _020D4D58 ; =0xAF000001 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MIi_DmaSetParams - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D4D58: .word 0xAF000001 - arm_func_end MIi_CardDmaCopy32 diff --git a/lib/NitroSDK/asm/mi_dma_gxcommand.s b/lib/NitroSDK/asm/mi_dma_gxcommand.s deleted file mode 100644 index f04051eb..00000000 --- a/lib/NitroSDK/asm/mi_dma_gxcommand.s +++ /dev/null @@ -1,279 +0,0 @@ - .include "asm/macros.inc" - .include "mi_dma_gxcommand.inc" - .include "global.inc" - - .public MIi_CheckAnotherAutoDMA - .public MIi_CheckDma0SourceAddress - .public MIi_DmaSetParams - .public OSi_EnterDmaCallback - - .bss - -MIiGXDmaParam: ; 0x021E1A20 - .space 0x20 - - .section .itcm,4,1,4 - - arm_func_start MI_SendGXCommand -MI_SendGXCommand: ; 0x01FF8580 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs r8, r2 - mov sl, r0 - mov sb, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r3, #0 - bl MIi_CheckDma0SourceAddress - add r0, sl, sl, lsl #1 - add r0, r0, #2 - mov r0, r0, lsl #2 - add r0, r0, #0xb0 - add r6, r0, #0x4000000 -_01FF85B0: - ldr r0, [r6] - tst r0, #-0x80000000 - bne _01FF85B0 - cmp r8, #0 - beq _01FF85FC - ldr fp, _01FF860C ; =0x04000400 - ldr r4, _01FF8610 ; =0x84400000 - mov r5, #0x1d8 -_01FF85D0: - cmp r8, #0x1d8 - movhi r7, r5 - movls r7, r8 - mov r0, sl - mov r1, sb - mov r2, fp - orr r3, r4, r7, lsr #2 - bl MIi_DmaSetParams - subs r8, r8, r7 - add sb, sb, r7 - bne _01FF85D0 -_01FF85FC: - ldr r0, [r6] - tst r0, #-0x80000000 - bne _01FF85FC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_01FF860C: .word 0x04000400 -_01FF8610: .word 0x84400000 - arm_func_end MI_SendGXCommand - - .text - - arm_func_start MI_SendGXCommandAsync -MI_SendGXCommandAsync: ; 0x020D44A8 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r2, #0 - bne _020D44CC - cmp r3, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [sp, #8] - blx r3 - ldmia sp!, {r4, pc} -_020D44CC: - ldr r0, _020D4594 ; =MIiGXDmaParam -_020D44D0: - ldr ip, [r0] - cmp ip, #0 - bne _020D44D0 - ldr ip, _020D4598 ; =0x04000600 -_020D44E0: - ldr r0, [ip] - and r0, r0, #0x7000000 - mov r0, r0, lsr #0x18 - tst r0, #2 - beq _020D44E0 - ldr ip, _020D4594 ; =MIiGXDmaParam - mov r0, #1 - str r0, [ip] - str r4, [ip, #4] - str r1, [ip, #8] - str r2, [ip, #0xc] - str r3, [ip, #0x10] - ldr lr, [sp, #8] - mov r0, r4 - mov r3, #0 - str lr, [ip, #0x14] - bl MIi_CheckDma0SourceAddress - mov r0, r4 - bl MI_WaitDma - bl OS_DisableInterrupts - ldr r1, _020D4598 ; =0x04000600 - mov r4, r0 - ldr r0, [r1] - ldr r1, _020D4594 ; =MIiGXDmaParam - and r0, r0, #0xc0000000 - mov r2, r0, lsr #0x1e - mov r0, #0x200000 - str r2, [r1, #0x18] - bl OS_GetIrqFunction - ldr r1, _020D4594 ; =MIiGXDmaParam - ldr r2, _020D4598 ; =0x04000600 - str r0, [r1, #0x1c] - ldr r0, [r2] - ldr r1, _020D459C ; =MIi_FIFOCallback - bic r0, r0, #0xc0000000 - orr r3, r0, #0x40000000 - mov r0, #0x200000 - str r3, [r2] - bl OS_SetIrqFunction - mov r0, #0x200000 - bl OS_EnableIrqMask - bl MIi_FIFOCallback - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020D4594: .word MIiGXDmaParam -_020D4598: .word 0x04000600 -_020D459C: .word MIi_FIFOCallback - arm_func_end MI_SendGXCommandAsync - - arm_func_start MIi_FIFOCallback -MIi_FIFOCallback: ; 0x020D45A0 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020D463C ; =MIiGXDmaParam - ldr r5, [r0, #0xc] - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _020D463C ; =MIiGXDmaParam - cmp r5, #0x1d8 - ldr r1, [r0, #0xc] - movhs r5, #0x1d8 - ldr r4, [r0, #8] - subs r1, r1, r5 - str r1, [r0, #0xc] - add r1, r4, r5 - str r1, [r0, #8] - bne _020D4618 - ldr r0, [r0, #4] - ldr r1, _020D4640 ; =MIi_DMACallback - mov r2, #0 - bl OSi_EnterDmaCallback - ldr r0, _020D463C ; =MIiGXDmaParam - mov r3, #0x3bc00000 - rsb r3, r3, #0 - ldr r0, [r0, #4] - ldr r2, _020D4644 ; =0x04000400 - mov r1, r4 - orr r3, r3, r5, lsr #2 - bl MIi_DmaSetParams - mov r0, #0x200000 - bl OS_ResetRequestIrqMask - ldmia sp!, {r3, r4, r5, pc} -_020D4618: - ldr r3, _020D4648 ; =0x84400000 - ldr r0, [r0, #4] - ldr r2, _020D4644 ; =0x04000400 - mov r1, r4 - orr r3, r3, r5, lsr #2 - bl MIi_DmaSetParams - mov r0, #0x200000 - bl OS_ResetRequestIrqMask - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D463C: .word MIiGXDmaParam -_020D4640: .word MIi_DMACallback -_020D4644: .word 0x04000400 -_020D4648: .word 0x84400000 - arm_func_end MIi_FIFOCallback - - arm_func_start MIi_DMACallback -MIi_DMACallback: ; 0x020D464C - stmdb sp!, {r3, lr} - mov r0, #0x200000 - bl OS_DisableIrqMask - ldr r2, _020D46A4 ; =0x04000600 - ldr r0, _020D46A8 ; =MIiGXDmaParam - ldr r1, [r2] - ldr r3, [r0, #0x18] - bic r1, r1, #0xc0000000 - orr r1, r1, r3, lsl #30 - str r1, [r2] - ldr r1, [r0, #0x1c] - mov r0, #0x200000 - bl OS_SetIrqFunction - ldr r0, _020D46A8 ; =MIiGXDmaParam - mov r1, #0 - str r1, [r0] - ldr r1, [r0, #0x10] - ldr r0, [r0, #0x14] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_020D46A4: .word 0x04000600 -_020D46A8: .word MIiGXDmaParam - arm_func_end MIi_DMACallback - - arm_func_start MI_SendGXCommandAsyncFast -MI_SendGXCommandAsyncFast: ; 0x020D46AC - stmdb sp!, {r4, r5, r6, lr} - movs r4, r2 - mov r6, r0 - mov r5, r1 - bne _020D46D4 - cmp r3, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [sp, #0x10] - blx r3 - ldmia sp!, {r4, r5, r6, pc} -_020D46D4: - ldr r0, _020D4758 ; =MIiGXDmaParam -_020D46D8: - ldr r1, [r0] - cmp r1, #0 - bne _020D46D8 - ldr r2, _020D4758 ; =MIiGXDmaParam - mov r0, #1 - str r0, [r2] - str r6, [r2, #4] - ldr ip, [sp, #0x10] - str r3, [r2, #0x10] - mov r0, r6 - mov r1, #0x38000000 - str ip, [r2, #0x14] - bl MIi_CheckAnotherAutoDMA - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl MIi_CheckDma0SourceAddress - mov r0, r6 - bl MI_WaitDma - mov r0, r6 - ldr r1, _020D475C ; =MIi_DMAFastCallback - mov r2, #0 - bl OSi_EnterDmaCallback - mov r0, r6 - mov r1, r5 - ldr r2, _020D4760 ; =0x04000400 - mov r3, #0x3c00000 - rsb r3, r3, #0 - orr r3, r3, r4, lsr #2 - bl MIi_DmaSetParams - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D4758: .word MIiGXDmaParam -_020D475C: .word MIi_DMAFastCallback -_020D4760: .word 0x04000400 - arm_func_end MI_SendGXCommandAsyncFast - - arm_func_start MIi_DMAFastCallback -MIi_DMAFastCallback: ; 0x020D4764 - stmdb sp!, {r3, lr} - ldr r0, _020D478C ; =MIiGXDmaParam - mov r1, #0 - str r1, [r0] - ldr r1, [r0, #0x10] - ldr r0, [r0, #0x14] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_020D478C: .word MIiGXDmaParam - arm_func_end MIi_DMAFastCallback diff --git a/lib/NitroSDK/asm/mi_dma_hblank.s b/lib/NitroSDK/asm/mi_dma_hblank.s deleted file mode 100644 index df988f7f..00000000 --- a/lib/NitroSDK/asm/mi_dma_hblank.s +++ /dev/null @@ -1,67 +0,0 @@ - .include "asm/macros.inc" - .include "mi_dma_hblank.inc" - .include "global.inc" - - .public MIi_CheckAnotherAutoDMA - .public MIi_CheckDma0SourceAddress - .public MIi_DmaSetParams - - .text - - arm_func_start MI_HBlankDmaCopy32 -MI_HBlankDmaCopy32: ; 0x020D43E8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r4, r3 - mov r1, #0x10000000 - mov r5, r2 - bl MIi_CheckAnotherAutoDMA - mov r0, r7 - mov r1, r6 - mov r2, r4 - mov r3, #0 - bl MIi_CheckDma0SourceAddress - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - bl MI_WaitDma - ldr r3, _020D4444 ; =0x96600000 - mov r0, r7 - mov r1, r6 - mov r2, r5 - orr r3, r3, r4, lsr #2 - bl MIi_DmaSetParams - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D4444: .word 0x96600000 - arm_func_end MI_HBlankDmaCopy32 - - arm_func_start MI_HBlankDmaCopy16 -MI_HBlankDmaCopy16: ; 0x020D4448 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r4, r3 - mov r1, #0x10000000 - mov r5, r2 - bl MIi_CheckAnotherAutoDMA - mov r0, r7 - mov r1, r6 - mov r2, r4 - mov r3, #0 - bl MIi_CheckDma0SourceAddress - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - bl MI_WaitDma - ldr r3, _020D44A4 ; =0x92600000 - mov r0, r7 - mov r1, r6 - mov r2, r5 - orr r3, r3, r4, lsr #1 - bl MIi_DmaSetParams - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D44A4: .word 0x92600000 - arm_func_end MI_HBlankDmaCopy16 diff --git a/lib/NitroSDK/asm/mi_init.s b/lib/NitroSDK/asm/mi_init.s deleted file mode 100644 index 33cea47a..00000000 --- a/lib/NitroSDK/asm/mi_init.s +++ /dev/null @@ -1,17 +0,0 @@ - .include "asm/macros.inc" - .include "mi_init.inc" - .include "global.inc" - - .public MI_SetWramBank - - .text - - arm_func_start MI_Init -MI_Init: ; 0x020D502C - stmdb sp!, {r3, lr} - mov r0, #3 - bl MI_SetWramBank - mov r0, #0 - bl MI_StopDma - ldmia sp!, {r3, pc} - arm_func_end MI_Init diff --git a/lib/NitroSDK/asm/mi_memory.s b/lib/NitroSDK/asm/mi_memory.s deleted file mode 100644 index 85f70690..00000000 --- a/lib/NitroSDK/asm/mi_memory.s +++ /dev/null @@ -1,422 +0,0 @@ - .include "asm/macros.inc" - .include "mi_memory.inc" - .include "global.inc" - - .text - - arm_func_start MIi_CpuClear16 -MIi_CpuClear16: ; 0x020D4790 - mov r3, #0 -_020D4794: - cmp r3, r2 - blt _020D47A0 - b _020D47A4 -_020D47A0: - strh r0, [r1, r3] -_020D47A4: - blt _020D47AC - b _020D47B0 -_020D47AC: - add r3, r3, #2 -_020D47B0: - blt _020D4794 - bx lr - arm_func_end MIi_CpuClear16 - - arm_func_start MIi_CpuCopy16 -MIi_CpuCopy16: ; 0x020D47B8 - mov ip, #0 -_020D47BC: - cmp ip, r2 - blt _020D47C8 - b _020D47CC -_020D47C8: - ldrh r3, [r0, ip] -_020D47CC: - blt _020D47D4 - b _020D47D8 -_020D47D4: - strh r3, [r1, ip] -_020D47D8: - blt _020D47E0 - b _020D47E4 -_020D47E0: - add ip, ip, #2 -_020D47E4: - blt _020D47BC - bx lr - arm_func_end MIi_CpuCopy16 - - arm_func_start MIi_CpuClear32 -MIi_CpuClear32: ; 0x020D47EC - add ip, r1, r2 -_020D47F0: - cmp r1, ip - blt _020D47FC - b _020D4800 -_020D47FC: - stmia r1!, {r0} -_020D4800: - blt _020D47F0 - bx lr - arm_func_end MIi_CpuClear32 - - arm_func_start MIi_CpuCopy32 -MIi_CpuCopy32: ; 0x020D4808 - add ip, r1, r2 -_020D480C: - cmp r1, ip - blt _020D4818 - b _020D481C -_020D4818: - ldmia r0!, {r2} -_020D481C: - blt _020D4824 - b _020D4828 -_020D4824: - stmia r1!, {r2} -_020D4828: - blt _020D480C - bx lr - arm_func_end MIi_CpuCopy32 - - arm_func_start MIi_CpuSend32 -MIi_CpuSend32: ; 0x020D4830 - add ip, r0, r2 -_020D4834: - cmp r0, ip - blt _020D4840 - b _020D4844 -_020D4840: - ldmia r0!, {r2} -_020D4844: - blt _020D484C - b _020D4850 -_020D484C: - str r2, [r1] -_020D4850: - blt _020D4834 - bx lr - arm_func_end MIi_CpuSend32 - - arm_func_start MIi_CpuClearFast -MIi_CpuClearFast: ; 0x020D4858 - stmdb sp!, {r4, r5, r6, r7, r8, sb} - add sb, r1, r2 - mov ip, r2, lsr #5 - add ip, r1, ip, lsl #5 - mov r2, r0 - mov r3, r2 - mov r4, r2 - mov r5, r2 - mov r6, r2 - mov r7, r2 - mov r8, r2 -_020D4884: - cmp r1, ip - blt _020D4890 - b _020D4894 -_020D4890: - stmia r1!, {r0, r2, r3, r4, r5, r6, r7, r8} -_020D4894: - blt _020D4884 -_020D4898: - cmp r1, sb - blt _020D48A4 - b _020D48A8 -_020D48A4: - stmia r1!, {r0} -_020D48A8: - blt _020D4898 - ldmia sp!, {r4, r5, r6, r7, r8, sb} - bx lr - arm_func_end MIi_CpuClearFast - - arm_func_start MIi_CpuCopyFast -MIi_CpuCopyFast: ; 0x020D48B4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl} - add sl, r1, r2 - mov ip, r2, lsr #5 - add ip, r1, ip, lsl #5 -_020D48C4: - cmp r1, ip - blt _020D48D0 - b _020D48D4 -_020D48D0: - ldmia r0!, {r2, r3, r4, r5, r6, r7, r8, sb} -_020D48D4: - blt _020D48DC - b _020D48E0 -_020D48DC: - stmia r1!, {r2, r3, r4, r5, r6, r7, r8, sb} -_020D48E0: - blt _020D48C4 -_020D48E4: - cmp r1, sl - blt _020D48F0 - b _020D48F4 -_020D48F0: - ldmia r0!, {r2} -_020D48F4: - blt _020D48FC - b _020D4900 -_020D48FC: - stmia r1!, {r2} -_020D4900: - blt _020D48E4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl} - bx lr - arm_func_end MIi_CpuCopyFast - - arm_func_start MI_Copy32B -MI_Copy32B: ; 0x020D490C - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3} - stmia r1!, {r2, r3} - bx lr - arm_func_end MI_Copy32B - - arm_func_start MI_Copy36B -MI_Copy36B: ; 0x020D4928 - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - bx lr - arm_func_end MI_Copy36B - - arm_func_start MI_Copy48B -MI_Copy48B: ; 0x020D4944 - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - bx lr - arm_func_end MI_Copy48B - - arm_func_start MI_Copy64B -MI_Copy64B: ; 0x020D4968 - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0!, {r2, r3, ip} - stmia r1!, {r2, r3, ip} - ldmia r0, {r0, r2, r3, ip} - stmia r1!, {r0, r2, r3, ip} - bx lr - arm_func_end MI_Copy64B - - arm_func_start MI_CpuFill8 -MI_CpuFill8: ; 0x020D4994 - cmp r2, #0 - beq _020D49A0 - b _020D49A4 -_020D49A0: - bx lr -_020D49A4: - tst r0, #1 - beq _020D49D0 - ldrh ip, [r0, #-1] - and ip, ip, #0xff - orr r3, ip, r1, lsl #8 - strh r3, [r0, #-1] - add r0, r0, #1 - subs r2, r2, #1 - beq _020D49CC - b _020D49D0 -_020D49CC: - bx lr -_020D49D0: - cmp r2, #2 - blo _020D4A28 - orr r1, r1, r1, lsl #8 - tst r0, #2 - beq _020D49F8 - strh r1, [r0], #2 - subs r2, r2, #2 - beq _020D49F4 - b _020D49F8 -_020D49F4: - bx lr -_020D49F8: - orr r1, r1, r1, lsl #16 - bics r3, r2, #3 - beq _020D4A18 - sub r2, r2, r3 - add ip, r3, r0 -_020D4A0C: - str r1, [r0], #4 - cmp r0, ip - blo _020D4A0C -_020D4A18: - tst r2, #2 - bne _020D4A24 - b _020D4A28 -_020D4A24: - strh r1, [r0], #2 -_020D4A28: - tst r2, #1 - beq _020D4A34 - b _020D4A38 -_020D4A34: - bx lr -_020D4A38: - ldrh r3, [r0] - and r3, r3, #0xff00 - and r1, r1, #0xff - orr r1, r1, r3 - strh r1, [r0] - bx lr - arm_func_end MI_CpuFill8 - - arm_func_start MI_CpuCopy8 -MI_CpuCopy8: ; 0x020D4A50 - cmp r2, #0 - beq _020D4A5C - b _020D4A60 -_020D4A5C: - bx lr -_020D4A60: - tst r1, #1 - beq _020D4AB8 - ldrh ip, [r1, #-1] - and ip, ip, #0xff - tst r0, #1 - bne _020D4A7C - b _020D4A80 -_020D4A7C: - ldrh r3, [r0, #-1] -_020D4A80: - bne _020D4A88 - b _020D4A8C -_020D4A88: - mov r3, r3, lsr #8 -_020D4A8C: - beq _020D4A94 - b _020D4A98 -_020D4A94: - ldrh r3, [r0] -_020D4A98: - orr r3, ip, r3, lsl #8 - strh r3, [r1, #-1] - add r0, r0, #1 - add r1, r1, #1 - subs r2, r2, #1 - beq _020D4AB4 - b _020D4AB8 -_020D4AB4: - bx lr -_020D4AB8: - eor ip, r1, r0 - tst ip, #1 - beq _020D4B14 - bic r0, r0, #1 - ldrh ip, [r0], #2 - mov r3, ip, lsr #8 - subs r2, r2, #2 - blo _020D4AF0 -_020D4AD8: - ldrh ip, [r0], #2 - orr ip, r3, ip, lsl #8 - strh ip, [r1], #2 - mov r3, ip, lsr #0x10 - subs r2, r2, #2 - bhs _020D4AD8 -_020D4AF0: - tst r2, #1 - beq _020D4AFC - b _020D4B00 -_020D4AFC: - bx lr -_020D4B00: - ldrh ip, [r1] - and ip, ip, #0xff00 - orr ip, ip, r3 - strh ip, [r1] - bx lr -_020D4B14: - tst ip, #2 - beq _020D4B40 - bics r3, r2, #1 - beq _020D4BA4 - sub r2, r2, r3 - add ip, r3, r1 -_020D4B2C: - ldrh r3, [r0], #2 - strh r3, [r1], #2 - cmp r1, ip - blo _020D4B2C - b _020D4BA4 -_020D4B40: - cmp r2, #2 - blo _020D4BA4 - tst r1, #2 - beq _020D4B68 - ldrh r3, [r0], #2 - strh r3, [r1], #2 - subs r2, r2, #2 - beq _020D4B64 - b _020D4B68 -_020D4B64: - bx lr -_020D4B68: - bics r3, r2, #3 - beq _020D4B88 - sub r2, r2, r3 - add ip, r3, r1 -_020D4B78: - ldr r3, [r0], #4 - str r3, [r1], #4 - cmp r1, ip - blo _020D4B78 -_020D4B88: - tst r2, #2 - bne _020D4B94 - b _020D4B98 -_020D4B94: - ldrh r3, [r0], #2 -_020D4B98: - bne _020D4BA0 - b _020D4BA4 -_020D4BA0: - strh r3, [r1], #2 -_020D4BA4: - tst r2, #1 - beq _020D4BB0 - b _020D4BB4 -_020D4BB0: - bx lr -_020D4BB4: - ldrh r2, [r1] - ldrh r0, [r0] - and r2, r2, #0xff00 - and r0, r0, #0xff - orr r0, r2, r0 - strh r0, [r1] - bx lr - arm_func_end MI_CpuCopy8 - - thumb_func_start MI_Zero36B -MI_Zero36B: ; 0x020D4BD0 - mov r1, #0 - mov r2, #0 - mov r3, #0 - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r2, r3} - stmia r0!, {r1, r2, r3} - bx lr - thumb_func_end MI_Zero36B - - .balign 4, 0 diff --git a/lib/NitroSDK/asm/mi_swap.s b/lib/NitroSDK/asm/mi_swap.s deleted file mode 100644 index 5c537506..00000000 --- a/lib/NitroSDK/asm/mi_swap.s +++ /dev/null @@ -1,11 +0,0 @@ - .include "asm/macros.inc" - .include "mi_swap.inc" - .include "global.inc" - - .text - - arm_func_start MI_SwapWord -MI_SwapWord: ; 0x020D4BE0 - swp r0, r0, [r1] - bx lr - arm_func_end MI_SwapWord diff --git a/lib/NitroSDK/asm/mi_uncompress.s b/lib/NitroSDK/asm/mi_uncompress.s deleted file mode 100644 index 9ea1bbc6..00000000 --- a/lib/NitroSDK/asm/mi_uncompress.s +++ /dev/null @@ -1,88 +0,0 @@ - .include "asm/macros.inc" - .include "mi_uncompress.inc" - .include "global.inc" - - .text - - arm_func_start MI_UncompressLZ8 -MI_UncompressLZ8: ; 0x020D4BE8 - stmdb sp!, {r4, r5, r6, r7, lr} - ldr r5, [r0], #4 - mov r2, r5, lsr #8 - mov r7, #0 - tst r5, #0xf - bne _020D4C04 - b _020D4C08 -_020D4C04: - mov r7, #1 -_020D4C08: - cmp r2, #0 - ble _020D4CE0 - ldrb lr, [r0], #1 - mov r4, #8 -_020D4C18: - subs r4, r4, #1 - blt _020D4C08 - tst lr, #0x80 - bne _020D4C3C - ldrb r6, [r0], #1 - swpb r6, r6, [r1] - add r1, r1, #1 - sub r2, r2, #1 - b _020D4CC8 -_020D4C3C: - ldrb r5, [r0] - cmp r7, #0 - beq _020D4C4C - b _020D4C50 -_020D4C4C: - mov r6, #3 -_020D4C50: - beq _020D4C94 - tst r5, #0xe0 - bne _020D4C60 - b _020D4C64 -_020D4C60: - mov r6, #1 -_020D4C64: - bne _020D4C94 - add r0, r0, #1 - and r6, r5, #0xf - mov r6, r6, lsl #4 - tst r5, #0x10 - beq _020D4C8C - mov r6, r6, lsl #8 - ldrb r5, [r0], #1 - add r6, r6, r5, lsl #4 - add r6, r6, #0x100 -_020D4C8C: - add r6, r6, #0x11 - ldrb r5, [r0] -_020D4C94: - add r3, r6, r5, asr #4 - add r0, r0, #1 - and r5, r5, #0xf - mov ip, r5, lsl #8 - ldrb r6, [r0], #1 - orr r5, r6, ip - add ip, r5, #1 - sub r2, r2, r3 -_020D4CB4: - ldrb r5, [r1, -ip] - swpb r5, r5, [r1] - add r1, r1, #1 - subs r3, r3, #1 - bgt _020D4CB4 -_020D4CC8: - cmp r2, #0 - bgt _020D4CD4 - b _020D4CD8 -_020D4CD4: - mov lr, lr, lsl #1 -_020D4CD8: - bgt _020D4C18 - b _020D4C08 -_020D4CE0: - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr - arm_func_end MI_UncompressLZ8 diff --git a/lib/NitroSDK/asm/mi_wram.s b/lib/NitroSDK/asm/mi_wram.s deleted file mode 100644 index 85bb2da7..00000000 --- a/lib/NitroSDK/asm/mi_wram.s +++ /dev/null @@ -1,14 +0,0 @@ - .include "asm/macros.inc" - .include "mi_wram.inc" - .include "global.inc" - - .text - - arm_func_start MI_SetWramBank -MI_SetWramBank: ; 0x020D3F64 - ldr r1, _020D3F70 ; =0x04000247 - strb r0, [r1] - bx lr - .align 2, 0 -_020D3F70: .word 0x04000247 ; reg_GX_VRAMCNT_WRAM - arm_func_end MI_SetWramBank diff --git a/lib/NitroSDK/asm/wvr.s b/lib/NitroSDK/asm/wvr.s deleted file mode 100644 index 700482cb..00000000 --- a/lib/NitroSDK/asm/wvr.s +++ /dev/null @@ -1,315 +0,0 @@ - .include "asm/macros.inc" - .include "wvr.inc" - .include "global.inc" - - .bss - -wvrLockId: - .space 2 - -wvrVRam: - .space 2 - -wvrArg: - .space 4 - -wvrCallback: - .space 4 - - .text - - arm_func_start WVR_StartUpAsync -WVR_StartUpAsync: ; 0x0209E00C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl PXI_Init - mov r0, #0xf - mov r1, #1 - bl PXI_IsCallbackReady - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r8, _0209E234 ; =.bss - ldrh r0, [r8] - cmp r0, #0 - bne _0209E06C - mvn r4, #2 -_0209E04C: - bl OS_GetLockID - cmp r0, r4 - moveq r0, #7 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - strh r0, [r8] - ldrh r0, [r8] - cmp r0, #0 - beq _0209E04C -_0209E06C: - bl OS_DisableInterrupts - ldr r1, _0209E234 ; =.bss - mov r4, r0 - ldr r2, [r1, #8] - cmp r2, #0 - beq _0209E090 - bl OS_RestoreInterrupts - mov r0, #5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E090: - ldrh r2, [r1, #2] - cmp r2, #0 - beq _0209E0A8 - bl OS_RestoreInterrupts - mov r0, #5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E0A8: - cmp r7, #4 - beq _0209E0C4 - cmp r7, #8 - beq _0209E104 - cmp r7, #0xc - beq _0209E144 - b _0209E18C -_0209E0C4: - ldrh r1, [r1] - mov r0, #4 - bl OSi_TryLockVram - cmp r0, #0 - bne _0209E0E8 - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E0E8: - ldr r0, _0209E234 ; =.bss - mov r2, #4 - ldr r1, _0209E238 ; =0x04000242 - strh r2, [r0, #2] - mov r0, #0x82 - strb r0, [r1] - b _0209E198 -_0209E104: - ldrh r1, [r1] - mov r0, #8 - bl OSi_TryLockVram - cmp r0, #0 - bne _0209E128 - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E128: - ldr r0, _0209E234 ; =.bss - mov r2, #8 - ldr r1, _0209E23C ; =0x04000243 - strh r2, [r0, #2] - mov r0, #0x82 - strb r0, [r1] - b _0209E198 -_0209E144: - ldrh r1, [r1] - mov r0, #0xc - bl OSi_TryLockVram - cmp r0, #0 - bne _0209E168 - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E168: - ldr r0, _0209E234 ; =.bss - mov r2, #0xc - ldr r1, _0209E238 ; =0x04000242 - strh r2, [r0, #2] - mov r0, #0x82 - strb r0, [r1] - mov r0, #0x8a - strb r0, [r1, #1] - b _0209E198 -_0209E18C: - bl OS_RestoreInterrupts - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E198: - mov r0, #0xf - mov r1, #0 - bl PXI_IsCallbackReady - cmp r0, #0 - bne _0209E1B8 - ldr r1, _0209E240 ; =WvrReceiveCallback - mov r0, #0xf - bl PXI_SetFifoRecvCallback -_0209E1B8: - cmp r6, #0 - ldrne r0, _0209E234 ; =.bss - strne r6, [r0, #8] - bne _0209E1D4 - ldr r1, _0209E244 ; =WvrDummyAsyncCallback - ldr r0, _0209E234 ; =.bss - str r1, [r0, #8] -_0209E1D4: - ldr r3, _0209E234 ; =.bss - mov r0, #0xf - mov r1, #0x10000 - mov r2, #0 - str r5, [r3, #4] - bl PXI_SendWordByFifo - cmp r0, #0 - bge _0209E224 - ldr r1, _0209E234 ; =.bss - ldrh r0, [r1, #2] - ldrh r1, [r1] - bl OSi_UnlockVram - ldr r1, _0209E234 ; =.bss - mov r2, #0 - strh r2, [r1, #2] - mov r0, r4 - str r2, [r1, #8] - bl OS_RestoreInterrupts - mov r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0209E224: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0209E234: .word .bss -_0209E238: .word 0x04000242 -_0209E23C: .word 0x04000243 -_0209E240: .word WvrReceiveCallback -_0209E244: .word WvrDummyAsyncCallback - arm_func_end WVR_StartUpAsync - - arm_func_start WVR_TerminateAsync -WVR_TerminateAsync: ; 0x0209E248 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl PXI_Init - mov r0, #0xf - mov r1, #1 - bl PXI_IsCallbackReady - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r4, r5, r6, pc} - bl OS_DisableInterrupts - ldr r1, _0209E31C ; =.bss - mov r4, r0 - ldr r1, [r1, #8] - cmp r1, #0 - beq _0209E294 - bl OS_RestoreInterrupts - mov r0, #5 - ldmia sp!, {r4, r5, r6, pc} -_0209E294: - mov r0, #0xf - mov r1, #0 - bl PXI_IsCallbackReady - cmp r0, #0 - bne _0209E2B4 - ldr r1, _0209E320 ; =WvrReceiveCallback - mov r0, #0xf - bl PXI_SetFifoRecvCallback -_0209E2B4: - cmp r6, #0 - ldrne r0, _0209E31C ; =.bss - strne r6, [r0, #8] - bne _0209E2D0 - ldr r1, _0209E324 ; =WvrDummyAsyncCallback - ldr r0, _0209E31C ; =.bss - str r1, [r0, #8] -_0209E2D0: - ldr r3, _0209E31C ; =.bss - mov r0, #0xf - mov r1, #0x20000 - mov r2, #0 - str r5, [r3, #4] - bl PXI_SendWordByFifo - cmp r0, #0 - bge _0209E30C - ldr r1, _0209E31C ; =.bss - mov r2, #0 - mov r0, r4 - str r2, [r1, #8] - bl OS_RestoreInterrupts - mov r0, #4 - ldmia sp!, {r4, r5, r6, pc} -_0209E30C: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0209E31C: .word .bss -_0209E320: .word WvrReceiveCallback -_0209E324: .word WvrDummyAsyncCallback - arm_func_end WVR_TerminateAsync - - arm_func_start WvrReceiveCallback -WvrReceiveCallback: ; 0x0209E328 - stmdb sp!, {r4, r5, r6, lr} - mov r0, #0x10000 - ldr r2, _0209E3FC ; =.bss - rsb r0, r0, #0 - and r0, r1, r0 - cmp r0, #0x10000 - and r6, r1, #0xff - ldr r4, [r2, #8] - ldr r5, [r2, #4] - beq _0209E35C - cmp r0, #0x20000 - beq _0209E394 - b _0209E3D4 -_0209E35C: - cmp r6, #7 - bne _0209E3D4 - ldrh r0, [r2, #2] - cmp r0, #0 - ldrneh r0, [r2] - cmpne r0, #0 - beq _0209E3D4 - ldrh r0, [r2, #2] - ldrh r1, [r2] - bl OSi_UnlockVram - ldr r0, _0209E3FC ; =.bss - mov r1, #0 - strh r1, [r0, #2] - b _0209E3D4 -_0209E394: - cmp r6, #0 - bne _0209E3C8 - ldrh r0, [r2, #2] - cmp r0, #0 - ldrneh r0, [r2] - cmpne r0, #0 - beq _0209E3C8 - ldrh r0, [r2, #2] - ldrh r1, [r2] - bl OSi_UnlockVram - ldr r0, _0209E3FC ; =.bss - mov r1, #0 - strh r1, [r0, #2] -_0209E3C8: - mov r0, #0xf - mov r1, #0 - bl PXI_SetFifoRecvCallback -_0209E3D4: - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r2, _0209E3FC ; =.bss - mov r3, #0 - str r3, [r2, #8] - mov r0, r5 - mov r1, r6 - str r3, [r2, #4] - blx r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0209E3FC: .word .bss - arm_func_end WvrReceiveCallback - - arm_func_start WvrDummyAsyncCallback -WvrDummyAsyncCallback: ; 0x0209E400 - bx lr - arm_func_end WvrDummyAsyncCallback diff --git a/lib/NitroSDK/src/os/os_alarm.c b/lib/NitroSDK/src/os/os_alarm.c deleted file mode 100644 index 5b36d4f8..00000000 --- a/lib/NitroSDK/src/os/os_alarm.c +++ /dev/null @@ -1,197 +0,0 @@ -#include - -void OSi_AlarmHandler(void *arg); -void OSi_ArrangeTimer(void); - -#define OSi_ALARM_TIMER OS_TIMER_1 -#define OSi_ALARM_TIMERCONTROL ((1 << REG_OS_TM1CNT_H_E_SHIFT) | (1 << REG_OS_TM1CNT_H_I_SHIFT) | OS_TIMER_PRESCALER_64) -#define OSi_ALARM_IE_TIMER OS_IE_TIMER1 - -u16 OSi_UseAlarm = FALSE; -struct OSiAlarmQueue OSi_AlarmQueue; - -void OSi_SetTimer(OSAlarm *alarm) { - s64 delta; - OSTick tick = OS_GetTick(); - u16 timerCount; - - OS_SetTimerControl(OSi_ALARM_TIMER, 0); - delta = alarm->fire - tick; - OSi_EnterTimerCallback(OSi_ALARM_TIMER, OSi_AlarmHandler, NULL); - if (delta < 0) { - timerCount = (u16)~1; - } else if (delta < 0x10000) { - timerCount = (u16)~delta; - } else { - timerCount = 0; - } - OS_SetTimerCount(OSi_ALARM_TIMER, timerCount); - OS_SetTimerControl(OSi_ALARM_TIMER, OSi_ALARM_TIMERCONTROL); - OS_EnableIrqMask(OSi_ALARM_IE_TIMER); -} - -void OS_InitAlarm(void) { - if (OSi_UseAlarm) { - return; - } - OSi_UseAlarm = TRUE; - OSi_SetTimerReserved(OSi_ALARM_TIMER); - OSi_AlarmQueue.head = NULL; - OSi_AlarmQueue.tail = NULL; - OS_DisableIrqMask(OSi_ALARM_IE_TIMER); -} - -BOOL OS_IsAlarmAvailable(void) { - return OSi_UseAlarm; -} - -void OS_CreateAlarm(OSAlarm *alarm) { - alarm->handler = NULL; - alarm->tag = 0; -} - -void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire) { - OSAlarm *prev; - OSAlarm *next; - - if (alarm->period > 0) { - OSTick tick = OS_GetTick(); - fire = alarm->start; - if (alarm->start < tick) { - fire += alarm->period * ((tick - alarm->start) / alarm->period + 1); - } - } - alarm->fire = fire; - for (next = OSi_AlarmQueue.head; next; next = next->next) { - if ((s64)(fire - next->fire) >= 0) { // cast required to match - continue; - } - alarm->prev = next->prev; - next->prev = alarm; - alarm->next = next; - prev = alarm->prev; - if (prev) { - prev->next = alarm; - } else { - OSi_AlarmQueue.head = alarm; - OSi_SetTimer(alarm); - } - return; - } - alarm->next = NULL; - prev = OSi_AlarmQueue.tail; - OSi_AlarmQueue.tail = alarm; - alarm->prev = prev; - if (prev) { - prev->next = alarm; - } else { - OSi_AlarmQueue.head = OSi_AlarmQueue.tail = alarm; // why set .tail twice? - OSi_SetTimer(alarm); - } -} - -void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg) { - OSIntrMode enabled; - - if (alarm == NULL || alarm->handler != NULL) { - OS_Panic(""); - } - - enabled = OS_DisableInterrupts(); - alarm->period = 0; - alarm->handler = handler; - alarm->arg = arg; - OSi_InsertAlarm(alarm, tick + OS_GetTick()); - OS_RestoreInterrupts(enabled); -} - -void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, void *arg) { - OSIntrMode enabled; - - if (alarm == NULL || alarm->handler != NULL) { - OS_Panic(""); - } - - enabled = OS_DisableInterrupts(); - alarm->period = period; - alarm->start = start; - alarm->handler = handler; - alarm->arg = arg; - OSi_InsertAlarm(alarm, 0); -} - -void OS_CancelAlarm(OSAlarm *alarm) { - OSAlarm *next; - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - if (alarm->handler == NULL) { - OS_RestoreInterrupts(enabled); - return; - } - next = alarm->next; - if (next == NULL) { - OSi_AlarmQueue.tail = alarm->prev; - } else { - next->prev = alarm->prev; - } - if (alarm->prev != NULL) { - alarm->prev->next = next; - } else { - OSi_AlarmQueue.head = next; - if (next != NULL) { - OSi_SetTimer(next); - } - } - alarm->handler = NULL; - alarm->period = 0; - OS_RestoreInterrupts(enabled); -} - -asm void OSi_AlarmHandler(void *arg) { - stmdb sp!, {r0, lr} - bl OSi_ArrangeTimer - ldmia sp!, {r0, lr} - bx lr -} - -void OSi_ArrangeTimer(void) { - OSTick tick; - OSAlarm *alarm; - OSAlarm *next; - OSAlarmHandler handler; - - OS_SetTimerControl(OSi_ALARM_TIMER, 0); - OS_DisableIrqMask(OSi_ALARM_IE_TIMER); - OS_SetIrqCheckFlag(OSi_ALARM_IE_TIMER); - tick = OS_GetTick(); - alarm = OSi_AlarmQueue.head; - if (alarm == NULL) { - return; - } - if (tick < alarm->fire) { - OSi_SetTimer(alarm); - return; - } - next = alarm->next; - OSi_AlarmQueue.head = next; - if (next == NULL) { - OSi_AlarmQueue.tail = NULL; - } else { - next->prev = NULL; - } - handler = alarm->handler; - if (alarm->period == 0) { - alarm->handler = NULL; - } - if (handler) { - handler(alarm->arg); - } - if (alarm->period > 0) { - alarm->handler = handler; - OSi_InsertAlarm(alarm, 0); - } - if (OSi_AlarmQueue.head) { - OSi_SetTimer(OSi_AlarmQueue.head); - } -} diff --git a/lib/NitroSDK/src/os/os_alloc.c b/lib/NitroSDK/src/os/os_alloc.c deleted file mode 100644 index a6dcb853..00000000 --- a/lib/NitroSDK/src/os/os_alloc.c +++ /dev/null @@ -1,272 +0,0 @@ -#include - -#define OFFSET(n, a) (((u32) (n)) & ((a) - 1)) -#define TRUNC(n, a) (((u32) (n)) & ~((a) - 1)) -#define ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) - -#define ALIGNMENT 32 -#define MINOBJSIZE (HEADERSIZE + ALIGNMENT) -#define HEADERSIZE ROUND(sizeof(Cell), ALIGNMENT) - -void *OSiHeapInfo[OS_ARENA_MAX] = {}; - -static -#ifdef SDK_ARM7 -inline -#endif //SDK_ARM7 -Cell *DLAddFront(Cell *list, Cell *cell) { - cell->next = list; - cell->prev = NULL; - if (list != NULL) { - list->prev = cell; - } - return cell; -} - -Cell *DLExtract(Cell *list, Cell *cell) { - if (cell->next != NULL) { - cell->next->prev = cell->prev; - } - if (cell->prev == NULL) { - return cell->next; - } else { - cell->prev->next = cell->next; - return list; - } -} - -Cell *DLInsert(Cell *list, Cell *cell) { - Cell *prev; - Cell *next; - - for (next = list, prev = NULL; next; prev = next, next = next->next) { - if (cell <= next) { - break; - } - } - - cell->next = next; - cell->prev = prev; - - if (next) { - next->prev = cell; - if ((char *)cell + cell->size == (char *)next) { - cell->size += next->size; - cell->next = next = next->next; - if (next) { - next->prev = cell; - } - } - } - if (prev) { - prev->next = cell; - if ((char *)prev + prev->size == (char *)cell) { - prev->size += cell->size; - prev->next = next; - if (next) { - next->prev = prev; - } - } - return list; - } else { - return cell; - } -} - -void *OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size) { - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - Cell *newCell; - long leftoverSize; - OSIntrMode enabled = OS_DisableInterrupts(); - - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - if (heapInfo == NULL) { - OS_RestoreInterrupts(enabled); - return NULL; - } - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - hd = &heapInfo->heapArray[heap]; - size += HEADERSIZE; - size = ROUND(size, ALIGNMENT); - for (cell = hd->free; cell != NULL; cell = cell->next) { - if ((long)size <= cell->size) { - break; - } - } - if (cell == NULL) { - OS_RestoreInterrupts(enabled); - return NULL; - } - leftoverSize = cell->size - size; - if (leftoverSize < MINOBJSIZE) { - hd->free = DLExtract(hd->free, cell); - } else { - cell->size = (long)size; - newCell = (Cell*)((char *)cell + size); - newCell->size = leftoverSize; - newCell->prev = cell->prev; - newCell->next = cell->next; - if (newCell->next != NULL) { - newCell->next->prev = newCell; - } - if (newCell->prev != NULL) { - newCell->prev->next = newCell; - } else { - // debug assert here: "broken heap" - hd->free = newCell; - } - } - hd->allocated = DLAddFront(hd->allocated, cell); - OS_RestoreInterrupts(enabled); - return (void *)((char *)cell + HEADERSIZE); -} - -void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void *ptr) { - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - if (heap < 0) { - heap = heapInfo->currentHeap; - } - hd = &heapInfo->heapArray[heap]; - cell = (Cell *)((char *)ptr - HEADERSIZE); - hd->allocated = DLExtract(hd->allocated, cell); - hd->free = DLInsert(hd->free, cell); - OS_RestoreInterrupts(enabled); -} - -OSHeapHandle OS_SetCurrentHeap(OSArenaId id, OSHeapHandle heap) { - OSHeapInfo *heapInfo; - OSHeapHandle prev; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - prev = heapInfo->currentHeap; - heapInfo->currentHeap = heap; - OS_RestoreInterrupts(enabled); - return prev; -} - -void *OS_InitAlloc(OSArenaId id, void *arenaStart, void *arenaEnd, s32 maxHeaps) { - OSHeapInfo *heapInfo; - OSHeapHandle i; - u32 arraySize; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = arenaStart; - OSiHeapInfo[id] = heapInfo; - arraySize = sizeof(HeapDesc) * maxHeaps; - heapInfo->heapArray = (void *)((u32)arenaStart + sizeof(OSHeapInfo)); - heapInfo->numHeaps = maxHeaps; - for (i = 0; i < heapInfo->numHeaps; i++) { - HeapDesc *hd = &heapInfo->heapArray[i]; - hd->size = -1; - hd->free = hd->allocated = NULL; - } - heapInfo->currentHeap = -1; - arenaStart = (void *)((char *)heapInfo->heapArray + arraySize); - arenaStart = (void *)ROUND(arenaStart, ALIGNMENT); - heapInfo->arenaStart = arenaStart; - heapInfo->arenaEnd = (void *)TRUNC(arenaEnd, ALIGNMENT); - OS_RestoreInterrupts(enabled); - return heapInfo->arenaStart; -} - -void OS_ClearAlloc(OSArenaId id) { - OSiHeapInfo[id] = NULL; // Act like it never existed -} - -OSHeapHandle OS_CreateHeap(OSArenaId id, void *start, void *end) { - OSHeapInfo *heapInfo; - OSHeapHandle heap; - HeapDesc *hd; - Cell *cell; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - start = (void *)ROUND(start, ALIGNMENT); - end = (void *)TRUNC(end, ALIGNMENT); - for (heap = 0; heap < heapInfo->numHeaps; heap++) { - hd = &heapInfo->heapArray[heap]; - if (hd->size < 0) { - // This heap is available, asign it - hd->size = (char *)end - (char *)start; - cell = (Cell *)start; - cell->prev = NULL; - cell->next = NULL; - cell->size = hd->size; - hd->free = cell; - hd->allocated = NULL; - OS_RestoreInterrupts(enabled); - return heap; - } - } - // No heap is available, signal such - OS_RestoreInterrupts(enabled); - return -1; -} - -#define InRange(targ, a, b)((u32)(a) <= (u32)(targ) && (u32)(targ) < (u32)(b)) - -#define OSi_CHECK(exp) do { \ - if (!(exp)) { \ - goto exit_OS_CheckHeap; \ - } \ -} while (0) - -s32 OS_CheckHeap(OSArenaId id, OSHeapHandle heap) { - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - long total = 0; - long free = 0; - long retValue = -1; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = OSiHeapInfo[id]; - if (heap == -1) { - heap = heapInfo->currentHeap; - } - OSi_CHECK(heapInfo->heapArray); - OSi_CHECK(0 <= heap && heap < heapInfo->numHeaps); - - hd = &heapInfo->heapArray[heap]; - OSi_CHECK(0 <= hd->size); - - OSi_CHECK(hd->allocated == NULL || hd->allocated->prev == NULL); - for (cell = hd->allocated; cell; cell = cell->next) { - OSi_CHECK(InRange(cell, heapInfo->arenaStart, heapInfo->arenaEnd)); - OSi_CHECK(OFFSET(cell, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || cell->next->prev == cell); - OSi_CHECK(MINOBJSIZE <= cell->size); - OSi_CHECK(OFFSET(cell->size, ALIGNMENT) == 0); - - total += cell->size; - OSi_CHECK(0 < total && total <= hd->size); - - } - - OSi_CHECK(hd->free == NULL || hd->free->prev == NULL); - for (cell = hd->free; cell; cell = cell->next) { - OSi_CHECK(InRange(cell, heapInfo->arenaStart, heapInfo->arenaEnd)); - OSi_CHECK(OFFSET(cell, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || cell->next->prev == cell); - OSi_CHECK(MINOBJSIZE <= cell->size); - OSi_CHECK(OFFSET(cell->size, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || (char *) cell + cell->size < (char *) cell->next); - - total += cell->size; - free += cell->size - HEADERSIZE; - OSi_CHECK(0 < total && total <= hd->size); - } - - OSi_CHECK(total == hd->size); - retValue = free; - -exit_OS_CheckHeap: - OS_RestoreInterrupts(enabled); - return retValue; -} diff --git a/lib/NitroSDK/src/os/os_arena.c b/lib/NitroSDK/src/os/os_arena.c deleted file mode 100644 index fa894f69..00000000 --- a/lib/NitroSDK/src/os/os_arena.c +++ /dev/null @@ -1,243 +0,0 @@ -#include - -extern void SDK_IRQ_STACKSIZE(void); -#define OSi_IRQ_STACKSIZE ((s32)SDK_IRQ_STACKSIZE) -extern void SDK_SYS_STACKSIZE(void); -#define OSi_SYS_STACKSIZE ((s32)SDK_SYS_STACKSIZE) - -#ifdef SDK_ARM9 -extern void SDK_SECTION_ARENA_DTCM_START(void); -#define OSi_DTCM_ARENA_LO_DEFAULT ((s32)SDK_SECTION_ARENA_DTCM_START) - -extern void SDK_SECTION_ARENA_ITCM_START(void); -#define OSi_ITCM_ARENA_LO_DEFAULT ((s32)SDK_SECTION_ARENA_ITCM_START) - -extern void SDK_MAIN_ARENA_LO(void); -#define OSi_MAIN_ARENA_LO_DEFAULT ((s32)SDK_MAIN_ARENA_LO) -#else -extern void SDK_SUBPRIV_ARENA_LO(void); -#define OSi_SUBPRIV_ARENA_LO_DEFAULT ((s32)SDK_SUBPRIV_ARENA_LO) - -extern void SDK_WRAM_ARENA_LO(void); -#define OSi_WRAM_ARENA_LO_DEFAULT ((s32)SDK_WRAM_ARENA_LO) -#endif //SDK_ARM9 - -static BOOL OSi_Initialized = FALSE; -#ifdef SDK_ARM9 -static BOOL OSi_MainArenaEnabled = FALSE; -#endif - -void OS_InitArena(void) { - if (OSi_Initialized) { - return; - } - OSi_Initialized = TRUE; -#ifdef SDK_ARM9 - OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); - OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); - OS_SetArenaLo(OS_ARENA_MAINEX, NULL); - OS_SetArenaHi(OS_ARENA_MAINEX, NULL); - OS_SetArenaHi(OS_ARENA_ITCM, OS_GetInitArenaHi(OS_ARENA_ITCM)); - OS_SetArenaLo(OS_ARENA_ITCM, OS_GetInitArenaLo(OS_ARENA_ITCM)); - OS_SetArenaHi(OS_ARENA_DTCM, OS_GetInitArenaHi(OS_ARENA_DTCM)); - OS_SetArenaLo(OS_ARENA_DTCM, OS_GetInitArenaLo(OS_ARENA_DTCM)); - OS_SetArenaHi(OS_ARENA_SHARED, OS_GetInitArenaHi(OS_ARENA_SHARED)); - OS_SetArenaLo(OS_ARENA_SHARED, OS_GetInitArenaLo(OS_ARENA_SHARED)); - OS_SetArenaHi(OS_ARENA_WRAM_MAIN, OS_GetInitArenaHi(OS_ARENA_WRAM_MAIN)); - OS_SetArenaLo(OS_ARENA_WRAM_MAIN, OS_GetInitArenaLo(OS_ARENA_WRAM_MAIN)); -#else - OS_InitArenaHiAndLo(OS_ARENA_MAIN_SUBPRIV); - OS_InitArenaHiAndLo(OS_ARENA_WRAM_SUB); - OS_InitArenaHiAndLo(OS_ARENA_WRAM_SUBPRIV); -#endif -} - -#ifdef SDK_ARM9 -void OS_InitArenaEx(void) { - OS_SetArenaHi(OS_ARENA_MAINEX, OS_GetInitArenaHi(OS_ARENA_MAINEX)); - OS_SetArenaLo(OS_ARENA_MAINEX, OS_GetInitArenaLo(OS_ARENA_MAINEX)); - if (!OSi_MainArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) { - OS_SetProtectionRegion(1, HW_MAIN_MEM_MAIN, 4MB); - OS_SetProtectionRegion(2, HW_MAIN_MEM_MAIN_END, 128KB); - } -} -#else -static inline void OS_InitArenaHi(OSArenaId id) -{ - OS_SetArenaHi(id, OS_GetInitArenaHi((OSArenaId)id)); -} - -static inline void OS_InitArenaLo(OSArenaId id) -{ - OS_SetArenaLo(id, OS_GetInitArenaLo(id)); -} - -void OS_InitArenaHiAndLo(OSArenaId id) -{ - OS_InitArenaHi(id); - OS_InitArenaLo(id); -} -#endif //SDK_ARM9 - -void *OS_GetArenaHi(OSArenaId id) { - return OSi_GetArenaInfo().hi[id]; -} - -void *OS_GetArenaLo(OSArenaId id) { - return OSi_GetArenaInfo().lo[id]; -} - -void *OS_GetInitArenaHi(OSArenaId id) { - switch (id) { -#ifdef SDK_ARM9 - case OS_ARENA_MAIN: - return (void *)OSi_MAIN_ARENA_HI_DEFAULT; - case OS_ARENA_MAINEX: - if (!OSi_MainArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) { - return NULL; - } else { - return (void *)OSi_MAINEX_ARENA_HI_DEFAULT; - } - case OS_ARENA_ITCM: - return (void *)HW_ITCM_ARENA_HI_DEFAULT; - case OS_ARENA_DTCM: { - u32 irqStackLo; - u32 sysStackLo; - - irqStackLo = (u32)HW_DTCM_IRQ_STACK_END - OSi_IRQ_STACKSIZE; - - if (OSi_SYS_STACKSIZE == 0) { - sysStackLo = HW_DTCM; - if (sysStackLo < OSi_DTCM_ARENA_LO_DEFAULT) { - sysStackLo = OSi_DTCM_ARENA_LO_DEFAULT; - } - } else if (OSi_SYS_STACKSIZE < 0) { - sysStackLo = OSi_DTCM_ARENA_LO_DEFAULT - OSi_SYS_STACKSIZE; - } else { - sysStackLo = irqStackLo - OSi_SYS_STACKSIZE; - } - return (void *)sysStackLo; - } - case OS_ARENA_SHARED: - return (void *)HW_SHARED_ARENA_HI_DEFAULT; - case OS_ARENA_WRAM_MAIN: - return (void *)OSi_WRAM_MAIN_ARENA_HI_DEFAULT; -#else - case OS_ARENA_MAIN_SUBPRIV: - return (void *)HW_MAIN_MEM_SUB_END; - case OS_ARENA_WRAM_SUB: - return (void *)HW_WRAM_END; - case OS_ARENA_WRAM_SUBPRIV: - { - u32 irqStackLo = (u32)HW_PRV_WRAM_IRQ_STACK_END - OSi_IRQ_STACKSIZE; - u32 sysStackLo = (u32)HW_PRV_WRAM; - - if ((u32)OSi_WRAM_ARENA_LO_DEFAULT > (u32)HW_PRV_WRAM) { - sysStackLo = (u32)OSi_WRAM_ARENA_LO_DEFAULT; - } - - if (!OSi_SYS_STACKSIZE) { - return (void *)sysStackLo; - } else if (OSi_SYS_STACKSIZE < 0) { - sysStackLo -= OSi_SYS_STACKSIZE; - } else { - sysStackLo = irqStackLo - OSi_SYS_STACKSIZE; - } - - return (void *)sysStackLo; - } -#endif //SDK_ARM9 - default: - return NULL; - } -} - -void *OS_GetInitArenaLo(OSArenaId id) { - switch (id) { -#ifdef SDK_ARM9 - case OS_ARENA_MAIN: - return (void *)OSi_MAIN_ARENA_LO_DEFAULT; - case OS_ARENA_MAINEX: - if (!OSi_MainArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) { - return NULL; - } else { - return (void *)OSi_MAINEX_ARENA_LO_DEFAULT; - } - case OS_ARENA_ITCM: - return (void *)OSi_ITCM_ARENA_LO_DEFAULT; - case OS_ARENA_DTCM: - return (void *)OSi_DTCM_ARENA_LO_DEFAULT; - case OS_ARENA_SHARED: - return (void *)HW_SHARED_ARENA_LO_DEFAULT; - case OS_ARENA_WRAM_MAIN: - return (void *)OSi_WRAM_MAIN_ARENA_LO_DEFAULT; -#else - case OS_ARENA_MAIN_SUBPRIV: - return (void *)OSi_SUBPRIV_ARENA_LO_DEFAULT; - case OS_ARENA_WRAM_SUB: - { - u32 wramSubLo = ((u32)OSi_WRAM_ARENA_LO_DEFAULT); - if ((u32)HW_WRAM_END < (u32)wramSubLo) { - wramSubLo = (u32)HW_WRAM_END; - } - return (void *)wramSubLo; - } - case OS_ARENA_WRAM_SUBPRIV: - { - u32 privWramLo = HW_PRV_WRAM; - if ((u32)OSi_WRAM_ARENA_LO_DEFAULT > (u32)privWramLo) { - privWramLo = (u32)OSi_WRAM_ARENA_LO_DEFAULT; - } - return (void *)privWramLo; - } -#endif - default: - return NULL; - } -} - -void OS_SetArenaHi(OSArenaId id, void *ptr) { - OSi_GetArenaInfo().hi[id] = ptr; -} - -void OS_SetArenaLo(OSArenaId arena, void *ptr) { - OSi_GetArenaInfo().lo[arena] = ptr; -} - -void *OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align) { - void *ptr; - u8 *arenaLo; - - ptr = OS_GetArenaLo(id); - if (ptr == NULL) { - return NULL; - } - - arenaLo = ptr = (void *)OSi_ROUND(ptr, align); - arenaLo += size; - arenaLo = (u8 *)OSi_ROUND(arenaLo, align); - if (arenaLo > (u8 *)OS_GetArenaHi(id)) { - return NULL; - } - OS_SetArenaLo(id, arenaLo); - return ptr; -} - -void *OS_AllocFromArenaHi(OSArenaId arena, u32 size, u32 align) { - void *ptr; - u8 *arenaHi; - - arenaHi = OS_GetArenaHi(arena); - if (arenaHi == NULL) { - return NULL; - } - - arenaHi = (u8 *)OSi_TRUNC(arenaHi, align); - arenaHi -= size; - arenaHi = ptr = (void *)OSi_TRUNC(arenaHi, align); - if (arenaHi < (u8 *)OS_GetArenaLo(arena)) { - return NULL; - } - OS_SetArenaHi(arena, arenaHi); - return ptr; -} diff --git a/lib/NitroSDK/src/os/os_cache.c b/lib/NitroSDK/src/os/os_cache.c deleted file mode 100644 index 1cc54593..00000000 --- a/lib/NitroSDK/src/os/os_cache.c +++ /dev/null @@ -1,100 +0,0 @@ -#include -#include - -asm void DC_InvalidateAll(void) { - mov r0, #0 - mcr p15, 0, r0, c7, c6, 0 - bx lr -} - -asm void DC_StoreAll(void) { - mov r1, #0 -@outerLoop: - mov r0, #0 -@innerLoop: - orr r2, r1, r0 - mcr p15, 0, r2, c7, c10, 2 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, #HW_DCACHE_SIZE / 4 - blt @innerLoop - add r1, r1, #1 << HW_C7_CACHE_SET_NO_SHIFT - cmp r1, #0 - bne @outerLoop - bx lr -} - -asm void DC_FlushAll(void) { - mov r12, #0 - mov r1, #0 -@outerLoop: - mov r0, #0 -@innerLoop: - orr r2, r1, r0 - mcr p15, 0, r12, c7, c10, 4 - mcr p15, 0, r2, c7, c14, 2 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, #HW_DCACHE_SIZE / 4 - blt @innerLoop - add r1, r1, #1 << HW_C7_CACHE_SET_NO_SHIFT - cmp r1, #0 - bne @outerLoop - bx lr -} - -asm void DC_InvalidateRange(register void * startAddr, register u32 nBytes) { - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 -@loop: - mcr p15, 0, r0, c7, c6, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @loop - bx lr -} - -asm void DC_StoreRange(register void * startAddr, register u32 nBytes) { - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 -@loop: - mcr p15, 0, r0, c7, c10, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @loop - bx lr -} - -asm void DC_FlushRange(register const void * startAddr, register u32 nBytes) { - mov r12, #0 - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 -@loop: - mcr p15, 0, r12, c7, c10, 4 - mcr p15, 0, r0, c7, c14, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @loop - bx lr -} - -asm void DC_WaitWriteBufferEmpty(void) { - mov r0, #0 - mcr p15, 0, r0, c7, c10, 4 - bx lr -} - -asm void IC_InvalidateAll(void) { - mov r0, #0 - mcr p15, 0, r0, c7, c5, 0 - bx lr -} - -asm void IC_InvalidateRange(register void *startAddr, register u32 nBytes) { - add r1, r1, r0 - bic r0, r0, #HW_CACHE_LINE_SIZE - 1 -@loop: - mcr p15, 0, r0, c7, c5, 1 - add r0, r0, #HW_CACHE_LINE_SIZE - cmp r0, r1 - blt @loop - bx lr -} diff --git a/lib/NitroSDK/src/os/os_context.c b/lib/NitroSDK/src/os/os_context.c deleted file mode 100644 index 0c71371f..00000000 --- a/lib/NitroSDK/src/os/os_context.c +++ /dev/null @@ -1,96 +0,0 @@ -#include -#include - -asm void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp) { - add newpc, newpc, #4 - str newpc, [context, #OS_CONTEXT_PC_PLUS4] - -#ifdef SDK_CONTEXT_HAS_SP_SVC - str newsp, [context, #OS_CONTEXT_SP_SVC] - sub newsp, newsp, #HW_SVC_STACK_SIZE -#endif - - tst newsp, #4 - subne newsp, newsp, #4 - str newsp, [context, #OS_CONTEXT_SP] - - ands newpc, newpc, #1 - movne r1, #HW_PSR_SYS_MODE | HW_PSR_THUMB_STATE - moveq r1, #HW_PSR_SYS_MODE | HW_PSR_ARM_STATE - str r1, [context, #OS_CONTEXT_CPSR] - - // Zero-initialize the registers - mov r1, #0 - str r1, [context, #OS_CONTEXT_R0] - str r1, [context, #OS_CONTEXT_R1] - str r1, [context, #OS_CONTEXT_R2] - str r1, [context, #OS_CONTEXT_R3] - str r1, [context, #OS_CONTEXT_R4] - str r1, [context, #OS_CONTEXT_R5] - str r1, [context, #OS_CONTEXT_R6] - str r1, [context, #OS_CONTEXT_R7] - str r1, [context, #OS_CONTEXT_R8] - str r1, [context, #OS_CONTEXT_R9] - str r1, [context, #OS_CONTEXT_R10] - str r1, [context, #OS_CONTEXT_R11] - str r1, [context, #OS_CONTEXT_R12] - str r1, [context, #OS_CONTEXT_R14] - bx lr -} - -asm BOOL OS_SaveContext(register OSContext *context) { -#ifdef SDK_ARM9 - stmdb sp!, {r0, lr} - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, =CP_SaveContext - blx r1 - ldmia sp!, {r0, lr} -#endif - add r1, r0, #0 - - mrs r2, cpsr - str r2, [r1], #OS_CONTEXT_R0 - OS_CONTEXT_CPSR - -#ifdef SDK_CONTEXT_HAS_SP_SVC - mov r0, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE | HW_PSR_ARM_STATE - msr cpsr_c, r0 - str sp, [r1, #OS_CONTEXT_SP_SVC - OS_CONTEXT_R0] - msr cpsr_c, r2 -#endif - - mov r0, #1 // Return value if restoring context via OS_LoadContext - stmia r1, {r0-r14} - add r0, pc, #0x8 - str r0, [r1, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_R0] - - mov r0, #0 - bx lr -} - -asm void OS_LoadContext(register OSContext *context) { -#ifdef SDK_ARM9 - stmdb sp!, {r0, lr} - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, =CPi_RestoreContext - blx r1 - ldmia sp!, {r0, lr} -#endif - - mrs r1, cpsr - bic r1, r1, #HW_PSR_CPU_MODE_MASK - orr r1, r1, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - msr cpsr_c, r1 - - ldr r1, [r0], #OS_CONTEXT_R0 - OS_CONTEXT_CPSR - msr spsr_fsxc, r1 - -#ifdef SDK_CONTEXT_HAS_SP_SVC - ldr sp, [r0, #OS_CONTEXT_SP_SVC - OS_CONTEXT_R0] -#endif - - ldr lr, [r0, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_R0] - ldmia r0, {r0-r14} ^ - nop - - subs pc, lr, #4 -} diff --git a/lib/NitroSDK/src/os/os_emulator.c b/lib/NitroSDK/src/os/os_emulator.c deleted file mode 100644 index 9cf77dba..00000000 --- a/lib/NitroSDK/src/os/os_emulator.c +++ /dev/null @@ -1,14 +0,0 @@ -#include - -u32 OSi_ContextTypeCache = OSi_CONSOLE_NOT_DETECT; - -BOOL OS_IsRunOnEmulator(void) { - // In non-retail ROMs, this would actually detect - // the IS emulator. - return FALSE; -} - -u32 OS_GetConsoleType(void) { - OSi_ContextTypeCache = OS_CONSOLE_NITRO | OS_CONSOLE_DEV_CARD | OS_CONSOLE_SIZE_4MB; - return OSi_ContextTypeCache; -} diff --git a/lib/NitroSDK/src/os/os_entropy.c b/lib/NitroSDK/src/os/os_entropy.c deleted file mode 100644 index 186c610d..00000000 --- a/lib/NitroSDK/src/os/os_entropy.c +++ /dev/null @@ -1,17 +0,0 @@ -#include - -void OS_GetLowEntropyData(u32 buffer[8]) { - const OSSystemWork *work = OS_GetSystemWork(); - const u8 *macAddress = (u8 *)((u32)(work->nvramUserInfo) + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - buffer[0] = (GX_GetVCount() << 16) | OS_GetTickLo(); - buffer[1] = (*(u16 *)(macAddress + 4) << 16) ^ OSi_TickCounter; - buffer[2] = (OSi_TickCounter >> 32) ^ *(u32 *)macAddress ^ work->vblankCount; -#ifdef reg_G3X_GXSTAT - buffer[2] ^= reg_G3X_GXSTAT; -#endif - buffer[3] = *(u32 *)(&work->real_time_clock[0]); - buffer[4] = *(u32 *)(&work->real_time_clock[4]); - buffer[5] = ((work->mic_sampling_data) << 16) ^ work->mic_last_address; - buffer[6] = (*(u16 *)(&work->touch_panel[0]) << 16) | *(u16 *)(&work->touch_panel[2]); - buffer[7] = (work->wm_rssi_pool << 16) | (reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF); -} diff --git a/lib/NitroSDK/src/os/os_exception.c b/lib/NitroSDK/src/os/os_exception.c deleted file mode 100644 index cf4a3e3d..00000000 --- a/lib/NitroSDK/src/os/os_exception.c +++ /dev/null @@ -1,149 +0,0 @@ -#include - -typedef struct { - OSContext context; - u32 cp15; - u32 spsr; - u32 exinfo; - u32 debug[4]; -} OSiExContext; - -static OSiExContext OSi_ExContext; -static OSExceptionHandler OSi_UserExceptionHandler; -static void *OSi_UserExceptionHandlerArg; -static void *OSi_DebuggerHandler = NULL; -static u32 OSi_ExceptionHookStack[8]; - -asm void OSi_GetAndDisplayContext(void); -asm void OSi_SetExContext(void); -void OSi_DisplayExContext(void); - -void OSi_ExceptionHandler(void); - -#define HW_EXCP_VECTOR_BUF_FOR_DEBUGGER 0x027ffd9c - -void OS_InitException(void) { - if (0x02600000 <= *(u32 *)HW_EXCP_VECTOR_BUF_FOR_DEBUGGER && *(u32 *)HW_EXCP_VECTOR_BUF_FOR_DEBUGGER < 0x02800000) { - OSi_DebuggerHandler = *(void **)HW_EXCP_VECTOR_BUF_FOR_DEBUGGER; - } else { - OSi_DebuggerHandler = NULL; - } - if (!OSi_DebuggerHandler) { - *(u32 *)(HW_EXCP_VECTOR_BUF_FOR_DEBUGGER) = (u32)OSi_ExceptionHandler; - *(u32 *)(HW_EXCP_VECTOR_BUF) = (u32)OSi_ExceptionHandler; - } - OSi_UserExceptionHandler = NULL; - (void)OSi_ExceptionHookStack; // force active -} - -asm void OSi_ExceptionHandler(void) { - ldr r12, =OSi_DebuggerHandler - ldr r12, [r12] - cmp r12, #0 - movne lr, pc - bxne r12 - ldr r12, =HW_ITCM_END - stmdb r12!, {r0-r3, sp, lr} - and r0, sp, #1 - mov sp, r12 - mrs r1, cpsr - and r1, r1, #0x1f - teq r1, #0x17 - bne @skip1 - bl OSi_GetAndDisplayContext - b @ok -@skip1: - teq r1, #0x1b - bne @ok - bl OSi_GetAndDisplayContext -@ok: - ldr r12, =OSi_DebuggerHandler - ldr r12, [r12] - cmp r12, #0 -@trap: - beq @trap -@trap2: - nop - b @trap2 - // Never reached - ldmia sp!, {r0-r3, r12, lr} - mov sp, r12 - bx lr -} - -asm void OSi_GetAndDisplayContext(void) { - stmdb sp!, {r0, lr} - bl OSi_SetExContext - bl OSi_DisplayExContext - ldmia sp!, {r0, lr} - bx lr -} - -asm void OSi_SetExContext(void) { - ldr r1, =OSi_ExContext - mrs r2, cpsr - str r2, [r1, #OSiExContext.debug[1]] - str r0, [r1, #OSiExContext.exinfo] - ldr r0, [r12] - str r0, [r1, #OSiExContext.context.r[0]] - ldr r0, [r12, #4] - str r0, [r1, #OSiExContext.context.r[1]] - ldr r0, [r12, #8] - str r0, [r1, #OSiExContext.context.r[2]] - ldr r0, [r12, #12] - str r0, [r1, #OSiExContext.context.r[3]] - ldr r2, [r12, #16] - bic r2, r2, #1 - add r0, r1, #OSiExContext.context.r[4] - stmia r0, {r4-r11} - str r12, [r1, #OSiExContext.debug[0]] - ldr r0, [r2] - str r0, [r1, #OSiExContext.cp15] - ldr r3, [r2, #4] - str r3, [r1, #OSiExContext.context.cpsr] - ldr r0, [r2, #8] - str r0, [r1, #OSiExContext.context.r[12]] - ldr r0, [r2, #12] - str r0, [r1, #OSiExContext.context.pc_plus4] - mrs r0, cpsr - orr r3, r3, #0x80 - bic r3, r3, #0x20 - msr cpsr_fsxc, r3 - str sp, [r1, #OSiExContext.context.sp] - str lr, [r1, #OSiExContext.context.lr] - mrs r2, spsr - str r2, [r1, #OSiExContext.debug[3]] - msr cpsr_fsxc, r0 - bx lr -} - -void OSi_DisplayExContext(void) { - if (OSi_UserExceptionHandler) { - // asm must be on its own line - asm - { - /* *INDENT-OFF* */ - mrs r2, cpsr - mov r0, sp - ldr r1, =0x9F // why not mov? - msr cpsr_fsxc, r1 - mov r1, sp - mov sp, r0 - stmdb sp!, {r1, r2} - bl OS_EnableProtectionUnit - ldr r0, =OSi_ExContext - ldr r1, =OSi_UserExceptionHandlerArg - ldr r1, [r1] - ldr r12, =OSi_UserExceptionHandler - ldr r12, [r12] - ldr lr, =@ret - bx r12 -@ret: - bl OS_DisableProtectionUnit - ldmia sp!, {r1, r2} - mov sp, r1 - msr cpsr_fsxc, r2 - /* *INDENT-ON* */ - } - } -} diff --git a/lib/NitroSDK/src/os/os_init.c b/lib/NitroSDK/src/os/os_init.c deleted file mode 100644 index ec0717b9..00000000 --- a/lib/NitroSDK/src/os/os_init.c +++ /dev/null @@ -1,45 +0,0 @@ -#include - -asm void OSi_WaitVCount0(void) { - mov r12, #HW_REG_BASE - ldr r1, [r12, #REG_IME_OFFSET] - str r12, [r12, #REG_IME_OFFSET] -@spinWait: - ldrh r0, [r12, #REG_VCOUNT_OFFSET] - cmp r0, #0 - bne @spinWait - str r1, [r12, #REG_IME_OFFSET] - bx lr -} - -void OS_Init(void) -{ -#ifdef SDK_ARM9 - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - OS_InitException(); - MI_Init(); - OS_InitVAlarm(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - CTRDG_Init(); - CARD_Init(); - PM_Init(); - OSi_WaitVCount0(); -#else - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitIrqTable(); - OS_InitTick(); - OS_InitAlarm(); - OS_InitThread(); - OS_InitReset(); - CTRDG_Init(); -#endif -} diff --git a/lib/NitroSDK/src/os/os_interrupt.c b/lib/NitroSDK/src/os/os_interrupt.c deleted file mode 100644 index 17bf2fb9..00000000 --- a/lib/NitroSDK/src/os/os_interrupt.c +++ /dev/null @@ -1,147 +0,0 @@ -#include - -extern OSThreadQueue OSi_IrqThreadQueue; - -static u32 OSi_IrqStackWarningOffset = 0; - -void OS_InitIrqTable(void) { - OS_InitThreadQueue(&OSi_IrqThreadQueue); -#ifdef SDK_ARM7 - OSi_SetVBlankCount(0); -#endif -} - -void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function) { - int i; - OSIrqCallbackInfo * info; - for (i = 0; i < OS_IRQ_TABLE_MAX; i++) { - if (intrBit & 1) { - info = NULL; - if (REG_OS_IE_D0_SHIFT <= i && i <= REG_OS_IE_D3_SHIFT) { - info = &OSi_IrqCallbackInfo[i - REG_OS_IE_D0_SHIFT]; - } else if (REG_OS_IE_T0_SHIFT <= i && i <= REG_OS_IE_T3_SHIFT) { - info = &OSi_IrqCallbackInfo[i - REG_OS_IE_T0_SHIFT + OSi_IRQCALLBACK_NO_TIMER0]; - } -#ifdef SDK_ARM7 - else if (i == REG_OS_IE_VB_SHIFT) { - info = &OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK]; - } -#endif - else { - OS_IRQTable[i] = function; - } - if (info) { - info->func = (void (*)(void*))function; - info->arg = 0; - info->enable = TRUE; - } - } - intrBit >>= 1; - } -} - -OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit) { - int i; - OSIrqFunction *funcPtr = &OS_IRQTable[0]; - for (i = 0; i < OS_IRQ_TABLE_MAX; i++) { - if (intrBit & 1) { - if (REG_OS_IE_D0_SHIFT <= i && i <= REG_OS_IE_D3_SHIFT) { - return (OSIrqFunction)OSi_IrqCallbackInfo[i - REG_OS_IE_D0_SHIFT].func; - } else if (REG_OS_IE_T0_SHIFT <= i && i <= REG_OS_IE_T3_SHIFT) { - return (OSIrqFunction)OSi_IrqCallbackInfo[i - REG_OS_IE_T0_SHIFT + OSi_IRQCALLBACK_NO_TIMER0].func; - } -#ifdef SDK_ARM7 - else if (i == REG_OS_IE_VB_SHIFT) { - return (OSIrqFunction)OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK].func; - } -#endif - return *funcPtr; - } - intrBit >>= 1; - funcPtr++; - } - return NULL; -} - -void OSi_EnterDmaCallback(u32 dmaNo, void (*callback)(void * arg), void * arg) { - OSIrqMask imask = (1UL << (dmaNo + REG_OS_IE_D0_SHIFT)); - OSi_IrqCallbackInfo[dmaNo].func = callback; - OSi_IrqCallbackInfo[dmaNo].arg = arg; - OSi_IrqCallbackInfo[dmaNo].enable = OS_EnableIrqMask(imask) & imask; -} - -void OSi_EnterTimerCallback(u32 timerNo, void (*callback)(void * arg), void * arg) { - OSIrqMask imask = (1UL << (timerNo + REG_OS_IE_T0_SHIFT)); - OSi_IrqCallbackInfo[timerNo + OSi_IRQCALLBACK_NO_TIMER0].func = callback; - OSi_IrqCallbackInfo[timerNo + OSi_IRQCALLBACK_NO_TIMER0].arg = arg; - OS_EnableIrqMask(imask); - OSi_IrqCallbackInfo[timerNo + OSi_IRQCALLBACK_NO_TIMER0].enable = TRUE; -} - -OSIrqMask OS_SetIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = newMask; - OS_RestoreIrq(ime); - return prep; -} - -#ifdef SDK_ARM7 -BOOL OS_DisableIrq(void) { - BOOL ime = reg_OS_IME; - reg_OS_IME = 0; - return ime; -} -#endif - -OSIrqMask OS_EnableIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = prep | newMask; - OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_DisableIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = prep & ~newMask; - OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_ResetRequestIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IF; - reg_OS_IF = newMask; - OS_RestoreIrq(ime); - return prep; -} - -extern void SDK_IRQ_STACKSIZE(void); - -//---- defs for irq stack -#ifdef SDK_ARM9 -#define OSi_IRQ_STACK_TOP (HW_DTCM_SVC_STACK - ((s32)SDK_IRQ_STACKSIZE)) -#define OSi_IRQ_STACK_BOTTOM HW_DTCM_SVC_STACK -#else -#define OSi_IRQ_STACK_TOP (HW_PRV_WRAM_IRQ_STACK_END - ((s32)SDK_IRQ_STACKSIZE)) -#define OSi_IRQ_STACK_BOTTOM HW_PRV_WRAM_IRQ_STACK_END -#endif - -//---- Stack CheckNumber -#ifdef SDK_ARM9 -#define OSi_IRQ_STACK_CHECKNUM_BOTTOM 0xfddb597dUL -#define OSi_IRQ_STACK_CHECKNUM_TOP 0x7bf9dd5bUL -#define OSi_IRQ_STACK_CHECKNUM_WARN 0x597dfbd9UL -#else -#define OSi_IRQ_STACK_CHECKNUM_BOTTOM 0xd73bfdf7UL -#define OSi_IRQ_STACK_CHECKNUM_TOP 0xfbdd37bbUL -#define OSi_IRQ_STACK_CHECKNUM_WARN 0xbdf7db3dUL -#endif - - -void OS_SetIrqStackChecker(void) { - *(u32 *)(OSi_IRQ_STACK_BOTTOM - sizeof(u32)) = OSi_IRQ_STACK_CHECKNUM_BOTTOM; - *(u32 *)(OSi_IRQ_STACK_TOP) = OSi_IRQ_STACK_CHECKNUM_TOP; -} diff --git a/lib/NitroSDK/src/os/os_irqHandler.c b/lib/NitroSDK/src/os/os_irqHandler.c deleted file mode 100644 index 106ff968..00000000 --- a/lib/NitroSDK/src/os/os_irqHandler.c +++ /dev/null @@ -1,171 +0,0 @@ -#include -#include -#include -#include -#include -#include - -extern OSThreadQueue OSi_IrqThreadQueue; -asm void OS_IrqHandler_ThreadSwitch(void); - -void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags) { - OSIntrMode enabled = OS_DisableInterrupts(); - if (clear) { - OS_ClearIrqCheckFlag(irqFlags); - } - OS_RestoreInterrupts(enabled); - while (!(OS_GetIrqCheckFlag() & irqFlags)) { - OS_SleepThread(&OSi_IrqThreadQueue); - } -} - -#ifdef SDK_ARM9 -#include -#endif - -OSThreadQueue OSi_IrqThreadQueue = {NULL, NULL}; - -#ifdef SDK_ARM9 -#include -#endif - -#ifdef SDK_ARM9 -#include -#endif //SDK_ARM9 - -asm void OS_IrqHandler(register OSIrqMask irq) { - stmdb sp!, {lr} - mov r12, #HW_REG_BASE - add r12, r12, #REG_IE_OFFSET - // Are intr disabled? - ldr r1, [r12, #REG_IME_OFFSET - REG_IE_OFFSET] - cmp r1, #0 - ldmeqia sp!, {pc} - // Is intr requested? - ldmia r12, {r1, r2} - ands r1, r1, r2 - ldmeqia sp!, {pc} - // Least significant intr flag takes highest priority -#ifdef SDK_ARM9 - mov r3, #1 << 31 -@clzLoop: - clz r0, r1 - bics r1, r1, r3, lsr r0 - bne @clzLoop - mov r1, r3, lsr r0 - str r1, [r12, #REG_IF_OFFSET - REG_IE_OFFSET] - rsbs r0, r0, #31 -#else - mov r3, #1 - mov r0, #0 -@clzLoop: - ands r2, r1, r3, lsl r0 - addeq r0, r0, #1 - beq @clzLoop - str r2, [r12, #REG_IF_OFFSET - REG_IE_OFFSET] -#endif - ldr r1, =OS_IRQTable - ldr r0, [r1, r0, lsl #2] - ldr lr, =OS_IrqHandler_ThreadSwitch - bx r0 -} - -asm void OS_IrqHandler_ThreadSwitch(void) { - ldr r12, =OSi_IrqThreadQueue - mov r3, #0 - ldr r12, [r12, #OSThreadQueue.head] - mov r2, #1 - cmp r12, #0 - beq @noThreadsToWake -@wakeThreadsLoop: - str r2, [r12, #OSThread.state] - str r3, [r12, #OSThread.queue] - str r3, [r12, #OSThread.link.prev] - ldr r0, [r12, #OSThread.link.next] - str r3, [r12, #OSThread.link.next] - mov r12, r0 - cmp r12, #0 - bne @wakeThreadsLoop - ldr r12, =OSi_IrqThreadQueue - str r3, [r12, #OSThreadQueue.head] - str r3, [r12, #OSThreadQueue.tail] - ldr r12, =OSi_ThreadInfo - mov r1, #1 - strh r1, [r12, #OSThreadInfo.isNeedRescheduling] -@noThreadsToWake: - ldr r12, =OSi_ThreadInfo - ldrh r1, [r12, #OSThreadInfo.isNeedRescheduling] - cmp r1, #0 - ldreq pc, [sp], #4 - mov r1, #0 - strh r1, [r12, #OSThreadInfo.isNeedRescheduling] - mov r3, #HW_PSR_DISABLE_IRQ_FIQ | HW_PSR_IRQ_MODE - msr cpsr_c, r3 - add r2, r12, #OSThreadInfo.list - ldr r1, [r2] -@listLoop: - cmp r1, #0 - ldrneh r0, [r1, #OSThread.state] - cmpne r0, #OS_THREAD_STATE_READY - ldrne r1, [r1, #OSThread.next] - bne @listLoop - cmp r1, #0 - bne @checkNext -@enableFiqAndBail: - mov r3, #HW_PSR_DISABLE_IRQ | HW_PSR_IRQ_MODE - msr cpsr_c, r3 - ldr pc, [sp], #4 -@checkNext: - ldr r0, [r12, #OSThreadInfo.current] - cmp r1, r0 - beq @enableFiqAndBail - ldr r3, [r12, #OSThreadInfo.switchCallback] - cmp r3, #0 - beq @noSwitchCB - stmdb sp!, {r0, r1, r12} - mov lr, pc - bx r3 - ldmia sp!, {r0, r1, r12} -@noSwitchCB: - str r1, [r12, #OSThreadInfo.current] - mrs r2, spsr - str r2, [r0, #OSThread.context + OS_CONTEXT_CPSR]! -#ifdef SDK_ARM9 - stmdb sp!, {r0, r1} - add r0, r0, #OSThread.context - add r0, r0, #OSContext.cp_context - ldr r1, =CP_SaveContext - blx r1 - ldmia sp!, {r0, r1} -#endif - ldmib sp!, {r2, r3} - stmib r0!, {r2, r3} - ldmib sp!, {r2, r3, r12, lr} - stmib r0!, {r2-r14} ^ - stmib r0!, {lr} -#ifdef SDK_CONTEXT_HAS_SP_SVC - mov r3, #HW_PSR_DISABLE_IRQ_FIQ | HW_PSR_SVC_MODE - msr cpsr_c, r3 - stmib r0!, {sp} -#endif -#ifdef SDK_ARM9 - stmdb sp!, {r1} - add r0, r1, #OSThread.context - add r0, r0, #OSContext.cp_context - ldr r1, =CPi_RestoreContext - blx r1 - ldmia sp!, {r1} -#endif -#ifdef SDK_CONTEXT_HAS_SP_SVC - ldr sp, [r1, #OSThread.context + OSContext.sp_svc] - mov r3, #HW_PSR_DISABLE_IRQ_FIQ | HW_PSR_IRQ_MODE - msr cpsr_c, r3 -#endif - ldr r2, [r1, #OSThread.context + OSContext.cpsr]! - msr spsr_fc, r2 - ldr lr, [r1, #OSThread.context + OSContext.pc_plus4] - ldmib r1, {r0-r14} ^ - nop - stmda sp!, {r0-r3, r12, lr} - ldmia sp!, {pc} -} diff --git a/lib/NitroSDK/src/os/os_irqTable.c b/lib/NitroSDK/src/os/os_irqTable.c deleted file mode 100644 index 647924dc..00000000 --- a/lib/NitroSDK/src/os/os_irqTable.c +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include - -OSIrqCallbackInfo OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NUM]; - -u16 OSi_IrqCallbackInfoIndex[] = { - REG_OS_IE_D0_SHIFT, - REG_OS_IE_D1_SHIFT, - REG_OS_IE_D2_SHIFT, - REG_OS_IE_D3_SHIFT, - REG_OS_IE_T0_SHIFT, - REG_OS_IE_T1_SHIFT, - REG_OS_IE_T2_SHIFT, - REG_OS_IE_T3_SHIFT, -#ifdef SDK_ARM7 - REG_OS_IE_VB_SHIFT, -#endif -}; - -#ifdef SDK_ARM9 -#include -#endif -OSIrqFunction OS_IRQTable[] = { -#ifdef SDK_ARM7 - OSi_IrqVBlank, -#else - OS_IrqDummy, -#endif - OS_IrqDummy, - OS_IrqDummy, - OSi_IrqTimer0, - OSi_IrqTimer1, - OSi_IrqTimer2, - OSi_IrqTimer3, - OS_IrqDummy, - OSi_IrqDma0, - OSi_IrqDma1, - OSi_IrqDma2, - OSi_IrqDma3, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, -#ifdef SDK_ARM7 - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, -#endif -}; - -#ifdef SDK_ARM9 -#include -#endif - -void OS_IrqDummy(void) {} - -void OSi_IrqCallback(s32 index) { - OSIrqMask imask = (1UL << OSi_IrqCallbackInfoIndex[index]); - void (*callback)(void *) = OSi_IrqCallbackInfo[index].func; - OSi_IrqCallbackInfo[index].func = NULL; - if (callback) callback(OSi_IrqCallbackInfo[index].arg); - OS_SetIrqCheckFlag(imask); - if (!OSi_IrqCallbackInfo[index].enable) - OS_DisableIrqMask(imask); -} - -void OSi_IrqDma0(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA0); -} - -void OSi_IrqDma1(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA1); -} - -void OSi_IrqDma2(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA2); -} - -void OSi_IrqDma3(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA3); -} - -void OSi_IrqTimer0(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER0); -} - -void OSi_IrqTimer1(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER1); -} - -void OSi_IrqTimer2(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER2); -} - -void OSi_IrqTimer3(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER3); -} - -#ifdef SDK_ARM7 -void OSi_IrqVBlank(void) { - void (*callback)(void) = (void(*)(void))OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK].func; - (*(u32 *)HW_VBLANK_COUNT_BUF)++; - if (callback) { - callback(); - } - OS_SetIrqCheckFlag(1UL << REG_OS_IE_VB_SHIFT); -} -#endif //SDK_ARM7 diff --git a/lib/NitroSDK/src/os/os_message.c b/lib/NitroSDK/src/os/os_message.c deleted file mode 100644 index ee86a3bb..00000000 --- a/lib/NitroSDK/src/os/os_message.c +++ /dev/null @@ -1,92 +0,0 @@ -#include - -void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount) { - OS_InitThreadQueue(&mq->queueSend); - OS_InitThreadQueue(&mq->queueReceive); - mq->msgArray = msgArray; - mq->msgCount = msgCount; - mq->firstIndex = 0; - mq->usedCount = 0; -} - -BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) { - OSIntrMode enabled; - s32 lastIndex; - - enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) { - if (!(flags & OS_MESSAGE_BLOCK)) { - OS_RestoreInterrupts(enabled); - return FALSE; - } - OS_SleepThread(&mq->queueSend); - } - lastIndex = (mq->firstIndex + mq->usedCount) % mq->msgCount; - mq->msgArray[lastIndex] = msg; - mq->usedCount++; - OS_WakeupThread(&mq->queueReceive); - OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) { - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) { - if (!(flags & OS_MESSAGE_BLOCK)) { - OS_RestoreInterrupts(enabled); - return FALSE; - } - OS_SleepThread(&mq->queueReceive); - } - if (msg != NULL) { - *msg = mq->msgArray[mq->firstIndex]; - } - mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; - mq->usedCount--; - OS_WakeupThread(&mq->queueSend); - OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_JamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) { - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) { - if (!(flags & OS_MESSAGE_BLOCK)) { - OS_RestoreInterrupts(enabled); - return FALSE; - } - OS_SleepThread(&mq->queueSend); - } - mq->firstIndex = (mq->firstIndex + mq->msgCount - 1) % mq->msgCount; - mq->msgArray[mq->firstIndex] = msg; - mq->usedCount++; - OS_WakeupThread(&mq->queueReceive); - OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) { - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) { - if (!(flags & OS_MESSAGE_BLOCK)) { - OS_RestoreInterrupts(enabled); - return FALSE; - } - OS_SleepThread(&mq->queueReceive); - } - if (msg != NULL) { - *msg = mq->msgArray[mq->firstIndex]; - } - OS_RestoreInterrupts(enabled); - return TRUE; -} diff --git a/lib/NitroSDK/src/os/os_mutex.c b/lib/NitroSDK/src/os/os_mutex.c deleted file mode 100644 index 03e2cef8..00000000 --- a/lib/NitroSDK/src/os/os_mutex.c +++ /dev/null @@ -1,113 +0,0 @@ -#include - -void OSi_EnqueueTail(OSThread *thread, OSMutex *mtx); -void OSi_DequeueItem(OSThread *thread, OSMutex *mtx); - -void OS_InitMutex(OSMutex *mtx) { - OS_InitThreadQueue(&mtx->queue); - mtx->thread = NULL; - mtx->count = 0; -} - -void OS_LockMutex(OSMutex *mtx) { - OSIntrMode enable; - OSThread *currentThread; - - enable = OS_DisableInterrupts(); - currentThread = OS_GetCurrentThread(); - while (1) { - if (mtx->thread == NULL) { - mtx->thread = currentThread; - mtx->count++; - OSi_EnqueueTail(currentThread, mtx); - break; - } else if (mtx->thread == currentThread) { - mtx->count++; - break; - } else { - currentThread->mutex = mtx; - OS_SleepThread(&mtx->queue); - currentThread->mutex = NULL; - } - } - OS_RestoreInterrupts(enable); -} - -void OS_UnlockMutex(OSMutex *mtx) { - OSIntrMode enable; - OSThread *currentThread; - - enable = OS_DisableInterrupts(); - currentThread = OS_GetCurrentThread(); - if (mtx->thread == currentThread && --mtx->count == 0) { - OSi_DequeueItem(currentThread, mtx); - mtx->thread = NULL; - OS_WakeupThread(&mtx->queue); - } - OS_RestoreInterrupts(enable); -} - -void OSi_UnlockAllMutex(OSThread *thread) { - while (thread->mutexQueue.head) { - OSMutex *mtx = OSi_RemoveMutexLinkFromQueue(&thread->mutexQueue); - mtx->count = 0; - mtx->thread = NULL; - OS_WakeupThread(&mtx->queue); - } -} - -BOOL OS_TryLockMutex(OSMutex *mtx) { - OSIntrMode enable; - OSThread *currentThread; - BOOL success; - - enable = OS_DisableInterrupts(); - currentThread = OS_GetCurrentThread(); - if (mtx->thread == NULL) { - mtx->thread = currentThread; - mtx->count++; - OSi_EnqueueTail(currentThread, mtx); - success = TRUE; - } else if (mtx->thread == currentThread) { - mtx->count++; - success = TRUE; - } else { - success = FALSE; - } - OS_RestoreInterrupts(enable); - return success; -} - -void OSi_EnqueueTail(OSThread *thread, OSMutex *mtx) { - OSMutex *prev; - - prev = thread->mutexQueue.tail; - if (prev == NULL) { - thread->mutexQueue.head = mtx; - } else { - prev->link.next = mtx; - } - mtx->link.prev = prev; - mtx->link.next = NULL; - thread->mutexQueue.tail = mtx; -} - -void OSi_DequeueItem(OSThread *thread, OSMutex *mtx) { - OSMutex *next; - OSMutex *prev; - - next = mtx->link.next; - prev = mtx->link.prev; - - if (next == NULL) { - thread->mutexQueue.tail = prev; - } else { - next->link.prev = prev; - } - - if (prev == NULL) { - thread->mutexQueue.head = next; - } else { - prev->link.next = next; - } -} diff --git a/lib/NitroSDK/src/os/os_ownerInfo.c b/lib/NitroSDK/src/os/os_ownerInfo.c deleted file mode 100644 index 204be73b..00000000 --- a/lib/NitroSDK/src/os/os_ownerInfo.c +++ /dev/null @@ -1,24 +0,0 @@ -#include - -void OS_GetMacAddress(u8 *macAddr) { - MI_CpuCopy8(OS_GetSystemWork()->nvramUserInfo + ((sizeof(NVRAMConfig) + 3) & ~3), macAddr, 6); -} - -void OS_GetOwnerInfo(OSOwnerInfo *info) { - NVRAMConfig *src = (NVRAMConfig *)OS_GetSystemWork()->nvramUserInfo; - info->language = src->ncd.option.language; - info->favoriteColor = src->ncd.owner.favouriteColour; - info->birthday.month = src->ncd.owner.birthday.month; - info->birthday.day = src->ncd.owner.birthday.day; - info->nickNameLength = src->ncd.owner.nickname.length; - info->commentLength = src->ncd.owner.comment.length; - MI_CpuCopy16(src->ncd.owner.nickname.str, info->nickName, 20); - MI_CpuCopy16(src->ncd.owner.comment.str, info->comment, 52); - info->nickName[10] = 0; - info->comment[26] = 0; -} - -s64 OS_GetOwnerRtcOffset(void) { - NVRAMConfig *cfg = (NVRAMConfig *)OS_GetSystemWork()->nvramUserInfo; - return cfg->ncd.option.rtcOffset; -} diff --git a/lib/NitroSDK/src/os/os_printf.c b/lib/NitroSDK/src/os/os_printf.c deleted file mode 100644 index 64966b21..00000000 --- a/lib/NitroSDK/src/os/os_printf.c +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -int OS_SPrintf(char * dest, const char * format, ...) { - int ret; - va_list va; - va_start(va, format); - ret = OS_VSPrintf(dest, format, va); - va_end(va); - return ret; -} - -int OS_VSPrintf(char * dest, const char * format, va_list va) { - return OS_VSNPrintf(dest, 0x7FFFFFFF, format, va); -} - -int OS_SNPrintf(char * dest, u32 len, const char * format, ...) { - int ret; - va_list va; - va_start(va, format); - ret = OS_VSNPrintf(dest, len, format, va); - va_end(va); - return ret; -} - -int OS_VSNPrintf(char * dest, u32 len, const char * format, va_list va) { - return STD_TVSNPrintf(dest, len, format, va); -} diff --git a/lib/NitroSDK/src/os/os_protectionRegion.c b/lib/NitroSDK/src/os/os_protectionRegion.c deleted file mode 100644 index d66f7984..00000000 --- a/lib/NitroSDK/src/os/os_protectionRegion.c +++ /dev/null @@ -1,19 +0,0 @@ -#include - -asm void OS_SetDPermissionsForProtectionRegion(register u32 setMask, register u32 flags) { - mrc p15, 0, r2, c5, c0, 2 - bic r2, r2, r0 - orr r2, r2, r1 - mcr p15, 0, r2, c5, c0, 2 - bx lr -} - -asm void OS_SetProtectionRegion1(u32 param) { - mcr p15, 0, r0, c6, c1, 0 - bx lr -} - -asm void OS_SetProtectionRegion2(u32 param) { - mcr p15, 0, r0, c6, c2, 0 - bx lr -} diff --git a/lib/NitroSDK/src/os/os_protectionUnit.c b/lib/NitroSDK/src/os/os_protectionUnit.c deleted file mode 100644 index ed5f154f..00000000 --- a/lib/NitroSDK/src/os/os_protectionUnit.c +++ /dev/null @@ -1,15 +0,0 @@ -#include - -asm void OS_EnableProtectionUnit(void) { - mrc p15, 0, r0, c1, c0, 0 - orr r0, r0, #1 - mcr p15, 0, r0, c1, c0, 0 - bx lr -} - -asm void OS_DisableProtectionUnit(void) { - mrc p15, 0, r0, c1, c0, 0 - bic r0, r0, #1 - mcr p15, 0, r0, c1, c0, 0 - bx lr -} diff --git a/lib/NitroSDK/src/os/os_reset.c b/lib/NitroSDK/src/os/os_reset.c deleted file mode 100644 index a1de6973..00000000 --- a/lib/NitroSDK/src/os/os_reset.c +++ /dev/null @@ -1,293 +0,0 @@ -#include - -extern void SDK_IRQ_STACKSIZE(void); - -#define OSi_HW_DTCM SDK_AUTOLOAD_DTCM_START -#define RESET_HW_DTCM_IRQ_STACK_END SDK_AUTOLOAD_DTCM_START + 0x00003fc0 - HW_SVC_STACK_SIZE - -#ifdef SDK_ARM9 -static vu16 OSi_IsResetOccurred = FALSE; -static u16 OSi_IsInitReset = FALSE; -#else -static u16 OSi_IsInitReset = FALSE; -static vu16 OSi_IsResetOccurred = FALSE; -#endif - -u32 OSi_CpuClear32(u32 value, void *ptr, u32 size); -void OSi_ReadCardRom32(u32 src, void *dst, int len); - -void OSi_DoResetSystem(void); -void OSi_ReloadRomData(void); -void OSi_DoBoot(void); - -void OS_InitReset(void) { - if (OSi_IsInitReset) { - return; - } - OSi_IsInitReset = TRUE; -#ifdef SDK_ARM9 - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_OS, PXI_PROC_ARM7)) {} -#endif //SDK_ARM9 - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_OS, OSi_CommonCallback); -} - -BOOL OS_IsResetOccurred(void) { - return OSi_IsResetOccurred; -} - -void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused(tag) -#pragma unused(err) - u16 command; - u16 commandArg; - - command = (u16)((data & OS_PXI_COMMAND_MASK) >> OS_PXI_COMMAND_SHIFT); - commandArg = (u16)((data & OS_PXI_DATA_MASK) >> OS_PXI_DATA_SHIFT); - if (command == OS_PXI_COMMAND_RESET) { - OSi_IsResetOccurred = TRUE; - } else { - OS_Panic(""); - } -} - -void OSi_SendToPxi(u16 data) { - u32 pxi_send_data; - - pxi_send_data = (u32)(data) << OS_PXI_COMMAND_SHIFT; - while (PXI_SendWordByFifo(PXI_FIFO_TAG_OS, pxi_send_data, FALSE) != PXI_FIFO_SUCCESS) {} -} - -#ifdef SDK_ARM9 -void OS_ResetSystem(u32 parameter) { - u16 lockId; - - if (MB_IsMultiBootChild()) { - OS_Panic(""); - } - - lockId = OS_GetLockID(); - CARD_LockRom(lockId); - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - OS_SetIrqMask(OS_IE_SPFIFO_RECV); - OS_ResetRequestIrqMask(~OS_IE_SPFIFO_RECV); - *(vu32 *)HW_RESET_PARAMETER_BUF = parameter; - OSi_SendToPxi(OS_PXI_COMMAND_RESET); - asm { - ldr r0, =RESET_HW_DTCM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r0, r0, r1 - mov sp, r0 - bl OSi_DoResetSystem // noreturn - } -} - -#include -void OSi_DoResetSystem(void) { - while (!OSi_IsResetOccurred) {} - reg_OS_IME = 0; - OSi_ReloadRomData(); - OSi_DoBoot(); // noreturn -} - -asm void OSi_DoBoot(void) { - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - ldr r1, =OSi_HW_DTCM - add r1, r1, #0x3FC0 - add r1, r1, #HW_DTCM_SYSRV_OFS_INTR_VECTOR - mov r0, #0 - str r0, [r1] - ldr r1, =REG_SUBINTF_ADDR - @waitSubIntf: - ldrh r0, [r1] - and r0, r0, #0x000F - cmp r0, #0x0001 - bne @waitSubIntf - mov r0, #0x0100 - strh r0, [r1] - mov r0, #0 - ldr r3, =HW_EXCP_VECTOR_MAIN - ldr r4, [r3] - ldr r1, =HW_BIOS_EXCP_STACK_MAIN - mov r2, #0x80 - bl OSi_CpuClear32 - str r4, [r3] - ldr r1, =HW_PXI_SIGNAL_PARAM_ARM9 - mov r2, #0x18 - bl OSi_CpuClear32 - ldr r1, =HW_WM_RSSI_POOL - strh r0, [r1] - ldr r1, =HW_COMPONENT_PARAM - mov r2, #0x64 - bl OSi_CpuClear32 - ldr r1, =REG_SUBINTF_ADDR - @waitSubIntf2: - ldrh r0, [r1] - and r0, r0, #0x000F - cmp r0, #0x0001 - beq @waitSubIntf2 - mov r0, #0x0000 - strh r0, [r1] - ldr r3, =HW_ROM_HEADER_BUF - ldr r12, [r3, #0x24] // ARM9 entry - mov lr, r12 - ldr r11, =HW_PXI_SIGNAL_PARAM_ARM9 - ldmia r11, {r0-r10} - mov r11, #0 - bx r12 -} - -asm u32 OSi_CpuClear32(register u32 value, register void * startAddr, register u32 size) { - add r12, r1, r2 - @loop: - cmp r1, r12 - stmltia r1!, {r0} - blt @loop - bx lr -} - -void OSi_ReloadRomData(void) { - u32 p = (u32)HW_ROM_HEADER_BUF; - const u32 rom_base = *(u32 *)HW_ROM_BASE_OFFSET_BUF; - if (rom_base >= 0x8000) { - OSi_ReadCardRom32(rom_base, (void *)p, 0x160); - } - u32 src_arm9 = *(u32 *)(p + 0x20); - u32 dst_arm9 = *(u32 *)(p + 0x28); - u32 len_arm9 = *(u32 *)(p + 0x2C); - u32 src_arm7 = *(u32 *)(p + 0x30); - u32 dst_arm7 = *(u32 *)(p + 0x38); - u32 len_arm7 = *(u32 *)(p + 0x3C); - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - DC_StoreAll(); - DC_InvalidateAll(); - OS_RestoreInterrupts(bak_cpsr); - IC_InvalidateAll(); - DC_WaitWriteBufferEmpty(); - src_arm9 += rom_base; - src_arm7 += rom_base; - if (src_arm9 < 0x8000) { - u32 diff = 0x8000 - src_arm9; - src_arm9 = 0x8000; - dst_arm9 += diff; - len_arm9 -= diff; - } - OSi_ReadCardRom32(src_arm9, (void *)dst_arm9, len_arm9); - OSi_ReadCardRom32(src_arm7, (void *)dst_arm7, len_arm7); -} - -#undef reg_CARD_MASTERCNT -#undef reg_CARD_CMD -#undef reg_CARD_CNT -#undef reg_CARD_DATA - -void OSi_ReadCardRom32(u32 src, void *dst, int len) { - vu8 *reg_CARD_MASTERCNT = (vu8 *)(HW_REG_BASE + 0x1a1); - vu8 *reg_CARD_CMD = (vu8 *)(HW_REG_BASE + 0x1a8); - vu32 *reg_CARD_CNT = (vu32 *)(HW_REG_BASE + 0x1a4); - vu32 *reg_CARD_DATA = (vu32 *)(HW_REG_BASE + 0x100010); - vu32 *hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60); - - enum { - CARD_MASTER_SELECT_ROM = 0x00, - CARD_MASTER_ENABLE = 0x80, - CARD_CMD_READ_PAGE = 0xb7, - CARD_CTRL_CMD_MASK = 0x07000000, - CARD_CTRL_CMD_PAGE = 0x01000000, - CARD_CTRL_READ = 0x00000000, - CARD_CTRL_RESET_HI = 0x20000000, - CARD_CTRL_START = 0x80000000, - CARD_CTRL_READY = 0x00800000, - CARD_ENUM_END - }; - - const u32 ctrl_start = ((*hdr_GAME_BUF & ~CARD_CTRL_CMD_MASK) | (CARD_CTRL_CMD_PAGE | CARD_CTRL_READ | CARD_CTRL_START | CARD_CTRL_RESET_HI)); - int pos = -(src & 0x1FF); - while ((*reg_CARD_CNT & CARD_CTRL_START) != 0) {} - *reg_CARD_MASTERCNT = (u32)(CARD_MASTER_SELECT_ROM | CARD_MASTER_ENABLE); - for (src += pos; pos < len; src += 512) - { - //---- setting for command of one page reading - reg_CARD_CMD[0] = CARD_CMD_READ_PAGE; - reg_CARD_CMD[1] = src >> 24; - reg_CARD_CMD[2] = src >> 16; - reg_CARD_CMD[3] = src >> 8; - reg_CARD_CMD[4] = src >> 0; - reg_CARD_CMD[5] = 0; - reg_CARD_CMD[6] = 0; - reg_CARD_CMD[7] = 0; - *reg_CARD_CNT = ctrl_start; - for (;;) - { - u32 ctrl = *reg_CARD_CNT; - if ((ctrl & CARD_CTRL_READY) != 0) { - const u32 data = *reg_CARD_DATA; - if ((pos >= 0) && (pos < len)) { - *(u32 *)(dst + pos) = data; - } - pos += sizeof(u32); - } - if (!(ctrl & CARD_CTRL_START)) { - break; - } - } - } -} - -#include - -#else -void OS_ResetSystem(void) { - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - OS_SetIrqMask(OS_IE_FIFO_RECV); - OS_ResetRequestIrqMask(0xFFFFFFFF); - SND_Shutdown(); - OSi_SendToPxi(OS_PXI_COMMAND_RESET); - OSi_DoResetSystem(); -} - -void OSi_DoResetSystem(void) { - reg_OS_IME = 0; - OSi_DoBoot(); -} - -#include -asm void OSi_DoBoot(void) { - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - ldr r1, =HW_INTR_VECTOR_BUF - mov r0, #0 - str r0, [r1] - ldr r1, =REG_MAINPINTF_ADDR - mov r0, #0x100 - strh r0, [r1] -@waitMainpIntf: - ldrh r0, [r1] - and r0, r0, #0x000F - cmp r0, #0x0001 - bne @waitMainpIntf - ldr r1, =REG_MAINPINTF_ADDR - mov r0, #0 - strh r0, [r1] -@waitMainpIntf2: - ldrh r0, [r1] - and r0, r0, #0x000F - beq @waitMainpIntf2 - ldr r3, =HW_ROM_HEADER_BUF - ldr r12, [r3, #0x34] // ARM7 entry - mov lr, r12 - mov r0, #0 - mov r1, #0 - mov r2, #0 - mov r3, #0 - bx r12 -} -#include -#endif diff --git a/lib/NitroSDK/src/os/os_spinLock.c b/lib/NitroSDK/src/os/os_spinLock.c deleted file mode 100644 index 593113ae..00000000 --- a/lib/NitroSDK/src/os/os_spinLock.c +++ /dev/null @@ -1,262 +0,0 @@ -#include - -#define OSi_LOCKID_INITIAL_FLAG_0 0xffffffff -#define OSi_LOCKID_INITIAL_FLAG_1 0xffff0000 - -#ifdef SDK_ARM9 -#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_MAIN -#define OSi_ANYP_LOCK_ID_START OS_MAINP_LOCK_ID_START -#else -#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_SUB -#define OSi_ANYP_LOCK_ID_START OS_SUBP_LOCK_ID_START -#endif - -void OSi_AllocateCartridgeBus(void); -void OSi_FreeCartridgeBus(void); -void OSi_AllocateCardBus(void); -void OSi_FreeCardBus(void); - -// FIXME: This looks like it's meant to be a linker-inserted veneer, but I can't get it to insert properly yet -#ifdef SDK_ARM9 -static inline void OSi_WaitByLoop(void) { - SVC_WaitByLoop(0x1000 / 4); -} -#else -void VENEER_SVC_WaitByLoop(s32 count); -static inline void OSi_WaitByLoop(void) { - VENEER_SVC_WaitByLoop(0x1000 / 4); -} -#endif - -void OS_InitLock(void) { - static BOOL isInitialized = FALSE; - OSLockWord *lockp; - - if (isInitialized) - return; - - isInitialized = TRUE; - lockp = (OSLockWord *)HW_INIT_LOCK_BUF; - -#ifdef SDK_ARM9 - lockp->lockFlag = 0; - OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); - while (lockp->extension != 0) { - OSi_WaitByLoop(); - } - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; - MI_CpuClear32((void *)HW_SHARED_LOCK_BUF, HW_CTRDG_LOCK_BUF - HW_SHARED_LOCK_BUF); - MIi_SetCardProcessor(MI_PROCESSOR_ARM7); - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); - OS_UnlockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); - OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL); -#else - lockp->extension = 0; - while (lockp->ownerID != OS_MAINP_SYSTEM_LOCK_ID) { - OSi_WaitByLoop(); - } - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; - lockp->extension = OS_SUBP_SYSTEM_LOCK_ID; -#endif -} - -#ifdef SDK_ARM7 -asm void VENEER_SVC_WaitByLoop(register s32 count) { - ldr ip, =SVC_WaitByLoop - bx ip -} -#endif - -#ifdef SDK_ARM7 -static inline -#endif //SDK_ARM7 -s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq) { - s32 lastLockFlag; - - while ((lastLockFlag = OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, disableFiq)) > 0) { - OSi_WaitByLoop(); - } - return lastLockFlag; -} - -s32 OS_LockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) { - return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq) { - if (lockID != lockp->ownerID) { - return -2; - } - OSIntrMode ime = disableFiq ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); - lockp->ownerID = 0; - if (ctrlFuncp != NULL) { - ctrlFuncp(); - } - lockp->lockFlag = 0; - if (disableFiq) { - OS_RestoreInterrupts_IrqAndFiq(ime); - } else { - OS_RestoreInterrupts(ime); - } - return 0; -} - -s32 OS_UnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) { - return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq) { - s32 lastLockFlag; - OSIntrMode ime; - - ime = disableFiq ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); - lastLockFlag = MI_SwapWord(lockID, &lockp->lockFlag); - if (lastLockFlag == 0) { - if (ctrlFuncp != NULL) { - ctrlFuncp(); - } - lockp->ownerID = lockID; - } - if (disableFiq) { - OS_RestoreInterrupts_IrqAndFiq(ime); - } else { - OS_RestoreInterrupts(ime); - } - return lastLockFlag; -} - -s32 OS_LockCartridge(u16 lockID) { - return OSi_DoLockByWord(lockID, (OSLockWord*)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); -} - -s32 OS_UnlockCartridge(u16 lockID) { - return OSi_DoUnlockByWord(lockID, (OSLockWord*)HW_CTRDG_LOCK_BUF, OSi_FreeCartridgeBus, TRUE); -} - -// For backwards compatibility. -// Nintendo decided they didn't want to use a define here, -// so they made an asm func instead -asm s32 OS_UnLockCartridge(u16 lockID) { - ldr r1, =OS_UnlockCartridge - bx r1 -} - -s32 OS_TryLockCartridge(u16 lockID) { - return OSi_DoTryLockByWord(lockID, (OSLockWord*)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); -} - -void OSi_AllocateCartridgeBus(void) { -#ifdef SDK_ARM9 - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM9); -#endif -} - -void OSi_FreeCartridgeBus(void) { -#ifdef SDK_ARM9 - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); -#endif -} - -s32 OS_LockCard(u16 lockID) { - return OS_LockByWord(lockID, (OSLockWord*)HW_CARD_LOCK_BUF, OSi_AllocateCardBus); -} - -s32 OS_UnlockCard(u16 lockID) { - return OS_UnlockByWord(lockID, (OSLockWord*)HW_CARD_LOCK_BUF, OSi_FreeCardBus); -} - -// For backwards compatibility. -// Nintendo decided they didn't want to use a define here, -// so they made an asm func instead -asm s32 OS_UnLockCard(u16 lockID) { - ldr r1, =OS_UnlockCard - bx r1 -} - -BOOL OS_TryLockCard(u16 lockID) { - return OSi_DoTryLockByWord(lockID, (OSLockWord*)HW_CARD_LOCK_BUF, OSi_AllocateCardBus, FALSE); -} - -void OSi_AllocateCardBus(void) { -#ifdef SDK_ARM9 - MIi_SetCardProcessor(MI_PROCESSOR_ARM9); -#endif -} - -void OSi_FreeCardBus(void) { -#ifdef SDK_ARM9 - MIi_SetCardProcessor(MI_PROCESSOR_ARM7); -#endif -} - -u16 OS_ReadOwnerOfLockWord(OSLockWord *lockp) { - return lockp->ownerID; -} - -asm s32 OS_GetLockID(void) { - ldr r3, =OSi_ANYP_LOCK_ID_FLAG; - ldr r1, [r3] -#ifdef SDK_ARM9 - clz r2, r1 -#else //SDK_ARM7 - mov r2, #0 - mov r0, #0x80000000 -_lp1: - tst r1, r0 - bne _ex1 - add r2, r2, #1 - cmp r2, #32 - beq _ex1 - mov r0, r0, lsr #1 - b _lp1 -_ex1: -#endif //SDK_ARM9 - cmp r2, #32 - movne r0, #OSi_ANYP_LOCK_ID_START - bne @movne - add r3, r3, #4 - ldr r1, [r3] -#ifdef SDK_ARM9 - clz r2, r1 -#else //SDK_ARM7 - mov r2, #0 - mov r0, #0x80000000 -_lp2: - tst r1, r0 - bne _ex2 - add r2, r2, #1 - cmp r2, #32 - beq _ex2 - mov r0, r0, lsr #1 - b _lp2 -_ex2: -#endif //SDK_ARM9 - cmp r2, #32 - ldr r0, =-3 - bxeq lr - mov r0, #OSi_ANYP_LOCK_ID_START + 32 - @movne: - add r0, r0, r2 - mov r1, #0x80000000 - mov r1, r1, lsr r2 - ldr r2, [r3] - bic r2, r2, r1 - str r2, [r3] - bx lr -} - -asm void OS_ReleaseLockID(register u16 lockID) { - ldr r3, =OSi_ANYP_LOCK_ID_FLAG - cmp r0, #OSi_ANYP_LOCK_ID_START + 32 - addpl r3, r3, #4 - subpl r0, r0, #OSi_ANYP_LOCK_ID_START + 32 - submi r0, r0, #OSi_ANYP_LOCK_ID_START - mov r1, #0x80000000 - mov r1, r1, lsr r0 - ldr r2, [r3] - orr r2, r2, r1 - str r2, [r3] - bx lr -} diff --git a/lib/NitroSDK/src/os/os_system.c b/lib/NitroSDK/src/os/os_system.c deleted file mode 100644 index c4c92bca..00000000 --- a/lib/NitroSDK/src/os/os_system.c +++ /dev/null @@ -1,75 +0,0 @@ -#include - -asm OSIntrMode OS_EnableInterrupts(void) { - mrs r0, cpsr - bic r1, r0, #HW_PSR_IRQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_DisableInterrupts(void) { - mrs r0, cpsr - orr r1, r0, #HW_PSR_IRQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_RestoreInterrupts(register OSIntrMode prev) { - mrs r1, cpsr - bic r2, r1, #HW_PSR_IRQ_DISABLE - orr r2, r2, r0 - msr cpsr_c, r2 - and r0, r1, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_DisableInterrupts_IrqAndFiq(void) { - mrs r0, cpsr - orr r1, r0, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - bx lr -} - -asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq(register OSIntrMode prev) { - mrs r1, cpsr - bic r2, r1, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - orr r2, r2, r0 - msr cpsr_c, r2 - and r0, r1, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - bx lr -} - -asm OSIntrMode_Irq OS_GetCpsrIrq(void) { - mrs r0, cpsr - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSProcMode OS_GetProcMode(void) { - mrs r0, cpsr - and r0, r0, #HW_PSR_CPU_MODE_MASK - bx lr -} - -#ifdef SDK_ARM9 -#include -asm void OS_SpinWait(register u32 cycles) { - @loop: - subs r0, r0, #4 - bhs @loop - bx lr -} -#include -#else -void OS_SpinWait(u32 cycles) { - SVC_WaitByLoop((s32)cycles / 4); -} -#endif - -void OS_WaitVBlankIntr(void) { - SVC_WaitByLoop(1); - OS_WaitIrq(TRUE, OS_IE_VBLANK); -} diff --git a/lib/NitroSDK/src/os/os_tcm.c b/lib/NitroSDK/src/os/os_tcm.c deleted file mode 100644 index ab12c33e..00000000 --- a/lib/NitroSDK/src/os/os_tcm.c +++ /dev/null @@ -1,8 +0,0 @@ -#include - -asm u32 OS_GetDTCMAddress(void) { - mrc p15, 0, r0, c9, c1, 0 - ldr r1, =0xFFFFF000 - and r0, r0, r1 - bx lr -} diff --git a/lib/NitroSDK/src/os/os_terminate_proc.c b/lib/NitroSDK/src/os/os_terminate_proc.c deleted file mode 100644 index d84dbb95..00000000 --- a/lib/NitroSDK/src/os/os_terminate_proc.c +++ /dev/null @@ -1,19 +0,0 @@ -#include - -void OS_Terminate(void) { -#ifdef SDK_ARM7 - CTRDG_VibPulseEdgeUpdate(0); -#endif - while (1) { - OS_DisableInterrupts(); - OS_Halt(); - } -} - -#ifdef SDK_ARM9 -asm void OS_Halt(void) { - mov r0, #0 - mcr p15, 0, r0, c7, c0, 4 - bx lr -} -#endif diff --git a/lib/NitroSDK/src/os/os_thread.c b/lib/NitroSDK/src/os/os_thread.c deleted file mode 100644 index b460a267..00000000 --- a/lib/NitroSDK/src/os/os_thread.c +++ /dev/null @@ -1,608 +0,0 @@ -#if 1 - -#include -#include -#include - -extern void SDK_SYS_STACKSIZE(void); -extern void SDK_IRQ_STACKSIZE(void); -#define OSi_SYS_STACKSIZE ((s32)SDK_SYS_STACKSIZE) -#define OSi_IRQ_STACKSIZE ((s32)SDK_IRQ_STACKSIZE) - -#ifdef SDK_ARM9 -#define OSi_STACK_CHECKNUM_BOTTOM 0xfddb597dUL -#define OSi_STACK_CHECKNUM_TOP 0x7bf9dd5bUL -#define OSi_STACK_CHECKNUM_WARN 0x597dfbd9UL -#else -#define OSi_STACK_CHECKNUM_BOTTOM 0xd73bfdf7UL -#define OSi_STACK_CHECKNUM_TOP 0xfbdd37bbUL -#define OSi_STACK_CHECKNUM_WARN 0xbdf7db3dUL -#endif - -//---- defs for launcher thread stack -#ifdef SDK_ARM9 -extern void SDK_SECTION_ARENA_DTCM_START(void); -void SDK_AUTOLOAD_DTCM_END(void); // defined in LCF -#define OSi_LAUNCHER_STACK_LO_DEFAULT SDK_SECTION_ARENA_DTCM_START -#define OSi_LAUNCHER_STACK_HI_MAX (HW_DTCM_SVC_STACK - OSi_IRQ_STACKSIZE) -#define OSi_LAUNCHER_STACK_BOTTOM (HW_DTCM_SVC_STACK - OSi_IRQ_STACKSIZE) -#else -#define OSi_LAUNCHER_STACK_LO_DEFAULT HW_WRAM -#define OSi_LAUNCHER_STACK_HI_MAX (HW_PRV_WRAM_IRQ_STACK_END - OSi_IRQ_STACKSIZE) -#define OSi_LAUNCHER_STACK_BOTTOM (HW_PRV_WRAM_IRQ_STACK_END - OSi_IRQ_STACKSIZE) -#endif - -#define OSi_IDLE_CHECKNUM_SIZE ( sizeof(u32)*2 + HW_SVC_STACK_SIZE ) - -#ifdef SDK_ARM9 -#define OSi_IDLE_SVC_SIZE ( sizeof(u32)*32 ) -#else -#define OSi_IDLE_SVC_SIZE ( sizeof(u32)*16 ) -#endif - -#define OSi_IDLE_THREAD_STACK_SIZE ( OSi_IDLE_CHECKNUM_SIZE + OSi_IDLE_SVC_SIZE ) - -OSThread OSi_LauncherThread; -OSThread OSi_IdleThread; -OSThreadInfo OSi_ThreadInfo; -OSThread **OSi_CurrentThreadPtr; -#define OSi_GetCurrentThread() (*OSi_CurrentThreadPtr) -BOOL OSi_IsThreadInitialized = FALSE; -u32 OSi_IdleThreadStack[OSi_IDLE_THREAD_STACK_SIZE / sizeof(u32)]; -void *OSi_SystemCallbackInSwitchThread = NULL; -u32 OSi_RescheduleCount = 0; -static int OSi_ThreadIdCount = 0; -void *OSi_StackForDestructor = NULL; - -void OSi_IdleThreadProc(void *arg); -void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg); -void OSi_ExitThread(void *arg); -void OSi_ExitThread_Destroy(void); -void OSi_CancelThreadAlarmForSleep(OSThread *thread); -void OS_KillThreadWithPriority(OSThread *thread, void *arg, u32 prio); - -s32 OSi_GetUnusedThreadId(void) { - ++OSi_ThreadIdCount; - return OSi_ThreadIdCount; -} - -static void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread) { - OSThread *next = queue->head; - while (next && next->priority <= thread->priority) { - if (next == thread) { - return; - } - next = next->link.next; - } - if (!next) { - OSThread *prev = queue->tail; - if (!prev) { - queue->head = thread; - } else { - prev->link.next = thread; - } - thread->link.prev = prev; - thread->link.next = NULL; - queue->tail = thread; - } else { - OSThread *prev = next->link.prev; - if (!prev) { - queue->head = thread; - } else { - prev->link.next = thread; - } - thread->link.prev = prev; - thread->link.next = next; - next->link.prev = thread; - } -} - -OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue) { - OSThread *t = queue->head; - if (t) { - OSThread *next = t->link.next; - queue->head = next; - if (next) { - next->link.prev = NULL; - } else { - queue->tail = NULL; - t->queue = NULL; - } - } - return t; -} - -OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread) { - OSThread *t = queue->head; - OSThread *next; - OSThread *prev; - while (t) { - next = t->link.next; - if (t == thread) { - prev = t->link.prev; - if (queue->head == t) { - queue->head = next; - } else { - prev->link.next = next; - } - if (queue->tail == t) { - queue->tail = prev; - } else { - next->link.prev = prev; - } - break; - } - t = next; - } - return t; -} - -OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue) { - OSMutex *m = queue->head; - if (m) { - OSMutex *next = m->link.next; - queue->head = next; - if (next) { - next->link.prev = NULL; - } else { - queue->tail = NULL; - } - } - return m; -} - -void OSi_InsertThreadToList(OSThread *thread) { - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - while (t && t->priority < thread->priority) { - pre = t; - t = t->next; - } - if (!pre) { - thread->next = OSi_ThreadInfo.list; - OSi_ThreadInfo.list = thread; - } else { - thread->next = pre->next; - pre->next = thread; - } -} - -void OSi_RemoveThreadFromList(OSThread *thread) { - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - while (t && t != thread) { - pre = t; - t = t->next; - } - if (!pre) { - OSi_ThreadInfo.list = thread->next; - } else { - pre->next = thread->next; - } -} - -void OSi_RescheduleThread(void) { - if (OSi_RescheduleCount <= 0) { - OSThreadInfo *info = &OSi_ThreadInfo; - if (info->irqDepth > 0 || OS_GetProcMode() == OS_PROCMODE_IRQ) { - info->isNeedRescheduling = TRUE; - } - else { - OSThread *currentThread, *nextThread; - currentThread = OSi_GetCurrentThread(); - nextThread = OS_SelectThread(); - if (currentThread == nextThread || !nextThread) { - return; - } - if (currentThread->state != OS_THREAD_STATE_TERMINATED - && OS_SaveContext(¤tThread->context)) { - return; - } - if (OSi_SystemCallbackInSwitchThread) { - ((OSSwitchThreadCallback)OSi_SystemCallbackInSwitchThread) (currentThread, - nextThread); - } - if (info->switchCallback) { - ((OSSwitchThreadCallback)info->switchCallback) (currentThread, nextThread); - } - OS_SetCurrentThread(nextThread); - OS_LoadContext(&nextThread->context); - } - } -} - -void OS_InitThread(void) { - void *stackLo; -#ifndef SDK_THREAD_INFINITY - int i; -#endif - if (OSi_IsThreadInitialized) { - return; - } - OSi_IsThreadInitialized = TRUE; -#ifndef SDK_THREAD_INFINITY - for (i = 0; i < OS_THREAD_MAX_NUM; i++) { - OSi_ThreadInfo.entry[i] = NULL; - } -#endif - OSi_CurrentThreadPtr = &(OSi_ThreadInfo.current); - OSi_LauncherThread.priority = OS_THREAD_LAUNCHER_PRIORITY; - OSi_LauncherThread.id = 0; - OSi_LauncherThread.state = OS_THREAD_STATE_READY; - OSi_LauncherThread.next = NULL; - OSi_LauncherThread.profiler = NULL; -#ifndef SDK_THREAD_INFINITY - OSi_ThreadInfo.entry[0] = &OSi_LauncherThread; -#endif - OSi_ThreadInfo.list = &OSi_LauncherThread; - OS_SetCurrentThread(&OSi_LauncherThread); - stackLo = (OSi_SYS_STACKSIZE <= 0) ? - (void *)((u32)OSi_LAUNCHER_STACK_LO_DEFAULT - OSi_SYS_STACKSIZE) : - (void *)((u32)OSi_LAUNCHER_STACK_HI_MAX - OSi_SYS_STACKSIZE); - OSi_LauncherThread.stackBottom = (u32)OSi_LAUNCHER_STACK_BOTTOM; - OSi_LauncherThread.stackTop = (u32)stackLo; - OSi_LauncherThread.stackWarningOffset = 0; - *(u32 *)(OSi_LauncherThread.stackBottom - sizeof(u32)) = OSi_STACK_CHECKNUM_BOTTOM; - *(u32 *)OSi_LauncherThread.stackTop = OSi_STACK_CHECKNUM_TOP; - OS_InitThreadQueue(&OSi_LauncherThread.joinQueue); -#ifndef SDK_THREAD_INFINITY - OSi_ThreadInfo.max_entry = OS_THREAD_MAX_NUM; -#endif - OSi_ThreadInfo.isNeedRescheduling = FALSE; - OSi_ThreadInfo.irqDepth = 0; -#ifdef SDK_ARM9 - OS_GetSystemWork()->threadinfo_mainp = &OSi_ThreadInfo; -#else - OS_GetSystemWork()->threadinfo_subp = &OSi_ThreadInfo; -#endif - OS_SetSwitchThreadCallback(NULL); -#ifdef SDK_ARM9 - OS_CreateThread(&OSi_IdleThread, - OSi_IdleThreadProc, - (void *)NULL, - OSi_IdleThreadStack + OSi_IDLE_THREAD_STACK_SIZE / sizeof(u32), - OSi_IDLE_THREAD_STACK_SIZE, - OS_THREAD_PRIORITY_MAX); - OSi_IdleThread.priority = OS_THREAD_PRIORITY_MAX + 1; - OSi_IdleThread.state = OS_THREAD_STATE_READY; -#endif -} - -#include -asm BOOL OS_IsThreadAvailable(void) { - ldr r0, =OSi_IsThreadInitialized - ldr r0, [r0] - bx lr -} -#include - -void OS_CreateThread(OSThread *thread, void (*func)(void * arg), void *arg, void *stack, u32 stackSize, u32 prio) { - OSIntrMode enable = OS_DisableInterrupts(); - int index = OSi_GetUnusedThreadId(); - thread->priority = prio; - thread->id = (u32)index; - thread->state = OS_THREAD_STATE_WAITING; - thread->profiler = NULL; - OSi_InsertThreadToList(thread); - thread->stackBottom = (u32)stack; - thread->stackTop = (u32)stack - stackSize; - thread->stackWarningOffset = 0; - *(u32 *)(thread->stackBottom - sizeof(u32)) = OSi_STACK_CHECKNUM_BOTTOM; - *(u32 *)thread->stackTop = OSi_STACK_CHECKNUM_TOP; - OS_InitThreadQueue(&thread->joinQueue); - OS_InitContext(&thread->context, (u32)func, (u32)stack - sizeof(u32)); - thread->context.r[0] = (u32)arg; - thread->context.lr = (u32)OS_ExitThread; - MI_CpuClear32((void *)((u32)stack - stackSize + sizeof(u32)), stackSize - sizeof(u32) * 2); - thread->mutex = NULL; - thread->mutexQueue.head = NULL; - thread->mutexQueue.tail = NULL; - OS_SetThreadDestructor(thread, NULL); - thread->queue = NULL; - thread->link.prev = thread->link.next = NULL; - MI_CpuClear32(&thread->specific[0], sizeof(void *) * OS_THREAD_SPECIFIC_MAX); - thread->alarmForSleep = NULL; - OS_RestoreInterrupts(enable); -} - -static vu32 exitThreadStatus = 0; - -void OS_ExitThread(void) { - OS_DisableInterrupts(); - OSi_ExitThread_ArgSpecified(OS_GetCurrentThread(), NULL); -} - -void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg) { - if (OSi_StackForDestructor) { - OS_InitContext(&thread->context, (u32)OSi_ExitThread, (u32)OSi_StackForDestructor); - thread->context.r[0] = (u32)arg; - thread->context.cpsr |= HW_PSR_IRQ_DISABLE; - thread->state = OS_THREAD_STATE_READY; - OS_LoadContext(&thread->context); - } - else { - OSi_ExitThread(arg); - } -} - -void OSi_ExitThread(void *arg) { - OSThread *currentThread = OSi_GetCurrentThread(); - OSThreadDestructor destructor = currentThread->destructor; - if (destructor) { - currentThread->destructor = NULL; - destructor(arg); - OS_DisableInterrupts(); - } - OSi_ExitThread_Destroy(); -} - -void OSi_ExitThread_Destroy(void) { - OSThread *currentThread = OSi_GetCurrentThread(); - OS_DisableScheduler(); - OSi_UnlockAllMutex(currentThread); - if (currentThread->queue) { - OSi_RemoveSpecifiedLinkFromQueue(currentThread->queue, currentThread); - } - OSi_RemoveThreadFromList(currentThread); - currentThread->state = OS_THREAD_STATE_TERMINATED; - OS_WakeupThread(¤tThread->joinQueue); - OS_EnableScheduler(); - OS_RescheduleThread(); - OS_Terminate(); -} - -void OS_DestroyThread(OSThread *thread) { - OSIntrMode enable = OS_DisableInterrupts(); - if (OS_GetCurrentThread() == thread) { - OSi_ExitThread_Destroy(); - } - OS_DisableScheduler(); - OSi_UnlockAllMutex(thread); - OSi_CancelThreadAlarmForSleep(thread); - if (thread->queue) { - OSi_RemoveSpecifiedLinkFromQueue(thread->queue, thread); - } - OSi_RemoveThreadFromList(thread); - thread->state = OS_THREAD_STATE_TERMINATED; - OS_WakeupThread(&thread->joinQueue); - OS_EnableScheduler(); - OS_RestoreInterrupts(enable); - OS_RescheduleThread(); -} - -static vu32 killThreadStatus = 0; - -static inline void OSi_KillThreadWithPriority(OSThread *thread, void *arg, u32 prio) { - u32 stack = OSi_StackForDestructor ? (u32)OSi_StackForDestructor : thread->stackBottom - sizeof(u32); - OS_InitContext(&thread->context, (u32)OSi_ExitThread, stack); - thread->context.r[0] = (u32)arg; - thread->context.cpsr |= HW_PSR_IRQ_DISABLE; - thread->state = OS_THREAD_STATE_READY; - OS_DisableScheduler(); - OS_SetThreadPriority(thread, prio); - OS_EnableScheduler(); -} - -void OS_KillThread(OSThread *thread, void *arg) { - OS_KillThreadWithPriority(thread, arg, OS_GetThreadPriority(thread)); -} - -void OS_KillThreadWithPriority(OSThread *thread, void *arg, u32 prio) { - OSIntrMode enable = OS_DisableInterrupts(); - if (thread == OS_GetCurrentThread()) { - OSi_ExitThread_ArgSpecified(thread, arg); - } - OSi_CancelThreadAlarmForSleep(thread); - OSi_KillThreadWithPriority(thread, arg, prio); - OSi_RescheduleThread(); - OS_RestoreInterrupts(enable); -} - -void OSi_CancelThreadAlarmForSleep(OSThread *thread) { - if (thread->alarmForSleep) { - OS_CancelAlarm(thread->alarmForSleep); - } -} - -void OS_JoinThread(OSThread *thread) { - OSIntrMode enable = OS_DisableInterrupts(); - if (thread->state != OS_THREAD_STATE_TERMINATED) { - OS_SleepThread(&thread->joinQueue); - } - OS_RestoreInterrupts(enable); -} - -BOOL OS_IsThreadTerminated(const OSThread *thread) { - return thread->state == OS_THREAD_STATE_TERMINATED ? TRUE : FALSE; -} - -void OS_SleepThread(OSThreadQueue *queue) { - OSIntrMode enable = OS_DisableInterrupts(); - OSThread *currentThread = OSi_GetCurrentThread(); - if (queue) { - currentThread->queue = queue; - OSi_InsertLinkToQueue(queue, currentThread); - } - currentThread->state = OS_THREAD_STATE_WAITING; - OSi_RescheduleThread(); - OS_RestoreInterrupts(enable); -} - -void OS_WakeupThread(OSThreadQueue *queue) { - OSIntrMode enable = OS_DisableInterrupts(); - if (queue->head) { - while (queue->head) { - OSThread *thread = OSi_RemoveLinkFromQueue(queue); - thread->state = OS_THREAD_STATE_READY; - thread->queue = NULL; - thread->link.prev = thread->link.next = NULL; - } - OS_InitThreadQueue(queue); - OSi_RescheduleThread(); - } - OS_RestoreInterrupts(enable); -} - -void OS_WakeupThreadDirect(OSThread *thread) { - OSIntrMode enable = OS_DisableInterrupts(); - thread->state = OS_THREAD_STATE_READY; - OSi_RescheduleThread(); - OS_RestoreInterrupts(enable); -} - -OSThread *OS_SelectThread(void) { - OSThread *t = OSi_ThreadInfo.list; - while (t && !OS_IsThreadRunnable(t)) { - t = t->next; - } - return t; -} - -void OS_RescheduleThread() { - OSIntrMode enable = OS_DisableInterrupts(); - OSi_RescheduleThread(); - OS_RestoreInterrupts(enable); -} - -void OS_YieldThread(void) { - OSThread *current = OS_GetCurrentThread(); - OSThread *pre = NULL; - OSThread *lastThread = NULL; - int samePriorityThread = 0; - OSIntrMode enable = OS_DisableInterrupts(); - OSThread *t = OSi_ThreadInfo.list; - OSThread *tPre = NULL; - while (t) { - if (t == current) { - pre = tPre; - } - if (current->priority == t->priority) { - lastThread = t; - samePriorityThread++; - } - tPre = t; - t = t->next; - } - if (samePriorityThread <= 1 || lastThread == current) { - OS_RestoreInterrupts(enable); - return; - } - if (!pre) { - OSi_ThreadInfo.list = current->next; - } - else { - pre->next = current->next; - } - current->next = lastThread->next; - lastThread->next = current; - OSi_RescheduleThread(); - OS_RestoreInterrupts(enable); -} - -BOOL OS_SetThreadPriority(OSThread *thread, u32 prio) { - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - OSIntrMode enable; - enable = OS_DisableInterrupts(); - while (t && t != thread) { - pre = t; - t = t->next; - } - if (!t || t == &OSi_IdleThread) { - (void)OS_RestoreInterrupts(enable); - return FALSE; - } - if (t->priority != prio) { - if (!pre) { - OSi_ThreadInfo.list = thread->next; - } - else { - pre->next = thread->next; - } - thread->priority = prio; - OSi_InsertThreadToList(thread); - OSi_RescheduleThread(); - } - OS_RestoreInterrupts(enable); - return TRUE; -} - -u32 OS_GetThreadPriority(const OSThread *thread) { - return thread->priority; -} - -void OSi_SleepAlarmCallback(void *arg); - -void OS_Sleep(u32 msec) { - OSAlarm alarm; - - OS_CreateAlarm(&alarm); - OSThread *volatile p_thread = OSi_GetCurrentThread(); - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - p_thread->alarmForSleep = &alarm; - OS_SetAlarm(&alarm, OS_MilliSecondsToTicks(msec), OSi_SleepAlarmCallback, (void *)&p_thread); - while (p_thread != NULL) { - OS_SleepThread(NULL); - } - OS_RestoreInterrupts(bak_cpsr); -} - -void OSi_SleepAlarmCallback(void *arg) { - OSThread **ppthread = arg; - OSThread *pthread = *ppthread; - *ppthread = NULL; - pthread->alarmForSleep = NULL; - OS_WakeupThreadDirect(pthread); -} - -OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback) { - OSSwitchThreadCallback prev; - OSIntrMode bak_psr; - - bak_psr = OS_DisableInterrupts(); - prev = OSi_ThreadInfo.switchCallback; - OSi_ThreadInfo.switchCallback = callback; - OS_RestoreInterrupts(bak_psr); - return prev; -} - -void OSi_IdleThreadProc(void * unused) { - OS_EnableInterrupts(); - while (1) { - OS_Halt(); - } -} - -u32 OS_DisableScheduler(void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - u32 count; - if (OSi_RescheduleCount < (u32)(0 - 1)) { - count = OSi_RescheduleCount++; - } - OS_RestoreInterrupts(bak_psr); - return count; -} - -u32 OS_EnableScheduler(void) { - OSIntrMode bak_psr = OS_DisableInterrupts(); - u32 count = 0; - if (OSi_RescheduleCount > 0) { - count = OSi_RescheduleCount--; - } - OS_RestoreInterrupts(bak_psr); - return count; -} - -static u32 OSi_SystemStackBuffer; - -void OS_SetThreadDestructor(OSThread *thread, void (*dtor)(void *)) { - thread->destructor = dtor; - - // Gotta put this somewhere to force the symbols to compile - // FIXME: when we can safely pass -nodead, port the dead-stripped routines - (void)&OSi_SystemStackBuffer; - (void)&killThreadStatus; - (void)&exitThreadStatus; -} - -#endif diff --git a/lib/NitroSDK/src/os/os_tick.c b/lib/NitroSDK/src/os/os_tick.c deleted file mode 100644 index 08f3146e..00000000 --- a/lib/NitroSDK/src/os/os_tick.c +++ /dev/null @@ -1,71 +0,0 @@ -#include - -static u16 OSi_UseTick = FALSE; -vu64 OSi_TickCounter; -BOOL OSi_NeedResetTimer = FALSE; - -#define OSi_TICK_TIMERCONTROL ( REG_OS_TM0CNT_H_E_MASK | REG_OS_TM0CNT_H_I_MASK | OS_TIMER_PRESCALER_64 ) -#define OSi_TICK_TIMER OS_TIMER_0 -#define OSi_TICK_IE_TIMER OS_IE_TIMER0 - -void OSi_CountUpTick(void); - -void OS_InitTick(void) { - if (OSi_UseTick) { - return; - } - OSi_UseTick = TRUE; - OSi_SetTimerReserved(OSi_TICK_TIMER); - OSi_TickCounter = 0; - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount(OSi_TICK_TIMER, 0); - OS_SetTimerControl(OSi_TICK_TIMER, OSi_TICK_TIMERCONTROL); - OS_SetIrqFunction(OSi_TICK_IE_TIMER, OSi_CountUpTick); - OS_EnableIrqMask(OSi_TICK_IE_TIMER); - OSi_NeedResetTimer = FALSE; -} - -BOOL OS_IsTickAvailable(void) { - return OSi_UseTick; -} - -void OSi_CountUpTick(void) { - // timer0 interrupt - OSi_TickCounter++; - if (OSi_NeedResetTimer) { - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount(OSi_TICK_TIMER, 0); - OS_SetTimerControl(OSi_TICK_TIMER, OSi_TICK_TIMERCONTROL); - OSi_NeedResetTimer = FALSE; - } - OSi_EnterTimerCallback(OSi_TICK_TIMER, (void (*)(void *))OSi_CountUpTick, NULL); -} - -OSTick OS_GetTick(void) { - vu16 countL; - vu64 countH; - OSIntrMode enabled = OS_DisableInterrupts(); - - countL = *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); - countH = OSi_TickCounter & 0xffffffffffffULL; - if (reg_OS_IF & OSi_TICK_IE_TIMER && !(countL & 0x8000)) { - countH++; - } - OS_RestoreInterrupts(enabled); - return (countH << 16) | countL; -} - -u16 OS_GetTickLo(void) { - return *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); -} - -void OS_SetTick(OSTick tick) { - OSIntrMode enabled = OS_DisableInterrupts(); - reg_OS_IF = OSi_TICK_IE_TIMER; - OSi_NeedResetTimer = TRUE; - OSi_TickCounter = tick >> 16; - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount(OSi_TICK_TIMER, tick & 0xFFFF); - OS_SetTimerControl(OSi_TICK_TIMER, OSi_TICK_TIMERCONTROL); - OS_RestoreInterrupts(enabled); -} diff --git a/lib/NitroSDK/src/os/os_timer.c b/lib/NitroSDK/src/os/os_timer.c deleted file mode 100644 index a285545f..00000000 --- a/lib/NitroSDK/src/os/os_timer.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -static u16 OSi_TimerReserved = 0; - -void OSi_SetTimerReserved(s32 timerNum) { - OSi_TimerReserved |= (1 << timerNum); -} diff --git a/lib/NitroSDK/src/os/os_valarm.c b/lib/NitroSDK/src/os/os_valarm.c deleted file mode 100644 index 855dd312..00000000 --- a/lib/NitroSDK/src/os/os_valarm.c +++ /dev/null @@ -1,258 +0,0 @@ -#include - -#define HW_LCD_LINES (263) - -#define OSi_VHIGHT HW_LCD_LINES - -#define OSi_VALARM_LATER 0 -#define OSi_VALARM_NOW 1 -#define OSi_VALARM_TIMEOUT 2 - -struct OSiVAlarmQueue { - OSVAlarm *head; - OSVAlarm *tail; -} OSi_VAlarmQueue; - -u16 OSi_UseVAlarm = FALSE; -s32 OSi_VFrameCount; -s32 OSi_PreviousVCount; - -static void OSi_SetNextVAlarm(OSVAlarm *alarm); -static void OSi_AppendVAlarm(OSVAlarm *alarm); -static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVCount, s32 currentVFrame); -static s32 OSi_GetVFrame(s32 vcount); -static void OSi_VAlarmHandler(void); - -void OS_InitVAlarm(void) { - if (!OSi_UseVAlarm) { - OSi_UseVAlarm = TRUE; - OSi_VAlarmQueue.head = NULL; - OSi_VAlarmQueue.tail = NULL; - OS_DisableIrqMask(OS_IE_V_COUNT); - OSi_VFrameCount = 0; - OSi_PreviousVCount = 0; - } -} - -BOOL OS_IsVAlarmAvailable(void) { - return OSi_UseVAlarm; -} - -void OSi_InsertVAlarm(OSVAlarm *alarm) { - OSVAlarm *prev; - OSVAlarm *next; - for (next = OSi_VAlarmQueue.head; next; next = next->next) { - if ((next->frame < alarm->frame) || (next->frame == alarm->frame) && (next->fire <= alarm->fire)) { - continue; - } - prev = next->prev; - alarm->prev = prev; - alarm->next = next; - next->prev = alarm; - if (prev) { - prev->next = alarm; - } else { - OSi_VAlarmQueue.head = alarm; - OSi_SetNextVAlarm(alarm); - } - return; - } - OSi_AppendVAlarm(alarm); -} - -static void OSi_AppendVAlarm(OSVAlarm *alarm) { - OSVAlarm *prev = OSi_VAlarmQueue.tail; - alarm->prev = prev; - alarm->next = NULL; - OSi_VAlarmQueue.tail = alarm; - if (prev) { - prev->next = alarm; - } else { - OSi_VAlarmQueue.head = alarm; - OSi_SetNextVAlarm(alarm); - } -} - -void OSi_DetachVAlarm(OSVAlarm *alarm) { - OSVAlarm *prev; - OSVAlarm *next; - if (alarm == NULL) { - return; - } - prev = alarm->prev; - next = alarm->next; - if (next) { - next->prev = prev; - } else { - OSi_VAlarmQueue.tail = prev; - } - if (prev) { - prev->next = next; - } else { - OSi_VAlarmQueue.head = next; - } -} - -void OS_CreateVAlarm(OSVAlarm *alarm) { - alarm->handler = NULL; - alarm->tag = 0; - alarm->finish = FALSE; -} - -void OS_SetVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) { - OSIntrMode enabled = OS_DisableInterrupts(); - s32 currentVCount; - s32 currentVFrame; - if (!alarm || alarm->handler) { - OS_Panic(""); - } - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - alarm->period = FALSE; - alarm->fire = count; - alarm->frame = ((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); - alarm->delay = delay; - alarm->handler = handler; - alarm->arg = arg; - alarm->canceled = FALSE; - OSi_InsertVAlarm(alarm); - OS_RestoreInterrupts(enabled); -} - -void OS_SetPeriodicVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) { - OSIntrMode enabled = OS_DisableInterrupts(); - s32 currentVCount; - s32 currentVFrame; - if (!alarm || alarm->handler) { - OS_Panic(""); - } - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - alarm->period = TRUE; - alarm->fire = count; - alarm->frame = ((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); - alarm->delay = delay; - alarm->handler = handler; - alarm->arg = arg; - alarm->canceled = FALSE; - OSi_InsertVAlarm(alarm); - OS_RestoreInterrupts(enabled); -} - -__declspec(noinline) -static void OSi_SetNextVAlarm(OSVAlarm *alarm) { - OS_SetIrqFunction(OS_IE_V_COUNT, (void(*)())OSi_VAlarmHandler); - GX_SetVCountEqVal(alarm->fire); - GX_VCountEqIntr(TRUE); - OS_EnableIrqMask(OS_IE_V_COUNT); -} - -void OS_SetVAlarmTag(OSVAlarm *alarm, u32 tag) { - if (tag == 0) { - OS_Panic(""); - } - if (alarm) { - alarm->tag = tag; - } -} - -void OS_CancelVAlarm(OSVAlarm *alarm) { - OSIntrMode enabled = OS_DisableInterrupts(); - alarm->canceled = TRUE; - if (alarm->handler == NULL) { - OS_RestoreInterrupts(enabled); - return; - } - OSi_DetachVAlarm(alarm); - alarm->handler = NULL; - OS_RestoreInterrupts(enabled); -} - -void OS_CancelVAlarms(u32 tag) { - OSIntrMode enabled = OS_DisableInterrupts(); - OSVAlarm *alarm; - OSVAlarm *next; - if (tag == 0) { - OS_Panic(""); - } - for (alarm = OSi_VAlarmQueue.head, next = alarm ? alarm->next : NULL; alarm; alarm = next, next = alarm? alarm->next : NULL) { - if (alarm->tag == tag) { - OS_CancelVAlarm(alarm); - } - } - OS_RestoreInterrupts(enabled); -} - -void OSi_VAlarmHandler(void) { - OSVAlarm *alarm; - OSVAlarmHandler handler; - int check; - s32 currentVCount; - s32 currentVFrame; - - OS_DisableIrqMask(OS_IE_V_COUNT); - GX_VCountEqIntr(FALSE); - OS_SetIrqCheckFlag(OS_IE_V_COUNT); - currentVCount = GX_GetVCountEqVal(); - currentVFrame = OSi_GetVFrame(currentVCount - 1); - - while (NULL != (alarm = OSi_VAlarmQueue.head)) { - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - check = OSi_CompareVCount(alarm, currentVFrame, currentVCount); - switch (check) { - case OSi_VALARM_LATER: - OSi_SetNextVAlarm(alarm); - if (alarm->fire != GX_GetVCount() || alarm->frame != currentVFrame) { - return; - } - OS_DisableIrqMask(OS_IE_V_COUNT); - GX_VCountEqIntr(FALSE); - OS_ResetRequestIrqMask(OS_IE_V_COUNT); - // fallthrough - case OSi_VALARM_NOW: - handler = alarm->handler; - OSi_DetachVAlarm(alarm); - alarm->handler = NULL; - if (handler) { - (handler)(alarm->arg); - } - if (alarm->period && !alarm->canceled) { - alarm->handler = handler; - alarm->frame = OSi_VFrameCount + 1; - OSi_InsertVAlarm(alarm); - } - break; - case OSi_VALARM_TIMEOUT: - OSi_DetachVAlarm(alarm); - alarm->frame = OSi_VFrameCount + 1; - OSi_InsertVAlarm(alarm); - break; - } - } -} - -static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVFrame, s32 currentVCount) { - s32 delayVFrame; - s32 delayVCount; - - delayVFrame = currentVFrame - alarm->frame; - delayVCount = currentVCount - alarm->fire; - if (delayVFrame < 0 || (delayVFrame == 0 && delayVCount < 0)) { - return OSi_VALARM_LATER; - } - if (delayVCount < 0) { - delayVCount += OSi_VHIGHT; - } - return (delayVCount <= alarm->delay) ? OSi_VALARM_NOW : OSi_VALARM_TIMEOUT; -} - -static s32 OSi_GetVFrame(s32 vcount) { - OSIntrMode enabled = OS_DisableInterrupts(); - if (vcount < OSi_PreviousVCount) { - OSi_VFrameCount++; - } - OSi_PreviousVCount = vcount; - OS_RestoreInterrupts(enabled); - return OSi_VFrameCount; -} diff --git a/lib/NitroSDK/src/os/os_vramExclusive.c b/lib/NitroSDK/src/os/os_vramExclusive.c deleted file mode 100644 index c8c29962..00000000 --- a/lib/NitroSDK/src/os/os_vramExclusive.c +++ /dev/null @@ -1,69 +0,0 @@ -#include - -static u32 OSi_vramExclusive; -static u16 OSi_vramLockId[9]; - -asm u32 OsCountZeroBits(u32 bitmap) { - clz r0, r0 - bx lr -} - -void OSi_InitVramExclusive(void) { - int i; - - OSi_vramExclusive = 0; - for (i = 0; i < 9; i++) { - OSi_vramLockId[i] = 0; - } -} - -BOOL OSi_TryLockVram(u16 bank, u16 lockId) { - u32 workMap; - s32 zeroBits; - OSIntrMode enabled = OS_DisableInterrupts(); - - workMap = bank & OSi_vramExclusive; - while (TRUE) { - zeroBits = 31 - OsCountZeroBits(workMap); - if (zeroBits < 0) { - break; - } - workMap &= ~(1 << zeroBits); - if (OSi_vramLockId[zeroBits] != lockId) { - OS_RestoreInterrupts(enabled); - return FALSE; - } - } - workMap = bank & 0x1FF; - while (TRUE) { - zeroBits = 31 - OsCountZeroBits(workMap); - if (zeroBits < 0) { - break; - } - workMap &= ~(1 << zeroBits); - OSi_vramLockId[zeroBits] = lockId; - OSi_vramExclusive |= (1 << zeroBits); - } - OS_RestoreInterrupts(enabled); - return TRUE; -} - -void OSi_UnlockVram(u16 bank, u16 lockId) { - u32 workMap; - s32 zeroBits; - OSIntrMode enabled = OS_DisableInterrupts(); - - workMap = bank & OSi_vramExclusive & 0x1FF; - while (TRUE) { - zeroBits = 31 - OsCountZeroBits(workMap); - if (zeroBits < 0) { - break; - } - workMap &= ~(1 << zeroBits); - if (OSi_vramLockId[zeroBits] == lockId) { - OSi_vramLockId[zeroBits] = 0; - OSi_vramExclusive &= ~(1 << zeroBits); - } - } - OS_RestoreInterrupts(enabled); -} diff --git a/lib/asm/crt0.s b/lib/asm/crt0.s index c66f3370..e69de29b 100644 --- a/lib/asm/crt0.s +++ b/lib/asm/crt0.s @@ -1,322 +0,0 @@ - .include "asm/macros.inc" - .include "crt0.inc" - .include "global.inc" - .public SDK_AUTOLOAD_DTCM_START - .public SDK_AUTOLOAD_LIST - .public SDK_AUTOLOAD_LIST_END - .public SDK_AUTOLOAD_START - .public SDK_STATIC_BSS_START - .public SDK_STATIC_BSS_END - .public SDK_IRQ_STACKSIZE - .text - - arm_func_start _start -_start: ; 0x02000800 - mov ip, #0x4000000 - str ip, [ip, #0x208] -_02000808: - ldrh r0, [ip, #6] - cmp r0, #0 - bne _02000808 - bl init_cp15 - mov r0, #0x13 - msr cpsr_c, r0 - ldr r0, _02000930 ; =SDK_AUTOLOAD_DTCM_START - add r0, r0, #0x3fc0 - mov sp, r0 - mov r0, #0x12 - msr cpsr_c, r0 - ldr r0, _02000930 ; =SDK_AUTOLOAD_DTCM_START - add r0, r0, #0x3fc0 - sub r0, r0, #0x40 - sub sp, r0, #4 - tst sp, #4 - beq _02000850 - b _02000854 -_02000850: - sub sp, sp, #4 -_02000854: - ldr r1, _02000934 ; =SDK_IRQ_STACKSIZE - sub r1, r0, r1 - mov r0, #0x1f - msr cpsr_fsxc, r0 - sub sp, r1, #4 - mov r0, #0 - ldr r1, _02000930 ; =SDK_AUTOLOAD_DTCM_START - mov r2, #0x4000 - bl INITi_CpuClear32 - mov r0, #0 - ldr r1, _02000938 ; =0x05000000 - mov r2, #0x400 - bl INITi_CpuClear32 - mov r0, #0x200 - ldr r1, _0200093C ; =0x07000000 - mov r2, #0x400 - bl INITi_CpuClear32 - ldr r1, _02000940 ; =_start_ModuleParams - ldr r0, [r1, #0x14] - bl MIi_UncompressBackward - bl do_autoload - ldr r0, _02000940 ; =_start_ModuleParams - ldr r1, [r0, #0xc] - ldr r2, [r0, #0x10] - mov r3, r1 - mov r0, #0 -_020008BC: - cmp r1, r2 - blo _020008C8 - b _020008CC -_020008C8: - str r0, [r1], #4 -_020008CC: - blo _020008BC - bic r1, r3, #0x1f -_020008D4: - mcr p15, 0, r0, c7, c10, 4 - mcr p15, 0, r1, c7, c5, 1 - mcr p15, 0, r1, c7, c14, 1 - add r1, r1, #0x20 - cmp r1, r2 - blt _020008D4 - ldr r1, _02000944 ; =0x027FFF9C - str r0, [r1] - ldr r1, _02000930 ; =SDK_AUTOLOAD_DTCM_START - add r1, r1, #0x3fc0 - add r1, r1, #0x3c - ldr r0, _02000948 ; =OS_IrqHandler - str r0, [r1] - bl _fp_init - bl NitroStartUp - bl __call_static_initializers - ldr r1, _0200094C ; =NitroMain - ldr lr, _02000950 ; =0xFFFF0000 - tst sp, #4 - bne _02000928 - b _0200092C -_02000928: - sub sp, sp, #4 -_0200092C: - bx r1 - .align 2, 0 -_02000930: .word SDK_AUTOLOAD_DTCM_START -_02000934: .word SDK_IRQ_STACKSIZE -_02000938: .word 0x05000000 -_0200093C: .word 0x07000000 -_02000940: .word _start_ModuleParams -_02000944: .word 0x027FFF9C -_02000948: .word OS_IrqHandler -_0200094C: .word NitroMain -_02000950: .word 0xFFFF0000 - arm_func_end _start - - arm_func_start INITi_CpuClear32 -INITi_CpuClear32: ; 0x02000954 - add ip, r1, r2 -_02000958: - cmp r1, ip - blt _02000964 - b _02000968 -_02000964: - stmia r1!, {r0} -_02000968: - blt _02000958 - bx lr - arm_func_end INITi_CpuClear32 - - arm_func_start MIi_UncompressBackward -MIi_UncompressBackward: ; 0x02000970 - cmp r0, #0 - beq _02000A18 - stmdb sp!, {r4, r5, r6, r7} - ldmdb r0, {r1, r2} - add r2, r0, r2 - sub r3, r0, r1, lsr #24 - bic r1, r1, #0xff000000 - sub r1, r0, r1 - mov r4, r2 -_02000994: - cmp r3, r1 - ble _020009F4 - ldrb r5, [r3, #-1]! - mov r6, #8 -_020009A4: - subs r6, r6, #1 - blt _02000994 - tst r5, #0x80 - bne _020009C0 - ldrb r0, [r3, #-1]! - strb r0, [r2, #-1]! - b _020009E8 -_020009C0: - ldrb ip, [r3, #-1]! - ldrb r7, [r3, #-1]! - orr r7, r7, ip, lsl #8 - bic r7, r7, #0xf000 - add r7, r7, #2 - add ip, ip, #0x20 -_020009D8: - ldrb r0, [r2, r7] - strb r0, [r2, #-1]! - subs ip, ip, #0x10 - bge _020009D8 -_020009E8: - cmp r3, r1 - mov r5, r5, lsl #1 - bgt _020009A4 -_020009F4: - mov r0, #0 - bic r3, r1, #0x1f -_020009FC: - mcr p15, 0, r0, c7, c10, 4 - mcr p15, 0, r3, c7, c5, 1 - mcr p15, 0, r3, c7, c14, 1 - add r3, r3, #0x20 - cmp r3, r4 - blt _020009FC - ldmia sp!, {r4, r5, r6, r7} -_02000A18: - bx lr - arm_func_end MIi_UncompressBackward - - arm_func_start do_autoload -do_autoload: ; 0x02000A1C - ldr r0, _02000AA8 ; =_start_ModuleParams - ldr r1, [r0] - ldr r2, [r0, #4] - ldr r3, [r0, #8] -_02000A2C: - cmp r1, r2 - beq _02000AA4 - ldr r5, [r1], #4 - ldr r7, [r1], #4 - add r6, r5, r7 - mov r4, r5 -_02000A44: - cmp r4, r6 - bmi _02000A50 - b _02000A54 -_02000A50: - ldr r7, [r3], #4 -_02000A54: - bmi _02000A5C - b _02000A60 -_02000A5C: - str r7, [r4], #4 -_02000A60: - bmi _02000A44 - ldr r7, [r1], #4 - add r6, r4, r7 - mov r7, #0 -_02000A70: - cmp r4, r6 - blo _02000A7C - b _02000A80 -_02000A7C: - str r7, [r4], #4 -_02000A80: - blo _02000A70 - bic r4, r5, #0x1f -_02000A88: - mcr p15, 0, r7, c7, c10, 4 - mcr p15, 0, r4, c7, c5, 1 - mcr p15, 0, r4, c7, c14, 1 - add r4, r4, #0x20 - cmp r4, r6 - blt _02000A88 - b _02000A2C -_02000AA4: - b _start_AutoloadDoneCallback - .align 2, 0 -_02000AA8: .word _start_ModuleParams - arm_func_end do_autoload - - arm_func_start _start_AutoloadDoneCallback -_start_AutoloadDoneCallback: - bx lr - arm_func_end _start_AutoloadDoneCallback - - arm_func_start init_cp15 -init_cp15: ; 0x02000AB0 - mrc p15, 0, r0, c1, c0, 0 - ldr r1, _02000B68 ; =0x000F9005 - bic r0, r0, r1 - mcr p15, 0, r0, c1, c0, 0 - mov r0, #0 - mcr p15, 0, r0, c7, c5, 0 - mcr p15, 0, r0, c7, c6, 0 - mcr p15, 0, r0, c7, c10, 4 - ldr r0, _02000B6C ; =0x04000033 - mcr p15, 0, r0, c6, c0, 0 - ldr r0, _02000B70 ; =0x0200002D - mcr p15, 0, r0, c6, c1, 0 - ldr r0, _02000B74 ; =0x027E0021 - mcr p15, 0, r0, c6, c2, 0 - ldr r0, _02000B78 ; =0x08000035 - mcr p15, 0, r0, c6, c3, 0 - ldr r0, _02000B7C ; =OS_IRQTable - orr r0, r0, #0x1a - orr r0, r0, #1 - mcr p15, 0, r0, c6, c4, 0 - ldr r0, _02000B80 ; =0x0100002F - mcr p15, 0, r0, c6, c5, 0 - ldr r0, _02000B84 ; =0xFFFF001D - mcr p15, 0, r0, c6, c6, 0 - ldr r0, _02000B88 ; =0x027FF017 - mcr p15, 0, r0, c6, c7, 0 - mov r0, #0x20 - mcr p15, 0, r0, c9, c1, 1 - ldr r0, _02000B7C ; =OS_IRQTable - orr r0, r0, #0xa - mcr p15, 0, r0, c9, c1, 0 - mov r0, #0x42 - mcr p15, 0, r0, c2, c0, 1 - mov r0, #0x42 - mcr p15, 0, r0, c2, c0, 0 - mov r0, #2 - mcr p15, 0, r0, c3, c0, 0 - ldr r0, _02000B8C ; =0x05100011 - mcr p15, 0, r0, c5, c0, 3 - ldr r0, _02000B90 ; =0x15111011 - mcr p15, 0, r0, c5, c0, 2 - mrc p15, 0, r0, c1, c0, 0 - ldr r1, _02000B94 ; =0x0005707D - orr r0, r0, r1 - mcr p15, 0, r0, c1, c0, 0 - bx lr - .align 2, 0 -_02000B68: .word 0x000F9005 -_02000B6C: .word 0x04000033 -_02000B70: .word 0x0200002D -_02000B74: .word 0x027E0021 -_02000B78: .word 0x08000035 -_02000B7C: .word OS_IRQTable -_02000B80: .word 0x0100002F -_02000B84: .word 0xFFFF001D -_02000B88: .word 0x027FF017 -_02000B8C: .word 0x05100011 -_02000B90: .word 0x15111011 -_02000B94: .word 0x0005707D - arm_func_end init_cp15 - - arm_func_start NitroStartUp -NitroStartUp: ; 0x02000B98 - bx lr - arm_func_end NitroStartUp - - arm_func_start OSi_ReferSymbol -OSi_ReferSymbol: ; 0x02000B9C - bx lr - arm_func_end OSi_ReferSymbol - - .rodata - .public _start_ModuleParams -_start_ModuleParams: ; 0x02000BA0 - .word SDK_AUTOLOAD_LIST - .word SDK_AUTOLOAD_LIST_END - .word SDK_AUTOLOAD_START - .word SDK_STATIC_BSS_START - .word SDK_STATIC_BSS_END - .word 0 ; SDK_COMPRESSED_STATIC_END - .word 0x04027533 ; SDK_VERSION_ID - .word 0xDEC00621 ; SDK_NITROCODE_BE - .word 0x2106C0DE ; SDK_NITROCODE_LE diff --git a/lib/asm/include/crt0.inc b/lib/asm/include/crt0.inc index 12008f7e..e69de29b 100644 --- a/lib/asm/include/crt0.inc +++ b/lib/asm/include/crt0.inc @@ -1,11 +0,0 @@ -#include -#pragma once -.public _start -.public MIi_UncompressBackward -.public _start_AutoloadDoneCallback -.public OSi_ReferSymbol -.public NitroMain -.public _fp_init -.public __call_static_initializers -.public OS_IrqHandler -.public OS_IRQTable diff --git a/lib/asm/include/msl.inc b/lib/asm/include/msl.inc deleted file mode 100644 index ec559bb4..00000000 --- a/lib/asm/include/msl.inc +++ /dev/null @@ -1,99 +0,0 @@ -#include -#pragma once -.public OS_LockMutex -.public OS_UnlockMutex -.public OS_TryLockMutex -.public OS_AllocFromHeap -.public OS_FreeToHeap -.public abort -.public exit -.public nan -.public free -.public abs -.public __msl_assertion_failed -.public fread -.public fclose -.public ftell -.public fseek -.public rewind -.public memcpy -.public memmove -.public memset -.public memcmp -.public printf -.public vsprintf -.public snprintf -.public sprintf -.public qsort -.public rand -.public srand -.public sscanf -.public strlen -.public strcpy -.public strncpy -.public strcat -.public strncat -.public strcmp -.public strncmp -.public strchr -.public strspn -.public strtok -.public strstr -.public atof -.public strtoul -.public strtol -.public atoi -.public swprintf -.public wcslen -.public pow -.public strnicmp -.public _dadd -.public _d2f -.public _dfix -.public _dfixu -.public _dflt -.public _dfltu -.public _dmul -.public _dsub -.public _fadd -.public _dgeq -.public _dgr -.public _dleq -.public _dls -.public _dneq -.public _fgr -.public _fleq -.public _fls -.public _feq -.public _fneq -.public _fdiv -.public _f2d -.public _ffix -.public _ffixu -.public _fflt -.public _ffltu -.public _f_lltof -.public _f_ulltof -.public _fmul -.public _fsub -.public _ll_mod -.public _ll_sdiv -.public _ll_udiv -.public _ull_mod -.public _ll_mul -.public _s32_div_f -.public _u32_div_f -.public _ddiv -.public _fp_init -.public __call_static_initializers -.public _0210E404 -.public _0210E484 -.public _0210E504 -.public OSi_ThreadInfo -.public _021E58C0 -.public __global_destructor_chain -.public _Z14__ThrowHandlerP12ThrowContext -.public _ZNSt15__vector_commonILb1EE18throw_length_errorEv -.public _ZSt7nothrow -.public _ZdaPv -.public _ZnamRKSt9nothrow_t diff --git a/lib/asm/include/nitro.inc b/lib/asm/include/nitro.inc deleted file mode 100644 index a337a658..00000000 --- a/lib/asm/include/nitro.inc +++ /dev/null @@ -1,343 +0,0 @@ -#include -#pragma once -.public SVC_CpuSet -.public SVC_WaitByLoop -.public MIi_UncompressBackward -.public OSi_ReferSymbol -.public _version_NINTENDO_BACKUP -.public GX_ResetBankForClearImage -.public G2_GetBG0ScrPtr -.public G2S_GetBG0ScrPtr -.public G2_GetBG1ScrPtr -.public G2S_GetBG1ScrPtr -.public G2_GetBG2ScrPtr -.public G2S_GetBG2ScrPtr -.public G2_GetBG3ScrPtr -.public G2S_GetBG3ScrPtr -.public G3_LoadMtx44 -.public OSi_IrqCallback -.public OS_InitIrqTable -.public OS_SetIrqFunction -.public OSi_EnterDmaCallback -.public OSi_EnterTimerCallback -.public OS_SetIrqMask -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_ResetRequestIrqMask -.public OS_SetIrqStackChecker -.public OS_InitLock -.public OSi_DoLockByWord -.public OS_LockByWord -.public OSi_DoUnlockByWord -.public OS_UnlockByWord -.public OSi_DoTryLockByWord -.public OS_LockCartridge -.public OS_UnlockCartridge -.public OS_UnLockCartridge -.public OS_TryLockCartridge -.public OS_LockCard -.public OS_UnlockCard -.public OS_UnLockCard -.public OS_ReadOwnerOfLockWord -.public OS_GetLockID -.public OSi_GetUnusedThreadId -.public OSi_InsertLinkToQueue -.public OSi_RemoveLinkFromQueue -.public OSi_RemoveSpecifiedLinkFromQueue -.public OSi_RemoveMutexLinkFromQueue -.public OSi_InsertThreadToList -.public OSi_RemoveThreadFromList -.public OSi_RescheduleThread -.public OS_InitThread -.public OS_CreateThread -.public OS_ExitThread -.public OSi_ExitThread_ArgSpecified -.public OSi_ExitThread -.public OSi_ExitThread_Destroy -.public OS_SleepThread -.public OS_WakeupThread -.public OS_WakeupThreadDirect -.public OS_SetThreadPriority -.public OS_IsRunOnEmulator -.public OS_GetConsoleType -.public OS_InitMessageQueue -.public OS_SendMessage -.public OS_ReceiveMessage -.public OS_JamMessage -.public OS_InitMutex -.public OS_LockMutex -.public OS_UnlockMutex -.public DC_FlushAll -.public DC_InvalidateRange -.public DC_StoreRange -.public DC_FlushRange -.public DC_WaitWriteBufferEmpty -.public IC_InvalidateRange -.public OS_GetDTCMAddress -.public OS_EnableProtectionUnit -.public OS_DisableProtectionUnit -.public OS_SetDPermissionsForProtectionRegion -.public OSi_SetTimerReserved -.public OS_IsTickAvailable -.public OS_GetTick -.public OSi_SetTimer -.public OSi_InsertAlarm -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public OS_GetCpsrIrq -.public OS_SpinWait -.public OSi_SendToPxi -.public OS_GetMacAddress -.public OS_Terminate -.public OS_Halt -.public MI_SetWramBank -.public MI_DmaFill32 -.public MI_DmaCopy32 -.public MI_DmaCopy16 -.public MI_StopDma -.public MIi_CheckAnotherAutoDMA -.public MIi_CheckDma0SourceAddress -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public MIi_CpuClear32 -.public MIi_CpuCopy32 -.public MIi_CpuClearFast -.public MIi_CpuCopyFast -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public MIi_CardDmaCopy32 -.public SND_StopSeq -.public SND_PrepareSeq -.public SND_StartPreparedSeq -.public SND_PauseSeq -.public SND_SetPlayerTempoRatio -.public SND_SetPlayerVolume -.public SND_SetPlayerChannelPriority -.public SND_SetTrackPitch -.public SND_SetTrackPan -.public SND_SetTrackAllocatableChannel -.public SND_StartTimer -.public SND_StopTimer -.public SND_SetupAlarm -.public SND_LockChannel -.public SND_UnlockChannel -.public SND_SetChannelTimer -.public SND_SetChannelVolume -.public SND_SetChannelPan -.public SND_SetupChannelPcm -.public SND_InvalidateSeqData -.public SND_InvalidateBankData -.public SND_InvalidateWaveData -.public SND_SetMasterVolume -.public SND_SetOutputSelector -.public SND_SetMasterPan -.public SND_ResetMasterPan -.public SND_ReadDriverInfo -.public SND_Init -.public SND_RecvCommandReply -.public SND_FlushCommand -.public SND_WaitForCommandProc -.public SND_GetCurrentCommandTag -.public SND_IsFinishedCommandTag -.public AllocCommand -.public SND_GetPlayerStatus -.public SND_GetChannelStatus -.public SND_GetPlayerLocalVariable -.public SND_ReadChannelInfo -.public SND_ReadTrackInfo -.public SND_CalcChannelVolume -.public SND_AssignWaveArc -.public SND_DestroyBank -.public SND_DestroyWaveArc -.public SND_GetFirstInstDataPos -.public SND_GetNextInstData -.public SND_GetWaveDataCount -.public SND_SetWaveDataAddress -.public SND_GetWaveDataAddress -.public PXI_Init -.public PXI_SetFifoRecvCallback -.public PXI_IsCallbackReady -.public PXI_SendWordByFifo -.public FS_InitArchive -.public FS_FindArchive -.public FS_RegisterArchiveName -.public FS_ReleaseArchiveName -.public FS_LoadArchive -.public FS_UnloadArchive -.public FS_LoadArchiveTables -.public FS_UnloadArchiveTables -.public FS_SetArchiveProc -.public FS_NotifyArchiveAsyncEnd -.public FS_Init -.public FS_IsAvailable -.public FS_InitFile -.public FS_ConvertPathToFileID -.public FS_OpenFileDirect -.public FS_OpenFileFast -.public FS_OpenFile -.public FS_CloseFile -.public FS_WaitAsync -.public FS_ReadFile -.public FS_SeekFile -.public FS_ChangeDir -.public FS_SetDefaultDMA -.public FS_TryLoadTable -.public FS_LoadOverlayInfo -.public FS_LoadOverlayImageAsync -.public FS_LoadOverlayImage -.public FS_StartOverlay -.public FS_LoadOverlay -.public FS_UnloadOverlay -.public DGT_Hash1Reset -.public DGT_Hash1SetSource -.public DGT_Hash1GetDigest_R -.public TP_Init -.public TP_GetUserInfo -.public TP_SetCalibrateParam -.public TP_RequestAutoSamplingStartAsync -.public TP_RequestAutoSamplingStopAsync -.public TP_GetLatestRawPointInAuto -.public TP_GetLatestIndexInAuto -.public TP_GetCalibratedPoint -.public TP_WaitBusy -.public TP_CheckBusy -.public MIC_Init -.public MIC_StartAutoSamplingAsync -.public MIC_StartAutoSampling -.public MIC_StopAutoSampling -.public MIC_GetLastSamplingAddress -.public PM_Init -.public PM_SetBackLight -.public PM_ForceToPowerOff -.public PM_SetAmp -.public PM_SetAmpGain -.public PM_GetBackLight -.public PM_GoSleepMode -.public PM_SetLCDPower -.public PMi_SendLEDPatternCommand -.public PM_GetLEDPattern -.public PM_PrependPreSleepCallback -.public PM_AppendPostSleepCallback -.public PM_DeletePreSleepCallback -.public PM_DeletePostSleepCallback -.public RTC_Init -.public RTC_GetDate -.public RTC_GetTime -.public RTC_GetDateTimeAsync -.public RTC_GetDateTime -.public RTC_ConvertDateToDay -.public RTC_ConvertDateTimeToSecond -.public RTC_ConvertDayToDate -.public RTC_ConvertSecondToDateTime -.public CARD_GetResultCode -.public CARD_LockRom -.public CARD_UnlockRom -.public CARD_LockBackup -.public CARD_UnlockBackup -.public CARD_SetCacheFlushThreshold -.public CARD_IdentifyBackup -.public CARD_WaitBackupAsync -.public CARD_TryWaitBackupAsync -.public CARD_CancelBackupAsync -.public CARDi_ReadRom -.public CARD_Init -.public CARD_IsPulledOut -.public CARD_SetSpiReadWaitCycles -.public CARD_SetSpiWriteWaitCycles -.public CARD_SpiWaitInit -.public CARD_SpiWaitReadRange -.public CARD_SpiWaitWriteRange -.public CARD_SpiWaitGetStatus -.public WM_Init -.public WM_Finish -.public WMi_GetStatusAddress -.public WM_SetIndCallback -.public WM_SetPortCallback -.public WM_ReadStatus -.public WM_ReadMPData -.public WM_GetAllowedChannel -.public WM_GetLinkLevel -.public WM_GetDispersionBeaconPeriod -.public WM_GetDispersionScanPeriod -.public WM_GetOtherElements -.public WM_GetNextTgid -.public WM_Enable -.public WM_Disable -.public WM_PowerOn -.public WM_PowerOff -.public WM_Initialize -.public WM_InitializeForListening -.public WM_Reset -.public WM_End -.public WM_SetParentParameter -.public WMi_StartParentEx -.public WM_StartParent -.public WM_EndParent -.public WM_StartScan -.public WM_StartScanEx -.public WM_EndScan -.public WM_StartConnectEx -.public WM_Disconnect -.public WM_StartMPEx -.public WM_StartMP -.public WM_SetMPDataToPortEx -.public WM_EndMP -.public WM_StartDCF -.public WM_SetDCFData -.public WM_EndDCF -.public WM_StartDataSharing -.public WM_StepDataSharing -.public WM_GetSharedDataAddress -.public WM_StartKeySharing -.public WM_EndKeySharing -.public WM_SetWEPKey -.public WM_SetWEPKeyEx -.public WM_SetGameInfo -.public WM_SetBeaconIndication -.public WM_SetLifeTime -.public WM_MeasureChannel -.public WM_SetEntry -.public CTRDG_IsAgbCartridge -.public CTRDG_GetAgbGameCode -.public CTRDG_GetAgbMakerCode -.public CTRDG_IsPulledOut -.public CTRDG_IsExisting -.public CTRDG_CpuCopy8 -.public CTRDG_CpuCopy16 -.public CTRDG_CpuCopy32 -.public CTRDG_Read32 -.public CTRDG_Enable -.public CTRDG_Init -.public CTRDG_TerminateForPulledOut -.public CTRDG_IdentifyAgbBackup -.public CTRDG_ReadAgbFlash -.public CTRDG_WriteAndVerifyAgbFlashAsync -.public MATH_CountPopulation -.public MATH_CalcMD5 -.public MATH_CalcSHA1 -.public MATHi_CRC8InitTable -.public MATHi_CRC16InitTable -.public MATHi_CRC16InitTableRev -.public MATHi_CRC16Update -.public MATHi_CRC16UpdateRev -.public MATHi_CRC32InitTableRev -.public MATH_CalcCRC8 -.public MATH_CalcCRC16 -.public MATH_CalcCRC16CCITT -.public MATH_CalcCRC32 -.public MATH_QSort -.public STD_CopyLString -.public STD_GetStringLength -.public STD_CompareString -.public STD_CompareNString -.public _ll_mod -.public _ll_sdiv -.public _ll_udiv -.public _0210D750 -.public GXi_DmaId -.public OSi_ThreadInfo -.public __global_destructor_chain -.public OS_IrqHandler -.public MIi_DmaSetParams -.public SDK_OVERLAY_DIGEST_END -.public SDK_OVERLAY_DIGEST diff --git a/lib/asm/msl.s b/lib/asm/msl.s deleted file mode 100644 index da02a699..00000000 --- a/lib/asm/msl.s +++ /dev/null @@ -1,20392 +0,0 @@ - .include "asm/macros.inc" - .include "msl.inc" - .include "global.inc" - .public __sinit__ - .public __exception_table_start__ - .public __exception_table_end__ - .type __sinit__, @function - .public OSi_ThreadInfo - .type OSi_ThreadInfo, @function - - .bss - - ; msl - .public _021E5390 - .type _021E5390, @function -_021E5390: - .space 0x10 - -_021E53A0: - .space 0x100 - -_021E54A0: - .space 0x24 - -_021E54C4: - .space 0x24 - -_021E54E8: - .space 0x48 - -_021E5530: - .space 0x60 - -_021E5590: - .space 0x30 - -_021E55C0: - .space 0x100 - -_021E56C0: - .space 0x100 - -_021E57C0: - .space 0x100 - - .public _021E58C0 -_021E58C0: - .space 0x4 - -_021E58C4: - .space 0x1C - - .public _ZSt7nothrow -_ZSt7nothrow: - .space 0x4 - -_ZSt13__new_handler: - .space 0x4 - -__global_destructor_chain: ; 0x021E58E8 - .space 4 - - .text - - ; MSL_C_NITRO_Ai_LE.a - - arm_func_start abort -abort: ; 0x020E47C0 - stmdb sp!, {r3, lr} - mov r0, #1 - bl raise - ldr r1, _020E47E0 ; =_021E5390 - mov r0, #1 - str r0, [r1, #0xc] - bl exit - ldmia sp!, {r3, pc} - .align 2, 0 -_020E47E0: .word _021E5390 - arm_func_end abort - - arm_func_start exit -exit: ; 0x020E47E4 - stmdb sp!, {r4, lr} - ldr r1, _020E482C ; =_021E5390 - mov r4, r0 - ldr r0, [r1, #0xc] - cmp r0, #0 - bne _020E4820 - bl __destroy_global_chain - ldr r0, _020E482C ; =_021E5390 - ldr r0, [r0, #4] - cmp r0, #0 - beq _020E4820 - blx r0 - ldr r0, _020E482C ; =_021E5390 - mov r1, #0 - str r1, [r0, #4] -_020E4820: - mov r0, r4 - bl __exit - ldmia sp!, {r4, pc} - .align 2, 0 -_020E482C: .word _021E5390 - arm_func_end exit - - arm_func_start __exit -__exit: ; 0x020E4830 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020E4940 ; =_021E54E8 - bl OS_TryLockMutex - cmp r0, #0 - bne _020E4868 - ldr r0, _020E4944 ; =OSi_ThreadInfo - ldr r1, _020E4948 ; =_021E54A0 - ldr r2, [r0, #4] - ldr r0, _020E494C ; =_021E54C4 - ldr r3, [r2, #0x6c] - mov r2, #1 - str r3, [r1] - str r2, [r0] - b _020E48C0 -_020E4868: - ldr r0, _020E4944 ; =OSi_ThreadInfo - ldr r1, _020E4948 ; =_021E54A0 - ldr r0, [r0, #4] - ldr r1, [r1] - ldr r0, [r0, #0x6c] - cmp r1, r0 - bne _020E4898 - ldr r0, _020E494C ; =_021E54C4 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - b _020E48C0 -_020E4898: - ldr r0, _020E4940 ; =_021E54E8 - bl OS_LockMutex - ldr r0, _020E4944 ; =OSi_ThreadInfo - ldr r1, _020E4948 ; =_021E54A0 - ldr r2, [r0, #4] - ldr r0, _020E494C ; =_021E54C4 - ldr r3, [r2, #0x6c] - mov r2, #1 - str r3, [r1] - str r2, [r0] -_020E48C0: - ldr r4, _020E4950 ; =_021E5390 - ldr r0, [r4, #8] - cmp r0, #0 - ble _020E48F4 - ldr r5, _020E4954 ; =_021E53A0 -_020E48D4: - ldr r0, [r4, #8] - sub r1, r0, #1 - ldr r0, [r5, r1, lsl #2] - str r1, [r4, #8] - blx r0 - ldr r0, [r4, #8] - cmp r0, #0 - bgt _020E48D4 -_020E48F4: - ldr r0, _020E494C ; =_021E54C4 - ldr r1, [r0] - subs r1, r1, #1 - str r1, [r0] - bne _020E4910 - ldr r0, _020E4940 ; =_021E54E8 - bl OS_UnlockMutex -_020E4910: - ldr r0, _020E4950 ; =_021E5390 - ldr r0, [r0] - cmp r0, #0 - beq _020E4930 - blx r0 - ldr r0, _020E4950 ; =_021E5390 - mov r1, #0 - str r1, [r0] -_020E4930: - mov r0, #0 - bl fflush - bl _ExitProcess - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E4940: .word _021E54E8 -_020E4944: .word OSi_ThreadInfo -_020E4948: .word _021E54A0 -_020E494C: .word _021E54C4 -_020E4950: .word _021E5390 -_020E4954: .word _021E53A0 - arm_func_end __exit - - arm_func_start nan -nan: ; 0x020E4958 - ldr r0, _020E4968 ; =_021110EC - ldr ip, _020E496C ; =_f2d - ldr r0, [r0] - bx ip - .align 2, 0 -_020E4968: .word _021110EC -_020E496C: .word _f2d - arm_func_end nan - - arm_func_start malloc -malloc: ; 0x020E4970 - stmdb sp!, {r3, lr} - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl __sys_alloc - ldmia sp!, {r3, pc} - arm_func_end malloc - - arm_func_start free -free: ; 0x020E4988 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl __sys_free - ldmia sp!, {r3, pc} - arm_func_end free - - arm_func_start __flush_line_buffered_output_files -__flush_line_buffered_output_files: ; 0x020E499C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _020E4A24 ; =_02110FCC - mov r4, #0 - mov r5, #1 - mov r8, r0 - mvn sb, #0 - mov r7, r4 - mov r6, #0x4c -_020E49BC: - ldr r1, [r0, #4] - mov r2, r1, lsl #0x16 - movs r2, r2, lsr #0x1d - beq _020E49FC - mov r1, r1, lsl #0x19 - mov r1, r1, lsr #0x1e - tst r1, #1 - beq _020E49FC - ldr r1, [r0, #8] - mov r1, r1, lsl #0x1d - mov r1, r1, lsr #0x1d - cmp r1, #1 - bne _020E49FC - bl fflush - cmp r0, #0 - movne r4, sb -_020E49FC: - cmp r5, #3 - movge r0, r7 - bge _020E4A14 - mul r0, r5, r6 - add r5, r5, #1 - add r0, r8, r0 -_020E4A14: - cmp r0, #0 - bne _020E49BC - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020E4A24: .word _02110FCC - arm_func_end __flush_line_buffered_output_files - - arm_func_start __flush_all -__flush_all: ; 0x020E4A28 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _020E4A8C ; =_02110FCC - mov r4, #0 - mov r5, #1 - mov r8, r0 - mvn sb, #0 - mov r7, r4 - mov r6, #0x4c -_020E4A48: - ldr r1, [r0, #4] - mov r1, r1, lsl #0x16 - movs r1, r1, lsr #0x1d - beq _020E4A64 - bl fflush - cmp r0, #0 - movne r4, sb -_020E4A64: - cmp r5, #3 - movge r0, r7 - bge _020E4A7C - mul r0, r5, r6 - add r5, r5, #1 - add r0, r8, r0 -_020E4A7C: - cmp r0, #0 - bne _020E4A48 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020E4A8C: .word _02110FCC - arm_func_end __flush_all - - arm_func_start abs -abs: ; 0x020E4A90 - cmp r0, #0 - rsblt r0, r0, #0 - bx lr - arm_func_end abs - - arm_func_start __msl_assertion_failed -__msl_assertion_failed: ; 0x020E4A9C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov lr, r1 - mov ip, r2 - str r3, [sp] - ldr r0, _020E4AD4 ; =_021110B0 - mov r1, r4 - mov r2, lr - mov r3, ip - bl printf - bl abort - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020E4AD4: .word _021110B0 - arm_func_end __msl_assertion_failed - - arm_func_start __convert_from_newlines -__convert_from_newlines: ; 0x020E4AD8 - bx lr - arm_func_end __convert_from_newlines - - arm_func_start __convert_to_newlines -__convert_to_newlines: ; 0x020E4ADC - bx lr - arm_func_end __convert_to_newlines - - arm_func_start __prep_buffer -__prep_buffer: ; 0x020E4AE0 - ldr r1, [r0, #0x1c] - str r1, [r0, #0x24] - ldr r3, [r0, #0x20] - str r3, [r0, #0x28] - ldr r2, [r0, #0x18] - ldr r1, [r0, #0x2c] - and r1, r2, r1 - sub r1, r3, r1 - str r1, [r0, #0x28] - ldr r1, [r0, #0x18] - str r1, [r0, #0x34] - bx lr - arm_func_end __prep_buffer - - arm_func_start __load_buffer -__load_buffer: ; 0x020E4B10 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r2 - mov r4, r0 - mov r6, r1 - bl __prep_buffer - cmp r5, #1 - ldreq r0, [r4, #0x20] - add r2, r4, #0x28 - streq r0, [r4, #0x28] - ldr r0, [r4] - ldr r1, [r4, #0x1c] - ldr r3, [r4, #0x48] - ldr ip, [r4, #0x3c] - blx ip - cmp r0, #2 - moveq r1, #0 - streq r1, [r4, #0x28] - cmp r6, #0 - ldrne r1, [r4, #0x28] - strne r1, [r6] - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, [r4, #0x18] - ldr r0, [r4, #0x28] - add r0, r1, r0 - str r0, [r4, #0x18] - ldr r0, [r4, #4] - mov r0, r0, lsl #0x13 - movs r0, r0, lsr #0x1f - bne _020E4B94 - ldr r0, [r4, #0x1c] - add r1, r4, #0x28 - bl __convert_to_newlines -_020E4B94: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end __load_buffer - - arm_func_start __flush_buffer -__flush_buffer: ; 0x020E4B9C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r2, [r5, #0x24] - ldr r0, [r5, #0x1c] - mov r4, r1 - subs r0, r2, r0 - beq _020E4C14 - str r0, [r5, #0x28] - ldr r0, [r5, #4] - mov r0, r0, lsl #0x13 - movs r0, r0, lsr #0x1f - bne _020E4BD8 - ldr r0, [r5, #0x1c] - add r1, r5, #0x28 - bl __convert_from_newlines -_020E4BD8: - ldr r0, [r5] - ldr r1, [r5, #0x1c] - ldr r3, [r5, #0x48] - ldr ip, [r5, #0x40] - add r2, r5, #0x28 - blx ip - cmp r4, #0 - ldrne r1, [r5, #0x28] - strne r1, [r4] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #0x18] - ldr r0, [r5, #0x28] - add r0, r1, r0 - str r0, [r5, #0x18] -_020E4C14: - mov r0, r5 - bl __prep_buffer - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __flush_buffer - - arm_func_start fread -fread: ; 0x020E4C24 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r4, _020E4D1C ; =_02110FCC - mov r7, r3 - cmp r7, r4 - moveq r6, #2 - mov sl, r0 - movne r6, #5 - mov r0, #0x18 - mul r4, r6, r0 - ldr r5, _020E4D20 ; =_021E54E8 - mov sb, r1 - add r0, r5, r4 - mov r8, r2 - bl OS_TryLockMutex - cmp r0, #0 - bne _020E4C88 - ldr r0, _020E4D24 ; =OSi_ThreadInfo - ldr r2, _020E4D28 ; =_021E54A0 - ldr r1, [r0, #4] - ldr r0, _020E4D2C ; =_021E54C4 - ldr r3, [r1, #0x6c] - mov r1, #1 - str r3, [r2, r6, lsl #2] - str r1, [r0, r6, lsl #2] - b _020E4CE0 -_020E4C88: - ldr r0, _020E4D24 ; =OSi_ThreadInfo - ldr r1, _020E4D28 ; =_021E54A0 - ldr r0, [r0, #4] - ldr r1, [r1, r6, lsl #2] - ldr r0, [r0, #0x6c] - cmp r1, r0 - bne _020E4CB8 - ldr r1, _020E4D2C ; =_021E54C4 - ldr r0, [r1, r6, lsl #2] - add r0, r0, #1 - str r0, [r1, r6, lsl #2] - b _020E4CE0 -_020E4CB8: - add r0, r5, r4 - bl OS_LockMutex - ldr r0, _020E4D24 ; =OSi_ThreadInfo - ldr r2, _020E4D28 ; =_021E54A0 - ldr r1, [r0, #4] - ldr r0, _020E4D2C ; =_021E54C4 - ldr r3, [r1, #0x6c] - mov r1, #1 - str r3, [r2, r6, lsl #2] - str r1, [r0, r6, lsl #2] -_020E4CE0: - mov r0, sl - mov r1, sb - mov r2, r8 - mov r3, r7 - bl __fread - ldr r1, _020E4D2C ; =_021E54C4 - mov r7, r0 - ldr r0, [r1, r6, lsl #2] - subs r0, r0, #1 - str r0, [r1, r6, lsl #2] - bne _020E4D14 - add r0, r5, r4 - bl OS_UnlockMutex -_020E4D14: - mov r0, r7 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020E4D1C: .word _02110FCC -_020E4D20: .word _021E54E8 -_020E4D24: .word OSi_ThreadInfo -_020E4D28: .word _021E54A0 -_020E4D2C: .word _021E54C4 - arm_func_end fread - - arm_func_start __fread -__fread: ; 0x020E4D30 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov r7, r3 - mov sb, r0 - mov r8, r1 - mov r0, r7 - mov r1, #0 - mov r4, r2 - bl fwide - cmp r0, #0 - bne _020E4D68 - mov r0, r7 - mvn r1, #0 - bl fwide -_020E4D68: - muls r4, r8, r4 - beq _020E4D8C - ldrb r0, [r7, #0xd] - cmp r0, #0 - bne _020E4D8C - ldr r1, [r7, #4] - mov r0, r1, lsl #0x16 - movs r0, r0, lsr #0x1d - bne _020E4D98 -_020E4D8C: - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_020E4D98: - mov r0, r1, lsl #0x13 - movs r0, r0, lsr #0x1f - movne r0, r1, lsl #0x19 - movne r0, r0, lsr #0x1e - ldr r1, [r7, #8] - cmpne r0, #2 - mov r6, #1 - mov r0, r1, lsl #0x1d - movne r6, #0 - movs r0, r0, lsr #0x1d - bne _020E4DEC - ldr r0, [r7, #4] - mov r0, r0, lsl #0x1b - mov r0, r0, lsr #0x1d - tst r0, #1 - beq _020E4DEC - bic r0, r1, #7 - orr r0, r0, #2 - str r0, [r7, #8] - mov r0, #0 - str r0, [r7, #0x28] -_020E4DEC: - ldr r0, [r7, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - cmp r0, #2 - bhs _020E4E18 - mov r0, #1 - strb r0, [r7, #0xd] - mov r0, #0 - add sp, sp, #4 - str r0, [r7, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_020E4E18: - ldr r0, [r7, #4] - mov r0, r0, lsl #0x19 - mov r0, r0, lsr #0x1e - tst r0, #1 - beq _020E4E50 - bl __flush_line_buffered_output_files - cmp r0, #0 - beq _020E4E50 - mov r0, #1 - strb r0, [r7, #0xd] - mov r0, #0 - add sp, sp, #4 - str r0, [r7, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_020E4E50: - cmp r4, #0 - mov r5, #0 - beq _020E4F14 - ldr r0, [r7, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - cmp r0, #3 - blo _020E4F14 - mov sl, r5 -_020E4E74: - mov r0, r7 - mov r1, sl - bl fwide - cmp r0, #1 - ldr r0, [r7, #8] - bne _020E4EA8 - mov r0, r0, lsl #0x1d - add r0, r7, r0, lsr #28 - ldrh r0, [r0, #0xe] - add r5, r5, #2 - sub r4, r4, #2 - strh r0, [sb], #2 - b _020E4EC0 -_020E4EA8: - mov r0, r0, lsl #0x1d - add r0, r7, r0, lsr #29 - ldrb r0, [r0, #0xf] - add r5, r5, #1 - sub r4, r4, #1 - strb r0, [sb], #1 -_020E4EC0: - ldr r1, [r7, #8] - cmp r4, #0 - mov r0, r1, lsl #0x1d - mov r0, r0, lsr #0x1d - sub r0, r0, #1 - bic r1, r1, #7 - and r0, r0, #7 - orr r0, r1, r0 - str r0, [r7, #8] - beq _020E4EFC - ldr r0, [r7, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - cmp r0, #3 - bhs _020E4E74 -_020E4EFC: - ldr r0, [r7, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - cmp r0, #2 - ldreq r0, [r7, #0x30] - streq r0, [r7, #0x28] -_020E4F14: - cmp r4, #0 - beq _020E4FD8 - ldr r0, [r7, #0x28] - cmp r0, #0 - cmpeq r6, #0 - beq _020E4FD8 - mov sl, #0 -_020E4F30: - ldr r0, [r7, #0x28] - cmp r0, #0 - bne _020E4F84 - mov r0, r7 - mov r1, sl - mov r2, sl - bl __load_buffer - cmp r0, #0 - beq _020E4F84 - cmp r0, #1 - mov r0, #1 - streqb r0, [r7, #0xd] - beq _020E4F74 - ldr r1, [r7, #8] - bic r1, r1, #7 - str r1, [r7, #8] - strb r0, [r7, #0xc] -_020E4F74: - mov r0, #0 - str r0, [r7, #0x28] - mov r4, #0 - b _020E4FD8 -_020E4F84: - ldr r0, [r7, #0x28] - str r0, [sp] - cmp r0, r4 - strhi r4, [sp] - ldr r1, [r7, #0x24] - ldr r2, [sp] - mov r0, sb - bl memcpy - ldr r2, [sp] - ldr r0, [r7, #0x24] - subs r4, r4, r2 - add r0, r0, r2 - str r0, [r7, #0x24] - ldr r1, [r7, #0x28] - ldr r0, [sp] - add sb, sb, r2 - sub r0, r1, r0 - add r5, r5, r2 - str r0, [r7, #0x28] - cmpne r6, #0 - bne _020E4F30 -_020E4FD8: - cmp r4, #0 - beq _020E5064 - cmp r6, #0 - bne _020E5064 - ldr r6, [r7, #0x1c] - ldr sl, [r7, #0x20] - add r1, sp, #0 - str sb, [r7, #0x1c] - mov r0, r7 - mov r2, #1 - str r4, [r7, #0x20] - bl __load_buffer - cmp r0, #0 - beq _020E5044 - cmp r0, #1 - mov r0, #1 - bne _020E502C - strb r0, [r7, #0xd] - mov r0, #0 - str r0, [r7, #0x28] - b _020E5044 -_020E502C: - ldr r1, [r7, #8] - bic r1, r1, #7 - str r1, [r7, #8] - strb r0, [r7, #0xc] - mov r0, #0 - str r0, [r7, #0x28] -_020E5044: - ldr r1, [sp] - mov r0, r7 - str r6, [r7, #0x1c] - str sl, [r7, #0x20] - add r5, r5, r1 - bl __prep_buffer - mov r0, #0 - str r0, [r7, #0x28] -_020E5064: - mov r0, r5 - mov r1, r8 - bl _u32_div_f - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end __fread - - arm_func_start __fwrite -__fwrite: ; 0x020E5078 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r3 - mov sl, r0 - str r1, [sp] - mov r0, sb - mov r1, #0 - mov r4, r2 - bl fwide - cmp r0, #0 - bne _020E50B0 - mov r0, sb - mvn r1, #0 - bl fwide -_020E50B0: - ldr r0, [sp] - muls r5, r0, r4 - beq _020E50D8 - ldrb r0, [sb, #0xd] - cmp r0, #0 - bne _020E50D8 - ldr r1, [sb, #4] - mov r0, r1, lsl #0x16 - movs r0, r0, lsr #0x1d - bne _020E50E4 -_020E50D8: - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E50E4: - mov r0, r1, lsl #0x13 - movs r0, r0, lsr #0x1f - movne r0, r1, lsl #0x19 - movne r0, r0, lsr #0x1e - cmpne r0, #2 - ldr r1, [sb, #8] - cmpne r0, #1 - mov r8, #1 - mov r0, r1, lsl #0x1d - movne r8, #0 - movs r0, r0, lsr #0x1d - bne _020E513C - ldr r0, [sb, #4] - mov r0, r0, lsl #0x1b - mov r0, r0, lsr #0x1d - tst r0, #2 - beq _020E513C - bic r0, r1, #7 - orr r1, r0, #1 - mov r0, sb - str r1, [sb, #8] - bl __prep_buffer -_020E513C: - ldr r0, [sb, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - cmp r0, #1 - beq _020E5168 - mov r0, #1 - strb r0, [sb, #0xd] - mov r0, #0 - add sp, sp, #8 - str r0, [sb, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E5168: - cmp r5, #0 - mov r6, #0 - beq _020E5290 - ldr r0, [sb, #0x1c] - ldr r2, [sb, #0x24] - cmp r2, r0 - cmpeq r8, #0 - beq _020E5290 - ldr r1, [sb, #0x20] - sub r0, r2, r0 - sub r0, r1, r0 - str r0, [sb, #0x28] - mov fp, #0xa - mov r4, #0 -_020E51A0: - ldr r0, [sb, #0x28] - mov r7, r4 - str r0, [sp, #4] - cmp r0, r5 - strhi r5, [sp, #4] - ldr r0, [sb, #4] - mov r0, r0, lsl #0x19 - mov r0, r0, lsr #0x1e - cmp r0, #1 - bne _020E51F0 - ldr r2, [sp, #4] - cmp r2, #0 - beq _020E51F0 - mov r0, sl - mov r1, fp - bl __memrchr - movs r7, r0 - addne r0, r7, #1 - subne r0, r0, sl - strne r0, [sp, #4] -_020E51F0: - ldr r2, [sp, #4] - cmp r2, #0 - beq _020E5230 - ldr r0, [sb, #0x24] - mov r1, sl - bl memcpy - ldr r2, [sp, #4] - ldr r0, [sb, #0x24] - add sl, sl, r2 - add r0, r0, r2 - str r0, [sb, #0x24] - ldr r1, [sb, #0x28] - ldr r0, [sp, #4] - sub r5, r5, r2 - sub r0, r1, r0 - str r0, [sb, #0x28] -_020E5230: - ldr r0, [sb, #0x28] - cmp r0, #0 - beq _020E5254 - cmp r7, #0 - bne _020E5254 - ldr r0, [sb, #4] - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1e - bne _020E527C -_020E5254: - mov r0, sb - mov r1, #0 - bl __flush_buffer - cmp r0, #0 - beq _020E527C - mov r0, #1 - strb r0, [sb, #0xd] - mov r5, #0 - str r5, [sb, #0x28] - b _020E5290 -_020E527C: - ldr r0, [sp, #4] - cmp r5, #0 - add r6, r6, r0 - cmpne r8, #0 - bne _020E51A0 -_020E5290: - cmp r5, #0 - beq _020E52FC - cmp r8, #0 - bne _020E52FC - ldr r4, [sb, #0x1c] - ldr r7, [sb, #0x20] - add r2, sl, r5 - str sl, [sb, #0x1c] - str r5, [sb, #0x20] - add r1, sp, #4 - mov r0, sb - str r2, [sb, #0x24] - bl __flush_buffer - cmp r0, #0 - ldreq r0, [sp, #4] - addeq r6, r6, r0 - beq _020E52E4 - mov r0, #1 - strb r0, [sb, #0xd] - mov r0, #0 - str r0, [sb, #0x28] -_020E52E4: - str r4, [sb, #0x1c] - mov r0, sb - str r7, [sb, #0x20] - bl __prep_buffer - mov r0, #0 - str r0, [sb, #0x28] -_020E52FC: - ldr r0, [sb, #4] - ldr r1, [sp] - mov r0, r0, lsl #0x19 - mov r0, r0, lsr #0x1e - cmp r0, #2 - movne r0, #0 - strne r0, [sb, #0x28] - mov r0, r6 - bl _u32_div_f - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end __fwrite - - arm_func_start fclose -fclose: ; 0x020E5328 - stmdb sp!, {r3, r4, r5, lr} - movs r5, r0 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #4] - mov r1, r1, lsl #0x16 - movs r1, r1, lsr #0x1d - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl fflush - mov r4, r0 - ldr r0, [r5] - ldr r1, [r5, #0x44] - blx r1 - ldr r1, [r5, #4] - mov r2, #0 - bic r1, r1, #0x380 - str r1, [r5, #4] - str r2, [r5] - ldr r1, [r5, #8] - mov r1, r1, lsl #0x1c - movs r1, r1, lsr #0x1f - subne r0, r2, #1 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - cmpeq r0, #0 - movne r2, #1 - rsb r0, r2, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end fclose - - arm_func_start fflush -fflush: ; 0x020E539C - stmdb sp!, {r4, lr} - movs r4, r0 - bne _020E53B0 - bl __flush_all - ldmia sp!, {r4, pc} -_020E53B0: - ldrb r0, [r4, #0xd] - cmp r0, #0 - bne _020E53CC - ldr r0, [r4, #4] - mov r1, r0, lsl #0x16 - movs r1, r1, lsr #0x1d - bne _020E53D4 -_020E53CC: - mvn r0, #0 - ldmia sp!, {r4, pc} -_020E53D4: - mov r0, r0, lsl #0x1b - mov r0, r0, lsr #0x1d - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #8] - mov r1, r0, lsl #0x1d - mov r1, r1, lsr #0x1d - cmp r1, #3 - bichs r0, r0, #7 - orrhs r0, r0, #2 - strhs r0, [r4, #8] - ldr r0, [r4, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - cmp r0, #2 - moveq r0, #0 - streq r0, [r4, #0x28] - ldr r0, [r4, #8] - mov r1, r0, lsl #0x1d - mov r1, r1, lsr #0x1d - cmp r1, #1 - beq _020E5440 - bic r0, r0, #7 - str r0, [r4, #8] - mov r0, #0 - ldmia sp!, {r4, pc} -_020E5440: - mov r0, r4 - mov r1, #0 - bl __flush_buffer - cmp r0, #0 - mov r0, #0 - beq _020E546C - mov r1, #1 - strb r1, [r4, #0xd] - str r0, [r4, #0x28] - sub r0, r0, #1 - ldmia sp!, {r4, pc} -_020E546C: - ldr r1, [r4, #8] - bic r1, r1, #7 - str r1, [r4, #8] - str r0, [r4, #0x18] - str r0, [r4, #0x28] - ldmia sp!, {r4, pc} - arm_func_end fflush - - arm_func_start _ftell -_ftell: ; 0x020E5484 - ldr r1, [r0, #4] - mov r1, r1, lsl #0x16 - mov r1, r1, lsr #0x1d - and r1, r1, #0xff - add r1, r1, #0xff - and r1, r1, #0xff - cmp r1, #1 - bhi _020E54B0 - ldrb r1, [r0, #0xd] - cmp r1, #0 - beq _020E54C4 -_020E54B0: - ldr r0, _020E54FC ; =_021E58C0 - mov r1, #0x28 - str r1, [r0] - sub r0, r1, #0x29 - bx lr -_020E54C4: - ldr r1, [r0, #8] - mov r1, r1, lsl #0x1d - movs ip, r1, lsr #0x1d - ldreq r0, [r0, #0x18] - bxeq lr - ldr r2, [r0, #0x24] - ldr r1, [r0, #0x1c] - ldr r3, [r0, #0x34] - sub r0, r2, r1 - cmp ip, #3 - add r0, r3, r0 - subhs r1, ip, #2 - subhs r0, r0, r1 - bx lr - .align 2, 0 -_020E54FC: .word _021E58C0 - arm_func_end _ftell - - arm_func_start ftell -ftell: ; 0x020E5500 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _020E5600 ; =_02110FCC - mov r7, r0 - cmp r7, r1 - moveq r6, #2 - beq _020E5538 - ldr r0, _020E5604 ; =_02111018 - cmp r7, r0 - moveq r6, #3 - beq _020E5538 - ldr r0, _020E5608 ; =_02111064 - cmp r7, r0 - moveq r6, #4 - movne r6, #5 -_020E5538: - mov r0, #0x18 - mul r4, r6, r0 - ldr r5, _020E560C ; =_021E54E8 - add r0, r5, r4 - bl OS_TryLockMutex - cmp r0, #0 - bne _020E5578 - ldr r0, _020E5610 ; =OSi_ThreadInfo - ldr r2, _020E5614 ; =_021E54A0 - ldr r1, [r0, #4] - ldr r0, _020E5618 ; =_021E54C4 - ldr r3, [r1, #0x6c] - mov r1, #1 - str r3, [r2, r6, lsl #2] - str r1, [r0, r6, lsl #2] - b _020E55D0 -_020E5578: - ldr r0, _020E5610 ; =OSi_ThreadInfo - ldr r1, _020E5614 ; =_021E54A0 - ldr r0, [r0, #4] - ldr r1, [r1, r6, lsl #2] - ldr r0, [r0, #0x6c] - cmp r1, r0 - bne _020E55A8 - ldr r1, _020E5618 ; =_021E54C4 - ldr r0, [r1, r6, lsl #2] - add r0, r0, #1 - str r0, [r1, r6, lsl #2] - b _020E55D0 -_020E55A8: - add r0, r5, r4 - bl OS_LockMutex - ldr r0, _020E5610 ; =OSi_ThreadInfo - ldr r2, _020E5614 ; =_021E54A0 - ldr r1, [r0, #4] - ldr r0, _020E5618 ; =_021E54C4 - ldr r3, [r1, #0x6c] - mov r1, #1 - str r3, [r2, r6, lsl #2] - str r1, [r0, r6, lsl #2] -_020E55D0: - mov r0, r7 - bl _ftell - ldr r1, _020E5618 ; =_021E54C4 - mov r7, r0 - ldr r0, [r1, r6, lsl #2] - subs r0, r0, #1 - str r0, [r1, r6, lsl #2] - bne _020E55F8 - add r0, r5, r4 - bl OS_UnlockMutex -_020E55F8: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E5600: .word _02110FCC -_020E5604: .word _02111018 -_020E5608: .word _02111064 -_020E560C: .word _021E54E8 -_020E5610: .word OSi_ThreadInfo -_020E5614: .word _021E54A0 -_020E5618: .word _021E54C4 - arm_func_end ftell - - arm_func_start _fseek -_fseek: ; 0x020E561C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r1, [r5, #4] - mov r4, r2 - mov r1, r1, lsl #0x16 - mov r1, r1, lsr #0x1d - and r1, r1, #0xff - cmp r1, #1 - ldreqb r1, [r5, #0xd] - cmpeq r1, #0 - beq _020E5668 - ldr r0, _020E5800 ; =_021E58C0 - mov r1, #0x28 - str r1, [r0] - sub r0, r1, #0x29 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr -_020E5668: - ldr r1, [r5, #8] - mov r1, r1, lsl #0x1d - mov r1, r1, lsr #0x1d - cmp r1, #1 - bne _020E56B8 - mov r1, #0 - bl __flush_buffer - cmp r0, #0 - beq _020E56B8 - mov r0, #1 - strb r0, [r5, #0xd] - mov r2, #0 - ldr r0, _020E5800 ; =_021E58C0 - mov r1, #0x28 - str r2, [r5, #0x28] - str r1, [r0] - sub r0, r1, #0x29 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr -_020E56B8: - cmp r4, #1 - bne _020E56D8 - mov r0, r5 - mov r4, #0 - bl _ftell - ldr r1, [sp, #0x14] - add r0, r1, r0 - str r0, [sp, #0x14] -_020E56D8: - cmp r4, #2 - beq _020E576C - ldr r0, [r5, #4] - mov r0, r0, lsl #0x1b - mov r0, r0, lsr #0x1d - cmp r0, #3 - beq _020E576C - ldr r0, [r5, #8] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - sub r0, r0, #2 - cmp r0, #1 - bhi _020E576C - ldr r2, [sp, #0x14] - ldr r0, [r5, #0x18] - cmp r2, r0 - bhs _020E5728 - ldr r0, [r5, #0x34] - cmp r2, r0 - bhs _020E5738 -_020E5728: - ldr r0, [r5, #8] - bic r0, r0, #7 - str r0, [r5, #8] - b _020E5778 -_020E5738: - ldr r1, [r5, #0x1c] - sub r0, r2, r0 - add r0, r1, r0 - str r0, [r5, #0x24] - ldr r1, [r5, #0x18] - ldr r0, [sp, #0x14] - sub r0, r1, r0 - str r0, [r5, #0x28] - ldr r0, [r5, #8] - bic r0, r0, #7 - orr r0, r0, #2 - str r0, [r5, #8] - b _020E5778 -_020E576C: - ldr r0, [r5, #8] - bic r0, r0, #7 - str r0, [r5, #8] -_020E5778: - ldr r0, [r5, #8] - mov r0, r0, lsl #0x1d - movs r0, r0, lsr #0x1d - bne _020E57F0 - ldr ip, [r5, #0x38] - cmp ip, #0 - beq _020E57DC - ldr r0, [r5] - ldr r3, [r5, #0x48] - add r1, sp, #0x14 - mov r2, r4 - blx ip - cmp r0, #0 - beq _020E57DC - mov r0, #1 - strb r0, [r5, #0xd] - mov r2, #0 - ldr r0, _020E5800 ; =_021E58C0 - mov r1, #0x28 - str r2, [r5, #0x28] - str r1, [r0] - sub r0, r1, #0x29 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr -_020E57DC: - mov r1, #0 - strb r1, [r5, #0xc] - ldr r0, [sp, #0x14] - str r0, [r5, #0x18] - str r1, [r5, #0x28] -_020E57F0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E5800: .word _021E58C0 - arm_func_end _fseek - - arm_func_start fseek -fseek: ; 0x020E5804 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r3, _020E5914 ; =_02110FCC - mov sb, r0 - cmp sb, r3 - mov r8, r1 - mov r7, r2 - moveq r6, #2 - beq _020E5844 - ldr r0, _020E5918 ; =_02111018 - cmp sb, r0 - moveq r6, #3 - beq _020E5844 - ldr r0, _020E591C ; =_02111064 - cmp sb, r0 - moveq r6, #4 - movne r6, #5 -_020E5844: - mov r0, #0x18 - mul r4, r6, r0 - ldr r5, _020E5920 ; =_021E54E8 - add r0, r5, r4 - bl OS_TryLockMutex - cmp r0, #0 - bne _020E5884 - ldr r0, _020E5924 ; =OSi_ThreadInfo - ldr r2, _020E5928 ; =_021E54A0 - ldr r1, [r0, #4] - ldr r0, _020E592C ; =_021E54C4 - ldr r3, [r1, #0x6c] - mov r1, #1 - str r3, [r2, r6, lsl #2] - str r1, [r0, r6, lsl #2] - b _020E58DC -_020E5884: - ldr r0, _020E5924 ; =OSi_ThreadInfo - ldr r1, _020E5928 ; =_021E54A0 - ldr r0, [r0, #4] - ldr r1, [r1, r6, lsl #2] - ldr r0, [r0, #0x6c] - cmp r1, r0 - bne _020E58B4 - ldr r1, _020E592C ; =_021E54C4 - ldr r0, [r1, r6, lsl #2] - add r0, r0, #1 - str r0, [r1, r6, lsl #2] - b _020E58DC -_020E58B4: - add r0, r5, r4 - bl OS_LockMutex - ldr r0, _020E5924 ; =OSi_ThreadInfo - ldr r2, _020E5928 ; =_021E54A0 - ldr r1, [r0, #4] - ldr r0, _020E592C ; =_021E54C4 - ldr r3, [r1, #0x6c] - mov r1, #1 - str r3, [r2, r6, lsl #2] - str r1, [r0, r6, lsl #2] -_020E58DC: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl _fseek - ldr r1, _020E592C ; =_021E54C4 - mov r7, r0 - ldr r0, [r1, r6, lsl #2] - subs r0, r0, #1 - str r0, [r1, r6, lsl #2] - bne _020E590C - add r0, r5, r4 - bl OS_UnlockMutex -_020E590C: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020E5914: .word _02110FCC -_020E5918: .word _02111018 -_020E591C: .word _02111064 -_020E5920: .word _021E54E8 -_020E5924: .word OSi_ThreadInfo -_020E5928: .word _021E54A0 -_020E592C: .word _021E54C4 - arm_func_end fseek - - arm_func_start rewind -rewind: ; 0x020E5930 - stmdb sp!, {r4, lr} - mov r1, #0 - mov r4, r0 - mov r2, r1 - strb r1, [r4, #0xd] - bl fseek - mov r0, #0 - strb r0, [r4, #0xd] - ldmia sp!, {r4, pc} - arm_func_end rewind - - arm_func_start mbtowc -mbtowc: ; 0x020E5954 - stmdb sp!, {r3, lr} - ldr r3, _020E596C ; =_0211120C - ldr r3, [r3, #8] - ldr r3, [r3] - blx r3 - ldmia sp!, {r3, pc} - .align 2, 0 -_020E596C: .word _0211120C - arm_func_end mbtowc - - arm_func_start __mbtowc_noconv -__mbtowc_noconv: ; 0x020E5970 - cmp r1, #0 - moveq r0, #0 - bxeq lr - cmp r2, #0 - mvneq r0, #0 - bxeq lr - cmp r0, #0 - ldrneb r2, [r1] - strneh r2, [r0] - ldrsb r0, [r1] - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - bx lr - arm_func_end __mbtowc_noconv - - arm_func_start __wctomb_noconv -__wctomb_noconv: ; 0x020E59A8 - cmp r0, #0 - moveq r0, #0 - strneb r1, [r0] - movne r0, #1 - bx lr - arm_func_end __wctomb_noconv - - arm_func_start wctomb -wctomb: ; 0x020E59BC - stmdb sp!, {r3, lr} - ldr r2, _020E59D4 ; =_0211120C - ldr r2, [r2, #8] - ldr r2, [r2, #4] - blx r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_020E59D4: .word _0211120C - arm_func_end wctomb - - arm_func_start mbstowcs -mbstowcs: ; 0x020E59D8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - bl strlen - mov r5, r0 - cmp r8, #0 - mov r4, #0 - beq _020E5A58 - cmp r6, #0 - bls _020E5A58 -_020E5A08: - ldrsb r0, [r7] - cmp r0, #0 - beq _020E5A40 - mov r0, r8 - mov r1, r7 - mov r2, r5 - bl mbtowc - cmp r0, #0 - add r8, r8, #2 - addgt r7, r7, r0 - subgt r5, r5, r0 - bgt _020E5A4C - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020E5A40: - mov r0, #0 - strh r0, [r8] - b _020E5A58 -_020E5A4C: - add r4, r4, #1 - cmp r4, r6 - blo _020E5A08 -_020E5A58: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end mbstowcs - - arm_func_start wcstombs -wcstombs: ; 0x020E5A60 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - movs r4, r0 - mov sb, r1 - cmpne sb, #0 - mov r8, r2 - mov r7, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r6, sp, #0 -_020E5A84: - ldrh r1, [sb] - cmp r1, #0 - moveq r0, #0 - streqb r0, [r4, r7] - beq _020E5AD0 - mov r0, r6 - add sb, sb, #2 - bl wctomb - mov r5, r0 - add r0, r7, r5 - cmp r0, r8 - bhi _020E5AD0 - mov r1, r6 - mov r2, r5 - add r0, r4, r7 - bl strncpy - add r7, r7, r5 - cmp r7, r8 - bls _020E5A84 -_020E5AD0: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end wcstombs - - arm_func_start memcpy -memcpy: ; 0x020E5AD8 - mov ip, r0 - cmp r2, #0 - bxeq lr -_020E5AE4: - ldrsb r3, [r1], #1 - subs r2, r2, #1 - strb r3, [ip], #1 - bne _020E5AE4 - bx lr - arm_func_end memcpy - - arm_func_start memmove -memmove: ; 0x020E5AF8 - cmp r1, r0 - blo _020E5B20 - mov ip, r0 - cmp r2, #0 - bxeq lr -_020E5B0C: - ldrsb r3, [r1], #1 - subs r2, r2, #1 - strb r3, [ip], #1 - bne _020E5B0C - bx lr -_020E5B20: - cmp r2, #0 - add r3, r1, r2 - add ip, r0, r2 - bxeq lr -_020E5B30: - ldrsb r1, [r3, #-1]! - subs r2, r2, #1 - strb r1, [ip, #-1]! - bne _020E5B30 - bx lr - arm_func_end memmove - - arm_func_start memset -memset: ; 0x020E5B44 - stmdb sp!, {r4, lr} - mov r4, r0 - bl __fill_mem - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end memset - - arm_func_start memchr -memchr: ; 0x020E5B58 - cmp r2, #0 - and r3, r1, #0xff - beq _020E5B7C -_020E5B64: - ldrb r1, [r0], #1 - cmp r1, r3 - subeq r0, r0, #1 - bxeq lr - subs r2, r2, #1 - bne _020E5B64 -_020E5B7C: - mov r0, #0 - bx lr - arm_func_end memchr - - arm_func_start __memrchr -__memrchr: ; 0x020E5B84 - cmp r2, #0 - and r3, r1, #0xff - add r0, r0, r2 - beq _020E5BA8 -_020E5B94: - ldrb r1, [r0, #-1]! - cmp r1, r3 - bxeq lr - subs r2, r2, #1 - bne _020E5B94 -_020E5BA8: - mov r0, #0 - bx lr - arm_func_end __memrchr - - arm_func_start memcmp -memcmp: ; 0x020E5BB0 - cmp r2, #0 - beq _020E5BE8 -_020E5BB8: - ldrb ip, [r0], #1 - ldrb r3, [r1], #1 - cmp ip, r3 - beq _020E5BE0 - ldrb r2, [r0, #-1] - ldrb r0, [r1, #-1] - cmp r2, r0 - mvnlo r0, #0 - movhs r0, #1 - bx lr -_020E5BE0: - subs r2, r2, #1 - bne _020E5BB8 -_020E5BE8: - mov r0, #0 - bx lr - arm_func_end memcmp - - arm_func_start __fill_mem -__fill_mem: ; 0x020E5BF0 - cmp r2, #0x20 - and r3, r1, #0xff - blo _020E5C84 - rsb r1, r0, #0 - ands ip, r1, #3 - beq _020E5C1C - sub r2, r2, ip - and r1, r3, #0xff -_020E5C10: - strb r1, [r0], #1 - subs ip, ip, #1 - bne _020E5C10 -_020E5C1C: - cmp r3, #0 - beq _020E5C34 - mov r1, r3, lsl #0x10 - orr r1, r1, r3, lsl #24 - orr r1, r1, r3, lsl #8 - orr r3, r3, r1 -_020E5C34: - movs r1, r2, lsr #5 - beq _020E5C68 -_020E5C3C: - str r3, [r0] - str r3, [r0, #4] - str r3, [r0, #8] - str r3, [r0, #0xc] - str r3, [r0, #0x10] - str r3, [r0, #0x14] - str r3, [r0, #0x18] - str r3, [r0, #0x1c] - add r0, r0, #0x20 - subs r1, r1, #1 - bne _020E5C3C -_020E5C68: - and r1, r2, #0x1f - movs r1, r1, lsr #2 - beq _020E5C80 -_020E5C74: - str r3, [r0], #4 - subs r1, r1, #1 - bne _020E5C74 -_020E5C80: - and r2, r2, #3 -_020E5C84: - cmp r2, #0 - bxeq lr - and r1, r3, #0xff -_020E5C90: - strb r1, [r0], #1 - subs r2, r2, #1 - bne _020E5C90 - bx lr - arm_func_end __fill_mem - - arm_func_start parse_format__printf -parse_format__printf: ; 0x020E5CA0 static routine - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - ldrsb r3, [r0, #1] - mov r4, #0 - mov r5, #1 - mov lr, r2 - strb r5, [sp] - strb r4, [sp, #1] - strb r4, [sp, #2] - strb r4, [sp, #3] - strb r4, [sp, #4] - str r4, [sp, #8] - str r4, [sp, #0xc] - cmp r3, #0x25 - add ip, r0, #1 - bne _020E5CFC - add r0, sp, #0 - strb r3, [sp, #5] - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - add sp, sp, #0x10 - add r0, ip, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020E5CFC: - mov r2, #2 - mov r0, r4 - mov r5, r2 - mov r6, r4 - mov r7, #1 -_020E5D10: - mov r8, r7 - cmp r3, #0x2b - bgt _020E5D40 - bge _020E5D68 - cmp r3, #0x23 - bgt _020E5D98 - cmp r3, #0x20 - blt _020E5D98 - beq _020E5D70 - cmp r3, #0x23 - beq _020E5D80 - b _020E5D98 -_020E5D40: - cmp r3, #0x30 - bgt _020E5D98 - cmp r3, #0x2d - blt _020E5D98 - beq _020E5D60 - cmp r3, #0x30 - beq _020E5D88 - b _020E5D98 -_020E5D60: - strb r6, [sp] - b _020E5D9C -_020E5D68: - strb r7, [sp, #1] - b _020E5D9C -_020E5D70: - ldrb r4, [sp, #1] - cmp r4, #1 - strneb r5, [sp, #1] - b _020E5D9C -_020E5D80: - strb r7, [sp, #3] - b _020E5D9C -_020E5D88: - ldrb r4, [sp] - cmp r4, #0 - strneb r2, [sp] - b _020E5D9C -_020E5D98: - mov r8, r0 -_020E5D9C: - cmp r8, #0 - ldrnesb r3, [ip, #1]! - bne _020E5D10 - cmp r3, #0x2a - bne _020E5DE4 - ldr r0, [r1] - add r0, r0, #4 - str r0, [r1] - ldr r0, [r0, #-4] - str r0, [sp, #8] - cmp r0, #0 - bge _020E5DDC - rsb r0, r0, #0 - mov r2, #0 - strb r2, [sp] - str r0, [sp, #8] -_020E5DDC: - ldrsb r3, [ip, #1]! - b _020E5E34 -_020E5DE4: - ldr r4, _020E6228 ; =_0210E504 - mov r5, #0 - mov r0, #0xa - b _020E5E08 -_020E5DF4: - ldr r2, [sp, #8] - sub r3, r3, #0x30 - mla r6, r2, r0, r3 - ldrsb r3, [ip, #1]! - str r6, [sp, #8] -_020E5E08: - cmp r3, #0 - blt _020E5E18 - cmp r3, #0x80 - blt _020E5E20 -_020E5E18: - mov r2, r5 - b _020E5E2C -_020E5E20: - mov r2, r3, lsl #1 - ldrh r2, [r4, r2] - and r2, r2, #8 -_020E5E2C: - cmp r2, #0 - bne _020E5DF4 -_020E5E34: - ldr r2, [sp, #8] - ldr r0, _020E622C ; =0x000001FD - cmp r2, r0 - ble _020E5E64 - mov r1, #0xff - add r0, sp, #0 - strb r1, [sp, #5] - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - add sp, sp, #0x10 - add r0, ip, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020E5E64: - cmp r3, #0x2e - bne _020E5EF8 - ldrsb r3, [ip, #1]! - mov r0, #1 - strb r0, [sp, #2] - cmp r3, #0x2a - bne _020E5EA8 - ldr r0, [r1] - add r0, r0, #4 - str r0, [r1] - ldr r0, [r0, #-4] - ldrsb r3, [ip, #1]! - str r0, [sp, #0xc] - cmp r0, #0 - movlt r0, #0 - strltb r0, [sp, #2] - b _020E5EF8 -_020E5EA8: - ldr r2, _020E6228 ; =_0210E504 - mov r4, #0 - mov r0, #0xa - b _020E5ECC -_020E5EB8: - ldr r1, [sp, #0xc] - sub r3, r3, #0x30 - mla r5, r1, r0, r3 - ldrsb r3, [ip, #1]! - str r5, [sp, #0xc] -_020E5ECC: - cmp r3, #0 - blt _020E5EDC - cmp r3, #0x80 - blt _020E5EE4 -_020E5EDC: - mov r1, r4 - b _020E5EF0 -_020E5EE4: - mov r1, r3, lsl #1 - ldrh r1, [r2, r1] - and r1, r1, #8 -_020E5EF0: - cmp r1, #0 - bne _020E5EB8 -_020E5EF8: - cmp r3, #0x6c - mov r0, #1 - bgt _020E5F30 - cmp r3, #0x68 - blt _020E5F24 - beq _020E5F4C - cmp r3, #0x6a - beq _020E5F98 - cmp r3, #0x6c - beq _020E5F68 - b _020E5FBC -_020E5F24: - cmp r3, #0x4c - beq _020E5F8C - b _020E5FBC -_020E5F30: - cmp r3, #0x74 - bgt _020E5F40 - beq _020E5FA4 - b _020E5FBC -_020E5F40: - cmp r3, #0x7a - beq _020E5FB0 - b _020E5FBC -_020E5F4C: - ldrsb r1, [ip, #1] - mov r2, #2 - strb r2, [sp, #4] - cmp r1, #0x68 - streqb r0, [sp, #4] - ldreqsb r3, [ip, #1]! - b _020E5FC0 -_020E5F68: - ldrsb r1, [ip, #1] - mov r2, #3 - strb r2, [sp, #4] - cmp r1, #0x6c - bne _020E5FC0 - mov r1, #4 - strb r1, [sp, #4] - ldrsb r3, [ip, #1]! - b _020E5FC0 -_020E5F8C: - mov r1, #9 - strb r1, [sp, #4] - b _020E5FC0 -_020E5F98: - mov r1, #6 - strb r1, [sp, #4] - b _020E5FC0 -_020E5FA4: - mov r1, #8 - strb r1, [sp, #4] - b _020E5FC0 -_020E5FB0: - mov r1, #7 - strb r1, [sp, #4] - b _020E5FC0 -_020E5FBC: - mov r0, #0 -_020E5FC0: - cmp r0, #0 - ldrnesb r3, [ip, #1]! - strb r3, [sp, #5] - cmp r3, #0x61 - bgt _020E6014 - bge _020E60FC - cmp r3, #0x47 - bgt _020E6008 - subs r0, r3, #0x41 - addpl pc, pc, r0, lsl #2 - b _020E6208 -_020E5FEC: ; jump table - b _020E60FC ; case 0 - b _020E6208 ; case 1 - b _020E6208 ; case 2 - b _020E6208 ; case 3 - b _020E6144 ; case 4 - b _020E60C4 ; case 5 - b _020E6134 ; case 6 -_020E6008: - cmp r3, #0x58 - beq _020E6088 - b _020E6208 -_020E6014: - cmp r3, #0x63 - bgt _020E6024 - beq _020E61A4 - b _020E6208 -_020E6024: - sub r0, r3, #0x64 - cmp r0, #0x14 - addls pc, pc, r0, lsl #2 - b _020E6208 -_020E6034: ; jump table - b _020E6088 ; case 0 - b _020E6144 ; case 1 - b _020E60C4 ; case 2 - b _020E6134 ; case 3 - b _020E6208 ; case 4 - b _020E6088 ; case 5 - b _020E6208 ; case 6 - b _020E6208 ; case 7 - b _020E6208 ; case 8 - b _020E6208 ; case 9 - b _020E61F4 ; case 10 - b _020E6088 ; case 11 - b _020E6180 ; case 12 - b _020E6208 ; case 13 - b _020E6208 ; case 14 - b _020E61D0 ; case 15 - b _020E6208 ; case 16 - b _020E6088 ; case 17 - b _020E6208 ; case 18 - b _020E6208 ; case 19 - b _020E6088 ; case 20 -_020E6088: - ldrb r0, [sp, #4] - cmp r0, #9 - moveq r0, #0xff - streqb r0, [sp, #5] - beq _020E6210 - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] - beq _020E6210 - ldrb r0, [sp] - cmp r0, #2 - moveq r0, #1 - streqb r0, [sp] - b _020E6210 -_020E60C4: - ldrb r0, [sp, #4] - cmp r0, #2 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - cmpne r0, #4 - moveq r0, #0xff - streqb r0, [sp, #5] - beq _020E6210 - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #6 - streq r0, [sp, #0xc] - b _020E6210 -_020E60FC: - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #0xd - streq r0, [sp, #0xc] - ldrb r0, [sp, #4] - cmp r0, #2 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - cmpne r0, #4 - cmpne r0, #1 - moveq r0, #0xff - streqb r0, [sp, #5] - b _020E6210 -_020E6134: - ldr r0, [sp, #0xc] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] -_020E6144: - ldrb r0, [sp, #4] - cmp r0, #2 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - cmpne r0, #4 - cmpne r0, #1 - moveq r0, #0xff - streqb r0, [sp, #5] - beq _020E6210 - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #6 - streq r0, [sp, #0xc] - b _020E6210 -_020E6180: - mov r3, #0x78 - mov r2, #1 - mov r1, #3 - mov r0, #8 - strb r3, [sp, #5] - strb r2, [sp, #3] - strb r1, [sp, #4] - str r0, [sp, #0xc] - b _020E6210 -_020E61A4: - ldrb r1, [sp, #4] - cmp r1, #3 - moveq r0, #5 - streqb r0, [sp, #4] - beq _020E6210 - ldrb r0, [sp, #2] - cmp r0, #0 - cmpeq r1, #0 - movne r0, #0xff - strneb r0, [sp, #5] - b _020E6210 -_020E61D0: - ldrb r0, [sp, #4] - cmp r0, #3 - moveq r0, #5 - streqb r0, [sp, #4] - beq _020E6210 - cmp r0, #0 - movne r0, #0xff - strneb r0, [sp, #5] - b _020E6210 -_020E61F4: - ldrb r0, [sp, #4] - cmp r0, #9 - moveq r0, #0xff - streqb r0, [sp, #5] - b _020E6210 -_020E6208: - mov r0, #0xff - strb r0, [sp, #5] -_020E6210: - add r0, sp, #0 - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - add r0, ip, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E6228: .word _0210E504 -_020E622C: .word 0x000001FD - arm_func_end parse_format__printf - - arm_func_start long2str__printf -long2str__printf: ; 0x020E6230 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - movs sl, r0 - mov r0, #0 - mov r5, r1 - str r0, [sp, #0xc] - ldr r7, [sp, #0x4c] - mov r6, r0 - strb r0, [r5, #-1]! - ldrb r0, [sp, #0x43] - str r1, [sp] - ldrb r8, [sp, #0x45] - str r0, [sp, #4] - ldr r0, [sp, #0x48] - ldrb fp, [sp, #0x41] - str r0, [sp, #8] - cmpeq r7, #0 - bne _020E62A4 - ldr r0, [sp, #4] - cmp r0, #0 - beq _020E6290 - cmp r8, #0x6f - beq _020E62A4 -_020E6290: - add sp, sp, #0x10 - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E62A4: - cmp r8, #0x69 - bgt _020E62CC - bge _020E6300 - cmp r8, #0x58 - bgt _020E62C0 - beq _020E632C - b _020E6334 -_020E62C0: - cmp r8, #0x64 - beq _020E6300 - b _020E6334 -_020E62CC: - cmp r8, #0x6f - bgt _020E62E0 - moveq r4, #8 - moveq fp, #0 - b _020E6334 -_020E62E0: - cmp r8, #0x78 - bgt _020E6334 - cmp r8, #0x75 - blt _020E6334 - beq _020E6320 - cmp r8, #0x78 - beq _020E632C - b _020E6334 -_020E6300: - cmp sl, #0 - mov r4, #0xa - bge _020E6334 - mov r0, #1 - cmp sl, #0x80000000 - rsbne sl, sl, #0 - str r0, [sp, #0xc] - b _020E6334 -_020E6320: - mov r4, #0xa - mov fp, #0 - b _020E6334 -_020E632C: - mov r4, #0x10 - mov fp, #0 -_020E6334: - mov r0, sl - mov r1, r4 - bl _u32_div_f - mov sb, r1 - mov r0, sl - mov r1, r4 - bl _u32_div_f - cmp sb, #0xa - mov sl, r0 - addlt sb, sb, #0x30 - blt _020E636C - cmp r8, #0x78 - addeq sb, sb, #0x57 - addne sb, sb, #0x37 -_020E636C: - cmp sl, #0 - strb sb, [r5, #-1]! - add r6, r6, #1 - bne _020E6334 - cmp r4, #8 - bne _020E63A0 - ldr r0, [sp, #4] - cmp r0, #0 - ldrnesb r0, [r5] - cmpne r0, #0x30 - movne r0, #0x30 - strneb r0, [r5, #-1]! - addne r6, r6, #1 -_020E63A0: - ldrb r0, [sp, #0x40] - cmp r0, #2 - bne _020E63D4 - ldr r0, [sp, #0xc] - ldr r7, [sp, #8] - cmp r0, #0 - cmpeq fp, #0 - subne r7, r7, #1 - cmp r4, #0x10 - bne _020E63D4 - ldr r0, [sp, #4] - cmp r0, #0 - subne r7, r7, #2 -_020E63D4: - ldr r0, [sp] - sub r1, r0, r5 - ldr r0, _020E6478 ; =0x000001FD - add r1, r7, r1 - cmp r1, r0 - addgt sp, sp, #0x10 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - cmp r6, r7 - bge _020E6418 - mov r0, #0x30 -_020E6408: - add r6, r6, #1 - cmp r6, r7 - strb r0, [r5, #-1]! - blt _020E6408 -_020E6418: - cmp r4, #0x10 - bne _020E6434 - ldr r0, [sp, #4] - cmp r0, #0 - movne r0, #0x30 - strneb r8, [r5, #-1] - strneb r0, [r5, #-2]! -_020E6434: - ldr r0, [sp, #0xc] - cmp r0, #0 - movne r0, #0x2d - strneb r0, [r5, #-1]! - bne _020E6464 - cmp fp, #1 - moveq r0, #0x2b - streqb r0, [r5, #-1]! - beq _020E6464 - cmp fp, #2 - moveq r0, #0x20 - streqb r0, [r5, #-1]! -_020E6464: - mov r0, r5 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E6478: .word 0x000001FD - arm_func_end long2str__printf - - arm_func_start longlong2str__printf -longlong2str__printf: ; 0x020E647C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov sb, r1 - mov r1, #0 - mov sl, r0 - mov r8, r2 - mov r0, r1 - strb r0, [r8, #-1]! - ldr r0, [sp, #0x58] - cmp sb, #0 - str r0, [sp, #0x14] - ldrb r0, [sp, #0x4f] - cmpeq sl, #0 - str r2, [sp] - str r0, [sp, #4] - ldrb r0, [sp, #0x51] - str r1, [sp, #0x18] - mov fp, r1 - str r0, [sp, #8] - ldr r0, [sp, #0x54] - str r0, [sp, #0xc] - ldrb r0, [sp, #0x4d] - str r0, [sp, #0x10] - ldreq r0, [sp, #0x14] - cmpeq r0, #0 - bne _020E6514 - ldr r0, [sp, #4] - cmp r0, #0 - beq _020E6500 - ldr r0, [sp, #8] - cmp r0, #0x6f - beq _020E6514 -_020E6500: - add sp, sp, #0x1c - mov r0, r8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E6514: - ldr r0, [sp, #8] - cmp r0, #0x69 - bgt _020E6540 - bge _020E6570 - cmp r0, #0x58 - bgt _020E6534 - beq _020E65C4 - b _020E65D0 -_020E6534: - cmp r0, #0x64 - beq _020E6570 - b _020E65D0 -_020E6540: - cmp r0, #0x6f - bgt _020E6550 - beq _020E65A4 - b _020E65D0 -_020E6550: - cmp r0, #0x78 - bgt _020E65D0 - cmp r0, #0x75 - blt _020E65D0 - beq _020E65B4 - cmp r0, #0x78 - beq _020E65C4 - b _020E65D0 -_020E6570: - subs r0, sl, #0 - sbcs r0, sb, #0 - mov r7, #0xa - mov r6, #0 - bge _020E65D0 - cmp sb, #0x80000000 - cmpeq sl, r6 - beq _020E6598 - rsbs sl, sl, #0 - rsc sb, sb, #0 -_020E6598: - mov r0, #1 - str r0, [sp, #0x18] - b _020E65D0 -_020E65A4: - mov r6, #0 - str r6, [sp, #0x10] - mov r7, #8 - b _020E65D0 -_020E65B4: - mov r6, #0 - str r6, [sp, #0x10] - mov r7, #0xa - b _020E65D0 -_020E65C4: - mov r6, #0 - str r6, [sp, #0x10] - mov r7, #0x10 -_020E65D0: - mov r4, #0 -_020E65D4: - mov r0, sl - mov r1, sb - mov r2, r7 - mov r3, r6 - bl _ull_mod - mov r5, r0 - mov r0, sl - mov r1, sb - mov r2, r7 - mov r3, r6 - bl _ll_udiv - mov sl, r0 - cmp r5, #0xa - mov sb, r1 - addlt r0, r5, #0x30 - blt _020E6624 - ldr r0, [sp, #8] - cmp r0, #0x78 - addeq r0, r5, #0x57 - addne r0, r5, #0x37 -_020E6624: - strb r0, [r8, #-1]! - mov r0, #0 - cmp sb, r0 - cmpeq sl, r4 - add fp, fp, #1 - bne _020E65D4 - cmp r6, #0 - cmpeq r7, #8 - bne _020E6664 - ldr r0, [sp, #4] - cmp r0, #0 - ldrnesb r0, [r8] - cmpne r0, #0x30 - movne r0, #0x30 - strneb r0, [r8, #-1]! - addne fp, fp, #1 -_020E6664: - ldrb r0, [sp, #0x4c] - cmp r0, #2 - bne _020E66B4 - ldr r0, [sp, #0xc] - str r0, [sp, #0x14] - ldr r0, [sp, #0x18] - cmp r0, #0 - ldreq r0, [sp, #0x10] - cmpeq r0, #0 - ldrne r0, [sp, #0x14] - subne r0, r0, #1 - strne r0, [sp, #0x14] - cmp r6, #0 - cmpeq r7, #0x10 - bne _020E66B4 - ldr r0, [sp, #4] - cmp r0, #0 - ldrne r0, [sp, #0x14] - subne r0, r0, #2 - strne r0, [sp, #0x14] -_020E66B4: - ldr r0, [sp] - ldr r1, _020E6774 ; =0x000001FD - sub r2, r0, r8 - ldr r0, [sp, #0x14] - add r0, r0, r2 - cmp r0, r1 - addgt sp, sp, #0x1c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - ldr r0, [sp, #0x14] - cmp fp, r0 - bge _020E6704 - mov r1, #0x30 -_020E66F0: - ldr r0, [sp, #0x14] - add fp, fp, #1 - cmp fp, r0 - strb r1, [r8, #-1]! - blt _020E66F0 -_020E6704: - cmp r6, #0 - cmpeq r7, #0x10 - bne _020E672C - ldr r0, [sp, #4] - cmp r0, #0 - beq _020E672C - ldr r0, [sp, #8] - mov r1, #0x30 - strb r0, [r8, #-1] - strb r1, [r8, #-2]! -_020E672C: - ldr r0, [sp, #0x18] - cmp r0, #0 - movne r0, #0x2d - strneb r0, [r8, #-1]! - bne _020E6760 - ldr r0, [sp, #0x10] - cmp r0, #1 - moveq r0, #0x2b - streqb r0, [r8, #-1]! - beq _020E6760 - cmp r0, #2 - moveq r0, #0x20 - streqb r0, [r8, #-1]! -_020E6760: - mov r0, r8 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E6774: .word 0x000001FD - arm_func_end longlong2str__printf - - arm_func_start double2hex__printf -double2hex__printf: ; 0x020E6778 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x44 - ldr r7, [sp, #0x80] - ldr r0, _020E6C28 ; =0x000001FD - mov r8, r2 - cmp r7, r0 - ldrb r6, [sp, #0x79] - ldrb r5, [sp, #0x77] - ldrb r4, [sp, #0x75] - ldr r1, [sp, #0x68] - ldr r2, [sp, #0x6c] - addgt sp, sp, #0x44 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - addgt sp, sp, #0x10 - bxgt lr - mov sl, #0 - mov sb, #0x20 - add r0, sp, #8 - add r3, sp, #0xc - strb sl, [sp, #8] - strh sb, [sp, #0xa] - bl __num2dec - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x6c] - bl fabs - mov r2, r0 - mov r0, sl - mov r3, r1 - mov r1, r0 - bl _deq - bne _020E6844 - ldr r3, _020E6C2C ; =_02111314 - sub r0, r8, #6 - ldrb r2, [r3] - ldrb r1, [r3, #1] - add sp, sp, #0x44 - strb r2, [r8, #-6] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r2, [r3, #4] - ldrb r1, [r3, #5] - strb r2, [r0, #4] - strb r1, [r0, #5] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E6844: - ldrb r0, [sp, #0x11] - cmp r0, #0x49 - bne _020E6954 - ldrsb r0, [sp, #0xc] - cmp r0, #0 - beq _020E68E0 - cmp r6, #0x41 - sub r0, r8, #5 - bne _020E68A4 - ldr r3, _020E6C30 ; =_0211131C - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E68A4: - ldr r3, _020E6C34 ; =_02111324 - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E68E0: - cmp r6, #0x41 - sub r0, r8, #4 - bne _020E6920 - ldr r3, _020E6C38 ; =_0211132C - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E6920: - ldr r3, _020E6C3C ; =_02111330 - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E6954: - cmp r0, #0x4e - bne _020E6A60 - ldrsb r0, [sp, #0xc] - cmp r0, #0 - beq _020E69EC - cmp r6, #0x41 - sub r0, r8, #5 - bne _020E69B0 - ldr r3, _020E6C40 ; =_02111334 - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E69B0: - ldr r3, _020E6C44 ; =_0211133C - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E69EC: - cmp r6, #0x41 - sub r0, r8, #4 - bne _020E6A2C - ldr r3, _020E6C48 ; =_02111344 - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E6A2C: - ldr r3, _020E6C4C ; =_02111348 - add sp, sp, #0x44 - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020E6A60: - mov r3, sl - mov r1, #1 - mov r0, #0x64 - add sb, sp, #0x68 - strb r1, [sp, #0x34] - strb r1, [sp, #0x35] - strb r3, [sp, #0x36] - strb r3, [sp, #0x37] - strb r3, [sp, #0x38] - str r3, [sp, #0x3c] - str r1, [sp, #0x40] - strb r0, [sp, #0x39] -_020E6A90: - rsb r1, r3, #7 - ldrsb r2, [sb, r3] - ldrsb r0, [sb, r1] - strb r0, [sb, r3] - add r3, r3, #1 - strb r2, [sb, r1] - cmp r3, #4 - blt _020E6A90 - ldrb r0, [sp, #0x69] - ldrb r1, [sp, #0x68] - ldr sb, _020E6C50 ; =0x000007FF - mov r0, r0, lsl #0x11 - orr r1, r0, r1, lsl #25 - add r0, sp, #0x34 - and lr, sb, r1, lsr #21 - sub ip, sp, #8 - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - rsb r0, sb, #0x400 - mov r1, r8 - add r0, lr, r0 - ldmia ip, {r2, r3} - bl long2str__printf - cmp r6, #0x61 - moveq r1, #0x70 - movne r1, #0x50 - strb r1, [r0, #-1]! - mov r1, r7, lsl #2 - mov lr, r7 - cmp r7, #1 - add r8, r1, #0xb - add ip, sp, #0x68 - blt _020E6BA0 - mov sb, #0x30 -_020E6B18: - cmp r8, #0x40 - bge _020E6B88 - ldrb r1, [ip, r8, asr #3] - and r2, r8, #7 - rsb r3, r2, #7 - mov r2, r1, asr r3 - sub sl, r8, #4 - bic r1, r8, #7 - bic sl, sl, #7 - cmp r1, sl - add sl, ip, r8, asr #3 - and r1, r2, #0xff - beq _020E6B5C - ldrb r2, [sl, #-1] - mov r2, r2, lsl #8 - orr r1, r1, r2, asr r3 - and r1, r1, #0xff -_020E6B5C: - and r1, r1, #0xf - cmp r1, #0xa - addlo r1, r1, #0x30 - andlo r1, r1, #0xff - blo _020E6B8C - cmp r6, #0x61 - addeq r1, r1, #0x57 - andeq r1, r1, #0xff - addne r1, r1, #0x37 - andne r1, r1, #0xff - b _020E6B8C -_020E6B88: - mov r1, sb -_020E6B8C: - sub lr, lr, #1 - cmp lr, #1 - strb r1, [r0, #-1]! - sub r8, r8, #4 - bge _020E6B18 -_020E6BA0: - cmp r7, #0 - cmpeq r5, #0 - movne r1, #0x2e - strneb r1, [r0, #-1]! - mov r1, #0x31 - strb r1, [r0, #-1] - cmp r6, #0x61 - moveq r1, #0x78 - movne r1, #0x58 - strb r1, [r0, #-2]! - mov r1, #0x30 - strb r1, [r0, #-1]! - ldrsb r1, [sp, #0xc] - cmp r1, #0 - movne r1, #0x2d - strneb r1, [r0, #-1]! - addne sp, sp, #0x44 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - addne sp, sp, #0x10 - bxne lr - cmp r4, #1 - moveq r1, #0x2b - streqb r1, [r0, #-1]! - addeq sp, sp, #0x44 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - addeq sp, sp, #0x10 - bxeq lr - cmp r4, #2 - moveq r1, #0x20 - streqb r1, [r0, #-1]! - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E6C28: .word 0x000001FD -_020E6C2C: .word _02111314 -_020E6C30: .word _0211131C -_020E6C34: .word _02111324 -_020E6C38: .word _0211132C -_020E6C3C: .word _02111330 -_020E6C40: .word _02111334 -_020E6C44: .word _0211133C -_020E6C48: .word _02111344 -_020E6C4C: .word _02111348 -_020E6C50: .word 0x000007FF - arm_func_end double2hex__printf - - arm_func_start round_decimal__printf -round_decimal__printf: ; 0x020E6C54 - stmdb sp!, {r4, lr} - cmp r1, #0 - bge _020E6C7C -_020E6C60: - mov r1, #0 - strh r1, [r0, #2] - mov r1, #1 - strb r1, [r0, #4] - mov r1, #0x30 - strb r1, [r0, #5] - ldmia sp!, {r4, pc} -_020E6C7C: - ldrb lr, [r0, #4] - cmp r1, lr - ldmgeia sp!, {r4, pc} - add ip, r0, #5 - add r2, ip, r1 - add r2, r2, #1 - ldrsb r3, [r2, #-1]! - sub r3, r3, #0x30 - mov r3, r3, lsl #0x18 - mov r3, r3, asr #0x18 - cmp r3, #5 - bne _020E6CDC - add ip, ip, lr -_020E6CB0: - sub ip, ip, #1 - cmp ip, r2 - bls _020E6CC8 - ldrsb r3, [ip] - cmp r3, #0x30 - beq _020E6CB0 -_020E6CC8: - cmp ip, r2 - ldreqsb r3, [r2, #-1] - andeq r4, r3, #1 - movne r4, #1 - b _020E6CE4 -_020E6CDC: - movgt r4, #1 - movle r4, #0 -_020E6CE4: - cmp r1, #0 - beq _020E6D40 - mov ip, #0 - mov lr, #1 -_020E6CF4: - ldrsb r3, [r2, #-1]! - sub r3, r3, #0x30 - add r3, r3, r4 - mov r3, r3, lsl #0x18 - mov r3, r3, asr #0x18 - cmp r3, #9 - movgt r4, lr - movle r4, ip - cmp r4, #0 - bne _020E6D24 - cmp r3, #0 - bne _020E6D2C -_020E6D24: - sub r1, r1, #1 - b _020E6D38 -_020E6D2C: - add r3, r3, #0x30 - strb r3, [r2] - b _020E6D40 -_020E6D38: - cmp r1, #0 - bne _020E6CF4 -_020E6D40: - cmp r4, #0 - beq _020E6D68 - ldrsh r3, [r0, #2] - mov r2, #1 - mov r1, #0x31 - add r3, r3, #1 - strh r3, [r0, #2] - strb r2, [r0, #4] - strb r1, [r0, #5] - ldmia sp!, {r4, pc} -_020E6D68: - cmp r1, #0 - beq _020E6C60 - strb r1, [r0, #4] - ldmia sp!, {r4, pc} - arm_func_end round_decimal__printf - - arm_func_start float2str__printf -float2str__printf: ; 0x020E6D78 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - ldr r7, [sp, #0x68] - ldr r3, _020E74B0 ; =0x000001FD - ldrb r6, [sp, #0x61] - ldrb r5, [sp, #0x5f] - ldrb r4, [sp, #0x5d] - cmp r7, r3 - mov sl, r0 - mov r8, r1 - mov sb, r2 - addgt sp, sp, #0x2c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - mov ip, #0 - mov fp, #0x20 - add r0, sp, #0 - add r3, sp, #4 - mov r1, sl - mov r2, r8 - strb ip, [sp] - strh fp, [sp, #2] - bl __num2dec - ldrb r0, [sp, #8] - add r1, sp, #9 - add r0, r1, r0 - b _020E6E08 -_020E6DF0: - ldrb r2, [sp, #8] - ldrsh r1, [sp, #6] - sub r2, r2, #1 - add r1, r1, #1 - strb r2, [sp, #8] - strh r1, [sp, #6] -_020E6E08: - ldrb r1, [sp, #8] - cmp r1, #1 - bls _020E6E20 - ldrsb r1, [r0, #-1]! - cmp r1, #0x30 - beq _020E6DF0 -_020E6E20: - ldrb r0, [sp, #9] - cmp r0, #0x30 - beq _020E6E40 - cmp r0, #0x49 - beq _020E6E4C - cmp r0, #0x4e - beq _020E6FAC - b _020E7100 -_020E6E40: - mov r0, #0 - strh r0, [sp, #6] - b _020E7100 -_020E6E4C: - mov r2, #0 - mov r0, sl - mov r1, r8 - mov r3, r2 - bl _dls - bhs _020E6F10 - cmp r6, #0 - sub r0, sb, #5 - blt _020E6E78 - cmp r6, #0x80 - blt _020E6E80 -_020E6E78: - mov r1, #0 - b _020E6E90 -_020E6E80: - ldr r1, _020E74B4 ; =_0210E504 - mov r2, r6, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #0x200 -_020E6E90: - cmp r1, #0 - beq _020E6ED4 - ldr r3, _020E74B8 ; =_0211131C - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E6ED4: - ldr r3, _020E74BC ; =_02111324 - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E6F10: - cmp r6, #0 - sub r0, sb, #4 - blt _020E6F24 - cmp r6, #0x80 - blt _020E6F2C -_020E6F24: - mov r1, #0 - b _020E6F3C -_020E6F2C: - ldr r1, _020E74B4 ; =_0210E504 - mov r2, r6, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #0x200 -_020E6F3C: - cmp r1, #0 - beq _020E6F78 - ldr r3, _020E74C0 ; =_0211132C - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E6F78: - ldr r3, _020E74C4 ; =_02111330 - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E6FAC: - ldrsb r0, [sp, #4] - cmp r0, #0 - beq _020E7064 - cmp r6, #0 - sub r0, sb, #5 - blt _020E6FCC - cmp r6, #0x80 - blt _020E6FD4 -_020E6FCC: - mov r1, #0 - b _020E6FE4 -_020E6FD4: - ldr r1, _020E74B4 ; =_0210E504 - mov r2, r6, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #0x200 -_020E6FE4: - cmp r1, #0 - beq _020E7028 - ldr r3, _020E74C8 ; =_02111334 - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E7028: - ldr r3, _020E74CC ; =_0211133C - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldrb r1, [r3, #4] - strb r1, [r0, #4] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E7064: - cmp r6, #0 - sub r0, sb, #4 - blt _020E7078 - cmp r6, #0x80 - blt _020E7080 -_020E7078: - mov r1, #0 - b _020E7090 -_020E7080: - ldr r1, _020E74B4 ; =_0210E504 - mov r2, r6, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #0x200 -_020E7090: - cmp r1, #0 - beq _020E70CC - ldr r3, _020E74D0 ; =_02111344 - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E70CC: - ldr r3, _020E74D4 ; =_02111348 - add sp, sp, #0x2c - ldrb r2, [r3] - ldrb r1, [r3, #1] - strb r2, [r0] - strb r1, [r0, #1] - ldrb r2, [r3, #2] - ldrb r1, [r3, #3] - strb r2, [r0, #2] - strb r1, [r0, #3] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E7100: - ldrb r0, [sp, #8] - ldrsh r1, [sp, #6] - sub r8, sb, #1 - sub r0, r0, #1 - add r0, r1, r0 - strh r0, [sp, #6] - mov r0, #0 - strb r0, [r8] - cmp r6, #0x65 - bgt _020E7154 - bge _020E71E0 - cmp r6, #0x47 - bgt _020E749C - cmp r6, #0x45 - blt _020E749C - beq _020E71E0 - cmp r6, #0x46 - beq _020E7328 - cmp r6, #0x47 - beq _020E716C - b _020E749C -_020E7154: - cmp r6, #0x66 - bgt _020E7164 - beq _020E7328 - b _020E749C -_020E7164: - cmp r6, #0x67 - bne _020E749C -_020E716C: - ldrb r0, [sp, #8] - cmp r0, r7 - ble _020E7184 - add r0, sp, #4 - mov r1, r7 - bl round_decimal__printf -_020E7184: - ldrsh r2, [sp, #6] - mvn r0, #3 - cmp r2, r0 - blt _020E719C - cmp r2, r7 - blt _020E71BC -_020E719C: - cmp r5, #0 - ldreqb r0, [sp, #8] - subne r7, r7, #1 - subeq r7, r0, #1 - cmp r6, #0x67 - moveq r6, #0x65 - movne r6, #0x45 - b _020E71E0 -_020E71BC: - cmp r5, #0 - addne r0, r2, #1 - subne r7, r7, r0 - bne _020E7328 - ldrb r1, [sp, #8] - add r0, r2, #1 - subs r7, r1, r0 - movmi r7, #0 - b _020E7328 -_020E71E0: - ldrb r0, [sp, #8] - add r1, r7, #1 - cmp r0, r1 - ble _020E71F8 - add r0, sp, #4 - bl round_decimal__printf -_020E71F8: - ldrsh lr, [sp, #6] - mov fp, #0x2b - mov sl, #0 - cmp lr, #0 - rsblt lr, lr, #0 - movlt fp, #0x2d - ldr r3, _020E74D8 ; =0x66666667 - mov r0, #0xa - b _020E724C -_020E721C: - mov r1, lr, lsr #0x1f - smull r2, ip, r3, lr - add ip, r1, ip, asr #2 - smull r1, r2, r0, ip - sub ip, lr, r1 - add r1, ip, #0x30 - strb r1, [r8, #-1]! - mov r2, lr - smull r1, lr, r3, r2 - mov r1, r2, lsr #0x1f - add lr, r1, lr, asr #2 - add sl, sl, #1 -_020E724C: - cmp lr, #0 - bne _020E721C - cmp sl, #2 - blt _020E721C - strb fp, [r8, #-1] - strb r6, [r8, #-2]! - sub r1, sb, r8 - ldr r0, _020E74B0 ; =0x000001FD - add r1, r7, r1 - cmp r1, r0 - addgt sp, sp, #0x2c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - ldrb r1, [sp, #8] - add r0, r7, #1 - cmp r1, r0 - bge _020E72B8 - add r0, r7, #2 - sub r0, r0, r1 - subs r1, r0, #1 - beq _020E72B8 - mov r0, #0x30 -_020E72AC: - strb r0, [r8, #-1]! - subs r1, r1, #1 - bne _020E72AC -_020E72B8: - ldrb r1, [sp, #8] - add r0, sp, #9 - add r2, r0, r1 - subs r1, r1, #1 - beq _020E72DC -_020E72CC: - ldrsb r0, [r2, #-1]! - subs r1, r1, #1 - strb r0, [r8, #-1]! - bne _020E72CC -_020E72DC: - cmp r7, #0 - cmpeq r5, #0 - movne r0, #0x2e - strneb r0, [r8, #-1]! - ldrb r0, [sp, #9] - strb r0, [r8, #-1]! - ldrsb r0, [sp, #4] - cmp r0, #0 - movne r0, #0x2d - strneb r0, [r8, #-1]! - bne _020E749C - cmp r4, #1 - moveq r0, #0x2b - streqb r0, [r8, #-1]! - beq _020E749C - cmp r4, #2 - moveq r0, #0x20 - streqb r0, [r8, #-1]! - b _020E749C -_020E7328: - ldrsh r3, [sp, #6] - ldrb r2, [sp, #8] - sub r0, r2, r3 - subs r1, r0, #1 - movmi r1, #0 - cmp r1, r7 - ble _020E7368 - sub r1, r1, r7 - add r0, sp, #4 - sub r1, r2, r1 - bl round_decimal__printf - ldrsh r3, [sp, #6] - ldrb r2, [sp, #8] - sub r0, r2, r3 - subs r1, r0, #1 - movmi r1, #0 -_020E7368: - adds r0, r3, #1 - movmi r0, #0 - ldr r3, _020E74B0 ; =0x000001FD - add r6, r0, r1 - cmp r6, r3 - addgt sp, sp, #0x2c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - add r3, sp, #9 - sub r6, r7, r1 - cmp r6, #0 - add r2, r3, r2 - mov sb, #0 - ble _020E73BC - mov r3, #0x30 -_020E73AC: - add sb, sb, #1 - cmp sb, r6 - strb r3, [r8, #-1]! - blt _020E73AC -_020E73BC: - mov r6, #0 - b _020E73D0 -_020E73C4: - ldrsb r3, [r2, #-1]! - add r6, r6, #1 - strb r3, [r8, #-1]! -_020E73D0: - cmp r6, r1 - ldrltb r3, [sp, #8] - cmplt r6, r3 - blt _020E73C4 - cmp r6, r1 - bge _020E73FC - mov r3, #0x30 -_020E73EC: - add r6, r6, #1 - cmp r6, r1 - strb r3, [r8, #-1]! - blt _020E73EC -_020E73FC: - cmp r7, #0 - cmpeq r5, #0 - movne r1, #0x2e - strneb r1, [r8, #-1]! - cmp r0, #0 - beq _020E7464 - ldrb r1, [sp, #8] - mov r5, #0 - sub r1, r0, r1 - cmp r1, #0 - ble _020E7444 - mov r3, #0x30 -_020E742C: - strb r3, [r8, #-1]! - ldrb r1, [sp, #8] - add r5, r5, #1 - sub r1, r0, r1 - cmp r5, r1 - blt _020E742C -_020E7444: - cmp r5, r0 - bge _020E746C -_020E744C: - ldrsb r1, [r2, #-1]! - add r5, r5, #1 - cmp r5, r0 - strb r1, [r8, #-1]! - blt _020E744C - b _020E746C -_020E7464: - mov r0, #0x30 - strb r0, [r8, #-1]! -_020E746C: - ldrsb r0, [sp, #4] - cmp r0, #0 - movne r0, #0x2d - strneb r0, [r8, #-1]! - bne _020E749C - cmp r4, #1 - moveq r0, #0x2b - streqb r0, [r8, #-1]! - beq _020E749C - cmp r4, #2 - moveq r0, #0x20 - streqb r0, [r8, #-1]! -_020E749C: - mov r0, r8 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E74B0: .word 0x000001FD -_020E74B4: .word _0210E504 -_020E74B8: .word _0211131C -_020E74BC: .word _02111324 -_020E74C0: .word _0211132C -_020E74C4: .word _02111330 -_020E74C8: .word _02111334 -_020E74CC: .word _0211133C -_020E74D0: .word _02111344 -_020E74D4: .word _02111348 -_020E74D8: .word 0x66666667 - arm_func_end float2str__printf - - arm_func_start __pformatter -__pformatter: ; 0x020E74DC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x22c - mov r3, #0x20 - mov fp, r2 - strb r3, [sp, #0x19] - ldrsb r2, [fp] - mov sb, r0 - mov r8, r1 - cmp r2, #0 - mov sl, #0 - beq _020E7CE4 -_020E750C: - mov r0, fp - mov r1, #0x25 - bl strchr - str r0, [sp, #0xc] - cmp r0, #0 - bne _020E7560 - mov r0, fp - bl strlen - movs r2, r0 - add sl, sl, r2 - beq _020E7CE4 - mov r0, r8 - mov r1, fp - blx sb - cmp r0, #0 - bne _020E7CE4 - add sp, sp, #0x22c - mvn r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E7560: - subs r2, r0, fp - add sl, sl, r2 - beq _020E7590 - mov r0, r8 - mov r1, fp - blx sb - cmp r0, #0 - addeq sp, sp, #0x22c - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr -_020E7590: - ldr r0, [sp, #0xc] - add r1, sp, #0x25c - add r2, sp, #0x1c - bl parse_format__printf - ldrb r1, [sp, #0x21] - mov fp, r0 - cmp r1, #0x61 - bgt _020E75FC - bge _020E7960 - cmp r1, #0x47 - bgt _020E75F0 - subs r0, r1, #0x41 - addpl pc, pc, r0, lsl #2 - b _020E75E4 -_020E75C8: ; jump table - b _020E7960 ; case 0 - b _020E7B48 ; case 1 - b _020E7B48 ; case 2 - b _020E7B48 ; case 3 - b _020E78F8 ; case 4 - b _020E78F8 ; case 5 - b _020E78F8 ; case 6 -_020E75E4: - cmp r1, #0x25 - beq _020E7B34 - b _020E7B48 -_020E75F0: - cmp r1, #0x58 - beq _020E77BC - b _020E7B48 -_020E75FC: - cmp r1, #0x75 - bgt _020E7664 - subs r0, r1, #0x64 - addpl pc, pc, r0, lsl #2 - b _020E7658 -_020E7610: ; jump table - b _020E767C ; case 0 - b _020E78F8 ; case 1 - b _020E78F8 ; case 2 - b _020E78F8 ; case 3 - b _020E7B48 ; case 4 - b _020E767C ; case 5 - b _020E7B48 ; case 6 - b _020E7B48 ; case 7 - b _020E7B48 ; case 8 - b _020E7B48 ; case 9 - b _020E7A88 ; case 10 - b _020E77BC ; case 11 - b _020E7B48 ; case 12 - b _020E7B48 ; case 13 - b _020E7B48 ; case 14 - b _020E79C8 ; case 15 - b _020E7B48 ; case 16 - b _020E77BC ; case 17 -_020E7658: - cmp r1, #0x63 - beq _020E7B14 - b _020E7B48 -_020E7664: - cmp r1, #0x78 - bgt _020E7674 - beq _020E77BC - b _020E7B48 -_020E7674: - cmp r1, #0xff - b _020E7B48 -_020E767C: - ldrb r0, [sp, #0x20] - cmp r0, #3 - bne _020E769C - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] - b _020E7734 -_020E769C: - cmp r0, #4 - bne _020E76C4 - ldr r1, [sp, #0x25c] - add r2, r1, #8 - str r2, [sp, #0x25c] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020E7734 -_020E76C4: - cmp r0, #6 - bne _020E76EC - ldr r1, [sp, #0x25c] - add r2, r1, #8 - str r2, [sp, #0x25c] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020E7734 -_020E76EC: - cmp r0, #7 - bne _020E7708 - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] - b _020E7734 -_020E7708: - cmp r0, #8 - bne _020E7724 - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] - b _020E7734 -_020E7724: - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] -_020E7734: - cmp r0, #2 - moveq r1, r5, lsl #0x10 - moveq r5, r1, asr #0x10 - cmp r0, #1 - moveq r1, r5, lsl #0x18 - moveq r5, r1, asr #0x18 - cmp r0, #4 - cmpne r0, #6 - add r0, sp, #0x1c - bne _020E7788 - sub r4, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - ldr r3, [r4] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - add r2, sp, #0x22c - bl longlong2str__printf - movs r7, r0 - beq _020E7B48 - b _020E77AC -_020E7788: - sub r4, sp, #8 - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - add r1, sp, #0x22c - mov r0, r5 - ldmia r4, {r2, r3} - bl long2str__printf - movs r7, r0 - beq _020E7B48 -_020E77AC: - add r0, sp, #0x200 - add r0, r0, #0x2b - sub r6, r0, r7 - b _020E7B94 -_020E77BC: - ldrb r0, [sp, #0x20] - cmp r0, #3 - bne _020E77DC - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] - b _020E7874 -_020E77DC: - cmp r0, #4 - bne _020E7804 - ldr r1, [sp, #0x25c] - add r2, r1, #8 - str r2, [sp, #0x25c] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020E7874 -_020E7804: - cmp r0, #6 - bne _020E782C - ldr r1, [sp, #0x25c] - add r2, r1, #8 - str r2, [sp, #0x25c] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020E7874 -_020E782C: - cmp r0, #7 - bne _020E7848 - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] - b _020E7874 -_020E7848: - cmp r0, #8 - bne _020E7864 - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] - b _020E7874 -_020E7864: - ldr r1, [sp, #0x25c] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r5, [r1, #-4] -_020E7874: - cmp r0, #2 - moveq r1, r5, lsl #0x10 - moveq r5, r1, lsr #0x10 - cmp r0, #1 - andeq r5, r5, #0xff - cmp r0, #4 - cmpne r0, #6 - add r0, sp, #0x1c - bne _020E78C4 - sub r4, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - ldr r3, [r4] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - add r2, sp, #0x22c - bl longlong2str__printf - movs r7, r0 - beq _020E7B48 - b _020E78E8 -_020E78C4: - sub r4, sp, #8 - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - add r1, sp, #0x22c - mov r0, r5 - ldmia r4, {r2, r3} - bl long2str__printf - movs r7, r0 - beq _020E7B48 -_020E78E8: - add r0, sp, #0x200 - add r0, r0, #0x2b - sub r6, r0, r7 - b _020E7B94 -_020E78F8: - ldrb r0, [sp, #0x20] - cmp r0, #9 - ldrne r0, [sp, #0x25c] - addne r0, r0, #8 - strne r0, [sp, #0x25c] - bne _020E791C - ldr r0, [sp, #0x25c] - add r0, r0, #8 - str r0, [sp, #0x25c] -_020E791C: - ldr r7, [r0, #-8] - ldr r6, [r0, #-4] - add r0, sp, #0x1c - sub r4, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - ldr r3, [r4] - mov r0, r7 - mov r1, r6 - add r2, sp, #0x22c - bl float2str__printf - movs r7, r0 - beq _020E7B48 - add r0, sp, #0x200 - add r0, r0, #0x2b - sub r6, r0, r7 - b _020E7B94 -_020E7960: - ldrb r0, [sp, #0x20] - cmp r0, #9 - ldrne r0, [sp, #0x25c] - addne r0, r0, #8 - strne r0, [sp, #0x25c] - bne _020E7984 - ldr r0, [sp, #0x25c] - add r0, r0, #8 - str r0, [sp, #0x25c] -_020E7984: - ldr r7, [r0, #-8] - ldr r6, [r0, #-4] - add r0, sp, #0x1c - sub r4, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - ldr r3, [r4] - mov r0, r7 - mov r1, r6 - add r2, sp, #0x22c - bl double2hex__printf - movs r7, r0 - beq _020E7B48 - add r0, sp, #0x200 - add r0, r0, #0x2b - sub r6, r0, r7 - b _020E7B94 -_020E79C8: - ldrb r0, [sp, #0x20] - cmp r0, #5 - bne _020E7A08 - ldr r0, [sp, #0x25c] - mov r2, #0x200 - add r0, r0, #4 - str r0, [sp, #0x25c] - ldr r1, [r0, #-4] - add r0, sp, #0x2c - cmp r1, #0 - ldreq r1, _020E7CF8 ; =_0211134C - bl wcstombs - cmp r0, #0 - blt _020E7B48 - add r7, sp, #0x2c - b _020E7A18 -_020E7A08: - ldr r0, [sp, #0x25c] - add r0, r0, #4 - str r0, [sp, #0x25c] - ldr r7, [r0, #-4] -_020E7A18: - ldrb r0, [sp, #0x1f] - cmp r7, #0 - ldreq r7, _020E7CFC ; =_02111350 - cmp r0, #0 - beq _020E7A4C - ldrb r0, [sp, #0x1e] - ldrb r6, [r7], #1 - cmp r0, #0 - beq _020E7B94 - ldr r0, [sp, #0x28] - cmp r6, r0 - movgt r6, r0 - b _020E7B94 -_020E7A4C: - ldrb r0, [sp, #0x1e] - cmp r0, #0 - beq _020E7A78 - ldr r6, [sp, #0x28] - mov r0, r7 - mov r2, r6 - mov r1, #0 - bl memchr - cmp r0, #0 - subne r6, r0, r7 - b _020E7B94 -_020E7A78: - mov r0, r7 - bl strlen - mov r6, r0 - b _020E7B94 -_020E7A88: - ldr r1, [sp, #0x25c] - ldrb r0, [sp, #0x20] - add r1, r1, #4 - str r1, [sp, #0x25c] - ldr r1, [r1, #-4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _020E7CD8 -_020E7AA8: ; jump table - b _020E7ACC ; case 0 - b _020E7CD8 ; case 1 - b _020E7AD4 ; case 2 - b _020E7ADC ; case 3 - b _020E7B04 ; case 4 - b _020E7CD8 ; case 5 - b _020E7AE4 ; case 6 - b _020E7AF4 ; case 7 - b _020E7AFC ; case 8 -_020E7ACC: - str sl, [r1] - b _020E7CD8 -_020E7AD4: - strh sl, [r1] - b _020E7CD8 -_020E7ADC: - str sl, [r1] - b _020E7CD8 -_020E7AE4: - str sl, [r1] - mov r0, sl, asr #0x1f - str r0, [r1, #4] - b _020E7CD8 -_020E7AF4: - str sl, [r1] - b _020E7CD8 -_020E7AFC: - str sl, [r1] - b _020E7CD8 -_020E7B04: - str sl, [r1] - mov r0, sl, asr #0x1f - str r0, [r1, #4] - b _020E7CD8 -_020E7B14: - ldr r0, [sp, #0x25c] - add r7, sp, #0x2c - add r0, r0, #4 - str r0, [sp, #0x25c] - ldr r0, [r0, #-4] - mov r6, #1 - strb r0, [sp, #0x2c] - b _020E7B94 -_020E7B34: - mov r0, #0x25 - strb r0, [sp, #0x2c] - add r7, sp, #0x2c - mov r6, #1 - b _020E7B94 -_020E7B48: - ldr r0, [sp, #0xc] - bl strlen - movs r4, r0 - beq _020E7B80 - ldr r1, [sp, #0xc] - mov r0, r8 - mov r2, r4 - blx sb - cmp r0, #0 - addeq sp, sp, #0x22c - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr -_020E7B80: - add sp, sp, #0x22c - add r0, sl, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020E7B94: - ldrb r0, [sp, #0x1c] - mov r4, r6 - cmp r0, #0 - beq _020E7C48 - cmp r0, #2 - moveq r0, #0x30 - movne r0, #0x20 - strb r0, [sp, #0x19] - ldrsb r0, [r7] - cmp r0, #0x2b - cmpne r0, #0x2d - cmpne r0, #0x20 - bne _020E7C04 - ldrsb r0, [sp, #0x19] - cmp r0, #0x30 - bne _020E7C04 - mov r0, r8 - mov r1, r7 - mov r2, #1 - blx sb - cmp r0, #0 - addeq sp, sp, #0x22c - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - add r7, r7, #1 - sub r6, r6, #1 -_020E7C04: - ldr r0, [sp, #0x24] - cmp r4, r0 - bge _020E7C48 -_020E7C10: - mov r0, r8 - add r1, sp, #0x19 - mov r2, #1 - blx sb - cmp r0, #0 - addeq sp, sp, #0x22c - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x24] - add r4, r4, #1 - cmp r4, r0 - blt _020E7C10 -_020E7C48: - cmp r6, #0 - beq _020E7C78 - mov r0, r8 - mov r1, r7 - mov r2, r6 - blx sb - cmp r0, #0 - addeq sp, sp, #0x22c - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr -_020E7C78: - ldrb r0, [sp, #0x1c] - cmp r0, #0 - bne _020E7CD4 - ldr r0, [sp, #0x24] - cmp r4, r0 - bge _020E7CD4 - mov r6, #0x20 - add r7, sp, #0x18 -_020E7C98: - mov r0, r8 - mov r1, r7 - mov r2, #1 - strb r6, [sp, #0x18] - blx sb - cmp r0, #0 - addeq sp, sp, #0x22c - mvneq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x24] - add r4, r4, #1 - cmp r4, r0 - blt _020E7C98 -_020E7CD4: - add sl, sl, r4 -_020E7CD8: - ldrsb r0, [fp] - cmp r0, #0 - bne _020E750C -_020E7CE4: - mov r0, sl - add sp, sp, #0x22c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E7CF8: .word _0211134C -_020E7CFC: .word _02111350 - arm_func_end __pformatter - - arm_func_start __FileWrite -__FileWrite: ; 0x020E7D00 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, r1 - mov r3, r5 - mov r1, #1 - mov r4, r2 - bl __fwrite - cmp r4, r0 - movne r5, #0 - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __FileWrite - - arm_func_start __StringWrite -__StringWrite: ; 0x020E7D2C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r3, [r4, #8] - mov r5, r2 - ldr r2, [r4, #4] - add r0, r3, r5 - cmp r0, r2 - ldr r0, [r4] - subhi r5, r2, r3 - mov r2, r5 - add r0, r0, r3 - bl memcpy - ldr r1, [r4, #8] - mov r0, #1 - add r1, r1, r5 - str r1, [r4, #8] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __StringWrite - - arm_func_start printf -printf: ; 0x020E7D70 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - ldr r0, _020E7E70 ; =_02111018 - mvn r1, #0 - bl fwide - cmp r0, #0 - mvnge r0, #0 - ldmgeia sp!, {r4, lr} - addge sp, sp, #0x10 - bxge lr - ldr r0, _020E7E74 ; =_021E5530 - bl OS_TryLockMutex - cmp r0, #0 - bne _020E7DCC - ldr r0, _020E7E78 ; =OSi_ThreadInfo - ldr r1, _020E7E7C ; =_021E54A0 - ldr r2, [r0, #4] - ldr r0, _020E7E80 ; =_021E54C4 - ldr r3, [r2, #0x6c] - mov r2, #1 - str r3, [r1, #0xc] - str r2, [r0, #0xc] - b _020E7E24 -_020E7DCC: - ldr r0, _020E7E78 ; =OSi_ThreadInfo - ldr r1, _020E7E7C ; =_021E54A0 - ldr r0, [r0, #4] - ldr r1, [r1, #0xc] - ldr r0, [r0, #0x6c] - cmp r1, r0 - bne _020E7DFC - ldr r0, _020E7E80 ; =_021E54C4 - ldr r1, [r0, #0xc] - add r1, r1, #1 - str r1, [r0, #0xc] - b _020E7E24 -_020E7DFC: - ldr r0, _020E7E74 ; =_021E5530 - bl OS_LockMutex - ldr r0, _020E7E78 ; =OSi_ThreadInfo - ldr r1, _020E7E7C ; =_021E54A0 - ldr r2, [r0, #4] - ldr r0, _020E7E80 ; =_021E54C4 - ldr r3, [r2, #0x6c] - mov r2, #1 - str r3, [r1, #0xc] - str r2, [r0, #0xc] -_020E7E24: - add r0, sp, #8 - bic r3, r0, #3 - ldr r2, [sp, #8] - ldr r0, _020E7E84 ; =__FileWrite - ldr r1, _020E7E70 ; =_02111018 - add r3, r3, #4 - bl __pformatter - ldr r1, _020E7E80 ; =_021E54C4 - mov r4, r0 - ldr r0, [r1, #0xc] - subs r0, r0, #1 - str r0, [r1, #0xc] - bne _020E7E60 - ldr r0, _020E7E74 ; =_021E5530 - bl OS_UnlockMutex -_020E7E60: - mov r0, r4 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020E7E70: .word _02111018 -_020E7E74: .word _021E5530 -_020E7E78: .word OSi_ThreadInfo -_020E7E7C: .word _021E54A0 -_020E7E80: .word _021E54C4 -_020E7E84: .word __FileWrite - arm_func_end printf - - arm_func_start vsnprintf -vsnprintf: ; 0x020E7E88 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - mov ip, #0 - ldr r0, _020E7EEC ; =__StringWrite - add r1, sp, #0 - str r5, [sp] - str r4, [sp, #4] - str ip, [sp, #8] - bl __pformatter - cmp r5, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, pc} - cmp r0, r4 - movlo r1, #0 - addlo sp, sp, #0xc - strlob r1, [r5, r0] - ldmloia sp!, {r4, r5, pc} - cmp r4, #0 - addne r1, r5, r4 - movne r2, #0 - strneb r2, [r1, #-1] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020E7EEC: .word __StringWrite - arm_func_end vsnprintf - - arm_func_start vsprintf -vsprintf: ; 0x020E7EF0 - ldr ip, _020E7F04 ; =vsnprintf - mov r3, r2 - mov r2, r1 - mvn r1, #0 - bx ip - .align 2, 0 -_020E7F04: .word vsnprintf - arm_func_end vsprintf - - arm_func_start snprintf -snprintf: ; 0x020E7F08 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r3, sp, #0x10 - bic r3, r3, #3 - ldr r2, [sp, #0x10] - add r3, r3, #4 - bl vsnprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end snprintf - - arm_func_start sprintf -sprintf: ; 0x020E7F30 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r1, sp, #0xc - bic r1, r1, #3 - add r3, r1, #4 - ldr r2, [sp, #0xc] - mvn r1, #0 - bl vsnprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end sprintf - - arm_func_start qsort -qsort: ; 0x020E7F5C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov sb, r1 - cmp sb, #2 - mov sl, r0 - mov r8, r2 - mov r7, r3 - addlo sp, sp, #0x10 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sb, lsr #1 - add fp, r0, #1 - sub r0, fp, #1 - mla r0, r8, r0, sl - sub r2, sb, #1 - str r0, [sp, #0xc] - mla r0, r8, r2, sl - str r0, [sp, #8] - mul r0, fp, r8 - mvn r1, #0 - str r0, [sp, #4] - mul r0, r8, r1 - str r0, [sp] -_020E7FB4: - cmp fp, #1 - bls _020E7FDC - ldr r0, [sp, #4] - sub fp, fp, #1 - sub r0, r0, r8 - str r0, [sp, #4] - ldr r0, [sp, #0xc] - sub r0, r0, r8 - str r0, [sp, #0xc] - b _020E8024 -_020E7FDC: - mov r2, r8 - ldr r4, [sp, #8] - ldr r3, [sp, #0xc] - cmp r8, #0 - beq _020E8008 -_020E7FF0: - ldrsb r0, [r4] - ldrsb r1, [r3] - subs r2, r2, #1 - strb r0, [r3], #1 - strb r1, [r4], #1 - bne _020E7FF0 -_020E8008: - sub sb, sb, #1 - cmp sb, #1 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #8] - sub r0, r0, r8 - str r0, [sp, #8] -_020E8024: - ldr r1, [sp, #4] - ldr r0, [sp] - mov r4, fp - add r0, r1, r0 - cmp sb, fp, lsl #1 - add r5, sl, r0 - blo _020E7FB4 -_020E8040: - mov r4, r4, lsl #1 - sub r0, r4, #1 - mov r6, r5 - mla r5, r8, r0, sl - cmp sb, r4 - bls _020E8070 - mov r0, r5 - add r1, r5, r8 - blx r7 - cmp r0, #0 - addlt r4, r4, #1 - addlt r5, r5, r8 -_020E8070: - mov r0, r6 - mov r1, r5 - blx r7 - cmp r0, #0 - bge _020E7FB4 - mov r2, r8 - mov r3, r5 - cmp r8, #0 - beq _020E80AC -_020E8094: - ldrsb r1, [r6] - ldrsb r0, [r3] - subs r2, r2, #1 - strb r0, [r6], #1 - strb r1, [r3], #1 - bne _020E8094 -_020E80AC: - cmp sb, r4, lsl #1 - bhs _020E8040 - b _020E7FB4 -_020E80B8: ; 0x020E80B8 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end qsort - - arm_func_start rand -rand: ; 0x020E80C0 - ldr r2, _020E80E8 ; =_02111354 - ldr r0, _020E80EC ; =0x41C64E6D - ldr r3, [r2] - ldr r1, _020E80F0 ; =0x00007FFF - mul r0, r3, r0 - add r0, r0, #0x39 - add r0, r0, #0x3000 - str r0, [r2] - and r0, r1, r0, lsr #16 - bx lr - .align 2, 0 -_020E80E8: .word _02111354 -_020E80EC: .word 0x41C64E6D -_020E80F0: .word 0x00007FFF - arm_func_end rand - - arm_func_start srand -srand: ; 0x020E80F4 - ldr r1, _020E8100 ; =_02111354 - str r0, [r1] - bx lr - .align 2, 0 -_020E8100: .word _02111354 - arm_func_end srand - - arm_func_start parse_format__printf__scanf -parse_format__printf__scanf: ; 0x020E8104 static routine - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x28 - ldr r6, _020E85F4 ; =_0210E604 - add r5, sp, #0 - mov r7, r0 - mov lr, r1 - mov r4, r5 - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - ldmia r6, {r0, r1} - stmia r5, {r0, r1} - ldrsb r0, [r7, #1] - add ip, r7, #1 - cmp r0, #0x25 - bne _020E8170 - strb r0, [sp, #3] - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r4, {r0, r1} - stmia lr, {r0, r1} - add sp, sp, #0x28 - add r0, ip, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020E8170: - cmp r0, #0x2a - moveq r0, #1 - streqb r0, [sp] - ldreqsb r0, [ip, #1]! - cmp r0, #0 - blt _020E8190 - cmp r0, #0x80 - blt _020E8198 -_020E8190: - mov r1, #0 - b _020E81A8 -_020E8198: - ldr r1, _020E85F8 ; =_0210E504 - mov r2, r0, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #8 -_020E81A8: - cmp r1, #0 - beq _020E8248 - mov r1, #0 - ldr r3, _020E85F8 ; =_0210E504 - str r1, [sp, #4] - mov r4, r1 - mov r1, #0xa -_020E81C4: - ldr r2, [sp, #4] - sub r0, r0, #0x30 - mla r0, r2, r1, r0 - str r0, [sp, #4] - ldrsb r0, [ip, #1]! - cmp r0, #0 - blt _020E81E8 - cmp r0, #0x80 - blt _020E81F0 -_020E81E8: - mov r2, r4 - b _020E81FC -_020E81F0: - mov r2, r0, lsl #1 - ldrh r2, [r3, r2] - and r2, r2, #8 -_020E81FC: - cmp r2, #0 - bne _020E81C4 - ldr r1, [sp, #4] - cmp r1, #0 - bne _020E8240 - mov r0, #0xff - add r4, sp, #0 - strb r0, [sp, #3] - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r4, {r0, r1} - stmia lr, {r0, r1} - add sp, sp, #0x28 - add r0, ip, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020E8240: - mov r1, #1 - strb r1, [sp, #1] -_020E8248: - cmp r0, #0x6c - mov r1, #1 - bgt _020E8280 - cmp r0, #0x68 - blt _020E8274 - beq _020E829C - cmp r0, #0x6a - beq _020E82E8 - cmp r0, #0x6c - beq _020E82B8 - b _020E830C -_020E8274: - cmp r0, #0x4c - beq _020E82DC - b _020E830C -_020E8280: - cmp r0, #0x74 - bgt _020E8290 - beq _020E8300 - b _020E830C -_020E8290: - cmp r0, #0x7a - beq _020E82F4 - b _020E830C -_020E829C: - mov r2, #2 - strb r2, [sp, #2] - ldrsb r2, [ip, #1] - cmp r2, #0x68 - streqb r1, [sp, #2] - ldreqsb r0, [ip, #1]! - b _020E8310 -_020E82B8: - mov r2, #3 - strb r2, [sp, #2] - ldrsb r2, [ip, #1] - cmp r2, #0x6c - bne _020E8310 - mov r0, #7 - strb r0, [sp, #2] - ldrsb r0, [ip, #1]! - b _020E8310 -_020E82DC: - mov r2, #9 - strb r2, [sp, #2] - b _020E8310 -_020E82E8: - mov r2, #4 - strb r2, [sp, #2] - b _020E8310 -_020E82F4: - mov r2, #5 - strb r2, [sp, #2] - b _020E8310 -_020E8300: - mov r2, #6 - strb r2, [sp, #2] - b _020E8310 -_020E830C: - mov r1, #0 -_020E8310: - cmp r1, #0 - ldrnesb r0, [ip, #1]! - strb r0, [sp, #3] - cmp r0, #0x5b - bgt _020E8364 - bge _020E84B4 - cmp r0, #0x47 - bgt _020E8358 - subs r1, r0, #0x41 - addpl pc, pc, r1, lsl #2 - b _020E85C4 -_020E833C: ; jump table - b _020E83F0 ; case 0 - b _020E85C4 ; case 1 - b _020E85C4 ; case 2 - b _020E85C4 ; case 3 - b _020E83F0 ; case 4 - b _020E83F0 ; case 5 - b _020E83F0 ; case 6 -_020E8358: - cmp r0, #0x58 - beq _020E83DC - b _020E85C4 -_020E8364: - cmp r0, #0x61 - bgt _020E8374 - beq _020E83F0 - b _020E85C4 -_020E8374: - sub r0, r0, #0x63 - cmp r0, #0x15 - addls pc, pc, r0, lsl #2 - b _020E85C4 -_020E8384: ; jump table - b _020E8440 ; case 0 - b _020E83DC ; case 1 - b _020E83F0 ; case 2 - b _020E83F0 ; case 3 - b _020E83F0 ; case 4 - b _020E85C4 ; case 5 - b _020E83DC ; case 6 - b _020E85C4 ; case 7 - b _020E85C4 ; case 8 - b _020E85C4 ; case 9 - b _020E85C4 ; case 10 - b _020E85CC ; case 11 - b _020E83DC ; case 12 - b _020E842C ; case 13 - b _020E85C4 ; case 14 - b _020E85C4 ; case 15 - b _020E8464 ; case 16 - b _020E85C4 ; case 17 - b _020E83DC ; case 18 - b _020E85C4 ; case 19 - b _020E85C4 ; case 20 - b _020E83DC ; case 21 -_020E83DC: - ldrb r0, [sp, #2] - cmp r0, #9 - moveq r0, #0xff - streqb r0, [sp, #3] - b _020E85CC -_020E83F0: - ldrb r1, [sp, #2] - cmp r1, #1 - cmpne r1, #2 - beq _020E8410 - add r0, r1, #0xfc - and r0, r0, #0xff - cmp r0, #3 - bhi _020E841C -_020E8410: - mov r0, #0xff - strb r0, [sp, #3] - b _020E85CC -_020E841C: - cmp r1, #3 - moveq r0, #8 - streqb r0, [sp, #2] - b _020E85CC -_020E842C: - mov r1, #3 - mov r0, #0x78 - strb r1, [sp, #2] - strb r0, [sp, #3] - b _020E85CC -_020E8440: - ldrb r0, [sp, #2] - cmp r0, #3 - moveq r0, #0xa - streqb r0, [sp, #2] - beq _020E85CC - cmp r0, #0 - movne r0, #0xff - strneb r0, [sp, #3] - b _020E85CC -_020E8464: - ldrb r0, [sp, #2] - cmp r0, #3 - moveq r0, #0xa - streqb r0, [sp, #2] - beq _020E8484 - cmp r0, #0 - movne r0, #0xff - strneb r0, [sp, #3] -_020E8484: - add r2, sp, #8 - mov r1, #0x20 - mov r0, #0xff -_020E8490: - sub r1, r1, #1 - cmp r1, #0 - strb r0, [r2], #1 - bgt _020E8490 - mov r1, #0xc1 - mov r0, #0xfe - strb r1, [sp, #9] - strb r0, [sp, #0xc] - b _020E85CC -_020E84B4: - ldrb r0, [sp, #2] - cmp r0, #3 - moveq r0, #0xa - streqb r0, [sp, #2] - beq _020E84D4 - cmp r0, #0 - movne r0, #0xff - strneb r0, [sp, #3] -_020E84D4: - ldrsb r2, [ip, #1]! - mov r1, #0 - cmp r2, #0x5e - ldreqsb r2, [ip, #1]! - moveq r1, #1 - cmp r2, #0x5d - bne _020E857C - ldrb r0, [sp, #0x13] - orr r0, r0, #0x20 - strb r0, [sp, #0x13] - ldrsb r2, [ip, #1]! - b _020E857C -_020E8504: - add r0, sp, #0 - and r3, r2, #0xff - add r6, r0, r3, asr #3 - ldrb r5, [r6, #8] - and r3, r2, #7 - mov r4, #1 - orr r3, r5, r4, lsl r3 - strb r3, [r6, #8] - ldrsb r3, [ip, #1] - cmp r3, #0x2d - bne _020E8578 - ldrsb r7, [ip, #2] - cmp r7, #0 - cmpne r7, #0x5d - beq _020E8578 - add r2, r2, #1 - cmp r2, r7 - bgt _020E8570 -_020E854C: - and r3, r2, #0xff - add r6, r0, r3, asr #3 - ldrb r5, [r6, #8] - and r3, r2, #7 - add r2, r2, #1 - orr r3, r5, r4, lsl r3 - strb r3, [r6, #8] - cmp r2, r7 - ble _020E854C -_020E8570: - ldrsb r2, [ip, #3]! - b _020E857C -_020E8578: - ldrsb r2, [ip, #1]! -_020E857C: - cmp r2, #0 - cmpne r2, #0x5d - bne _020E8504 - cmp r2, #0 - moveq r0, #0xff - streqb r0, [sp, #3] - beq _020E85CC - cmp r1, #0 - beq _020E85CC - add r2, sp, #8 - mov r1, #0x20 -_020E85A8: - ldrb r0, [r2] - sub r1, r1, #1 - cmp r1, #0 - mvn r0, r0 - strb r0, [r2], #1 - bgt _020E85A8 - b _020E85CC -_020E85C4: - mov r0, #0xff - strb r0, [sp, #3] -_020E85CC: - add r4, sp, #0 - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldmia r4, {r0, r1} - stmia lr, {r0, r1} - add r0, ip, #1 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E85F4: .word _0210E604 -_020E85F8: .word _0210E504 - arm_func_end parse_format__printf__scanf - - arm_func_start __sformatter -__sformatter: ; 0x020E85FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x88 - ldrsb r5, [r2] - str r2, [sp, #0xc] - mov r2, #0 - mov sb, r0 - mov r0, r2 - str r2, [sp, #0x20] - mov r8, r1 - str r3, [sp, #0x10] - str r0, [sp, #0x24] - cmp r5, #0 - ldr sl, [sp, #0xb0] - str r0, [sp, #0x30] - mov r4, r2 - str r0, [sp, #0x44] - str r0, [sp, #0x40] - beq _020E9310 -_020E8644: - cmp r5, #0 - mov r0, #1 - blt _020E8658 - cmp r5, #0x80 - movlt r0, #0 -_020E8658: - cmp r0, #0 - movne r0, #0 - bne _020E8674 - mov r1, r5, lsl #1 - ldr r0, _020E9348 ; =_0210E504 - ldrh r0, [r0, r1] - and r0, r0, #0x100 -_020E8674: - cmp r0, #0 - beq _020E8734 - mov r2, #0 - ldr r1, _020E9348 ; =_0210E504 - mov ip, r2 - mov r3, #1 -_020E868C: - ldr r0, [sp, #0xc] - ldrsb r5, [r0, #1]! - str r0, [sp, #0xc] - mov r0, r3 - cmp r5, #0 - blt _020E86AC - cmp r5, #0x80 - movlt r0, r2 -_020E86AC: - cmp r0, #0 - movne r0, ip - moveq r0, r5, lsl #1 - ldreqh r0, [r1, r0] - andeq r0, r0, #0x100 - cmp r0, #0 - bne _020E868C - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _020E9300 - ldr r5, _020E9348 ; =_0210E504 - b _020E86E0 -_020E86DC: - add r4, r4, #1 -_020E86E0: - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - strb r0, [sp, #0x50] - ldrsb r1, [sp, #0x50] - cmp r1, #0 - blt _020E8708 - cmp r1, #0x80 - blt _020E8710 -_020E8708: - mov r0, #0 - b _020E871C -_020E8710: - mov r0, r1, lsl #1 - ldrh r0, [r5, r0] - and r0, r0, #0x100 -_020E871C: - cmp r0, #0 - bne _020E86DC - mov r0, r8 - mov r2, #1 - blx sb - b _020E9300 -_020E8734: - cmp r5, #0x25 - beq _020E87AC - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _020E87AC - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - strb r0, [sp, #0x50] - and r0, r5, #0xff - ldrsb r1, [sp, #0x50] - cmp r0, r1 - beq _020E8798 - mov r0, r8 - mov r2, #1 - blx sb - cmp sl, #0 - beq _020E9310 - mov r0, #1 - str r0, [sp, #0x30] - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - b _020E9300 -_020E8798: - ldr r0, [sp, #0xc] - add r4, r4, #1 - add r0, r0, #1 - str r0, [sp, #0xc] - b _020E9300 -_020E87AC: - ldr r0, [sp, #0xc] - add r1, sp, #0x60 - bl parse_format__printf__scanf - str r0, [sp, #0xc] - ldrb r0, [sp, #0x60] - cmp r0, #0 - bne _020E87E8 - ldrb r0, [sp, #0x63] - cmp r0, #0x25 - beq _020E87E8 - ldr r0, [sp, #0x10] - add r0, r0, #4 - str r0, [sp, #0x10] - ldr r5, [r0, #-4] - b _020E87EC -_020E87E8: - mov r5, #0 -_020E87EC: - ldrb r0, [sp, #0x63] - cmp r0, #0x6e - beq _020E882C - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _020E882C - mov r0, r8 - mov r1, #0 - mov r2, #2 - blx sb - cmp r0, #0 - beq _020E882C - cmp sl, #0 - beq _020E9310 - mov r0, #1 - str r0, [sp, #0x30] -_020E882C: - ldrb r1, [sp, #0x63] - cmp r1, #0x5b - bgt _020E8884 - bge _020E9058 - cmp r1, #0x47 - bgt _020E8878 - subs r0, r1, #0x41 - addpl pc, pc, r0, lsl #2 - b _020E886C -_020E8850: ; jump table - b _020E8CD4 ; case 0 - b _020E9310 ; case 1 - b _020E9310 ; case 2 - b _020E9310 ; case 3 - b _020E8CD4 ; case 4 - b _020E8CD4 ; case 5 - b _020E8CD4 ; case 6 -_020E886C: - cmp r1, #0x25 - beq _020E8F50 - b _020E9310 -_020E8878: - cmp r1, #0x58 - beq _020E8B10 - b _020E9310 -_020E8884: - cmp r1, #0x78 - bgt _020E88FC - subs r0, r1, #0x63 - addpl pc, pc, r0, lsl #2 - b _020E88F0 -_020E8898: ; jump table - b _020E8D98 ; case 0 - b _020E8904 ; case 1 - b _020E8CD4 ; case 2 - b _020E8CD4 ; case 3 - b _020E8CD4 ; case 4 - b _020E9310 ; case 5 - b _020E890C ; case 6 - b _020E9310 ; case 7 - b _020E9310 ; case 8 - b _020E9310 ; case 9 - b _020E9310 ; case 10 - b _020E929C ; case 11 - b _020E8B00 ; case 12 - b _020E9310 ; case 13 - b _020E9310 ; case 14 - b _020E9310 ; case 15 - b _020E8FDC ; case 16 - b _020E9310 ; case 17 - b _020E8B08 ; case 18 - b _020E9310 ; case 19 - b _020E9310 ; case 20 - b _020E8B10 ; case 21 -_020E88F0: - cmp r1, #0x61 - beq _020E8CD4 - b _020E9310 -_020E88FC: - cmp r1, #0xff - b _020E9310 -_020E8904: - mov r0, #0xa - b _020E8910 -_020E890C: - mov r0, #0 -_020E8910: - ldr r1, [sp, #0x30] - cmp r1, #0 - beq _020E8930 - mov r0, #0 - str r0, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - b _020E8A38 -_020E8930: - ldrb r1, [sp, #0x62] - add r2, sp, #0x5c - cmp r1, #7 - cmpne r1, #4 - add r1, sp, #0x58 - bne _020E8974 - str r2, [sp] - str r1, [sp, #4] - add r1, sp, #0x54 - str r1, [sp, #8] - ldr r1, [sp, #0x64] - mov r2, sb - mov r3, r8 - bl __strtoull - str r0, [sp, #0x34] - str r1, [sp, #0x18] - b _020E8998 -_020E8974: - str r2, [sp] - str r1, [sp, #4] - add r1, sp, #0x54 - str r1, [sp, #8] - ldr r1, [sp, #0x64] - mov r2, sb - mov r3, r8 - bl __strtoul - str r0, [sp, #0x3c] -_020E8998: - ldr r0, [sp, #0x5c] - cmp r0, #0 - bne _020E89C8 - cmp sl, #0 - beq _020E9310 - mov r0, #1 - str r0, [sp, #0x30] - mov r0, #0 - str r0, [sp, #0x1c] - str r0, [sp, #0x20] - str r0, [sp, #0x24] - b _020E8A38 -_020E89C8: - add r4, r4, r0 - ldrb r0, [sp, #0x62] - cmp r0, #7 - cmpne r0, #4 - bne _020E8A18 - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _020E8A04 - ldr r0, [sp, #0x34] - rsbs r0, r0, #0 - str r0, [sp, #0x20] - ldr r0, [sp, #0x18] - rsc r0, r0, #0 - str r0, [sp, #0x24] - b _020E8A38 -_020E8A04: - ldr r0, [sp, #0x34] - str r0, [sp, #0x20] - ldr r0, [sp, #0x18] - str r0, [sp, #0x24] - b _020E8A38 -_020E8A18: - ldr r0, [sp, #0x58] - cmp r0, #0 - ldreq r0, [sp, #0x3c] - streq r0, [sp, #0x1c] - beq _020E8A38 - ldr r0, [sp, #0x3c] - rsb r0, r0, #0 - str r0, [sp, #0x1c] -_020E8A38: - cmp r5, #0 - beq _020E8AF0 - ldrb r0, [sp, #0x62] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _020E8ADC -_020E8A50: ; jump table - b _020E8A70 ; case 0 - b _020E8A7C ; case 1 - b _020E8A88 ; case 2 - b _020E8A94 ; case 3 - b _020E8AA0 ; case 4 - b _020E8AB4 ; case 5 - b _020E8AC0 ; case 6 - b _020E8ACC ; case 7 -_020E8A70: - ldr r0, [sp, #0x1c] - str r0, [r5] - b _020E8ADC -_020E8A7C: - ldr r0, [sp, #0x1c] - strb r0, [r5] - b _020E8ADC -_020E8A88: - ldr r0, [sp, #0x1c] - strh r0, [r5] - b _020E8ADC -_020E8A94: - ldr r0, [sp, #0x1c] - str r0, [r5] - b _020E8ADC -_020E8AA0: - ldr r0, [sp, #0x20] - str r0, [r5] - ldr r0, [sp, #0x24] - str r0, [r5, #4] - b _020E8ADC -_020E8AB4: - ldr r0, [sp, #0x1c] - str r0, [r5] - b _020E8ADC -_020E8AC0: - ldr r0, [sp, #0x1c] - str r0, [r5] - b _020E8ADC -_020E8ACC: - ldr r0, [sp, #0x20] - str r0, [r5] - ldr r0, [sp, #0x24] - str r0, [r5, #4] -_020E8ADC: - ldr r0, [sp, #0x30] - cmp r0, #0 - ldreq r0, [sp, #0x44] - addeq r0, r0, #1 - streq r0, [sp, #0x44] -_020E8AF0: - ldr r0, [sp, #0x40] - add r0, r0, #1 - str r0, [sp, #0x40] - b _020E9300 -_020E8B00: - mov r0, #8 - b _020E8B14 -_020E8B08: - mov r0, #0xa - b _020E8B14 -_020E8B10: - mov r0, #0x10 -_020E8B14: - ldr r1, [sp, #0x30] - cmp r1, #0 - beq _020E8B34 - mov r0, #0 - str r0, [sp, #0x3c] - str r0, [sp, #0x34] - str r0, [sp, #0x18] - b _020E8C0C -_020E8B34: - ldrb r1, [sp, #0x62] - add r2, sp, #0x5c - cmp r1, #7 - cmpne r1, #4 - add r1, sp, #0x58 - bne _020E8B78 - str r2, [sp] - str r1, [sp, #4] - add r1, sp, #0x54 - str r1, [sp, #8] - ldr r1, [sp, #0x64] - mov r2, sb - mov r3, r8 - bl __strtoull - str r0, [sp, #0x34] - str r1, [sp, #0x18] - b _020E8B9C -_020E8B78: - str r2, [sp] - str r1, [sp, #4] - add r1, sp, #0x54 - str r1, [sp, #8] - ldr r1, [sp, #0x64] - mov r2, sb - mov r3, r8 - bl __strtoul - str r0, [sp, #0x3c] -_020E8B9C: - ldr r0, [sp, #0x5c] - cmp r0, #0 - bne _020E8BCC - cmp sl, #0 - beq _020E9310 - mov r0, #1 - str r0, [sp, #0x30] - mov r0, #0 - str r0, [sp, #0x3c] - str r0, [sp, #0x34] - str r0, [sp, #0x18] - b _020E8C0C -_020E8BCC: - add r4, r4, r0 - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _020E8C0C - ldrb r0, [sp, #0x62] - cmp r0, #7 - ldrne r0, [sp, #0x3c] - rsbne r0, r0, #0 - strne r0, [sp, #0x3c] - bne _020E8C0C - ldr r0, [sp, #0x34] - rsbs r0, r0, #0 - str r0, [sp, #0x34] - ldr r0, [sp, #0x18] - rsc r0, r0, #0 - str r0, [sp, #0x18] -_020E8C0C: - cmp r5, #0 - beq _020E8CC4 - ldrb r0, [sp, #0x62] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _020E8CB0 -_020E8C24: ; jump table - b _020E8C44 ; case 0 - b _020E8C50 ; case 1 - b _020E8C5C ; case 2 - b _020E8C68 ; case 3 - b _020E8C74 ; case 4 - b _020E8C88 ; case 5 - b _020E8C94 ; case 6 - b _020E8CA0 ; case 7 -_020E8C44: - ldr r0, [sp, #0x3c] - str r0, [r5] - b _020E8CB0 -_020E8C50: - ldr r0, [sp, #0x3c] - strb r0, [r5] - b _020E8CB0 -_020E8C5C: - ldr r0, [sp, #0x3c] - strh r0, [r5] - b _020E8CB0 -_020E8C68: - ldr r0, [sp, #0x3c] - str r0, [r5] - b _020E8CB0 -_020E8C74: - ldr r0, [sp, #0x34] - str r0, [r5] - ldr r0, [sp, #0x18] - str r0, [r5, #4] - b _020E8CB0 -_020E8C88: - ldr r0, [sp, #0x3c] - str r0, [r5] - b _020E8CB0 -_020E8C94: - ldr r0, [sp, #0x3c] - str r0, [r5] - b _020E8CB0 -_020E8CA0: - ldr r0, [sp, #0x34] - str r0, [r5] - ldr r0, [sp, #0x18] - str r0, [r5, #4] -_020E8CB0: - ldr r0, [sp, #0x30] - cmp r0, #0 - ldreq r0, [sp, #0x44] - addeq r0, r0, #1 - streq r0, [sp, #0x44] -_020E8CC4: - ldr r0, [sp, #0x40] - add r0, r0, #1 - str r0, [sp, #0x40] - b _020E9300 -_020E8CD4: - ldr r0, [sp, #0x30] - cmp r0, #0 - beq _020E8CF0 - ldr r0, _020E934C ; =_021110EC - ldr r0, [r0] - bl _f2d - b _020E8D3C -_020E8CF0: - add r0, sp, #0x54 - str r0, [sp] - ldr r0, [sp, #0x64] - mov r1, sb - mov r2, r8 - add r3, sp, #0x5c - bl __strtold - ldr r2, [sp, #0x5c] - cmp r2, #0 - bne _020E8D38 - cmp sl, #0 - beq _020E9310 - mov r0, #1 - str r0, [sp, #0x30] - ldr r0, _020E934C ; =_021110EC - ldr r0, [r0] - bl _f2d - b _020E8D3C -_020E8D38: - add r4, r4, r2 -_020E8D3C: - cmp r5, #0 - beq _020E8D88 - ldrb r2, [sp, #0x62] - cmp r2, #0 - beq _020E8D64 - cmp r2, #8 - beq _020E8D70 - cmp r2, #9 - stmeqia r5, {r0, r1} - b _020E8D74 -_020E8D64: - bl _d2f - str r0, [r5] - b _020E8D74 -_020E8D70: - stmia r5, {r0, r1} -_020E8D74: - ldr r0, [sp, #0x30] - cmp r0, #0 - ldreq r0, [sp, #0x44] - addeq r0, r0, #1 - streq r0, [sp, #0x44] -_020E8D88: - ldr r0, [sp, #0x40] - add r0, r0, #1 - str r0, [sp, #0x40] - b _020E9300 -_020E8D98: - ldrb r0, [sp, #0x61] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x64] - cmp r5, #0 - beq _020E8EE0 - cmp sl, #0 - beq _020E8DCC - ldr r0, [sp, #0x10] - mov r7, #1 - add r0, r0, #4 - ldr fp, [r0, #-4] - str r0, [sp, #0x10] -_020E8DCC: - ldr r0, [sp, #0x30] - mov r1, #0 - cmp r0, #0 - str r1, [sp, #0x5c] - beq _020E8DEC - cmp fp, #0 - strneb r1, [r5] - b _020E9300 -_020E8DEC: - mvn r0, #0 - str r5, [sp, #0x2c] - str r0, [sp, #0x48] - b _020E8E34 -_020E8DFC: - ldrb r0, [sp, #0x62] - strb r6, [sp, #0x50] - cmp r0, #0xa - ldrnesb r0, [sp, #0x50] - strneb r0, [r5], #1 - bne _020E8E28 - mov r0, r5 - add r1, sp, #0x50 - mov r2, #1 - bl mbtowc - add r5, r5, #1 -_020E8E28: - ldr r0, [sp, #0x5c] - add r1, r0, #1 - str r1, [sp, #0x5c] -_020E8E34: - ldr r0, [sp, #0x64] - cmp r0, #0 - sub r0, r0, #1 - str r0, [sp, #0x64] - beq _020E8E84 - cmp sl, #0 - beq _020E8E64 - cmp fp, r1 - movhi r7, #1 - movls r7, #0 - cmp r7, #0 - beq _020E8E84 -_020E8E64: - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - mov r6, r0 - ldr r0, [sp, #0x48] - cmp r6, r0 - bne _020E8DFC -_020E8E84: - strb r6, [sp, #0x50] - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _020E8EA4 - cmp sl, #0 - beq _020E8ECC - cmp r7, #0 - bne _020E8ECC -_020E8EA4: - cmp sl, #0 - beq _020E9310 - mov r0, #1 - cmp fp, #0 - str r0, [sp, #0x30] - beq _020E9300 - ldr r0, [sp, #0x2c] - mov r1, #0 - strb r1, [r0] - b _020E9300 -_020E8ECC: - add r4, r4, r0 - ldr r0, [sp, #0x44] - add r0, r0, #1 - str r0, [sp, #0x44] - b _020E8F40 -_020E8EE0: - mov r0, #0 - str r0, [sp, #0x5c] - mvn r5, #0 - b _020E8F00 -_020E8EF0: - strb r6, [sp, #0x50] - ldr r0, [sp, #0x5c] - add r0, r0, #1 - str r0, [sp, #0x5c] -_020E8F00: - ldr r0, [sp, #0x64] - cmp r0, #0 - sub r0, r0, #1 - str r0, [sp, #0x64] - beq _020E8F30 - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - mov r6, r0 - cmp r6, r5 - bne _020E8EF0 -_020E8F30: - strb r6, [sp, #0x50] - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _020E9310 -_020E8F40: - ldr r0, [sp, #0x40] - add r0, r0, #1 - str r0, [sp, #0x40] - b _020E9300 -_020E8F50: - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _020E9300 - ldr r5, _020E9348 ; =_0210E504 - b _020E8F68 -_020E8F64: - add r4, r4, #1 -_020E8F68: - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - strb r0, [sp, #0x50] - ldrsb r1, [sp, #0x50] - cmp r1, #0 - blt _020E8F90 - cmp r1, #0x80 - blt _020E8F98 -_020E8F90: - mov r0, #0 - b _020E8FA4 -_020E8F98: - mov r0, r1, lsl #1 - ldrh r0, [r5, r0] - and r0, r0, #0x100 -_020E8FA4: - cmp r0, #0 - bne _020E8F64 - cmp r1, #0x25 - beq _020E8FD4 - mov r0, r8 - mov r2, #1 - blx sb - cmp sl, #0 - beq _020E9310 - mov r0, #1 - str r0, [sp, #0x30] - b _020E9300 -_020E8FD4: - add r4, r4, #1 - b _020E9300 -_020E8FDC: - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _020E9058 - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - strb r0, [sp, #0x50] - b _020E9018 -_020E9000: - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - strb r0, [sp, #0x50] -_020E9018: - ldrsb r1, [sp, #0x50] - cmp r1, #0 - blt _020E902C - cmp r1, #0x80 - blt _020E9034 -_020E902C: - mov r0, #0 - b _020E9044 -_020E9034: - ldr r0, _020E9348 ; =_0210E504 - mov r2, r1, lsl #1 - ldrh r0, [r0, r2] - and r0, r0, #0x100 -_020E9044: - cmp r0, #0 - bne _020E9000 - mov r0, r8 - mov r2, #1 - blx sb -_020E9058: - cmp r5, #0 - beq _020E91D4 - cmp sl, #0 - beq _020E9080 - ldr r0, [sp, #0x10] - mov r7, #1 - add r0, r0, #4 - str r0, [sp, #0x10] - ldr r0, [r0, #-4] - sub fp, r0, #1 -_020E9080: - ldr r0, [sp, #0x30] - mov r1, #0 - cmp r0, #0 - str r1, [sp, #0x5c] - beq _020E90A0 - cmp fp, #0 - strneb r1, [r5] - b _020E9300 -_020E90A0: - mvn r0, #0 - str r5, [sp, #0x28] - str r0, [sp, #0x4c] - b _020E9104 -_020E90B0: - strb r6, [sp, #0x50] - ldrsb r1, [sp, #0x50] - add r2, sp, #0x60 - and r3, r1, #0xff - add r2, r2, r3, asr #3 - ldrb r3, [r2, #8] - and r0, r1, #7 - mov r2, #1 - tst r3, r2, lsl r0 - beq _020E9154 - ldrb r0, [sp, #0x62] - cmp r0, #0xa - strneb r1, [r5], #1 - bne _020E90F8 - mov r0, r5 - add r1, sp, #0x50 - bl mbtowc - add r5, r5, #2 -_020E90F8: - ldr r0, [sp, #0x5c] - add r1, r0, #1 - str r1, [sp, #0x5c] -_020E9104: - ldr r0, [sp, #0x64] - cmp r0, #0 - sub r0, r0, #1 - str r0, [sp, #0x64] - beq _020E9154 - cmp sl, #0 - beq _020E9134 - cmp fp, r1 - movhs r7, #1 - movlo r7, #0 - cmp r7, #0 - beq _020E9154 -_020E9134: - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - mov r6, r0 - ldr r0, [sp, #0x4c] - cmp r6, r0 - bne _020E90B0 -_020E9154: - strb r6, [sp, #0x50] - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _020E9174 - cmp sl, #0 - beq _020E91AC - cmp r7, #0 - bne _020E91AC -_020E9174: - mov r0, r8 - ldrsb r1, [sp, #0x50] - mov r2, #1 - blx sb - cmp sl, #0 - beq _020E9310 - mov r0, #1 - cmp fp, #0 - str r0, [sp, #0x30] - beq _020E9300 - ldr r0, [sp, #0x28] - mov r1, #0 - strb r1, [r0] - b _020E9300 -_020E91AC: - add r4, r4, r0 - ldrb r0, [sp, #0x62] - cmp r0, #0xa - mov r0, #0 - streqh r0, [r5] - strneb r0, [r5] - ldr r0, [sp, #0x44] - add r0, r0, #1 - str r0, [sp, #0x44] - b _020E9270 -_020E91D4: - mov r0, #0 - str r0, [sp, #0x5c] - mvn r5, #0 - b _020E9218 -_020E91E4: - strb r6, [sp, #0x50] - ldrsb r1, [sp, #0x50] - and r0, r1, #7 - and r2, r1, #0xff - add r1, sp, #0x60 - add r1, r1, r2, asr #3 - ldrb r2, [r1, #8] - mov r1, #1 - tst r2, r1, lsl r0 - beq _020E9248 - ldr r0, [sp, #0x5c] - add r0, r0, #1 - str r0, [sp, #0x5c] -_020E9218: - ldr r0, [sp, #0x64] - cmp r0, #0 - sub r0, r0, #1 - str r0, [sp, #0x64] - beq _020E9248 - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - mov r6, r0 - cmp r6, r5 - bne _020E91E4 -_020E9248: - strb r6, [sp, #0x50] - ldr r0, [sp, #0x5c] - cmp r0, #0 - bne _020E926C - mov r0, r8 - ldrsb r1, [sp, #0x50] - mov r2, #1 - blx sb - b _020E9300 -_020E926C: - add r4, r4, r0 -_020E9270: - ldr r0, [sp, #0x64] - cmp r0, #0 - blt _020E928C - mov r0, r8 - ldrsb r1, [sp, #0x50] - mov r2, #1 - blx sb -_020E928C: - ldr r0, [sp, #0x40] - add r0, r0, #1 - str r0, [sp, #0x40] - b _020E9300 -_020E929C: - cmp r5, #0 - beq _020E9300 - ldrb r0, [sp, #0x62] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _020E9300 -_020E92B4: ; jump table - b _020E92D4 ; case 0 - b _020E92EC ; case 1 - b _020E92DC ; case 2 - b _020E92E4 ; case 3 - b _020E9300 ; case 4 - b _020E9300 ; case 5 - b _020E9300 ; case 6 - b _020E92F4 ; case 7 -_020E92D4: - str r4, [r5] - b _020E9300 -_020E92DC: - strh r4, [r5] - b _020E9300 -_020E92E4: - str r4, [r5] - b _020E9300 -_020E92EC: - strb r4, [r5] - b _020E9300 -_020E92F4: - str r4, [r5] - mov r0, r4, asr #0x1f - str r0, [r5, #4] -_020E9300: - ldr r0, [sp, #0xc] - ldrsb r5, [r0] - cmp r5, #0 - bne _020E8644 -_020E9310: - mov r0, r8 - mov r1, #0 - mov r2, #2 - blx sb - cmp r0, #0 - beq _020E933C - ldr r0, [sp, #0x40] - cmp r0, #0 - addeq sp, sp, #0x88 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E933C: - ldr r0, [sp, #0x44] - add sp, sp, #0x88 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020E9348: .word _0210E504 -_020E934C: .word _021110EC - arm_func_end __sformatter - - arm_func_start __StringRead -__StringRead: ; 0x020E9350 - cmp r2, #0 - beq _020E936C - cmp r2, #1 - beq _020E939C - cmp r2, #2 - beq _020E93C4 - b _020E93CC -_020E936C: - ldr r1, [r0] - ldrsb r2, [r1] - cmp r2, #0 - bne _020E938C - mov r1, #1 - str r1, [r0, #4] - sub r0, r1, #2 - bx lr -_020E938C: - add r1, r1, #1 - str r1, [r0] - and r0, r2, #0xff - bx lr -_020E939C: - ldr r2, [r0, #4] - cmp r2, #0 - movne r2, #0 - strne r2, [r0, #4] - bne _020E93BC - ldr r2, [r0] - sub r2, r2, #1 - str r2, [r0] -_020E93BC: - mov r0, r1 - bx lr -_020E93C4: - ldr r0, [r0, #4] - bx lr -_020E93CC: - mov r0, #0 - bx lr - arm_func_end __StringRead - - arm_func_start vsscanf -vsscanf: ; 0x020E93D4 - stmdb sp!, {lr} - sub sp, sp, #0xc - str r0, [sp, #4] - cmp r0, #0 - ldrnesb r0, [r0] - mov lr, r1 - mov r3, r2 - cmpne r0, #0 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {pc} - mov ip, #0 - str ip, [sp, #8] - ldr r0, _020E9424 ; =__StringRead - add r1, sp, #4 - mov r2, lr - str ip, [sp] - bl __sformatter - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_020E9424: .word __StringRead - arm_func_end vsscanf - - arm_func_start sscanf -sscanf: ; 0x020E9428 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsscanf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end sscanf - - arm_func_start raise -raise: ; 0x020E9450 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - cmp r5, #1 - blt _020E9468 - cmp r5, #7 - ble _020E9470 -_020E9468: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020E9470: - ldr r0, _020E956C ; =_021E5590 - bl OS_TryLockMutex - cmp r0, #0 - bne _020E94A4 - ldr r0, _020E9570 ; =OSi_ThreadInfo - ldr r1, _020E9574 ; =_021E54A0 - ldr r2, [r0, #4] - ldr r0, _020E9578 ; =_021E54C4 - ldr r3, [r2, #0x6c] - mov r2, #1 - str r3, [r1, #0x1c] - str r2, [r0, #0x1c] - b _020E94FC -_020E94A4: - ldr r0, _020E9570 ; =OSi_ThreadInfo - ldr r1, _020E9574 ; =_021E54A0 - ldr r0, [r0, #4] - ldr r1, [r1, #0x1c] - ldr r0, [r0, #0x6c] - cmp r1, r0 - bne _020E94D4 - ldr r0, _020E9578 ; =_021E54C4 - ldr r1, [r0, #0x1c] - add r1, r1, #1 - str r1, [r0, #0x1c] - b _020E94FC -_020E94D4: - ldr r0, _020E956C ; =_021E5590 - bl OS_LockMutex - ldr r0, _020E9570 ; =OSi_ThreadInfo - ldr r1, _020E9574 ; =_021E54A0 - ldr r2, [r0, #4] - ldr r0, _020E9578 ; =_021E54C4 - ldr r3, [r2, #0x6c] - mov r2, #1 - str r3, [r1, #0x1c] - str r2, [r0, #0x1c] -_020E94FC: - ldr r1, _020E957C ; =_021E58C4 - sub r2, r5, #1 - ldr r4, [r1, r2, lsl #2] - cmp r4, #1 - movne r0, #0 - strne r0, [r1, r2, lsl #2] - ldr r0, _020E9578 ; =_021E54C4 - ldr r1, [r0, #0x1c] - subs r1, r1, #1 - str r1, [r0, #0x1c] - bne _020E9530 - ldr r0, _020E956C ; =_021E5590 - bl OS_UnlockMutex -_020E9530: - cmp r4, #1 - beq _020E9544 - cmp r4, #0 - cmpeq r5, #1 - bne _020E954C -_020E9544: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020E954C: - cmp r4, #0 - bne _020E955C - mov r0, #0 - bl exit -_020E955C: - mov r0, r5 - blx r4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E956C: .word _021E5590 -_020E9570: .word OSi_ThreadInfo -_020E9574: .word _021E54A0 -_020E9578: .word _021E54C4 -_020E957C: .word _021E58C4 - arm_func_end raise - - arm_func_start strlen -strlen: ; 0x020E9580 - mvn r2, #0 -_020E9584: - ldrsb r1, [r0], #1 - add r2, r2, #1 - cmp r1, #0 - bne _020E9584 - mov r0, r2 - bx lr - arm_func_end strlen - - arm_func_start strcpy -strcpy: ; 0x020E959C - stmdb sp!, {r3, r4, r5, lr} - and r4, r1, #3 - and r3, r0, #3 - mov r2, r0 - cmp r3, r4 - bne _020E9638 - cmp r4, #0 - beq _020E95F4 - ldrb r3, [r1] - strb r3, [r0] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, pc} - rsbs r4, r4, #3 - beq _020E95EC -_020E95D4: - ldrb r3, [r1, #1]! - cmp r3, #0 - strb r3, [r2, #1]! - ldmeqia sp!, {r3, r4, r5, pc} - subs r4, r4, #1 - bne _020E95D4 -_020E95EC: - add r2, r2, #1 - add r1, r1, #1 -_020E95F4: - ldr r5, [r1] - ldr r3, _020E965C ; =0xFEFEFEFF - mvn r4, r5 - add lr, r5, r3 - ldr ip, _020E9660 ; =0x80808080 - and r4, lr, r4 - tst r4, ip - bne _020E9638 - sub r2, r2, #4 -_020E9618: - str r5, [r2, #4]! - ldr r5, [r1, #4]! - add r4, r5, r3 - mvn lr, r5 - and lr, r4, lr - tst lr, ip - beq _020E9618 - add r2, r2, #4 -_020E9638: - ldrb r3, [r1] - strb r3, [r2] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_020E9648: - ldrb r3, [r1, #1]! - cmp r3, #0 - strb r3, [r2, #1]! - bne _020E9648 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E965C: .word 0xFEFEFEFF -_020E9660: .word 0x80808080 - arm_func_end strcpy - - arm_func_start strncpy -strncpy: ; 0x020E9664 - stmdb sp!, {r3, lr} - mov lr, r0 - cmp r2, #0 - ldmeqia sp!, {r3, pc} -_020E9674: - ldrsb r3, [r1], #1 - mov ip, lr - strb r3, [lr], #1 - ldrsb r3, [ip] - cmp r3, #0 - bne _020E96A8 - subs r2, r2, #1 - ldmeqia sp!, {r3, pc} - mov r1, #0 -_020E9698: - strb r1, [lr], #1 - subs r2, r2, #1 - bne _020E9698 - ldmia sp!, {r3, pc} -_020E96A8: - subs r2, r2, #1 - bne _020E9674 - ldmia sp!, {r3, pc} - arm_func_end strncpy - - arm_func_start strcat -strcat: ; 0x020E96B4 - mov r3, r0 -_020E96B8: - ldrsb r2, [r3], #1 - cmp r2, #0 - bne _020E96B8 - sub r3, r3, #1 -_020E96C8: - ldrsb r2, [r1], #1 - mov ip, r3 - strb r2, [r3], #1 - ldrsb r2, [ip] - cmp r2, #0 - bne _020E96C8 - bx lr - arm_func_end strcat - - arm_func_start strncat -strncat: ; 0x020E96E4 - stmdb sp!, {r3, lr} - mov ip, r0 -_020E96EC: - ldrsb r3, [ip], #1 - cmp r3, #0 - bne _020E96EC - cmp r2, #0 - sub ip, ip, #1 - beq _020E9728 -_020E9704: - ldrsb r3, [r1], #1 - mov lr, ip - strb r3, [ip], #1 - ldrsb r3, [lr] - cmp r3, #0 - subeq ip, ip, #1 - beq _020E9728 - subs r2, r2, #1 - bne _020E9704 -_020E9728: - mov r1, #0 - strb r1, [ip] - ldmia sp!, {r3, pc} - arm_func_end strncat - - arm_func_start strcmp -strcmp: ; 0x020E9734 - stmdb sp!, {r4, lr} - ldrb r2, [r0] - ldrb r3, [r1] - subs r3, r2, r3 - movne r0, r3 - ldmneia sp!, {r4, pc} - and r4, r0, #3 - and r3, r1, #3 - cmp r3, r4 - bne _020E9810 - cmp r4, #0 - beq _020E97A8 - cmp r2, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - rsbs r4, r4, #3 - beq _020E97A0 -_020E9778: - ldrb r3, [r0, #1]! - ldrb r2, [r1, #1]! - subs r2, r3, r2 - movne r0, r2 - ldmneia sp!, {r4, pc} - cmp r3, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - subs r4, r4, #1 - bne _020E9778 -_020E97A0: - add r0, r0, #1 - add r1, r1, #1 -_020E97A8: - ldr r2, [r0] - ldr r3, _020E9840 ; =0xFEFEFEFF - mvn r4, r2 - add lr, r2, r3 - ldr ip, _020E9844 ; =0x80808080 - and r4, lr, r4 - tst r4, ip - ldr r4, [r1] - bne _020E97FC - cmp r2, r4 - bne _020E97F0 -_020E97D4: - ldr r2, [r0, #4]! - ldr r4, [r1, #4]! - add lr, r2, r3 - tst lr, ip - bne _020E97FC - cmp r2, r4 - beq _020E97D4 -_020E97F0: - sub r0, r0, #1 - sub r1, r1, #1 - b _020E9810 -_020E97FC: - ldrb r2, [r0] - ldrb r3, [r1] - subs r3, r2, r3 - movne r0, r3 - ldmneia sp!, {r4, pc} -_020E9810: - cmp r2, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_020E981C: - ldrb r3, [r0, #1]! - ldrb r2, [r1, #1]! - subs r2, r3, r2 - movne r0, r2 - ldmneia sp!, {r4, pc} - cmp r3, #0 - bne _020E981C - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020E9840: .word 0xFEFEFEFF -_020E9844: .word 0x80808080 - arm_func_end strcmp - - arm_func_start strncmp -strncmp: ; 0x020E9848 - cmp r2, #0 - beq _020E9874 -_020E9850: - ldrb ip, [r1], #1 - ldrb r3, [r0], #1 - cmp r3, ip - subne r0, r3, ip - bxne lr - cmp r3, #0 - beq _020E9874 - subs r2, r2, #1 - bne _020E9850 -_020E9874: - mov r0, #0 - bx lr - arm_func_end strncmp - - arm_func_start strchr -strchr: ; 0x020E987C - ldrsb r2, [r0], #1 - mov r1, r1, lsl #0x18 - mov r1, r1, asr #0x18 - cmp r2, #0 - beq _020E98A8 -_020E9890: - cmp r2, r1 - subeq r0, r0, #1 - bxeq lr - ldrsb r2, [r0], #1 - cmp r2, #0 - bne _020E9890 -_020E98A8: - cmp r1, #0 - movne r0, #0 - subeq r0, r0, #1 - bx lr - arm_func_end strchr - - arm_func_start strspn -strspn: ; 0x020E98B8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x20 - add ip, sp, #0 - mov r3, #8 - mov r2, #0 -_020E98CC: - strb r2, [ip] - strb r2, [ip, #1] - strb r2, [ip, #2] - strb r2, [ip, #3] - add ip, ip, #4 - subs r3, r3, #1 - bne _020E98CC - ldrb r3, [r1] - add r4, r1, #1 - cmp r3, #0 - beq _020E9928 - add lr, sp, #0 - mov r2, #1 -_020E9900: - and ip, r3, #0xff - and r1, r3, #7 - mov r1, r2, lsl r1 - ldrb r3, [lr, ip, asr #3] - and r1, r1, #0xff - orr r1, r3, r1 - strb r1, [lr, ip, asr #3] - ldrb r3, [r4], #1 - cmp r3, #0 - bne _020E9900 -_020E9928: - ldrb r1, [r0] - add r4, r0, #1 - cmp r1, #0 - beq _020E9968 - add ip, sp, #0 - mov r2, #1 -_020E9940: - and r3, r1, #0xff - and r1, r1, #7 - mov r1, r2, lsl r1 - ldrb r3, [ip, r3, asr #3] - and r1, r1, #0xff - tst r3, r1 - bne _020E9968 - ldrb r1, [r4], #1 - cmp r1, #0 - bne _020E9940 -_020E9968: - sub r0, r4, r0 - sub r0, r0, #1 - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - arm_func_end strspn - - arm_func_start strtok -strtok: ; 0x020E9978 - stmdb sp!, {r4, lr} - sub sp, sp, #0x20 - add ip, sp, #0 - mov r3, #8 - mov r2, #0 -_020E998C: - strb r2, [ip] - strb r2, [ip, #1] - strb r2, [ip, #2] - strb r2, [ip, #3] - add ip, ip, #4 - subs r3, r3, #1 - bne _020E998C - cmp r0, #0 - ldrne r2, _020E9ACC ; =_0211135C - add lr, r1, #1 - strne r0, [r2, #4] - ldrb r0, [r1] - cmp r0, #0 - beq _020E99F4 - add ip, sp, #0 - mov r1, #1 -_020E99CC: - and r3, r0, #0xff - and r0, r0, #7 - mov r0, r1, lsl r0 - ldrb r2, [ip, r3, asr #3] - and r0, r0, #0xff - orr r0, r2, r0 - strb r0, [ip, r3, asr #3] - ldrb r0, [lr], #1 - cmp r0, #0 - bne _020E99CC -_020E99F4: - ldr r0, _020E9ACC ; =_0211135C - ldr r0, [r0, #4] - ldrb r4, [r0] - add r1, r0, #1 - cmp r4, #0 - beq _020E9A38 - add ip, sp, #0 - mov r2, #1 -_020E9A14: - and r3, r4, #0xff - and r0, r4, #7 - mov r0, r2, lsl r0 - ldrb r3, [ip, r3, asr #3] - and r0, r0, #0xff - tst r3, r0 - ldrneb r4, [r1], #1 - cmpne r4, #0 - bne _020E9A14 -_020E9A38: - cmp r4, #0 - bne _020E9A58 - ldr r1, _020E9ACC ; =_0211135C - add sp, sp, #0x20 - ldr r2, [r1] - mov r0, #0 - str r2, [r1, #4] - ldmia sp!, {r4, pc} -_020E9A58: - sub r0, r1, #1 - ldrb r4, [r1], #1 - cmp r4, #0 - beq _020E9A98 - add lr, sp, #0 - mov r3, #1 -_020E9A70: - and ip, r4, #0xff - and r2, r4, #7 - mov r2, r3, lsl r2 - ldrb ip, [lr, ip, asr #3] - and r2, r2, #0xff - tst ip, r2 - bne _020E9A98 - ldrb r4, [r1], #1 - cmp r4, #0 - bne _020E9A70 -_020E9A98: - cmp r4, #0 - bne _020E9AB4 - ldr r1, _020E9ACC ; =_0211135C - add sp, sp, #0x20 - ldr r2, [r1] - str r2, [r1, #4] - ldmia sp!, {r4, pc} -_020E9AB4: - ldr r2, _020E9ACC ; =_0211135C - mov r3, #0 - str r1, [r2, #4] - strb r3, [r1, #-1] - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - .align 2, 0 -_020E9ACC: .word _0211135C - arm_func_end strtok - - arm_func_start strstr -strstr: ; 0x020E9AD0 - stmdb sp!, {r4, lr} - cmp r1, #0 - ldrneb r2, [r1] - cmpne r2, #0 - ldmeqia sp!, {r4, pc} - ldrb r3, [r0] - add r4, r0, #1 - cmp r3, #0 - beq _020E9B34 -_020E9AF4: - cmp r3, r2 - bne _020E9B28 - mov lr, r4 - add ip, r1, #1 -_020E9B04: - ldrb r3, [ip], #1 - ldrb r0, [lr], #1 - cmp r0, r3 - bne _020E9B1C - cmp r0, #0 - bne _020E9B04 -_020E9B1C: - cmp r3, #0 - subeq r0, r4, #1 - ldmeqia sp!, {r4, pc} -_020E9B28: - ldrb r3, [r4], #1 - cmp r3, #0 - bne _020E9AF4 -_020E9B34: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end strstr - - arm_func_start __strtold -__strtold: ; 0x020E9B3C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xa8 - ldr r4, [sp, #0xd0] - mov sl, #0 - str r4, [sp, #0xd0] - str r0, [sp] - add r6, sp, #0x80 - mov sb, r1 - mov r8, r2 - str r3, [sp, #4] - mov r4, sl - str sl, [sp, #0x2c] - mov r5, #1 - mov r0, #4 -_020E9B74: - strh sl, [r6] - strh sl, [r6, #2] - strh sl, [r6, #4] - strh sl, [r6, #6] - add r6, r6, #8 - subs r0, r0, #1 - bne _020E9B74 - mov r0, #0 - str r0, [sp, #0x28] - strh sl, [r6] - strh sl, [r6, #2] - ldr r2, [sp, #0x28] - ldr r1, [sp, #0xd0] - strh sl, [r6, #4] - str r2, [r1] - mov r1, r2 - mov r0, r8 - str r1, [sp, #0x24] - str r1, [sp, #0x20] - str r1, [sp, #0x1c] - str r1, [sp, #0x18] - str r1, [sp, #0x10] - str r1, [sp, #0xc] - str r1, [sp, #8] - add r4, r4, #1 - blx sb - mov r1, r0 - ldr r7, _020EAB1C ; =_0210E631 - add r0, sp, #0x4d - mov r6, #4 -_020E9BEC: - ldrb r3, [r7] - ldrb r2, [r7, #1] - add r7, r7, #2 - strb r3, [r0] - strb r2, [r0, #1] - add r0, r0, #2 - subs r6, r6, #1 - bne _020E9BEC - ldrb r3, [r7] - ldr r2, _020EAB20 ; =_0210E62C - strb r3, [r0] - ldrb r3, [r2, #1] - ldrb r0, [r2, #2] - ldrb r6, [r2] - strb r3, [sp, #0x31] - strb r0, [sp, #0x32] - ldrb r3, [r2, #3] - ldrb r0, [r2, #4] - strb r6, [sp, #0x30] - strb r3, [sp, #0x33] - strb r0, [sp, #0x34] - b _020EA930 -_020E9C44: - cmp r5, #0x100 - bgt _020E9CBC - bge _020EA3C4 - cmp r5, #0x20 - bgt _020E9CA0 - bge _020EA298 - cmp r5, #8 - bgt _020E9C94 - cmp r5, #0 - addge pc, pc, r5, lsl #2 - b _020EA930 -_020E9C70: ; jump table - b _020EA930 ; case 0 - b _020E9D00 ; case 1 - b _020EA0E4 ; case 2 - b _020EA930 ; case 3 - b _020EA194 ; case 4 - b _020EA930 ; case 5 - b _020EA930 ; case 6 - b _020EA930 ; case 7 - b _020EA1BC ; case 8 -_020E9C94: - cmp r5, #0x10 - beq _020EA260 - b _020EA930 -_020E9CA0: - cmp r5, #0x40 - bgt _020E9CB0 - beq _020EA324 - b _020EA930 -_020E9CB0: - cmp r5, #0x80 - beq _020EA370 - b _020EA930 -_020E9CBC: - cmp r5, #0x2000 - bgt _020E9CE4 - bge _020E9F18 - cmp r5, #0x200 - bgt _020E9CD8 - beq _020EA424 - b _020EA930 -_020E9CD8: - cmp r5, #0x400 - beq _020EA44C - b _020EA930 -_020E9CE4: - cmp r5, #0x4000 - bgt _020E9CF4 - beq _020E9E20 - b _020EA930 -_020E9CF4: - cmp r5, #0x8000 - beq _020EA4C4 - b _020EA930 -_020E9D00: - cmp r1, #0 - blt _020E9D10 - cmp r1, #0x80 - blt _020E9D18 -_020E9D10: - mov r0, #0 - b _020E9D28 -_020E9D18: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #0x100 -_020E9D28: - cmp r0, #0 - beq _020E9D54 - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - mov r1, r0 - ldr r0, [sp, #0x2c] - add r0, r0, #1 - str r0, [sp, #0x2c] - b _020EA930 -_020E9D54: - cmp r1, #0 - blt _020E9D64 - cmp r1, #0x80 - blt _020E9D6C -_020E9D64: - mov r0, r1 - b _020E9D74 -_020E9D6C: - ldr r0, _020EAB28 ; =_0210E484 - ldrb r0, [r0, r1] -_020E9D74: - cmp r0, #0x49 - bgt _020E9DA0 - bge _020E9DD8 - cmp r0, #0x2d - bgt _020E9E18 - cmp r0, #0x2b - blt _020E9E18 - beq _020E9DB4 - cmp r0, #0x2d - beq _020E9DAC - b _020E9E18 -_020E9DA0: - cmp r0, #0x4e - beq _020E9DF8 - b _020E9E18 -_020E9DAC: - mov r0, #1 - str r0, [sp, #0x28] -_020E9DB4: - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - mov r0, #1 - str r0, [sp, #0x18] - b _020EA930 -_020E9DD8: - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - mov r5, #0x4000 - b _020EA930 -_020E9DF8: - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - mov r5, #0x2000 - b _020EA930 -_020E9E18: - mov r5, #2 - b _020EA930 -_020E9E20: - mov r5, #1 - add r7, sp, #0x4d - add r0, sp, #0x76 - mov r6, #4 -_020E9E30: - ldrb r3, [r7] - ldrb r2, [r7, #1] - add r7, r7, #2 - strb r3, [r0] - strb r2, [r0, #1] - add r0, r0, #2 - subs r6, r6, #1 - bne _020E9E30 - ldrb r2, [r7] - add r6, sp, #0x77 - ldr r7, _020EAB28 ; =_0210E484 - strb r2, [r0] - b _020E9E84 -_020E9E64: - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r6, r6, #1 - add r5, r5, #1 - add r4, r4, #1 - blx sb - mov r1, r0 -_020E9E84: - cmp r5, #8 - bge _020E9EB4 - cmp r1, #0 - blt _020E9E9C - cmp r1, #0x80 - blt _020E9EA4 -_020E9E9C: - mov r2, r1 - b _020E9EA8 -_020E9EA4: - ldrb r2, [r7, r1] -_020E9EA8: - ldrsb r0, [r6] - cmp r0, r2 - beq _020E9E64 -_020E9EB4: - cmp r5, #3 - cmpne r5, #8 - bne _020E9F10 - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _020E9EE4 - ldr r1, _020EAB2C ; =_021110E8 - mov r0, #0 - ldr r1, [r1] - bl _fsub - bl _f2d - b _020E9EF0 -_020E9EE4: - ldr r0, _020EAB2C ; =_021110E8 - ldr r0, [r0] - bl _f2d -_020E9EF0: - ldr r2, [sp, #0x2c] - add r3, r2, r5 - ldr r2, [sp, #0x18] - add r3, r2, r3 - ldr r2, [sp, #4] - add sp, sp, #0xa8 - str r3, [r2] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E9F10: - mov r5, #0x1000 - b _020EA930 -_020E9F18: - ldrb r3, [sp, #0x30] - ldrb r0, [sp, #0x32] - ldrb r2, [sp, #0x31] - strb r3, [sp, #0x40] - strb r0, [sp, #0x42] - ldrb r3, [sp, #0x33] - ldrb r0, [sp, #0x34] - strb r2, [sp, #0x41] - mov r5, #1 - strb r0, [sp, #0x44] - mov r6, #0 - add r2, sp, #0x56 - strb r3, [sp, #0x43] - mov r0, #8 -_020E9F50: - strb r6, [r2] - strb r6, [r2, #1] - strb r6, [r2, #2] - strb r6, [r2, #3] - add r2, r2, #4 - subs r0, r0, #1 - bne _020E9F50 - add r7, sp, #0x41 - b _020E9F94 -_020E9F74: - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r7, r7, #1 - add r5, r5, #1 - add r4, r4, #1 - blx sb - mov r1, r0 -_020E9F94: - cmp r5, #4 - bge _020E9FC8 - cmp r1, #0 - blt _020E9FAC - cmp r1, #0x80 - blt _020E9FB4 -_020E9FAC: - mov r2, r1 - b _020E9FBC -_020E9FB4: - ldr r0, _020EAB28 ; =_0210E484 - ldrb r2, [r0, r1] -_020E9FBC: - ldrsb r0, [r7] - cmp r0, r2 - beq _020E9F74 -_020E9FC8: - sub r0, r5, #3 - cmp r0, #1 - bhi _020EA0DC - cmp r5, #4 - bne _020EA080 - ldr r7, _020EAB24 ; =_0210E504 - b _020EA008 -_020E9FE4: - add r0, sp, #0x56 - strb r1, [r0, r6] - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r6, r6, #1 - add r4, r4, #1 - blx sb - mov r1, r0 -_020EA008: - cmp r6, #0x20 - bge _020EA070 - cmp r1, #0 - blt _020EA020 - cmp r1, #0x80 - blt _020EA028 -_020EA020: - mov r0, #0 - b _020EA034 -_020EA028: - mov r0, r1, lsl #1 - ldrh r0, [r7, r0] - and r0, r0, #8 -_020EA034: - cmp r0, #0 - bne _020E9FE4 - cmp r1, #0 - blt _020EA04C - cmp r1, #0x80 - blt _020EA054 -_020EA04C: - mov r0, #0 - b _020EA060 -_020EA054: - mov r0, r1, lsl #1 - ldrh r0, [r7, r0] - and r0, r0, #1 -_020EA060: - cmp r0, #0 - bne _020E9FE4 - cmp r1, #0x2e - beq _020E9FE4 -_020EA070: - cmp r1, #0x29 - movne r5, #0x1000 - bne _020EA930 - add r6, r6, #1 -_020EA080: - add r0, sp, #0x56 - mov r1, #0 - strb r1, [r0, r6] - ldr r1, [sp, #0x28] - cmp r1, #0 - beq _020EA0B4 - bl nan - mov r2, r0 - mov r0, #0 - mov r3, r1 - mov r1, r0 - bl _dsub - b _020EA0B8 -_020EA0B4: - bl nan -_020EA0B8: - ldr r2, [sp, #0x2c] - add r2, r2, r5 - add r3, r6, r2 - ldr r2, [sp, #0x18] - add r3, r2, r3 - ldr r2, [sp, #4] - add sp, sp, #0xa8 - str r3, [r2] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EA0DC: - mov r5, #0x1000 - b _020EA930 -_020EA0E4: - cmp r1, #0x2e - bne _020EA10C - mov r5, #0x10 - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA930 -_020EA10C: - cmp r1, #0 - blt _020EA11C - cmp r1, #0x80 - blt _020EA124 -_020EA11C: - mov r0, #0 - b _020EA134 -_020EA124: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA134: - cmp r0, #0 - moveq r5, #0x1000 - beq _020EA930 - cmp r1, #0x30 - bne _020EA18C - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - cmp r0, #0 - mov r1, r0 - blt _020EA178 - cmp r0, #0x80 - bge _020EA178 - ldr r2, _020EAB28 ; =_0210E484 - ldrb r0, [r2, r0] -_020EA178: - cmp r0, #0x58 - moveq r5, #0x8000 - moveq sl, #1 - movne r5, #4 - b _020EA930 -_020EA18C: - mov r5, #8 - b _020EA930 -_020EA194: - cmp r1, #0x30 - movne r5, #8 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA1BC: - cmp r1, #0 - blt _020EA1CC - cmp r1, #0x80 - blt _020EA1D4 -_020EA1CC: - mov r0, #0 - b _020EA1E4 -_020EA1D4: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA1E4: - cmp r0, #0 - bne _020EA218 - cmp r1, #0x2e - movne r5, #0x40 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - mov r5, #0x20 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA218: - ldrb r2, [sp, #0x84] - cmp r2, #0x14 - ldrhs r0, [sp, #0x1c] - addhs r0, r0, #1 - strhs r0, [sp, #0x1c] - bhs _020EA244 - add r0, r2, #1 - strb r0, [sp, #0x84] - add r0, sp, #0x80 - add r0, r0, r2 - strb r1, [r0, #5] -_020EA244: - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA930 -_020EA260: - cmp r1, #0 - blt _020EA270 - cmp r1, #0x80 - blt _020EA278 -_020EA270: - mov r0, #0 - b _020EA288 -_020EA278: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA288: - cmp r0, #0 - moveq r5, #0x1000 - movne r5, #0x20 - b _020EA930 -_020EA298: - cmp r1, #0 - blt _020EA2A8 - cmp r1, #0x80 - blt _020EA2B0 -_020EA2A8: - mov r0, #0 - b _020EA2C0 -_020EA2B0: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA2C0: - cmp r0, #0 - moveq r5, #0x40 - beq _020EA930 - ldrb r3, [sp, #0x84] - cmp r3, #0x14 - bhs _020EA308 - cmp r1, #0x30 - cmpeq r3, #0 - beq _020EA2FC - ldrb r2, [sp, #0x84] - add r0, sp, #0x80 - add r0, r0, r3 - add r2, r2, #1 - strb r2, [sp, #0x84] - strb r1, [r0, #5] -_020EA2FC: - ldr r0, [sp, #0x1c] - sub r0, r0, #1 - str r0, [sp, #0x1c] -_020EA308: - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA930 -_020EA324: - cmp r1, #0 - blt _020EA334 - cmp r1, #0x80 - blt _020EA33C -_020EA334: - mov r0, r1 - b _020EA344 -_020EA33C: - ldr r0, _020EAB28 ; =_0210E484 - ldrb r0, [r0, r1] -_020EA344: - cmp r0, #0x45 - movne r5, #0x800 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - mov r5, #0x80 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA370: - cmp r1, #0x2b - bne _020EA394 - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA3BC -_020EA394: - cmp r1, #0x2d - bne _020EA3BC - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - mov r0, #1 - str r0, [sp, #0x24] -_020EA3BC: - mov r5, #0x100 - b _020EA930 -_020EA3C4: - cmp r1, #0 - blt _020EA3D4 - cmp r1, #0x80 - blt _020EA3DC -_020EA3D4: - mov r0, #0 - b _020EA3EC -_020EA3DC: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA3EC: - cmp r0, #0 - moveq r5, #0x1000 - beq _020EA930 - cmp r1, #0x30 - movne r5, #0x400 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - mov r5, #0x200 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA424: - cmp r1, #0x30 - movne r5, #0x400 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA44C: - cmp r1, #0 - blt _020EA45C - cmp r1, #0x80 - blt _020EA464 -_020EA45C: - mov r0, #0 - b _020EA474 -_020EA464: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA474: - cmp r0, #0 - moveq r5, #0x800 - beq _020EA930 - ldr r0, [sp, #0x20] - sub r2, r1, #0x30 - mov r1, #0xa - mla r0, r1, r0, r2 - ldr r1, _020EAB30 ; =0x00007FFF - str r0, [sp, #0x20] - cmp r0, r1 - ldrgt r0, [sp, #0xd0] - movgt r1, #1 - strgt r1, [r0] - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA4C4: - cmp sl, #0x20 - bgt _020EA514 - bge _020EA7E8 - cmp sl, #8 - bgt _020EA508 - cmp sl, #0 - addge pc, pc, sl, lsl #2 - b _020EA930 -_020EA4E4: ; jump table - b _020EA930 ; case 0 - b _020EA538 ; case 1 - b _020EA588 ; case 2 - b _020EA930 ; case 3 - b _020EA5B0 ; case 4 - b _020EA930 ; case 5 - b _020EA930 ; case 6 - b _020EA930 ; case 7 - b _020EA6C0 ; case 8 -_020EA508: - cmp sl, #0x10 - beq _020EA79C - b _020EA930 -_020EA514: - cmp sl, #0x80 - bgt _020EA52C - bge _020EA890 - cmp sl, #0x40 - beq _020EA830 - b _020EA930 -_020EA52C: - cmp sl, #0x100 - beq _020EA8B8 - b _020EA930 -_020EA538: - mov r1, #0 - add r0, sp, #0x45 - str r0, [sp, #0x14] - strb r1, [r0] - strb r1, [r0, #1] - strb r1, [r0, #2] - strb r1, [r0, #3] - strb r1, [r0, #4] - strb r1, [r0, #5] - strb r1, [r0, #6] - strb r1, [r0, #7] - mov r0, r8 - mov r2, r1 - str r1, [sp, #8] - mov fp, r1 - mov sl, #2 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA588: - cmp r1, #0x30 - movne sl, #4 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA5B0: - cmp r1, #0 - blt _020EA5C0 - cmp r1, #0x80 - blt _020EA5C8 -_020EA5C0: - mov r0, #0 - b _020EA5D8 -_020EA5C8: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #0x400 -_020EA5D8: - cmp r0, #0 - bne _020EA60C - cmp r1, #0x2e - movne sl, #0x10 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - mov sl, #8 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA60C: - ldr r2, [sp, #8] - mov r0, #0xe - cmp r2, r0 - bhs _020EA6A4 - mov r0, r2 - add r0, r0, #1 - str r0, [sp, #8] - ldr r0, [sp, #0x14] - add r2, fp, fp, lsr #31 - cmp r1, #0 - ldrb r0, [r0, r2, asr #1] - blt _020EA64C - cmp r1, #0x80 - bge _020EA64C - ldr r2, _020EAB28 ; =_0210E484 - ldrb r1, [r2, r1] -_020EA64C: - cmp r1, #0x41 - subge r1, r1, #0x37 - sublt r1, r1, #0x30 - mov r2, fp, lsr #0x1f - and r3, r1, #0xff - rsb r1, r2, fp, lsl #31 - adds r1, r2, r1, ror #31 - moveq r1, r3, lsl #4 - add r2, fp, fp, lsr #31 - orrne r0, r0, r3 - andeq r1, r1, #0xff - orreq r0, r0, r1 - ldr r1, [sp, #0x14] - add fp, fp, #1 - strb r0, [r1, r2, asr #1] - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA6A4: - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA930 -_020EA6C0: - cmp r1, #0 - blt _020EA6D0 - cmp r1, #0x80 - blt _020EA6D8 -_020EA6D0: - mov r0, #0 - b _020EA6E8 -_020EA6D8: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #0x400 -_020EA6E8: - cmp r0, #0 - moveq sl, #0x10 - beq _020EA930 - ldr r2, [sp, #8] - mov r0, #0xe - cmp r2, r0 - bhs _020EA780 - ldr r0, [sp, #0x14] - add r2, fp, fp, lsr #31 - cmp r1, #0 - ldrb r0, [r0, r2, asr #1] - blt _020EA728 - cmp r1, #0x80 - bge _020EA728 - ldr r2, _020EAB28 ; =_0210E484 - ldrb r1, [r2, r1] -_020EA728: - cmp r1, #0x41 - subge r1, r1, #0x37 - sublt r1, r1, #0x30 - mov r2, fp, lsr #0x1f - and r3, r1, #0xff - rsb r1, r2, fp, lsl #31 - adds r1, r2, r1, ror #31 - moveq r1, r3, lsl #4 - add r2, fp, fp, lsr #31 - orrne r0, r0, r3 - andeq r1, r1, #0xff - orreq r0, r0, r1 - ldr r1, [sp, #0x14] - add fp, fp, #1 - strb r0, [r1, r2, asr #1] - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA780: - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA930 -_020EA79C: - cmp r1, #0 - blt _020EA7AC - cmp r1, #0x80 - blt _020EA7B4 -_020EA7AC: - mov r0, r1 - b _020EA7BC -_020EA7B4: - ldr r0, _020EAB28 ; =_0210E484 - ldrb r0, [r0, r1] -_020EA7BC: - cmp r0, #0x50 - movne r5, #0x800 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - mov sl, #0x20 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA7E8: - cmp r1, #0x2d - moveq r0, #1 - streq r0, [sp, #0xc] - beq _020EA810 - cmp r1, #0x2b - beq _020EA810 - mov r0, r8 - mov r2, #1 - blx sb - sub r4, r4, #1 -_020EA810: - mov sl, #0x40 - add r4, r4, #1 - mov r0, r8 - mov r1, #0 - mov r2, r1 - blx sb - mov r1, r0 - b _020EA930 -_020EA830: - cmp r1, #0 - blt _020EA840 - cmp r1, #0x80 - blt _020EA848 -_020EA840: - mov r0, #0 - b _020EA858 -_020EA848: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA858: - cmp r0, #0 - moveq r5, #0x1000 - beq _020EA930 - cmp r1, #0x30 - movne sl, #0x100 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - mov sl, #0x80 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA890: - cmp r1, #0x30 - movne sl, #0x100 - bne _020EA930 - mov r1, #0 - mov r0, r8 - mov r2, r1 - add r4, r4, #1 - blx sb - mov r1, r0 - b _020EA930 -_020EA8B8: - cmp r1, #0 - blt _020EA8C8 - cmp r1, #0x80 - blt _020EA8D0 -_020EA8C8: - mov r0, #0 - b _020EA8E0 -_020EA8D0: - mov r2, r1, lsl #1 - ldr r0, _020EAB24 ; =_0210E504 - ldrh r0, [r0, r2] - and r0, r0, #8 -_020EA8E0: - cmp r0, #0 - moveq r5, #0x800 - beq _020EA930 - ldr r0, [sp, #0x10] - sub r2, r1, #0x30 - mov r1, #0xa - mla r0, r1, r0, r2 - str r0, [sp, #0x10] - ldr r1, _020EAB30 ; =0x00007FFF - ldr r0, [sp, #0x20] - add r4, r4, #1 - cmp r0, r1 - ldrgt r0, [sp, #0xd0] - movgt r1, #1 - strgt r1, [r0] - mov r1, #0 - mov r0, r8 - mov r2, r1 - blx sb - mov r1, r0 -_020EA930: - ldr r0, [sp] - cmp r4, r0 - bgt _020EA950 - mvn r0, #0 - cmp r1, r0 - beq _020EA950 - tst r5, #0x1800 - beq _020E9C44 -_020EA950: - cmp r5, #0x8000 - beq _020EA96C - ldr r0, _020EAB34 ; =0x00000E2C - tst r5, r0 - moveq r0, #1 - movne r0, #0 - b _020EA990 -_020EA96C: - sub r0, r4, #1 - cmp r0, #2 - ble _020EA984 - ldr r0, _020EAB38 ; =0x0000018E - tst sl, r0 - bne _020EA98C -_020EA984: - mov r0, #1 - b _020EA990 -_020EA98C: - mov r0, #0 -_020EA990: - cmp r0, #0 - movne r2, #0 - ldrne r0, [sp, #4] - bne _020EA9B0 - ldr r0, [sp, #0x2c] - sub r2, r4, #1 - add r2, r2, r0 - ldr r0, [sp, #4] -_020EA9B0: - str r2, [r0] - mov r0, r8 - mov r2, #1 - blx sb - cmp sl, #0 - bne _020EABB4 - ldr r0, [sp, #0x24] - ldrb r2, [sp, #0x84] - cmp r0, #0 - ldrne r0, [sp, #0x20] - rsbne r0, r0, #0 - strne r0, [sp, #0x20] - add r0, sp, #0x85 - add r1, r0, r2 - b _020EA9F8 -_020EA9EC: - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] -_020EA9F8: - cmp r2, #0 - sub r2, r2, #1 - beq _020EAA10 - ldrb r0, [r1, #-1]! - cmp r0, #0x30 - beq _020EA9EC -_020EAA10: - add r0, r2, #1 - strb r0, [sp, #0x84] - ands r2, r0, #0xff - bne _020EAA34 - add r1, r2, #1 - strb r1, [sp, #0x84] - add r0, sp, #0x85 - mov r1, #0x30 - strb r1, [r0, r2] -_020EAA34: - ldr r1, [sp, #0x20] - ldr r0, [sp, #0x1c] - mov r2, #0x8000 - add r0, r1, r0 - rsb r2, r2, #0 - str r0, [sp, #0x20] - cmp r0, r2 - blt _020EAA5C - cmp r0, r2, lsr #17 - ble _020EAA68 -_020EAA5C: - ldr r0, [sp, #0xd0] - mov r1, #1 - str r1, [r0] -_020EAA68: - ldr r0, [sp, #0xd0] - ldr r0, [r0] - cmp r0, #0 - beq _020EAAC4 - ldr r0, [sp, #0x24] - cmp r0, #0 - movne r0, #0 - addne sp, sp, #0xa8 - movne r1, r0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x28] - cmp r0, #0 - ldreq r1, _020EAB3C ; =_021110F0 - addeq sp, sp, #0xa8 - ldmeqia r1, {r0, r1} - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _020EAB3C ; =_021110F0 - mov r0, #0 - ldmia r1, {r2, r3} - mov r1, r0 - bl _dsub - add sp, sp, #0xa8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EAAC4: - ldr r1, [sp, #0x20] - add r0, sp, #0x80 - strh r1, [sp, #0x82] - bl __dec2num - mov r4, r0 - mov r6, r1 - mov r0, #0 - mov r1, r0 - mov r2, r4 - mov r3, r6 - bl _dneq - beq _020EAB44 - mov r0, r4 - mov r1, r6 - mov r2, #0 - mov r3, #0x100000 - bl _dls - bhs _020EAB44 - ldr r0, [sp, #0xd0] - mov r1, #1 - str r1, [r0] - b _020EAB70 - .align 2, 0 -_020EAB1C: .word _0210E631 -_020EAB20: .word _0210E62C -_020EAB24: .word _0210E504 -_020EAB28: .word _0210E484 -_020EAB2C: .word _021110E8 -_020EAB30: .word 0x00007FFF -_020EAB34: .word 0x00000E2C -_020EAB38: .word 0x0000018E -_020EAB3C: .word _021110F0 -_020EAB40: .word 0x7FEFFFFF -_020EAB44: - ldr r3, _020EAB40 ; =0x7FEFFFFF - mov r0, r4 - mov r1, r6 - mvn r2, #0 - bl _dgr - bls _020EAB70 - ldr r0, [sp, #0xd0] - mov r2, #1 - ldr r1, _020EAB3C ; =_021110F0 - str r2, [r0] - ldmia r1, {r4, r6} -_020EAB70: - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _020EABA4 - ldr r0, _020EAB34 ; =0x00000E2C - tst r5, r0 - beq _020EABA4 - mov r0, #0 - mov r1, r0 - mov r2, r4 - mov r3, r6 - bl _dsub - mov r4, r0 - mov r6, r1 -_020EABA4: - add sp, sp, #0xa8 - mov r0, r4 - mov r1, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EABB4: - ldr r0, [sp, #0xc] - add r4, sp, #0x38 - cmp r0, #0 - ldrne r0, [sp, #0x10] - ldrb r3, [sp, #0x45] - rsbne r0, r0, #0 - strne r0, [sp, #0x10] - ldr r1, [sp, #0x10] - ldr r0, [sp, #8] - mov r2, #0 - add r0, r1, r0, lsl #2 - str r0, [sp, #0x10] - mov r1, #0x80 - b _020EABFC -_020EABEC: - ldr r0, [sp, #0x10] - add r2, r2, #1 - sub r0, r0, #1 - str r0, [sp, #0x10] -_020EABFC: - cmp r2, #4 - bhs _020EAC0C - tst r3, r1, asr r2 - beq _020EABEC -_020EAC0C: - adds r5, r2, #1 - beq _020EAC58 - add r0, sp, #0x4c - add r3, sp, #0x45 - str r0, [sp, #0x14] - mov r1, #0 - cmp r0, r3 - blo _020EAC58 - rsb r6, r5, #8 -_020EAC30: - ldr r0, [sp, #0x14] - ldrb r0, [r0] - orr r2, r1, r0, lsl r5 - mov r1, r0, asr r6 - ldr r0, [sp, #0x14] - and r1, r1, #0xff - strb r2, [r0], #-1 - str r0, [sp, #0x14] - cmp r0, r3 - bhs _020EAC30 -_020EAC58: - mov r2, #0 - mov r6, r2 - strb r2, [r4] - strb r2, [r4, #1] - strb r2, [r4, #2] - strb r2, [r4, #3] - strb r2, [r4, #4] - strb r2, [r4, #5] - strb r2, [r4, #6] - strb r2, [r4, #7] - mov r3, #0xc - mov r7, #1 - mov r0, #0xff - add r1, sp, #0x45 -_020EAC90: - add r5, r2, #8 - cmp r5, #0x34 - ldrb r5, [r1, r6] - rsbhi r8, r2, #0x34 - and fp, r3, #7 - andhi r5, r5, r0, lsl r8 - andhi r5, r5, #0xff - mov r8, r5, asr fp - and sb, r8, #0xff - ldrb sl, [r4, r7] - rsb r8, fp, #8 - mov r5, r5, lsl r8 - orr sb, sl, sb - strb sb, [r4, r7] - add r7, r7, #1 - add r2, r2, #8 - ldrb r8, [r4, r7] - and r5, r5, #0xff - cmp r2, #0x34 - orr r5, r8, r5 - strb r5, [r4, r7] - add r3, r3, #8 - add r6, r6, #1 - blo _020EAC90 - ldr r0, [sp, #0x10] - mov r1, #0x800 - add r0, r0, #0xfe - add r2, r0, #0x300 - rsb r1, r1, #0 - tst r2, r1 - beq _020EAD28 - ldr r2, [sp, #0xd0] - mov r3, #1 - mov r0, #0 - add sp, sp, #0xa8 - mov r1, r0 - str r3, [r2] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EAD28: - ldrb r0, [r4, #1] - mov r2, r2, lsl #0x15 - ldrb r1, [r4] - orr r0, r0, r2, lsr #17 - strb r0, [r4, #1] - ldr r0, [sp, #0x28] - orr r1, r1, r2, lsr #25 - cmp r0, #0 - andne r0, r1, #0xff - strb r1, [r4] - orrne r0, r0, #0x80 - strneb r0, [r4] - mov r3, #0 -_020EAD5C: - rsb r1, r3, #7 - ldrb r2, [r4, r3] - ldrb r0, [r4, r1] - strb r0, [r4, r3] - add r3, r3, #1 - strb r2, [r4, r1] - cmp r3, #4 - blt _020EAD5C - ldmia r4, {r0, r1} - add sp, sp, #0xa8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end __strtold - - arm_func_start strtold -strtold: ; 0x020EAD88 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - mov r0, #0 - mov r6, r1 - str r0, [sp, #8] - add r4, sp, #0xc - str r7, [sp, #4] - ldr r1, _020EAE5C ; =__StringRead - add r2, sp, #4 - add r3, sp, #0x10 - sub r0, r0, #0x80000001 - str r4, [sp] - bl __strtold - mov r5, r1 - mov r4, r0 - cmp r6, #0 - ldrne r0, [sp, #0x10] - mov r1, r5 - addne r0, r7, r0 - strne r0, [r6] - mov r0, r4 - bl fabs - ldr r2, [sp, #0xc] - mov r6, r0 - mov r7, r1 - cmp r2, #0 - bne _020EAE40 - mov r0, #0 - mov r1, r0 - mov r2, r4 - mov r3, r5 - bl _dneq - beq _020EAE4C - mov r0, r6 - mov r1, r7 - mov r2, #0 - mov r3, #0x100000 - bl _dls - blo _020EAE40 - ldr r3, _020EAE60 ; =0x7FEFFFFF - mov r0, r6 - mov r1, r7 - mvn r2, #0 - bl _dgr - bls _020EAE4C -_020EAE40: - ldr r0, _020EAE64 ; =_021E58C0 - mov r1, #0x22 - str r1, [r0] -_020EAE4C: - mov r0, r4 - mov r1, r5 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_020EAE5C: .word __StringRead -_020EAE60: .word 0x7FEFFFFF -_020EAE64: .word _021E58C0 - arm_func_end strtold - - arm_func_start atof -atof: ; 0x020EAE68 - ldr ip, _020EAE74 ; =strtold - mov r1, #0 - bx ip - .align 2, 0 -_020EAE74: .word strtold - arm_func_end atof - - arm_func_start __strtoul -__strtoul: ; 0x020EAE78 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, [sp, #0x38] - movs sb, r0 - ldr r0, [sp, #0x34] - str r4, [sp, #0x38] - mov r4, #0 - str r0, [sp, #0x34] - ldr r0, [sp, #0x38] - str r1, [sp] - str r4, [r0] - mov r0, r4 - str r0, [sp, #4] - ldr r0, [sp, #0x34] - mov r1, r4 - str r1, [r0] - ldr r0, [sp, #0x30] - str r4, [sp, #8] - mov r8, r2 - mov r7, r3 - mov r5, r4 - mov sl, r4 - str r0, [sp, #0x30] - mov r4, #1 - bmi _020EAEF8 - cmp sb, #1 - beq _020EAEF8 - cmp sb, #0x24 - bgt _020EAEF8 - ldr r0, [sp] - cmp r0, #1 - bge _020EAF00 -_020EAEF8: - mov r4, #0x40 - b _020EAF1C -_020EAF00: - ldr r1, [sp, #8] - mov r0, r7 - mov r3, r1 - mov r2, r1 - add r5, r3, #1 - blx r8 - mov r6, r0 -_020EAF1C: - cmp sb, #0 - beq _020EAF34 - mov r1, sb - mvn r0, #0 - bl _u32_div_f - str r0, [sp, #4] -_020EAF34: - mvn fp, #0 - b _020EB1F4 -_020EAF3C: - cmp r4, #8 - bgt _020EAF74 - cmp r4, #0 - addge pc, pc, r4, lsl #2 - b _020EB1F4 -_020EAF50: ; jump table - b _020EB1F4 ; case 0 - b _020EAF80 ; case 1 - b _020EB02C ; case 2 - b _020EB1F4 ; case 3 - b _020EB068 ; case 4 - b _020EB1F4 ; case 5 - b _020EB1F4 ; case 6 - b _020EB1F4 ; case 7 - b _020EB0A8 ; case 8 -_020EAF74: - cmp r4, #0x10 - beq _020EB0A8 - b _020EB1F4 -_020EAF80: - cmp r6, #0 - blt _020EAF90 - cmp r6, #0x80 - blt _020EAF98 -_020EAF90: - mov r0, #0 - b _020EAFA8 -_020EAF98: - ldr r0, _020EB258 ; =_0210E504 - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #0x100 -_020EAFA8: - cmp r0, #0 - beq _020EAFD4 - mov r1, #0 - mov r0, r7 - mov r2, r1 - blx r8 - mov r6, r0 - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - b _020EB1F4 -_020EAFD4: - cmp r6, #0x2b - bne _020EAFF8 - mov r1, #0 - mov r0, r7 - mov r2, r1 - add r5, r5, #1 - blx r8 - mov r6, r0 - b _020EB024 -_020EAFF8: - cmp r6, #0x2d - bne _020EB024 - mov r1, #0 - mov r0, r7 - mov r2, r1 - add r5, r5, #1 - blx r8 - mov r6, r0 - ldr r0, [sp, #0x34] - mov r1, #1 - str r1, [r0] -_020EB024: - mov r4, #2 - b _020EB1F4 -_020EB02C: - cmp sb, #0 - cmpne sb, #0x10 - bne _020EB060 - cmp r6, #0x30 - bne _020EB060 - mov r1, #0 - mov r0, r7 - mov r2, r1 - mov r4, #4 - add r5, r5, #1 - blx r8 - mov r6, r0 - b _020EB1F4 -_020EB060: - mov r4, #8 - b _020EB1F4 -_020EB068: - cmp r6, #0x58 - cmpne r6, #0x78 - bne _020EB098 - mov r1, #0 - mov r0, r7 - mov r2, r1 - mov sb, #0x10 - mov r4, #8 - add r5, r5, #1 - blx r8 - mov r6, r0 - b _020EB1F4 -_020EB098: - cmp sb, #0 - moveq sb, #8 - mov r4, #0x10 - b _020EB1F4 -_020EB0A8: - ldr r0, [sp, #4] - cmp sb, #0 - moveq sb, #0xa - cmp r0, #0 - bne _020EB0CC - mov r0, fp - mov r1, sb - bl _u32_div_f - str r0, [sp, #4] -_020EB0CC: - cmp r6, #0 - blt _020EB0DC - cmp r6, #0x80 - blt _020EB0E4 -_020EB0DC: - mov r0, #0 - b _020EB0F4 -_020EB0E4: - ldr r0, _020EB258 ; =_0210E504 - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #8 -_020EB0F4: - cmp r0, #0 - beq _020EB11C - sub r6, r6, #0x30 - cmp r6, sb - blt _020EB1A4 - cmp r4, #0x10 - moveq r4, #0x20 - movne r4, #0x40 - add r6, r6, #0x30 - b _020EB1F4 -_020EB11C: - cmp r6, #0 - blt _020EB12C - cmp r6, #0x80 - blt _020EB134 -_020EB12C: - mov r0, #0 - b _020EB144 -_020EB134: - ldr r0, _020EB258 ; =_0210E504 - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #1 -_020EB144: - cmp r0, #0 - beq _020EB178 - cmp r6, #0 - blt _020EB15C - cmp r6, #0x80 - blt _020EB164 -_020EB15C: - mov r0, r6 - b _020EB16C -_020EB164: - ldr r0, _020EB25C ; =_0210E484 - ldrb r0, [r0, r6] -_020EB16C: - sub r0, r0, #0x37 - cmp r0, sb - blt _020EB188 -_020EB178: - cmp r4, #0x10 - moveq r4, #0x20 - movne r4, #0x40 - b _020EB1F4 -_020EB188: - cmp r6, #0 - blt _020EB1A0 - cmp r6, #0x80 - bge _020EB1A0 - ldr r0, _020EB25C ; =_0210E484 - ldrb r6, [r0, r6] -_020EB1A0: - sub r6, r6, #0x37 -_020EB1A4: - ldr r0, [sp, #4] - mov r4, #0x10 - cmp sl, r0 - ldrhi r0, [sp, #0x38] - movhi r1, #1 - strhi r1, [r0] - mul r0, sl, sb - mov sl, r0 - sub r0, fp, r0 - cmp r6, r0 - ldrhi r0, [sp, #0x38] - movhi r1, #1 - strhi r1, [r0] - mov r1, #0 - mov r0, r7 - mov r2, r1 - add sl, sl, r6 - add r5, r5, #1 - blx r8 - mov r6, r0 -_020EB1F4: - ldr r0, [sp] - cmp r5, r0 - bgt _020EB210 - cmp r6, fp - beq _020EB210 - tst r4, #0x60 - beq _020EAF3C -_020EB210: - tst r4, #0x34 - bne _020EB228 - ldr r0, [sp, #0x30] - mov sl, #0 - str sl, [r0] - b _020EB23C -_020EB228: - ldr r0, [sp, #8] - sub r1, r5, #1 - add r1, r1, r0 - ldr r0, [sp, #0x30] - str r1, [r0] -_020EB23C: - mov r0, r7 - mov r1, r6 - mov r2, #1 - blx r8 - mov r0, sl - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020EB258: .word _0210E504 -_020EB25C: .word _0210E484 - arm_func_end __strtoul - - arm_func_start __strtoull -__strtoull: ; 0x020EB260 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - ldr r4, [sp, #0x48] - movs sb, r0 - ldr r0, [sp, #0x44] - str r4, [sp, #0x48] - mov r4, #0 - str r0, [sp, #0x44] - ldr r0, [sp, #0x48] - str r1, [sp] - str r4, [r0] - mov r0, r4 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - str r0, [sp, #0xc] - ldr r0, [sp, #0x44] - mov r1, r4 - str r1, [r0] - ldr r0, [sp, #0x40] - str r4, [sp, #0x18] - mov sl, r2 - str r3, [sp, #4] - mov r6, r4 - mov r7, r4 - str r0, [sp, #0x40] - mov r5, #1 - bmi _020EB2E8 - cmp sb, #1 - beq _020EB2E8 - cmp sb, #0x24 - bgt _020EB2E8 - ldr r0, [sp] - cmp r0, #1 - bge _020EB2F0 -_020EB2E8: - mov r5, #0x40 - b _020EB304 -_020EB2F0: - mov r0, r3 - mov r2, r4 - add r6, r1, #1 - blx sl - mov r8, r0 -_020EB304: - cmp sb, #0 - beq _020EB328 - mvn r0, #0 - mov r1, r0 - mov r3, sb, asr #0x1f - mov r2, sb - bl _ll_udiv - mov r7, r0 - str r1, [sp, #0xc] -_020EB328: - mvn r0, #0 - str r0, [sp, #0x1c] - mov r4, #0 - b _020EB650 -_020EB338: - cmp r5, #8 - bgt _020EB370 - cmp r5, #0 - addge pc, pc, r5, lsl #2 - b _020EB650 -_020EB34C: ; jump table - b _020EB650 ; case 0 - b _020EB37C ; case 1 - b _020EB428 ; case 2 - b _020EB650 ; case 3 - b _020EB464 ; case 4 - b _020EB650 ; case 5 - b _020EB650 ; case 6 - b _020EB650 ; case 7 - b _020EB4A4 ; case 8 -_020EB370: - cmp r5, #0x10 - beq _020EB4A4 - b _020EB650 -_020EB37C: - cmp r8, #0 - blt _020EB38C - cmp r8, #0x80 - blt _020EB394 -_020EB38C: - mov r0, #0 - b _020EB3A4 -_020EB394: - ldr r0, _020EB6C4 ; =_0210E504 - mov r1, r8, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #0x100 -_020EB3A4: - cmp r0, #0 - beq _020EB3D0 - mov r1, #0 - ldr r0, [sp, #4] - mov r2, r1 - blx sl - mov r8, r0 - ldr r0, [sp, #0x18] - add r0, r0, #1 - str r0, [sp, #0x18] - b _020EB650 -_020EB3D0: - cmp r8, #0x2b - bne _020EB3F4 - mov r1, #0 - ldr r0, [sp, #4] - mov r2, r1 - add r6, r6, #1 - blx sl - mov r8, r0 - b _020EB420 -_020EB3F4: - cmp r8, #0x2d - bne _020EB420 - mov r1, #0 - ldr r0, [sp, #4] - mov r2, r1 - add r6, r6, #1 - blx sl - mov r8, r0 - ldr r0, [sp, #0x44] - mov r1, #1 - str r1, [r0] -_020EB420: - mov r5, #2 - b _020EB650 -_020EB428: - cmp sb, #0 - cmpne sb, #0x10 - bne _020EB45C - cmp r8, #0x30 - bne _020EB45C - mov r1, #0 - ldr r0, [sp, #4] - mov r2, r1 - mov r5, #4 - add r6, r6, #1 - blx sl - mov r8, r0 - b _020EB650 -_020EB45C: - mov r5, #8 - b _020EB650 -_020EB464: - cmp r8, #0x58 - cmpne r8, #0x78 - bne _020EB494 - mov r1, #0 - ldr r0, [sp, #4] - mov r2, r1 - mov sb, #0x10 - mov r5, #8 - add r6, r6, #1 - blx sl - mov r8, r0 - b _020EB650 -_020EB494: - cmp sb, #0 - moveq sb, #8 - mov r5, #0x10 - b _020EB650 -_020EB4A4: - ldr r1, [sp, #0xc] - mov r0, #0 - cmp sb, #0 - moveq sb, #0xa - cmp r1, r0 - cmpeq r7, r4 - bne _020EB4DC - ldr r0, [sp, #0x1c] - mov r3, sb, asr #0x1f - mov r1, r0 - mov r2, sb - bl _ll_udiv - mov r7, r0 - str r1, [sp, #0xc] -_020EB4DC: - cmp r8, #0 - blt _020EB4EC - cmp r8, #0x80 - blt _020EB4F4 -_020EB4EC: - mov r0, #0 - b _020EB504 -_020EB4F4: - ldr r0, _020EB6C4 ; =_0210E504 - mov r1, r8, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #8 -_020EB504: - cmp r0, #0 - beq _020EB52C - sub r8, r8, #0x30 - cmp r8, sb - blt _020EB5B4 - cmp r5, #0x10 - moveq r5, #0x20 - movne r5, #0x40 - add r8, r8, #0x30 - b _020EB650 -_020EB52C: - cmp r8, #0 - blt _020EB53C - cmp r8, #0x80 - blt _020EB544 -_020EB53C: - mov r0, #0 - b _020EB554 -_020EB544: - ldr r0, _020EB6C4 ; =_0210E504 - mov r1, r8, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #1 -_020EB554: - cmp r0, #0 - beq _020EB588 - cmp r8, #0 - blt _020EB56C - cmp r8, #0x80 - blt _020EB574 -_020EB56C: - mov r0, r8 - b _020EB57C -_020EB574: - ldr r0, _020EB6C8 ; =_0210E484 - ldrb r0, [r0, r8] -_020EB57C: - sub r0, r0, #0x37 - cmp r0, sb - blt _020EB598 -_020EB588: - cmp r5, #0x10 - moveq r5, #0x20 - movne r5, #0x40 - b _020EB650 -_020EB598: - cmp r8, #0 - blt _020EB5B0 - cmp r8, #0x80 - bge _020EB5B0 - ldr r0, _020EB6C8 ; =_0210E484 - ldrb r8, [r0, r8] -_020EB5B0: - sub r8, r8, #0x37 -_020EB5B4: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x10] - cmp r1, r0 - ldr r0, [sp, #0x10] - mov r5, sb, asr #0x1f - cmpeq r0, r7 - ldrhi r0, [sp, #0x48] - movhi r1, #1 - strhi r1, [r0] - umull r0, r1, r3, sb - mla r1, r3, r5, r1 - ldr r3, [sp, #0x14] - str r0, [sp, #0x10] - mla r1, r3, sb, r1 - ldr r3, [sp, #0x1c] - mov r2, r8, asr #0x1f - subs r3, r3, r0 - ldr r0, [sp, #0x1c] - str r1, [sp, #0x14] - sbc r0, r0, r1 - cmp r2, r0 - cmpeq r8, r3 - ldrhi r0, [sp, #0x48] - movhi r1, #1 - strhi r1, [r0] - ldr r0, [sp, #0x10] - mov r1, #0 - adds r0, r0, r8 - str r0, [sp, #0x10] - ldr r0, [sp, #0x14] - mov r5, #0x10 - adc r0, r0, r2 - str r0, [sp, #0x14] - ldr r0, [sp, #4] - mov r2, r1 - add r6, r6, #1 - blx sl - mov r8, r0 -_020EB650: - ldr r0, [sp] - cmp r6, r0 - bgt _020EB670 - ldr r0, [sp, #0x1c] - cmp r8, r0 - beq _020EB670 - tst r5, #0x60 - beq _020EB338 -_020EB670: - tst r5, #0x34 - bne _020EB690 - mov r0, #0 - str r0, [sp, #0x10] - str r0, [sp, #0x14] - mov r1, r0 - ldr r0, [sp, #0x40] - b _020EB6A0 -_020EB690: - ldr r0, [sp, #0x18] - sub r1, r6, #1 - add r1, r1, r0 - ldr r0, [sp, #0x40] -_020EB6A0: - str r1, [r0] - ldr r0, [sp, #4] - mov r1, r8 - mov r2, #1 - blx sl - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020EB6C4: .word _0210E504 -_020EB6C8: .word _0210E484 - arm_func_end __strtoull - - arm_func_start strtoul -strtoul: ; 0x020EB6CC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - mov r5, r0 - mov lr, #0 - mov r0, r2 - mov r4, r1 - add r2, sp, #0x1c - str r5, [sp, #0xc] - str lr, [sp, #0x10] - str r2, [sp] - add r1, sp, #0x18 - str r1, [sp, #4] - add ip, sp, #0x14 - ldr r2, _020EB75C ; =__StringRead - add r3, sp, #0xc - sub r1, lr, #0x80000001 - str ip, [sp, #8] - bl __strtoul - cmp r4, #0 - ldrne r1, [sp, #0x1c] - addne r1, r5, r1 - strne r1, [r4] - ldr r1, [sp, #0x14] - cmp r1, #0 - beq _020EB748 - ldr r0, _020EB760 ; =_021E58C0 - mov r1, #0x22 - str r1, [r0] - add sp, sp, #0x20 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020EB748: - ldr r1, [sp, #0x18] - cmp r1, #0 - rsbne r0, r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020EB75C: .word __StringRead -_020EB760: .word _021E58C0 - arm_func_end strtoul - - arm_func_start strtol -strtol: ; 0x020EB764 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - mov r5, r0 - mov lr, #0 - mov r0, r2 - mov r4, r1 - add r2, sp, #0x1c - str r5, [sp, #0xc] - str lr, [sp, #0x10] - str r2, [sp] - add r1, sp, #0x18 - str r1, [sp, #4] - add ip, sp, #0x14 - ldr r2, _020EB824 ; =__StringRead - add r3, sp, #0xc - sub r1, lr, #0x80000001 - str ip, [sp, #8] - bl __strtoul - cmp r4, #0 - ldrne r1, [sp, #0x1c] - addne r1, r5, r1 - strne r1, [r4] - ldr r1, [sp, #0x14] - cmp r1, #0 - bne _020EB7F0 - ldr r2, [sp, #0x18] - cmp r2, #0 - bne _020EB7E0 - mvn r1, #0x80000000 - cmp r0, r1 - bhi _020EB7F0 -_020EB7E0: - cmp r2, #0 - beq _020EB814 - cmp r0, #0x80000000 - bls _020EB814 -_020EB7F0: - ldr r0, [sp, #0x18] - ldr r1, _020EB828 ; =_021E58C0 - mov r2, #0x22 - cmp r0, #0 - movne r0, #0x80000000 - str r2, [r1] - add sp, sp, #0x20 - mvneq r0, #0x80000000 - ldmia sp!, {r3, r4, r5, pc} -_020EB814: - cmp r2, #0 - rsbne r0, r0, #0 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020EB824: .word __StringRead -_020EB828: .word _021E58C0 - arm_func_end strtol - - arm_func_start atoi -atoi: ; 0x020EB82C - ldr ip, _020EB83C ; =strtol - mov r1, #0 - mov r2, #0xa - bx ip - .align 2, 0 -_020EB83C: .word strtol - arm_func_end atoi - - arm_func_start fwide -fwide: ; 0x020EB840 - cmp r0, #0 - beq _020EB858 - ldr r3, [r0, #4] - mov r2, r3, lsl #0x16 - movs r2, r2, lsr #0x1d - bne _020EB860 -_020EB858: - mov r0, #0 - bx lr -_020EB860: - mov r2, r3, lsl #0x14 - movs r2, r2, lsr #0x1e - beq _020EB880 - cmp r2, #1 - beq _020EB8A8 - cmp r2, #2 - moveq r1, #1 - b _020EB8AC -_020EB880: - cmp r1, #0 - ble _020EB898 - bic r2, r3, #0xc00 - orr r2, r2, #0x800 - str r2, [r0, #4] - b _020EB8AC -_020EB898: - biclt r2, r3, #0xc00 - orrlt r2, r2, #0x400 - strlt r2, [r0, #4] - b _020EB8AC -_020EB8A8: - mvn r1, #0 -_020EB8AC: - mov r0, r1 - bx lr - arm_func_end fwide - - arm_func_start wmemcpy -wmemcpy: ; 0x020EB8B4 - ldr ip, _020EB8C0 ; =memcpy - mov r2, r2, lsl #1 - bx ip - .align 2, 0 -_020EB8C0: .word memcpy - arm_func_end wmemcpy - - arm_func_start wmemchr -wmemchr: ; 0x020EB8C4 - cmp r2, #0 - beq _020EB8E4 -_020EB8CC: - ldrh r3, [r0] - cmp r3, r1 - bxeq lr - add r0, r0, #2 - subs r2, r2, #1 - bne _020EB8CC -_020EB8E4: - mov r0, #0 - bx lr - arm_func_end wmemchr - - arm_func_start parse_format__wprintf -parse_format__wprintf: ; 0x020EB8EC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - ldrh r3, [r0, #2] - mov r4, #0 - mov r5, #1 - mov lr, r2 - strb r5, [sp] - strb r4, [sp, #1] - strb r4, [sp, #2] - strb r4, [sp, #3] - strb r4, [sp, #4] - str r4, [sp, #8] - str r4, [sp, #0xc] - cmp r3, #0x25 - add ip, r0, #2 - bne _020EB948 - add r0, sp, #0 - strh r3, [sp, #6] - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - add sp, sp, #0x10 - add r0, ip, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020EB948: - mov r2, #2 - mov r0, r4 - mov r5, r2 - mov r6, r4 - mov r7, #1 -_020EB95C: - mov r8, r7 - cmp r3, #0x2b - bgt _020EB98C - bge _020EB9B4 - cmp r3, #0x23 - bgt _020EB9E4 - cmp r3, #0x20 - blt _020EB9E4 - beq _020EB9BC - cmp r3, #0x23 - beq _020EB9CC - b _020EB9E4 -_020EB98C: - cmp r3, #0x30 - bgt _020EB9E4 - cmp r3, #0x2d - blt _020EB9E4 - beq _020EB9AC - cmp r3, #0x30 - beq _020EB9D4 - b _020EB9E4 -_020EB9AC: - strb r6, [sp] - b _020EB9E8 -_020EB9B4: - strb r7, [sp, #1] - b _020EB9E8 -_020EB9BC: - ldrb r4, [sp, #1] - cmp r4, #1 - strneb r5, [sp, #1] - b _020EB9E8 -_020EB9CC: - strb r7, [sp, #3] - b _020EB9E8 -_020EB9D4: - ldrb r4, [sp] - cmp r4, #0 - strneb r2, [sp] - b _020EB9E8 -_020EB9E4: - mov r8, r0 -_020EB9E8: - cmp r8, #0 - ldrneh r3, [ip, #2]! - bne _020EB95C - cmp r3, #0x2a - bne _020EBA30 - ldr r0, [r1] - add r0, r0, #4 - str r0, [r1] - ldr r0, [r0, #-4] - str r0, [sp, #8] - cmp r0, #0 - bge _020EBA28 - rsb r0, r0, #0 - mov r2, #0 - strb r2, [sp] - str r0, [sp, #8] -_020EBA28: - ldrh r3, [ip, #2]! - b _020EBA74 -_020EBA30: - mov r2, #0 - ldr r5, _020EBE58 ; =_0210E73C - mov r0, #0xa - b _020EBA54 -_020EBA40: - ldr r4, [sp, #8] - sub r3, r3, #0x30 - mla r6, r4, r0, r3 - ldrh r3, [ip, #2]! - str r6, [sp, #8] -_020EBA54: - cmp r3, #0x80 - movhs r4, r2 - bhs _020EBA6C - mov r4, r3, lsl #1 - ldrh r4, [r5, r4] - and r4, r4, #8 -_020EBA6C: - cmp r4, #0 - bne _020EBA40 -_020EBA74: - ldr r2, [sp, #8] - ldr r0, _020EBE5C ; =0x000001FD - cmp r2, r0 - ble _020EBAA4 - ldr r1, _020EBE60 ; =0x0000FFFF - add r0, sp, #0 - strh r1, [sp, #6] - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - add sp, sp, #0x10 - add r0, ip, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020EBAA4: - cmp r3, #0x2e - bne _020EBB2C - ldrh r3, [ip, #2]! - mov r0, #1 - strb r0, [sp, #2] - cmp r3, #0x2a - bne _020EBAE8 - ldr r0, [r1] - add r0, r0, #4 - str r0, [r1] - ldr r0, [r0, #-4] - ldrh r3, [ip, #2]! - str r0, [sp, #0xc] - cmp r0, #0 - movlt r0, #0 - strltb r0, [sp, #2] - b _020EBB2C -_020EBAE8: - mov r1, #0 - ldr r4, _020EBE58 ; =_0210E73C - mov r0, #0xa - b _020EBB0C -_020EBAF8: - ldr r2, [sp, #0xc] - sub r3, r3, #0x30 - mla r5, r2, r0, r3 - ldrh r3, [ip, #2]! - str r5, [sp, #0xc] -_020EBB0C: - cmp r3, #0x80 - movhs r2, r1 - bhs _020EBB24 - mov r2, r3, lsl #1 - ldrh r2, [r4, r2] - and r2, r2, #8 -_020EBB24: - cmp r2, #0 - bne _020EBAF8 -_020EBB2C: - cmp r3, #0x6c - mov r0, #1 - bgt _020EBB64 - cmp r3, #0x68 - blt _020EBB58 - beq _020EBB80 - cmp r3, #0x6a - beq _020EBBCC - cmp r3, #0x6c - beq _020EBB9C - b _020EBBF0 -_020EBB58: - cmp r3, #0x4c - beq _020EBBC0 - b _020EBBF0 -_020EBB64: - cmp r3, #0x74 - bgt _020EBB74 - beq _020EBBD8 - b _020EBBF0 -_020EBB74: - cmp r3, #0x7a - beq _020EBBE4 - b _020EBBF0 -_020EBB80: - ldrh r1, [ip, #2] - mov r2, #2 - strb r2, [sp, #4] - cmp r1, #0x68 - streqb r0, [sp, #4] - ldreqh r3, [ip, #2]! - b _020EBBF4 -_020EBB9C: - ldrh r1, [ip, #2] - mov r2, #3 - strb r2, [sp, #4] - cmp r1, #0x6c - bne _020EBBF4 - mov r1, #4 - strb r1, [sp, #4] - ldrh r3, [ip, #2]! - b _020EBBF4 -_020EBBC0: - mov r1, #9 - strb r1, [sp, #4] - b _020EBBF4 -_020EBBCC: - mov r1, #6 - strb r1, [sp, #4] - b _020EBBF4 -_020EBBD8: - mov r1, #8 - strb r1, [sp, #4] - b _020EBBF4 -_020EBBE4: - mov r1, #7 - strb r1, [sp, #4] - b _020EBBF4 -_020EBBF0: - mov r0, #0 -_020EBBF4: - cmp r0, #0 - ldrneh r3, [ip, #2]! - strh r3, [sp, #6] - cmp r3, #0x61 - bgt _020EBC48 - bge _020EBD2C - cmp r3, #0x47 - bgt _020EBC3C - subs r0, r3, #0x41 - addpl pc, pc, r0, lsl #2 - b _020EBE38 -_020EBC20: ; jump table - b _020EBD2C ; case 0 - b _020EBE38 ; case 1 - b _020EBE38 ; case 2 - b _020EBE38 ; case 3 - b _020EBD74 ; case 4 - b _020EBCF4 ; case 5 - b _020EBD64 ; case 6 -_020EBC3C: - cmp r3, #0x58 - beq _020EBCBC - b _020EBE38 -_020EBC48: - cmp r3, #0x63 - bgt _020EBC58 - beq _020EBDD4 - b _020EBE38 -_020EBC58: - sub r0, r3, #0x64 - cmp r0, #0x14 - addls pc, pc, r0, lsl #2 - b _020EBE38 -_020EBC68: ; jump table - b _020EBCBC ; case 0 - b _020EBD74 ; case 1 - b _020EBCF4 ; case 2 - b _020EBD64 ; case 3 - b _020EBE38 ; case 4 - b _020EBCBC ; case 5 - b _020EBE38 ; case 6 - b _020EBE38 ; case 7 - b _020EBE38 ; case 8 - b _020EBE38 ; case 9 - b _020EBE24 ; case 10 - b _020EBCBC ; case 11 - b _020EBDB0 ; case 12 - b _020EBE38 ; case 13 - b _020EBE38 ; case 14 - b _020EBE00 ; case 15 - b _020EBE38 ; case 16 - b _020EBCBC ; case 17 - b _020EBE38 ; case 18 - b _020EBE38 ; case 19 - b _020EBCBC ; case 20 -_020EBCBC: - ldrb r0, [sp, #4] - cmp r0, #9 - moveq r0, #4 - streqb r0, [sp, #4] - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] - beq _020EBE40 - ldrb r0, [sp] - cmp r0, #2 - moveq r0, #1 - streqb r0, [sp] - b _020EBE40 -_020EBCF4: - ldrb r0, [sp, #4] - cmp r0, #2 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - cmpne r0, #4 - ldreq r0, _020EBE60 ; =0x0000FFFF - streqh r0, [sp, #6] - beq _020EBE40 - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #6 - streq r0, [sp, #0xc] - b _020EBE40 -_020EBD2C: - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #0xd - streq r0, [sp, #0xc] - ldrb r0, [sp, #4] - cmp r0, #2 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - cmpne r0, #4 - cmpne r0, #1 - ldreq r0, _020EBE60 ; =0x0000FFFF - streqh r0, [sp, #6] - b _020EBE40 -_020EBD64: - ldr r0, [sp, #0xc] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] -_020EBD74: - ldrb r0, [sp, #4] - cmp r0, #2 - cmpne r0, #6 - cmpne r0, #7 - cmpne r0, #8 - cmpne r0, #4 - cmpne r0, #1 - ldreq r0, _020EBE60 ; =0x0000FFFF - streqh r0, [sp, #6] - beq _020EBE40 - ldrb r0, [sp, #2] - cmp r0, #0 - moveq r0, #6 - streq r0, [sp, #0xc] - b _020EBE40 -_020EBDB0: - mov r3, #3 - mov r2, #1 - mov r1, #0x78 - mov r0, #8 - strb r3, [sp, #4] - strb r2, [sp, #3] - strh r1, [sp, #6] - str r0, [sp, #0xc] - b _020EBE40 -_020EBDD4: - ldrb r1, [sp, #4] - cmp r1, #3 - moveq r0, #5 - streqb r0, [sp, #4] - beq _020EBE40 - ldrb r0, [sp, #2] - cmp r0, #0 - cmpeq r1, #0 - ldrne r0, _020EBE60 ; =0x0000FFFF - strneh r0, [sp, #6] - b _020EBE40 -_020EBE00: - ldrb r0, [sp, #4] - cmp r0, #3 - moveq r0, #5 - streqb r0, [sp, #4] - beq _020EBE40 - cmp r0, #0 - ldrne r0, _020EBE60 ; =0x0000FFFF - strneh r0, [sp, #6] - b _020EBE40 -_020EBE24: - ldrb r0, [sp, #4] - cmp r0, #9 - moveq r0, #4 - streqb r0, [sp, #4] - b _020EBE40 -_020EBE38: - ldr r0, _020EBE60 ; =0x0000FFFF - strh r0, [sp, #6] -_020EBE40: - add r0, sp, #0 - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - add r0, ip, #2 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020EBE58: .word _0210E73C -_020EBE5C: .word 0x000001FD -_020EBE60: .word 0x0000FFFF - arm_func_end parse_format__wprintf - - arm_func_start long2str__wprintf -long2str__wprintf: ; 0x020EBE64 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - movs sl, r0 - mov r0, #0 - mov r5, r1 - str r0, [sp, #0xc] - ldr r7, [sp, #0x4c] - mov r6, r0 - strh r0, [r5, #-2]! - ldrb r0, [sp, #0x43] - str r1, [sp] - ldrh r8, [sp, #0x46] - str r0, [sp, #4] - ldr r0, [sp, #0x48] - ldrb fp, [sp, #0x41] - str r0, [sp, #8] - cmpeq r7, #0 - bne _020EBED8 - ldr r0, [sp, #4] - cmp r0, #0 - beq _020EBEC4 - cmp r8, #0x6f - beq _020EBED8 -_020EBEC4: - add sp, sp, #0x10 - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EBED8: - cmp r8, #0x69 - bgt _020EBF00 - bge _020EBF34 - cmp r8, #0x58 - bgt _020EBEF4 - beq _020EBF60 - b _020EBF68 -_020EBEF4: - cmp r8, #0x64 - beq _020EBF34 - b _020EBF68 -_020EBF00: - cmp r8, #0x6f - bgt _020EBF14 - moveq r4, #8 - moveq fp, #0 - b _020EBF68 -_020EBF14: - cmp r8, #0x78 - bgt _020EBF68 - cmp r8, #0x75 - blt _020EBF68 - beq _020EBF54 - cmp r8, #0x78 - beq _020EBF60 - b _020EBF68 -_020EBF34: - cmp sl, #0 - mov r4, #0xa - bge _020EBF68 - mov r0, #1 - cmp sl, #0x80000000 - rsbne sl, sl, #0 - str r0, [sp, #0xc] - b _020EBF68 -_020EBF54: - mov r4, #0xa - mov fp, #0 - b _020EBF68 -_020EBF60: - mov r4, #0x10 - mov fp, #0 -_020EBF68: - mov r0, sl - mov r1, r4 - bl _u32_div_f - mov sb, r1 - mov r0, sl - mov r1, r4 - bl _u32_div_f - cmp sb, #0xa - mov sl, r0 - addlt sb, sb, #0x30 - blt _020EBFA0 - cmp r8, #0x78 - addeq sb, sb, #0x57 - addne sb, sb, #0x37 -_020EBFA0: - cmp sl, #0 - strh sb, [r5, #-2]! - add r6, r6, #1 - bne _020EBF68 - cmp r4, #8 - bne _020EBFD4 - ldr r0, [sp, #4] - cmp r0, #0 - ldrneh r0, [r5] - cmpne r0, #0x30 - movne r0, #0x30 - strneh r0, [r5, #-2]! - addne r6, r6, #1 -_020EBFD4: - ldrb r0, [sp, #0x40] - cmp r0, #2 - bne _020EC008 - ldr r0, [sp, #0xc] - ldr r7, [sp, #8] - cmp r0, #0 - cmpeq fp, #0 - subne r7, r7, #1 - cmp r4, #0x10 - bne _020EC008 - ldr r0, [sp, #4] - cmp r0, #0 - subne r7, r7, #2 -_020EC008: - ldr r0, [sp] - ldr r1, _020EC0B0 ; =0x000001FD - sub r0, r0, r5 - add r0, r0, r0, lsr #31 - add r0, r7, r0, asr #1 - cmp r0, r1 - addgt sp, sp, #0x10 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - cmp r6, r7 - bge _020EC050 - mov r0, #0x30 -_020EC040: - add r6, r6, #1 - cmp r6, r7 - strh r0, [r5, #-2]! - blt _020EC040 -_020EC050: - cmp r4, #0x10 - bne _020EC06C - ldr r0, [sp, #4] - cmp r0, #0 - movne r0, #0x30 - strneh r8, [r5, #-2] - strneh r0, [r5, #-4]! -_020EC06C: - ldr r0, [sp, #0xc] - cmp r0, #0 - movne r0, #0x2d - strneh r0, [r5, #-2]! - bne _020EC09C - cmp fp, #1 - moveq r0, #0x2b - streqh r0, [r5, #-2]! - beq _020EC09C - cmp fp, #2 - moveq r0, #0x20 - streqh r0, [r5, #-2]! -_020EC09C: - mov r0, r5 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020EC0B0: .word 0x000001FD - arm_func_end long2str__wprintf - - arm_func_start longlong2str__wprintf -longlong2str__wprintf: ; 0x020EC0B4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov sb, r1 - mov r1, #0 - mov sl, r0 - mov r8, r2 - mov r0, r1 - strh r0, [r8, #-2]! - ldr r0, [sp, #0x58] - cmp sb, #0 - str r0, [sp, #0x14] - ldrb r0, [sp, #0x4f] - cmpeq sl, #0 - str r2, [sp] - str r0, [sp, #4] - ldrh r0, [sp, #0x52] - str r1, [sp, #0x18] - mov fp, r1 - str r0, [sp, #8] - ldr r0, [sp, #0x54] - str r0, [sp, #0xc] - ldrb r0, [sp, #0x4d] - str r0, [sp, #0x10] - ldreq r0, [sp, #0x14] - cmpeq r0, #0 - bne _020EC14C - ldr r0, [sp, #4] - cmp r0, #0 - beq _020EC138 - ldr r0, [sp, #8] - cmp r0, #0x6f - beq _020EC14C -_020EC138: - add sp, sp, #0x1c - mov r0, r8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EC14C: - ldr r0, [sp, #8] - cmp r0, #0x69 - bgt _020EC178 - bge _020EC1A8 - cmp r0, #0x58 - bgt _020EC16C - beq _020EC1FC - b _020EC208 -_020EC16C: - cmp r0, #0x64 - beq _020EC1A8 - b _020EC208 -_020EC178: - cmp r0, #0x6f - bgt _020EC188 - beq _020EC1DC - b _020EC208 -_020EC188: - cmp r0, #0x78 - bgt _020EC208 - cmp r0, #0x75 - blt _020EC208 - beq _020EC1EC - cmp r0, #0x78 - beq _020EC1FC - b _020EC208 -_020EC1A8: - subs r0, sl, #0 - sbcs r0, sb, #0 - mov r7, #0xa - mov r6, #0 - bge _020EC208 - cmp sb, #0x80000000 - cmpeq sl, r6 - beq _020EC1D0 - rsbs sl, sl, #0 - rsc sb, sb, #0 -_020EC1D0: - mov r0, #1 - str r0, [sp, #0x18] - b _020EC208 -_020EC1DC: - mov r6, #0 - str r6, [sp, #0x10] - mov r7, #8 - b _020EC208 -_020EC1EC: - mov r6, #0 - str r6, [sp, #0x10] - mov r7, #0xa - b _020EC208 -_020EC1FC: - mov r6, #0 - str r6, [sp, #0x10] - mov r7, #0x10 -_020EC208: - mov r4, #0 -_020EC20C: - mov r0, sl - mov r1, sb - mov r2, r7 - mov r3, r6 - bl _ull_mod - mov r5, r0 - mov r0, sl - mov r1, sb - mov r2, r7 - mov r3, r6 - bl _ll_udiv - mov sl, r0 - cmp r5, #0xa - mov sb, r1 - addlt r0, r5, #0x30 - blt _020EC25C - ldr r0, [sp, #8] - cmp r0, #0x78 - addeq r0, r5, #0x57 - addne r0, r5, #0x37 -_020EC25C: - strh r0, [r8, #-2]! - mov r0, #0 - cmp sb, r0 - cmpeq sl, r4 - add fp, fp, #1 - bne _020EC20C - cmp r6, #0 - cmpeq r7, #8 - bne _020EC29C - ldr r0, [sp, #4] - cmp r0, #0 - ldrneh r0, [r8] - cmpne r0, #0x30 - movne r0, #0x30 - strneh r0, [r8, #-2]! - addne fp, fp, #1 -_020EC29C: - ldrb r0, [sp, #0x4c] - cmp r0, #2 - bne _020EC2EC - ldr r0, [sp, #0xc] - str r0, [sp, #0x14] - ldr r0, [sp, #0x18] - cmp r0, #0 - ldreq r0, [sp, #0x10] - cmpeq r0, #0 - ldrne r0, [sp, #0x14] - subne r0, r0, #1 - strne r0, [sp, #0x14] - cmp r6, #0 - cmpeq r7, #0x10 - bne _020EC2EC - ldr r0, [sp, #4] - cmp r0, #0 - ldrne r0, [sp, #0x14] - subne r0, r0, #2 - strne r0, [sp, #0x14] -_020EC2EC: - ldr r0, [sp] - ldr r2, _020EC3B0 ; =0x000001FD - sub r0, r0, r8 - add r1, r0, r0, lsr #31 - ldr r0, [sp, #0x14] - add r0, r0, r1, asr #1 - cmp r0, r2 - addgt sp, sp, #0x1c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - ldr r0, [sp, #0x14] - cmp fp, r0 - bge _020EC340 - mov r1, #0x30 -_020EC32C: - ldr r0, [sp, #0x14] - add fp, fp, #1 - cmp fp, r0 - strh r1, [r8, #-2]! - blt _020EC32C -_020EC340: - cmp r6, #0 - cmpeq r7, #0x10 - bne _020EC368 - ldr r0, [sp, #4] - cmp r0, #0 - beq _020EC368 - ldr r0, [sp, #8] - mov r1, #0x30 - strh r0, [r8, #-2] - strh r1, [r8, #-4]! -_020EC368: - ldr r0, [sp, #0x18] - cmp r0, #0 - movne r0, #0x2d - strneh r0, [r8, #-2]! - bne _020EC39C - ldr r0, [sp, #0x10] - cmp r0, #1 - moveq r0, #0x2b - streqh r0, [r8, #-2]! - beq _020EC39C - cmp r0, #2 - moveq r0, #0x20 - streqh r0, [r8, #-2]! -_020EC39C: - mov r0, r8 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020EC3B0: .word 0x000001FD - arm_func_end longlong2str__wprintf - - arm_func_start double2hex__wprintf -double2hex__wprintf: ; 0x020EC3B4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x44 - ldr r7, [sp, #0x80] - ldr r0, _020EC720 ; =0x000001FD - mov r8, r2 - cmp r7, r0 - ldrh r6, [sp, #0x7a] - ldrb r5, [sp, #0x77] - ldrb r4, [sp, #0x75] - ldr r1, [sp, #0x68] - ldr r2, [sp, #0x6c] - addgt sp, sp, #0x44 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - addgt sp, sp, #0x10 - bxgt lr - mov sl, #0 - mov sb, #0x20 - add r0, sp, #8 - add r3, sp, #0xc - strb sl, [sp, #8] - strh sb, [sp, #0xa] - bl __num2dec - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x6c] - bl fabs - mov r2, r0 - mov r0, sl - mov r3, r1 - mov r1, r0 - bl _deq - bne _020EC45C - sub r4, r8, #0xc - ldr r1, _020EC724 ; =_02111364 - mov r0, r4 - bl wcscpy - add sp, sp, #0x44 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020EC45C: - ldrb r0, [sp, #0x11] - cmp r0, #0x49 - bne _020EC4DC - ldrsb r0, [sp, #0xc] - cmp r0, #0 - beq _020EC4A0 - cmp r6, #0x41 - sub r4, r8, #0xa - bne _020EC490 - ldr r1, _020EC728 ; =_02111370 - mov r0, r4 - bl wcscpy - b _020EC4C8 -_020EC490: - ldr r1, _020EC72C ; =_0211137C - mov r0, r4 - bl wcscpy - b _020EC4C8 -_020EC4A0: - cmp r6, #0x41 - sub r4, r8, #8 - bne _020EC4BC - ldr r1, _020EC730 ; =_02111388 - mov r0, r4 - bl wcscpy - b _020EC4C8 -_020EC4BC: - ldr r1, _020EC734 ; =_02111390 - mov r0, r4 - bl wcscpy -_020EC4C8: - add sp, sp, #0x44 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020EC4DC: - cmp r0, #0x4e - bne _020EC558 - ldrsb r0, [sp, #0xc] - cmp r0, #0 - beq _020EC51C - cmp r6, #0x41 - sub r4, r8, #0xa - bne _020EC50C - ldr r1, _020EC738 ; =_02111398 - mov r0, r4 - bl wcscpy - b _020EC544 -_020EC50C: - ldr r1, _020EC73C ; =_021113A4 - mov r0, r4 - bl wcscpy - b _020EC544 -_020EC51C: - cmp r6, #0x41 - sub r4, r8, #8 - bne _020EC538 - ldr r1, _020EC740 ; =_021113B0 - mov r0, r4 - bl wcscpy - b _020EC544 -_020EC538: - ldr r1, _020EC744 ; =_021113B8 - mov r0, r4 - bl wcscpy -_020EC544: - add sp, sp, #0x44 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr -_020EC558: - mov r3, sl - mov r1, #1 - mov r0, #0x64 - add sb, sp, #0x68 - strb r1, [sp, #0x34] - strb r1, [sp, #0x35] - strb r3, [sp, #0x36] - strb r3, [sp, #0x37] - strb r3, [sp, #0x38] - str r3, [sp, #0x3c] - str r1, [sp, #0x40] - strh r0, [sp, #0x3a] -_020EC588: - rsb r1, r3, #7 - ldrsb r2, [sb, r3] - ldrsb r0, [sb, r1] - strb r0, [sb, r3] - add r3, r3, #1 - strb r2, [sb, r1] - cmp r3, #4 - blt _020EC588 - ldrb r0, [sp, #0x69] - ldrb r1, [sp, #0x68] - ldr sb, _020EC748 ; =0x000007FF - mov r0, r0, lsl #0x11 - orr r1, r0, r1, lsl #25 - add r0, sp, #0x34 - and lr, sb, r1, lsr #21 - sub ip, sp, #8 - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - rsb r0, sb, #0x400 - mov r1, r8 - add r0, lr, r0 - ldmia ip, {r2, r3} - bl long2str__wprintf - cmp r6, #0x61 - moveq r1, #0x70 - movne r1, #0x50 - strh r1, [r0, #-2]! - mov r1, r7, lsl #2 - mov lr, r7 - cmp r7, #1 - add r8, r1, #0xb - add ip, sp, #0x68 - blt _020EC698 - mov sb, #0x30 -_020EC610: - cmp r8, #0x40 - bge _020EC680 - ldrb r1, [ip, r8, asr #3] - and r2, r8, #7 - rsb r3, r2, #7 - mov r2, r1, asr r3 - sub sl, r8, #4 - bic r1, r8, #7 - bic sl, sl, #7 - cmp r1, sl - add sl, ip, r8, asr #3 - and r1, r2, #0xff - beq _020EC654 - ldrb r2, [sl, #-1] - mov r2, r2, lsl #8 - orr r1, r1, r2, asr r3 - and r1, r1, #0xff -_020EC654: - and r1, r1, #0xf - cmp r1, #0xa - addlo r1, r1, #0x30 - andlo r1, r1, #0xff - blo _020EC684 - cmp r6, #0x61 - addeq r1, r1, #0x57 - andeq r1, r1, #0xff - addne r1, r1, #0x37 - andne r1, r1, #0xff - b _020EC684 -_020EC680: - mov r1, sb -_020EC684: - sub lr, lr, #1 - cmp lr, #1 - strh r1, [r0, #-2]! - sub r8, r8, #4 - bge _020EC610 -_020EC698: - cmp r7, #0 - cmpeq r5, #0 - movne r1, #0x2e - strneh r1, [r0, #-2]! - mov r1, #0x31 - strh r1, [r0, #-2] - cmp r6, #0x61 - moveq r1, #0x78 - movne r1, #0x58 - strh r1, [r0, #-4]! - mov r1, #0x30 - strh r1, [r0, #-2]! - ldrsb r1, [sp, #0xc] - cmp r1, #0 - movne r1, #0x2d - strneh r1, [r0, #-2]! - addne sp, sp, #0x44 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - addne sp, sp, #0x10 - bxne lr - cmp r4, #1 - moveq r1, #0x2b - streqh r1, [r0, #-2]! - addeq sp, sp, #0x44 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - addeq sp, sp, #0x10 - bxeq lr - cmp r4, #2 - moveq r1, #0x20 - streqh r1, [r0, #-2]! - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020EC720: .word 0x000001FD -_020EC724: .word _02111364 -_020EC728: .word _02111370 -_020EC72C: .word _0211137C -_020EC730: .word _02111388 -_020EC734: .word _02111390 -_020EC738: .word _02111398 -_020EC73C: .word _021113A4 -_020EC740: .word _021113B0 -_020EC744: .word _021113B8 -_020EC748: .word 0x000007FF - arm_func_end double2hex__wprintf - - arm_func_start round_decimal__wprintf -round_decimal__wprintf: ; 0x020EC74C - stmdb sp!, {r4, lr} - cmp r1, #0 - bge _020EC774 -_020EC758: - mov r1, #0 - strh r1, [r0, #2] - mov r1, #1 - strb r1, [r0, #4] - mov r1, #0x30 - strb r1, [r0, #5] - ldmia sp!, {r4, pc} -_020EC774: - ldrb lr, [r0, #4] - cmp r1, lr - ldmgeia sp!, {r4, pc} - add ip, r0, #5 - add r2, ip, r1 - add r2, r2, #1 - ldrsb r3, [r2, #-1]! - sub r3, r3, #0x30 - mov r3, r3, lsl #0x18 - mov r3, r3, asr #0x18 - cmp r3, #5 - bne _020EC7D4 - add ip, ip, lr -_020EC7A8: - sub ip, ip, #1 - cmp ip, r2 - bls _020EC7C0 - ldrsb r3, [ip] - cmp r3, #0x30 - beq _020EC7A8 -_020EC7C0: - cmp ip, r2 - ldreqsb r3, [r2, #-1] - andeq r4, r3, #1 - movne r4, #1 - b _020EC7DC -_020EC7D4: - movgt r4, #1 - movle r4, #0 -_020EC7DC: - cmp r1, #0 - beq _020EC838 - mov ip, #0 - mov lr, #1 -_020EC7EC: - ldrsb r3, [r2, #-1]! - sub r3, r3, #0x30 - add r3, r3, r4 - mov r3, r3, lsl #0x18 - mov r3, r3, asr #0x18 - cmp r3, #9 - movgt r4, lr - movle r4, ip - cmp r4, #0 - bne _020EC81C - cmp r3, #0 - bne _020EC824 -_020EC81C: - sub r1, r1, #1 - b _020EC830 -_020EC824: - add r3, r3, #0x30 - strb r3, [r2] - b _020EC838 -_020EC830: - cmp r1, #0 - bne _020EC7EC -_020EC838: - cmp r4, #0 - beq _020EC860 - ldrsh r3, [r0, #2] - mov r2, #1 - mov r1, #0x31 - add r3, r3, #1 - strh r3, [r0, #2] - strb r2, [r0, #4] - strb r1, [r0, #5] - ldmia sp!, {r4, pc} -_020EC860: - cmp r1, #0 - beq _020EC758 - strb r1, [r0, #4] - ldmia sp!, {r4, pc} - arm_func_end round_decimal__wprintf - - arm_func_start float2str__wprintf -float2str__wprintf: ; 0x020EC870 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x22c - mov sl, r0 - add r0, sp, #0x250 - ldr r7, [sp, #0x268] - ldr r3, _020ECE90 ; =0x000001FD - ldrh r6, [r0, #0x12] - cmp r7, r3 - ldrb r5, [sp, #0x25f] - ldrb r4, [sp, #0x25d] - mov r8, r1 - mov sb, r2 - addgt sp, sp, #0x22c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - mov ip, #0 - mov fp, #0x20 - add r0, sp, #0 - add r3, sp, #4 - mov r1, sl - mov r2, r8 - strb ip, [sp] - strh fp, [sp, #2] - bl __num2dec - ldrb r0, [sp, #8] - add r1, sp, #9 - add r0, r1, r0 - b _020EC904 -_020EC8EC: - ldrb r2, [sp, #8] - ldrsh r1, [sp, #6] - sub r2, r2, #1 - add r1, r1, #1 - strb r2, [sp, #8] - strh r1, [sp, #6] -_020EC904: - ldrb r1, [sp, #8] - cmp r1, #1 - bls _020EC91C - ldrsb r1, [r0, #-1]! - cmp r1, #0x30 - beq _020EC8EC -_020EC91C: - ldrb r0, [sp, #9] - cmp r0, #0x30 - beq _020EC93C - cmp r0, #0x49 - beq _020EC948 - cmp r0, #0x4e - beq _020ECA00 - b _020ECAAC -_020EC93C: - mov r0, #0 - strh r0, [sp, #6] - b _020ECAAC -_020EC948: - mov r2, #0 - mov r0, sl - mov r1, r8 - mov r3, r2 - bl _dls - bhs _020EC9A8 - cmp r6, #0x80 - sub r4, sb, #0xa - movhs r0, #0 - bhs _020EC980 - ldr r0, _020ECE94 ; =_0210E73C - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #0x200 -_020EC980: - cmp r0, #0 - beq _020EC998 - ldr r1, _020ECE98 ; =_02111370 - mov r0, r4 - bl wcscpy - b _020EC9EC -_020EC998: - ldr r1, _020ECE9C ; =_0211137C - mov r0, r4 - bl wcscpy - b _020EC9EC -_020EC9A8: - cmp r6, #0x80 - sub r4, sb, #8 - movhs r0, #0 - bhs _020EC9C8 - ldr r0, _020ECE94 ; =_0210E73C - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #0x200 -_020EC9C8: - cmp r0, #0 - beq _020EC9E0 - ldr r1, _020ECEA0 ; =_02111388 - mov r0, r4 - bl wcscpy - b _020EC9EC -_020EC9E0: - ldr r1, _020ECEA4 ; =_02111390 - mov r0, r4 - bl wcscpy -_020EC9EC: - add sp, sp, #0x22c - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020ECA00: - ldrsb r0, [sp, #4] - cmp r0, #0 - beq _020ECA54 - cmp r6, #0x80 - sub r4, sb, #0xa - movhs r0, #0 - bhs _020ECA2C - ldr r0, _020ECE94 ; =_0210E73C - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #0x200 -_020ECA2C: - cmp r0, #0 - beq _020ECA44 - ldr r1, _020ECEA8 ; =_02111398 - mov r0, r4 - bl wcscpy - b _020ECA98 -_020ECA44: - ldr r1, _020ECEAC ; =_021113A4 - mov r0, r4 - bl wcscpy - b _020ECA98 -_020ECA54: - cmp r6, #0x80 - sub r4, sb, #8 - movhs r0, #0 - bhs _020ECA74 - ldr r0, _020ECE94 ; =_0210E73C - mov r1, r6, lsl #1 - ldrh r0, [r0, r1] - and r0, r0, #0x200 -_020ECA74: - cmp r0, #0 - beq _020ECA8C - ldr r1, _020ECEB0 ; =_021113B0 - mov r0, r4 - bl wcscpy - b _020ECA98 -_020ECA8C: - ldr r1, _020ECEB4 ; =_021113B8 - mov r0, r4 - bl wcscpy -_020ECA98: - add sp, sp, #0x22c - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020ECAAC: - ldrb r1, [sp, #8] - ldrsh r2, [sp, #6] - add r0, sp, #0x200 - sub r1, r1, #1 - add r0, r0, #0x2a - add r1, r2, r1 - sub r8, r0, #1 - strh r1, [sp, #6] - mov r0, #0 - strb r0, [r8] - cmp r6, #0x65 - bgt _020ECB08 - bge _020ECB94 - cmp r6, #0x47 - bgt _020ECE54 - cmp r6, #0x45 - blt _020ECE54 - beq _020ECB94 - cmp r6, #0x46 - beq _020ECCE0 - cmp r6, #0x47 - beq _020ECB20 - b _020ECE54 -_020ECB08: - cmp r6, #0x66 - bgt _020ECB18 - beq _020ECCE0 - b _020ECE54 -_020ECB18: - cmp r6, #0x67 - bne _020ECE54 -_020ECB20: - ldrb r0, [sp, #8] - cmp r0, r7 - ble _020ECB38 - add r0, sp, #4 - mov r1, r7 - bl round_decimal__wprintf -_020ECB38: - ldrsh r2, [sp, #6] - mvn r0, #3 - cmp r2, r0 - blt _020ECB50 - cmp r2, r7 - blt _020ECB70 -_020ECB50: - cmp r5, #0 - ldreqb r0, [sp, #8] - subne r7, r7, #1 - subeq r7, r0, #1 - cmp r6, #0x67 - moveq r6, #0x65 - movne r6, #0x45 - b _020ECB94 -_020ECB70: - cmp r5, #0 - addne r0, r2, #1 - subne r7, r7, r0 - bne _020ECCE0 - ldrb r1, [sp, #8] - add r0, r2, #1 - subs r7, r1, r0 - movmi r7, #0 - b _020ECCE0 -_020ECB94: - ldrb r0, [sp, #8] - add r1, r7, #1 - cmp r0, r1 - ble _020ECBAC - add r0, sp, #4 - bl round_decimal__wprintf -_020ECBAC: - ldrsh lr, [sp, #6] - mov fp, #0x2b - mov sl, #0 - cmp lr, #0 - rsblt lr, lr, #0 - movlt fp, #0x2d - ldr r3, _020ECEB8 ; =0x66666667 - mov r0, #0xa - b _020ECC00 -_020ECBD0: - mov r1, lr, lsr #0x1f - smull r2, ip, r3, lr - add ip, r1, ip, asr #2 - smull r1, r2, r0, ip - sub ip, lr, r1 - add r1, ip, #0x30 - strb r1, [r8, #-1]! - mov r2, lr - smull r1, lr, r3, r2 - mov r1, r2, lsr #0x1f - add lr, r1, lr, asr #2 - add sl, sl, #1 -_020ECC00: - cmp lr, #0 - bne _020ECBD0 - cmp sl, #2 - blt _020ECBD0 - add r0, sp, #0x2a - strb fp, [r8, #-1] - strb r6, [r8, #-2]! - sub r1, r0, r8 - ldr r0, _020ECE90 ; =0x000001FD - add r1, r1, r7 - cmp r1, r0 - addgt sp, sp, #0x22c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - ldrb r1, [sp, #8] - add r0, r7, #1 - cmp r1, r0 - bge _020ECC70 - add r0, r7, #2 - sub r0, r0, r1 - subs r1, r0, #1 - beq _020ECC70 - mov r0, #0x30 -_020ECC64: - strb r0, [r8, #-1]! - subs r1, r1, #1 - bne _020ECC64 -_020ECC70: - ldrb r1, [sp, #8] - add r0, sp, #9 - add r2, r0, r1 - subs r1, r1, #1 - beq _020ECC94 -_020ECC84: - ldrsb r0, [r2, #-1]! - subs r1, r1, #1 - strb r0, [r8, #-1]! - bne _020ECC84 -_020ECC94: - cmp r7, #0 - cmpeq r5, #0 - movne r0, #0x2e - strneb r0, [r8, #-1]! - ldrb r0, [sp, #9] - strb r0, [r8, #-1]! - ldrsb r0, [sp, #4] - cmp r0, #0 - movne r0, #0x2d - strneb r0, [r8, #-1]! - bne _020ECE54 - cmp r4, #1 - moveq r0, #0x2b - streqb r0, [r8, #-1]! - beq _020ECE54 - cmp r4, #2 - moveq r0, #0x20 - streqb r0, [r8, #-1]! - b _020ECE54 -_020ECCE0: - ldrsh r3, [sp, #6] - ldrb r2, [sp, #8] - sub r0, r2, r3 - subs r1, r0, #1 - movmi r1, #0 - cmp r1, r7 - ble _020ECD20 - sub r1, r1, r7 - add r0, sp, #4 - sub r1, r2, r1 - bl round_decimal__wprintf - ldrsh r3, [sp, #6] - ldrb r2, [sp, #8] - sub r0, r2, r3 - subs r1, r0, #1 - movmi r1, #0 -_020ECD20: - adds r0, r3, #1 - movmi r0, #0 - ldr r3, _020ECE90 ; =0x000001FD - add r6, r0, r1 - cmp r6, r3 - addgt sp, sp, #0x22c - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - addgt sp, sp, #0x10 - bxgt lr - add r3, sp, #9 - sub r6, r7, r1 - cmp r6, #0 - add r2, r3, r2 - mov sl, #0 - ble _020ECD74 - mov r3, #0x30 -_020ECD64: - add sl, sl, #1 - cmp sl, r6 - strb r3, [r8, #-1]! - blt _020ECD64 -_020ECD74: - mov r6, #0 - b _020ECD88 -_020ECD7C: - ldrsb r3, [r2, #-1]! - add r6, r6, #1 - strb r3, [r8, #-1]! -_020ECD88: - cmp r6, r1 - ldrltb r3, [sp, #8] - cmplt r6, r3 - blt _020ECD7C - cmp r6, r1 - bge _020ECDB4 - mov r3, #0x30 -_020ECDA4: - add r6, r6, #1 - cmp r6, r1 - strb r3, [r8, #-1]! - blt _020ECDA4 -_020ECDB4: - cmp r7, #0 - cmpeq r5, #0 - movne r1, #0x2e - strneb r1, [r8, #-1]! - cmp r0, #0 - beq _020ECE1C - ldrb r1, [sp, #8] - mov r5, #0 - sub r1, r0, r1 - cmp r1, #0 - ble _020ECDFC - mov r3, #0x30 -_020ECDE4: - strb r3, [r8, #-1]! - ldrb r1, [sp, #8] - add r5, r5, #1 - sub r1, r0, r1 - cmp r5, r1 - blt _020ECDE4 -_020ECDFC: - cmp r5, r0 - bge _020ECE24 -_020ECE04: - ldrsb r1, [r2, #-1]! - add r5, r5, #1 - cmp r5, r0 - strb r1, [r8, #-1]! - blt _020ECE04 - b _020ECE24 -_020ECE1C: - mov r0, #0x30 - strb r0, [r8, #-1]! -_020ECE24: - ldrsb r0, [sp, #4] - cmp r0, #0 - movne r0, #0x2d - strneb r0, [r8, #-1]! - bne _020ECE54 - cmp r4, #1 - moveq r0, #0x2b - streqb r0, [r8, #-1]! - beq _020ECE54 - cmp r4, #2 - moveq r0, #0x20 - streqb r0, [r8, #-1]! -_020ECE54: - mov r0, r8 - bl strlen - sub r1, sb, r0, lsl #1 - mov r0, r8 - sub r4, r1, #2 - bl strlen - mov r2, r0 - mov r0, r4 - mov r1, r8 - bl mbstowcs - mov r0, r4 - add sp, sp, #0x22c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020ECE90: .word 0x000001FD -_020ECE94: .word _0210E73C -_020ECE98: .word _02111370 -_020ECE9C: .word _0211137C -_020ECEA0: .word _02111388 -_020ECEA4: .word _02111390 -_020ECEA8: .word _02111398 -_020ECEAC: .word _021113A4 -_020ECEB0: .word _021113B0 -_020ECEB4: .word _021113B8 -_020ECEB8: .word 0x66666667 - arm_func_end float2str__wprintf - - arm_func_start __wpformatter -__wpformatter: ; 0x020ECEBC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x430 - mov r3, #0x20 - mov fp, r2 - strh r3, [sp, #0x1c] - ldrh r2, [fp] - mov sb, r0 - mov r8, r1 - cmp r2, #0 - mov r4, #0 - beq _020ED78C -_020ECEEC: - mov r0, fp - mov r1, #0x25 - bl wcschr - str r0, [sp, #0xc] - cmp r0, #0 - bne _020ECF40 - mov r0, fp - bl wcslen - movs r2, r0 - add r4, r4, r2 - beq _020ED78C - mov r0, r8 - mov r1, fp - blx sb - cmp r0, #0 - bne _020ED78C - add sp, sp, #0x430 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020ECF40: - sub r0, r0, fp - add r0, r0, r0, lsr #31 - movs r2, r0, asr #1 - add r4, r4, r2 - beq _020ECF78 - mov r0, r8 - mov r1, fp - blx sb - cmp r0, #0 - addeq sp, sp, #0x430 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr -_020ECF78: - add r1, sp, #0x400 - ldr r0, [sp, #0xc] - add r1, r1, #0x64 - add r2, sp, #0x20 - bl parse_format__wprintf - ldrh r1, [sp, #0x26] - mov fp, r0 - cmp r1, #0x61 - bgt _020ECFE8 - bge _020ED354 - cmp r1, #0x47 - bgt _020ECFDC - subs r0, r1, #0x41 - addpl pc, pc, r0, lsl #2 - b _020ECFD0 -_020ECFB4: ; jump table - b _020ED354 ; case 0 - b _020ED5F8 ; case 1 - b _020ED5F8 ; case 2 - b _020ED5F8 ; case 3 - b _020ED2E4 ; case 4 - b _020ED2E4 ; case 5 - b _020ED2E4 ; case 6 -_020ECFD0: - cmp r1, #0x25 - beq _020ED5E4 - b _020ED5F8 -_020ECFDC: - cmp r1, #0x58 - beq _020ED1A8 - b _020ED5F8 -_020ECFE8: - cmp r1, #0x75 - bgt _020ED050 - subs r0, r1, #0x64 - addpl pc, pc, r0, lsl #2 - b _020ED044 -_020ECFFC: ; jump table - b _020ED06C ; case 0 - b _020ED2E4 ; case 1 - b _020ED2E4 ; case 2 - b _020ED2E4 ; case 3 - b _020ED5F8 ; case 4 - b _020ED06C ; case 5 - b _020ED5F8 ; case 6 - b _020ED5F8 ; case 7 - b _020ED5F8 ; case 8 - b _020ED5F8 ; case 9 - b _020ED500 ; case 10 - b _020ED1A8 ; case 11 - b _020ED5F8 ; case 12 - b _020ED5F8 ; case 13 - b _020ED5F8 ; case 14 - b _020ED3C4 ; case 15 - b _020ED5F8 ; case 16 - b _020ED1A8 ; case 17 -_020ED044: - cmp r1, #0x63 - beq _020ED58C - b _020ED5F8 -_020ED050: - cmp r1, #0x78 - bgt _020ED060 - beq _020ED1A8 - b _020ED5F8 -_020ED060: - ldr r0, _020ED7A0 ; =0x0000FFFF - cmp r1, r0 - b _020ED5F8 -_020ED06C: - ldrb r0, [sp, #0x24] - cmp r0, #3 - bne _020ED08C - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] - b _020ED124 -_020ED08C: - cmp r0, #4 - bne _020ED0B4 - ldr r1, [sp, #0x464] - add r2, r1, #8 - str r2, [sp, #0x464] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020ED124 -_020ED0B4: - cmp r0, #6 - bne _020ED0DC - ldr r1, [sp, #0x464] - add r2, r1, #8 - str r2, [sp, #0x464] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020ED124 -_020ED0DC: - cmp r0, #7 - bne _020ED0F8 - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] - b _020ED124 -_020ED0F8: - cmp r0, #8 - bne _020ED114 - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] - b _020ED124 -_020ED114: - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] -_020ED124: - cmp r0, #2 - moveq r1, sl, lsl #0x10 - moveq sl, r1, asr #0x10 - cmp r0, #4 - cmpne r0, #6 - add r0, sp, #0x20 - bne _020ED16C - sub r5, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - ldr r3, [r5] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - add r2, sp, #0x430 - bl longlong2str__wprintf - movs r6, r0 - beq _020ED5F8 - b _020ED190 -_020ED16C: - sub r5, sp, #8 - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - add r1, sp, #0x430 - mov r0, sl - ldmia r5, {r2, r3} - bl long2str__wprintf - movs r6, r0 - beq _020ED5F8 -_020ED190: - add r0, sp, #0x400 - add r0, r0, #0x2e - sub r0, r0, r6 - add r0, r0, r0, lsr #31 - mov r7, r0, asr #1 - b _020ED644 -_020ED1A8: - ldrb r0, [sp, #0x24] - cmp r0, #3 - bne _020ED1C8 - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] - b _020ED260 -_020ED1C8: - cmp r0, #4 - bne _020ED1F0 - ldr r1, [sp, #0x464] - add r2, r1, #8 - str r2, [sp, #0x464] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020ED260 -_020ED1F0: - cmp r0, #6 - bne _020ED218 - ldr r1, [sp, #0x464] - add r2, r1, #8 - str r2, [sp, #0x464] - ldr r1, [r2, #-8] - str r1, [sp, #0x10] - ldr r1, [r2, #-4] - str r1, [sp, #0x14] - b _020ED260 -_020ED218: - cmp r0, #7 - bne _020ED234 - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] - b _020ED260 -_020ED234: - cmp r0, #8 - bne _020ED250 - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] - b _020ED260 -_020ED250: - ldr r1, [sp, #0x464] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr sl, [r1, #-4] -_020ED260: - cmp r0, #2 - moveq r1, sl, lsl #0x10 - moveq sl, r1, lsr #0x10 - cmp r0, #4 - cmpne r0, #6 - add r0, sp, #0x20 - bne _020ED2A8 - sub r5, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - ldr r3, [r5] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - add r2, sp, #0x430 - bl longlong2str__wprintf - movs r6, r0 - beq _020ED5F8 - b _020ED2CC -_020ED2A8: - sub r5, sp, #8 - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - add r1, sp, #0x430 - mov r0, sl - ldmia r5, {r2, r3} - bl long2str__wprintf - movs r6, r0 - beq _020ED5F8 -_020ED2CC: - add r0, sp, #0x400 - add r0, r0, #0x2e - sub r0, r0, r6 - add r0, r0, r0, lsr #31 - mov r7, r0, asr #1 - b _020ED644 -_020ED2E4: - ldrb r0, [sp, #0x24] - cmp r0, #9 - ldrne r0, [sp, #0x464] - addne r0, r0, #8 - strne r0, [sp, #0x464] - bne _020ED308 - ldr r0, [sp, #0x464] - add r0, r0, #8 - str r0, [sp, #0x464] -_020ED308: - ldr r7, [r0, #-8] - ldr r6, [r0, #-4] - add r0, sp, #0x20 - sub r5, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - ldr r3, [r5] - mov r0, r7 - mov r1, r6 - add r2, sp, #0x430 - bl float2str__wprintf - movs r6, r0 - beq _020ED5F8 - add r0, sp, #0x400 - add r0, r0, #0x2e - sub r0, r0, r6 - add r0, r0, r0, lsr #31 - mov r7, r0, asr #1 - b _020ED644 -_020ED354: - ldrb r0, [sp, #0x24] - cmp r0, #9 - ldrne r0, [sp, #0x464] - addne r0, r0, #8 - strne r0, [sp, #0x464] - bne _020ED378 - ldr r0, [sp, #0x464] - add r0, r0, #8 - str r0, [sp, #0x464] -_020ED378: - ldr r7, [r0, #-8] - ldr r6, [r0, #-4] - add r0, sp, #0x20 - sub r5, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - ldr r3, [r5] - mov r0, r7 - mov r1, r6 - add r2, sp, #0x430 - bl double2hex__wprintf - movs r6, r0 - beq _020ED5F8 - add r0, sp, #0x400 - add r0, r0, #0x2e - sub r0, r0, r6 - add r0, r0, r0, lsr #31 - mov r7, r0, asr #1 - b _020ED644 -_020ED3C4: - ldrb r0, [sp, #0x24] - cmp r0, #5 - bne _020ED460 - ldr r0, [sp, #0x464] - add r0, r0, #4 - str r0, [sp, #0x464] - ldr r6, [r0, #-4] - ldrb r0, [sp, #0x23] - cmp r6, #0 - ldreq r6, _020ED7A4 ; =_021113C0 - cmp r0, #0 - beq _020ED418 - ldrh r1, [r6], #2 - ldrb r0, [sp, #0x22] - and r7, r1, #0xff - cmp r0, #0 - beq _020ED644 - ldr r0, [sp, #0x2c] - cmp r7, r0 - movgt r7, r0 - b _020ED644 -_020ED418: - ldrb r0, [sp, #0x22] - cmp r0, #0 - beq _020ED450 - ldr r7, [sp, #0x2c] - mov r0, r6 - mov r2, r7 - mov r1, #0 - bl wmemchr - cmp r0, #0 - beq _020ED644 - sub r0, r0, r6 - add r0, r0, r0, lsr #31 - mov r7, r0, asr #1 - b _020ED644 -_020ED450: - mov r0, r6 - bl wcslen - mov r7, r0 - b _020ED644 -_020ED460: - ldr r0, [sp, #0x464] - add r0, r0, #4 - str r0, [sp, #0x464] - ldr r5, [r0, #-4] - ldrb r0, [sp, #0x23] - cmp r5, #0 - ldreq r5, _020ED7A8 ; =_021113C4 - cmp r0, #0 - beq _020ED4A8 - ldrh r1, [r6] - ldrb r0, [sp, #0x22] - and r6, r1, #0xff - cmp r0, #0 - beq _020ED4E0 - ldr r0, [sp, #0x2c] - cmp r6, r0 - movgt r6, r0 - b _020ED4E0 -_020ED4A8: - ldrb r0, [sp, #0x22] - cmp r0, #0 - beq _020ED4D4 - ldr r6, [sp, #0x2c] - mov r0, r5 - mov r2, r6 - mov r1, #0 - bl memchr - cmp r0, #0 - subne r6, r0, r5 - b _020ED4E0 -_020ED4D4: - mov r0, r5 - bl strlen - mov r6, r0 -_020ED4E0: - add r0, sp, #0x30 - mov r1, r5 - mov r2, r6 - bl mbstowcs - movs r7, r0 - bmi _020ED5F8 - add r6, sp, #0x30 - b _020ED644 -_020ED500: - ldr r1, [sp, #0x464] - ldrb r0, [sp, #0x24] - add r1, r1, #4 - str r1, [sp, #0x464] - ldr r6, [r1, #-4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _020ED780 -_020ED520: ; jump table - b _020ED544 ; case 0 - b _020ED780 ; case 1 - b _020ED54C ; case 2 - b _020ED554 ; case 3 - b _020ED57C ; case 4 - b _020ED780 ; case 5 - b _020ED55C ; case 6 - b _020ED56C ; case 7 - b _020ED574 ; case 8 -_020ED544: - str r4, [r6] - b _020ED780 -_020ED54C: - strh r4, [r6] - b _020ED780 -_020ED554: - str r4, [r6] - b _020ED780 -_020ED55C: - str r4, [r6] - mov r0, r4, asr #0x1f - str r0, [r6, #4] - b _020ED780 -_020ED56C: - str r4, [r6] - b _020ED780 -_020ED574: - str r4, [r6] - b _020ED780 -_020ED57C: - str r4, [r6] - mov r0, r4, asr #0x1f - str r0, [r6, #4] - b _020ED780 -_020ED58C: - ldrb r0, [sp, #0x24] - add r6, sp, #0x30 - cmp r0, #5 - bne _020ED5B8 - ldr r0, [sp, #0x464] - mov r7, #1 - add r0, r0, #4 - str r0, [sp, #0x464] - ldr r0, [r0, #-4] - strh r0, [r6] - b _020ED644 -_020ED5B8: - ldr r0, [sp, #0x464] - add r1, sp, #0x18 - add r0, r0, #4 - str r0, [sp, #0x464] - ldr r3, [r0, #-4] - mov r0, r6 - mov r2, #1 - strb r3, [sp, #0x18] - bl mbtowc - mov r7, r0 - b _020ED644 -_020ED5E4: - mov r0, #0x25 - strh r0, [sp, #0x30] - add r6, sp, #0x30 - mov r7, #1 - b _020ED644 -_020ED5F8: - ldr r0, [sp, #0xc] - bl wcslen - movs r5, r0 - beq _020ED630 - ldr r1, [sp, #0xc] - mov r0, r8 - mov r2, r5 - blx sb - cmp r0, #0 - addeq sp, sp, #0x430 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr -_020ED630: - add sp, sp, #0x430 - add r0, r4, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020ED644: - ldrb r0, [sp, #0x20] - mov r5, r7 - cmp r0, #0 - beq _020ED6F4 - cmp r0, #2 - moveq r1, #0x30 - movne r1, #0x20 - strh r1, [sp, #0x1c] - ldrh r0, [r6] - cmp r0, #0x2b - cmpne r0, #0x2d - cmpne r0, #0x20 - bne _020ED6B0 - cmp r1, #0x30 - bne _020ED6B0 - mov r0, r8 - mov r1, r6 - mov r2, #1 - blx sb - cmp r0, #0 - addeq sp, sp, #0x430 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - add r6, r6, #2 - sub r7, r7, #1 -_020ED6B0: - ldr r0, [sp, #0x28] - cmp r5, r0 - bge _020ED6F4 -_020ED6BC: - mov r0, r8 - add r1, sp, #0x1c - mov r2, #1 - blx sb - cmp r0, #0 - addeq sp, sp, #0x430 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x28] - add r5, r5, #1 - cmp r5, r0 - blt _020ED6BC -_020ED6F4: - cmp r7, #0 - beq _020ED724 - mov r0, r8 - mov r1, r6 - mov r2, r7 - blx sb - cmp r0, #0 - addeq sp, sp, #0x430 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr -_020ED724: - ldrb r0, [sp, #0x20] - cmp r0, #0 - bne _020ED77C - ldr r0, [sp, #0x28] - cmp r5, r0 - bge _020ED77C - mov r7, #0x20 -_020ED740: - mov r0, r8 - add r1, sp, #0x1a - mov r2, #1 - strh r7, [sp, #0x1a] - blx sb - cmp r0, #0 - addeq sp, sp, #0x430 - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x28] - add r5, r5, #1 - cmp r5, r0 - blt _020ED740 -_020ED77C: - add r4, r4, r5 -_020ED780: - ldrh r0, [fp] - cmp r0, #0 - bne _020ECEEC -_020ED78C: - mov r0, r4 - add sp, sp, #0x430 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020ED7A0: .word 0x0000FFFF -_020ED7A4: .word _021113C0 -_020ED7A8: .word _021113C4 - arm_func_end __wpformatter - - arm_func_start __wStringWrite -__wStringWrite: ; 0x020ED7AC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r3, [r4, #8] - mov r5, r2 - ldr r2, [r4, #4] - add r0, r3, r5 - cmp r0, r2 - ldr r0, [r4] - subhi r5, r2, r3 - mov r2, r5 - add r0, r0, r3, lsl #1 - bl wmemcpy - ldr r1, [r4, #8] - add r1, r1, r5 - str r1, [r4, #8] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __wStringWrite - - arm_func_start swprintf -swprintf: ; 0x020ED7EC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r3, sp, #0x10 - bic r3, r3, #3 - ldr r2, [sp, #0x10] - add r3, r3, #4 - bl vswprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end swprintf - - arm_func_start vswprintf -vswprintf: ; 0x020ED814 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - mov r4, r1 - mov ip, #0 - ldr r0, _020ED880 ; =__wStringWrite - add r1, sp, #0 - str r5, [sp] - str r4, [sp, #4] - str ip, [sp, #8] - bl __wpformatter - cmp r0, #0 - addlt sp, sp, #0xc - ldmltia sp!, {r4, r5, pc} - cmp r0, r4 - bhs _020ED868 - mov r1, r0, lsl #1 - mov r2, #0 - add sp, sp, #0xc - strh r2, [r5, r1] - ldmia sp!, {r4, r5, pc} -_020ED868: - mov r1, #0 - add r0, r5, r4, lsl #1 - strh r1, [r0, #-2] - sub r0, r1, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020ED880: .word __wStringWrite - arm_func_end vswprintf - - arm_func_start wcslen -wcslen: ; 0x020ED884 - mvn r2, #0 -_020ED888: - ldrh r1, [r0], #2 - add r2, r2, #1 - cmp r1, #0 - bne _020ED888 - mov r0, r2 - bx lr - arm_func_end wcslen - - arm_func_start wcscpy -wcscpy: ; 0x020ED8A0 - mov r3, r0 -_020ED8A4: - ldrh r2, [r1], #2 - mov ip, r3 - strh r2, [r3], #2 - ldrh r2, [ip] - cmp r2, #0 - bne _020ED8A4 - bx lr - arm_func_end wcscpy - - arm_func_start wcschr -wcschr: ; 0x020ED8C0 - ldrh r2, [r0], #2 - cmp r2, #0 - beq _020ED8E4 -_020ED8CC: - cmp r2, r1 - subeq r0, r0, #2 - bxeq lr - ldrh r2, [r0], #2 - cmp r2, #0 - bne _020ED8CC -_020ED8E4: - cmp r1, #0 - movne r0, #0 - subeq r0, r0, #2 - bx lr - arm_func_end wcschr - - arm_func_start __ieee754_pow -__ieee754_pow: ; 0x020ED8F4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x80 - ldr r8, [sp, #0xb4] - ldr r6, [sp, #0xac] - ldr r0, [sp, #0xb0] - bic sb, r8, #0x80000000 - orrs r1, sb, r0 - ldr r7, [sp, #0xa8] - bic r4, r6, #0x80000000 - addeq sp, sp, #0x80 - moveq r0, #0 - ldreq r1, _020EDEA0 ; =0x3FF00000 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r1, _020EDEA4 ; =0x7FF00000 - cmp r4, r1 - bgt _020ED964 - bne _020ED94C - cmp r7, #0 - bne _020ED964 -_020ED94C: - ldr r1, _020EDEA4 ; =0x7FF00000 - cmp sb, r1 - bgt _020ED964 - bne _020ED988 - cmp r0, #0 - beq _020ED988 -_020ED964: - ldr r0, [sp, #0xa8] - ldr r1, [sp, #0xac] - ldr r2, [sp, #0xb0] - ldr r3, [sp, #0xb4] - bl _dadd - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020ED988: - cmp r6, #0 - mov r5, #0 - bge _020ED9F0 - ldr r1, _020EDEA8 ; =0x43400000 - cmp sb, r1 - movge r5, #2 - bge _020ED9F0 - sub r1, r1, #0x3500000 - cmp sb, r1 - blt _020ED9F0 - ldr r1, _020EDEAC ; =0xFFFFFC01 - add r1, r1, sb, asr #20 - cmp r1, #0x14 - ble _020ED9D8 - rsb r2, r1, #0x34 - mov r1, r0, lsr r2 - cmp r0, r1, lsl r2 - andeq r1, r1, #1 - rsbeq r5, r1, #2 - b _020ED9F0 -_020ED9D8: - cmp r0, #0 - rsbeq r2, r1, #0x14 - moveq r1, sb, asr r2 - cmpeq sb, r1, lsl r2 - andeq r1, r1, #1 - rsbeq r5, r1, #2 -_020ED9F0: - cmp r0, #0 - bne _020EDB4C - ldr r1, _020EDEA4 ; =0x7FF00000 - cmp sb, r1 - bne _020EDAA4 - add r0, r4, #0x100000 - add r0, r0, #0xc0000000 - orrs r0, r0, r7 - bne _020EDA38 - ldr r0, [sp, #0xb0] - ldr r1, [sp, #0xb4] - mov r2, r0 - mov r3, r1 - bl _dsub - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDA38: - sub r0, r1, #0x40000000 - cmp r4, r0 - blt _020EDA68 - cmp r8, #0 - ldrge r0, [sp, #0xb0] - ldrge r1, [sp, #0xb4] - movlt r0, #0 - add sp, sp, #0x80 - movlt r1, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDA68: - cmp r8, #0 - mov r0, #0 - addge sp, sp, #0x80 - movge r1, r0 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addge sp, sp, #0x10 - bxge lr - ldr r2, [sp, #0xb0] - ldr r3, [sp, #0xb4] - mov r1, r0 - bl _dsub - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDAA4: - sub r0, r1, #0x40000000 - cmp sb, r0 - bne _020EDAF0 - cmp r8, #0 - ldrge r0, [sp, #0xa8] - ldrge r1, [sp, #0xac] - addge sp, sp, #0x80 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addge sp, sp, #0x10 - bxge lr - ldr r2, [sp, #0xa8] - ldr r3, [sp, #0xac] - sub r1, r1, #0x40000000 - mov r0, #0 - bl _ddiv - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDAF0: - cmp r8, #0x40000000 - bne _020EDB1C - ldr r0, [sp, #0xa8] - ldr r1, [sp, #0xac] - mov r2, r0 - mov r3, r1 - bl _dmul - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDB1C: - ldr r0, _020EDEB0 ; =0x3FE00000 - cmp r8, r0 - bne _020EDB4C - cmp r6, #0 - blt _020EDB4C - ldr r0, [sp, #0xa8] - ldr r1, [sp, #0xac] - bl _dsqrt - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDB4C: - ldr r0, [sp, #0xa8] - ldr r1, [sp, #0xac] - bl fabs - str r0, [sp, #0x70] - str r1, [sp, #0x74] - cmp r7, #0 - bne _020EDC50 - ldr r0, _020EDEA4 ; =0x7FF00000 - cmp r4, r0 - cmpne r4, #0 - subne r0, r0, #0x40000000 - cmpne r4, r0 - bne _020EDC50 - ldr r2, [sp, #0x70] - ldr r3, [sp, #0x74] - str r2, [sp, #0x78] - str r3, [sp, #0x7c] - cmp r8, #0 - bge _020EDBAC - ldr r1, _020EDEA0 ; =0x3FF00000 - mov r0, #0 - bl _ddiv - str r0, [sp, #0x78] - str r1, [sp, #0x7c] -_020EDBAC: - cmp r6, #0 - bge _020EDC38 - add r0, r4, #0x100000 - add r0, r0, #0xc0000000 - orrs r0, r0, r5 - bne _020EDC14 - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - mov r2, r0 - mov r3, r1 - bl _dsub - mov r4, r0 - mov r5, r1 - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - mov r2, r0 - mov r3, r1 - bl _dsub - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, r5 - bl _ddiv - str r0, [sp, #0x78] - str r1, [sp, #0x7c] - b _020EDC38 -_020EDC14: - cmp r5, #1 - bne _020EDC38 - mov r0, #0 - ldr r2, [sp, #0x78] - ldr r3, [sp, #0x7c] - mov r1, r0 - bl _dsub - str r0, [sp, #0x78] - str r1, [sp, #0x7c] -_020EDC38: - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDC50: - mov r0, r6, asr #0x1f - add r7, r0, #1 - orrs r0, r7, r5 - bne _020EDC88 - ldr r0, _020EDEB4 ; =_021110EC - ldr r1, _020EDEB8 ; =_021E58C0 - ldr r0, [r0] - mov r2, #0x21 - str r2, [r1] - bl _f2d - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDC88: - ldr r3, _020EDEBC ; =0x41E00000 - cmp sb, r3 - ble _020EDF8C - add r0, r3, #0x2100000 - cmp sb, r0 - ble _020EDCF8 - ldr r1, _020EDEC0 ; =0x3FEFFFFF - cmp r4, r1 - bgt _020EDCCC - cmp r8, #0 - mov r0, #0 - addlt r1, r1, #0x40000001 - add sp, sp, #0x80 - movge r1, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDCCC: - add r0, r1, #1 - cmp r4, r0 - blt _020EDCF8 - cmp r8, #0 - mov r0, #0 - addgt r1, r1, #0x40000001 - add sp, sp, #0x80 - movle r1, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDCF8: - ldr r2, _020EDEC0 ; =0x3FEFFFFF - cmp r4, r2 - bge _020EDD24 - cmp r8, #0 - mov r0, #0 - addlt r1, r2, #0x40000001 - add sp, sp, #0x80 - movge r1, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDD24: - add r0, r2, #1 - cmp r4, r0 - ble _020EDD50 - cmp r8, #0 - mov r0, #0 - addgt r1, r2, #0x40000001 - add sp, sp, #0x80 - movle r1, r0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EDD50: - ldr r0, [sp, #0xa8] - ldr r1, [sp, #0xac] - add r3, r2, #1 - mov r2, #0 - bl _dsub - mov r2, r0 - mov r3, r1 - str r0, [sp, #0x50] - str r1, [sp, #0x54] - bl _dmul - mov r6, r1 - mov r4, r0 - ldr r2, [sp, #0x50] - ldr r3, [sp, #0x54] - ldr r1, _020EDEC4 ; =0x3FD00000 - mov r0, #0 - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDEC8 ; =0x55555555 - sub r1, r0, #0x15800000 - bl _dsub - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, #0 - ldr r1, _020EDEB0 ; =0x3FE00000 - bl _dsub - mov r2, r0 - mov r0, r4 - mov r3, r1 - mov r1, r6 - bl _dmul - mov r6, r0 - mov r8, r1 - mov r0, #0x60000000 - ldr r1, _020EDECC ; =0x3FF71547 - ldr r2, [sp, #0x50] - ldr r3, [sp, #0x54] - bl _dmul - mov r4, r0 - mov sb, r1 - ldr r0, _020EDED0 ; =0xF85DDF44 - ldr r1, _020EDED4 ; =0x3E54AE0B - ldr r2, [sp, #0x50] - ldr r3, [sp, #0x54] - bl _dmul - mov fp, r0 - mov sl, r1 - ldr r0, _020EDED8 ; =0x652B82FE - ldr r1, _020EDECC ; =0x3FF71547 - mov r2, r6 - mov r3, r8 - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, fp - mov r1, sl - bl _dsub - mov r6, r0 - mov r8, r1 - mov r0, r4 - mov r1, sb - mov r2, r6 - mov r3, r8 - bl _dadd - mov r2, r4 - mov r3, sb - str r1, [sp, #0x5c] - mov r0, #0 - str r0, [sp, #0x58] - bl _dsub - mov r2, r0 - mov r0, r6 - mov r3, r1 - mov r1, r8 - bl _dsub - mov r4, r0 - mov r8, r1 - b _020EE4E8 - .align 2, 0 -_020EDEA0: .word 0x3FF00000 -_020EDEA4: .word 0x7FF00000 -_020EDEA8: .word 0x43400000 -_020EDEAC: .word 0xFFFFFC01 -_020EDEB0: .word 0x3FE00000 -_020EDEB4: .word _021110EC -_020EDEB8: .word _021E58C0 -_020EDEBC: .word 0x41E00000 -_020EDEC0: .word 0x3FEFFFFF -_020EDEC4: .word 0x3FD00000 -_020EDEC8: .word 0x55555555 -_020EDECC: .word 0x3FF71547 -_020EDED0: .word 0xF85DDF44 -_020EDED4: .word 0x3E54AE0B -_020EDED8: .word 0x652B82FE -_020EDEDC: .word 0x0003988E -_020EDEE0: .word 0x000BB67A -_020EDEE4: .word _0210E94C -_020EDEE8: .word 0x4A454EEF -_020EDEEC: .word 0x3FCA7E28 -_020EDEF0: .word 0x93C9DB65 -_020EDEF4: .word 0x3FCD864A -_020EDEF8: .word 0xA91D4101 -_020EDEFC: .word 0x3FD17460 -_020EDF00: .word 0x518F264D -_020EDF04: .word 0x3FD55555 -_020EDF08: .word 0xDB6FABFF -_020EDF0C: .word 0x3FDB6DB6 -_020EDF10: .word 0x33333303 -_020EDF14: .word 0x3FE33333 -_020EDF18: .word 0x40080000 -_020EDF1C: .word 0x3FEEC709 -_020EDF20: .word 0x145B01F5 -_020EDF24: .word 0xBE3E2FE0 -_020EDF28: .word 0xDC3A03FD -_020EDF2C: .word _0210E95C -_020EDF30: .word _0210E93C -_020EDF34: .word 0x40900000 -_020EDF38: .word 0x8800759C -_020EDF3C: .word 0x7E37E43C -_020EDF40: .word 0x3C971547 -_020EDF44: .word 0x3F6F3400 -_020EDF48: .word 0xC2F8F359 -_020EDF4C: .word 0x01A56E1F -_020EDF50: .word 0x3FE62E43 -_020EDF54: .word 0xFEFA39EF -_020EDF58: .word 0x3FE62E42 -_020EDF5C: .word 0x0CA86C39 -_020EDF60: .word 0xBE205C61 -_020EDF64: .word 0x72BEA4D0 -_020EDF68: .word 0x3E663769 -_020EDF6C: .word 0xC5D26BF1 -_020EDF70: .word 0xBEBBBD41 -_020EDF74: .word 0xAF25DE2C -_020EDF78: .word 0x3F11566A -_020EDF7C: .word 0x16BEBD93 -_020EDF80: .word 0xBF66C16C -_020EDF84: .word 0x5555553E -_020EDF88: .word 0x3FC55555 -_020EDF8C: - cmp r4, #0x100000 - mov r6, #0 - bge _020EDFBC - ldr r0, [sp, #0x70] - ldr r1, [sp, #0x74] - mov r2, r6 - add r3, r3, #0x1600000 - bl _dmul - mov r4, r1 - str r0, [sp, #0x70] - str r4, [sp, #0x74] - sub r6, r6, #0x35 -_020EDFBC: - ldr r0, _020EDEAC ; =0xFFFFFC01 - ldr r1, _020EDEDC ; =0x0003988E - and r2, r4, r0, lsr #12 - add r0, r0, r4, asr #20 - orr sb, r2, #0xff00000 - cmp r2, r1 - add r6, r6, r0 - orr sb, sb, #0x30000000 - movle r8, #0 - ble _020EDFFC - ldr r0, _020EDEE0 ; =0x000BB67A - cmp r2, r0 - movlt r8, #1 - addge r6, r6, #1 - subge sb, sb, #0x100000 - movge r8, #0 -_020EDFFC: - ldr r2, _020EDEE4 ; =_0210E94C - ldr r0, [sp, #0x70] - add r1, r2, r8, lsl #3 - ldr r3, [r1, #4] - ldr r2, [r2, r8, lsl #3] - mov r1, sb - str sb, [sp, #0x74] - bl _dsub - ldr r2, _020EDEE4 ; =_0210E94C - mov sl, r0 - add r3, r2, r8, lsl #3 - mov r4, r1 - ldr r0, [sp, #0x70] - ldr r2, [r2, r8, lsl #3] - ldr r3, [r3, #4] - mov r1, sb - bl _dadd - mov r3, r1 - mov r2, r0 - ldr r1, _020EDEA0 ; =0x3FF00000 - mov r0, #0 - bl _ddiv - str r1, [sp, #0x24] - mov fp, r0 - ldr r3, [sp, #0x24] - mov r0, sl - mov r1, r4 - mov r2, fp - bl _dmul - mov r2, sb, asr #1 - orr r2, r2, #0x20000000 - mov sb, r1 - add r2, r2, #0x80000 - add r1, r2, r8, lsl #18 - ldr r2, _020EDEE4 ; =_0210E94C - str r0, [sp, #0x28] - add r3, r2, r8, lsl #3 - mov r0, #0 - ldr r2, [r2, r8, lsl #3] - ldr r3, [r3, #4] - str sb, [sp, #0x4c] - str r1, [sp, #0x44] - str r0, [sp, #0x48] - str r0, [sp, #0x40] - bl _dsub - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x70] - ldr r1, [sp, #0x74] - bl _dsub - str r0, [sp, #0x2c] - str r1, [sp, #0x1c] - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x40] - ldr r3, [sp, #0x44] - mov r1, sb - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, sl - mov r1, r4 - bl _dsub - mov sl, r0 - mov r4, r1 - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x1c] - ldr r0, [sp, #0x48] - mov r1, sb - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, sl - mov r1, r4 - bl _dsub - mov r3, r1 - mov r2, r0 - ldr r1, [sp, #0x24] - mov r0, fp - bl _dmul - str r0, [sp, #0x30] - ldr r0, [sp, #0x28] - str r1, [sp, #0x14] - mov r1, sb - mov r2, r0 - mov r3, sb - bl _dmul - mov r4, r0 - mov sl, r1 - mov r2, r4 - mov r3, sl - bl _dmul - str r0, [sp, #0x34] - mov fp, r1 - ldr r0, _020EDEE8 ; =0x4A454EEF - ldr r1, _020EDEEC ; =0x3FCA7E28 - mov r2, r4 - mov r3, sl - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDEF0 ; =0x93C9DB65 - ldr r1, _020EDEF4 ; =0x3FCD864A - bl _dadd - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDEF8 ; =0xA91D4101 - ldr r1, _020EDEFC ; =0x3FD17460 - bl _dadd - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF00 ; =0x518F264D - ldr r1, _020EDF04 ; =0x3FD55555 - bl _dadd - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF08 ; =0xDB6FABFF - ldr r1, _020EDF0C ; =0x3FDB6DB6 - bl _dadd - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF10 ; =0x33333303 - ldr r1, _020EDF14 ; =0x3FE33333 - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x34] - mov r1, fp - bl _dmul - mov r4, r0 - mov sl, r1 - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x28] - mov r1, sb - mov r3, sb - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x30] - ldr r1, [sp, #0x14] - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dadd - mov r4, r0 - ldr r0, [sp, #0x48] - mov sl, r1 - mov r1, sb - mov r2, r0 - mov r3, r1 - bl _dmul - str r1, [sp, #0xc] - mov fp, r0 - ldr r1, _020EDF18 ; =0x40080000 - ldr r3, [sp, #0xc] - mov r0, #0 - mov r2, fp - bl _dadd - mov r2, r4 - mov r3, sl - bl _dadd - mov r0, #0 - ldr r3, _020EDF18 ; =0x40080000 - mov r2, r0 - str r1, [sp, #0x44] - str r0, [sp, #0x40] - bl _dsub - ldr r3, [sp, #0xc] - mov r2, fp - bl _dsub - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dsub - str r0, [sp, #0x38] - str r1, [sp, #4] - ldr r0, [sp, #0x48] - ldr r2, [sp, #0x40] - ldr r3, [sp, #0x44] - mov r1, sb - bl _dmul - mov r4, r0 - mov sl, r1 - ldr r0, [sp, #0x30] - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x40] - ldr r3, [sp, #0x44] - bl _dmul - str r0, [sp, #0x3c] - mov fp, r1 - ldr r0, [sp, #0x38] - ldr r1, [sp, #4] - ldr r2, [sp, #0x28] - mov r3, sb - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x3c] - mov r1, fp - bl _dadd - mov sb, r0 - mov fp, r1 - mov r0, r4 - mov r1, sl - mov r2, sb - mov r3, fp - bl _dadd - mov r0, #0 - mov r2, r4 - mov r3, sl - str r1, [sp, #0x6c] - str r0, [sp, #0x68] - bl _dsub - mov r2, r0 - mov r3, r1 - mov r0, sb - mov r1, fp - bl _dsub - mov sl, r1 - mov fp, r0 - ldr r1, _020EDF1C ; =0x3FEEC709 - ldr r2, [sp, #0x68] - ldr r3, [sp, #0x6c] - mov r0, #0xe0000000 - bl _dmul - mov r4, r0 - mov sb, r1 - ldr r0, _020EDF20 ; =0x145B01F5 - ldr r1, _020EDF24 ; =0xBE3E2FE0 - ldr r2, [sp, #0x68] - ldr r3, [sp, #0x6c] - bl _dmul - mov r2, fp - mov r3, sl - mov fp, r0 - mov sl, r1 - ldr r0, _020EDF28 ; =0xDC3A03FD - ldr r1, _020EDF1C ; =0x3FEEC709 - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, fp - mov r1, sl - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF2C ; =_0210E95C - add r1, r0, r8, lsl #3 - ldr r0, [r0, r8, lsl #3] - ldr r1, [r1, #4] - bl _dadd - mov fp, r0 - mov sl, r1 - mov r0, r6 - bl _dflt - str r0, [sp, #0x50] - str r1, [sp, #0x54] - mov r0, r4 - mov r1, sb - mov r2, fp - mov r3, sl - bl _dadd - ldr r2, _020EDF30 ; =_0210E93C - add r3, r2, r8, lsl #3 - ldr r2, [r2, r8, lsl #3] - ldr r3, [r3, #4] - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - bl _dadd - str r1, [sp, #0x5c] - mov r0, #0 - str r0, [sp, #0x58] - ldr r2, [sp, #0x50] - ldr r3, [sp, #0x54] - bl _dsub - ldr r2, _020EDF30 ; =_0210E93C - add r3, r2, r8, lsl #3 - ldr r2, [r2, r8, lsl #3] - ldr r3, [r3, #4] - bl _dsub - mov r2, r4 - mov r3, sb - bl _dsub - mov r2, r0 - mov r0, fp - mov r3, r1 - mov r1, sl - bl _dsub - mov r4, r0 - mov r8, r1 -_020EE4E8: - sub r0, r5, #1 - ldr r1, [sp, #0xb4] - orrs r0, r7, r0 - ldr r5, _020EDEA0 ; =0x3FF00000 - mov r2, #0 - ldr r0, [sp, #0xb0] - mov r3, r1 - mov r6, #0 - subeq r5, r5, #0x80000000 - str r1, [sp, #0x64] - str r2, [sp, #0x60] - bl _dsub - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x58] - ldr r1, [sp, #0x5c] - bl _dmul - mov r7, r0 - mov sb, r1 - ldr r0, [sp, #0xb0] - ldr r1, [sp, #0xb4] - mov r2, r4 - mov r3, r8 - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, r7 - mov r1, sb - bl _dadd - mov r7, r0 - mov r8, r1 - ldr r0, [sp, #0x60] - ldr r1, [sp, #0x64] - ldr r2, [sp, #0x58] - ldr r3, [sp, #0x5c] - bl _dmul - mov r2, r0 - mov r3, r1 - mov r0, r7 - mov r1, r8 - str r2, [sp, #0x68] - str r3, [sp, #0x6c] - bl _dadd - mov sb, r1 - ldr r2, _020EDF34 ; =0x40900000 - str r0, [sp, #0x78] - str sb, [sp, #0x7c] - cmp sb, r2 - blt _020EE674 - add r1, sb, #0xf700000 - add r1, r1, #0xb0000000 - orrs r0, r1, r0 - beq _020EE5F4 - ldr r0, _020EDF38 ; =0x8800759C - ldr r1, _020EDF3C ; =0x7E37E43C - mov r2, r6 - mov r3, r5 - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF38 ; =0x8800759C - ldr r1, _020EDF3C ; =0x7E37E43C - bl _dmul - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EE5F4: - ldr r0, _020EDED8 ; =0x652B82FE - ldr r1, _020EDF40 ; =0x3C971547 - mov r2, r7 - mov r3, r8 - bl _dadd - mov r4, r0 - mov sl, r1 - ldr r0, [sp, #0x78] - ldr r2, [sp, #0x68] - ldr r3, [sp, #0x6c] - mov r1, sb - bl _dsub - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sl - bl _dgr - bls _020EE728 - ldr r0, _020EDF38 ; =0x8800759C - ldr r1, _020EDF3C ; =0x7E37E43C - mov r2, r6 - mov r3, r5 - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF38 ; =0x8800759C - ldr r1, _020EDF3C ; =0x7E37E43C - bl _dmul - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EE674: - bic r3, sb, #0x80000000 - add r2, r2, #0xcc00 - cmp r3, r2 - blt _020EE728 - ldr r2, _020EDF44 ; =0x3F6F3400 - add r2, sb, r2 - orrs r2, r2, r0 - beq _020EE6CC - ldr r0, _020EDF48 ; =0xC2F8F359 - ldr r1, _020EDF4C ; =0x01A56E1F - mov r2, r6 - mov r3, r5 - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF48 ; =0xC2F8F359 - ldr r1, _020EDF4C ; =0x01A56E1F - bl _dmul - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EE6CC: - ldr r2, [sp, #0x68] - ldr r3, [sp, #0x6c] - bl _dsub - mov r2, r0 - mov r3, r1 - mov r0, r7 - mov r1, r8 - bl _dleq - bhi _020EE728 - ldr r0, _020EDF48 ; =0xC2F8F359 - ldr r1, _020EDF4C ; =0x01A56E1F - mov r2, r6 - mov r3, r5 - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF48 ; =0xC2F8F359 - ldr r1, _020EDF4C ; =0x01A56E1F - bl _dmul - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr -_020EE728: - ldr r0, _020EDEAC ; =0xFFFFFC01 - bic r3, sb, #0x80000000 - ldr r1, _020EDEB0 ; =0x3FE00000 - add r2, r0, r3, asr #20 - cmp r3, r1 - mov r4, #0 - ble _020EE7A4 - mov r1, #0x100000 - add r2, r2, #1 - add r2, sb, r1, asr r2 - bic r3, r2, #0x80000000 - add r0, r0, r3, asr #20 - sub r3, r1, #1 - mvn r3, r3, asr r0 - sub r1, r1, #1 - and r1, r2, r1 - and r2, r2, r3 - str r2, [sp, #0x54] - str r4, [sp, #0x50] - orr r1, r1, #0x100000 - rsb r0, r0, #0x14 - mov r4, r1, asr r0 - cmp sb, #0 - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x6c] - ldr r2, [sp, #0x50] - ldr r3, [sp, #0x54] - rsblt r4, r4, #0 - bl _dsub - str r0, [sp, #0x68] - str r1, [sp, #0x6c] -_020EE7A4: - ldr r2, [sp, #0x68] - ldr r3, [sp, #0x6c] - mov r0, r7 - mov r1, r8 - bl _dadd - mov r3, r1 - mov r0, #0 - ldr r1, _020EDF50 ; =0x3FE62E43 - mov r2, r0 - str r3, [sp, #0x54] - str r0, [sp, #0x50] - bl _dmul - mov sb, r0 - mov sl, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - ldr r2, [sp, #0x68] - ldr r3, [sp, #0x6c] - bl _dsub - mov r2, r0 - mov r0, r7 - mov r3, r1 - mov r1, r8 - bl _dsub - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF54 ; =0xFEFA39EF - ldr r1, _020EDF58 ; =0x3FE62E42 - bl _dmul - mov r7, r0 - mov r8, r1 - ldr r0, _020EDF5C ; =0x0CA86C39 - ldr r1, _020EDF60 ; =0xBE205C61 - ldr r2, [sp, #0x50] - ldr r3, [sp, #0x54] - bl _dmul - mov r2, r0 - mov r0, r7 - mov r3, r1 - mov r1, r8 - bl _dadd - mov r7, r0 - mov r8, r1 - mov r0, sb - mov r1, sl - mov r2, r7 - mov r3, r8 - bl _dadd - mov r2, sb - mov r3, sl - str r0, [sp, #0x78] - str r1, [sp, #0x7c] - bl _dsub - mov r2, r0 - mov r3, r1 - mov r0, r7 - mov r1, r8 - bl _dsub - mov r8, r0 - mov sb, r1 - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - mov r2, r0 - mov r3, r1 - bl _dmul - mov r2, r0 - str r2, [sp, #0x50] - mov r3, r1 - str r3, [sp, #0x54] - ldr r0, _020EDF64 ; =0x72BEA4D0 - ldr r1, _020EDF68 ; =0x3E663769 - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF6C ; =0xC5D26BF1 - ldr r1, _020EDF70 ; =0xBEBBBD41 - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF74 ; =0xAF25DE2C - ldr r1, _020EDF78 ; =0x3F11566A - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF7C ; =0x16BEBD93 - ldr r1, _020EDF80 ; =0xBF66C16C - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, _020EDF84 ; =0x5555553E - ldr r1, _020EDF88 ; =0x3FC55555 - bl _dadd - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x50] - ldr r1, [sp, #0x54] - bl _dmul - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - bl _dsub - mov r2, r0 - str r2, [sp, #0x58] - mov r3, r1 - str r3, [sp, #0x5c] - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - bl _dmul - mov r7, r0 - mov sl, r1 - ldr r0, [sp, #0x58] - ldr r1, [sp, #0x5c] - mov r2, #0 - mov r3, #0x40000000 - bl _dsub - mov r2, r0 - mov r0, r7 - mov r3, r1 - mov r1, sl - bl _ddiv - mov r7, r0 - mov sl, r1 - ldr r0, [sp, #0x78] - ldr r1, [sp, #0x7c] - mov r2, r8 - mov r3, sb - bl _dmul - mov r2, r0 - mov r0, r8 - mov r3, r1 - mov r1, sb - bl _dadd - mov r2, r0 - mov r0, r7 - mov r3, r1 - mov r1, sl - bl _dsub - ldr r2, [sp, #0x78] - ldr r3, [sp, #0x7c] - bl _dsub - mov r3, r1 - mov r2, r0 - ldr r1, _020EDEA0 ; =0x3FF00000 - mov r0, #0 - bl _dsub - add r3, r1, r4, lsl #20 - mov r2, r3, asr #0x14 - str r0, [sp, #0x78] - cmp r2, #0 - str r1, [sp, #0x7c] - addgt r0, sp, #0x78 - strgt r3, [r0, #4] - bgt _020EEA58 - mov r2, r4 - bl scalbn - str r0, [sp, #0x78] - str r1, [sp, #0x7c] -_020EEA58: - ldr r2, [sp, #0x78] - ldr r3, [sp, #0x7c] - mov r0, r6 - mov r1, r5 - bl _dmul - add sp, sp, #0x80 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end __ieee754_pow - - arm_func_start copysign -copysign: ; 0x020EEA7C - stmdb sp!, {r0, r1, r2, r3} - ldr r1, [sp, #4] - ldr r0, [sp, #0xc] - bic r1, r1, #0x80000000 - and r0, r0, #0x80000000 - orr r1, r1, r0 - ldr r0, [sp] - str r1, [sp, #4] - add sp, sp, #0x10 - bx lr - arm_func_end copysign - - arm_func_start fabs -fabs: ; 0x020EEAA4 - stmdb sp!, {r0, r1, r2, r3} - add r2, sp, #0 - ldr r1, [r2, #4] - ldr r0, [sp] - bic r1, r1, #0x80000000 - str r1, [r2, #4] - add sp, sp, #0x10 - bx lr - arm_func_end fabs - - arm_func_start frexp -frexp: ; 0x020EEAC4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - ldr r1, [sp, #0xc] - ldr r0, _020EEB70 ; =0x7FF00000 - mov r4, r2 - bic r3, r1, #0x80000000 - mov r2, #0 - str r2, [r4] - cmp r3, r0 - ldr r0, [sp, #8] - bge _020EEAF8 - orrs r0, r3, r0 - bne _020EEB0C -_020EEAF8: - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EEB0C: - cmp r3, #0x100000 - bge _020EEB38 - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - ldr r3, _020EEB74 ; =0x43500000 - bl _dmul - mvn r2, #0x35 - str r0, [sp, #8] - str r1, [sp, #0xc] - str r2, [r4] - bic r3, r1, #0x80000000 -_020EEB38: - ldr r2, _020EEB78 ; =0x800FFFFF - ldr r0, _020EEB7C ; =0xFFFFFC02 - and r1, r1, r2 - orr r1, r1, #0xfe00000 - orr r1, r1, #0x30000000 - ldr r2, [r4] - add r0, r0, r3, asr #20 - add r2, r2, r0 - ldr r0, [sp, #8] - str r2, [r4] - str r1, [sp, #0xc] - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020EEB70: .word 0x7FF00000 -_020EEB74: .word 0x43500000 -_020EEB78: .word 0x800FFFFF -_020EEB7C: .word 0xFFFFFC02 - arm_func_end frexp - - arm_func_start ldexp -ldexp: ; 0x020EEB80 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - mov r4, r2 - bl __fpclassifyd - cmp r0, #2 - ble _020EEBB8 - mov r0, #0 - ldr r2, [sp, #8] - ldr r3, [sp, #0xc] - mov r1, r0 - bl _deq - bne _020EEBCC -_020EEBB8: - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EEBCC: - ldr r3, [sp, #0xc] - ldr r0, _020EEDA0 ; =0x7FF00000 - ldr r1, [sp, #8] - and r0, r3, r0 - movs ip, r0, asr #0x14 - bne _020EEC58 - bic r0, r3, #0x80000000 - orrs r0, r1, r0 - ldreq r0, [sp, #8] - ldreq r1, [sp, #0xc] - ldmeqia sp!, {r4, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - ldr r3, _020EEDA4 ; =0x43500000 - mov r2, #0 - bl _dmul - mov r3, r1 - ldr r1, _020EEDA0 ; =0x7FF00000 - ldr ip, _020EEDA8 ; =0xFFFF3CB0 - and r1, r3, r1 - mov r2, r0 - mov r0, r1, asr #0x14 - str r2, [sp, #8] - str r3, [sp, #0xc] - cmp r4, ip - sub ip, r0, #0x36 - bge _020EEC58 - ldr r0, _020EEDAC ; =0xC2F8F359 - ldr r1, _020EEDB0 ; =0x01A56E1F - bl _dmul - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EEC58: - ldr r0, _020EEDB4 ; =0x000007FF - cmp ip, r0 - bne _020EEC84 - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - mov r2, r0 - mov r3, r1 - bl _dadd - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EEC84: - add r2, ip, r4 - sub r0, r0, #1 - cmp r2, r0 - ble _020EECC8 - ldr r2, [sp, #8] - ldr r3, [sp, #0xc] - ldr r0, _020EEDB8 ; =0x8800759C - ldr r1, _020EEDBC ; =0x7E37E43C - bl copysign - mov r2, r0 - mov r3, r1 - ldr r0, _020EEDB8 ; =0x8800759C - ldr r1, _020EEDBC ; =0x7E37E43C - bl _dmul - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EECC8: - cmp r2, #0 - ble _020EECF0 - ldr r1, _020EEDC0 ; =0x800FFFFF - ldr r0, [sp, #8] - and r1, r3, r1 - orr r1, r1, r2, lsl #20 - str r1, [sp, #0xc] - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EECF0: - mvn r0, #0x35 - cmp r2, r0 - bgt _020EED70 - ldr r0, _020EEDC4 ; =0x0000C350 - cmp r4, r0 - ble _020EED3C - ldr r2, [sp, #8] - ldr r3, [sp, #0xc] - ldr r0, _020EEDB8 ; =0x8800759C - ldr r1, _020EEDBC ; =0x7E37E43C - bl copysign - mov r2, r0 - mov r3, r1 - ldr r0, _020EEDB8 ; =0x8800759C - ldr r1, _020EEDBC ; =0x7E37E43C - bl _dmul - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EED3C: - ldr r2, [sp, #8] - ldr r3, [sp, #0xc] - ldr r0, _020EEDAC ; =0xC2F8F359 - ldr r1, _020EEDB0 ; =0x01A56E1F - bl copysign - mov r2, r0 - mov r3, r1 - ldr r0, _020EEDAC ; =0xC2F8F359 - ldr r1, _020EEDB0 ; =0x01A56E1F - bl _dmul - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr -_020EED70: - ldr r0, _020EEDC0 ; =0x800FFFFF - add r1, r2, #0x36 - and r0, r3, r0 - orr r3, r0, r1, lsl #20 - ldr r2, [sp, #8] - ldr r1, _020EEDC8 ; =0x3C900000 - mov r0, #0 - str r3, [sp, #0xc] - bl _dmul - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020EEDA0: .word 0x7FF00000 -_020EEDA4: .word 0x43500000 -_020EEDA8: .word 0xFFFF3CB0 -_020EEDAC: .word 0xC2F8F359 -_020EEDB0: .word 0x01A56E1F -_020EEDB4: .word 0x000007FF -_020EEDB8: .word 0x8800759C -_020EEDBC: .word 0x7E37E43C -_020EEDC0: .word 0x800FFFFF -_020EEDC4: .word 0x0000C350 -_020EEDC8: .word 0x3C900000 - arm_func_end ldexp - - arm_func_start pow -pow: ; 0x020EEDCC - ldr ip, _020EEDD4 ; =__ieee754_pow - bx ip - .align 2, 0 -_020EEDD4: .word __ieee754_pow - arm_func_end pow - - arm_func_start __must_round -__must_round: ; 0x020EEDD8 - add r3, r0, #5 - ldrb r2, [r3, r1] - add ip, r3, r1 - cmp r2, #5 - movhi r0, #1 - bxhi lr - mvnlo r0, #0 - bxlo lr - ldrb r2, [r0, #4] - add ip, ip, #1 - add r3, r3, r2 - cmp ip, r3 - bhs _020EEE28 -_020EEE0C: - ldrb r2, [ip] - cmp r2, #0 - movne r0, #1 - bxne lr - add ip, ip, #1 - cmp ip, r3 - blo _020EEE0C -_020EEE28: - sub r1, r1, #1 - add r0, r0, r1 - ldrb r0, [r0, #5] - tst r0, #1 - movne r0, #1 - mvneq r0, #0 - bx lr - arm_func_end __must_round - - arm_func_start __dorounddecup -__dorounddecup: ; 0x020EEE44 - add r3, r0, #5 - add r1, r3, r1 - sub ip, r1, #1 - mov r1, #0 -_020EEE54: - ldrb r2, [ip] - cmp r2, #9 - addlo r0, r2, #1 - strlob r0, [ip] - bxlo lr - cmp ip, r3 - bne _020EEE88 - mov r1, #1 - strb r1, [ip] - ldrsh r1, [r0, #2] - add r1, r1, #1 - strh r1, [r0, #2] - bx lr -_020EEE88: - strb r1, [ip], #-1 - b _020EEE54 - bx lr - arm_func_end __dorounddecup - - arm_func_start __rounddec -__rounddec: ; 0x020EEE94 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - cmp r4, #0 - ldmleia sp!, {r3, r4, r5, pc} - ldrb r2, [r5, #4] - cmp r4, r2 - ldmgeia sp!, {r3, r4, r5, pc} - bl __must_round - strb r4, [r5, #4] - cmp r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl __dorounddecup - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __rounddec - - arm_func_start __ull2dec -__ull2dec: ; 0x020EEED4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r0, #0 - mov r8, r2 - strb r0, [sl] - mov sb, r1 - cmp r8, #0 - strb r0, [sl, #4] - cmpeq sb, #0 - beq _020EEF60 - mov r6, #0xa - mov fp, r0 - mov r5, r0 - mov r4, r0 -_020EEF0C: - ldrb r1, [sl, #4] - mov r0, sb - mov r2, r6 - add r3, r1, #1 - mov r7, r1 - strb r3, [sl, #4] - mov r1, r8 - mov r3, fp - bl _ull_mod - add r1, sl, r7 - strb r0, [r1, #5] - mov r0, sb - mov r1, r8 - mov r2, #0xa - mov r3, #0 - bl _ll_udiv - mov r8, r1 - mov sb, r0 - cmp r8, r5 - cmpeq sb, r4 - bne _020EEF0C -_020EEF60: - ldrb r0, [sl, #4] - add r2, sl, #5 - add r0, r2, r0 - sub r3, r0, #1 - cmp r2, r3 - bhs _020EEF90 -_020EEF78: - ldrb r0, [r3] - ldrb r1, [r2] - strb r0, [r2], #1 - strb r1, [r3], #-1 - cmp r2, r3 - blo _020EEF78 -_020EEF90: - ldrb r0, [sl, #4] - sub r0, r0, #1 - strh r0, [sl, #2] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end __ull2dec - - arm_func_start __timesdec -__timesdec: ; 0x020EEFA0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - ldrb r6, [r1, #4] - ldrb r5, [r2, #4] - mov r4, #0 - add r3, sp, #0 - add r5, r6, r5 - sub r5, r5, #1 - add r3, r3, r5 - add r6, r3, #1 - mov r7, r6 - strb r4, [r0] - cmp r5, #0 - ble _020EF068 - add lr, r1, #5 - add fp, r2, #5 -_020EEFE0: - ldrb r3, [r2, #4] - sub sl, r3, #1 - sub r3, r5, sl - subs sb, r3, #1 - ldrb r3, [r1, #4] - movmi sb, #0 - submi sl, r5, #1 - add r8, sl, #1 - sub r3, r3, sb - cmp r8, r3 - movgt r8, r3 - add sl, fp, sl - add sb, lr, sb - cmp r8, #0 - ble _020EF034 -_020EF01C: - ldrb ip, [sb], #1 - ldrb r3, [sl], #-1 - sub r8, r8, #1 - cmp r8, #0 - mla r4, ip, r3, r4 - bgt _020EF01C -_020EF034: - ldr r3, _020EF120 ; =0xCCCCCCCD - sub r5, r5, #1 - umull r8, sb, r4, r3 - mov sb, sb, lsr #3 - cmp r5, #0 - mov sl, #0xa - umull r8, sb, sl, sb - sub sb, r4, r8 - strb sb, [r6, #-1]! - mov r8, r4 - umull r3, r4, r8, r3 - mov r4, r4, lsr #3 - bgt _020EEFE0 -_020EF068: - ldrsh r3, [r1, #2] - ldrsh r1, [r2, #2] - cmp r4, #0 - add r1, r3, r1 - strh r1, [r0, #2] - beq _020EF090 - strb r4, [r6, #-1]! - ldrsh r1, [r0, #2] - add r1, r1, #1 - strh r1, [r0, #2] -_020EF090: - mov r3, #0 - b _020EF0A8 -_020EF098: - ldrb r2, [r6], #1 - add r1, r0, r3 - add r3, r3, #1 - strb r2, [r1, #5] -_020EF0A8: - cmp r3, #0x20 - bge _020EF0B8 - cmp r6, r7 - blo _020EF098 -_020EF0B8: - cmp r6, r7 - addhs sp, sp, #0x40 - strb r3, [r0, #4] - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r1, [r6] - cmp r1, #5 - addlo sp, sp, #0x40 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bne _020EF110 - add r2, r6, #1 - cmp r2, r7 - bhs _020EF100 -_020EF0E8: - ldrb r1, [r2] - cmp r1, #0 - bne _020EF110 - add r2, r2, #1 - cmp r2, r7 - blo _020EF0E8 -_020EF100: - ldrb r1, [r6, #-1] - tst r1, #1 - addeq sp, sp, #0x40 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EF110: - ldrb r1, [r0, #4] - bl __dorounddecup - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020EF120: .word 0xCCCCCCCD - arm_func_end __timesdec - - arm_func_start __str2dec -__str2dec: ; 0x020EF124 - stmdb sp!, {r3, lr} - strh r2, [r0, #2] - mov ip, #0 - strb ip, [r0] - b _020EF14C -_020EF138: - ldrsb r3, [r1], #1 - add r2, r0, ip - add ip, ip, #1 - sub r3, r3, #0x30 - strb r3, [r2, #5] -_020EF14C: - cmp ip, #0x20 - bge _020EF160 - ldrsb r2, [r1] - cmp r2, #0 - bne _020EF138 -_020EF160: - strb ip, [r0, #4] - ldrsb r2, [r1] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - cmp r2, #5 - ldmltia sp!, {r3, pc} - bgt _020EF1B4 - ldrsb r2, [r1, #1] - add r1, r1, #1 - cmp r2, #0 - beq _020EF1A0 -_020EF18C: - cmp r2, #0x30 - bne _020EF1B4 - ldrsb r2, [r1, #1]! - cmp r2, #0 - bne _020EF18C -_020EF1A0: - sub r1, ip, #1 - add r1, r0, r1 - ldrb r1, [r1, #5] - tst r1, #1 - ldmeqia sp!, {r3, pc} -_020EF1B4: - ldrb r1, [r0, #4] - bl __dorounddecup - ldmia sp!, {r3, pc} - arm_func_end __str2dec - - arm_func_start __two_exp -__two_exp: ; 0x020EF1C0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - mov r4, r1 - mvn r2, #0x34 - mov r5, r0 - cmp r4, r2 - bgt _020EF1F0 - bge _020EF2BC - sub r0, r2, #0xb - cmp r4, r0 - beq _020EF2A4 - b _020EF44C -_020EF1F0: - add r1, r4, #0x20 - cmp r1, #0x28 - addls pc, pc, r1, lsl #2 - b _020EF44C -_020EF200: ; jump table - b _020EF2D0 ; case 0 - b _020EF44C ; case 1 - b _020EF44C ; case 2 - b _020EF44C ; case 3 - b _020EF44C ; case 4 - b _020EF44C ; case 5 - b _020EF44C ; case 6 - b _020EF44C ; case 7 - b _020EF44C ; case 8 - b _020EF44C ; case 9 - b _020EF44C ; case 10 - b _020EF44C ; case 11 - b _020EF44C ; case 12 - b _020EF44C ; case 13 - b _020EF44C ; case 14 - b _020EF44C ; case 15 - b _020EF2E4 ; case 16 - b _020EF44C ; case 17 - b _020EF44C ; case 18 - b _020EF44C ; case 19 - b _020EF44C ; case 20 - b _020EF44C ; case 21 - b _020EF44C ; case 22 - b _020EF44C ; case 23 - b _020EF2F8 ; case 24 - b _020EF30C ; case 25 - b _020EF320 ; case 26 - b _020EF334 ; case 27 - b _020EF348 ; case 28 - b _020EF35C ; case 29 - b _020EF370 ; case 30 - b _020EF384 ; case 31 - b _020EF398 ; case 32 - b _020EF3AC ; case 33 - b _020EF3C0 ; case 34 - b _020EF3D4 ; case 35 - b _020EF3E8 ; case 36 - b _020EF3FC ; case 37 - b _020EF410 ; case 38 - b _020EF424 ; case 39 - b _020EF438 ; case 40 -_020EF2A4: - ldr r1, _020EF4F0 ; =_02111408 - mov r0, r5 - mvn r2, #0x13 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF2BC: - ldr r1, _020EF4F4 ; =_02111438 - add r2, r2, #0x25 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF2D0: - ldr r1, _020EF4F8 ; =_02111460 - add r2, r2, #0x2b - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF2E4: - ldr r1, _020EF4FC ; =_02111478 - add r2, r2, #0x30 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF2F8: - ldr r1, _020EF500 ; =_02111488 - add r2, r2, #0x32 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF30C: - ldr r1, _020EF504 ; =_02111490 - add r2, r2, #0x32 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF320: - ldr r1, _020EF508 ; =_02111498 - add r2, r2, #0x33 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF334: - ldr r1, _020EF50C ; =_021114A0 - add r2, r2, #0x33 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF348: - ldr r1, _020EF510 ; =_021114A8 - add r2, r2, #0x33 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF35C: - ldr r1, _020EF514 ; =_021114AC - add r2, r2, #0x34 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF370: - ldr r1, _020EF518 ; =_021114B0 - add r2, r2, #0x34 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF384: - ldr r1, _020EF51C ; =_021114B4 - add r2, r2, #0x34 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF398: - ldr r1, _020EF520 ; =_021114B8 - mov r2, #0 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF3AC: - ldr r1, _020EF524 ; =_021114BC - mov r2, #0 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF3C0: - ldr r1, _020EF528 ; =_021114C0 - mov r2, #0 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF3D4: - ldr r1, _020EF52C ; =_021114C4 - mov r2, #0 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF3E8: - ldr r1, _020EF530 ; =_021114C8 - mov r2, #1 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF3FC: - ldr r1, _020EF534 ; =_021114CC - mov r2, #1 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF410: - ldr r1, _020EF538 ; =_021114D0 - mov r2, #1 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF424: - ldr r1, _020EF53C ; =_021114D4 - mov r2, #2 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF438: - ldr r1, _020EF540 ; =_021114D8 - mov r2, #2 - bl __str2dec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} -_020EF44C: - and r0, r4, #0x80000000 - add r1, r4, r0, lsr #31 - add r0, sp, #0x26 - mov r1, r1, asr #1 - bl __two_exp - add r1, sp, #0x26 - mov r0, r5 - mov r2, r1 - bl __timesdec - tst r4, #1 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4, r5, pc} - add r3, sp, #0 - mov ip, r5 - mov r2, #9 -_020EF488: - ldrh r1, [ip] - ldrh r0, [ip, #2] - add ip, ip, #4 - subs r2, r2, #1 - strh r1, [r3] - strh r0, [r3, #2] - add r3, r3, #4 - bne _020EF488 - ldrh r0, [ip] - cmp r4, #0 - strh r0, [r3] - add r0, sp, #0x26 - ble _020EF4CC - ldr r1, _020EF524 ; =_021114BC - mov r2, #0 - bl __str2dec - b _020EF4D8 -_020EF4CC: - ldr r1, _020EF51C ; =_021114B4 - mvn r2, #0 - bl __str2dec -_020EF4D8: - add r1, sp, #0 - add r2, sp, #0x26 - mov r0, r5 - bl __timesdec - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020EF4F0: .word _02111408 -_020EF4F4: .word _02111438 -_020EF4F8: .word _02111460 -_020EF4FC: .word _02111478 -_020EF500: .word _02111488 -_020EF504: .word _02111490 -_020EF508: .word _02111498 -_020EF50C: .word _021114A0 -_020EF510: .word _021114A8 -_020EF514: .word _021114AC -_020EF518: .word _021114B0 -_020EF51C: .word _021114B4 -_020EF520: .word _021114B8 -_020EF524: .word _021114BC -_020EF528: .word _021114C0 -_020EF52C: .word _021114C4 -_020EF530: .word _021114C8 -_020EF534: .word _021114CC -_020EF538: .word _021114D0 -_020EF53C: .word _021114D4 -_020EF540: .word _021114D8 - arm_func_end __two_exp - - arm_func_start __equals_dec -__equals_dec: ; 0x020EF544 - stmdb sp!, {r4, lr} - ldrb r3, [r0, #5] - cmp r3, #0 - bne _020EF568 - ldrb r0, [r1, #5] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, pc} -_020EF568: - ldrb r2, [r1, #5] - cmp r2, #0 - bne _020EF584 - cmp r3, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, pc} -_020EF584: - ldrsh r3, [r0, #2] - ldrsh r2, [r1, #2] - cmp r3, r2 - bne _020EF61C - ldrb r4, [r0, #4] - ldrb r2, [r1, #4] - mov ip, #0 - mov lr, r4 - cmp r4, r2 - movgt lr, r2 - cmp lr, #0 - ble _020EF5DC -_020EF5B4: - add r3, r0, ip - add r2, r1, ip - ldrb r3, [r3, #5] - ldrb r2, [r2, #5] - cmp r3, r2 - movne r0, #0 - ldmneia sp!, {r4, pc} - add ip, ip, #1 - cmp ip, lr - blt _020EF5B4 -_020EF5DC: - cmp lr, r4 - moveq r0, r1 - ldrb r1, [r0, #4] - cmp ip, r1 - bge _020EF614 -_020EF5F0: - add r1, r0, ip - ldrb r1, [r1, #5] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldrb r1, [r0, #4] - add ip, ip, #1 - cmp ip, r1 - blt _020EF5F0 -_020EF614: - mov r0, #1 - ldmia sp!, {r4, pc} -_020EF61C: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end __equals_dec - - arm_func_start __less_dec -__less_dec: ; 0x020EF624 - stmdb sp!, {r3, r4, r5, lr} - ldrb r2, [r0, #5] - cmp r2, #0 - bne _020EF648 - ldrb r0, [r1, #5] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020EF648: - ldrb r2, [r1, #5] - cmp r2, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsh r3, [r1, #2] - ldrsh r2, [r0, #2] - cmp r2, r3 - bne _020EF6F8 - ldrb r5, [r0, #4] - ldrb r4, [r1, #4] - mov ip, #0 - mov lr, r5 - cmp r5, r4 - movgt lr, r4 - cmp lr, #0 - ble _020EF6BC -_020EF688: - add r3, r1, ip - add r2, r0, ip - ldrb r3, [r3, #5] - ldrb r2, [r2, #5] - cmp r2, r3 - movlo r0, #1 - ldmloia sp!, {r3, r4, r5, pc} - cmp r3, r2 - movlo r0, #0 - ldmloia sp!, {r3, r4, r5, pc} - add ip, ip, #1 - cmp ip, lr - blt _020EF688 -_020EF6BC: - cmp lr, r5 - bne _020EF6F0 - cmp ip, r4 - bge _020EF6F0 -_020EF6CC: - add r0, r1, ip - ldrb r0, [r0, #5] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r1, #4] - add ip, ip, #1 - cmp ip, r0 - blt _020EF6CC -_020EF6F0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020EF6F8: - movlt r0, #1 - movge r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __less_dec - - arm_func_start __minus_dec -__minus_dec: ; 0x020EF704 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, #9 -_020EF710: - ldrh r4, [r1] - ldrh r3, [r1, #2] - add r1, r1, #4 - subs r5, r5, #1 - strh r4, [r6] - strh r3, [r6, #2] - add r6, r6, #4 - bne _020EF710 - ldrh r1, [r1] - strh r1, [r6] - ldrb r1, [r2, #5] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r7, [r0, #4] - ldrb r3, [r2, #4] - ldrsh r4, [r0, #2] - mov r1, r7 - cmp r7, r3 - movlt r1, r3 - ldrsh r3, [r2, #2] - sub r6, r4, r3 - add r1, r1, r6 - cmp r1, #0x20 - movgt r1, #0x20 - cmp r7, r1 - bge _020EF79C - mov r4, #0 -_020EF77C: - ldrb r5, [r0, #4] - add r3, r0, r7 - add r5, r5, #1 - strb r5, [r0, #4] - strb r4, [r3, #5] - ldrb r7, [r0, #4] - cmp r7, r1 - blt _020EF77C -_020EF79C: - ldrb r4, [r2, #4] - add r3, r0, #5 - add ip, r3, r1 - add r4, r4, r6 - cmp r4, r1 - addlt ip, r3, r4 - sub r4, ip, r3 - add r1, r2, #5 - sub r4, r4, r6 - add lr, r1, r4 - mov r4, lr - b _020EF830 -_020EF7CC: - ldrb r7, [ip, #-1]! - ldrb r5, [lr, #-1]! - cmp r7, r5 - bhs _020EF820 - ldrb r7, [ip, #-1] - sub r5, ip, #1 - cmp r7, #0 - bne _020EF7F8 -_020EF7EC: - ldrb r7, [r5, #-1]! - cmp r7, #0 - beq _020EF7EC -_020EF7F8: - cmp r5, ip - beq _020EF820 -_020EF800: - ldrb r7, [r5] - sub r7, r7, #1 - strb r7, [r5] - ldrb r7, [r5, #1]! - cmp r5, ip - add r7, r7, #0xa - strb r7, [r5] - bne _020EF800 -_020EF820: - ldrb r7, [ip] - ldrb r5, [lr] - sub r5, r7, r5 - strb r5, [ip] -_020EF830: - cmp ip, r3 - cmphi lr, r1 - bhi _020EF7CC - ldrb r5, [r2, #4] - sub lr, r4, r1 - cmp lr, r5 - bge _020EF90C - ldrb r1, [r4] - mov r7, #0 - cmp r1, #5 - movlo r7, #1 - blo _020EF8A8 - bne _020EF8A8 - add r1, r2, #5 - add r2, r1, r5 - add r4, r4, #1 - cmp r4, r2 - bhs _020EF890 -_020EF878: - ldrb r1, [r4] - cmp r1, #0 - bne _020EF90C - add r4, r4, #1 - cmp r4, r2 - blo _020EF878 -_020EF890: - add r1, r3, lr - add r2, r1, r6 - ldrb r1, [r2, #-1] - sub ip, r2, #1 - tst r1, #1 - movne r7, #1 -_020EF8A8: - cmp r7, #0 - beq _020EF90C - ldrb r1, [ip] - cmp r1, #1 - bhs _020EF900 - ldrb r1, [ip, #-1] - sub r2, ip, #1 - cmp r1, #0 - bne _020EF8D8 -_020EF8CC: - ldrb r1, [r2, #-1]! - cmp r1, #0 - beq _020EF8CC -_020EF8D8: - cmp r2, ip - beq _020EF900 -_020EF8E0: - ldrb r1, [r2] - sub r1, r1, #1 - strb r1, [r2] - ldrb r1, [r2, #1]! - cmp r2, ip - add r1, r1, #0xa - strb r1, [r2] - bne _020EF8E0 -_020EF900: - ldrb r1, [ip] - sub r1, r1, #1 - strb r1, [ip] -_020EF90C: - ldrb r1, [r3] - mov r5, r3 - cmp r1, #0 - bne _020EF928 -_020EF91C: - ldrb r1, [r5, #1]! - cmp r1, #0 - beq _020EF91C -_020EF928: - cmp r5, r3 - bls _020EF970 - ldrsh r1, [r0, #2] - sub r2, r5, r3 - and r4, r2, #0xff - sub r1, r1, r4 - strh r1, [r0, #2] - ldrb r1, [r0, #4] - add r2, r3, r1 - cmp r5, r2 - bhs _020EF964 -_020EF954: - ldrb r1, [r5], #1 - cmp r5, r2 - strb r1, [r3], #1 - blo _020EF954 -_020EF964: - ldrb r1, [r0, #4] - sub r1, r1, r4 - strb r1, [r0, #4] -_020EF970: - ldrb r1, [r0, #4] - add r2, r0, #5 - add r3, r2, r1 - cmp r3, r2 - bls _020EF998 -_020EF984: - ldrb r1, [r3, #-1]! - cmp r1, #0 - bne _020EF998 - cmp r3, r2 - bhi _020EF984 -_020EF998: - sub r1, r3, r2 - add r1, r1, #1 - strb r1, [r0, #4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end __minus_dec - - arm_func_start __num2dec_internal -__num2dec_internal: ; 0x020EF9A8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x58 - mov r8, r1 - mov r6, r2 - mov r7, r0 - mov r0, r8 - mov r1, r6 - bl __signbitd - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r4, r1, lsl #0x18 - mov r0, #0 - mov r1, r0 - mov r2, r8 - mov r3, r6 - mov r5, r4, asr #0x18 - bl _deq - bne _020EFA14 - strb r5, [r7] - mov r1, #0 - strh r1, [r7, #2] - mov r0, #1 - strb r0, [r7, #4] - add sp, sp, #0x58 - strb r1, [r7, #5] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020EFA14: - mov r0, r8 - mov r1, r6 - bl __fpclassifyd - cmp r0, #2 - bgt _020EFA60 - strb r5, [r7] - mov r2, #0 - strh r2, [r7, #2] - mov r2, #1 - mov r0, r8 - mov r1, r6 - strb r2, [r7, #4] - bl __fpclassifyd - cmp r0, #1 - moveq r0, #0x4e - movne r0, #0x49 - add sp, sp, #0x58 - strb r0, [r7, #5] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020EFA60: - cmp r5, #0 - beq _020EFA84 - mov r0, #0 - mov r1, r0 - mov r2, r8 - mov r3, r6 - bl _dsub - mov r8, r0 - mov r6, r1 -_020EFA84: - add r2, sp, #8 - mov r0, r8 - mov r1, r6 - bl frexp - mov r4, r0 - mov r6, r1 - orr ip, r4, #0 - rsbs r2, ip, #0 - orr r3, r6, #0x100000 - rsc r1, r3, #0 - mov r0, #0 - and r3, r3, r1 - sub r1, r0, #1 - and ip, ip, r2 - mov r2, r1 - adds r0, ip, r1 - adc r1, r3, r2 - str r4, [sp] - str r6, [sp, #4] - bl __msl_generic_count_bits64 - rsb r8, r0, #0x35 - ldr r1, [sp, #8] - add r0, sp, #0xc - sub r1, r1, r8 - bl __two_exp - mov r0, r4 - mov r1, r6 - mov r2, r8 - bl ldexp - bl _ll_ufrom_d - mov r2, r1 - mov r1, r0 - add r0, sp, #0x32 - bl __ull2dec - mov r0, r7 - add r1, sp, #0x32 - add r2, sp, #0xc - bl __timesdec - strb r5, [r7] - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end __num2dec_internal - - arm_func_start __num2dec -__num2dec: ; 0x020EFB28 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r3 - ldrsh r5, [r0, #2] - mov r0, r4 - bl __num2dec_internal - ldrb r0, [r4, #5] - cmp r0, #9 - ldmhiia sp!, {r3, r4, r5, pc} - cmp r5, #0x20 - movgt r5, #0x20 - mov r0, r4 - mov r1, r5 - bl __rounddec - ldrb r0, [r4, #4] - cmp r0, r5 - bge _020EFB8C - mov r1, #0 -_020EFB6C: - ldrb r2, [r4, #4] - add r0, r4, r0 - add r2, r2, #1 - strb r2, [r4, #4] - strb r1, [r0, #5] - ldrb r0, [r4, #4] - cmp r0, r5 - blt _020EFB6C -_020EFB8C: - ldrsh r1, [r4, #2] - sub r0, r0, #1 - mov r2, #0 - sub r0, r1, r0 - strh r0, [r4, #2] - ldrb r0, [r4, #4] - cmp r0, #0 - ldmleia sp!, {r3, r4, r5, pc} -_020EFBAC: - add r1, r4, r2 - ldrb r0, [r1, #5] - add r2, r2, #1 - add r0, r0, #0x30 - strb r0, [r1, #5] - ldrb r0, [r4, #4] - cmp r2, r0 - blt _020EFBAC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end __num2dec - - arm_func_start __dec2num -__dec2num: ; 0x020EFBD0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xfc - mov r4, r0 - ldrb r0, [r4, #4] - cmp r0, #0 - bne _020EFC10 - ldrsb r0, [r4] - mov r2, #0 - cmp r0, #0 - ldreq r3, _020F01D4 ; =0x3FF00000 - mov r0, #0 - ldrne r3, _020F01D8 ; =0xBFF00000 - mov r1, r0 - bl copysign - add sp, sp, #0xfc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EFC10: - ldrb r0, [r4, #5] - cmp r0, #0x30 - beq _020EFC30 - cmp r0, #0x49 - beq _020EFC58 - cmp r0, #0x4e - beq _020EFC8C - b _020EFCD4 -_020EFC30: - ldrsb r0, [r4] - mov r2, #0 - cmp r0, #0 - ldreq r3, _020F01D4 ; =0x3FF00000 - mov r0, #0 - ldrne r3, _020F01D8 ; =0xBFF00000 - mov r1, r0 - bl copysign - add sp, sp, #0xfc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EFC58: - ldrsb r0, [r4] - mov r5, #0 - cmp r0, #0 - ldreq r4, _020F01D4 ; =0x3FF00000 - ldr r0, _020F01DC ; =_021110E8 - ldrne r4, _020F01D8 ; =0xBFF00000 - ldr r0, [r0] - bl _f2d - mov r2, r5 - mov r3, r4 - bl copysign - add sp, sp, #0xfc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EFC8C: - ldr r1, _020F01E0 ; =0x7FF00000 - add r3, sp, #0x10 - mov r2, #0 - str r2, [r3] - str r1, [r3, #4] - ldrsb r0, [r4] - cmp r0, #0 - beq _020EFCBC - orr r0, r1, #0x80000000 - orr r1, r2, r2 - str r1, [r3] - str r0, [r3, #4] -_020EFCBC: - ldmia r3, {r0, r1} - orr r0, r0, #0 - orr r1, r1, #0x80000 - stmia r3, {r0, r1} - add sp, sp, #0xfc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EFCD4: - add r3, sp, #0xd6 - mov r5, r4 - mov r2, #9 -_020EFCE0: - ldrh r1, [r5] - ldrh r0, [r5, #2] - add r5, r5, #4 - subs r2, r2, #1 - strh r1, [r3] - strh r0, [r3, #2] - add r3, r3, #4 - bne _020EFCE0 - ldrh r0, [r5] - add r1, sp, #0xdb - strh r0, [r3] - ldrb r0, [sp, #0xda] - add r5, r1, r0 - cmp r1, r5 - bhs _020EFD30 -_020EFD1C: - ldrb r0, [r1] - sub r0, r0, #0x30 - strb r0, [r1], #1 - cmp r1, r5 - blo _020EFD1C -_020EFD30: - ldrb r1, [sp, #0xda] - ldrsh r2, [sp, #0xd8] - add r0, sp, #0xb0 - sub r1, r1, #1 - add r1, r2, r1 - strh r1, [sp, #0xd8] - ldr r1, _020F01E4 ; =_021114DC - mov r2, #0x134 - ldrsh fp, [sp, #0xd8] - bl __str2dec - add r0, sp, #0xb0 - add r1, sp, #0xd6 - bl __less_dec - cmp r0, #0 - beq _020EFDA0 - ldrsb r0, [r4] - mov r5, #0 - cmp r0, #0 - ldreq r4, _020F01D4 ; =0x3FF00000 - ldr r0, _020F01DC ; =_021110E8 - ldrne r4, _020F01D8 ; =0xBFF00000 - ldr r0, [r0] - bl _f2d - mov r2, r5 - mov r3, r4 - bl copysign - add sp, sp, #0xfc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020EFDA0: - add r1, sp, #0xdb - ldrb r0, [r1] - add r8, r1, #1 - bl _dfltu - str r0, [sp, #8] - str r1, [sp, #0xc] - cmp r8, r5 - bhs _020EFE78 -_020EFDC0: - sub r0, r5, r8 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #29 - adds r7, r1, r0, ror #29 - moveq r7, #8 - mov r6, #0 - mov r2, #0 - cmp r7, #0 - ble _020EFDFC - mov r0, #0xa -_020EFDE8: - ldrb r1, [r8], #1 - add r2, r2, #1 - cmp r2, r7 - mla r6, r0, r6, r1 - blt _020EFDE8 -_020EFDFC: - ldr r0, _020F01E8 ; =_021113C8 - ldr r1, [sp, #0xc] - add r3, r0, r7, lsl #3 - ldr r2, [r3, #-8] - ldr r0, [sp, #8] - ldr r3, [r3, #-4] - bl _dmul - mov r4, r0 - mov sb, r1 - mov r0, r6 - bl _dfltu - mov r2, r0 - mov r3, r1 - mov r0, r4 - mov r1, sb - bl _dadd - cmp r6, #0 - mov r6, r0 - mov sl, r1 - beq _020EFE64 - mov r0, r4 - mov r1, sb - mov r2, r6 - mov r3, sl - bl _deq - beq _020EFE78 -_020EFE64: - str r6, [sp, #8] - str sl, [sp, #0xc] - cmp r8, r5 - sub fp, fp, r7 - blo _020EFDC0 -_020EFE78: - cmp fp, #0 - bge _020EFEBC - rsb r0, fp, #0 - bl _dflt - mov r3, r1 - mov r2, r0 - ldr r1, _020F01EC ; =0x40140000 - mov r0, #0 - bl pow - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - bl _ddiv - str r0, [sp, #8] - str r1, [sp, #0xc] - b _020EFEF4 -_020EFEBC: - mov r0, fp - bl _dflt - mov r3, r1 - mov r2, r0 - ldr r1, _020F01EC ; =0x40140000 - mov r0, #0 - bl pow - mov r2, r0 - mov r3, r1 - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - bl _dmul - str r0, [sp, #8] - str r1, [sp, #0xc] -_020EFEF4: - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - mov r2, fp - bl ldexp - str r0, [sp, #8] - str r1, [sp, #0xc] - bl __fpclassifyd - cmp r0, #2 - bne _020EFF28 - ldr r0, _020F01F0 ; =0x7FEFFFFF - mvn r1, #0 - str r1, [sp, #8] - str r0, [sp, #0xc] -_020EFF28: - ldr r1, [sp, #8] - ldr r2, [sp, #0xc] - add r0, sp, #0x8a - add r4, sp, #0 - mov r5, #0 - bl __num2dec_internal - add r0, sp, #0x8a - add r1, sp, #0xd6 - bl __equals_dec - cmp r0, #0 - bne _020F019C - add r0, sp, #0x8a - add r1, sp, #0xd6 - bl __less_dec - cmp r0, #0 - movne r5, #1 - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - cmp r5, #0 - moveq r6, #1 - str r1, [sp] - str r0, [sp, #4] - movne r6, #0 -_020EFF84: - cmp r6, #0 - bne _020EFFAC - ldmia r4, {r0, r1} - adds r0, r0, #1 - adc r1, r1, #0 - stmia r4, {r0, r1} - bl __fpclassifyd - cmp r0, #2 - beq _020F019C - b _020EFFC4 -_020EFFAC: - ldr r1, [r4] - ldr r0, [r4, #4] - subs r1, r1, #1 - sbc r0, r0, #0 - str r1, [r4] - str r0, [r4, #4] -_020EFFC4: - ldr r1, [sp] - ldr r2, [sp, #4] - add r0, sp, #0x64 - bl __num2dec_internal - cmp r5, #0 - beq _020EFFF0 - add r0, sp, #0x64 - add r1, sp, #0xd6 - bl __less_dec - cmp r0, #0 - beq _020F0114 -_020EFFF0: - cmp r5, #0 - bne _020F00CC - add r0, sp, #0xd6 - add r1, sp, #0x64 - bl __less_dec - cmp r0, #0 - bne _020F00CC - add r3, sp, #0x8a - add r5, sp, #0x3e - mov r2, #9 -_020F0018: - ldrh r1, [r3] - ldrh r0, [r3, #2] - add r3, r3, #4 - strh r1, [r5] - strh r0, [r5, #2] - add r5, r5, #4 - subs r2, r2, #1 - bne _020F0018 - ldrh r0, [r3] - add r3, sp, #0x64 - add r4, sp, #0x8a - strh r0, [r5] - mov r2, #9 -_020F004C: - ldrh r1, [r3] - ldrh r0, [r3, #2] - add r3, r3, #4 - strh r1, [r4] - strh r0, [r4, #2] - add r4, r4, #4 - subs r2, r2, #1 - bne _020F004C - ldrh r0, [r3] - add r3, sp, #0x3e - add r5, sp, #0x64 - strh r0, [r4] - mov r2, #9 -_020F0080: - ldrh r1, [r3] - ldrh r0, [r3, #2] - add r3, r3, #4 - strh r1, [r5] - strh r0, [r5, #2] - add r5, r5, #4 - subs r2, r2, #1 - bne _020F0080 - ldrh r4, [r3] - ldr r3, [sp, #8] - ldr r1, [sp] - ldr r2, [sp, #0xc] - ldr r0, [sp, #4] - strh r4, [r5] - str r1, [sp, #8] - str r0, [sp, #0xc] - str r3, [sp] - str r2, [sp, #4] - b _020F0114 -_020F00CC: - add r7, sp, #0x64 - add r3, sp, #0x8a - mov r2, #9 -_020F00D8: - ldrh r1, [r7] - ldrh r0, [r7, #2] - add r7, r7, #4 - strh r1, [r3] - strh r0, [r3, #2] - add r3, r3, #4 - subs r2, r2, #1 - bne _020F00D8 - ldrh r2, [r7] - ldr r1, [sp] - ldr r0, [sp, #4] - strh r2, [r3] - str r1, [sp, #8] - str r0, [sp, #0xc] - b _020EFF84 -_020F0114: - add r0, sp, #0x3e - add r1, sp, #0xd6 - add r2, sp, #0x8a - bl __minus_dec - add r0, sp, #0x18 - add r1, sp, #0x64 - add r2, sp, #0xd6 - bl __minus_dec - add r0, sp, #0x3e - add r1, sp, #0x18 - bl __equals_dec - cmp r0, #0 - beq _020F0178 - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - and r1, r1, #1 - and r0, r0, #0 - cmp r0, #0 - cmpeq r1, #0 - beq _020F019C - ldr r1, [sp] - ldr r0, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] - b _020F019C -_020F0178: - add r0, sp, #0x3e - add r1, sp, #0x18 - bl __less_dec - cmp r0, #0 - bne _020F019C - ldr r1, [sp] - ldr r0, [sp, #4] - str r1, [sp, #8] - str r0, [sp, #0xc] -_020F019C: - ldrsb r0, [sp, #0xd6] - cmp r0, #0 - beq _020F01C4 - mov r0, #0 - ldr r2, [sp, #8] - ldr r3, [sp, #0xc] - mov r1, r0 - bl _dsub - str r0, [sp, #8] - str r1, [sp, #0xc] -_020F01C4: - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - add sp, sp, #0xfc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020F01D4: .word 0x3FF00000 -_020F01D8: .word 0xBFF00000 -_020F01DC: .word _021110E8 -_020F01E0: .word 0x7FF00000 -_020F01E4: .word _021114DC -_020F01E8: .word _021113C8 -_020F01EC: .word 0x40140000 -_020F01F0: .word 0x7FEFFFFF - arm_func_end __dec2num - - arm_func_start __msl_generic_count_bits64 -__msl_generic_count_bits64: ; 0x020F01F4 - mov r3, r0, lsr #1 - ldr r2, _020F027C ; =0x55555555 - orr r3, r3, r1, lsl #31 - and r3, r3, r2 - subs ip, r0, r3 - and r2, r2, r1, lsr #1 - ldr r0, _020F0280 ; =0x33333333 - sbc r3, r1, r2 - mov r1, ip, lsr #2 - orr r1, r1, r3, lsl #30 - and r2, ip, r0 - and r1, r1, r0 - adds r2, r2, r1 - and r1, r3, r0 - and r0, r0, r3, lsr #2 - adc r1, r1, r0 - mov r0, r2, lsr #4 - orr r0, r0, r1, lsl #28 - adds r2, r2, r0 - ldr r0, _020F0284 ; =0x0F0F0F0F - adc r1, r1, r1, lsr #4 - and r3, r2, r0 - and r2, r1, r0 - mov r0, r3, lsr #8 - orr r0, r0, r2, lsl #24 - adds r1, r3, r0 - adc r2, r2, r2, lsr #8 - mov r0, r1, lsr #0x10 - orr r0, r0, r2, lsl #16 - adds r1, r1, r0 - adc r0, r2, r2, lsr #16 - adds r0, r1, r0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020F027C: .word 0x55555555 -_020F0280: .word 0x33333333 -_020F0284: .word 0x0F0F0F0F - arm_func_end __msl_generic_count_bits64 - - arm_func_start __signbitd -__signbitd: ; 0x020F0288 - stmdb sp!, {r0, r1, r2, r3} - ldr r0, [sp, #4] - and r0, r0, #0x80000000 - add sp, sp, #0x10 - bx lr - arm_func_end __signbitd - - arm_func_start __fpclassifyd -__fpclassifyd: ; 0x020F029C - stmdb sp!, {r0, r1, r2, r3} - ldr r2, [sp, #4] - ldr r0, _020F0304 ; =0x7FF00000 - ands r1, r2, r0 - beq _020F02D8 - cmp r1, r0 - bne _020F02F8 - ldr r0, _020F0308 ; =0x000FFFFF - tst r2, r0 - ldreq r0, [sp] - add sp, sp, #0x10 - cmpeq r0, #0 - movne r0, #1 - moveq r0, #2 - bx lr -_020F02D8: - ldr r0, _020F0308 ; =0x000FFFFF - tst r2, r0 - ldreq r0, [sp] - add sp, sp, #0x10 - cmpeq r0, #0 - movne r0, #5 - moveq r0, #3 - bx lr -_020F02F8: - mov r0, #4 - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020F0304: .word 0x7FF00000 -_020F0308: .word 0x000FFFFF - arm_func_end __fpclassifyd - - arm_func_start scalbn -scalbn: ; 0x020F030C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r2 - add r2, sp, #0 - bl frexp - ldr r2, [sp] - add r2, r2, r4 - str r2, [sp] - bl ldexp - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end scalbn - - arm_func_start __sys_alloc -__sys_alloc: ; 0x020F0338 - ldr ip, _020F034C ; =OS_AllocFromHeap - mov r2, r0 - mov r0, #0 - sub r1, r0, #1 - bx ip - .align 2, 0 -_020F034C: .word OS_AllocFromHeap - arm_func_end __sys_alloc - - arm_func_start __sys_free -__sys_free: ; 0x020F0350 - ldr ip, _020F0364 ; =OS_FreeToHeap - mov r2, r0 - mov r0, #0 - sub r1, r0, #1 - bx ip - .align 2, 0 -_020F0364: .word OS_FreeToHeap - arm_func_end __sys_free - - ; MSL_Extras_NITRO_Ai_LE.a - - arm_func_start stricmp -stricmp: ; 0x020F0368 - stmdb sp!, {r3, lr} - ldr r3, _020F03CC ; =_0210E404 -_020F0370: - ldrb r2, [r0], #1 - cmp r2, #0 - blt _020F0388 - cmp r2, #0x80 - bge _020F0388 - ldrb r2, [r3, r2] -_020F0388: - ldrb lr, [r1], #1 - and ip, r2, #0xff - cmp lr, #0 - blt _020F03A4 - cmp lr, #0x80 - bge _020F03A4 - ldrb lr, [r3, lr] -_020F03A4: - and r2, lr, #0xff - cmp ip, r2 - mvnlo r0, #0 - ldmloia sp!, {r3, pc} - movhi r0, #1 - ldmhiia sp!, {r3, pc} - cmp ip, #0 - bne _020F0370 - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020F03CC: .word _0210E404 - arm_func_end stricmp - - arm_func_start strnicmp -strnicmp: ; 0x020F03D0 - ldr ip, _020F03D8 ; =stricmp - bx ip - .align 2, 0 -_020F03D8: .word stricmp - arm_func_end strnicmp - - ; MSL_CPP_NITRO_Ai_LE.a - - arm_func_start _ZNSt9exceptionD2Ev -_ZNSt9exceptionD2Ev: ; 0x020F03DC - bx lr - arm_func_end _ZNSt9exceptionD2Ev - - arm_func_start _ZNSt3tr110shared_ptrIcEC1IcNSt6detail14default_deleteIA0_cEEEEPT_T0_ -_ZNSt3tr110shared_ptrIcEC1IcNSt6detail14default_deleteIA0_cEEEEPT_T0_: ; 0x020F03E0 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - str r4, [r5] - add r1, sp, #0x20 - mov r0, #0x10 - str r4, [sp] - str r1, [sp, #4] - bl _Znwm - cmp r0, #0 - beq _020F0430 - ldr r1, _020F0458 ; =_02111540 - mov r2, #1 - stmia r0, {r1, r2} - ldr r1, _020F045C ; =_02111558 - str r2, [r0, #8] - str r1, [r0] - str r4, [r0, #0xc] -_020F0430: - str r0, [r5, #4] - mov r1, #0 - add r0, sp, #0 - str r1, [sp] - bl _ZN10Metrowerks8move_ptrIcRNSt6detail14default_deleteIA0_cEEED1Ev - mov r0, r5 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020F0458: .word _02111540 -_020F045C: .word _02111558 - arm_func_end _ZNSt3tr110shared_ptrIcEC1IcNSt6detail14default_deleteIA0_cEEEEPT_T0_ - - arm_func_start _ZNSt9exceptionD0Ev -_ZNSt9exceptionD0Ev: ; 0x020F0460 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt9exceptionD0Ev - - arm_func_start _ZNSt9exceptionD1Ev -_ZNSt9exceptionD1Ev: ; 0x020F0474 - bx lr - arm_func_end _ZNSt9exceptionD1Ev - - arm_func_start _ZNKSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE11get_deleterERKSt9type_info -_ZNKSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE11get_deleterERKSt9type_info: ; 0x020F0478 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - ldr r1, _020F049C ; =_02111514 - bl _ZNKSt9type_infoeqERKS_ - cmp r0, #0 - addne r0, r4, #0xc - moveq r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020F049C: .word _02111514 - arm_func_end _ZNKSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE11get_deleterERKSt9type_info - - arm_func_start _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE7disposeEv -_ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE7disposeEv: ; 0x020F04A0 - ldr ip, _020F04AC ; =_ZdaPv - ldr r0, [r0, #0xc] - bx ip - .align 2, 0 -_020F04AC: .word _ZdaPv - arm_func_end _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE7disposeEv - - arm_func_start _ZNSt3tr110shared_ptrIcED1Ev -_ZNSt3tr110shared_ptrIcED1Ev: ; 0x020F04B0 - stmdb sp!, {r3, r4, fp, lr} - sub sp, sp, #0x18 - mov fp, sp - mov r4, r0 - ldr r0, [r4, #4] - cmp r0, #0 - beq _020F04D0 - bl _ZNSt3tr16detail25shared_ptr_deleter_common7releaseEv -_020F04D0: - add sp, fp, #0x18 - mov r0, r4 - ldmia sp!, {r3, r4, fp, pc} -_020F04DC: ; 0x020F04DC - add r0, fp, #0 - bl __unexpected -_020F04E4: - b _020F04E4 -_020F04E8: ; 0x020F04E8 - add sp, fp, #0x18 - ldmia sp!, {r3, r4, fp, pc} - arm_func_end _ZNSt3tr110shared_ptrIcED1Ev - - arm_func_start _ZN10Metrowerks8move_ptrIcRNSt6detail14default_deleteIA0_cEEED1Ev -_ZN10Metrowerks8move_ptrIcRNSt6detail14default_deleteIA0_cEEED1Ev: ; 0x020F04F0 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - cmp r0, #0 - beq _020F0508 - bl _ZdaPv -_020F0508: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZN10Metrowerks8move_ptrIcRNSt6detail14default_deleteIA0_cEEED1Ev - - arm_func_start _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED0Ev -_ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED0Ev: ; 0x020F0510 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED0Ev - - arm_func_start _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED1Ev -_ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED1Ev: ; 0x020F0524 - bx lr - arm_func_end _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED1Ev - - arm_func_start _ZNSt3tr16detail25shared_ptr_deleter_commonD2Ev -_ZNSt3tr16detail25shared_ptr_deleter_commonD2Ev: ; 0x020F0528 - ldr r0, [r0, #4] - bx lr - arm_func_end _ZNSt3tr16detail25shared_ptr_deleter_commonD2Ev - - arm_func_start _ZNSt11logic_errorD1Ev -_ZNSt11logic_errorD1Ev: ; 0x020F0530 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #4 - bl _ZNSt3tr110shared_ptrIcED1Ev - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt11logic_errorD1Ev - - arm_func_start _ZNSt11logic_errorD0Ev -_ZNSt11logic_errorD0Ev: ; 0x020F0548 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #4 - bl _ZNSt3tr110shared_ptrIcED1Ev - mov r0, r4 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt11logic_errorD0Ev - - arm_func_start _ZNSt12length_errorD1Ev -_ZNSt12length_errorD1Ev: ; 0x020F0568 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #4 - bl _ZNSt3tr110shared_ptrIcED1Ev - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt12length_errorD1Ev - - arm_func_start _ZNSt12length_errorD0Ev -_ZNSt12length_errorD0Ev: ; 0x020F0580 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #4 - bl _ZNSt3tr110shared_ptrIcED1Ev - mov r0, r4 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt12length_errorD0Ev - - arm_func_start _ZNSt3tr16detail25shared_ptr_deleter_common7releaseEv -_ZNSt3tr16detail25shared_ptr_deleter_common7releaseEv: ; 0x020F05A0 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #4] - subs r1, r1, #1 - str r1, [r4, #4] - ldmneia sp!, {r4, pc} - ldr r1, [r0] - ldr r1, [r1, #0xc] - blx r1 - mov r0, r4 - bl _ZNSt3tr16detail25shared_ptr_deleter_common12release_weakEv - ldmia sp!, {r4, pc} - arm_func_end _ZNSt3tr16detail25shared_ptr_deleter_common7releaseEv - - arm_func_start _ZNSt3tr16detail25shared_ptr_deleter_common12release_weakEv -_ZNSt3tr16detail25shared_ptr_deleter_common12release_weakEv: ; 0x020F05D0 - stmdb sp!, {r3, lr} - ldr r1, [r0, #8] - subs r1, r1, #1 - str r1, [r0, #8] - ldmneia sp!, {r3, pc} - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, [r0] - ldr r1, [r1, #4] - blx r1 - ldmia sp!, {r3, pc} - arm_func_end _ZNSt3tr16detail25shared_ptr_deleter_common12release_weakEv - - arm_func_start _ZNSt15__vector_commonILb1EE18throw_length_errorEv -_ZNSt15__vector_commonILb1EE18throw_length_errorEv: ; 0x020F05FC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r4, _020F0678 ; =_02111664 - ldr r1, _020F067C ; =_02111658 - add r6, sp, #4 - mov r0, r4 - str r1, [sp, #4] - add r5, sp, #8 - bl strlen - add r0, r0, #1 - rsb r0, r0, r0, lsl #1 - bl _Znam - mov r1, #0 - strb r1, [sp] - sub r2, sp, #4 - strb r1, [r2] - mov r1, r0 - ldr r2, [r2] - mov r0, r5 - bl _ZNSt3tr110shared_ptrIcEC1IcNSt6detail14default_deleteIA0_cEEEEPT_T0_ - ldr r0, [r5] - mov r1, r4 - bl strcpy - ldr r3, _020F0680 ; =_02111644 - ldr r0, _020F0684 ; =_02111678 - ldr r2, _020F0688 ; =_ZNSt12length_errorD1Ev - mov r1, r6 - str r3, [sp, #4] - bl __throw - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020F0678: .word _02111664 -_020F067C: .word _02111658 -_020F0680: .word _02111644 -_020F0684: .word _02111678 -_020F0688: .word _ZNSt12length_errorD1Ev - arm_func_end _ZNSt15__vector_commonILb1EE18throw_length_errorEv - - ; FP_fastI_v5t_LE.a - - .public _dadd - .type _dadd, @function - .public _d_add - .type _d_add, @function -_dadd: ; 0x020F068C -_d_add: - stmdb sp!, {r4, lr} - eors ip, r1, r3 - eormi r3, r3, #0x80000000 - bmi __dsub_start -__dadd_start: - subs ip, r0, r2 - sbcs lr, r1, r3 - bhs _020F06B8 - adds r2, r2, ip - adc r3, r3, lr - subs r0, r0, ip - sbc r1, r1, lr -_020F06B8: - mov lr, #0x80000000 - mov ip, r1, lsr #0x14 - orr r1, lr, r1, lsl #11 - orr r1, r1, r0, lsr #21 - mov r0, r0, lsl #0xb - movs r4, ip, lsl #0x15 - cmnne r4, #0x200000 - beq _020F07B4 - mov r4, r3, lsr #0x14 - orr r3, lr, r3, lsl #11 - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs lr, r4, lsl #0x15 - beq _020F07FC -_020F06F0: - subs r4, ip, r4 - beq _020F0748 - cmp r4, #0x20 - ble _020F072C - cmp r4, #0x38 - movge r4, #0x3f - sub r4, r4, #0x20 - rsb lr, r4, #0x20 - orrs lr, r2, r3, lsl lr - mov r2, r3, lsr r4 - orrne r2, r2, #1 - adds r0, r0, r2 - adcs r1, r1, #0 - blo _020F0770 - b _020F0754 -_020F072C: - rsb lr, r4, #0x20 - movs lr, r2, lsl lr - rsb lr, r4, #0x20 - mov r2, r2, lsr r4 - orr r2, r2, r3, lsl lr - mov r3, r3, lsr r4 - orrne r2, r2, #1 -_020F0748: - adds r0, r0, r2 - adcs r1, r1, r3 - blo _020F0770 -_020F0754: - add ip, ip, #1 - and r4, r0, #1 - movs r1, r1, rrx - orr r0, r4, r0, rrx - mov lr, ip, lsl #0x15 - cmn lr, #0x200000 - beq _020F0980 -_020F0770: - movs r2, r0, lsl #0x15 - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - mov r1, r1, lsr #0xc - orr r1, r1, ip, lsl #20 - tst r2, #0x80000000 - ldmeqia sp!, {r4, lr} - bxeq lr - movs r2, r2, lsl #1 - andeqs r2, r0, #1 - ldmeqia sp!, {r4, lr} - bxeq lr - adds r0, r0, #1 - adc r1, r1, #0 - ldmia sp!, {r4, lr} - bx lr -_020F07B4: - cmp ip, #0x800 - movge lr, #0x80000000 - movlt lr, #0 - bics ip, ip, #0x800 - beq _020F0820 - orrs r4, r0, r1, lsl #1 - bne _020F095C - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r4, r4, lsl #0x15 - beq _020F0948 - cmn r4, #0x200000 - bne _020F0948 - orrs r4, r2, r3, lsl #1 - beq _020F0948 - b _020F095C -_020F07FC: - cmp r4, #0x800 - movge lr, #0x80000000 - movlt lr, #0 - bic ip, ip, #0x800 - bics r4, r4, #0x800 - beq _020F088C - orrs r4, r2, r3, lsl #1 - bne _020F095C - b _020F0948 -_020F0820: - orrs r4, r0, r1, lsl #1 - beq _020F0860 - mov ip, #1 - bic r1, r1, #0x80000000 - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r4, r4, lsl #0x15 - cmnne r4, #0x200000 - mov r4, r4, lsr #0x15 - orr r4, r4, lr, lsr #20 - beq _020F07FC - orr r3, r3, #0x80000000 - orr ip, ip, lr, lsr #20 - b _020F06F0 -_020F0860: - mov ip, r3, lsr #0x14 - mov r1, r3, lsl #0xb - orr r1, r1, r2, lsr #21 - mov r0, r2, lsl #0xb - movs r4, ip, lsl #0x15 - beq _020F0914 - cmn r4, #0x200000 - bne _020F0914 - orrs r4, r0, r1, lsl #1 - beq _020F0948 - b _020F0960 -_020F088C: - orrs r4, r2, r3, lsl #1 - beq _020F0924 - mov r4, #1 - bic r3, r3, #0x80000000 - cmp r1, #0 - bpl _020F08B0 - orr ip, ip, lr, lsr #20 - orr r4, r4, lr, lsr #20 - b _020F06F0 -_020F08B0: - adds r0, r0, r2 - adcs r1, r1, r3 - blo _020F08D0 - add ip, ip, #1 - and r4, r0, #1 - movs r1, r1, rrx - mov r0, r0, rrx - orr r0, r0, r4 -_020F08D0: - cmp r1, #0 - subges ip, ip, #1 - movs r2, r0, lsl #0x15 - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - orr r1, lr, r1, lsr #12 - orr r1, r1, ip, lsl #20 - ldmeqia sp!, {r4, lr} - bxeq lr - tst r2, #0x80000000 - ldmeqia sp!, {r4, lr} - bxeq lr - movs r2, r2, lsl #1 - andeqs r2, r0, #1 - ldmeqia sp!, {r4, lr} - bxeq lr -_020F0914: - mov r1, r3 - mov r0, r2 - ldmia sp!, {r4, lr} - bx lr -_020F0924: - cmp r1, #0 - subges ip, ip, #1 - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - orr r1, lr, r1, lsr #12 - orr r1, r1, ip, lsl #20 - ldmia sp!, {r4, lr} - bx lr -_020F0948: - ldr r1, _020F09A0 ; =0x7FF00000 - orr r1, lr, r1 - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr -_020F095C: - mov r1, r3 -_020F0960: - mvn r0, #0 - bic r1, r0, #0x80000000 - ldmia sp!, {r4, lr} - bx lr -_020F0970: ; 0x020F0970 - mvn r0, #0 - bic r1, r0, #0x80000000 - ldmia sp!, {r4, lr} - bx lr -_020F0980: - cmp ip, #0x800 - movge lr, #0x80000000 - movlt lr, #0 - ldr r1, _020F09A0 ; =0x7FF00000 - orr r1, lr, r1 - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_020F09A0: .word 0x7FF00000 - - .public _d2f - .type _d2f, @function - .public _d_dtof - .type _d_dtof, @function - .public _f_qtof - .type _f_qtof, @function -_d2f: ; 0x020F09A4 -_d_dtof: -_f_qtof: - and r2, r1, #0x80000000 - mov ip, r1, lsr #0x14 - bics ip, ip, #0x800 - beq _020F0A1C - mov r3, ip, lsl #0x15 - cmn r3, #0x200000 - bhs _020F0A00 - subs ip, ip, #0x380 - bls _020F0A2C - cmp ip, #0xff - bge _020F0A9C - mov r1, r1, lsl #0xc - orr r3, r2, r1, lsr #9 - orr r3, r3, r0, lsr #29 - movs r1, r0, lsl #3 - orr r0, r3, ip, lsl #23 - bxeq lr - tst r1, #0x80000000 - bxeq lr - movs r1, r1, lsl #1 - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F0A00: - orrs r3, r0, r1, lsl #12 - bne _020F0A14 - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr -_020F0A14: - mvn r0, #0x80000000 - bx lr -_020F0A1C: - orrs r3, r0, r1, lsl #12 - bne __f_underflow -__f_result_zero: - mov r0, r2 - bx lr -_020F0A2C: - cmn ip, #0x17 - beq _020F0A80 - bmi __f_underflow - mov r1, r1, lsl #0xb - orr r1, r1, #0x80000000 - mov r3, r1, lsr #8 - orr r3, r3, r0, lsr #29 - rsb ip, ip, #1 - movs r1, r0, lsl #3 - orr r0, r2, r3, lsr ip - rsb ip, ip, #0x20 - mov r3, r3, lsl ip - orrne r3, r3, #1 - movs r1, r3 - bxeq lr - tst r1, #0x80000000 - bxeq lr - movs r1, r1, lsl #1 - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F0A80: - orr r0, r0, r1, lsl #12 -__f_very_tiny_result: - movs r1, r0 - mov r0, r2 - addne r0, r0, #1 - bx lr -__f_underflow: - mov r0, r2 - bx lr -_020F0A9C: - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr - - .public _dfix - .type _dfix, @function - .public _d_dtoi - .type _d_dtoi, @function -_dfix: ; 0x020F0AA8 -_d_dtoi: - bic r3, r1, #0x80000000 - ldr r2, _020F0AF0 ; =0x0000041E - subs r2, r2, r3, lsr #20 - ble _020F0AE4 - cmp r2, #0x20 - bge _020F0ADC - mov r3, r1, lsl #0xb - orr r3, r3, #0x80000000 - orr r3, r3, r0, lsr #21 - cmp r1, #0 - mov r0, r3, lsr r2 - rsbmi r0, r0, #0 - bx lr -_020F0ADC: - mov r0, #0 - bx lr -_020F0AE4: - mvn r0, r1, asr #31 - add r0, r0, #0x80000000 - bx lr - .align 2, 0 -_020F0AF0: .word 0x0000041E - - .public _dfixu - .type _dfixu, @function - .public _d_dtou - .type _d_dtou, @function -_dfixu: ; 0x020F0AF4 -_d_dtou: - tst r1, #0x80000000 - bne _020F0B2C - ldr r2, _020F0B48 ; =0x0000041E - subs r2, r2, r1, lsr #20 - blt _020F0B40 - cmp r2, #0x20 - bge _020F0B24 - mov r3, r1, lsl #0xb - orr r3, r3, #0x80000000 - orr r3, r3, r0, lsr #21 - mov r0, r3, lsr r2 - bx lr -_020F0B24: - mov r0, #0 - bx lr -_020F0B2C: - cmn r1, #0x100000 - cmpeq r0, #0 - movls r0, #0 - mvnhi r0, #0 - bx lr -_020F0B40: - mvn r0, #0 - bx lr - .align 2, 0 -_020F0B48: .word 0x0000041E - - .public _ll_ufrom_d - .type _ll_ufrom_d, @function - .public _d_dtoull - .type _d_dtoull, @function -_ll_ufrom_d: ; 0x020F0B4C -_d_dtoull: - tst r1, #0x80000000 - bne _020F0BB0 - ldr r2, _020F0BD4 ; =0x0000043E - subs r2, r2, r1, lsr #20 - blt _020F0BC8 - cmp r2, #0x40 - bge _020F0BA4 - mov ip, r1, lsl #0xb - orr ip, ip, #0x80000000 - orr ip, ip, r0, lsr #21 - cmp r2, #0x20 - ble _020F0B8C - sub r2, r2, #0x20 - mov r1, #0 - mov r0, ip, lsr r2 - bx lr -_020F0B8C: - mov r3, r0, lsl #0xb - mov r1, ip, lsr r2 - mov r0, r3, lsr r2 - rsb r2, r2, #0x20 - orr r0, r0, ip, lsl r2 - bx lr -_020F0BA4: - mov r1, #0 - mov r0, #0 - bx lr -_020F0BB0: - cmn r1, #0x100000 - cmpeq r0, #0 - bhi _020F0BC8 - mov r1, #0 - mov r0, #0 - bx lr -_020F0BC8: - mvn r1, #0 - mvn r0, #0 - bx lr - .align 2, 0 -_020F0BD4: .word 0x0000043E - - .public _dflt - .type _dflt, @function - .public _d_itod - .type _d_itod, @function -_dflt: ; 0x020F0BD8 -_d_itod: - ands r2, r0, #0x80000000 - rsbmi r0, r0, #0 - cmp r0, #0 -__d_itod_common: - mov r1, #0 - bxeq lr - mov r3, #0x400 - add r3, r3, #0x1e - clz ip, r0 - movs r0, r0, lsl ip - sub r3, r3, ip - movs r1, r0 - mov r0, r1, lsl #0x15 - add r1, r1, r1 - orr r1, r2, r1, lsr #12 - orr r1, r1, r3, lsl #20 - bx lr - - .public _dfltu - .type _dfltu, @function - .public _d_utod - .type _d_utod, @function -_dfltu: ; 0x020F0C18 -_d_utod: - cmp r0, #0 -__d_utod_common: - mov r1, #0 - bxeq lr - mov r3, #0x400 - add r3, r3, #0x1e - bmi _020F0C3C - clz ip, r0 - movs r0, r0, lsl ip - sub r3, r3, ip -_020F0C3C: - mov r1, r0 - mov r0, r1, lsl #0x15 - add r1, r1, r1 - mov r1, r1, lsr #0xc - orr r1, r1, r3, lsl #20 - bx lr - - .public _dmul - .type _dmul, @function - .public _d_mul - .type _d_mul, @function -_dmul: ; 0x020F0C54 -_d_mul: - stmdb sp!, {r4, r5, r6, r7, lr} - eor lr, r1, r3 - and lr, lr, #0x80000000 - mov ip, r1, lsr #0x14 - mov r1, r1, lsl #0xb - orr r1, r1, r0, lsr #21 - mov r0, r0, lsl #0xb - movs r6, ip, lsl #0x15 - cmnne r6, #0x200000 - beq _020F0D5C - orr r1, r1, #0x80000000 - bic ip, ip, #0x800 - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r5, r4, lsl #0x15 - cmnne r5, #0x200000 - beq _020F0DA4 - orr r3, r3, #0x80000000 - bic r4, r4, #0x800 -_020F0CA8: - add ip, r4, ip - umull r5, r4, r0, r2 - umull r7, r6, r0, r3 - adds r4, r7, r4 - adc r6, r6, #0 - umull r7, r0, r1, r2 - adds r4, r7, r4 - adcs r0, r0, r6 - umull r7, r2, r1, r3 - adc r1, r2, #0 - adds r0, r0, r7 - adc r1, r1, #0 - orrs r4, r4, r5 - orrne r0, r0, #1 - cmp r1, #0 - blt _020F0CF4 - sub ip, ip, #1 - adds r0, r0, r0 - adc r1, r1, r1 -_020F0CF4: - add ip, ip, #2 - subs ip, ip, #0x400 - bmi _020F0E90 - beq _020F0E90 - mov r6, ip, lsl #0x14 - cmn r6, #0x100000 - bmi _020F0F90 - movs r2, r0, lsl #0x15 - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - orr r1, lr, r1, lsr #12 - orr r1, r1, ip, lsl #20 - ldmeqia sp!, {r4, r5, r6, r7, lr} - bxeq lr - tst r2, #0x80000000 - ldmeqia sp!, {r4, r5, r6, r7, lr} - bxeq lr - movs r2, r2, lsl #1 - andeqs r2, r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, lr} - bxeq lr - adds r0, r0, #1 - adc r1, r1, #0 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0D5C: - bics ip, ip, #0x800 - beq _020F0DB8 - orrs r6, r0, r1, lsl #1 - bne _020F0F44 - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r5, r4, lsl #0x15 - beq _020F0D98 - cmn r5, #0x200000 - bne _020F0F30 - orrs r5, r2, r3, lsl #1 - beq _020F0F30 - b _020F0F44 -_020F0D98: - orrs r5, r3, r2 - beq _020F0F58 - b _020F0F30 -_020F0DA4: - bics r4, r4, #0x800 - beq _020F0E4C - orrs r6, r2, r3, lsl #1 - bne _020F0F44 - b _020F0F30 -_020F0DB8: - orrs r6, r0, r1, lsl #1 - beq _020F0E20 - mov ip, #1 - cmp r1, #0 - bne _020F0DDC - sub ip, ip, #0x20 - movs r1, r0 - mov r0, #0 - bmi _020F0DF8 -_020F0DDC: - clz r6, r1 - movs r1, r1, lsl r6 - rsb r6, r6, #0x20 - orr r1, r1, r0, lsr r6 - rsb r6, r6, #0x20 - mov r0, r0, lsl r6 - sub ip, ip, r6 -_020F0DF8: - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r5, r4, lsl #0x15 - cmnne r5, #0x200000 - beq _020F0DA4 - orr r3, r3, #0x80000000 - bic r4, r4, #0x800 - b _020F0CA8 -_020F0E20: - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r5, r4, lsl #0x15 - beq _020F0FA4 - cmn r5, #0x200000 - bne _020F0FA4 - orrs r6, r2, r3, lsl #1 - beq _020F0F58 - b _020F0F44 -_020F0E4C: - orrs r5, r2, r3, lsl #1 - beq _020F0FA4 - mov r4, #1 - cmp r3, #0 - bne _020F0E70 - sub r4, r4, #0x20 - movs r3, r2 - mov r2, #0 - bmi _020F0CA8 -_020F0E70: - clz r6, r3 - movs r3, r3, lsl r6 - rsb r6, r6, #0x20 - orr r3, r3, r2, lsr r6 - rsb r6, r6, #0x20 - mov r2, r2, lsl r6 - sub r4, r4, r6 - b _020F0CA8 -_020F0E90: - cmn ip, #0x34 - beq _020F0F28 - bmi _020F0F80 - mov r2, r1 - mov r3, r0 - add r4, ip, #0x34 - cmp r4, #0x20 - movge r2, r3 - movge r3, #0 - subge r4, r4, #0x20 - rsb r5, r4, #0x20 - mov r2, r2, lsl r4 - orr r2, r2, r3, lsr r5 - movs r3, r3, lsl r4 - orrne r2, r2, #1 - rsb ip, ip, #0xc - cmp ip, #0x20 - movge r0, r1 - movge r1, #0 - subge ip, ip, #0x20 - rsb r4, ip, #0x20 - mov r0, r0, lsr ip - orr r0, r0, r1, lsl r4 - orr r1, lr, r1, lsr ip - cmp r2, #0 - ldmeqia sp!, {r4, r5, r6, r7, lr} - bxeq lr - tst r2, #0x80000000 - ldmeqia sp!, {r4, r5, r6, r7, lr} - bxeq lr - movs r2, r2, lsl #1 - andeqs r2, r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, lr} - bxeq lr - adds r0, r0, #1 - adc r1, r1, #0 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0F28: - orr r0, r0, r1, lsl #1 - b _020F0F68 -_020F0F30: - ldr r1, _020F0FB4 ; =0x7FF00000 - orr r1, lr, r1 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0F44: - mov r1, r3 - mvn r0, #0 - bic r1, r0, #0x80000000 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0F58: - mvn r0, #0 - bic r1, r0, #0x80000000 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0F68: - movs r2, r0 - mov r1, lr - mov r0, #0 - addne r0, r0, #1 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0F80: - mov r1, lr - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0F90: - ldr r1, _020F0FB4 ; =0x7FF00000 - orr r1, lr, r1 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr -_020F0FA4: - mov r1, lr - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_020F0FB4: .word 0x7FF00000 - - .public _dsqrt - .type _dsqrt, @function -_dsqrt: ; 0x020F0FB8 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _020F1148 ; =0x7FF00000 - cmp r1, r2 - bhs _020F1104 - movs ip, r1, lsr #0x14 - beq _020F10B0 - bic r1, r1, r2 - orr r1, r1, #0x100000 -_020F0FD8: - movs ip, ip, asr #1 - bhs _020F0FEC - sub ip, ip, #1 - movs r0, r0, lsl #1 - adc r1, r1, r1 -_020F0FEC: - movs r3, r0, lsl #1 - adc r1, r1, r1 - mov r2, #0 - mov r4, #0 - mov lr, #0x200000 -_020F1000: - add r6, r4, lr - cmp r6, r1 - addle r4, r6, lr - suble r1, r1, r6 - addle r2, r2, lr - movs r3, r3, lsl #1 - adc r1, r1, r1 - movs lr, lr, lsr #1 - bne _020F1000 - mov r0, #0 - mov r5, #0 - cmp r1, r4 - cmpeq r3, #0x80000000 - blo _020F1048 - subs r3, r3, #0x80000000 - sbc r1, r1, r4 - add r4, r4, #1 - mov r0, #0x80000000 -_020F1048: - movs r3, r3, lsl #1 - adc r1, r1, r1 - mov lr, #0x40000000 -_020F1054: - add r6, r5, lr - cmp r4, r1 - cmpeq r6, r3 - bhi _020F1074 - add r5, r6, lr - subs r3, r3, r6 - sbc r1, r1, r4 - add r0, r0, lr -_020F1074: - movs r3, r3, lsl #1 - adc r1, r1, r1 - movs lr, lr, lsr #1 - bne _020F1054 - orrs r1, r1, r3 - biceq r0, r0, #1 - movs r1, r2, lsr #1 - movs r0, r0, rrx - adcs r0, r0, #0 - adc r1, r1, #0 - add r1, r1, #0x20000000 - sub r1, r1, #0x100000 - add r1, r1, ip, lsl #20 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F10B0: - cmp r1, #0 - bne _020F10E0 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, lr} - bxeq lr - mvn ip, #0x13 - clz r5, r0 - movs r0, r0, lsl r5 - sub ip, ip, r5 - mov r1, r0, lsr #0xb - mov r0, r0, lsl #0x15 - b _020F0FD8 -_020F10E0: - clz r2, r1 - movs r1, r1, lsl r2 - rsb r2, r2, #0x2b - mov r1, r1, lsr #0xb - orr r1, r1, r0, lsr r2 - rsb r2, r2, #0x20 - mov r0, r0, lsl r2 - rsb ip, r2, #1 - b _020F0FD8 -_020F1104: - tst r1, #0x80000000 - beq _020F1120 - bics r3, r1, #0x80000000 - cmpeq r0, #0 - ldmeqia sp!, {r4, r5, r6, lr} - bxeq lr - b _020F112C -_020F1120: - orrs r2, r0, r1, lsl #12 - ldmeqia sp!, {r4, r5, r6, lr} - bxeq lr -_020F112C: - ldr r2, _020F114C ; =0x7FF80000 - orr r1, r1, r2 - ldr r3, _020F1150 ; =_021E58C0 - mov r4, #0x21 - str r4, [r3] - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_020F1148: .word 0x7FF00000 -_020F114C: .word 0x7FF80000 -_020F1150: .word _021E58C0 - - .public _drsb - .type _drsb, @function -_drsb: ; 0x020F1154 - eor r1, r1, r3 - eor r3, r1, r3 - eor r1, r1, r3 - eor r0, r0, r2 - eor r2, r0, r2 - eor r0, r0, r2 - .public _dsub - .type _dsub, @function - .public _d_sub - .type _d_sub, @function -_dsub: ; 0x020F116C -_d_sub: ; 0x020F116C - stmdb sp!, {r4, lr} - eors ip, r1, r3 - eormi r3, r3, #0x80000000 - bmi __dadd_start -__dsub_start: - subs ip, r0, r2 - sbcs lr, r1, r3 - bhs _020F119C - eor lr, lr, #0x80000000 - adds r2, r2, ip - adc r3, r3, lr - subs r0, r0, ip - sbc r1, r1, lr -_020F119C: - mov lr, #0x80000000 - mov ip, r1, lsr #0x14 - orr r1, lr, r1, lsl #11 - orr r1, r1, r0, lsr #21 - mov r0, r0, lsl #0xb - movs r4, ip, lsl #0x15 - cmnne r4, #0x200000 - beq _020F13A0 - mov r4, r3, lsr #0x14 - orr r3, lr, r3, lsl #11 - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs lr, r4, lsl #0x15 - beq _020F13E8 -_020F11D4: - subs r4, ip, r4 - beq _020F127C - cmp r4, #0x20 - ble _020F1210 - cmp r4, #0x38 - movge r4, #0x3f - sub r4, r4, #0x20 - rsb lr, r4, #0x20 - orrs lr, r2, r3, lsl lr - mov r2, r3, lsr r4 - orrne r2, r2, #1 - subs r0, r0, r2 - sbcs r1, r1, #0 - bmi _020F1238 - b _020F1328 -_020F1210: - rsb lr, r4, #0x20 - movs lr, r2, lsl lr - rsb lr, r4, #0x20 - mov r2, r2, lsr r4 - orr r2, r2, r3, lsl lr - mov r3, r3, lsr r4 - orrne r2, r2, #1 - subs r0, r0, r2 - sbcs r1, r1, r3 - bpl _020F1328 -_020F1238: - movs r2, r0, lsl #0x15 - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - mov r1, r1, lsr #0xc - orr r1, r1, ip, lsl #20 - tst r2, #0x80000000 - ldmeqia sp!, {r4, lr} - bxeq lr - movs r2, r2, lsl #1 - andeqs r2, r0, #1 - ldmeqia sp!, {r4, lr} - bxeq lr - adds r0, r0, #1 - adc r1, r1, #0 - ldmia sp!, {r4, lr} - bx lr -_020F127C: - subs r0, r0, r2 - sbc r1, r1, r3 - orrs lr, r1, r0 - beq _020F150C - mov lr, ip, lsl #0x14 - and lr, lr, #0x80000000 - bic ip, ip, #0x800 - cmp r1, #0 - bmi _020F1304 - bne _020F12B4 - sub ip, ip, #0x20 - movs r1, r0 - mov r0, #0 - bmi _020F12D0 -_020F12B4: - clz r4, r1 - movs r1, r1, lsl r4 - rsb r4, r4, #0x20 - orr r1, r1, r0, lsr r4 - rsb r4, r4, #0x20 - mov r0, r0, lsl r4 - sub ip, ip, r4 -_020F12D0: - cmp ip, #0 - bgt _020F130C - rsb ip, ip, #0xc - cmp ip, #0x20 - movge r0, r1 - movge r1, #0 - subge ip, ip, #0x20 - rsb r4, ip, #0x20 - mov r0, r0, lsr ip - orr r0, r0, r1, lsl r4 - orr r1, lr, r1, lsr ip - ldmia sp!, {r4, lr} - bx lr -_020F1304: - cmp r1, #0 - subges ip, ip, #1 -_020F130C: - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - orr r1, lr, r1, lsr #12 - orr r1, r1, ip, lsl #20 - ldmia sp!, {r4, lr} - bx lr -_020F1328: - mov lr, ip, lsl #0x14 - and lr, lr, #0x80000000 - bic ip, ip, #0x800 - cmp r1, #0 - bne _020F134C - sub ip, ip, #0x20 - movs r1, r0 - mov r0, #0 - bmi _020F1368 -_020F134C: - clz r4, r1 - movs r1, r1, lsl r4 - rsb r4, r4, #0x20 - orr r1, r1, r0, lsr r4 - rsb r4, r4, #0x20 - mov r0, r0, lsl r4 - sub ip, ip, r4 -_020F1368: - cmp ip, #0 - orrgt ip, ip, lr, lsr #20 - bgt _020F1238 - rsb ip, ip, #0xc - cmp ip, #0x20 - movge r0, r1 - movge r1, #0 - subge ip, ip, #0x20 - rsb r4, ip, #0x20 - mov r0, r0, lsr ip - orr r0, r0, r1, lsl r4 - orr r1, lr, r1, lsr ip - ldmia sp!, {r4, lr} - bx lr -_020F13A0: - cmp ip, #0x800 - movge lr, #0x80000000 - movlt lr, #0 - bics ip, ip, #0x800 - beq _020F140C - orrs r4, r0, r1, lsl #1 - bne _020F14E8 - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r4, r4, lsl #0x15 - beq _020F14D4 - cmn r4, #0x200000 - bne _020F14D4 - orrs r4, r2, r3, lsl #1 - beq _020F14FC - b _020F14E8 -_020F13E8: - cmp r4, #0x800 - movge lr, #0x80000000 - movlt lr, #0 - bic ip, ip, #0x800 - bics r4, r4, #0x800 - beq _020F1484 - orrs r4, r2, r3, lsl #1 - bne _020F14E8 - b _020F14D4 -_020F140C: - orrs r4, r0, r1, lsl #1 - beq _020F144C - mov ip, #1 - bic r1, r1, #0x80000000 - mov r4, r3, lsr #0x14 - mov r3, r3, lsl #0xb - orr r3, r3, r2, lsr #21 - mov r2, r2, lsl #0xb - movs r4, r4, lsl #0x15 - cmnne r4, #0x200000 - mov r4, r4, lsr #0x15 - orr r4, r4, lr, lsr #20 - beq _020F13E8 - orr r3, r3, #0x80000000 - orr ip, ip, lr, lsr #20 - b _020F11D4 -_020F144C: - mov ip, r3, lsr #0x14 - mov r1, r3, lsl #0xb - orr r1, r1, r2, lsr #21 - mov r0, r2, lsl #0xb - movs r4, ip, lsl #0x15 - beq _020F1478 - cmn r4, #0x200000 - bne _020F14A0 - orrs r4, r0, r1, lsl #1 - bne _020F14EC - b _020F14D4 -_020F1478: - orrs r4, r0, r1, lsl #1 - beq _020F150C - b _020F14A0 -_020F1484: - orrs r4, r2, r3, lsl #1 - beq _020F14B0 - mov r4, #1 - bic r3, r3, #0x80000000 - orr ip, ip, lr, lsr #20 - orr r4, r4, lr, lsr #20 - b _020F11D4 -_020F14A0: - mov r1, r3 - mov r0, r2 - ldmia sp!, {r4, lr} - bx lr -_020F14B0: - cmp r1, #0 - subges ip, ip, #1 - mov r0, r0, lsr #0xb - orr r0, r0, r1, lsl #21 - add r1, r1, r1 - orr r1, lr, r1, lsr #12 - orr r1, r1, ip, lsl #20 - ldmia sp!, {r4, lr} - bx lr -_020F14D4: - ldr r1, _020F151C ; =0x7FF00000 - orr r1, lr, r1 - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr -_020F14E8: - mov r1, r3 -_020F14EC: - mvn r0, #0 - bic r1, r0, #0x80000000 - ldmia sp!, {r4, lr} - bx lr -_020F14FC: - mvn r0, #0 - bic r1, r0, #0x80000000 - ldmia sp!, {r4, lr} - bx lr -_020F150C: - mov r1, #0 - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_020F151C: .word 0x7FF00000 - - arm_func_start _fadd - arm_func_start _f_add -_fadd: ; 0x020F1520 -_f_add: ; 0x020F1520 - eors r2, r0, r1 - eormi r1, r1, #0x80000000 - bmi __fsub_start -__fadd_start: - subs ip, r0, r1 - sublo r0, r0, ip - addlo r1, r1, ip - mov r2, #0x80000000 - mov r3, r0, lsr #0x17 - orr r0, r2, r0, lsl #8 - ands ip, r3, #0xff - cmpne ip, #0xff - beq _020F15C0 - mov ip, r1, lsr #0x17 - orr r1, r2, r1, lsl #8 - ands r2, ip, #0xff - beq _020F1600 -_020F1560: - subs ip, r3, ip - beq _020F1578 - rsb r2, ip, #0x20 - movs r2, r1, lsl r2 - mov r1, r1, lsr ip - orrne r1, r1, #1 -_020F1578: - adds r0, r0, r1 - blo _020F1598 - and r1, r0, #1 - orr r0, r1, r0, rrx - add r3, r3, #1 - and r2, r3, #0xff - cmp r2, #0xff - beq _020F1708 -_020F1598: - ands r1, r0, #0xff - add r0, r0, r0 - mov r0, r0, lsr #9 - orr r0, r0, r3, lsl #23 - tst r1, #0x80 - bxeq lr - ands r1, r1, #0x7f - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F15C0: - cmp r3, #0x100 - movge r2, #0x80000000 - movlt r2, #0 - ands r3, r3, #0xff - beq _020F1624 - movs r0, r0, lsl #1 - bne _020F1734 - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #9 - ands ip, ip, #0xff - beq _020F1728 - cmp ip, #0xff - blt _020F1728 - cmp r1, #0 - beq _020F1728 - b _020F1734 -_020F1600: - cmp r3, #0x100 - movge r2, #0x80000000 - movlt r2, #0 - and r3, r3, #0xff - ands ip, ip, #0xff - beq _020F1680 -_020F1618: - movs r1, r1, lsl #1 - bne _020F1734 - b _020F1728 -_020F1624: - movs r0, r0, lsl #1 - beq _020F165C - mov r3, #1 - mov r0, r0, lsr #1 - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #8 - ands ip, ip, #0xff - beq _020F1680 - cmp ip, #0xff - beq _020F1618 - orr r1, r1, #0x80000000 - orr r3, r3, r2, lsr #23 - orr ip, ip, r2, lsr #23 - b _020F1560 -_020F165C: - mov r3, r1, lsr #0x17 - mov r0, r1, lsl #9 - ands r3, r3, #0xff - beq _020F16E8 - cmp r3, #0xff - blt _020F16E8 - cmp r0, #0 - beq _020F1728 - b _020F1720 -_020F1680: - movs r1, r1, lsl #1 - beq _020F16F0 - mov r1, r1, lsr #1 - mov ip, #1 - orr r3, r3, r2, lsr #23 - orr ip, ip, r2, lsr #23 - cmp r0, #0 - bmi _020F1560 - adds r0, r0, r1 - blo _020F16B4 - and r1, r0, #1 - orr r0, r1, r0, rrx - add ip, ip, #1 -_020F16B4: - cmp r0, #0 - subge ip, ip, #1 - ands r1, r0, #0xff - add r0, r0, r0 - mov r0, r0, lsr #9 - orr r0, r0, ip, lsl #23 - bxeq lr - tst r1, #0x80 - bxeq lr - ands r1, r1, #0x7f - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F16E8: - mov r0, r1 - bx lr -_020F16F0: - cmp r0, #0 - subges r3, r3, #1 - add r0, r0, r0 - orr r0, r2, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bx lr -_020F1708: - cmp r3, #0x100 - movge r2, #0x80000000 - movlt r2, #0 - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr -_020F1720: - mvn r0, #0x80000000 - bx lr -_020F1728: - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr -_020F1734: - mvn r0, #0x80000000 - bx lr -_020F173C: ; 0x020F173C - mvn r0, #0x80000000 - bx lr - - .public _dgeq - .type _dgeq, @function - .public _d_fge - .type _d_fge, @function -_dgeq: ; 0x020F1744 -_d_fge: - mov ip, #0x200000 - cmn ip, r1, lsl #1 - bhs _020F17B8 - cmn ip, r3, lsl #1 - bhs _020F17CC -_020F1758: - orrs ip, r3, r1 - bmi _020F1788 - cmp r1, r3 - cmpeq r0, r2 - movhs r0, #1 - movlo r0, #0 - bx lr -_020F1774: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr -_020F1788: - orr ip, r0, ip, lsl #1 - orrs ip, ip, r2 - moveq r0, #1 - mrs ip, cpsr - orr ip, ip, #0x20000000 - msr cpsr_f, ip - bxeq lr - cmp r3, r1 - cmpeq r2, r0 - movhs r0, #1 - movlo r0, #0 - bx lr -_020F17B8: - bne _020F1774 - cmp r0, #0 - bhi _020F1774 - cmn ip, r3, lsl #1 - blo _020F1758 -_020F17CC: - bne _020F1774 - cmp r2, #0 - bhi _020F1774 - b _020F1758 - - .public _dgr - .type _dgr, @function - .public _d_fgt - .type _d_fgt, @function -_dgr: ; 0x020F17DC -_d_fgt: - mov ip, #0x200000 - cmn ip, r1, lsl #1 - bhs _020F1850 - cmn ip, r3, lsl #1 - bhs _020F1864 -_020F17F0: - orrs ip, r3, r1 - bmi _020F1820 - cmp r1, r3 - cmpeq r0, r2 - movhi r0, #1 - movls r0, #0 - bx lr -_020F180C: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr -_020F1820: - orr ip, r0, ip, lsl #1 - orrs ip, ip, r2 - moveq r0, #0 - mrs ip, cpsr - bic ip, ip, #0x20000000 - msr cpsr_f, ip - bxeq lr - cmp r3, r1 - cmpeq r2, r0 - movhi r0, #1 - movls r0, #0 - bx lr -_020F1850: - bne _020F180C - cmp r0, #0 - bhi _020F180C - cmn ip, r3, lsl #1 - blo _020F17F0 -_020F1864: - bne _020F180C - cmp r2, #0 - bhi _020F180C - b _020F17F0 - - .public _dleq - .type _dleq, @function - .public _d_fle - .type _d_fle, @function -_dleq: ; 0x020F1874 -_d_fle: - mov ip, #0x200000 - cmn ip, r1, lsl #1 - bhs _020F18F4 - cmn ip, r3, lsl #1 - bhs _020F1908 -_020F1888: - orrs ip, r3, r1 - bmi _020F18BC - cmp r1, r3 - cmpeq r0, r2 - movls r0, #1 - movhi r0, #0 - bx lr -_020F18A4: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x40000000 - orr ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr -_020F18BC: - orr ip, r0, ip, lsl #1 - orrs ip, ip, r2 - moveq r0, #1 - bne _020F18E0 - mrs ip, cpsr - bic ip, ip, #0x20000000 - orr ip, ip, #0x40000000 - msr cpsr_f, ip - bxeq lr -_020F18E0: - cmp r3, r1 - cmpeq r2, r0 - movls r0, #1 - movhi r0, #0 - bx lr -_020F18F4: - bne _020F18A4 - cmp r0, #0 - bhi _020F18A4 - cmn ip, r3, lsl #1 - blo _020F1888 -_020F1908: - bne _020F18A4 - cmp r2, #0 - bhi _020F18A4 - b _020F1888 - - .public _dls - .type _dls, @function - .public _d_flt - .type _d_flt, @function -_dls: ; 0x020F1918 -_d_flt: - mov ip, #0x200000 - cmn ip, r1, lsl #1 - bhs _020F1990 - cmn ip, r3, lsl #1 - bhs _020F19A4 -_020F192C: - orrs ip, r3, r1 - bmi _020F195C - cmp r1, r3 - cmpeq r0, r2 - movlo r0, #1 - movhs r0, #0 - bx lr -_020F1948: - mov r0, #0 - mrs ip, cpsr - orr ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr -_020F195C: - orr ip, r0, ip, lsl #1 - orrs ip, ip, r2 - moveq r0, #0 - bne _020F197C - mrs ip, cpsr - orr ip, ip, #0x20000000 - msr cpsr_f, ip - bxeq lr -_020F197C: - cmp r3, r1 - cmpeq r2, r0 - movlo r0, #1 - movhs r0, #0 - bx lr -_020F1990: - bne _020F1948 - cmp r0, #0 - bhi _020F1948 - cmn ip, r3, lsl #1 - blo _020F192C -_020F19A4: - bne _020F1948 - cmp r2, #0 - bhi _020F1948 - b _020F192C - - .public _deq - .type _deq, @function - .public _d_feq - .type _d_feq, @function -_deq: ; 0x020F19B4 -_d_feq: - mov ip, #0x200000 - cmn ip, r1, lsl #1 - bhs _020F1A1C - cmn ip, r3, lsl #1 - bhs _020F1A30 -_020F19C8: - orrs ip, r3, r1 - bmi _020F19F8 - cmp r1, r3 - cmpeq r0, r2 - moveq r0, #1 - movne r0, #0 - bx lr -_020F19E4: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F19F8: - orr ip, r0, ip, lsl #1 - orrs ip, ip, r2 - moveq r0, #1 - bxeq lr - cmp r3, r1 - cmpeq r2, r0 - moveq r0, #1 - movne r0, #0 - bx lr -_020F1A1C: - bne _020F19E4 - cmp r0, #0 - bhi _020F19E4 - cmn ip, r3, lsl #1 - blo _020F19C8 -_020F1A30: - bne _020F19E4 - cmp r2, #0 - bhi _020F19E4 - b _020F19C8 - - .public _dneq - .type _dneq, @function - .public _d_fne - .type _d_fne, @function -_dneq: ; 0x020F1A40 -_d_fne: - mov ip, #0x200000 - cmn ip, r1, lsl #1 - bhs _020F1AA8 - cmn ip, r3, lsl #1 - bhs _020F1ABC -_020F1A54: - orrs ip, r3, r1 - bmi _020F1A84 - cmp r1, r3 - cmpeq r0, r2 - movne r0, #1 - moveq r0, #0 - bx lr -_020F1A70: - mov r0, #1 - mrs ip, cpsr - bic ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F1A84: - orr ip, r0, ip, lsl #1 - orrs ip, ip, r2 - moveq r0, #0 - bxeq lr - cmp r3, r1 - cmpeq r2, r0 - movne r0, #1 - moveq r0, #0 - bx lr -_020F1AA8: - bne _020F1A70 - cmp r0, #0 - bhi _020F1A70 - cmn ip, r3, lsl #1 - blo _020F1A54 -_020F1ABC: - bne _020F1A70 - cmp r2, #0 - bhi _020F1A70 - b _020F1A54 - - .public _fgr - .type _fgr, @function - .public _f_fgt - .type _f_fgt, @function -_fgr: ; 0x020F1ACC -_f_fgt: - mov r3, #0xff000000 - cmp r3, r0, lsl #1 - cmphs r3, r1, lsl #1 - blo _020F1B14 - cmp r0, #0 - bicmi r0, r0, #0x80000000 - rsbmi r0, r0, #0 - cmp r1, #0 - bicmi r1, r1, #0x80000000 - rsbmi r1, r1, #0 - cmp r0, r1 - movgt r0, #1 - movle r0, #0 - mrs ip, cpsr - bicle ip, ip, #0x20000000 - orrgt ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr -_020F1B14: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr - - .public _fleq - .type _fleq, @function - .public _f_fle - .type _f_fle, @function -_fleq: ; 0x020F1B28 -_f_fle: - mov r3, #0xff000000 - cmp r3, r0, lsl #1 - cmphs r3, r1, lsl #1 - blo _020F1B78 - cmp r0, #0 - bicmi r0, r0, #0x80000000 - rsbmi r0, r0, #0 - cmp r1, #0 - bicmi r1, r1, #0x80000000 - rsbmi r1, r1, #0 - cmp r0, r1 - movle r0, #1 - movgt r0, #0 - mrs ip, cpsr - orrgt ip, ip, #0x20000000 - bicgt ip, ip, #0x40000000 - bicle ip, ip, #0x20000000 - orrle ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F1B78: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x40000000 - orr ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr - - .public _fls - .type _fls, @function - .public _f_flt - .type _f_flt, @function -_fls: ; 0x020F1B90 -_f_flt: - mov r3, #0xff000000 - cmp r3, r0, lsl #1 - cmphs r3, r1, lsl #1 - blo _020F1BD8 - cmp r0, #0 - bicmi r0, r0, #0x80000000 - rsbmi r0, r0, #0 - cmp r1, #0 - bicmi r1, r1, #0x80000000 - rsbmi r1, r1, #0 - cmp r0, r1 - movlt r0, #1 - movge r0, #0 - mrs ip, cpsr - orrge ip, ip, #0x20000000 - biclt ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr -_020F1BD8: - mov r0, #0 - mrs ip, cpsr - orr ip, ip, #0x20000000 - msr cpsr_f, ip - bx lr - - .public _feq - .type _feq, @function - .public _f_feq - .type _f_feq, @function -_feq: ; 0x020F1BEC -_f_feq: - mov r3, #0xff000000 - cmp r3, r0, lsl #1 - blo _020F1C40 - cmp r3, r1, lsl #1 - blo _020F1C40 - orr r3, r0, r1 - movs r3, r3, lsl #1 - moveq r0, #1 - bne _020F1C20 - mrs ip, cpsr - orr ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F1C20: - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - mrs ip, cpsr - orreq ip, ip, #0x40000000 - bicne ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F1C40: - mov r0, #0 - mrs ip, cpsr - bic ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr - - .public _fneq - .type _fneq, @function - .public _f_fne - .type _f_fne, @function -_fneq: ; 0x020F1C54 -_f_fne: - mov r3, #0xff000000 - cmp r3, r0, lsl #1 - blo _020F1CA8 - cmp r3, r1, lsl #1 - blo _020F1CA8 - orr r3, r0, r1 - movs r3, r3, lsl #1 - moveq r0, #0 - bne _020F1C88 - mrs ip, cpsr - orr ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F1C88: - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - mrs ip, cpsr - bicne ip, ip, #0x40000000 - orreq ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr -_020F1CA8: - mov r0, #1 - mrs ip, cpsr - bic ip, ip, #0x40000000 - msr cpsr_f, ip - bx lr - - .public _frdiv - .type _frdiv, @function -_frdiv: ; 0x020F1CBC - eor r0, r0, r1 - eor r1, r0, r1 - eor r0, r0, r1 - .public _fdiv - .type _fdiv, @function - .public _f_div - .type _f_div, @function -_fdiv: ; 0x020F1CC8 -_f_div: - stmdb sp!, {lr} - mov ip, #0xff - ands r3, ip, r0, lsr #23 - cmpne r3, #0xff - beq _020F1E9C - ands ip, ip, r1, lsr #23 - cmpne ip, #0xff - beq _020F1ED8 - orr r1, r1, #0x800000 - orr r0, r0, #0x800000 - bic r2, r0, #0xff000000 - bic lr, r1, #0xff000000 -_020F1CF8: - cmp r2, lr - movlo r2, r2, lsl #1 - sublo r3, r3, #1 - teq r0, r1 - adr r0, UNK_020F1D7C - 0x100 - ldrb r1, [r0, lr, lsr #15] - rsb lr, lr, #0 - mov r0, lr, asr #1 - mul r0, r1, r0 - add r0, r0, #0x80000000 - mov r0, r0, lsr #6 - mul r0, r1, r0 - mov r0, r0, lsr #0xe - mul r1, lr, r0 - sub ip, r3, ip - mov r1, r1, lsr #0xc - mul r1, r0, r1 - mov r0, r0, lsl #0xe - add r0, r0, r1, lsr #15 - umull r1, r0, r2, r0 - mov r3, r0 - orrmi r0, r0, #0x80000000 - adds ip, ip, #0x7e - bmi _020F1FA0 - cmp ip, #0xfe - bge _020F2054 - add r0, r0, ip, lsl #23 - mov ip, r1, lsr #0x1c - cmp ip, #7 - beq _020F1E7C - add r0, r0, r1, lsr #31 - ldmia sp!, {lr} - bx lr -UNK_020F1D7C: ; 0x020F1D7C - .byte 0xFF, 0xFF, 0xFE, 0xFD - .byte 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE - .byte 0xED, 0xEC, 0xEB, 0xEA, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1 - .byte 0xE0, 0xDF, 0xDF, 0xDE, 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5 - .byte 0xD4, 0xD4, 0xD3, 0xD2, 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB - .byte 0xCA, 0xC9, 0xC9, 0xC8, 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1 - .byte 0xC0, 0xC0, 0xBF, 0xBF, 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8 - .byte 0xB8, 0xB7, 0xB7, 0xB6, 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0 - .byte 0xB0, 0xAF, 0xAF, 0xAF, 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9 - .byte 0xA9, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2 - .byte 0xA2, 0xA2, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C - .byte 0x9C, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96 - .byte 0x96, 0x96, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91 - .byte 0x91, 0x91, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C - .byte 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88 - .byte 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83 - .byte 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80 -_020F1E7C: - mov r1, r3, lsl #1 - add r1, r1, #1 - rsb lr, lr, #0 - mul r1, lr, r1 - cmp r1, r2, lsl #24 - addmi r0, r0, #1 - ldmia sp!, {lr} - bx lr -_020F1E9C: - eor lr, r0, r1 - and lr, lr, #0x80000000 - cmp r3, #0 - beq _020F1EF4 - movs r0, r0, lsl #9 - bne _020F203C - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #9 - ands ip, ip, #0xff - beq _020F202C - cmp ip, #0xff - blt _020F202C - cmp r1, #0 - beq _020F2048 - b _020F2024 -_020F1ED8: - eor lr, r0, r1 - and lr, lr, #0x80000000 - cmp ip, #0 - beq _020F1F58 -_020F1EE8: - movs r1, r1, lsl #9 - bne _020F2024 - b _020F2074 -_020F1EF4: - movs r2, r0, lsl #9 - beq _020F1F28 - clz r3, r2 - movs r2, r2, lsl r3 - rsb r3, r3, #0 - mov r2, r2, lsr #8 - ands ip, ip, r1, lsr #23 - beq _020F1F80 - cmp ip, #0xff - beq _020F1EE8 - orr r1, r1, #0x800000 - bic lr, r1, #0xff000000 - b _020F1CF8 -_020F1F28: - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #9 - ands ip, ip, #0xff - beq _020F1F4C - cmp ip, #0xff - blt _020F2074 - cmp r1, #0 - beq _020F2074 - b _020F2024 -_020F1F4C: - cmp r1, #0 - beq _020F2048 - b _020F2074 -_020F1F58: - movs ip, r1, lsl #9 - beq _020F202C - mov lr, ip - clz ip, lr - movs lr, lr, lsl ip - rsb ip, ip, #0 - mov lr, lr, lsr #8 - orr r0, r0, #0x800000 - bic r2, r0, #0xff000000 - b _020F1CF8 -_020F1F80: - movs ip, r1, lsl #9 - beq _020F202C - mov lr, ip - clz ip, lr - movs lr, lr, lsl ip - rsb ip, ip, #0 - mov lr, lr, lsr #8 - b _020F1CF8 -_020F1FA0: - and r0, r0, #0x80000000 - cmn ip, #0x18 - beq _020F2014 - bmi _020F206C - add r1, ip, #0x17 - mov r2, r2, lsl r1 - rsb ip, ip, #0 - mov r3, r3, lsr ip - orr r0, r0, r3 - rsb lr, lr, #0 - mul r1, lr, r3 - cmp r1, r2 - ldmeqia sp!, {lr} - bxeq lr - add r1, r1, lr - cmp r1, r2 - beq _020F2008 - addmi r0, r0, #1 - subpl r1, r1, lr - add r1, lr, r1, lsl #1 - cmp r1, r2, lsl #1 - and r3, r0, #1 - addmi r0, r0, #1 - addeq r0, r0, r3 - ldmia sp!, {lr} - bx lr -_020F2008: - add r0, r0, #1 - ldmia sp!, {lr} - bx lr -_020F2014: - cmn r2, lr - addne r0, r0, #1 - ldmia sp!, {lr} - bx lr -_020F2024: - mov r0, r1 - b _020F203C -_020F202C: - mov r0, #0xff000000 - orr r0, lr, r0, lsr #1 - ldmia sp!, {lr} - bx lr -_020F203C: - mvn r0, #0x80000000 - ldmia sp!, {lr} - bx lr -_020F2048: - mvn r0, #0x80000000 - ldmia sp!, {lr} - bx lr -_020F2054: - tst r0, #0x80000000 - mov r0, #0xff000000 - movne r0, r0, asr #1 - moveq r0, r0, lsr #1 - ldmia sp!, {lr} - bx lr -_020F206C: - ldmia sp!, {lr} - bx lr -_020F2074: - mov r0, lr - ldmia sp!, {lr} - bx lr - - .public _f2d - .type _f2d, @function - .public _f_ftod - .type _f_ftod, @function -_f2d: ; 0x020F2080 -_f_ftod: - and r2, r0, #0x80000000 - mov ip, r0, lsr #0x17 - mov r3, r0, lsl #9 - ands ip, ip, #0xff - beq _020F20B0 - cmp ip, #0xff - beq _020F20DC -_020F209C: - add ip, ip, #0x380 - mov r0, r3, lsl #0x14 - orr r1, r2, r3, lsr #12 - orr r1, r1, ip, lsl #20 - bx lr -_020F20B0: - cmp r3, #0 - bne _020F20C4 - mov r1, r2 - mov r0, #0 - bx lr -_020F20C4: - mov r3, r3, lsr #1 - clz ip, r3 - movs r3, r3, lsl ip - rsb ip, ip, #1 - add r3, r3, r3 - b _020F209C -_020F20DC: - cmp r3, #0 - bhi _020F20F4 - ldr r1, _020F2100 ; =0x7FF00000 - orr r1, r1, r2 - mov r0, #0 - bx lr -_020F20F4: - mvn r0, #0 - bic r1, r0, #0x80000000 - bx lr - .align 2, 0 -_020F2100: .word 0x7FF00000 - - .public _f_ftoi - .type _f_ftoi, @function - .public _ffix - .type _ffix, @function -_f_ftoi: ; 0x020F2104 -_ffix: - bic r1, r0, #0x80000000 - mov r2, #0x9e - subs r2, r2, r1, lsr #23 - ble _020F212C - mov r1, r1, lsl #8 - orr r1, r1, #0x80000000 - cmp r0, #0 - mov r0, r1, lsr r2 - rsbmi r0, r0, #0 - bx lr -_020F212C: - mvn r0, r0, asr #31 - add r0, r0, #0x80000000 - bx lr - - .public _ffixu - .type _ffixu, @function - .public _f_ftou - .type _f_ftou, @function -_ffixu: ; 0x020F2138 -_f_ftou: - tst r0, #0x80000000 - bne _020F215C - mov r1, #0x9e - subs r1, r1, r0, lsr #23 - blt _020F2170 - mov r2, r0, lsl #8 - orr r0, r2, #0x80000000 - mov r0, r0, lsr r1 - bx lr -_020F215C: - mov r2, #0xff000000 - cmp r2, r0, lsl #1 - movhs r0, #0 - mvnlo r0, #0 - bx lr -_020F2170: - mvn r0, #0 - bx lr - - .public _fflt - .type _fflt, @function - .public _f_itof - .type _f_itof, @function -_fflt: ; 0x020F2178 -_f_itof: - ands r2, r0, #0x80000000 - rsbmi r0, r0, #0 - cmp r0, #0 -__f_itof_common: - bxeq lr - clz r3, r0 - movs r0, r0, lsl r3 - rsb r3, r3, #0x9e - ands r1, r0, #0xff - add r0, r0, r0 - orr r0, r2, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bxeq lr - tst r1, #0x80 - bxeq lr - ands r3, r1, #0x7f - andeqs r3, r0, #1 - addne r0, r0, #1 - bx lr - - .public _ffltu - .type _ffltu, @function - .public _f_utof - .type _f_utof, @function -_ffltu: ; 0x020F21C0 -_f_utof: - cmp r0, #0 -__f_utof_common: - bxeq lr - mov r3, #0x9e - bmi _020F21DC - clz ip, r0 - movs r0, r0, lsl ip - sub r3, r3, ip -_020F21DC: - ands r2, r0, #0xff - add r0, r0, r0 - mov r0, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bxeq lr - tst r2, #0x80 - bxeq lr - ands r1, r2, #0x7f - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr - - .public _f_lltof - .type _f_lltof, @function - .public _ll_sto_f - .type _ll_sto_f, @function -_f_lltof: ; 0x020F2208 -_ll_sto_f: - ands r2, r1, #0x80000000 - beq _020F2218 - rsbs r0, r0, #0 - rsc r1, r1, #0 -_020F2218: - cmp r1, #0 - bne _020F2228 - movs r0, r0 - b __f_itof_common -_020F2228: - clz r3, r1 - movs r1, r1, lsl r3 - rsb r3, r3, #0x20 - orr r1, r1, r0, lsr r3 - rsb ip, r3, #0x20 - movs r0, r0, lsl ip - orrne r1, r1, #1 - add r3, r3, #0x9e - ands ip, r1, #0xff - add r0, r1, r1 - orr r0, r2, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bxeq lr - tst ip, #0x80 - bxeq lr - ands r3, ip, #0x7f - andeqs r3, r0, #1 - addne r0, r0, #1 - bx lr - - .public _f_ulltof - .type _f_ulltof, @function - .public _ll_uto_f - .type _ll_uto_f, @function -_f_ulltof: ; 0x020F2274 -_ll_uto_f: - cmp r1, #0 - bne _020F2284 - movs r0, r0 - b __f_utof_common -_020F2284: - mov r3, #0x20 - bmi _020F22A4 - clz ip, r1 - movs r1, r1, lsl ip - sub r3, r3, ip - orr r1, r1, r0, lsr r3 - rsb r2, r3, #0x20 - mov r0, r0, lsl r2 -_020F22A4: - cmp r0, #0 - orrne r1, r1, #1 - add r3, r3, #0x9e - ands r2, r1, #0xff - add r0, r1, r1 - mov r0, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bxeq lr - tst r2, #0x80 - bxeq lr - ands r1, r2, #0x7f - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr - - .public _fmul - .type _fmul, @function - .public _f_mul - .type _f_mul, @function -_fmul: ; 0x020F22DC -_f_mul: - eor r2, r0, r1 - and r2, r2, #0x80000000 - mov ip, #0xff - ands r3, ip, r0, lsr #23 - mov r0, r0, lsl #8 - cmpne r3, #0xff - beq _020F2358 - orr r0, r0, #0x80000000 - ands ip, ip, r1, lsr #23 - mov r1, r1, lsl #8 - cmpne ip, #0xff - beq _020F2398 - orr r1, r1, #0x80000000 -_020F2310: - add ip, r3, ip - umull r1, r3, r0, r1 - movs r0, r3 - addpl r0, r0, r0 - subpl ip, ip, #1 - subs ip, ip, #0x7f - bmi _020F2424 - cmp ip, #0xfe - bge _020F2490 - ands r3, r0, #0xff - orr r0, r2, r0, lsr #8 - add r0, r0, ip, lsl #23 - tst r3, #0x80 - bxeq lr - orrs r1, r1, r3, lsl #25 - andeqs r3, r0, #1 - addne r0, r0, #1 - bx lr -_020F2358: - cmp r3, #0 - beq _020F23AC - movs r0, r0, lsl #1 - bne __f_result_x_NaN - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #9 - ands ip, ip, #0xff - beq _020F238C - cmp ip, #0xff - blt __f_result_INF - cmp r1, #0 - beq __f_result_INF - b __f_result_x_NaN -_020F238C: - cmp r1, #0 - beq __f_result_invalid - b __f_result_INF -_020F2398: - cmp ip, #0 - beq _020F2408 -_020F23A0: - movs r1, r1, lsl #1 - bne __f_result_x_NaN - b __f_result_INF -_020F23AC: - movs r0, r0, lsl #1 - beq _020F23E4 - mov r0, r0, lsr #1 - clz r3, r0 - movs r0, r0, lsl r3 - rsb r3, r3, #1 - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #8 - ands ip, ip, #0xff - beq _020F2408 - cmp ip, #0xff - beq _020F23A0 - orr r1, r1, #0x80000000 - b _020F2310 -_020F23E4: - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #9 - ands ip, ip, #0xff - beq _020F24B4 - cmp ip, #0xff - blt _020F24B4 - cmp r1, #0 - beq __f_result_invalid - b __f_result_x_NaN -_020F2408: - movs r1, r1, lsl #1 - beq _020F24B4 - mov r1, r1, lsr #1 - clz ip, r1 - movs r1, r1, lsl ip - rsb ip, ip, #1 - b _020F2310 -_020F2424: - cmn ip, #0x18 - beq _020F246C - bmi _020F24AC - cmp r1, #0 - orrne r0, r0, #1 - mov r3, r0 - mov r0, r0, lsr #8 - rsb ip, ip, #0 - orr r0, r2, r0, lsr ip - rsb ip, ip, #0x18 - movs r1, r3, lsl ip - bxeq lr - tst r1, #0x80000000 - bxeq lr - movs r1, r1, lsl #1 - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F246C: - mov r0, r0, lsl #1 - b _020F249C -__f_result_INF: - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr -__f_result_x_NaN: - mvn r0, #0x80000000 - bx lr -__f_result_invalid: - mvn r0, #0x80000000 - bx lr -_020F2490: - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr -_020F249C: - movs r1, r0 - mov r0, r2 - addne r0, r0, #1 - bx lr -_020F24AC: - mov r0, r2 - bx lr -_020F24B4: - mov r0, r2 - bx lr - - .public _frsb - .type _frsb, @function -_frsb: ; 0x020F24BC - eor r0, r0, r1 - eor r1, r0, r1 - eor r0, r0, r1 - .public _fsub - .type _fsub, @function - .public _f_sub - .type _f_sub, @function -_fsub: ; 0x020F24C8 -_f_sub: ; 0x020F24C8 - eors r2, r0, r1 - eormi r1, r1, #0x80000000 - bmi __fadd_start -__fsub_start: - subs ip, r0, r1 - eorlo ip, ip, #0x80000000 - sublo r0, r0, ip - addlo r1, r1, ip - mov r2, #0x80000000 - mov r3, r0, lsr #0x17 - orr r0, r2, r0, lsl #8 - ands ip, r3, #0xff - cmpne ip, #0xff - beq _020F25F0 - mov ip, r1, lsr #0x17 - orr r1, r2, r1, lsl #8 - ands r2, ip, #0xff - beq _020F2630 -_020F250C: - subs ip, r3, ip - beq _020F2554 - rsb r2, ip, #0x20 - movs r2, r1, lsl r2 - mov r1, r1, lsr ip - orrne r1, r1, #1 - subs r0, r0, r1 - bpl _020F2598 - ands r1, r0, #0xff - add r0, r0, r0 - mov r0, r0, lsr #9 - orr r0, r0, r3, lsl #23 - tst r1, #0x80 - bxeq lr - ands r1, r1, #0x7f - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F2554: - subs r0, r0, r1 - beq _020F26FC - mov r2, r3, lsl #0x17 - and r2, r2, #0x80000000 - bic r3, r3, #0x100 - clz ip, r0 - movs r0, r0, lsl ip - sub r3, r3, ip - cmp r3, #0 - bgt _020F2588 - rsb r3, r3, #9 - orr r0, r2, r0, lsr r3 - bx lr -_020F2588: - add r0, r0, r0 - orr r0, r2, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bx lr -_020F2598: - mov r2, r3, lsl #0x17 - and r2, r2, #0x80000000 - bic r3, r3, #0x100 - clz ip, r0 - movs r0, r0, lsl ip - sub r3, r3, ip - cmp r3, #0 - bgt _020F25C4 - rsb r3, r3, #9 - orr r0, r2, r0, lsr r3 - bx lr -_020F25C4: - ands r1, r0, #0xff - add r0, r0, r0 - orr r0, r2, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bxeq lr - tst r1, #0x80 - bxeq lr - ands r1, r1, #0x7f - andeqs r1, r0, #1 - addne r0, r0, #1 - bx lr -_020F25F0: - cmp r3, #0x100 - movge r2, #0x80000000 - movlt r2, #0 - ands r3, r3, #0xff - beq _020F2658 - movs r0, r0, lsl #1 - bne _020F2730 - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #9 - ands ip, ip, #0xff - beq _020F2724 - cmp ip, #0xff - blt _020F2724 - cmp r1, #0 - beq _020F2738 - b _020F2730 -_020F2630: - cmp ip, #0x100 - movge r2, #0x80000000 - movlt r2, #0 - and r3, r3, #0xff - ands ip, ip, #0xff - beq _020F26C0 -_020F2648: - eor r2, r2, #0x80000000 - movs r1, r1, lsl #1 - bne _020F2730 - b _020F2724 -_020F2658: - movs r0, r0, lsl #1 - beq _020F2690 - mov r0, r0, lsr #1 - mov r3, #1 - mov ip, r1, lsr #0x17 - mov r1, r1, lsl #8 - ands ip, ip, #0xff - beq _020F26C0 - cmp ip, #0xff - beq _020F2648 - orr r1, r1, #0x80000000 - orr r3, r3, r2, lsr #23 - orr ip, ip, r2, lsr #23 - b _020F250C -_020F2690: - mov r3, r1, lsr #0x17 - mov r0, r1, lsl #9 - ands r2, r3, #0xff - beq _020F26B4 - cmp r2, #0xff - blt _020F26DC - cmp r0, #0 - bne _020F271C - b _020F2724 -_020F26B4: - cmp r0, #0 - beq _020F26FC - b _020F26DC -_020F26C0: - movs r1, r1, lsl #1 - beq _020F26E4 - mov r1, r1, lsr #1 - mov ip, #1 - orr ip, ip, r2, lsr #23 - orr r3, r3, r2, lsr #23 - b _020F250C -_020F26DC: - mov r0, r1 - bx lr -_020F26E4: - cmp r0, #0 - subges r3, r3, #1 - add r0, r0, r0 - orr r0, r2, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bx lr -_020F26FC: - mov r0, #0 - bx lr -_020F2704: ; 0x020F2704 - cmp r0, #0 - subges r3, r3, #1 - add r0, r0, r0 - mov r0, r0, lsr #9 - orr r0, r0, r3, lsl #23 - bx lr -_020F271C: - mvn r0, #0x80000000 - bx lr -_020F2724: - mov r0, #0xff000000 - orr r0, r2, r0, lsr #1 - bx lr -_020F2730: - mvn r0, #0x80000000 - bx lr -_020F2738: - mvn r0, #0x80000000 - bx lr - - .public _ll_mod - .type _ll_mod, @function -_ll_mod: ; 0x020F2740 - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - mov r4, r1 - orr r4, r4, #1 - b _020F2760 - - .public _ll_sdiv - .type _ll_sdiv, @function - .public _ll_div - .type _ll_div, @function -_ll_sdiv: ; 0x020F2750 -_ll_div: ; 0x020F2750 - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - eor r4, r1, r3 - mov r4, r4, asr #1 - mov r4, r4, lsl #1 -_020F2760: - orrs r5, r3, r2 - bne _020F2770 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_020F2770: - mov r5, r0, lsr #0x1f - add r5, r5, r1 - mov r6, r2, lsr #0x1f - add r6, r6, r3 - orrs r6, r5, r6 - bne _020F27A4 - mov r1, r2 - bl _s32_div_f - ands r4, r4, #1 - movne r0, r1 - mov r1, r0, asr #0x1f - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_020F27A4: - cmp r1, #0 - bge _020F27B4 - rsbs r0, r0, #0 - rsc r1, r1, #0 -_020F27B4: - cmp r3, #0 - bge _020F27C4 - rsbs r2, r2, #0 - rsc r3, r3, #0 -_020F27C4: - orrs r5, r1, r0 - beq _020F28E8 - mov r5, #0 - mov r6, #1 - cmp r3, #0 - bmi _020F27F0 -_020F27DC: - add r5, r5, #1 - adds r2, r2, r2 - adcs r3, r3, r3 - bpl _020F27DC - add r6, r6, r5 -_020F27F0: - cmp r1, #0 - blt _020F2810 -_020F27F8: - cmp r6, #1 - beq _020F2810 - sub r6, r6, #1 - adds r0, r0, r0 - adcs r1, r1, r1 - bpl _020F27F8 -_020F2810: - mov r7, #0 - mov ip, #0 - mov fp, #0 - b _020F2838 -_020F2820: - orr ip, ip, #1 - subs r6, r6, #1 - beq _020F2890 - adds r0, r0, r0 - adcs r1, r1, r1 - adcs r7, r7, r7 -_020F2838: - subs r0, r0, r2 - sbcs r1, r1, r3 - sbcs r7, r7, #0 - adds ip, ip, ip - adc fp, fp, fp - cmp r7, #0 - bge _020F2820 -_020F2854: - subs r6, r6, #1 - beq _020F2888 - adds r0, r0, r0 - adcs r1, r1, r1 - adc r7, r7, r7 - adds r0, r0, r2 - adcs r1, r1, r3 - adc r7, r7, #0 - adds ip, ip, ip - adc fp, fp, fp - cmp r7, #0 - bge _020F2820 - b _020F2854 -_020F2888: - adds r0, r0, r2 - adc r1, r1, r3 -_020F2890: - ands r7, r4, #1 - moveq r0, ip - moveq r1, fp - beq _020F28C8 - subs r7, r5, #0x20 - movge r0, r1, lsr r7 - bge _020F28EC - rsb r7, r5, #0x20 - mov r0, r0, lsr r5 - orr r0, r0, r1, lsl r7 - mov r1, r1, lsr r5 - b _020F28C8 -_020F28C0: ; 0x020F28C0 - mov r0, r1, lsr r7 - mov r1, #0 -_020F28C8: - cmp r4, #0 - blt _020F28D8 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_020F28D8: - rsbs r0, r0, #0 - rsc r1, r1, #0 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_020F28E8: - mov r0, #0 -_020F28EC: - mov r1, #0 - cmp r4, #0 - blt _020F28D8 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr - - .public _ll_udiv - .type _ll_udiv, @function - .public _ull_div - .type _ull_div, @function -_ll_udiv: ; 0x020F2900 -_ull_div: - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - mov r4, #0 - b _020F2914 - - .public _ull_mod - .type _ull_mod, @function -_ull_mod: ; 0x020F290C - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - mov r4, #1 -_020F2914: - orrs r5, r3, r2 - bne _020F2924 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_020F2924: - orrs r5, r1, r3 - bne _020F27C4 - mov r1, r2 - bl _u32_div_not_0_f - cmp r4, #0 - movne r0, r1 - mov r1, #0 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr - - .public _ll_mul - .type _ll_mul, @function - .public _ull_mul - .type _ull_mul, @function -_ll_mul: ; 0x020F2948 -_ull_mul: ; 0x020F2948 - stmdb sp!, {r4, r5, lr} - umull r5, r4, r0, r2 - mla r4, r0, r3, r4 - mla r4, r2, r1, r4 - mov r1, r4 - mov r0, r5 - ldmia sp!, {r4, r5, lr} - bx lr - - .public _ll_shl - .type _ll_shl, @function - .public _ll_sll - .type _ll_sll, @function - .public _ull_sll - .type _ull_sll, @function -_ll_shl: ; 0x020F2968 -_ll_sll: -_ull_sll: - ands r2, r2, #0x3f - bxeq lr - subs r3, r2, #0x20 - bge _020F298C - rsb r3, r2, #0x20 - mov r1, r1, lsl r2 - orr r1, r1, r0, lsr r3 - mov r0, r0, lsl r2 - bx lr -_020F298C: - mov r1, r0, lsl r3 - mov r0, #0 - bx lr - - .public _s32_div_f - .type _s32_div_f, @function -_s32_div_f: ; 0x020F2998 - eor ip, r0, r1 - and ip, ip, #0x80000000 - cmp r0, #0 - rsblt r0, r0, #0 - addlt ip, ip, #1 - cmp r1, #0 - rsblt r1, r1, #0 - beq _020F2B90 - cmp r0, r1 - movlo r1, r0 - movlo r0, #0 - blo _020F2B90 - mov r2, #0x1c - mov r3, r0, lsr #4 - cmp r1, r3, lsr #12 - suble r2, r2, #0x10 - movle r3, r3, lsr #0x10 - cmp r1, r3, lsr #4 - suble r2, r2, #8 - movle r3, r3, lsr #8 - cmp r1, r3 - suble r2, r2, #4 - movle r3, r3, lsr #4 - mov r0, r0, lsl r2 - rsb r1, r1, #0 - adds r0, r0, r0 - add r2, r2, r2, lsl #1 - add pc, pc, r2, lsl #2 - nop - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - mov r1, r3 -_020F2B90: - ands r3, ip, #0x80000000 - rsbne r0, r0, #0 - ands r3, ip, #1 - rsbne r1, r1, #0 - bx lr - - .public _u32_div_f - .type _u32_div_f, @function -_u32_div_f: ; 0x020F2BA4 - cmp r1, #0 - bxeq lr - .public _u32_div_not_0_f - .type _u32_div_not_0_f, @function -_u32_div_not_0_f: ; 0x020F2BAC - cmp r0, r1 - movlo r1, r0 - movlo r0, #0 - bxlo lr - mov r2, #0x1c - mov r3, r0, lsr #4 - cmp r1, r3, lsr #12 - suble r2, r2, #0x10 - movle r3, r3, lsr #0x10 - cmp r1, r3, lsr #4 - suble r2, r2, #8 - movle r3, r3, lsr #8 - cmp r1, r3 - suble r2, r2, #4 - movle r3, r3, lsr #4 - mov r0, r0, lsl r2 - rsb r1, r1, #0 - adds r0, r0, r0 - add r2, r2, r2, lsl #1 - add pc, pc, r2, lsl #2 - nop - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - mov r1, r3 - bx lr - - .public _drdiv - .type _drdiv, @function -_drdiv: ; 0x020F2D88 - eor r1, r1, r3 - eor r3, r1, r3 - eor r1, r1, r3 - eor r0, r0, r2 - eor r2, r0, r2 - eor r0, r0, r2 - .public _ddiv - .type _ddiv, @function - .public _d_div - .type _d_div, @function -_ddiv: ; 0x020F2DA0 -_d_div: - stmdb sp!, {r4, r5, r6, lr} - ldr lr, _020F32E0 ; =0x00000FFE - eor r4, r1, r3 - ands ip, lr, r1, lsr #19 - cmpne ip, lr - beq _020F314C - bic r1, r1, lr, lsl #20 - orr r1, r1, #0x100000 - add ip, ip, r4, lsr #31 -_020F2DC4: - ands r4, lr, r3, lsr #19 - cmpne r4, lr - beq _020F31E4 - bic r3, r3, lr, lsl #20 - orr r3, r3, #0x100000 -_020F2DD8: - sub ip, ip, r4 - cmp r1, r3 - cmpeq r0, r2 - bhs _020F2DF4 - adds r0, r0, r0 - adc r1, r1, r1 - sub ip, ip, #2 -_020F2DF4: - adr r4, UNK_020F2ED8 - 0x100 - ldrb lr, [r4, r3, lsr #12] - rsbs r2, r2, #0 - rsc r3, r3, #0 - mov r4, #0x20000000 - mla r5, lr, r3, r4 - mov r6, r3, lsl #0xa - mov r5, r5, lsr #7 - mul lr, r5, lr - orr r6, r6, r2, lsr #22 - mov lr, lr, lsr #0xd - mul r5, lr, r6 - mov r6, r1, lsl #0xa - orr r6, r6, r0, lsr #22 - mov r5, r5, lsr #0x10 - mul r5, lr, r5 - mov lr, lr, lsl #0xe - add lr, lr, r5, lsr #16 - umull r5, r6, lr, r6 - umull r4, r5, r6, r2 - mla r5, r3, r6, r5 - mov r4, r4, lsr #0x1a - orr r4, r4, r5, lsl #6 - add r4, r4, r0, lsl #2 - umull lr, r5, r4, lr - mov r4, #0 - adds r5, r5, r6, lsl #24 - adc r4, r4, r6, lsr #8 - cmp ip, #0x800 - bge _020F2FD8 - add ip, ip, #0x7f0 - adds ip, ip, #0xc - bmi _020F2FF0 - orr r1, r4, ip, lsl #31 - bic ip, ip, #1 - add r1, r1, ip, lsl #19 - tst lr, #0x80000000 - bne _020F2EC8 - rsbs r2, r2, #0 - mov r4, r4, lsl #1 - add r4, r4, r5, lsr #31 - mul lr, r2, r4 - mov r6, #0 - mov r4, r5, lsl #1 - orr r4, r4, #1 - umlal r6, lr, r4, r2 - rsc r3, r3, #0 - mla lr, r4, r3, lr - cmp lr, r0, lsl #21 - bmi _020F2EC8 - mov r0, r5 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F2EC8: - adds r0, r5, #1 - adc r1, r1, #0 - ldmia sp!, {r4, r5, r6, lr} - bx lr -UNK_020F2ED8: ; 0x020F2ED8 - .byte 0xFF, 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9 - .byte 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA - .byte 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE2, 0xE1, 0xE0, 0xDF, 0xDF, 0xDE - .byte 0xDD, 0xDC, 0xDC, 0xDB, 0xDA, 0xD9, 0xD9, 0xD8, 0xD7, 0xD7, 0xD6, 0xD5, 0xD4, 0xD4, 0xD3, 0xD2 - .byte 0xD2, 0xD1, 0xD0, 0xD0, 0xCF, 0xCE, 0xCE, 0xCD, 0xCC, 0xCC, 0xCB, 0xCB, 0xCA, 0xC9, 0xC9, 0xC8 - .byte 0xC8, 0xC7, 0xC6, 0xC6, 0xC5, 0xC5, 0xC4, 0xC3, 0xC3, 0xC2, 0xC2, 0xC1, 0xC0, 0xC0, 0xBF, 0xBF - .byte 0xBE, 0xBE, 0xBD, 0xBD, 0xBC, 0xBC, 0xBB, 0xBA, 0xBA, 0xB9, 0xB9, 0xB8, 0xB8, 0xB7, 0xB7, 0xB6 - .byte 0xB6, 0xB5, 0xB5, 0xB4, 0xB4, 0xB3, 0xB3, 0xB2, 0xB2, 0xB1, 0xB1, 0xB0, 0xB0, 0xAF, 0xAF, 0xAF - .byte 0xAE, 0xAE, 0xAD, 0xAD, 0xAC, 0xAC, 0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xA9, 0xA9, 0xA8, 0xA8, 0xA7 - .byte 0xA7, 0xA7, 0xA6, 0xA6, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1 - .byte 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B - .byte 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x97, 0x97, 0x96, 0x96, 0x96, 0x95, 0x95 - .byte 0x95, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90 - .byte 0x90, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B - .byte 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x86 - .byte 0x86, 0x86, 0x86, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x83, 0x83, 0x83, 0x83, 0x82, 0x82 - .byte 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80 -_020F2FD8: - movs r1, ip, lsl #0x1f - orr r1, r1, #0x7f000000 - orr r1, r1, #0xf00000 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F2FF0: - mvn r6, ip, asr #1 - cmp r6, #0x34 - bgt _020F313C - beq _020F3118 - cmp r6, #0x14 - bge _020F3038 - rsb r6, r6, #0x13 - mov lr, r0, lsl r6 - rsb r6, r6, #0x14 - mov r0, r5, lsr r6 - rsb r6, r6, #0x20 - orr r0, r0, r4, lsl r6 - rsb r6, r6, #0x20 - mov r4, r4, lsr r6 - orr r1, r4, ip, lsl #31 - mov ip, lr - mov lr, #0 - b _020F3068 -_020F3038: - rsb r6, r6, #0x33 - mov lr, r1, lsl r6 - mov r1, ip, lsl #0x1f - rsb r6, r6, #0x20 - orr ip, lr, r0, lsr r6 - rsb r6, r6, #0x20 - mov lr, r0, lsl r6 - mov r5, r5, lsr #0x15 - orr r5, r5, r4, lsl #11 - rsb r6, r6, #0x1f - mov r0, r5, lsr r6 - mov r4, #0 -_020F3068: - rsbs r2, r2, #0 - mul r4, r2, r4 - mov r5, #0 - umlal r5, r4, r2, r0 - rsc r3, r3, #0 - mla r4, r0, r3, r4 - cmp r4, ip - cmpeq r5, lr - ldmeqia sp!, {r4, r5, r6, lr} - bxeq lr - adds r5, r5, r2 - adc r4, r4, r3 - cmp r4, ip - bmi _020F310C - bne _020F30B0 - cmp r5, lr - beq _020F30FC - blo _020F310C -_020F30B0: - subs r5, r5, r2 - sbc r4, r4, r3 -_020F30B8: - adds r5, r5, r5 - adc r4, r4, r4 - adds r5, r5, r2 - adc r4, r4, r3 - adds lr, lr, lr - adc ip, ip, ip - cmp r4, ip - bmi _020F30FC - ldmneia sp!, {r4, r5, r6, lr} - bxne lr - cmp r5, lr - blo _020F30FC - ldmneia sp!, {r4, r5, r6, lr} - bxne lr - tst r0, #1 - ldmeqia sp!, {r4, r5, r6, lr} - bxeq lr -_020F30FC: - adds r0, r0, #1 - adc r1, r1, #0 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F310C: - adds r0, r0, #1 - adc r1, r1, #0 - b _020F30B8 -_020F3118: - rsbs r2, r2, #0 - rsc r3, r3, #0 - cmp r1, r3 - cmpeq r0, r2 - mov r1, ip, lsl #0x1f - mov r0, #0 - movne r0, #1 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F313C: - mov r1, ip, lsl #0x1f - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F314C: - orrs r5, r0, r1, lsl #1 - beq _020F3270 - cmp ip, lr - beq _020F31B4 - movs r1, r1, lsl #0xc - beq _020F3190 - clz r5, r1 - movs r1, r1, lsl r5 - sub ip, ip, r5 - add r5, ip, #0x1f - mov r1, r1, lsr #0xb - orr r1, r1, r0, lsr r5 - rsb r5, r5, #0x20 - mov r0, r0, lsl r5 - mov ip, ip, lsl #1 - orr ip, ip, r4, lsr #31 - b _020F2DC4 -_020F3190: - mvn ip, #0x13 - clz r5, r0 - movs r0, r0, lsl r5 - sub ip, ip, r5 - mov r1, r0, lsr #0xb - mov r0, r0, lsl #0x15 - mov ip, ip, lsl #1 - orr ip, ip, r4, lsr #31 - b _020F2DC4 -_020F31B4: - orrs r5, r0, r1, lsl #12 - bne _020F3298 - bic r5, r3, #0x80000000 - cmp r5, lr, lsl #19 - bhs _020F31D8 - and r5, r3, #0x80000000 - eor r1, r5, r1 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F31D8: - orrs r5, r2, r3, lsl #12 - bne _020F32B8 - b _020F32D0 -_020F31E4: - orrs r5, r2, r3, lsl #1 - beq _020F325C - cmp r4, lr - beq _020F3244 - movs r3, r3, lsl #0xc - beq _020F3224 - clz r5, r3 - movs r3, r3, lsl r5 - sub r4, r4, r5 - add r5, r4, #0x1f - mov r3, r3, lsr #0xb - orr r3, r3, r2, lsr r5 - rsb r5, r5, #0x20 - mov r2, r2, lsl r5 - mov r4, r4, lsl #1 - b _020F2DD8 -_020F3224: - mvn r4, #0x13 - clz r5, r2 - movs r2, r2, lsl r5 - sub r4, r4, r5 - mov r3, r2, lsr #0xb - mov r2, r2, lsl #0x15 - mov r4, r4, lsl #1 - b _020F2DD8 -_020F3244: - orrs r5, r2, r3, lsl #12 - bne _020F32B8 - mov r1, ip, lsl #0x1f - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F325C: - mov r1, ip, lsl #0x1f - orr r1, r1, lr, lsl #19 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F3270: - orrs r5, r2, r3, lsl #1 - beq _020F32D0 - bic r5, r3, #0x80000000 - cmp r5, lr, lsl #19 - cmpeq r2, #0 - bhi _020F32B8 - eor r1, r1, r3 - and r1, r1, #0x80000000 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F3298: - tst r1, #0x80000 - beq _020F32D0 - bic r5, r3, #0x80000000 - cmp r5, lr, lsl #19 - cmpeq r2, #0 - bhi _020F32B8 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F32B8: - tst r3, #0x80000 - beq _020F32D0 - mov r1, r3 - mov r0, r2 - ldmia sp!, {r4, r5, r6, lr} - bx lr -_020F32D0: - orr r1, r1, #0x7f000000 - orr r1, r1, #0xf80000 - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_020F32E0: .word 0x00000FFE - - .public _fp_init - .type _fp_init, @function -_fp_init: ; 0x020F32E4 - bx lr - - ; NITRO_Runtime_Ai_LE.a - - arm_func_start sys_writec -sys_writec: ; 0x020F32E8 - str lr, [sp, #-4]! - mov r1, r0 - mov r0, #3 - swi 0x123456 - ldr pc, [sp], #4 - arm_func_end sys_writec - - arm_func_start sys_readc -sys_readc: ; 0x020F32FC - str lr, [sp, #-4]! - mov r1, #0 - mov r0, #7 - swi 0x123456 - ldr pc, [sp], #4 - arm_func_end sys_readc - - arm_func_start sys_exit -sys_exit: ; 0x020F3310 - mov r1, #0 - mov r0, #0x18 - swi 0x123456 - mov pc, lr - arm_func_end sys_exit - - arm_func_start __read_console -__read_console: ; 0x020F3320 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r2 - ldr r5, [r6] - mov r7, r1 - cmp r5, #0 - mov r4, #0 - bls _020F3368 -_020F333C: - bl sys_readc - and r1, r0, #0xff - cmp r1, #0xd - strb r0, [r7, r4] - cmpne r1, #0xa - addeq r0, r4, #1 - streq r0, [r6] - beq _020F3368 - add r4, r4, #1 - cmp r4, r5 - blo _020F333C -_020F3368: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end __read_console - - arm_func_start __write_console -__write_console: ; 0x020F3370 - stmdb sp!, {r4, r5, r6, lr} - ldr r5, [r2] - mov r6, r1 - cmp r5, #0 - mov r4, #0 - bls _020F339C -_020F3388: - add r0, r6, r4 - bl sys_writec - add r4, r4, #1 - cmp r4, r5 - blo _020F3388 -_020F339C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end __write_console - - arm_func_start __close_console -__close_console: ; 0x020F33A4 - mov r0, #0 - bx lr - arm_func_end __close_console - - arm_func_start _Z20__DecodeSignedNumberPcPl -_Z20__DecodeSignedNumberPcPl: ; 0x020F33AC - stmdb sp!, {r4, lr} - ldrsb r2, [r0] - tst r2, #1 - bne _020F33CC - mov r2, r2, asr #1 - str r2, [r1] - add r0, r0, #1 - ldmia sp!, {r4, pc} -_020F33CC: - tst r2, #2 - ldrb r4, [r0, #1] - bne _020F33EC - mov r2, r2, asr #2 - orr r2, r4, r2, lsl #8 - str r2, [r1] - add r0, r0, #2 - ldmia sp!, {r4, pc} -_020F33EC: - tst r2, #4 - ldrb lr, [r0, #2] - bne _020F3414 - mov r3, r2, asr #3 - mov r2, r4, lsl #8 - orr r2, r2, r3, lsl #16 - orr r2, lr, r2 - str r2, [r1] - add r0, r0, #3 - ldmia sp!, {r4, pc} -_020F3414: - ldrb ip, [r0, #3] - mov r3, r2, asr #3 - mov r2, r4, lsl #0x10 - orr r2, r2, r3, lsl #24 - orr r2, r2, lr, lsl #8 - orr r2, ip, r2 - str r2, [r1] - add r0, r0, #4 - ldmia sp!, {r4, pc} - arm_func_end _Z20__DecodeSignedNumberPcPl - - arm_func_start _Z22__DecodeUnsignedNumberPcPm -_Z22__DecodeUnsignedNumberPcPm: ; 0x020F3438 - stmdb sp!, {r4, lr} - ldrb r2, [r0] - tst r2, #1 - bne _020F3458 - mov r2, r2, lsr #1 - str r2, [r1] - add r0, r0, #1 - ldmia sp!, {r4, pc} -_020F3458: - tst r2, #2 - ldrb r4, [r0, #1] - bne _020F3478 - mov r2, r2, lsr #2 - orr r2, r4, r2, lsl #8 - str r2, [r1] - add r0, r0, #2 - ldmia sp!, {r4, pc} -_020F3478: - tst r2, #4 - ldrb lr, [r0, #2] - bne _020F34A0 - mov r3, r2, lsr #3 - mov r2, r4, lsl #8 - orr r2, r2, r3, lsl #16 - orr r2, lr, r2 - str r2, [r1] - add r0, r0, #3 - ldmia sp!, {r4, pc} -_020F34A0: - ldrb ip, [r0, #3] - mov r3, r2, lsr #3 - mov r2, r4, lsl #0x10 - orr r2, r2, r3, lsl #24 - orr r2, r2, lr, lsl #8 - orr r2, ip, r2 - str r2, [r1] - add r0, r0, #4 - ldmia sp!, {r4, pc} - arm_func_end _Z22__DecodeUnsignedNumberPcPm - - arm_func_start _Z12BinarySearchP19ExceptionTableIndexmPc -_Z12BinarySearchP19ExceptionTableIndexmPc: ; 0x020F34C4 - stmdb sp!, {r4, r5, r6, lr} - subs r6, r1, #1 - mov r5, #0 - bmi _020F3520 - mov r1, #0xc -_020F34D8: - add r3, r5, r6 - mov r4, r3, asr #1 - mul r3, r4, r1 - ldr ip, [r0, r3] - add lr, r0, r3 - cmp r2, ip - sublo r6, r4, #1 - blo _020F3518 - ldr r3, [lr, #4] - bic r3, r3, #1 - add r3, ip, r3 - cmp r2, r3 - addhi r5, r4, #1 - bhi _020F3518 - mov r0, lr - ldmia sp!, {r4, r5, r6, pc} -_020F3518: - cmp r5, r6 - ble _020F34D8 -_020F3520: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end _Z12BinarySearchP19ExceptionTableIndexmPc - - arm_func_start _Z19FindExceptionRecordPcP13ExceptionInfo -_Z19FindExceptionRecordPcP13ExceptionInfo: ; 0x020F3528 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r4, r0 - mov sb, r1 - mov r2, #0 - str r2, [sb, #4] - mov r0, sb - mov r1, r4 - str r2, [sb, #8] - bl _Z20__FindExceptionTableP13ExceptionInfoPc - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [sb, #0xc] - ldr r1, [sb, #0x10] - ldr r3, _020F362C ; =0x2AAAAAAB - sub r5, r1, r0 - smull r2, r1, r3, r5 - mov r3, r5, lsr #0x1f - mov r2, r4 - add r1, r3, r1, asr #1 - bl _Z12BinarySearchP19ExceptionTableIndexmPc - cmp r0, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r1, [r0, #4] - tst r1, #1 - addne r1, r0, #8 - ldreq r1, [r0, #8] - str r1, [sb, #4] - ldr r1, [r0] - str r1, [sb] - ldr r1, [r0] - ldr r0, [sb, #4] - sub r7, r4, r1 - bl _Z16__SkipUnwindInfoPc - mov r8, #0 - add r5, sp, #4 - add r4, sp, #0 - add r6, sp, #8 -_020F35C8: - mov r1, r6 - bl _Z22__DecodeUnsignedNumberPcPm - ldr r1, [sp, #8] - cmp r1, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r1, r5 - bl _Z22__DecodeUnsignedNumberPcPm - mov r1, r4 - bl _Z22__DecodeUnsignedNumberPcPm - ldr r1, [sp, #8] - add r2, r8, r1 - cmp r7, r2 - addlo sp, sp, #0xc - ldmloia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r1, [sp, #4] - add r8, r2, r1 - cmp r7, r8 - bhi _020F35C8 - ldr r1, [sb, #4] - ldr r0, [sp] - add r0, r1, r0 - str r0, [sb, #8] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020F362C: .word 0x2AAAAAAB - arm_func_end _Z19FindExceptionRecordPcP13ExceptionInfo - - arm_func_start _Z13CurrentActionPK14ActionIterator -_Z13CurrentActionPK14ActionIterator: ; 0x020F3630 - ldr r0, [r0, #8] - cmp r0, #0 - ldrneb r0, [r0] - andne r0, r0, #0x1f - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end _Z13CurrentActionPK14ActionIterator - - arm_func_start _Z10NextActionP14ActionIterator -_Z10NextActionP14ActionIterator: ; 0x020F364C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0xa0 - mov r4, r0 -_020F3658: - ldr r2, [r4, #8] - cmp r2, #0 - beq _020F3670 - ldrb r0, [r2] - tst r0, #0x80 - beq _020F36B4 -_020F3670: - mov r1, r4 - add r0, r4, #0x18 - bl _Z15__PopStackFrameP12ThrowContextP13ExceptionInfo - mov r1, r4 - bl _Z19FindExceptionRecordPcP13ExceptionInfo - ldr r0, [r4, #4] - cmp r0, #0 - addeq sp, sp, #0xa0 - moveq r0, #0xff - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, r4 - add r0, r4, #0x18 - bl _Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo - ldr r0, [r4, #8] - cmp r0, #0 - beq _020F3658 - b _020F3984 -_020F36B4: - and r0, r0, #0x1f - cmp r0, #0x13 - addls pc, pc, r0, lsl #2 - b _020F3978 -_020F36C4: ; jump table - b _020F3978 ; case 0 - b _020F3978 ; case 1 - b _020F3714 ; case 2 - b _020F372C ; case 3 - b _020F374C ; case 4 - b _020F3764 ; case 5 - b _020F378C ; case 6 - b _020F37AC ; case 7 - b _020F37CC ; case 8 - b _020F37F4 ; case 9 - b _020F3824 ; case 10 - b _020F383C ; case 11 - b _020F385C ; case 12 - b _020F3878 ; case 13 - b _020F3978 ; case 14 - b _020F388C ; case 15 - b _020F38B8 ; case 16 - b _020F3904 ; case 17 - b _020F3938 ; case 18 - b _020F3964 ; case 19 -_020F3714: - add r1, sp, #0x9c - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F372C: - add r1, sp, #0x94 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x98 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F374C: - add r1, sp, #0x90 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F3764: - add r1, sp, #0x84 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x88 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x8c - bl _Z22__DecodeUnsignedNumberPcPm - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F378C: - add r1, sp, #0x7c - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x80 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F37AC: - add r1, sp, #0x74 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x78 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F37CC: - add r1, sp, #0x68 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x6c - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x70 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F37F4: - add r1, sp, #0x58 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x5c - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x60 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x64 - bl _Z22__DecodeUnsignedNumberPcPm - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F3824: - add r1, sp, #0x54 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F383C: - add r1, sp, #0x4c - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x50 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F385C: - add r1, sp, #0x44 - add r0, r2, #5 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x48 - bl _Z20__DecodeSignedNumberPcPl - str r0, [r4, #8] - b _020F3984 -_020F3878: - add r1, sp, #0x40 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - str r0, [r4, #8] - b _020F3984 -_020F388C: - add r1, sp, #0x34 - add r0, r2, #1 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x38 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x3c - bl _Z20__DecodeSignedNumberPcPl - ldr r1, [sp, #0x34] - add r0, r0, r1, lsl #2 - str r0, [r4, #8] - b _020F3984 -_020F38B8: - add r1, sp, #0x24 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x28 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - orr r2, r1, r5, lsl #24 - add r1, sp, #0x2c - add r0, r0, #4 - str r2, [sp, #0x30] - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F3904: - add r1, sp, #0x14 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x1c - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x18 - add r0, r0, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F3938: - add r1, sp, #8 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0xc - add r0, r0, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x10 - bl _Z22__DecodeUnsignedNumberPcPm - add r0, r0, #4 - str r0, [r4, #8] - b _020F3984 -_020F3964: - add r1, sp, #4 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - str r0, [r4, #8] - b _020F3984 -_020F3978: - add sp, sp, #0xa0 - mov r0, #0xff - ldmia sp!, {r3, r4, r5, pc} -_020F3984: - ldr r2, [r4, #8] - ldrb r0, [r2] - and r0, r0, #0x1f - cmp r0, #1 - addne sp, sp, #0xa0 - ldmneia sp!, {r3, r4, r5, pc} - add r5, sp, #0 -_020F39A0: - mov r1, r5 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - ldr r1, [r4, #8] - ldr r0, [sp] - add r2, r1, r0 - str r2, [r4, #8] - ldrb r0, [r2] - and r0, r0, #0x1f - cmp r0, #1 - beq _020F39A0 - add sp, sp, #0xa0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end _Z10NextActionP14ActionIterator - - arm_func_start _Z11UnwindStackP12ThrowContextP13ExceptionInfoPc -_Z11UnwindStackP12ThrowContextP13ExceptionInfoPc: ; 0x020F39D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xa4 - mov sb, r0 - mov r8, r1 - str r2, [sp] -_020F39E8: - ldr r2, [r8, #8] - cmp r2, #0 - bne _020F3A30 - mov r0, sb - mov r1, r8 - bl _Z15__PopStackFrameP12ThrowContextP13ExceptionInfo - mov r1, r8 - bl _Z19FindExceptionRecordPcP13ExceptionInfo - ldr r0, [r8, #4] - cmp r0, #0 - bne _020F3A18 - bl _ZSt9terminatev -_020F3A18: - mov r0, sb - mov r1, r8 - bl _Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo - ldr r2, [r8, #8] - cmp r2, #0 - beq _020F39E8 -_020F3A30: - ldrb r7, [r2] - and r0, r7, #0x1f - cmp r0, #0x13 - addls pc, pc, r0, lsl #2 - b _020F4268 -_020F3A44: ; jump table - b _020F4268 ; case 0 - b _020F3A94 ; case 1 - b _020F3AB4 ; case 2 - b _020F3B00 ; case 3 - b _020F3B80 ; case 4 - b _020F3BE0 ; case 5 - b _020F3C64 ; case 6 - b _020F3CD4 ; case 7 - b _020F3D44 ; case 8 - b _020F3DEC ; case 9 - b _020F3EA0 ; case 10 - b _020F3EFC ; case 11 - b _020F3F8C ; case 12 - b _020F3FB8 ; case 13 - b _020F4268 ; case 14 - b _020F4004 ; case 15 - b _020F4040 ; case 16 - b _020F40E4 ; case 17 - b _020F4190 ; case 18 - b _020F4254 ; case 19 -_020F3A94: - add r1, sp, #0xa0 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - ldr r1, [r8, #8] - ldr r0, [sp, #0xa0] - add r0, r1, r0 - str r0, [r8, #8] - b _020F426C -_020F3AB4: - add r1, sp, #0x9c - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - mov r4, r0 - ldrb r1, [r4] - ldrb r0, [r4, #1] - ldrb r2, [r4, #2] - ldrb r3, [r4, #3] - orr r0, r1, r0, lsl #8 - orr r0, r0, r2, lsl #16 - ldr r5, [sb, #0x18] - ldr r1, [sp, #0x9c] - orr r2, r0, r3, lsl #24 - add r0, r5, r1 - mvn r1, #0 - blx r2 - add r0, r4, #4 - str r0, [r8, #8] - b _020F426C -_020F3B00: - add r1, sp, #0x94 - add r0, r2, #1 - and r4, r7, #0x40 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x98 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r2, r1, r5, lsl #24 - add r4, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x94] - ldreqb r0, [r1, r0] - beq _020F3B5C - ldr r0, [sp, #0x94] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] - and r0, r0, #0xff -_020F3B5C: - cmp r0, #0 - beq _020F3B78 - ldr r3, [sb, #0x18] - ldr r0, [sp, #0x98] - mvn r1, #0 - add r0, r3, r0 - blx r2 -_020F3B78: - str r4, [r8, #8] - b _020F426C -_020F3B80: - add r1, sp, #0x90 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r2, r1, r5, lsl #24 - add r4, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x90] - ldreq r0, [r1, r0] - beq _020F3BD0 - ldr r0, [sp, #0x90] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] -_020F3BD0: - mvn r1, #0 - blx r2 - str r4, [r8, #8] - b _020F426C -_020F3BE0: - add r1, sp, #0x84 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x88 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x8c - bl _Z22__DecodeUnsignedNumberPcPm - ldr r3, [sb, #0x18] - ldr r2, [sp, #0x84] - ldr r6, [sp, #0x88] - ldrb r5, [r0] - ldrb r4, [r0, #1] - ldr r1, [sp, #0x8c] - add r2, r3, r2 - ldrb sl, [r0, #2] - orr r3, r5, r4, lsl #8 - mla r4, r6, r1, r2 - ldrb r2, [r0, #3] - orr r1, r3, sl, lsl #16 - cmp r6, #0 - orr r5, r1, r2, lsl #24 - add fp, r0, #4 - beq _020F3C5C - mvn sl, #0 -_020F3C40: - ldr r0, [sp, #0x8c] - mov r1, sl - sub r4, r4, r0 - mov r0, r4 - blx r5 - subs r6, r6, #1 - bne _020F3C40 -_020F3C5C: - str fp, [r8, #8] - b _020F426C -_020F3C64: - add r1, sp, #0x7c - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x80 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r2, r1, r5, lsl #24 - add r4, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x7c] - ldreq r3, [r1, r0] - beq _020F3CBC - ldr r0, [sp, #0x7c] - add r0, sb, r0, lsl #2 - ldr r3, [r0, #0x1c] -_020F3CBC: - ldr r0, [sp, #0x80] - mov r1, #0 - add r0, r3, r0 - blx r2 - str r4, [r8, #8] - b _020F426C -_020F3CD4: - add r1, sp, #0x74 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x78 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r2, r1, r5, lsl #24 - add r4, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x74] - ldreq r3, [r1, r0] - beq _020F3D2C - ldr r0, [sp, #0x74] - add r0, sb, r0, lsl #2 - ldr r3, [r0, #0x1c] -_020F3D2C: - ldr r0, [sp, #0x78] - mvn r1, #0 - add r0, r3, r0 - blx r2 - str r4, [r8, #8] - b _020F426C -_020F3D44: - add r1, sp, #0x68 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x6c - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x70 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - orr r2, r1, r5, lsl #24 - tst r7, #0x40 - add r5, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x68] - ldreqsh r0, [r1, r0] - beq _020F3DAC - ldr r0, [sp, #0x68] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 -_020F3DAC: - cmp r0, #0 - beq _020F3DE4 - cmp r4, #0 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x6c] - ldreq r3, [r1, r0] - beq _020F3DD4 - ldr r0, [sp, #0x6c] - add r0, sb, r0, lsl #2 - ldr r3, [r0, #0x1c] -_020F3DD4: - ldr r0, [sp, #0x70] - mvn r1, #0 - add r0, r3, r0 - blx r2 -_020F3DE4: - str r5, [r8, #8] - b _020F426C -_020F3DEC: - add r1, sp, #0x58 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x5c - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x60 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x64 - bl _Z22__DecodeUnsignedNumberPcPm - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r5, r1, r5, lsl #24 - add fp, r0, #4 - beq _020F3E50 - ldr r1, [sp, #0x58] - ldr r0, [sp, #0x5c] - add r1, sb, r1, lsl #2 - ldr r1, [r1, #0x1c] - b _020F3E60 -_020F3E50: - ldr r2, [sb, #0x18] - ldr r1, [sp, #0x58] - ldr r0, [sp, #0x5c] - ldr r1, [r2, r1] -_020F3E60: - add r4, r1, r0 - ldr r6, [sp, #0x60] - ldr r0, [sp, #0x64] - cmp r6, #0 - mla r4, r6, r0, r4 - beq _020F3E98 - mvn sl, #0 -_020F3E7C: - ldr r0, [sp, #0x64] - mov r1, sl - sub r4, r4, r0 - mov r0, r4 - blx r5 - subs r6, r6, #1 - bne _020F3E7C -_020F3E98: - str fp, [r8, #8] - b _020F426C -_020F3EA0: - add r1, sp, #0x54 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r2, r1, r5, lsl #24 - add r4, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x54] - ldreq r0, [r1, r0] - beq _020F3EF0 - ldr r0, [sp, #0x54] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] -_020F3EF0: - blx r2 - str r4, [r8, #8] - b _020F426C -_020F3EFC: - add r1, sp, #0x4c - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x50 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - tst r7, #0x40 - orr r1, r1, r5, lsl #24 - add r5, r0, #4 - ldreq r2, [sb, #0x18] - ldreq r0, [sp, #0x4c] - ldreqb r0, [r2, r0] - beq _020F3F58 - ldr r0, [sp, #0x4c] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] - and r0, r0, #0xff -_020F3F58: - cmp r0, #0 - beq _020F3F84 - cmp r4, #0 - ldreq r2, [sb, #0x18] - ldreq r0, [sp, #0x50] - ldreq r0, [r2, r0] - beq _020F3F80 - ldr r0, [sp, #0x50] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] -_020F3F80: - blx r1 -_020F3F84: - str r5, [r8, #8] - b _020F426C -_020F3F8C: - ldr r0, [sp] - cmp r0, r2 - addeq sp, sp, #0xa4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x44 - add r0, r2, #5 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x48 - bl _Z20__DecodeSignedNumberPcPl - str r0, [r8, #8] - b _020F426C -_020F3FB8: - add r1, sp, #0x40 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - ldr r2, [sb, #0x18] - ldr r1, [sp, #0x40] - mov r4, r0 - add r0, r2, r1 - ldr r2, [r0, #8] - cmp r2, #0 - beq _020F3FFC - ldr r0, [r0] - ldr r1, [sb, #4] - cmp r1, r0 - streq r2, [sb, #8] - beq _020F3FFC - mvn r1, #0 - blx r2 -_020F3FFC: - str r4, [r8, #8] - b _020F426C -_020F4004: - ldr r0, [sp] - cmp r0, r2 - addeq sp, sp, #0xa4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x34 - add r0, r2, #1 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x38 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0x3c - bl _Z20__DecodeSignedNumberPcPl - ldr r1, [sp, #0x34] - add r0, r0, r1, lsl #2 - str r0, [r8, #8] - b _020F426C -_020F4040: - add r1, sp, #0x24 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x28 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - orr r2, r1, r5, lsl #24 - add r1, sp, #0x2c - add r0, r0, #4 - str r2, [sp, #0x30] - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r2, r1, r5, lsl #24 - add r4, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x24] - ldreq r5, [r1, r0] - beq _020F40C4 - ldr r0, [sp, #0x24] - add r0, sb, r0, lsl #2 - ldr r5, [r0, #0x1c] -_020F40C4: - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x30] - ldr r1, [sp, #0x2c] - add r0, r5, r0 - add r1, r3, r1 - blx r2 - str r4, [r8, #8] - b _020F426C -_020F40E4: - add r1, sp, #0x14 - add r0, r2, #1 - and r5, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x1c - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0], #1 - add r1, sp, #0x18 - and r4, r2, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x20 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r6, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r5, #0 - orr r2, r1, r6, lsl #24 - add r5, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0x14] - ldreq r0, [r1, r0] - beq _020F4154 - ldr r0, [sp, #0x14] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] -_020F4154: - cmp r4, #0 - ldreq r3, [sb, #0x18] - ldreq r1, [sp, #0x18] - ldreq r4, [r3, r1] - beq _020F4174 - ldr r1, [sp, #0x18] - add r1, sb, r1, lsl #2 - ldr r4, [r1, #0x1c] -_020F4174: - ldr r3, [sp, #0x1c] - ldr r1, [sp, #0x20] - add r0, r0, r3 - add r1, r4, r1 - blx r2 - str r5, [r8, #8] - b _020F426C -_020F4190: - add r1, sp, #8 - add r0, r2, #1 - and r4, r7, #0x20 - bl _Z20__DecodeSignedNumberPcPl - ldrb r2, [r0], #1 - add r1, sp, #0xc - and r6, r2, #0x20 - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x10 - bl _Z22__DecodeUnsignedNumberPcPm - ldrb r2, [r0] - ldrb r1, [r0, #1] - ldrb r3, [r0, #2] - ldrb r5, [r0, #3] - orr r1, r2, r1, lsl #8 - orr r1, r1, r3, lsl #16 - cmp r4, #0 - orr r5, r1, r5, lsl #24 - add fp, r0, #4 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #8] - ldreq r4, [r1, r0] - beq _020F41F8 - ldr r0, [sp, #8] - add r0, sb, r0, lsl #2 - ldr r4, [r0, #0x1c] -_020F41F8: - cmp r6, #0 - ldreq r1, [sb, #0x18] - ldreq r0, [sp, #0xc] - ldreq r0, [r1, r0] - beq _020F4218 - ldr r0, [sp, #0xc] - add r0, sb, r0, lsl #2 - ldr r0, [r0, #0x1c] -_020F4218: - ldr r1, [sp, #0x10] - add r4, r4, r0 - bl _u32_div_f - movs r6, r0 - beq _020F424C - mvn sl, #0 -_020F4230: - ldr r0, [sp, #0x10] - mov r1, sl - sub r4, r4, r0 - mov r0, r4 - blx r5 - subs r6, r6, #1 - bne _020F4230 -_020F424C: - str fp, [r8, #8] - b _020F426C -_020F4254: - add r1, sp, #4 - add r0, r2, #1 - bl _Z20__DecodeSignedNumberPcPl - str r0, [r8, #8] - b _020F426C -_020F4268: - bl _ZSt9terminatev -_020F426C: - tst r7, #0x80 - movne r0, #0 - strne r0, [r8, #8] - b _020F39E8 -_020F427C: - add sp, sp, #0xa4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end _Z11UnwindStackP12ThrowContextP13ExceptionInfoPc - - arm_func_start _Z23FindMostRecentExceptionP12ThrowContextP13ExceptionInfo -_Z23FindMostRecentExceptionP12ThrowContextP13ExceptionInfo: ; 0x020F4284 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x8c - ldr r2, [r1] - mov r4, r0 - str r2, [sp, #4] - ldr r0, [r1, #4] - add ip, sp, #0x38 - str r0, [sp, #8] - ldr r0, [r1, #8] - add lr, r4, #0x1c - str r0, [sp, #0xc] - ldr r0, [r1, #0xc] - mov r5, #5 - str r0, [sp, #0x10] - ldr r0, [r1, #0x10] - str r0, [sp, #0x14] - ldr r0, [r1, #0x14] - str r0, [sp, #0x18] - ldr r0, [r4] - str r0, [sp, #0x1c] - ldr r0, [r4, #4] - str r0, [sp, #0x20] - ldr r0, [r4, #8] - str r0, [sp, #0x24] - ldr r0, [r4, #0xc] - str r0, [sp, #0x28] - ldr r0, [r4, #0x10] - str r0, [sp, #0x2c] - ldr r0, [r4, #0x14] - str r0, [sp, #0x30] - ldr r0, [r4, #0x18] - str r0, [sp, #0x34] -_020F4304: - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _020F4304 - ldr r1, [lr] - add r0, sp, #4 - str r1, [ip] - bl _Z13CurrentActionPK14ActionIterator - add r5, sp, #4 -_020F4328: - cmp r0, #0x12 - addls pc, pc, r0, lsl #2 - b _020F4380 -_020F4334: ; jump table - b _020F438C ; case 0 - b _020F4380 ; case 1 - b _020F438C ; case 2 - b _020F438C ; case 3 - b _020F438C ; case 4 - b _020F438C ; case 5 - b _020F438C ; case 6 - b _020F438C ; case 7 - b _020F438C ; case 8 - b _020F438C ; case 9 - b _020F438C ; case 10 - b _020F438C ; case 11 - b _020F438C ; case 12 - b _020F4398 ; case 13 - b _020F4380 ; case 14 - b _020F438C ; case 15 - b _020F438C ; case 16 - b _020F438C ; case 17 - b _020F438C ; case 18 -_020F4380: - add sp, sp, #0x8c - mov r0, #0 - ldmia sp!, {r4, r5, pc} -_020F438C: - mov r0, r5 - bl _Z10NextActionP14ActionIterator - b _020F4328 -_020F4398: - ldr r0, [sp, #0xc] - add r1, sp, #0 - add r0, r0, #1 - bl _Z20__DecodeSignedNumberPcPl - ldr ip, [sp, #0x34] - ldr r3, [sp] - mov r1, #0 - add r0, ip, r3 - ldr r2, [r0, #4] - str r2, [r4] - ldr r2, [ip, r3] - str r2, [r4, #4] - str r1, [r4, #8] - str r0, [r4, #0xc] - add sp, sp, #0x8c - ldmia sp!, {r4, r5, pc} - arm_func_end _Z23FindMostRecentExceptionP12ThrowContextP13ExceptionInfo - - arm_func_start _Z17IsInSpecificationPcP16ex_specification -_Z17IsInSpecificationPcP16ex_specification: ; 0x020F43D8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r6, r1 - ldr r1, [r6] - mov r7, r0 - cmp r1, #0 - ldr r4, [r6, #0xc] - mov r5, #0 - bls _020F4450 - add r8, sp, #0 -_020F4400: - ldrb r1, [r4] - ldrb r0, [r4, #1] - ldrb r2, [r4, #2] - ldrb r3, [r4, #3] - orr r0, r1, r0, lsl #8 - orr r0, r0, r2, lsl #16 - orr r1, r0, r3, lsl #24 - mov r0, r7 - mov r2, r8 - str r1, [sp, #4] - bl __throw_catch_compare - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r6] - add r5, r5, #1 - cmp r5, r0 - add r4, r4, #4 - blo _020F4400 -_020F4450: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end _Z17IsInSpecificationPcP16ex_specification - - arm_func_start __unexpected -__unexpected: ; 0x020F445C - stmdb sp!, {r4, fp, lr} - sub sp, sp, #0x2c - mov fp, sp - str sp, [fp, #0x18] - ldr r4, [r0, #0x14] - bl _ZSt10unexpectedv - b _020F44E8 -_020F4478: - add r1, fp, #0x1c - add r0, r4, #1 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, fp, #0x20 - bl _Z22__DecodeUnsignedNumberPcPm - add r1, fp, #0x24 - bl _Z20__DecodeSignedNumberPcPl - str r0, [fp, #0x28] - ldr r0, [fp, #8] - add r1, fp, #0x1c - bl _Z17IsInSpecificationPcP16ex_specification - cmp r0, #0 - beq _020F44B0 - bl __rethrow -_020F44B0: - ldr r0, _020F44F4 ; =_021116F4 - add r1, fp, #0x1c - bl _Z17IsInSpecificationPcP16ex_specification - cmp r0, #0 - beq _020F44DC - ldr r3, _020F44F8 ; =_021116E8 - ldr r0, _020F44FC ; =_0211170C - ldr r2, _020F4500 ; =_ZNSt13bad_exceptionD1Ev - add r1, fp, #0 - str r3, [fp] - bl __throw -_020F44DC: - add r0, fp, #4 - bl __end__catch - ldr sp, [fp, #0x18] -_020F44E8: - bl _ZSt9terminatev - add sp, fp, #0x2c - ldmia sp!, {r4, fp, pc} - .balign 4, 0 -_020F44F4: .word _021116F4 -_020F44F8: .word _021116E8 -_020F44FC: .word _0211170C -_020F4500: .word _ZNSt13bad_exceptionD1Ev - arm_func_end __unexpected - - arm_func_start _ZNSt13bad_exceptionD1Ev -_ZNSt13bad_exceptionD1Ev: ; 0x020F4504 - bx lr - arm_func_end _ZNSt13bad_exceptionD1Ev - - arm_func_start _Z16HandleUnexpectedP12ThrowContextP13ExceptionInfoP16ex_specificationPc -_Z16HandleUnexpectedP12ThrowContextP13ExceptionInfoP16ex_specificationPc: ; 0x020F4508 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r3 - mov r5, r2 - mov r2, r4 - mov r7, r0 - mov r6, r1 - bl _Z11UnwindStackP12ThrowContextP13ExceptionInfoPc - ldr r2, [r7, #0x18] - ldr r1, [r5, #8] - ldr r0, [r7, #4] - add r3, r2, r1 - str r0, [r2, r1] - ldr r1, [r7] - mov r0, r7 - str r1, [r3, #4] - ldr r2, [r7, #8] - mov r1, r6 - str r2, [r3, #8] - str r4, [r3, #0x14] - ldr r3, [r6] - ldr r2, [r5, #4] - add r2, r3, r2 - bl _Z17__TransferControlP12ThrowContextP13ExceptionInfoPc - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end _Z16HandleUnexpectedP12ThrowContextP13ExceptionInfoP16ex_specificationPc - - arm_func_start _Z20FindExceptionHandlerP12ThrowContextP13ExceptionInfoPl -_Z20FindExceptionHandlerP12ThrowContextP13ExceptionInfoPl: ; 0x020F4568 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xa4 - mov r5, r1 - ldr r1, [r5] - mov r6, r0 - str r1, [sp, #0x1c] - ldr r0, [r5, #4] - add r8, sp, #0x50 - str r0, [sp, #0x20] - ldr r0, [r5, #8] - mov r4, r2 - str r0, [sp, #0x24] - ldr r0, [r5, #0xc] - add sb, r6, #0x1c - str r0, [sp, #0x28] - ldr r0, [r5, #0x10] - mov r7, #5 - str r0, [sp, #0x2c] - ldr r0, [r5, #0x14] - str r0, [sp, #0x30] - ldr r0, [r6] - str r0, [sp, #0x34] - ldr r0, [r6, #4] - str r0, [sp, #0x38] - ldr r0, [r6, #8] - str r0, [sp, #0x3c] - ldr r0, [r6, #0xc] - str r0, [sp, #0x40] - ldr r0, [r6, #0x10] - str r0, [sp, #0x44] - ldr r0, [r6, #0x14] - str r0, [sp, #0x48] - ldr r0, [r6, #0x18] - str r0, [sp, #0x4c] -_020F45F0: - ldmia sb!, {r0, r1, r2, r3} - stmia r8!, {r0, r1, r2, r3} - subs r7, r7, #1 - bne _020F45F0 - ldr r1, [sb] - add r0, sp, #0x1c - str r1, [r8] - bl _Z13CurrentActionPK14ActionIterator - add r7, sp, #0 - add sl, sp, #4 - add fp, sp, #8 - add sb, sp, #0x14 - add r8, sp, #0x18 -_020F4624: - cmp r0, #0x13 - addls pc, pc, r0, lsl #2 - b _020F4724 -_020F4630: ; jump table - b _020F472C ; case 0 - b _020F4724 ; case 1 - b _020F472C ; case 2 - b _020F472C ; case 3 - b _020F472C ; case 4 - b _020F472C ; case 5 - b _020F472C ; case 6 - b _020F472C ; case 7 - b _020F472C ; case 8 - b _020F472C ; case 9 - b _020F472C ; case 10 - b _020F472C ; case 11 - b _020F4680 ; case 12 - b _020F472C ; case 13 - b _020F4724 ; case 14 - b _020F46D4 ; case 15 - b _020F472C ; case 16 - b _020F472C ; case 17 - b _020F472C ; case 18 - b _020F472C ; case 19 -_020F4680: - ldr lr, [sp, #0x24] - mov r1, sb - ldrb r2, [lr, #1] - ldrb r0, [lr, #2] - ldrb r3, [lr, #3] - ldrb ip, [lr, #4] - orr r0, r2, r0, lsl #8 - orr r0, r0, r3, lsl #16 - orr r2, r0, ip, lsl #24 - add r0, lr, #5 - str r2, [sp, #0x10] - bl _Z22__DecodeUnsignedNumberPcPm - mov r1, r8 - bl _Z20__DecodeSignedNumberPcPl - ldr r0, [r6] - ldr r1, [sp, #0x10] - mov r2, r4 - bl __throw_catch_compare - cmp r0, #0 - beq _020F472C - b _020F4738 -_020F46D4: - ldr r0, [sp, #0x24] - mov r1, r7 - add r0, r0, #1 - bl _Z22__DecodeUnsignedNumberPcPm - mov r1, sl - bl _Z22__DecodeUnsignedNumberPcPm - mov r1, fp - bl _Z20__DecodeSignedNumberPcPl - str r0, [sp, #0xc] - ldr r0, [r6] - mov r1, r7 - bl _Z17IsInSpecificationPcP16ex_specification - cmp r0, #0 - bne _020F472C - ldr r3, [sp, #0x24] - mov r0, r6 - mov r1, r5 - mov r2, r7 - bl _Z16HandleUnexpectedP12ThrowContextP13ExceptionInfoP16ex_specificationPc - b _020F472C -_020F4724: - bl _ZSt9terminatev - b _020F4738 -_020F472C: - add r0, sp, #0x1c - bl _Z10NextActionP14ActionIterator - b _020F4624 -_020F4738: - ldr r0, [sp, #0x24] - add sp, sp, #0xa4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end _Z20FindExceptionHandlerP12ThrowContextP13ExceptionInfoPl - - arm_func_start _Z14SetupCatchInfoP12ThrowContextll -_Z14SetupCatchInfoP12ThrowContextll: ; 0x020F4744 - stmdb sp!, {r3, lr} - ldr lr, [r0, #0x18] - ldr ip, [r0, #4] - add r3, lr, r1 - str ip, [lr, r1] - ldr r1, [r0] - str r1, [r3, #4] - ldr r1, [r0, #8] - str r1, [r3, #8] - ldr r1, [r0] - ldrb r1, [r1] - cmp r1, #0x2a - ldrne r0, [r0, #4] - addne r0, r0, r2 - strne r0, [r3, #0xc] - ldmneia sp!, {r3, pc} - add r1, r3, #0x10 - str r1, [r3, #0xc] - ldr r0, [r0, #4] - ldr r0, [r0] - add r0, r0, r2 - str r0, [r3, #0x10] - ldmia sp!, {r3, pc} - arm_func_end _Z14SetupCatchInfoP12ThrowContextll - - arm_func_start _Z14__ThrowHandlerP12ThrowContext -_Z14__ThrowHandlerP12ThrowContext: - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x28 - mov r5, r0 - ldr r0, [r5, #0x10] - add r1, sp, #0x10 - bl _Z19FindExceptionRecordPcP13ExceptionInfo - ldr r0, [sp, #0x14] - cmp r0, #0 - bne _020F47C8 - bl _ZSt9terminatev -_020F47C8: - add r1, sp, #0x10 - mov r0, r5 - bl _Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo - ldr r0, [r5] - cmp r0, #0 - movne r0, #0 - strne r0, [r5, #0xc] - bne _020F4804 - add r1, sp, #0x10 - mov r0, r5 - bl _Z23FindMostRecentExceptionP12ThrowContextP13ExceptionInfo - str r0, [r5, #0xc] - cmp r0, #0 - bne _020F4804 - bl _ZSt9terminatev -_020F4804: - add r1, sp, #0x10 - add r2, sp, #0 - mov r0, r5 - bl _Z20FindExceptionHandlerP12ThrowContextP13ExceptionInfoPl - mov r4, r0 - ldrb r1, [r4, #1] - ldrb r0, [r4, #2] - ldrb r2, [r4, #3] - ldrb r3, [r4, #4] - orr r0, r1, r0, lsl #8 - orr r0, r0, r2, lsl #16 - orr r2, r0, r3, lsl #24 - add r1, sp, #8 - add r0, r4, #5 - str r2, [sp, #4] - bl _Z22__DecodeUnsignedNumberPcPm - add r1, sp, #0xc - bl _Z20__DecodeSignedNumberPcPl - add r1, sp, #0x10 - mov r0, r5 - mov r2, r4 - bl _Z11UnwindStackP12ThrowContextP13ExceptionInfoPc - ldr r1, [sp, #0xc] - ldr r2, [sp] - mov r0, r5 - bl _Z14SetupCatchInfoP12ThrowContextll - ldr r3, [sp, #0x10] - ldr r2, [sp, #8] - mov r0, r5 - add r1, sp, #0x10 - add r2, r3, r2 - bl _Z17__TransferControlP12ThrowContextP13ExceptionInfoPc - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end _Z14__ThrowHandlerP12ThrowContext - - arm_func_start __end__catch -__end__catch: ; 0x020F488C - stmdb sp!, {r3, lr} - ldr r1, [r0] - cmp r1, #0 - ldrne r2, [r0, #8] - cmpne r2, #0 - ldmeqia sp!, {r3, pc} - mov r0, r1 - mvn r1, #0 - blx r2 - ldmia sp!, {r3, pc} - arm_func_end __end__catch - - arm_func_start _ZNSt13bad_exceptionD0Ev -_ZNSt13bad_exceptionD0Ev: ; 0x020F48B4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt13bad_exceptionD0Ev - - arm_func_start _ZNKSt13bad_exception4whatEv -_ZNKSt13bad_exception4whatEv: ; 0x020F48C8 - ldr r0, _020F48D0 ; =_ZZNKSt13bad_exception4whatEvEs - bx lr - .align 2, 0 -_020F48D0: .word _ZZNKSt13bad_exception4whatEvEs - arm_func_end _ZNKSt13bad_exception4whatEv - - arm_func_start _ZSt17__throw_bad_allocv -_ZSt17__throw_bad_allocv: ; 0x020F48D4 - stmdb sp!, {r3, lr} - ldr r0, _020F4904 ; =_02111734 - ldrb r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r3, _020F4908 ; =_ZTVSt9bad_alloc - ldr r0, _020F490C ; =_02111788 - ldr r2, _020F4910 ; =_ZNSt9bad_allocD1Ev - add r1, sp, #0 - str r3, [sp] - bl __throw - ldmia sp!, {r3, pc} - .align 2, 0 -_020F4904: .word _02111734 -_020F4908: .word _ZTVSt9bad_alloc -_020F490C: .word _02111788 -_020F4910: .word _ZNSt9bad_allocD1Ev - arm_func_end _ZSt17__throw_bad_allocv - - arm_func_start _ZNSt9bad_allocD1Ev -_ZNSt9bad_allocD1Ev: ; 0x020F4914 - bx lr - arm_func_end _ZNSt9bad_allocD1Ev - - arm_func_start _Znwm -_Znwm: ; 0x020F4918 - stmdb sp!, {r3, r4, r5, r6, fp, lr} - sub sp, sp, #0x18 - mov fp, sp - movs r6, r0 - ldr r4, _020F4978 ; =_ZSt13__new_handler - moveq r6, #4 -_020F4930: - mov r0, r6 - bl malloc - movs r5, r0 - bne _020F4958 - ldr r0, [r4] - cmp r0, #0 - beq _020F4954 - blx r0 - b _020F4930 -_020F4954: - bl _ZSt17__throw_bad_allocv -_020F4958: - add sp, fp, #0x18 - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, fp, pc} -_020F4964: - add r0, fp, #0 - bl __unexpected -_020F496C: - b _020F496C -_020F4970: - add sp, fp, #0x18 - ldmia sp!, {r3, r4, r5, r6, fp, pc} - .align 2, 0 -_020F4978: .word _ZSt13__new_handler - arm_func_end _Znwm - - arm_func_start _ZnwmRKSt9nothrow_t -_ZnwmRKSt9nothrow_t: ; 0x020F497C - stmdb sp!, {fp, lr} - sub sp, sp, #0x30 - mov fp, sp - str sp, [fp, #0x2c] - bl _Znwm - add sp, fp, #0x30 - ldmia sp!, {fp, pc} -_020F4998: - add r0, fp, #0x18 - bl __end__catch - add sp, fp, #0x30 - mov r0, #0 - ldmia sp!, {fp, pc} -_020F49AC: - add r0, fp, #0 - bl __unexpected -_020F49B4: - b _020F49B4 -_020F49B8: ; 0x020F49B8 - add sp, fp, #0x30 - ldmia sp!, {fp, pc} - arm_func_end _ZnwmRKSt9nothrow_t - - arm_func_start _ZdlPv -_ZdlPv: ; 0x020F49C0 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl free - ldmia sp!, {r3, pc} - arm_func_end _ZdlPv - - arm_func_start _Znam -_Znam: ; 0x020F49D4 - stmdb sp!, {fp, lr} - sub sp, sp, #0x18 - mov fp, sp - bl _Znwm - add sp, fp, #0x18 - ldmia sp!, {fp, pc} -_020F49EC: ; 0x020F49EC - add r0, fp, #0 - bl __unexpected -_020F49F4: - b _020F49F4 -_020F49F8: ; 0x020F49F8 - add sp, fp, #0x18 - ldmia sp!, {fp, pc} - arm_func_end _Znam - - arm_func_start _ZnamRKSt9nothrow_t -_ZnamRKSt9nothrow_t: ; 0x020F4A00 - stmdb sp!, {fp, lr} - sub sp, sp, #0x18 - mov fp, sp - bl _ZnwmRKSt9nothrow_t - add sp, fp, #0x18 - ldmia sp!, {fp, pc} -_020F4A18: ; 0x020F4A18 - add r0, fp, #0 - bl __unexpected -_020F4A20: - b _020F4A20 -_020F4A24: ; 0x020F4A24 - add sp, fp, #0x18 - ldmia sp!, {fp, pc} - arm_func_end _ZnamRKSt9nothrow_t - - arm_func_start _ZdaPv -_ZdaPv: ; 0x020F4A2C - ldr ip, _020F4A34 ; =_ZdlPv - bx ip - .align 2, 0 -_020F4A34: .word _ZdlPv - arm_func_end _ZdaPv - - arm_func_start _ZNSt9bad_allocD0Ev -_ZNSt9bad_allocD0Ev: ; 0x020F4A38 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZNSt9bad_allocD0Ev - - arm_func_start _ZNKSt9bad_alloc4whatEv -_ZNKSt9bad_alloc4whatEv: ; 0x020F4A4C - ldr r0, _020F4A54 ; =_02111738 - bx lr - .align 2, 0 -_020F4A54: .word _02111738 - arm_func_end _ZNKSt9bad_alloc4whatEv - - arm_func_start __call_static_initializers -__call_static_initializers: ; 0x020F4A58 - stmdb sp!, {r4, lr} - ldr r4, _020F4A80 ; =__sinit__ - b _020F4A6C -_020F4A64: - blx r0 - add r4, r4, #4 -_020F4A6C: - cmp r4, #0 - ldrne r0, [r4] - cmpne r0, #0 - bne _020F4A64 - ldmia sp!, {r4, pc} - .align 2, 0 -_020F4A80: .word __sinit__ - arm_func_end __call_static_initializers - - arm_func_start __destroy_global_chain -__destroy_global_chain: ; 0x020F4A84 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _020F4AC4 ; =__global_destructor_chain - ldr r2, [r4] - cmp r2, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mvn r5, #0 -_020F4A9C: - ldr r0, [r2] - mov r1, r5 - str r0, [r4] - ldr r0, [r2, #8] - ldr r2, [r2, #4] - blx r2 - ldr r2, [r4] - cmp r2, #0 - bne _020F4A9C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020F4AC4: .word __global_destructor_chain - arm_func_end __destroy_global_chain - - arm_func_start _ZNSt9type_infoD2Ev -_ZNSt9type_infoD2Ev: ; 0x020F4AC8 - bx lr - arm_func_end _ZNSt9type_infoD2Ev - - arm_func_start _ZNKSt9type_infoeqERKS_ -_ZNKSt9type_infoeqERKS_: ; 0x020F4ACC - stmdb sp!, {r3, lr} - cmp r0, r1 - beq _020F4AEC - ldr r0, [r0, #4] - ldr r1, [r1, #4] - bl strcmp - cmp r0, #0 - bne _020F4AF4 -_020F4AEC: - mov r0, #1 - ldmia sp!, {r3, pc} -_020F4AF4: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end _ZNKSt9type_infoeqERKS_ - - arm_func_start _ZN10__cxxabiv117__class_type_infoD1Ev -_ZN10__cxxabiv117__class_type_infoD1Ev: ; 0x020F4AFC - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZNSt9type_infoD2Ev - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZN10__cxxabiv117__class_type_infoD1Ev - - arm_func_start _ZN10__cxxabiv117__class_type_infoD0Ev -_ZN10__cxxabiv117__class_type_infoD0Ev: ; 0x020F4B10 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZNSt9type_infoD2Ev - mov r0, r4 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZN10__cxxabiv117__class_type_infoD0Ev - - arm_func_start _ZN10__cxxabiv117__class_type_infoD2Ev -_ZN10__cxxabiv117__class_type_infoD2Ev: ; 0x020F4B2C - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZNSt9type_infoD2Ev - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZN10__cxxabiv117__class_type_infoD2Ev - - arm_func_start _ZN10__cxxabiv120__si_class_type_infoD1Ev -_ZN10__cxxabiv120__si_class_type_infoD1Ev: ; 0x020F4B40 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZN10__cxxabiv117__class_type_infoD2Ev - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZN10__cxxabiv120__si_class_type_infoD1Ev - - arm_func_start _ZN10__cxxabiv120__si_class_type_infoD0Ev -_ZN10__cxxabiv120__si_class_type_infoD0Ev: ; 0x020F4B54 - stmdb sp!, {r4, lr} - mov r4, r0 - bl _ZN10__cxxabiv117__class_type_infoD2Ev - mov r0, r4 - bl _ZdlPv - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end _ZN10__cxxabiv120__si_class_type_infoD0Ev - - arm_func_start _ZSt9dthandlerv -_ZSt9dthandlerv: ; 0x020F4B70 - ldr ip, _020F4B78 ; =abort - bx ip - .align 2, 0 -_020F4B78: .word abort - arm_func_end _ZSt9dthandlerv - - arm_func_start _ZSt9duhandlerv -_ZSt9duhandlerv: ; 0x020F4B7C - ldr ip, _020F4B84 ; =_ZSt9terminatev - bx ip - .align 2, 0 -_020F4B84: .word _ZSt9terminatev - arm_func_end _ZSt9duhandlerv - - arm_func_start _ZSt9terminatev -_ZSt9terminatev: ; 0x020F4B88 - stmdb sp!, {r3, lr} - ldr r0, _020F4B9C ; =_02111848 - ldr r0, [r0] - blx r0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020F4B9C: .word _02111848 - arm_func_end _ZSt9terminatev - - arm_func_start _ZSt10unexpectedv -_ZSt10unexpectedv: ; 0x020F4BA0 - stmdb sp!, {r3, lr} - ldr r0, _020F4BB4 ; =_02111848 - ldr r0, [r0, #4] - blx r0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020F4BB4: .word _02111848 - arm_func_end _ZSt10unexpectedv - - arm_func_start __throw_catch_compare -__throw_catch_compare: ; 0x020F4BB8 - stmdb sp!, {r3, lr} - mov ip, #0 - mov r3, r1 - cmp r1, #0 - str ip, [r2] - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb ip, [r1] - cmp ip, #0x50 - bne _020F4C1C - ldrb ip, [r3, #1]! - cmp ip, #0x56 - addeq r3, r3, #1 - ldrb ip, [r3] - cmp ip, #0x4b - addeq r3, r3, #1 - ldrb r3, [r3] - cmp r3, #0x76 - bne _020F4C18 - ldrb r3, [r0] - cmp r3, #0x50 - cmpne r3, #0x2a - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_020F4C18: - mov r3, r1 -_020F4C1C: - ldrb ip, [r0] - cmp ip, #0x21 - cmpne ip, #0x2a - bne _020F4D1C - ldrb lr, [r0], #1 - ldrb ip, [r3], #1 - cmp lr, ip - movne r0, #0 - ldmneia sp!, {r3, pc} -_020F4C40: - ldrb lr, [r0] - ldrb ip, [r3], #1 - cmp lr, ip - bne _020F4C94 - cmp lr, #0x21 - add r0, r0, #1 - bne _020F4C40 - ldrb r1, [r0] - mov lr, #0 - cmp r1, #0x21 - beq _020F4C88 - mov r1, #0xa -_020F4C70: - ldrb ip, [r0] - ldrb r3, [r0, #1]! - mla ip, lr, r1, ip - cmp r3, #0x21 - sub lr, ip, #0x30 - bne _020F4C70 -_020F4C88: - str lr, [r2] - mov r0, #1 - ldmia sp!, {r3, pc} -_020F4C94: - ldrb r3, [r0], #1 - cmp r3, #0x21 - bne _020F4C94 -_020F4CA0: - ldrb r3, [r0], #1 - cmp r3, #0x21 - bne _020F4CA0 - ldrb r3, [r0] - cmp r3, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r3, r1, #1 - b _020F4C40 -_020F4CC4: - ldrb r1, [r3, #1]! - add r0, r0, #1 - cmp r1, #0x4b - bne _020F4CE4 - ldrb r1, [r0] - add r3, r3, #1 - cmp r1, #0x4b - addeq r0, r0, #1 -_020F4CE4: - ldrb r2, [r0] - cmp r2, #0x4b - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldrb r1, [r3] - cmp r1, #0x56 - bne _020F4D0C - cmp r2, #0x56 - addeq r0, r0, #1 - add r3, r3, #1 -_020F4D0C: - ldrb r1, [r0] - cmp r1, #0x56 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_020F4D1C: - ldrb r2, [r0] - cmp r2, #0x50 - cmpne r2, #0x52 - bne _020F4D38 - ldrb r1, [r3] - cmp r2, r1 - beq _020F4CC4 -_020F4D38: - ldrb r1, [r3] - cmp r2, r1 - bne _020F4D60 -_020F4D44: - cmp r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r2, [r0, #1]! - ldrb r1, [r3, #1]! - cmp r2, r1 - beq _020F4D44 -_020F4D60: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end __throw_catch_compare - - arm_func_start _Z15__PopStackFrameP12ThrowContextP13ExceptionInfo -_Z15__PopStackFrameP12ThrowContextP13ExceptionInfo: ; 0x020F4D68 - stmdb sp!, {r4, lr} - ldrb r1, [r0, #0x6a] - ldr ip, [r0, #0x60] - mov r4, #0xf - cmp r1, #0 - ldr r1, [r0, #0x18] - movne r2, #0x10 - moveq r2, #0 - add r1, r1, ip - sub lr, r1, r2 - mov r3, #1 -_020F4D94: - ldrh r1, [r0, #0x68] - tst r1, r3, lsl r4 - ldrne r2, [lr, #-4]! - addne r1, r0, r4, lsl #2 - strne r2, [r1, #0x1c] - subs r4, r4, #1 - bpl _020F4D94 - ldr r1, [r0, #0x18] - add r1, r1, ip - str r1, [r0, #0x14] - ldr r0, [r0, #0x54] - ldmia sp!, {r4, pc} - arm_func_end _Z15__PopStackFrameP12ThrowContextP13ExceptionInfo - - arm_func_start _Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo -_Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo: ; 0x020F4DC4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, [r1, #4] - mov r6, r0 - ldrb r0, [r1] - ands r4, r0, #0x40 - movne r2, #1 - moveq r2, #0 - strb r2, [r6, #0x6b] - tst r0, #0x20 - movne r2, #1 - moveq r2, #0 - ands r5, r0, #0x80 - movne r0, #1 - strb r2, [r6, #0x6a] - moveq r0, #0 - strb r0, [r6, #0x6c] - ldrb r2, [r1, #1] - add r0, r1, #2 - add r1, r6, #0x60 - mov r2, r2, lsl #4 - strh r2, [r6, #0x68] - ldrh r2, [r6, #0x68] - orr r2, r2, #0x4000 - strh r2, [r6, #0x68] - bl _Z22__DecodeUnsignedNumberPcPm - cmp r4, #0 - beq _020F4E38 - add r1, r6, #0x64 - bl _Z22__DecodeUnsignedNumberPcPm -_020F4E38: - cmp r4, #0 - beq _020F4E58 - cmp r5, #0 - ldrne r0, [r6, #0x38] - strne r0, [r6, #0x18] - ldreq r0, [r6, #0x48] - streq r0, [r6, #0x18] - ldmia sp!, {r4, r5, r6, pc} -_020F4E58: - ldr r0, [r6, #0x14] - str r0, [r6, #0x18] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end _Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo - - arm_func_start _Z20__FindExceptionTableP13ExceptionInfoPc -_Z20__FindExceptionTableP13ExceptionInfoPc: ; 0x020F4E64 - ldr r2, _020F4E7C ; =__exception_table_start__ - ldr r1, _020F4E80 ; =__exception_table_end__ - str r2, [r0, #0xc] - str r1, [r0, #0x10] - mov r0, #1 - bx lr - .align 2, 0 -_020F4E7C: .word __exception_table_start__ -_020F4E80: .word __exception_table_end__ - arm_func_end _Z20__FindExceptionTableP13ExceptionInfoPc - - arm_func_start _Z16__SkipUnwindInfoPc -_Z16__SkipUnwindInfoPc: ; 0x020F4E84 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldrb r4, [r0], #2 - add r1, sp, #0 - bl _Z22__DecodeUnsignedNumberPcPm - tst r4, #0x40 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - add r1, sp, #0 - bl _Z22__DecodeUnsignedNumberPcPm - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end _Z16__SkipUnwindInfoPc - - arm_func_start _Z17__TransferControlP12ThrowContextP13ExceptionInfoPc -_Z17__TransferControlP12ThrowContextP13ExceptionInfoPc: ; 0x020F4EB4 - ldr r4, [r0, #0x2c] - ldr r5, [r0, #0x30] - ldr r6, [r0, #0x34] - ldr r7, [r0, #0x38] - ldr r8, [r0, #0x3c] - ldr sb, [r0, #0x40] - ldr sl, [r0, #0x44] - ldr fp, [r0, #0x48] - ldr sp, [r0, #0x5c] - ldr ip, [r0, #0x64] - sub sp, sp, ip - bx r2 - arm_func_end _Z17__TransferControlP12ThrowContextP13ExceptionInfoPc - - arm_func_start __throw -__throw: ; 0x020F4EE4 - mov ip, sp - sub sp, sp, #0x70 - str r4, [sp, #0x2c] - str r5, [sp, #0x30] - str r6, [sp, #0x34] - str r7, [sp, #0x38] - str r8, [sp, #0x3c] - str sb, [sp, #0x40] - str sl, [sp, #0x44] - str fp, [sp, #0x48] - str ip, [sp, #0x14] - str ip, [sp, #0x5c] - str lr, [sp, #0x10] - str r0, [sp] - str r1, [sp, #4] - str r2, [sp, #8] - mov r0, sp - b _Z14__ThrowHandlerP12ThrowContext - arm_func_end __throw - - arm_func_start __rethrow -__rethrow: ; 0x020F4F2C - mov ip, sp - sub sp, sp, #0x70 - str r4, [sp, #0x2c] - str r5, [sp, #0x30] - str r6, [sp, #0x34] - str r7, [sp, #0x38] - str r8, [sp, #0x3c] - str sb, [sp, #0x40] - str sl, [sp, #0x44] - str fp, [sp, #0x48] - str ip, [sp, #0x14] - str ip, [sp, #0x5c] - str lr, [sp, #0x10] - mov ip, #0 - str ip, [sp] - str ip, [sp, #4] - str ip, [sp, #8] - mov r0, sp - b _Z14__ThrowHandlerP12ThrowContext - arm_func_end __rethrow - - arm_func_start _ExitProcess -_ExitProcess: ; 0x020F4F78 - ldr ip, _020F4F80 ; =sys_exit - bx ip - .align 2, 0 -_020F4F80: .word sys_exit - arm_func_end _ExitProcess - - .rodata - - .public _0210E404 -_0210E404: - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B - .byte 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B - .byte 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B - .byte 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B - .byte 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B - .byte 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x5B - .byte 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B - .byte 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B - .byte 0x7C, 0x7D, 0x7E, 0x7F - - .public _0210E484 -_0210E484: - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B - .byte 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B - .byte 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B - .byte 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B - .byte 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B - .byte 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B - .byte 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B - .byte 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x7B - .byte 0x7C, 0x7D, 0x7E, 0x7F - - .public _0210E504 -_0210E504: - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x42, 0x01, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00 - .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00 - .byte 0xD0, 0x00, 0xD0, 0x00, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04 - .byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00 - .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06 - .byte 0x51, 0x06, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02 - .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02 - .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00 - .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04 - .byte 0x71, 0x04, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00 - .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00 - .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00 - .byte 0xD0, 0x00, 0x04, 0x00 - -_0210E604: - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -_0210E62C: - .asciz "NAN(" -_0210E631: - .asciz "INFINITY" - .balign 4, 0 -_0210E63C: - .byte 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00 - .byte 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x11, 0x00 - .byte 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00 - .byte 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00 - .byte 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00 - .byte 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x31, 0x00 - .byte 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00 - .byte 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x61, 0x00 - .byte 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00 - .byte 0x6A, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x71, 0x00 - .byte 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00 - .byte 0x7A, 0x00, 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x61, 0x00 - .byte 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00 - .byte 0x6A, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x71, 0x00 - .byte 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00, 0x79, 0x00 - .byte 0x7A, 0x00, 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00 - -_0210E73C: - .byte 0x04, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x01 - .byte 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x42, 0x01, 0xD0, 0x00 - .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00 - .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x58, 0x04, 0x58, 0x04 - .byte 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04, 0x58, 0x04 - .byte 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x51, 0x06 - .byte 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x06, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02 - .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02 - .byte 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02, 0x51, 0x02 - .byte 0x51, 0x02, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x71, 0x04 - .byte 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x04, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00 - .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00 - .byte 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00, 0x71, 0x00 - .byte 0x71, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0xD0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00 - .byte 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x11, 0x00 - .byte 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00 - .byte 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00 - .byte 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00 - .byte 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x31, 0x00 - .byte 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00 - .byte 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x41, 0x00 - .byte 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00 - .byte 0x4A, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00, 0x51, 0x00 - .byte 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00 - .byte 0x5A, 0x00, 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x41, 0x00 - .byte 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00 - .byte 0x4A, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00, 0x51, 0x00 - .byte 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00 - .byte 0x5A, 0x00, 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00 - -_0210E93C: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x03, 0xB8, 0xE2, 0x3F - -_0210E94C: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F - -_0210E95C: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0xD0, 0xCF, 0x43, 0xEB, 0xFD, 0x4C, 0x3E - - .data - -_02110FCC: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word _021E57C0 - .byte 0x00, 0x01, 0x00, 0x00 - .word _021E57C0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word __read_console - .word __write_console - .word __close_console - .word 0x00000000 -_02111018: - .byte 0x01, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .word _021E56C0 - .byte 0x00, 0x01, 0x00, 0x00 - .word _021E56C0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .word __read_console - .word __write_console - .word __close_console - .word 0x00000000 -_02111064: - .byte 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word _021E55C0 - .byte 0x00, 0x01, 0x00, 0x00 - .word _021E55C0 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word __read_console - .word __write_console - .word __close_console - .word 0x00000000 -_021110B0: - .asciz "Assertion (%s) failed in \"%s\", function \"%s\", line %d\n" - .balign 4, 0 -_021110E8: - .byte 0x00, 0x00, 0x80, 0x7F -_021110EC: - .byte 0xFF, 0xFF, 0xFF, 0x7F -_021110F0: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F -_021110F8: - .byte 0x00, 0x00, 0x00, 0x00 - .balign 4, 0 -_021110FC: - .asciz "%T" - .balign 4, 0 -_02111100: - .asciz "AM|PM" - .balign 4, 0 -_02111108: - .word __mbtowc_noconv - .word __wctomb_noconv -_02111110: - .byte 0x20, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word _02111140 -_02111120: - .word _02111100 - .word _02111224 - .word _02111218 - .word _02111200 - .word _021110FC - .word _02111234 - .word _0211128C - .word _021110F8 -_02111140: - .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00 - .byte 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00 - .byte 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00 - .byte 0x29, 0x00, 0x2A, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00 - .byte 0x17, 0x00, 0x2B, 0x00, 0x2D, 0x00, 0x2F, 0x00, 0x31, 0x00, 0x33, 0x00, 0x35, 0x00, 0x37, 0x00 - .byte 0x39, 0x00, 0x3B, 0x00, 0x3D, 0x00, 0x3F, 0x00, 0x41, 0x00, 0x43, 0x00, 0x45, 0x00, 0x47, 0x00 - .byte 0x49, 0x00, 0x4B, 0x00, 0x4D, 0x00, 0x4F, 0x00, 0x51, 0x00, 0x53, 0x00, 0x55, 0x00, 0x57, 0x00 - .byte 0x59, 0x00, 0x5B, 0x00, 0x5D, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00 - .byte 0x00, 0x00, 0x2C, 0x00, 0x2E, 0x00, 0x30, 0x00, 0x32, 0x00, 0x34, 0x00, 0x36, 0x00, 0x38, 0x00 - .byte 0x3A, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x40, 0x00, 0x42, 0x00, 0x44, 0x00, 0x46, 0x00, 0x48, 0x00 - .byte 0x4A, 0x00, 0x4C, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x52, 0x00, 0x54, 0x00, 0x56, 0x00, 0x58, 0x00 - .byte 0x5A, 0x00, 0x5C, 0x00, 0x5E, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x00, 0x00 - .balign 4, 0 -_02111200: - .asciz "%m/%d/%y" - .balign 4, 0 -_0211120C: - .word _02111120 - .word _02111110 - .word _02111108 - .balign 4, 0 -_02111218: - .asciz "%I:%M:%S %p" - .balign 4, 0 -_02111224: - .asciz "%a %b %e %T %Y" - .balign 4, 0 -_02111234: - .asciz "Sun|Sunday|Mon|Monday|Tue|Tuesday|Wed|Wednesday|Thu|Thursday|Fri|Friday|Sat|Saturday" - .balign 4, 0 -_0211128C: - .asciz "Jan|January|Feb|February|Mar|March|Apr|April|May|May|Jun|June|Jul|July|Aug|August|Sep|September|Oct|October|Nov|November|Dec|December" - .balign 4, 0 -_02111314: - .asciz "0x0p0" - .balign 4, 0 -_0211131C: - .asciz "-INF" - .balign 4, 0 -_02111324: - .asciz "-inf" - .balign 4, 0 -_0211132C: - .asciz "INF" - .balign 4, 0 -_02111330: - .asciz "inf" - .balign 4, 0 -_02111334: - .asciz "-NAN" - .balign 4, 0 -_0211133C: - .asciz "-nan" - .balign 4, 0 -_02111344: - .asciz "NAN" - .balign 4, 0 -_02111348: - .asciz "nan" - .balign 4, 0 -_0211134C: - .byte 0x00, 0x00, 0x00, 0x00 -_02111350: - .byte 0x00, 0x00, 0x00, 0x00 -_02111354: - .byte 0x01, 0x00, 0x00, 0x00 -_02111358: - .byte 0x00, 0x00, 0x00, 0x00 -_0211135C: - .word _02111358 - .word _02111358 -_02111364: - .byte 0x30, 0x00, 0x78, 0x00, 0x30, 0x00, 0x70, 0x00, 0x30, 0x00, 0x00, 0x00 -_02111370: - .byte 0x2D, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00 -_0211137C: - .byte 0x2D, 0x00, 0x69, 0x00 - .byte 0x6E, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00 -_02111388: - .byte 0x49, 0x00, 0x4E, 0x00, 0x46, 0x00, 0x00, 0x00 -_02111390: - .byte 0x69, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x00, 0x00 -_02111398: - .byte 0x2D, 0x00, 0x4E, 0x00, 0x41, 0x00, 0x4E, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 -_021113A4: - .byte 0x2D, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00 -_021113B0: - .byte 0x4E, 0x00, 0x41, 0x00, 0x4E, 0x00, 0x00, 0x00 -_021113B8: - .byte 0x6E, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00 -_021113C0: - .byte 0x00, 0x00, 0x00, 0x00 -_021113C4: - .byte 0x00, 0x00, 0x00, 0x00 -_021113C8: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x8F, 0x40 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xC3, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xF8, 0x40 - .byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x2E, 0x41, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x12, 0x63, 0x41 - .byte 0x00, 0x00, 0x00, 0x00, 0x84, 0xD7, 0x97, 0x41 - .balign 4, 0 -_02111408: - .asciz "542101086242752217003726400434970855712890625" - .balign 4, 0 -_02111438: - .asciz "11102230246251565404236316680908203125" - .balign 4, 0 -_02111460: - .asciz "23283064365386962890625" - .balign 4, 0 -_02111478: - .asciz "152587890625" - .balign 4, 0 -_02111488: - .asciz "390625" - .balign 4, 0 -_02111490: - .asciz "78125" - .balign 4, 0 -_02111498: - .asciz "15625" - .balign 4, 0 -_021114A0: - .asciz "3125" - .balign 4, 0 -_021114A8: - .asciz "625" - .balign 4, 0 -_021114AC: - .asciz "125" - .balign 4, 0 -_021114B0: - .asciz "25" - .balign 4, 0 -_021114B4: - .asciz "5" - .balign 4, 0 -_021114B8: - .asciz "1" - .balign 4, 0 -_021114BC: - .asciz "2" - .balign 4, 0 -_021114C0: - .asciz "4" - .balign 4, 0 -_021114C4: - .asciz "8" - .balign 4, 0 -_021114C8: - .asciz "16" - .balign 4, 0 -_021114CC: - .asciz "32" - .balign 4, 0 -_021114D0: - .asciz "64" - .balign 4, 0 -_021114D4: - .asciz "128" - .balign 4, 0 -_021114D8: - .asciz "256" - .balign 4, 0 -_021114DC: - .asciz "179769313486231580793728714053034151" - .balign 4, 0 -_02111504: - .word _021117F4 - .word _02111528 -_0211150C: - .word _021117F4 - .word _0211158C -_02111514: - .word _021117F4 - .word _02111568 -_0211151C: - .word _021117E4 - .word _021115B8 - .word _0211150C -_02111528: - .asciz "St9exception" - .balign 4, 0 -_02111538: - .word 0 - .word _0211150C -_02111540: - .word _ZNSt9exceptionD1Ev - .word _ZNSt9exceptionD0Ev - .word 0 - .word 0 - .word 0 - .word _0211151C -_02111558: - .word _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED1Ev - .word _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED0Ev - .word _ZNKSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE11get_deleterERKSt9type_info - .word _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE7disposeEv -_02111568: - .asciz "NSt6detail14default_deleteIA0_cEE" - .balign 4, 0 -_0211158C: - .asciz "NSt3tr16detail25shared_ptr_deleter_commonE" - .balign 4, 0 -_021115B8: - .asciz "NSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEEE" - .balign 4, 0 -_02111600: - .word _021117E4 - .word _02111618 - .word _02111504 -_0211160C: - .word _021117E4 - .word _02111628 - .word _02111600 -_02111618: - .asciz "St11logic_error" - .balign 4, 0 -_02111628: - .asciz "St12length_error" - .balign 4, 0 -_0211163C: - .word 0 - .word _0211160C -_02111644: - .word _ZNSt12length_errorD1Ev - .word _ZNSt12length_errorD0Ev - .word _ZNSt3tr16detail25shared_ptr_deleter_commonD2Ev - .word 0 - .word _02111600 -_02111658: - .word _ZNSt11logic_errorD1Ev - .word _ZNSt11logic_errorD0Ev - .word _ZNSt3tr16detail25shared_ptr_deleter_commonD2Ev -_02111664: - .asciz "vector length error" - .balign 4, 0 -_02111678: - .asciz "!std::exception!!std::logic_error!!std::length_error!!" - .balign 4, 0 -_021116B0: - .word _021117E4 - .word _021116CC - .word _02111504 -_ZZNKSt13bad_exception4whatEvEs: - .asciz "bad_exception" - .balign 4, 0 -_021116CC: - .asciz "St13bad_exception" - .balign 4, 0 -_021116E0: - .word 0 - .word _021116B0 -_021116E8: - .word _ZNSt13bad_exceptionD1Ev - .word _ZNSt13bad_exceptionD0Ev - .word _ZNKSt13bad_exception4whatEv -_021116F4: - .asciz "!std::bad_exception!!" - .balign 4, 0 -_0211170C: - .asciz "!std::exception!!std::bad_exception!!" - .balign 4, 0 -_02111734: - .byte 1 - .balign 4, 0 -_02111738: - .asciz "bad_alloc" - .balign 4, 0 -_02111744: - .word _021117E4 - .word _02111750 - .word _02111504 -_02111750: - .asciz "St9bad_alloc" - .balign 4, 0 -_02111760: - .asciz "!std::bad_alloc!" - .balign 4, 0 -_02111774: - .word 0 - .word _02111744 -_ZTVSt9bad_alloc: - .word _ZNSt9bad_allocD1Ev - .word _ZNSt9bad_allocD0Ev - .word _ZNKSt9bad_alloc4whatEv -_02111788: - .asciz "!std::exception!!std::bad_alloc!!" - .balign 4, 0 -_021117AC: - .word _021117F4 - .word _021117CC -_021117B4: - .word _021117E4 - .word _02111820 - .word _021117C0 -_021117C0: - .word _021117E4 - .word _021117FC - .word _021117AC -_021117CC: - .asciz "St9type_info" - .balign 4, 0 -_021117DC: - .word 0 - .word _021117B4 -_021117E4: - .word _ZN10__cxxabiv120__si_class_type_infoD1Ev - .word _ZN10__cxxabiv120__si_class_type_infoD0Ev - .word 0 - .word _021117C0 -_021117F4: - .word _ZN10__cxxabiv117__class_type_infoD1Ev - .word _ZN10__cxxabiv117__class_type_infoD0Ev -_021117FC: - .asciz "N10__cxxabiv117__class_type_infoE" - .balign 4, 0 -_02111820: - .asciz "N10__cxxabiv120__si_class_type_infoE" - .balign 4, 0 -_02111848: - .word _ZSt9dthandlerv - .word _ZSt9duhandlerv - - exception abort, 0x0025, 0x00100000 - exception exit, 0x004D, 0x00100100 - exception __exit, 0x0129, 0x00200300 - exception nan, 0x0019, 0x00000000 - exception malloc, 0x0019, 0x00100000 - exception free, 0x0015, 0x00100000 - exception __flush_line_buffered_output_files, 0x008D, 0x00403F00 - exception __flush_all, 0x0069, 0x00403F00 - exception __msl_assertion_failed, 0x003D, 0x00200100 - exception __load_buffer, 0x008D, 0x00200700 - exception __flush_buffer, 0x0089, 0x00200300 - exception fread, 0x010D, 0x00407F00 - exception __fread, 0x0349, 0x00507F00 - exception __fwrite, 0x02B1, 0x0060FF00 - exception fclose, 0x0075, 0x00200300 - exception fflush, 0x00E9, 0x00100100 - exception ftell, 0x011D, 0x00300F00 - exception _fseek, 0x01E9, 0x00400320 - exception fseek, 0x012D, 0x00403F00 - exception rewind, 0x0025, 0x00100100 - exception mbtowc, 0x001D, 0x00100000 - exception wctomb, 0x001D, 0x00100000 - exception mbstowcs, 0x0089, 0x00301F00 - exception wcstombs, 0x0079, 0x00403F00 - exception memset, 0x0015, 0x00100100 - exception long2str__printf, 0x024D, 0x0090FF20 - exception longlong2str__printf, 0x02FD, 0x00A0FF20 - exception double2hex__printf, 0x04DD, 0x00F07F20 - exception float2str__printf, 0x0765, 0x00C0FF20 - exception __pformatter, 0x0824, _020F4F84 - exception __FileWrite, 0x002D, 0x00200300 - exception __StringWrite, 0x0045, 0x00200300 - exception printf, 0x0119, 0x00300120 - exception vsnprintf, 0x0069, 0x00300300 - exception vsprintf, 0x0019, 0x00000000 - exception snprintf, 0x0029, 0x00300020 - exception sprintf, 0x002D, 0x00300020 - exception qsort, 0x0165, 0x0070FF00 - exception __sformatter, 0x0D54, _020F4F8C - exception vsscanf, 0x0055, 0x00200000 - exception sscanf, 0x0029, 0x00300020 - exception raise, 0x0131, 0x00200300 - exception __strtold, 0x124C, _020F4F94 - exception strtold, 0x00E1, 0x00500F00 - exception atof, 0x0011, 0x00000000 - exception __strtoul, 0x03E9, 0x0060FF00 - exception __strtoull, 0x046D, 0x00807F00 - exception strtoul, 0x0099, 0x00600300 - exception strtol, 0x00C9, 0x00600300 - exception atoi, 0x0015, 0x00000000 - exception wmemcpy, 0x0011, 0x00000000 - exception long2str__wprintf, 0x0251, 0x0090FF20 - exception longlong2str__wprintf, 0x0301, 0x00A0FF20 - exception double2hex__wprintf, 0x0399, 0x00F07F20 - exception float2str__wprintf, 0x064C, _020F4F9C - exception __wpformatter, 0x08F0, _020F4FA4 - exception __wStringWrite, 0x0041, 0x00200300 - exception swprintf, 0x0029, 0x00300020 - exception vswprintf, 0x0071, 0x00300300 - exception __ieee754_pow, 0x1188, _020F4FAC - exception frexp, 0x00BD, 0x00300120 - exception ldexp, 0x024D, 0x00300120 - exception pow, 0x000D, 0x00000000 - exception __rounddec, 0x0041, 0x00200300 - exception __ull2dec, 0x00CD, 0x0050FF00 - exception __timesdec, 0x0185, 0x00D0FF00 - exception __str2dec, 0x009D, 0x00100000 - exception __two_exp, 0x0385, 0x00B00300 - exception __num2dec_internal, 0x0181, 0x00E01F00 - exception __num2dec, 0x00A9, 0x00200300 - exception __dec2num, 0x0624, _020F4FB4 - exception scalbn, 0x002D, 0x00200100 - exception __sys_alloc, 0x0019, 0x00000000 - exception __sys_free, 0x0019, 0x00000000 - exception _ZNSt3tr110shared_ptrIcEC1IcNSt6detail14default_deleteIA0_cEEEEPT_T0_, 0x0080, _020F4FBC - exception _ZNSt9exceptionD0Ev, 0x0015, 0x00100100 - exception _ZNKSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE11get_deleterERKSt9type_info, 0x0029, 0x00100100 - exception _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEE7disposeEv, 0x0011, 0x00000000 - exception _ZNSt3tr110shared_ptrIcED1Ev, 0x0040, _020F4FCC - exception _ZN10Metrowerks8move_ptrIcRNSt6detail14default_deleteIA0_cEEED1Ev, 0x0021, 0x00100100 - exception _ZNSt3tr16detail18shared_ptr_deleterIcNSt6detail14default_deleteIA0_cEEED0Ev, 0x0015, 0x00100100 - exception _ZNSt11logic_errorD1Ev, 0x0019, 0x00100100 - exception _ZNSt11logic_errorD0Ev, 0x0021, 0x00100100 - exception _ZNSt12length_errorD1Ev, 0x0019, 0x00100100 - exception _ZNSt12length_errorD0Ev, 0x0021, 0x00100100 - exception _ZNSt3tr16detail25shared_ptr_deleter_common7releaseEv, 0x0031, 0x00100100 - exception _ZNSt3tr16detail25shared_ptr_deleter_common12release_weakEv, 0x002D, 0x00100000 - exception _ZNSt15__vector_commonILb1EE18throw_length_errorEv, 0x0090, _020F4FE0 - exception __read_console, 0x0051, 0x00300F00 - exception __write_console, 0x0035, 0x00200700 - exception _Z19FindExceptionRecordPcP13ExceptionInfo, 0x0109, 0x00503F00 - exception _Z10NextActionP14ActionIterator, 0x0388, _020F4FF8 - exception _Z11UnwindStackP12ThrowContextP13ExceptionInfoPc, 0x08B0, _020F5000 - exception _Z23FindMostRecentExceptionP12ThrowContextP13ExceptionInfo, 0x0154, _020F5010 - exception _Z17IsInSpecificationPcP16ex_specification, 0x0085, 0x00401F00 - exception __unexpected, 0x00A8, _020F5018 - exception _Z16HandleUnexpectedP12ThrowContextP13ExceptionInfoP16ex_specificationPc, 0x0060, _020F502C - exception _Z20FindExceptionHandlerP12ThrowContextP13ExceptionInfoPl, 0x01DC, _020F5034 - exception _Z14__ThrowHandlerP12ThrowContext, 0x00ED, 0x00700300 - exception __end__catch, 0x0029, 0x00100000 - exception _ZNSt13bad_exceptionD0Ev, 0x0015, 0x00100100 - exception _ZSt17__throw_bad_allocv, 0x0041, 0x00100000 - exception _Znwm, 0x0064, _020F503C - exception _ZnwmRKSt9nothrow_t, 0x0044, _020F5054 - exception _ZdlPv, 0x0015, 0x00100000 - exception _Znam, 0x002C, _020F5070 - exception _ZnamRKSt9nothrow_t, 0x002C, _020F5088 - exception _ZdaPv, 0x000D, 0x00000000 - exception _ZNSt9bad_allocD0Ev, 0x0015, 0x00100100 - exception __call_static_initializers, 0x002D, 0x00100100 - exception __destroy_global_chain, 0x0045, 0x00200300 - exception _ZNKSt9type_infoeqERKS_, 0x0031, 0x00100000 - exception _ZN10__cxxabiv117__class_type_infoD1Ev, 0x0015, 0x00100100 - exception _ZN10__cxxabiv117__class_type_infoD0Ev, 0x001D, 0x00100100 - exception _ZN10__cxxabiv117__class_type_infoD2Ev, 0x0015, 0x00100100 - exception _ZN10__cxxabiv120__si_class_type_infoD1Ev, 0x0015, 0x00100100 - exception _ZN10__cxxabiv120__si_class_type_infoD0Ev, 0x001D, 0x00100100 - exception _ZSt9dthandlerv, 0x000D, 0x00000000 - exception _ZSt9duhandlerv, 0x000D, 0x00000000 - exception _ZSt9terminatev, 0x0019, 0x00100000 - exception _ZSt10unexpectedv, 0x0019, 0x00100000 - exception _Z16__SetupFrameInfoP12ThrowContextP13ExceptionInfo, 0x00A1, 0x00200700 - exception _Z16__SkipUnwindInfoPc, 0x0031, 0x00200100 - exception _ExitProcess, 0x000D, 0x00000000 - - .section .exception,4,1,2 - ; MSL symbols have exceptions for C++ mode, even when compiling C. - -_020F4F84: - .byte 0x20, 0xFF, 0x09, 0x60, 0x00, 0x00, 0x00, 0x00 -_020F4F8C: - .byte 0x00, 0xFF, 0x01, 0xB0, 0x00, 0x00, 0x00, 0x00 -_020F4F94: - .byte 0x00, 0xFF, 0x01, 0xD0, 0x00, 0x00, 0x00, 0x00 -_020F4F9C: - .byte 0x20, 0xFF, 0x09, 0x60, 0x00, 0x00, 0x00, 0x00 -_020F4FA4: - .byte 0x20, 0xFF, 0x11, 0x68, 0x00, 0x00, 0x00, 0x00 -_020F4FAC: - .byte 0x20, 0xFF, 0x01, 0xB8, 0x00, 0x00, 0x00, 0x00 -_020F4FB4: - .byte 0x00, 0xFF, 0x05, 0x20, 0x00, 0x00, 0x00, 0x00 -_020F4FBC: - .byte 0x20, 0x03, 0x50, 0x58, 0x00, 0x0E, 0x00, 0x82, 0x00, 0xF0, 0x04, 0x0F, 0x02, 0x00, 0x00, 0x00 -_020F4FCC: - .byte 0x40, 0x81, 0x50, 0x00 - .byte 0x40, 0x00, 0x16, 0x28, 0x00, 0x1E, 0x00, 0x8F, 0x00, 0x58, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x00 -_020F4FE0: - .byte 0x00, 0x07, 0x40, 0x48, 0x58, 0x22, 0x18, 0x00, 0x14, 0x00, 0x27, 0x0A, 0x00, 0xB0, 0x04, 0x0F - .byte 0x02, 0xA6, 0x0C, 0x00 - .word _ZNSt9exceptionD2Ev -_020F4FF8: - .byte 0x00, 0x03, 0x01, 0xB0, 0x00, 0x00, 0x00, 0x00 -_020F5000: - .byte 0x00, 0xFF, 0x01, 0xC8, 0x58, 0x1D, 0xB8, 0x1A, 0x01, 0x8C, 0x50, 0x1A, 0x00, 0x8E, 0x00, 0x00 -_020F5010: - .byte 0x00, 0x03, 0x01, 0x98, 0x00, 0x00, 0x00, 0x00 -_020F5018: - .byte 0x40, 0x81, 0x70, 0x00, 0x30, 0x00, 0x16, 0x20 - .byte 0xB0, 0x24, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x8D, 0x08 -_020F502C: - .byte 0x00, 0x0F, 0x30, 0x38, 0x80, 0x0E, 0x00, 0x8E -_020F5034: - .byte 0x00, 0xFF, 0x01, 0xC8, 0x00, 0x00, 0x00, 0x00 -_020F503C: - .byte 0x40, 0x87, 0x60, 0x00 - .byte 0x40, 0x40, 0x16, 0x28, 0x00, 0x26, 0x00, 0x8F, 0x02, 0x98, 0x00, 0x60, 0x17, 0x11, 0x02, 0x8D - .byte 0x00, 0x00, 0x00, 0x00 -_020F5054: - .byte 0x40, 0x80, 0x70, 0x00, 0x28, 0x00, 0x1C, 0x20, 0x00, 0x2A, 0x28, 0x00 - .byte 0x32, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x38, 0x30, 0x8F, 0x00, 0x60, 0x00, 0x8D, 0x00, 0x00 -_020F5070: - .byte 0x40, 0x80, 0x40, 0x00, 0x20, 0x00, 0x16, 0x20, 0x00, 0x26, 0x00, 0x8F, 0x02, 0x30, 0x00, 0x60 - .byte 0x17, 0x11, 0x02, 0x8D, 0x00, 0x00, 0x00, 0x00 -_020F5088: - .byte 0x40, 0x80, 0x40, 0x00, 0x20, 0x00, 0x16, 0x20 - .byte 0x00, 0x1E, 0x00, 0x8F, 0x00, 0x30, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x00 diff --git a/lib/asm/nitro.s b/lib/asm/nitro.s deleted file mode 100644 index d53cf410..00000000 --- a/lib/asm/nitro.s +++ /dev/null @@ -1,19779 +0,0 @@ - .include "asm/macros.inc" - .include "nitro.inc" - .include "global.inc" - - .bss - - .public GXi_DmaId - .public GX_ResetBankForClearImage - .public G2_GetBG0ScrPtr - .public G2S_GetBG0ScrPtr - .public G2_GetBG1ScrPtr - .public G2S_GetBG1ScrPtr - .public G2_GetBG2ScrPtr - .public G2S_GetBG2ScrPtr - .public G2_GetBG3ScrPtr - .public G2S_GetBG3ScrPtr - .public G3_LoadMtx44 - .public OSi_GetUnusedThreadId - .public OSi_InsertLinkToQueue - .public OSi_ThreadInfo - .public OSi_IrqThreadQueue - - .public OSi_IrqCallback - .public OSi_IrqCallbackInfoIndex - .public OSi_IrqCallbackInfo - .public OSi_EnterDmaCallback - .public OSi_EnterTimerCallback - .public OS_SetIrqStackChecker - .public OS_InitLock - .public OSi_DoLockByWord - .public OS_LockByWord - .public OSi_DoUnlockByWord - .public OS_UnlockByWord - .public OSi_DoTryLockByWord - .public OS_LockCartridge - .public OS_UnlockCartridge - .public OS_UnLockCartridge - .public OS_TryLockCartridge - .public OS_LockCard - .public OS_UnlockCard - .public OS_UnLockCard - .public OS_ReadOwnerOfLockWord - .public OS_InitThread - .public OSi_ExitThread - .public OSi_ExitThread_ArgSpecified - .public OSi_InsertThreadToList - .public OSi_RemoveLinkFromQueue - .public OSi_RemoveMutexLinkFromQueue - .public OSi_RemoveSpecifiedLinkFromQueue - .public OSi_RemoveThreadFromList - .public OSi_RescheduleThread - .public OSi_ExitThread_Destroy - .public OS_IsRunOnEmulator - .public OS_GetConsoleType - .public OS_JamMessage - .public DC_InvalidateAll - .public DC_StoreAll - .public DC_FlushAll - .public DC_InvalidateRange - .public DC_StoreRange - .public DC_FlushRange - .public IC_InvalidateAll - .public MI_SetWramBank - .public MIi_CheckAnotherAutoDMA - .public MIi_CheckDma0SourceAddress - .public MIi_DmaSetParams - .public MIi_CardDmaCopy32 - .public OS_InitIrqTable - .public OSi_WaitVCount0 - .public OS_GetArenaHi - .public OS_GetArenaLo - .public DLAddFront - .public DLExtract - .public DLInsert - .public OS_GetDTCMAddress - .public OS_EnableProtectionUnit - .public OS_DisableProtectionUnit - .public OS_SetDPermissionsForProtectionRegion - .public OSi_SetTimerReserved - .public OSi_SetTimer - .public OSi_InsertAlarm - .public OS_GetCpsrIrq - .public OSi_SendToPxi - -_021E1A40: - .space 0x4 - -_021E1A44: - .space 0x1C - -_021E1A60: - .space 0x24 - -_021E1A84: - .space 0x3C - -_021E1AC0: - .space 0x280 - -_021E1D40: - .space 0xD20 - -_021E2A60: - .space 0xAC8 - -_021E3528: - .space 0x18 - -_021E3540: - .space 0x60 - -_021E35A0: - .space 0x4 - -_021E35A4: - .space 0x4 - -_021E35A8: - .space 0x80 - -_021E3628: - .space 0x4 - -_021E362C: - .space 0xC - -_021E3638: - .space 0x4 - -_021E363C: - .space 0x8 - -_021E3644: - .space 0x8 - -_021E364C: - .space 0x8 - -_021E3654: - .space 0x5C - -_021E36B0: - .space 0x1C - -_021E36CC: - .space 0x20 - -_021E36EC: - .space 0x4 - -_021E36F0: - .space 0x1C - -_021E370C: - .space 0xC - -_021E3718: - .space 0xC - -_021E3724: - .space 0x4 - -_021E3728: - .space 0x10 - -_021E3738: - .space 0x18 - -_021E3750: - .space 0x4 - -_021E3754: - .space 0x24 - -_021E3778: - .space 0xC - -_021E3784: - .space 0x24 - -_021E37A8: - .space 0x18 - -_021E37C0: - .space 0x60 - -_021E3820: - .space 0x620 - -_021E3E40: - .space 0x20 - -_021E3E60: - .space 0x220 - -_021E4080: - .space 0x8 - -_021E4088: - .space 0x4 - -_021E408C: - .space 0x10 - -_021E409C: - .space 0xBC - -_021E4158: - .space 0xC8 - -_021E4220: - .space 0x8 - -_021E4228: - .space 0x20 - -_021E4248: - .space 0x28 - -_021E4270: - .space 0x14 - -_021E4284: - .space 0x10 - -_021E4294: - .space 0x2C - -_021E42C0: - .space 0xA00 - -_021E4CC0: - .space 0x80 - -_021E4D40: - .space 0x4 - -_021E4D44: - .space 0x1C - -_021E4D60: - .space 0x20 - -_021E4D80: - .space 0x4 - -_021E4D84: - .space 0xBC - -_021E4E40: - .space 0xE8 - -_021E4F28: - .space 0x4 - -_021E4F2C: - .space 0x4 - -_021E4F30: - .space 0x4 - -_021E4F34: - .space 0x4 - -_021E4F38: - .space 0x4 - -_021E4F3C: - .space 0x4 - -_021E4F40: - .space 0x4 - -_021E4F44: - .space 0x4 - -_021E4F48: - .space 0x14 - -_021E4F5C: - .space 0x4 - -_021E4F60: - .space 0x8 - -_021E4F68: - .space 0x4 - -_021E4F6C: - .space 0x24 - -_021E4F90: - .space 0x400 - - .text - - arm_func_start SND_StopSeq -SND_StopSeq: ; 0x020D5044 - stmdb sp!, {r3, lr} - mov r2, #0 - mov r1, r0 - mov r3, r2 - mov r0, #1 - str r2, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_StopSeq - - arm_func_start SND_PrepareSeq -SND_PrepareSeq: ; 0x020D5064 - stmdb sp!, {r3, lr} - mov lr, r1 - mov ip, r2 - str r3, [sp] - mov r1, r0 - mov r2, lr - mov r3, ip - mov r0, #2 - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_PrepareSeq - - arm_func_start SND_StartPreparedSeq -SND_StartPreparedSeq: ; 0x020D508C - stmdb sp!, {r3, lr} - mov r2, #0 - mov r1, r0 - mov r3, r2 - mov r0, #3 - str r2, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_StartPreparedSeq - - arm_func_start SND_PauseSeq -SND_PauseSeq: ; 0x020D50AC - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #4 - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_PauseSeq - - arm_func_start SND_SetPlayerTempoRatio -SND_SetPlayerTempoRatio: ; 0x020D50CC - ldr ip, _020D50E0 ; =SNDi_SetPlayerParam - mov r2, r1 - mov r1, #0x1a - mov r3, #2 - bx ip - .align 2, 0 -_020D50E0: .word SNDi_SetPlayerParam - arm_func_end SND_SetPlayerTempoRatio - - arm_func_start SND_SetPlayerVolume -SND_SetPlayerVolume: ; 0x020D50E4 - ldr ip, _020D50F8 ; =SNDi_SetPlayerParam - mov r2, r1 - mov r1, #6 - mov r3, #2 - bx ip - .align 2, 0 -_020D50F8: .word SNDi_SetPlayerParam - arm_func_end SND_SetPlayerVolume - - arm_func_start SND_SetPlayerChannelPriority -SND_SetPlayerChannelPriority: ; 0x020D50FC - ldr ip, _020D5110 ; =SNDi_SetPlayerParam - mov r2, r1 - mov r1, #4 - mov r3, #1 - bx ip - .align 2, 0 -_020D5110: .word SNDi_SetPlayerParam - arm_func_end SND_SetPlayerChannelPriority - - arm_func_start SND_SetTrackPitch -SND_SetTrackPitch: ; 0x020D5114 - stmdb sp!, {r3, lr} - mov r3, r2 - mov ip, #2 - mov r2, #0xc - str ip, [sp] - bl SNDi_SetTrackParam - ldmia sp!, {r3, pc} - arm_func_end SND_SetTrackPitch - - arm_func_start SND_SetTrackPan -SND_SetTrackPan: ; 0x020D5130 - stmdb sp!, {r3, lr} - mov r3, r2 - mov ip, #1 - mov r2, #9 - str ip, [sp] - bl SNDi_SetTrackParam - ldmia sp!, {r3, pc} - arm_func_end SND_SetTrackPan - - arm_func_start SND_SetTrackAllocatableChannel -SND_SetTrackAllocatableChannel: ; 0x020D514C - stmdb sp!, {r3, lr} - mov lr, r1 - mov r3, r2 - mov ip, #0 - mov r1, r0 - mov r2, lr - mov r0, #9 - str ip, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetTrackAllocatableChannel - - arm_func_start SND_StartTimer -SND_StartTimer: ; 0x020D5174 - stmdb sp!, {r3, lr} - mov lr, r1 - mov ip, r2 - str r3, [sp] - mov r1, r0 - mov r2, lr - mov r3, ip - mov r0, #0xc - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_StartTimer - - arm_func_start SND_StopTimer -SND_StopTimer: ; 0x020D519C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r2 - mov sb, r0 - mov r8, r1 - mov r6, r3 - mov r5, r7 - mov r4, #0 - b _020D51D4 -_020D51BC: - tst r5, #1 - beq _020D51CC - mov r0, r4 - bl SNDi_IncAlarmId -_020D51CC: - add r4, r4, #1 - mov r5, r5, lsr #1 -_020D51D4: - cmp r4, #8 - bge _020D51E4 - cmp r5, #0 - bne _020D51BC -_020D51E4: - mov r1, sb - mov r2, r8 - mov r3, r7 - mov r0, #0xd - str r6, [sp] - bl PushCommand_impl - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end SND_StopTimer - - arm_func_start SND_SetupAlarm -SND_SetupAlarm: ; 0x020D5200 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r2 - mov r5, r1 - ldr r2, [sp, #0x18] - mov r6, r0 - mov r1, r3 - bl SNDi_SetAlarmHandler - str r0, [sp] - mov r1, r6 - mov r2, r5 - mov r3, r4 - mov r0, #0x12 - bl PushCommand_impl - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end SND_SetupAlarm - - arm_func_start SND_LockChannel -SND_LockChannel: ; 0x020D5240 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x1a - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_LockChannel - - arm_func_start SND_UnlockChannel -SND_UnlockChannel: ; 0x020D5260 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x1b - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_UnlockChannel - - arm_func_start SND_SetChannelTimer -SND_SetChannelTimer: ; 0x020D5280 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x13 - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetChannelTimer - - arm_func_start SND_SetChannelVolume -SND_SetChannelVolume: ; 0x020D52A0 - stmdb sp!, {r3, lr} - mov lr, r1 - mov r3, r2 - mov ip, #0 - mov r1, r0 - mov r2, lr - mov r0, #0x14 - str ip, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetChannelVolume - - arm_func_start SND_SetChannelPan -SND_SetChannelPan: ; 0x020D52C8 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x15 - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetChannelPan - - arm_func_start SND_SetupChannelPcm -SND_SetupChannelPcm: ; 0x020D52E8 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, [sp, #0x1c] - mov r1, r1, lsl #0x18 - orr r4, r1, r3, lsl #26 - ldr r5, [sp, #0x24] - mov r1, ip, lsl #0x16 - ldr r3, [sp, #0x18] - ldr ip, [sp, #0x10] - orr r4, r4, r5, lsl #16 - orr r4, ip, r4 - ldr lr, [sp, #0x20] - orr r3, r1, r3, lsl #24 - ldr ip, [sp, #0x14] - orr r1, r0, lr, lsl #16 - orr r3, ip, r3 - mov r0, #0xe - str r4, [sp] - bl PushCommand_impl - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SND_SetupChannelPcm - - arm_func_start SND_InvalidateSeqData -SND_InvalidateSeqData: ; 0x020D5334 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x1e - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_InvalidateSeqData - - arm_func_start SND_InvalidateBankData -SND_InvalidateBankData: ; 0x020D5354 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x1f - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_InvalidateBankData - - arm_func_start SND_InvalidateWaveData -SND_InvalidateWaveData: ; 0x020D5374 - stmdb sp!, {r3, lr} - mov r2, r1 - mov r3, #0 - mov r1, r0 - mov r0, #0x20 - str r3, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_InvalidateWaveData - - arm_func_start SND_SetMasterVolume -SND_SetMasterVolume: ; 0x020D5394 - stmdb sp!, {r3, lr} - mov r2, #0 - mov r1, r0 - mov r3, r2 - mov r0, #0x17 - str r2, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetMasterVolume - - arm_func_start SND_SetOutputSelector -SND_SetOutputSelector: ; 0x020D53B4 - stmdb sp!, {r3, lr} - mov lr, r1 - mov ip, r2 - str r3, [sp] - mov r1, r0 - mov r2, lr - mov r3, ip - mov r0, #0x19 - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetOutputSelector - - arm_func_start SND_SetMasterPan -SND_SetMasterPan: ; 0x020D53DC - stmdb sp!, {r3, lr} - mov r2, #0 - mov r1, r0 - mov r3, r2 - mov r0, #0x18 - str r2, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_SetMasterPan - - arm_func_start SND_ResetMasterPan -SND_ResetMasterPan: ; 0x020D53FC - stmdb sp!, {r3, lr} - mov r2, #0 - mov r0, #0x18 - mov r3, r2 - sub r1, r0, #0x19 - str r2, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_ResetMasterPan - - arm_func_start SND_ReadDriverInfo -SND_ReadDriverInfo: ; 0x020D541C - stmdb sp!, {r3, lr} - mov r2, #0 - mov r1, r0 - mov r3, r2 - mov r0, #0x21 - str r2, [sp] - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SND_ReadDriverInfo - - arm_func_start SNDi_SetPlayerParam -SNDi_SetPlayerParam: ; 0x020D543C - stmdb sp!, {r3, lr} - mov lr, r1 - mov ip, r2 - str r3, [sp] - mov r1, r0 - mov r2, lr - mov r3, ip - mov r0, #6 - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SNDi_SetPlayerParam - - arm_func_start SNDi_SetTrackParam -SNDi_SetTrackParam: ; 0x020D5464 - stmdb sp!, {r3, lr} - ldr ip, [sp, #8] - mov lr, r2 - str r3, [sp] - mov r2, r1 - orr r1, r0, ip, lsl #24 - mov r3, lr - mov r0, #7 - bl PushCommand_impl - ldmia sp!, {r3, pc} - arm_func_end SNDi_SetTrackParam - - arm_func_start PushCommand_impl -PushCommand_impl: ; 0x020D548C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r0, #1 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl SND_AllocCommand - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - str r7, [r0, #4] - str r6, [r0, #8] - str r5, [r0, #0xc] - ldr r1, [sp, #0x18] - str r4, [r0, #0x10] - str r1, [r0, #0x14] - bl SND_PushCommand - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end PushCommand_impl - - arm_func_start SND_Init -SND_Init: ; 0x020D54D0 - stmdb sp!, {r3, lr} - ldr r1, _020D5500 ; =_021E1A40 - ldr r0, [r1] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _020D5504 ; =_021E1A44 - mov r2, #1 - str r2, [r1] - bl OS_InitMutex - bl SND_CommandInit - bl SND_AlarmInit - ldmia sp!, {r3, pc} - .align 2, 0 -_020D5500: .word _021E1A40 -_020D5504: .word _021E1A44 - arm_func_end SND_Init - - arm_func_start SNDi_LockMutex -SNDi_LockMutex: ; 0x020D5508 - ldr ip, _020D5514 ; =OS_LockMutex - ldr r0, _020D5518 ; =_021E1A44 - bx ip - .align 2, 0 -_020D5514: .word OS_LockMutex -_020D5518: .word _021E1A44 - arm_func_end SNDi_LockMutex - - arm_func_start SNDi_UnlockMutex -SNDi_UnlockMutex: ; 0x020D551C - ldr ip, _020D5528 ; =OS_UnlockMutex - ldr r0, _020D552C ; =_021E1A44 - bx ip - .align 2, 0 -_020D5528: .word OS_UnlockMutex -_020D552C: .word _021E1A44 - arm_func_end SNDi_UnlockMutex - - arm_func_start SND_CommandInit -SND_CommandInit: ; 0x020D5530 - stmdb sp!, {r4, lr} - bl InitPXI - ldr lr, _020D55EC ; =_021E1D40 - ldr r0, _020D55F0 ; =_021E1A60 - mov r4, #0 - str lr, [r0] - mov r0, #0x18 - mov r1, r0 - b _020D5568 -_020D5554: - add r3, r4, #1 - mul r2, r4, r1 - mla ip, r3, r0, lr - mov r4, r3 - str ip, [lr, r2] -_020D5568: - cmp r4, #0xff - blt _020D5554 - ldr r0, _020D55F4 ; =_021E2A60 - mov r3, #0 - str r3, [r0, #0xac8] - ldr r1, _020D55F8 ; =_021E3528 - ldr r2, _020D55F0 ; =_021E1A60 - mov r0, #1 - str r1, [r2, #0x10] - str r3, [r2, #8] - str r3, [r2, #0xc] - str r3, [r2, #0x1c] - str r3, [r2, #0x14] - str r3, [r2, #0x18] - str r0, [r2, #0x20] - ldr r0, _020D55FC ; =_021E1AC0 - ldr r1, _020D5600 ; =_021E35A0 - str r3, [r2, #4] - str r0, [r1] - bl SNDi_InitSharedWork - mov r0, #1 - bl SND_AllocCommand - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0x1d - ldr r1, _020D5600 ; =_021E35A0 - str r2, [r0, #4] - ldr r1, [r1] - str r1, [r0, #8] - bl SND_PushCommand - mov r0, #1 - bl SND_FlushCommand - ldmia sp!, {r4, pc} - .align 2, 0 -_020D55EC: .word _021E1D40 -_020D55F0: .word _021E1A60 -_020D55F4: .word _021E2A60 -_020D55F8: .word _021E3528 -_020D55FC: .word _021E1AC0 -_020D5600: .word _021E35A0 - arm_func_end SND_CommandInit - - arm_func_start SND_RecvCommandReply -SND_RecvCommandReply: ; 0x020D5604 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl OS_DisableInterrupts - mov r4, r0 - tst r5, #1 - beq _020D5660 - bl SNDi_GetFinishedCommandTag - ldr r5, _020D570C ; =_021E1A60 - ldr r1, [r5, #4] - cmp r1, r0 - bne _020D5684 - mov r6, #0x64 -_020D5634: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r6 - bl OS_SpinWait - bl OS_DisableInterrupts - mov r4, r0 - bl SNDi_GetFinishedCommandTag - ldr r1, [r5, #4] - cmp r1, r0 - beq _020D5634 - b _020D5684 -_020D5660: - bl SNDi_GetFinishedCommandTag - ldr r1, _020D570C ; =_021E1A60 - ldr r1, [r1, #4] - cmp r1, r0 - bne _020D5684 - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_020D5684: - ldr r0, _020D570C ; =_021E1A60 - ldr r2, _020D5710 ; =_021E1A84 - ldr r3, [r0, #0x14] - add r1, r3, #1 - ldr r5, [r2, r3, lsl #2] - str r1, [r0, #0x14] - cmp r1, #8 - movgt r1, #0 - strgt r1, [r0, #0x14] - ldr r0, [r5] - mov r2, r5 - cmp r0, #0 - beq _020D56C8 -_020D56B8: - ldr r2, [r2] - ldr r0, [r2] - cmp r0, #0 - bne _020D56B8 -_020D56C8: - ldr r0, _020D570C ; =_021E1A60 - ldr r1, [r0, #0x10] - cmp r1, #0 - strne r5, [r1] - streq r5, [r0] - ldr r1, _020D570C ; =_021E1A60 - mov r0, r4 - str r2, [r1, #0x10] - ldr r2, [r1, #0x1c] - sub r2, r2, #1 - str r2, [r1, #0x1c] - ldr r2, [r1, #4] - add r2, r2, #1 - str r2, [r1, #4] - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D570C: .word _021E1A60 -_020D5710: .word _021E1A84 - arm_func_end SND_RecvCommandReply - - arm_func_start SND_AllocCommand -SND_AllocCommand: ; 0x020D5714 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsCommandAvailable - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl AllocCommand - cmp r0, #0 - ldmneia sp!, {r4, pc} - tst r4, #1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl SND_CountWaitingCommand - cmp r0, #0 - ble _020D5774 - mov r4, #0 -_020D5754: - mov r0, r4 - bl SND_RecvCommandReply - cmp r0, #0 - bne _020D5754 - bl AllocCommand - cmp r0, #0 - beq _020D577C - ldmia sp!, {r4, pc} -_020D5774: - mov r0, #1 - bl SND_FlushCommand -_020D577C: - bl RequestCommandProc - mov r4, #1 -_020D5784: - mov r0, r4 - bl SND_RecvCommandReply - bl AllocCommand - cmp r0, #0 - beq _020D5784 - ldmia sp!, {r4, pc} - arm_func_end SND_AllocCommand - - arm_func_start SND_PushCommand -SND_PushCommand: ; 0x020D579C - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _020D57D0 ; =_021E1A60 - ldr r2, [r1, #0xc] - cmp r2, #0 - streq r4, [r1, #8] - strne r4, [r2] - str r4, [r1, #0xc] - mov r1, #0 - str r1, [r4] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020D57D0: .word _021E1A60 - arm_func_end SND_PushCommand - - arm_func_start SND_FlushCommand -SND_FlushCommand: ; 0x020D57D4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl OS_DisableInterrupts - ldr r4, _020D5984 ; =_021E1A60 - mov sb, r0 - ldr r1, [r4, #8] - cmp r1, #0 - bne _020D5800 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D5800: - ldr r1, [r4, #0x1c] - cmp r1, #8 - blt _020D5858 - tst sl, #1 - bne _020D5820 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D5820: - mov r5, #1 -_020D5824: - mov r0, r5 - bl SND_RecvCommandReply - ldr r0, [r4, #0x1c] - cmp r0, #8 - bge _020D5824 - ldr r0, _020D5984 ; =_021E1A60 - ldr r0, [r0, #8] - cmp r0, #0 - bne _020D5858 - mov r0, sb - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D5858: - ldr r0, _020D5988 ; =_021E1D40 - mov r1, #0x1800 - bl DC_FlushRange - ldr r1, _020D5984 ; =_021E1A60 - mov r0, #7 - ldr r1, [r1, #8] - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - bge _020D5918 - tst sl, #1 - bne _020D5898 - mov r0, sb - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D5898: - mov fp, #0 - mov r5, #7 - mov r8, fp - ldr r7, _020D5988 ; =_021E1D40 - mov r6, #0x1800 - ldr r4, _020D5984 ; =_021E1A60 - b _020D58F4 -_020D58B4: - mov r0, sb - bl OS_RestoreInterrupts - mov r0, r8 - bl SND_RecvCommandReply - bl OS_DisableInterrupts - mov sb, r0 - mov r0, r7 - mov r1, r6 - bl DC_FlushRange - ldr r0, [r4, #8] - cmp r0, #0 - bne _020D58F4 - mov r0, sb - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D58F4: - ldr r0, [r4, #0x1c] - cmp r0, #8 - bge _020D58B4 - ldr r1, [r4, #8] - mov r0, r5 - mov r2, fp - bl PXI_SendWordByFifo - cmp r0, #0 - blt _020D58B4 -_020D5918: - ldr r0, _020D5984 ; =_021E1A60 - ldr r2, _020D598C ; =_021E1A84 - ldr r3, [r0, #0x18] - ldr r4, [r0, #8] - add r1, r3, #1 - str r4, [r2, r3, lsl #2] - str r1, [r0, #0x18] - cmp r1, #8 - movgt r1, #0 - strgt r1, [r0, #0x18] - ldr r1, _020D5984 ; =_021E1A60 - mov r0, #0 - str r0, [r1, #8] - str r0, [r1, #0xc] - ldr r2, [r1, #0x1c] - mov r0, sb - add r2, r2, #1 - str r2, [r1, #0x1c] - ldr r2, [r1, #0x20] - add r2, r2, #1 - str r2, [r1, #0x20] - bl OS_RestoreInterrupts - tst sl, #2 - beq _020D597C - bl RequestCommandProc -_020D597C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020D5984: .word _021E1A60 -_020D5988: .word _021E1D40 -_020D598C: .word _021E1A84 - arm_func_end SND_FlushCommand - - arm_func_start SND_WaitForCommandProc -SND_WaitForCommandProc: ; 0x020D5990 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl SND_IsFinishedCommandTag - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r4, #0 -_020D59A8: - mov r0, r4 - bl SND_RecvCommandReply - cmp r0, #0 - bne _020D59A8 - mov r0, r5 - bl SND_IsFinishedCommandTag - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl RequestCommandProc - mov r0, r5 - bl SND_IsFinishedCommandTag - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r4, #1 -_020D59E0: - mov r0, r4 - bl SND_RecvCommandReply - mov r0, r5 - bl SND_IsFinishedCommandTag - cmp r0, #0 - beq _020D59E0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SND_WaitForCommandProc - - arm_func_start SND_GetCurrentCommandTag -SND_GetCurrentCommandTag: ; 0x020D59FC - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _020D5A24 ; =_021E1A60 - ldr r2, [r1, #8] - cmp r2, #0 - ldreq r4, [r1, #4] - ldrne r4, [r1, #0x20] - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D5A24: .word _021E1A60 - arm_func_end SND_GetCurrentCommandTag - - arm_func_start SND_IsFinishedCommandTag -SND_IsFinishedCommandTag: ; 0x020D5A28 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _020D5A74 ; =_021E1A60 - ldr r1, [r1, #4] - cmp r4, r1 - bls _020D5A58 - sub r1, r4, r1 - cmp r1, #0x80000000 - movlo r4, #0 - movhs r4, #1 - b _020D5A68 -_020D5A58: - sub r1, r1, r4 - cmp r1, #0x80000000 - movlo r4, #1 - movhs r4, #0 -_020D5A68: - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D5A74: .word _021E1A60 - arm_func_end SND_IsFinishedCommandTag - - arm_func_start SND_CountFreeCommand -SND_CountFreeCommand: ; 0x020D5A78 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _020D5AB0 ; =_021E1A60 - mov r4, #0 - ldr r1, [r1] - cmp r1, #0 - beq _020D5AA4 -_020D5A94: - ldr r1, [r1] - add r4, r4, #1 - cmp r1, #0 - bne _020D5A94 -_020D5AA4: - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D5AB0: .word _021E1A60 - arm_func_end SND_CountFreeCommand - - arm_func_start SND_CountReservedCommand -SND_CountReservedCommand: ; 0x020D5AB4 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _020D5AEC ; =_021E1A60 - mov r4, #0 - ldr r1, [r1, #8] - cmp r1, #0 - beq _020D5AE0 -_020D5AD0: - ldr r1, [r1] - add r4, r4, #1 - cmp r1, #0 - bne _020D5AD0 -_020D5AE0: - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D5AEC: .word _021E1A60 - arm_func_end SND_CountReservedCommand - - arm_func_start SND_CountWaitingCommand -SND_CountWaitingCommand: ; 0x020D5AF0 - stmdb sp!, {r4, lr} - bl SND_CountFreeCommand - mov r4, r0 - bl SND_CountReservedCommand - rsb r1, r4, #0x100 - sub r0, r1, r0 - ldmia sp!, {r4, pc} - arm_func_end SND_CountWaitingCommand - - arm_func_start PxiFifoCallback -PxiFifoCallback: ; 0x020D5B0C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r5 - bl SNDi_CallAlarmHandler - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - arm_func_end PxiFifoCallback - - arm_func_start InitPXI -InitPXI: ; 0x020D5B30 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _020D5B8C ; =PxiFifoCallback - mov r0, #7 - bl PXI_SetFifoRecvCallback - bl IsCommandAvailable - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #7 - mov r1, #1 - bl PXI_IsCallbackReady - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r6, #0x64 - mov r5, #7 - mov r4, #1 -_020D5B6C: - mov r0, r6 - bl OS_SpinWait - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020D5B6C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D5B8C: .word PxiFifoCallback - arm_func_end InitPXI - - arm_func_start RequestCommandProc -RequestCommandProc: ; 0x020D5B90 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #7 - mov r4, #0 -_020D5B9C: - mov r0, r5 - mov r1, r4 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _020D5B9C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end RequestCommandProc - - arm_func_start AllocCommand -AllocCommand: ; 0x020D5BB8 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _020D5BFC ; =_021E1A60 - ldr r4, [r1] - cmp r4, #0 - bne _020D5BDC - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, pc} -_020D5BDC: - ldr r2, [r4] - str r2, [r1] - cmp r2, #0 - moveq r2, #0 - streq r2, [r1, #0x10] - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D5BFC: .word _021E1A60 - arm_func_end AllocCommand - - arm_func_start IsCommandAvailable -IsCommandAvailable: ; 0x020D5C00 - stmdb sp!, {r4, lr} - bl OS_IsRunOnEmulator - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - bl OS_DisableInterrupts - ldr r1, _020D5C3C ; =0x04FFF200 - mov r2, #0x10 - str r2, [r1] - ldr r4, [r1] - bl OS_RestoreInterrupts - cmp r4, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D5C3C: .word 0x04FFF200 - arm_func_end IsCommandAvailable - - arm_func_start SND_AlarmInit -SND_AlarmInit: ; 0x020D5C40 - mov r1, #0 - ldr r2, _020D5C6C ; =_021E3540 - mov r0, r1 -_020D5C4C: - str r0, [r2] - str r0, [r2, #4] - add r1, r1, #1 - strb r0, [r2, #8] - cmp r1, #8 - add r2, r2, #0xc - blt _020D5C4C - bx lr - .align 2, 0 -_020D5C6C: .word _021E3540 - arm_func_end SND_AlarmInit - - arm_func_start SNDi_IncAlarmId -SNDi_IncAlarmId: ; 0x020D5C70 - ldr r2, _020D5C8C ; =_021E3540 - mov r1, #0xc - mla r1, r0, r1, r2 - ldrb r0, [r1, #8] - add r0, r0, #1 - strb r0, [r1, #8] - bx lr - .align 2, 0 -_020D5C8C: .word _021E3540 - arm_func_end SNDi_IncAlarmId - - arm_func_start SNDi_SetAlarmHandler -SNDi_SetAlarmHandler: ; 0x020D5C90 - mov r3, #0xc - mul r3, r0, r3 - ldr r0, _020D5CBC ; =_021E3540 - str r1, [r0, r3] - add r1, r0, r3 - str r2, [r1, #4] - ldrb r0, [r1, #8] - add r0, r0, #1 - strb r0, [r1, #8] - and r0, r0, #0xff - bx lr - .align 2, 0 -_020D5CBC: .word _021E3540 - arm_func_end SNDi_SetAlarmHandler - - arm_func_start SNDi_CallAlarmHandler -SNDi_CallAlarmHandler: ; 0x020D5CC0 - stmdb sp!, {r3, lr} - ldr r3, _020D5D00 ; =_021E3540 - and r2, r0, #0xff - mov r1, #0xc - mla r3, r2, r1, r3 - mov r1, r0, asr #8 - ldrb r0, [r3, #8] - and r1, r1, #0xff - cmp r1, r0 - ldmneia sp!, {r3, pc} - ldr r1, [r3] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r3, #4] - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_020D5D00: .word _021E3540 - arm_func_end SNDi_CallAlarmHandler - - arm_func_start SND_GetPlayerStatus -SND_GetPlayerStatus: ; 0x020D5D04 - stmdb sp!, {r3, lr} - ldr r0, _020D5D2C ; =_021E35A0 - mov r1, #4 - ldr r0, [r0] - add r0, r0, #4 - bl DC_InvalidateRange - ldr r0, _020D5D2C ; =_021E35A0 - ldr r0, [r0] - ldr r0, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D5D2C: .word _021E35A0 - arm_func_end SND_GetPlayerStatus - - arm_func_start SND_GetChannelStatus -SND_GetChannelStatus: ; 0x020D5D30 - stmdb sp!, {r3, lr} - ldr r0, _020D5D58 ; =_021E35A0 - mov r1, #2 - ldr r0, [r0] - add r0, r0, #8 - bl DC_InvalidateRange - ldr r0, _020D5D58 ; =_021E35A0 - ldr r0, [r0] - ldrh r0, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D5D58: .word _021E35A0 - arm_func_end SND_GetChannelStatus - - arm_func_start SND_GetPlayerLocalVariable -SND_GetPlayerLocalVariable: ; 0x020D5D5C - stmdb sp!, {r3, r4, r5, lr} - mov r2, #0x24 - mul r4, r0, r2 - ldr r0, _020D5DA0 ; =_021E35A0 - mov r5, r1 - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x20 - add r0, r0, r4 - add r0, r0, r5, lsl #1 - bl DC_InvalidateRange - ldr r0, _020D5DA0 ; =_021E35A0 - ldr r0, [r0] - add r0, r0, r4 - add r0, r0, r5, lsl #1 - ldrsh r0, [r0, #0x20] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D5DA0: .word _021E35A0 - arm_func_end SND_GetPlayerLocalVariable - - arm_func_start SND_ReadChannelInfo -SND_ReadChannelInfo: ; 0x020D5DA4 - stmdb sp!, {r3, lr} - cmp r1, #0 - blt _020D5DB8 - cmp r1, #0xf - ble _020D5DC0 -_020D5DB8: - mov r0, #0 - ldmia sp!, {r3, pc} -_020D5DC0: - add r3, r0, #0x1000 - ldr r3, [r3, #0x1c4] - mov lr, #1 - ldr ip, [r2] - tst r3, lr, lsl r1 - moveq lr, #0 - mov r3, lr, lsl #0x1f - bic ip, ip, #2 - orr ip, ip, r3, lsr #30 - mov r3, ip, lsl #0x1e - str ip, [r2] - movs r3, r3, asr #0x1f - beq _020D5E94 - add r0, r0, r1, lsl #2 - add r0, r0, #0x1000 - ldr r0, [r0, #0x180] - ldr r3, [r2] - tst r0, #0x80000000 - movne lr, #1 - moveq lr, #0 - bic ip, r3, #1 - and r3, lr, #1 - orr r3, ip, r3 - str r3, [r2] - and r1, r0, #0x7f - strh r1, [r2, #4] - ldrh r1, [r2, #4] - and r3, r0, #0x300 - mov r3, r3, lsr #8 - mov r1, r1, lsl #4 - strh r1, [r2, #4] - cmp r3, #3 - addls pc, pc, r3, lsl #2 - b _020D5E84 -_020D5E48: ; jump table - b _020D5E84 ; case 0 - b _020D5E58 ; case 1 - b _020D5E68 ; case 2 - b _020D5E78 ; case 3 -_020D5E58: - ldrh r1, [r2, #4] - mov r1, r1, asr #1 - strh r1, [r2, #4] - b _020D5E84 -_020D5E68: - ldrh r1, [r2, #4] - mov r1, r1, asr #2 - strh r1, [r2, #4] - b _020D5E84 -_020D5E78: - ldrh r1, [r2, #4] - mov r1, r1, asr #4 - strh r1, [r2, #4] -_020D5E84: - and r0, r0, #0x7f0000 - mov r0, r0, lsr #0x10 - strb r0, [r2, #6] - b _020D5F2C -_020D5E94: - mov r3, #0x54 - mla r0, r1, r3, r0 - ldrb r1, [r0, #3] - bic r3, ip, #1 - mov r1, r1, lsl #0x1f - mov r1, r1, lsr #0x1f - and r1, r1, #1 - orr r1, r3, r1 - str r1, [r2] - ldrb r1, [r0, #2] - str r1, [r2, #8] - ldrh r3, [r0, #0x24] - and r1, r3, #0xff - strh r1, [r2, #4] - ldrh r1, [r2, #4] - mov r3, r3, asr #8 - cmp r3, #3 - mov r1, r1, lsl #4 - strh r1, [r2, #4] - addls pc, pc, r3, lsl #2 - b _020D5F24 -_020D5EE8: ; jump table - b _020D5F24 ; case 0 - b _020D5EF8 ; case 1 - b _020D5F08 ; case 2 - b _020D5F18 ; case 3 -_020D5EF8: - ldrh r1, [r2, #4] - mov r1, r1, asr #1 - strh r1, [r2, #4] - b _020D5F24 -_020D5F08: - ldrh r1, [r2, #4] - mov r1, r1, asr #2 - strh r1, [r2, #4] - b _020D5F24 -_020D5F18: - ldrh r1, [r2, #4] - mov r1, r1, asr #4 - strh r1, [r2, #4] -_020D5F24: - ldrb r0, [r0, #0x23] - strb r0, [r2, #6] -_020D5F2C: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end SND_ReadChannelInfo - - arm_func_start SND_ReadTrackInfo -SND_ReadTrackInfo: ; 0x020D5F34 - stmdb sp!, {r4, lr} - cmp r1, #0 - blt _020D5F48 - cmp r1, #0xf - ble _020D5F50 -_020D5F48: - mov r0, #0 - ldmia sp!, {r4, pc} -_020D5F50: - cmp r2, #0 - blt _020D5F60 - cmp r2, #0xf - ble _020D5F68 -_020D5F60: - mov r0, #0 - ldmia sp!, {r4, pc} -_020D5F68: - mov ip, #0x24 - mla ip, r1, ip, r0 - add r1, ip, r2 - ldrb r2, [r1, #0x548] - cmp r2, #0xff - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r1, r0, #0x780 - add ip, r1, r2, lsl #6 - ldrh r2, [ip, #2] - add r1, r0, #0x1000 - strh r2, [r3] - ldrb r2, [ip, #4] - strb r2, [r3, #2] - ldrb r2, [ip, #5] - strb r2, [r3, #3] - ldrsb r2, [ip, #6] - strb r2, [r3, #4] - ldrb r2, [ip, #7] - strb r2, [r3, #5] - ldrsb r2, [ip, #8] - add r2, r2, #0x40 - strb r2, [r3, #6] - ldrsb r2, [ip, #0x13] - strb r2, [r3, #7] - ldr r2, [ip, #0x3c] - ldr r1, [r1, #0x1c0] - cmp r2, #0 - moveq r4, #0 - subne r1, r2, r1 - addne r4, r0, r1 - mov r1, #0 - strb r1, [r3, #9] - cmp r4, #0 - beq _020D6038 - add r1, r0, #0x1000 - mov ip, #0 -_020D5FFC: - ldrb r2, [r3, #9] - ldrb lr, [r4] - add r2, r3, r2 - strb lr, [r2, #0xa] - ldrb r2, [r3, #9] - add r2, r2, #1 - strb r2, [r3, #9] - ldr r2, [r4, #0x50] - ldr lr, [r1, #0x1c0] - cmp r2, #0 - moveq r4, ip - subne r2, r2, lr - addne r4, r0, r2 - cmp r4, #0 - bne _020D5FFC -_020D6038: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end SND_ReadTrackInfo - - arm_func_start SNDi_GetFinishedCommandTag -SNDi_GetFinishedCommandTag: ; 0x020D6040 - stmdb sp!, {r3, lr} - ldr r0, _020D6064 ; =_021E35A0 - mov r1, #4 - ldr r0, [r0] - bl DC_InvalidateRange - ldr r0, _020D6064 ; =_021E35A0 - ldr r0, [r0] - ldr r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_020D6064: .word _021E35A0 - arm_func_end SNDi_GetFinishedCommandTag - - arm_func_start SNDi_InitSharedWork -SNDi_InitSharedWork: ; 0x020D6068 - stmdb sp!, {r4, lr} - mov ip, #0 - str ip, [r0, #4] - strh ip, [r0, #8] - strh ip, [r0, #0xa] - mov r4, r0 - str ip, [r0] - mvn r2, #0 - mov r3, ip -_020D608C: - mov lr, r3 - str r3, [r4, #0x40] -_020D6094: - add r1, r4, lr, lsl #1 - add lr, lr, #1 - strh r2, [r1, #0x20] - cmp lr, #0x10 - blt _020D6094 - add ip, ip, #1 - cmp ip, #0x10 - add r4, r4, #0x24 - blt _020D608C - mov r3, #0 - mvn r2, #0 -_020D60C0: - add r1, r0, r3, lsl #1 - add r1, r1, #0x200 - add r3, r3, #1 - strh r2, [r1, #0x60] - cmp r3, #0x10 - blt _020D60C0 - mov r1, #0x280 - bl DC_FlushRange - ldmia sp!, {r4, pc} - arm_func_end SNDi_InitSharedWork - - arm_func_start SND_CalcChannelVolume -SND_CalcChannelVolume: ; 0x020D60E4 - ldr r1, _020D614C ; =0xFFFFFD2D - cmp r0, r1 - movlt r0, r1 - blt _020D60FC - cmp r0, #0 - movgt r0, #0 -_020D60FC: - add r1, r0, #0xd3 - mvn r2, #0xef - cmp r0, r2 - ldr r3, _020D6150 ; =_0210DE50 - add r1, r1, #0x200 - ldrb r3, [r3, r1] - movlt r0, #3 - blt _020D613C - add r1, r2, #0x78 - cmp r0, r1 - movlt r0, #2 - blt _020D613C - add r1, r2, #0xb4 - cmp r0, r1 - movlt r0, #1 - movge r0, #0 -_020D613C: - orr r0, r3, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - .align 2, 0 -_020D614C: .word 0xFFFFFD2D -_020D6150: .word _0210DE50 - arm_func_end SND_CalcChannelVolume - - arm_func_start SND_AssignWaveArc -SND_AssignWaveArc: ; 0x020D6154 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl SNDi_LockMutex - add r3, r6, r5, lsl #3 - ldr r2, [r3, #0x18] - cmp r2, #0 - beq _020D61E4 - cmp r4, r2 - bne _020D6188 - bl SNDi_UnlockMutex - ldmia sp!, {r4, r5, r6, pc} -_020D6188: - add r1, r6, #0x18 - ldr r0, [r2, #0x18] - add ip, r1, r5, lsl #3 - cmp ip, r0 - bne _020D61B4 - ldr r0, [r3, #0x1c] - mov r1, #0x3c - str r0, [r2, #0x18] - ldr r0, [r3, #0x18] - bl DC_StoreRange - b _020D61E4 -_020D61B4: - cmp r0, #0 - beq _020D61D0 -_020D61BC: - ldr r1, [r0, #4] - cmp ip, r1 - movne r0, r1 - cmpne r1, #0 - bne _020D61BC -_020D61D0: - add r1, r6, r5, lsl #3 - ldr r2, [r1, #0x1c] - mov r1, #8 - str r2, [r0, #4] - bl DC_StoreRange -_020D61E4: - add r0, r6, #0x18 - ldr r1, [r4, #0x18] - add r0, r0, r5, lsl #3 - str r0, [r4, #0x18] - add r0, r6, r5, lsl #3 - str r1, [r0, #0x1c] - str r4, [r0, #0x18] - bl SNDi_UnlockMutex - mov r0, r6 - mov r1, #0x3c - bl DC_StoreRange - mov r0, r4 - mov r1, #0x3c - bl DC_StoreRange - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SND_AssignWaveArc - - arm_func_start SND_DestroyBank -SND_DestroyBank: ; 0x020D6220 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - bl SNDi_LockMutex - add r5, r7, #0x18 - mov r6, #0 - mov r8, #8 - mov r4, #0x3c -_020D623C: - add r1, r7, r6, lsl #3 - ldr r0, [r1, #0x18] - cmp r0, #0 - beq _020D62A0 - ldr r3, [r0, #0x18] - cmp r5, r3 - bne _020D626C - ldr r2, [r1, #0x1c] - mov r1, r4 - str r2, [r0, #0x18] - bl DC_StoreRange - b _020D62A0 -_020D626C: - cmp r3, #0 - beq _020D6288 -_020D6274: - ldr r0, [r3, #4] - cmp r5, r0 - movne r3, r0 - cmpne r0, #0 - bne _020D6274 -_020D6288: - add r0, r7, r6, lsl #3 - ldr r2, [r0, #0x1c] - mov r0, r3 - mov r1, r8 - str r2, [r3, #4] - bl DC_StoreRange -_020D62A0: - add r6, r6, #1 - cmp r6, #4 - add r5, r5, #8 - blt _020D623C - bl SNDi_UnlockMutex - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end SND_DestroyBank - - arm_func_start SND_DestroyWaveArc -SND_DestroyWaveArc: ; 0x020D62B8 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - bl SNDi_LockMutex - ldr r0, [r4, #0x18] - cmp r0, #0 - beq _020D62F8 - mov r5, #0 - mov r4, #8 -_020D62D8: - ldr r6, [r0, #4] - mov r1, r4 - str r5, [r0] - str r5, [r0, #4] - bl DC_StoreRange - mov r0, r6 - cmp r6, #0 - bne _020D62D8 -_020D62F8: - bl SNDi_UnlockMutex - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SND_DestroyWaveArc - - arm_func_start SND_GetFirstInstDataPos -SND_GetFirstInstDataPos: ; 0x020D6300 - sub sp, sp, #8 - mov r1, #0 - str r1, [r0] - str r1, [sp] - str r1, [sp, #4] - str r1, [r0, #4] - add sp, sp, #8 - bx lr - arm_func_end SND_GetFirstInstDataPos - - arm_func_start SND_GetNextInstData -SND_GetNextInstData: ; 0x020D6320 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r2] - ldr r3, [r0, #0x38] - cmp r4, r3 - bhs _020D64C8 - mov ip, #0 -_020D6338: - add r3, r0, r4, lsl #2 - ldr r4, [r3, #0x3c] - and r3, r4, #0xff - strb r4, [r1] - cmp r3, #0x10 - mov r4, r4, lsr #8 - bgt _020D6380 - cmp r3, #0x10 - bge _020D63CC - cmp r3, #5 - addls pc, pc, r3, lsl #2 - b _020D64AC -_020D6368: ; jump table - b _020D64AC ; case 0 - b _020D638C ; case 1 - b _020D638C ; case 2 - b _020D638C ; case 3 - b _020D638C ; case 4 - b _020D638C ; case 5 -_020D6380: - cmp r3, #0x11 - beq _020D6440 - b _020D64AC -_020D638C: - add r5, r0, r4 - ldrh r4, [r0, r4] - ldrh r3, [r5, #2] - mov r0, #1 - strh r4, [r1, #2] - strh r3, [r1, #4] - ldrh r4, [r5, #4] - ldrh r3, [r5, #6] - strh r4, [r1, #6] - strh r3, [r1, #8] - ldrh r3, [r5, #8] - strh r3, [r1, #0xa] - ldr r1, [r2] - add r1, r1, #1 - str r1, [r2] - ldmia sp!, {r3, r4, r5, pc} -_020D63CC: - add r5, r0, r4 - b _020D6420 -_020D63D4: - mov r0, #0xc - mla ip, lr, r0, r5 - ldrh r4, [ip, #2] - ldrh r3, [ip, #4] - mov r0, #1 - strh r4, [r1] - strh r3, [r1, #2] - ldrh r4, [ip, #6] - ldrh r3, [ip, #8] - strh r4, [r1, #4] - strh r3, [r1, #6] - ldrh r4, [ip, #0xa] - ldrh r3, [ip, #0xc] - strh r4, [r1, #8] - strh r3, [r1, #0xa] - ldr r1, [r2, #4] - add r1, r1, #1 - str r1, [r2, #4] - ldmia sp!, {r3, r4, r5, pc} -_020D6420: - ldrb r4, [r5, #1] - ldrb r3, [r5] - ldr lr, [r2, #4] - sub r3, r4, r3 - add r3, r3, #1 - cmp lr, r3 - blo _020D63D4 - b _020D64AC -_020D6440: - add r4, r0, r4 - b _020D64A0 -_020D6448: - ldrb lr, [r4, r3] - cmp lr, #0 - beq _020D64AC - mov r0, #0xc - mla lr, r3, r0, r4 - ldrh ip, [lr, #8] - ldrh r3, [lr, #0xa] - mov r0, #1 - strh ip, [r1] - strh r3, [r1, #2] - ldrh ip, [lr, #0xc] - ldrh r3, [lr, #0xe] - strh ip, [r1, #4] - strh r3, [r1, #6] - ldrh ip, [lr, #0x10] - ldrh r3, [lr, #0x12] - strh ip, [r1, #8] - strh r3, [r1, #0xa] - ldr r1, [r2, #4] - add r1, r1, #1 - str r1, [r2, #4] - ldmia sp!, {r3, r4, r5, pc} -_020D64A0: - ldr r3, [r2, #4] - cmp r3, #8 - blo _020D6448 -_020D64AC: - ldr r3, [r2] - add r3, r3, #1 - stmia r2, {r3, ip} - ldr r4, [r2] - ldr r3, [r0, #0x38] - cmp r4, r3 - blo _020D6338 -_020D64C8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SND_GetNextInstData - - arm_func_start SND_GetWaveDataCount -SND_GetWaveDataCount: ; 0x020D64D0 - ldr r0, [r0, #0x38] - bx lr - arm_func_end SND_GetWaveDataCount - - arm_func_start SND_SetWaveDataAddress -SND_SetWaveDataAddress: ; 0x020D64D8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl SNDi_LockMutex - add r0, r6, #0x3c - add r2, r6, r5, lsl #2 - add r0, r0, r5, lsl #2 - mov r1, #4 - str r4, [r2, #0x3c] - bl DC_StoreRange - bl SNDi_UnlockMutex - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SND_SetWaveDataAddress - - arm_func_start SND_GetWaveDataAddress -SND_GetWaveDataAddress: ; 0x020D650C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl SNDi_LockMutex - add r0, r5, r4, lsl #2 - ldr r4, [r0, #0x3c] - cmp r4, #0 - beq _020D6538 - cmp r4, #0x2000000 - addlo r4, r5, r4 - b _020D653C -_020D6538: - mov r4, #0 -_020D653C: - bl SNDi_UnlockMutex - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SND_GetWaveDataAddress - - arm_func_start PXI_Init -PXI_Init: ; 0x020D6548 - ldr ip, _020D6550 ; =PXI_InitFifo - bx ip - .align 2, 0 -_020D6550: .word PXI_InitFifo - arm_func_end PXI_Init - - arm_func_start PXI_InitFifo -PXI_InitFifo: ; 0x020D6554 - stmdb sp!, {r3, r4, r5, lr} - bl OS_DisableInterrupts - ldr r1, _020D6638 ; =_021E35A4 - mov r4, r0 - ldrh r0, [r1] - cmp r0, #0 - bne _020D662C - mov r2, #1 - strh r2, [r1] - mov r2, #0 - ldr r0, _020D663C ; =0x027FFC00 - mov r1, r2 - str r2, [r0, #0x388] - ldr r0, _020D6640 ; =_021E35A8 -_020D658C: - str r1, [r0, r2, lsl #2] - add r2, r2, #1 - cmp r2, #0x20 - blt _020D658C - ldr r2, _020D6644 ; =0x0000C408 - ldr r1, _020D6648 ; =0x04000184 - mov r0, #0x40000 - strh r2, [r1] - bl OS_ResetRequestIrqMask - ldr r1, _020D664C ; =PXIi_HandlerRecvFifoNotEmpty - mov r0, #0x40000 - bl OS_SetIrqFunction - mov r0, #0x40000 - bl OS_EnableIrqMask - mov r5, #0 - ldr r3, _020D6650 ; =0x04000180 - mov r1, r5 - mov r2, #0x3e8 -_020D65D4: - ldrh r0, [r3] - ands lr, r0, #0xf - mov r0, lr, lsl #8 - strh r0, [r3] - bne _020D65F0 - cmp r5, #4 - bgt _020D662C -_020D65F0: - ldrh r0, [r3] - mov ip, r2 - and r0, r0, #0xf - cmp r0, lr - bne _020D6624 -_020D6604: - cmp ip, #0 - movle r5, r1 - ble _020D6624 - ldrh r0, [r3] - sub ip, ip, #1 - and r0, r0, #0xf - cmp r0, lr - beq _020D6604 -_020D6624: - add r5, r5, #1 - b _020D65D4 -_020D662C: - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D6638: .word _021E35A4 -_020D663C: .word 0x027FFC00 -_020D6640: .word _021E35A8 -_020D6644: .word 0x0000C408 -_020D6648: .word 0x04000184 -_020D664C: .word PXIi_HandlerRecvFifoNotEmpty -_020D6650: .word 0x04000180 - arm_func_end PXI_InitFifo - - arm_func_start PXI_SetFifoRecvCallback -PXI_SetFifoRecvCallback: ; 0x020D6654 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl OS_DisableInterrupts - ldr r1, _020D6698 ; =_021E35A8 - ldr r3, _020D669C ; =0x027FFC00 - str r5, [r1, r4, lsl #2] - cmp r5, #0 - ldrne r2, [r3, #0x388] - mov r1, #1 - orrne r1, r2, r1, lsl r4 - mvneq r1, r1, lsl r4 - ldreq r2, [r3, #0x388] - andeq r1, r2, r1 - str r1, [r3, #0x388] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D6698: .word _021E35A8 -_020D669C: .word 0x027FFC00 - arm_func_end PXI_SetFifoRecvCallback - - arm_func_start PXI_IsCallbackReady -PXI_IsCallbackReady: ; 0x020D66A0 - ldr r2, _020D66C0 ; =0x027FFC00 - mov r3, #1 - add r1, r2, r1, lsl #2 - ldr r1, [r1, #0x388] - tst r1, r3, lsl r0 - moveq r3, #0 - mov r0, r3 - bx lr - .align 2, 0 -_020D66C0: .word 0x027FFC00 - arm_func_end PXI_IsCallbackReady - - arm_func_start PXI_SendWordByFifo -PXI_SendWordByFifo: ; 0x020D66C4 - stmdb sp!, {r3, lr} - ldr ip, [sp] - ldr r3, _020D6748 ; =0x04000184 - bic ip, ip, #0x1f - and r0, r0, #0x1f - orr ip, ip, r0 - ldrh r0, [r3] - bic ip, ip, #0x20 - mov r2, r2, lsl #0x1f - orr r2, ip, r2, lsr #26 - and r2, r2, #0x3f - orr r1, r2, r1, lsl #6 - str r1, [sp] - tst r0, #0x4000 - beq _020D6714 - ldrh r1, [r3] - mvn r0, #0 - orr r1, r1, #0xc000 - strh r1, [r3] - ldmia sp!, {r3, pc} -_020D6714: - bl OS_DisableInterrupts - ldr r2, _020D6748 ; =0x04000184 - ldrh r1, [r2] - tst r1, #2 - beq _020D6734 - bl OS_RestoreInterrupts - mvn r0, #1 - ldmia sp!, {r3, pc} -_020D6734: - ldr r1, [sp] - str r1, [r2, #4] - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020D6748: .word 0x04000184 - arm_func_end PXI_SendWordByFifo - - arm_func_start PXIi_HandlerRecvFifoNotEmpty -PXIi_HandlerRecvFifoNotEmpty: ; 0x020D674C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mvn r8, #3 - ldr r6, [sp] - ldr sb, _020D685C ; =0x04000184 - ldr r4, _020D6860 ; =_021E35A8 - add sl, r8, #1 - mov r7, #0x4100000 - mov r5, #0 -_020D6770: - ldrh r0, [sb] - tst r0, #0x4000 - beq _020D6790 - ldrh r0, [sb] - add r1, r8, #1 - orr r0, r0, #0xc000 - strh r0, [sb] - b _020D67BC -_020D6790: - bl OS_DisableInterrupts - ldrh r1, [sb] - tst r1, #0x100 - beq _020D67AC - bl OS_RestoreInterrupts - mov r1, r8 - b _020D67BC -_020D67AC: - ldr r6, [r7] - str r6, [sp] - bl OS_RestoreInterrupts - mov r1, r5 -_020D67BC: - cmp r1, r8 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - cmp r1, sl - beq _020D6770 - mov r0, r6, lsl #0x1b - movs r0, r0, lsr #0x1b - beq _020D6770 - ldr r3, [r4, r0, lsl #2] - cmp r3, #0 - beq _020D67FC - mov r2, r6, lsl #0x1a - mov r1, r6, lsr #6 - mov r2, r2, lsr #0x1f - blx r3 - b _020D6770 -_020D67FC: - mov r0, r6, lsl #0x1a - movs r0, r0, lsr #0x1f - bne _020D6770 - ldrh r0, [sb] - orr r6, r6, #0x20 - str r6, [sp] - tst r0, #0x4000 - beq _020D682C - ldrh r0, [sb] - orr r0, r0, #0xc000 - strh r0, [sb] - b _020D6770 -_020D682C: - bl OS_DisableInterrupts - ldrh r1, [sb] - tst r1, #2 - beq _020D6844 - bl OS_RestoreInterrupts - b _020D6770 -_020D6844: - mov r1, r6 - str r1, [sb, #4] - bl OS_RestoreInterrupts - b _020D6770 -_020D6854: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020D685C: .word 0x04000184 -_020D6860: .word _021E35A8 - arm_func_end PXIi_HandlerRecvFifoNotEmpty - - arm_func_start FSi_ReleaseCommand -FSi_ReleaseCommand: ; 0x020D6864 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r1 - bl OS_DisableInterrupts - ldr r1, [r5] - mov r6, r0 - ldr r0, [r5, #4] - cmp r1, #0 - strne r0, [r1, #4] - cmp r0, #0 - strne r1, [r0] - mov r0, #0 - str r0, [r5] - str r0, [r5, #4] - ldr r1, [r5, #0xc] - add r0, r5, #0x18 - bic r1, r1, #0x4f - str r1, [r5, #0xc] - str r4, [r5, #0x14] - bl OS_WakeupThread - mov r0, r6 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, pc} - arm_func_end FSi_ReleaseCommand - - arm_func_start FSi_TranslateCommand -FSi_TranslateCommand: ; 0x020D68C0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r0, [r8, #0xc] - ldr r5, [r8, #8] - mov r7, r1 - mov r1, #1 - tst r0, #4 - mov r6, r1, lsl r7 - moveq r1, #0 - ldr r0, [r5, #0x1c] - cmp r1, #0 - orrne r0, r0, #0x200 - orreq r0, r0, #0x100 - str r0, [r5, #0x1c] - ldr r0, [r5, #0x58] - tst r0, r6 - beq _020D6968 - ldr r2, [r5, #0x54] - mov r0, r8 - mov r1, r7 - blx r2 - mov r4, r0 - cmp r4, #8 - addls pc, pc, r4, lsl #2 - b _020D696C -_020D6924: ; jump table - b _020D6948 ; case 0 - b _020D6948 ; case 1 - b _020D696C ; case 2 - b _020D696C ; case 3 - b _020D6948 ; case 4 - b _020D696C ; case 5 - b _020D696C ; case 6 - b _020D696C ; case 7 - b _020D6950 ; case 8 -_020D6948: - str r4, [r8, #0x14] - b _020D696C -_020D6950: - ldr r1, [r5, #0x58] - mvn r0, r6 - and r0, r1, r0 - str r0, [r5, #0x58] - mov r4, #7 - b _020D696C -_020D6968: - mov r4, #7 -_020D696C: - cmp r4, #7 - bne _020D6988 - ldr r1, _020D6A4C ; =_0210E124 - mov r0, r8 - ldr r1, [r1, r7, lsl #2] - blx r1 - mov r4, r0 -_020D6988: - cmp r4, #6 - bne _020D6A00 - ldr r0, [r8, #0xc] - tst r0, #4 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D6A44 - bl OS_DisableInterrupts - ldr r1, [r5, #0x1c] - mov r7, r0 - tst r1, #0x200 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D69F0 - mov r4, #0 - mov r6, #1 -_020D69D0: - add r0, r5, #0xc - bl OS_SleepThread - ldr r0, [r5, #0x1c] - tst r0, #0x200 - movne r0, r6 - moveq r0, r4 - cmp r0, #0 - bne _020D69D0 -_020D69F0: - mov r0, r7 - ldr r4, [r8, #0x14] - bl OS_RestoreInterrupts - b _020D6A44 -_020D6A00: - ldr r0, [r8, #0xc] - tst r0, #4 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - bne _020D6A34 - ldr r1, [r5, #0x1c] - mov r0, r8 - bic r2, r1, #0x100 - mov r1, r4 - str r2, [r5, #0x1c] - bl FSi_ReleaseCommand - b _020D6A44 -_020D6A34: - ldr r0, [r5, #0x1c] - bic r0, r0, #0x200 - str r0, [r5, #0x1c] - str r4, [r8, #0x14] -_020D6A44: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020D6A4C: .word _0210E124 - arm_func_end FSi_TranslateCommand - - arm_func_start FSi_StrNICmp -FSi_StrNICmp: ; 0x020D6A50 - stmdb sp!, {r3, lr} - cmp r2, #0 - mov lr, #0 - bls _020D6A98 -_020D6A60: - ldrb ip, [r0, lr] - ldrb r3, [r1, lr] - sub ip, ip, #0x41 - cmp ip, #0x19 - sub r3, r3, #0x41 - addls ip, ip, #0x20 - cmp r3, #0x19 - addls r3, r3, #0x20 - cmp ip, r3 - subne r0, ip, r3 - ldmneia sp!, {r3, pc} - add lr, lr, #1 - cmp lr, r2 - blo _020D6A60 -_020D6A98: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end FSi_StrNICmp - - arm_func_start FSi_ReadTable -FSi_ReadTable: ; 0x020D6AA0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r0 - ldr r4, [r7] - mov r6, r2 - ldr r2, [r4, #0x1c] - mov r0, r4 - orr r2, r2, #0x200 - str r2, [r4, #0x1c] - ldr r2, [r7, #4] - ldr r5, [r4, #0x50] - mov r3, r6 - blx r5 - cmp r0, #0 - cmpne r0, #1 - beq _020D6AE8 - cmp r0, #6 - beq _020D6AF8 - b _020D6B50 -_020D6AE8: - ldr r1, [r4, #0x1c] - bic r1, r1, #0x200 - str r1, [r4, #0x1c] - b _020D6B50 -_020D6AF8: - bl OS_DisableInterrupts - ldr r1, [r4, #0x1c] - mov r5, r0 - tst r1, #0x200 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D6B40 - mov r8, #0 - mov sb, #1 -_020D6B20: - add r0, r4, #0xc - bl OS_SleepThread - ldr r0, [r4, #0x1c] - tst r0, #0x200 - movne r0, sb - moveq r0, r8 - cmp r0, #0 - bne _020D6B20 -_020D6B40: - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #0x24] - ldr r0, [r0, #0x14] -_020D6B50: - ldr r1, [r7, #4] - add r1, r1, r6 - str r1, [r7, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end FSi_ReadTable - - arm_func_start FSi_SeekDirDirect -FSi_SeekDirDirect: ; 0x020D6B60 - ldr r3, [r0, #0xc] - mov r2, #0 - orr r3, r3, #4 - str r3, [r0, #0xc] - ldr r3, [r0, #8] - ldr ip, _020D6B90 ; =FSi_TranslateCommand - str r3, [r0, #0x30] - str r2, [r0, #0x38] - strh r2, [r0, #0x36] - strh r1, [r0, #0x34] - mov r1, #2 - bx ip - .align 2, 0 -_020D6B90: .word FSi_TranslateCommand - arm_func_end FSi_SeekDirDirect - - arm_func_start FSi_ReadFileCommand -FSi_ReadFileCommand: ; 0x020D6B94 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0x2c] - ldr r3, [r0, #0x38] - ldr lr, [r0, #8] - ldr r1, [r0, #0x30] - add ip, r2, r3 - str ip, [r0, #0x2c] - ldr ip, [lr, #0x48] - mov r0, lr - blx ip - ldmia sp!, {r3, pc} - arm_func_end FSi_ReadFileCommand - - arm_func_start FSi_WriteFileCommand -FSi_WriteFileCommand: ; 0x020D6BC0 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0x2c] - ldr r3, [r0, #0x38] - ldr lr, [r0, #8] - ldr r1, [r0, #0x30] - add ip, r2, r3 - str ip, [r0, #0x2c] - ldr ip, [lr, #0x4c] - mov r0, lr - blx ip - ldmia sp!, {r3, pc} - arm_func_end FSi_WriteFileCommand - - arm_func_start FSi_SeekDirCommand -FSi_SeekDirCommand: ; 0x020D6BEC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r0 - ldr r4, [r6, #8] - add r5, r6, #0x30 - str r4, [sp] - ldrh r1, [r5, #4] - ldr r2, [r4, #0x34] - add r0, sp, #0 - add r3, r2, r1, lsl #3 - add r1, sp, #8 - mov r2, #8 - str r3, [sp, #4] - bl FSi_ReadTable - movs r3, r0 - bne _020D6C74 - add ip, r6, #0x20 - ldmia r5, {r0, r1, r2} - stmia ip, {r0, r1, r2} - ldrh r0, [r5, #6] - cmp r0, #0 - ldreq r0, [r5, #8] - cmpeq r0, #0 - bne _020D6C64 - ldrh r0, [sp, #0xc] - strh r0, [r6, #0x26] - ldr r1, [r4, #0x34] - ldr r0, [sp, #8] - add r0, r1, r0 - str r0, [r6, #0x28] -_020D6C64: - ldrh r1, [sp, #0xe] - ldr r0, _020D6C80 ; =0x00000FFF - and r0, r1, r0 - str r0, [r6, #0x2c] -_020D6C74: - mov r0, r3 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D6C80: .word 0x00000FFF - arm_func_end FSi_SeekDirCommand - - arm_func_start FSi_ReadDirCommand -FSi_ReadDirCommand: ; 0x020D6C84 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r4, [r5, #0x30] - ldr r1, [r5, #8] - add r0, sp, #4 - str r1, [sp, #4] - ldr r3, [r5, #0x28] - add r1, sp, #0 - mov r2, #1 - str r3, [sp, #8] - bl FSi_ReadTable - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, pc} - ldrb r1, [sp] - and r2, r1, #0x7f - mov r1, r1, asr #7 - str r2, [r4, #0x10] - and r1, r1, #1 - str r1, [r4, #0xc] - ldr r2, [r4, #0x10] - cmp r2, #0 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, r5, pc} - ldr r1, [r5, #0x34] - cmp r1, #0 - bne _020D6D24 - add r0, sp, #4 - add r1, r4, #0x14 - bl FSi_ReadTable - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r1, [r4, #0x10] - mov r2, #0 - add r1, r4, r1 - strb r2, [r1, #0x14] - b _020D6D30 -_020D6D24: - ldr r1, [sp, #8] - add r1, r1, r2 - str r1, [sp, #8] -_020D6D30: - ldr r1, [r4, #0xc] - cmp r1, #0 - beq _020D6D80 - add r0, sp, #4 - add r1, sp, #2 - mov r2, #2 - bl FSi_ReadTable - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, pc} - ldr r2, [r5, #8] - ldr r1, _020D6DAC ; =0x00000FFF - str r2, [r4] - ldrh r3, [sp, #2] - mov r2, #0 - and r1, r3, r1 - strh r1, [r4, #4] - strh r2, [r4, #6] - str r2, [r4, #8] - b _020D6D9C -_020D6D80: - ldr r1, [r5, #8] - str r1, [r4] - ldrh r1, [r5, #0x26] - str r1, [r4, #4] - ldrh r1, [r5, #0x26] - add r1, r1, #1 - strh r1, [r5, #0x26] -_020D6D9C: - ldr r1, [sp, #8] - str r1, [r5, #0x28] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020D6DAC: .word 0x00000FFF - arm_func_end FSi_ReadDirCommand - - arm_func_start FSi_FindPathCommand -FSi_FindPathCommand: ; 0x020D6DB0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x94 - mov sb, r0 - ldr r5, [sb, #0x3c] - mov r1, #2 - ldr r6, [sb, #0x40] - bl FSi_TranslateCommand - ldrb r3, [r5] - cmp r3, #0 - beq _020D6F68 -_020D6DD8: - mov r8, #0 - mov r0, #1 - mov r1, r8 - b _020D6DEC -_020D6DE8: - add r8, r8, #1 -_020D6DEC: - ldrb r7, [r5, r8] - mov r2, r1 - cmp r7, #0 - cmpne r7, #0x2f - cmpne r7, #0x5c - movne r2, r0 - cmp r2, #0 - bne _020D6DE8 - cmp r7, #0 - cmpeq r6, #0 - movne r7, #1 - cmp r8, #0 - addeq sp, sp, #0x94 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - cmp r3, #0x2e - bne _020D6E80 - cmp r8, #1 - addeq r5, r5, #1 - beq _020D6F4C - ldrb r0, [r5, #1] - cmp r8, #2 - moveq r1, #1 - movne r1, #0 - cmp r0, #0x2e - moveq r0, #1 - movne r0, #0 - tst r1, r0 - beq _020D6E80 - ldrh r0, [sb, #0x24] - cmp r0, #0 - beq _020D6E78 - ldr r1, [sb, #0x2c] - mov r0, sb - bl FSi_SeekDirDirect -_020D6E78: - add r5, r5, #2 - b _020D6F4C -_020D6E80: - cmp r8, #0x7f - addgt sp, sp, #0x94 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - add r1, sp, #0 - mov r0, #0 - str r1, [sb, #0x30] - str r0, [sb, #0x34] - add sl, sp, #0x14 - mov r4, #3 -_020D6EA8: - mov r0, sb - mov r1, r4 - bl FSi_TranslateCommand - cmp r0, #0 - addne sp, sp, #0x94 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [sp, #0xc] - cmp r7, r0 - ldreq r0, [sp, #0x10] - cmpeq r8, r0 - bne _020D6EA8 - mov r0, r5 - mov r1, sl - mov r2, r8 - bl FSi_StrNICmp - cmp r0, #0 - bne _020D6EA8 - cmp r7, #0 - beq _020D6F1C - add r0, sp, #0 - add r3, sb, #0x30 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, sb - mov r1, #2 - add r5, r5, r8 - bl FSi_TranslateCommand - b _020D6F4C -_020D6F1C: - cmp r6, #0 - addne sp, sp, #0x94 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r3, [sb, #0x44] - ldr r2, [sp] - ldr r1, [sp, #4] - add sp, sp, #0x94 - str r2, [r3] - mov r0, #0 - str r1, [r3, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_020D6F4C: - ldrb r0, [r5] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldrb r3, [r5, r0]! - cmp r3, #0 - bne _020D6DD8 -_020D6F68: - cmp r6, #0 - addeq sp, sp, #0x94 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r3, [sb, #0x44] - add r0, sb, #0x20 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, #0 - add sp, sp, #0x94 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end FSi_FindPathCommand - - arm_func_start FSi_GetPathCommand -FSi_GetPathCommand: ; 0x020D6F94 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xe0 - mov sl, r0 - ldr r1, [sl, #8] - add r0, sp, #4 - str r1, [sp] - bl FS_InitFile - ldr r0, [sl, #8] - str r0, [sp, #0xc] - ldr r0, [sl, #0xc] - tst r0, #0x20 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - ldrneh sb, [sl, #0x24] - movne r6, #0x10000 - bne _020D7078 - ldrh r0, [sl, #0x38] - ldr r6, [sl, #0x20] - cmp r0, #0 - ldrneh sb, [sl, #0x3a] - bne _020D7078 - mov r7, #0 - mov r8, r7 - mov sb, #0x10000 - add r5, sp, #4 - mov r4, #3 - add fp, sp, #0x4c -_020D7004: - mov r0, r5 - mov r1, r7 - bl FSi_SeekDirDirect - mov r2, #1 - cmp r7, #0 - mov r0, r5 - mov r1, #3 - ldreq r8, [sp, #0x30] - str fp, [sp, #0x34] - str r2, [sp, #0x38] - bl FSi_TranslateCommand - cmp r0, #0 - bne _020D7064 -_020D7038: - ldr r0, [sp, #0x58] - cmp r0, #0 - ldreq r0, [sp, #0x50] - cmpeq r0, r6 - ldreqh sb, [sp, #0x28] - beq _020D7064 - mov r0, r5 - mov r1, r4 - bl FSi_TranslateCommand - cmp r0, #0 - beq _020D7038 -_020D7064: - cmp sb, #0x10000 - bne _020D7078 - add r7, r7, #1 - cmp r7, r8 - blo _020D7004 -_020D7078: - cmp sb, #0x10000 - bne _020D7094 - mov r0, #0 - strh r0, [sl, #0x38] - add sp, sp, #0xe0 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D7094: - ldrh r0, [sl, #0x38] - cmp r0, #0 - bne _020D7178 - ldr r0, [sp] - mov r1, #0 - ldr r0, [r0] - cmp r0, #0xff - addls r8, r1, #1 - bls _020D70C4 - cmp r0, #0xff00 - addls r8, r1, #2 - addhi r8, r1, #3 -_020D70C4: - cmp r6, #0x10000 - ldrne r0, [sp, #0x5c] - add r8, r8, #2 - addne r8, r8, r0 - mov r7, sb - cmp sb, #0 - beq _020D716C - add r0, sp, #4 - mov r1, sb - bl FSi_SeekDirDirect - add r5, sp, #4 - mov r4, #3 - add fp, sp, #0x4c -_020D70F8: - ldr r1, [sp, #0x30] - mov r0, r5 - bl FSi_SeekDirDirect - mov r1, #1 - str r1, [sp, #0x38] - mov r0, r5 - mov r1, #3 - str fp, [sp, #0x34] - bl FSi_TranslateCommand - cmp r0, #0 - bne _020D7160 -_020D7124: - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _020D714C - ldrh r0, [sp, #0x50] - cmp r0, r7 - bne _020D714C - ldr r0, [sp, #0x5c] - add r0, r0, #1 - add r8, r8, r0 - b _020D7160 -_020D714C: - mov r0, r5 - mov r1, r4 - bl FSi_TranslateCommand - cmp r0, #0 - beq _020D7124 -_020D7160: - ldrh r7, [sp, #0x28] - cmp r7, #0 - bne _020D70F8 -_020D716C: - add r0, r8, #1 - strh r0, [sl, #0x38] - strh sb, [sl, #0x3a] -_020D7178: - ldr r5, [sl, #0x30] - cmp r5, #0 - addeq sp, sp, #0xe0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrh r4, [sl, #0x38] - ldr r0, [sl, #0x34] - cmp r0, r4 - addlo sp, sp, #0xe0 - movlo r0, #1 - ldmloia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp] - mov r7, #0 - ldr r0, [r0] - cmp r0, #0xff - movls r8, #1 - bls _020D71C8 - cmp r0, #0xff00 - movls r8, #2 - movhi r8, #3 -_020D71C8: - ldr r0, [sp] - mov r1, r5 - mov r2, r8 - bl MI_CpuCopy8 - add r1, r7, r8 - ldr r0, _020D733C ; =_02110C98 - add r1, r5, r1 - mov r2, #2 - bl MI_CpuCopy8 - add r0, sp, #4 - mov r1, sb - bl FSi_SeekDirDirect - cmp r6, #0x10000 - beq _020D7278 - add r3, sp, #0x4c - mov r2, #0 - add r0, sp, #4 - mov r1, #3 - str r3, [sp, #0x34] - str r2, [sp, #0x38] - bl FSi_TranslateCommand - cmp r0, #0 - bne _020D7254 - add r8, sp, #4 - mov r7, #3 -_020D722C: - ldr r0, [sp, #0x58] - cmp r0, #0 - ldreq r0, [sp, #0x50] - cmpeq r0, r6 - beq _020D7254 - mov r0, r8 - mov r1, r7 - bl FSi_TranslateCommand - cmp r0, #0 - beq _020D722C -_020D7254: - ldr r0, [sp, #0x5c] - add r1, r5, r4 - add r6, r0, #1 - add r0, sp, #0x60 - mov r2, r6 - sub r1, r1, r6 - bl MI_CpuCopy8 - sub r4, r4, r6 - b _020D7288 -_020D7278: - add r0, r5, r4 - mov r1, #0 - strb r1, [r0, #-1] - sub r4, r4, #1 -_020D7288: - cmp sb, #0 - beq _020D7330 - add sl, sp, #4 - mov r6, #3 - add r8, sp, #0x4c - mov r7, #0 - mov fp, #0x2f -_020D72A4: - ldr r1, [sp, #0x30] - mov r0, sl - bl FSi_SeekDirDirect - add r1, r5, r4 - str r8, [sp, #0x34] - str r7, [sp, #0x38] - strb fp, [r1, #-1] - mov r0, sl - mov r1, #3 - sub r4, r4, #1 - bl FSi_TranslateCommand - cmp r0, #0 - bne _020D7324 -_020D72D8: - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _020D7310 - ldrh r0, [sp, #0x50] - cmp r0, sb - bne _020D7310 - ldr sb, [sp, #0x5c] - add r1, r5, r4 - add r0, sp, #0x60 - mov r2, sb - sub r1, r1, sb - bl MI_CpuCopy8 - sub r4, r4, sb - b _020D7324 -_020D7310: - mov r0, sl - mov r1, r6 - bl FSi_TranslateCommand - cmp r0, #0 - beq _020D72D8 -_020D7324: - ldrh sb, [sp, #0x28] - cmp sb, #0 - bne _020D72A4 -_020D7330: - mov r0, #0 - add sp, sp, #0xe0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020D733C: .word _02110C98 - arm_func_end FSi_GetPathCommand - - arm_func_start FSi_OpenFileFastCommand -FSi_OpenFileFastCommand: ; 0x020D7340 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - ldr r1, [r5, #8] - ldr r4, [r5, #0x34] - ldr r0, [r1, #0x30] - mov r2, r4, lsl #3 - cmp r0, r4, lsl #3 - addls sp, sp, #0x10 - movls r0, #1 - ldmlsia sp!, {r3, r4, r5, pc} - str r1, [sp] - ldr r1, [r1, #0x2c] - add r0, sp, #0 - add r3, r1, r2 - add r1, sp, #8 - mov r2, #8 - str r3, [sp, #4] - bl FSi_ReadTable - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [sp, #8] - mov r0, r5 - str r1, [r5, #0x30] - ldr r2, [sp, #0xc] - mov r1, #7 - str r2, [r5, #0x34] - str r4, [r5, #0x38] - bl FSi_TranslateCommand - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FSi_OpenFileFastCommand - - arm_func_start FSi_OpenFileDirectCommand -FSi_OpenFileDirectCommand: ; 0x020D73C0 - ldr r1, [r0, #0x30] - str r1, [r0, #0x24] - ldr r1, [r0, #0x30] - str r1, [r0, #0x2c] - ldr r1, [r0, #0x34] - str r1, [r0, #0x28] - ldr r1, [r0, #0x38] - str r1, [r0, #0x20] - mov r0, #0 - bx lr - arm_func_end FSi_OpenFileDirectCommand - - arm_func_start FSi_CloseFileCommand -FSi_CloseFileCommand: ; 0x020D73E8 - mov r0, #0 - bx lr - arm_func_end FSi_CloseFileCommand - - arm_func_start FSi_GetPackedName -FSi_GetPackedName: ; 0x020D73F0 - stmdb sp!, {r3, lr} - cmp r1, #3 - mov r3, #0 - bgt _020D7440 - mov ip, r3 - cmp r1, #0 - ble _020D7440 - mov lr, r3 -_020D7410: - ldrb r2, [r0, ip] - cmp r2, #0 - beq _020D7440 - sub r2, r2, #0x41 - cmp r2, #0x19 - addls r2, r2, #0x61 - addhi r2, r2, #0x41 - add ip, ip, #1 - orr r3, r3, r2, lsl lr - cmp ip, r1 - add lr, lr, #8 - blt _020D7410 -_020D7440: - mov r0, r3 - ldmia sp!, {r3, pc} - arm_func_end FSi_GetPackedName - - arm_func_start FSi_ReadMemCallback -FSi_ReadMemCallback: ; 0x020D7448 - stmdb sp!, {r3, lr} - ldr r0, [r0, #0x28] - add r0, r0, r2 - mov r2, r3 - bl MI_CpuCopy8 - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end FSi_ReadMemCallback - - arm_func_start FSi_WriteMemCallback -FSi_WriteMemCallback: ; 0x020D7464 - stmdb sp!, {r3, lr} - ldr ip, [r0, #0x28] - mov r0, r1 - add r1, ip, r2 - mov r2, r3 - bl MI_CpuCopy8 - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end FSi_WriteMemCallback - - arm_func_start FSi_ReadMemoryCore -FSi_ReadMemoryCore: ; 0x020D7484 - stmdb sp!, {r3, lr} - mov r0, r2 - mov r2, r3 - bl MI_CpuCopy8 - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end FSi_ReadMemoryCore - - arm_func_start FSi_NextCommand -FSi_NextCommand: ; 0x020D749C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x48 - mov r6, r0 - bl OS_DisableInterrupts - ldr r1, [r6, #0x1c] - mov r4, r0 - tst r1, #0x20 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D7530 - ldr r0, [r6, #0x1c] - bic r0, r0, #0x20 - str r0, [r6, #0x1c] - ldr r0, [r6, #0x24] - cmp r0, #0 - beq _020D7530 - mov r8, #0 - mov sb, #1 - mov r7, #3 -_020D74EC: - ldr r1, [r0, #0xc] - ldr r5, [r0, #4] - tst r1, #2 - movne r1, sb - moveq r1, r8 - cmp r1, #0 - beq _020D7524 - ldr r1, [r6, #0x24] - cmp r1, r0 - mov r1, r7 - streq r5, [r6, #0x24] - bl FSi_ReleaseCommand - cmp r5, #0 - ldreq r5, [r6, #0x24] -_020D7524: - mov r0, r5 - cmp r5, #0 - bne _020D74EC -_020D7530: - ldr r0, [r6, #0x1c] - tst r0, #0x40 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - bne _020D7620 - ldr r0, [r6, #0x1c] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - bne _020D7620 - ldr r5, [r6, #0x24] - cmp r5, #0 - beq _020D7620 - ldr r0, [r6, #0x1c] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - moveq r7, #1 - movne r7, #0 - cmp r7, #0 - ldrne r0, [r6, #0x1c] - orrne r0, r0, #0x10 - strne r0, [r6, #0x1c] - mov r0, r4 - bl OS_RestoreInterrupts - cmp r7, #0 - beq _020D75C4 - ldr r0, [r6, #0x58] - tst r0, #0x200 - beq _020D75C4 - ldr r2, [r6, #0x54] - mov r0, r5 - mov r1, #9 - blx r2 -_020D75C4: - bl OS_DisableInterrupts - ldr r1, [r5, #0xc] - mov r4, r0 - orr r0, r1, #0x40 - str r0, [r5, #0xc] - ldr r0, [r5, #0xc] - tst r0, #4 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D760C - add r0, r5, #0x18 - bl OS_WakeupThread - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x48 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020D760C: - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #0x48 - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020D7620: - ldr r0, [r6, #0x1c] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D766C - ldr r0, [r6, #0x1c] - bic r0, r0, #0x10 - str r0, [r6, #0x1c] - ldr r0, [r6, #0x58] - tst r0, #0x400 - beq _020D766C - add r0, sp, #0 - bl FS_InitFile - str r6, [sp, #8] - ldr r2, [r6, #0x54] - add r0, sp, #0 - mov r1, #0xa - blx r2 -_020D766C: - ldr r0, [r6, #0x1c] - tst r0, #0x40 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D769C - ldr r1, [r6, #0x1c] - add r0, r6, #0x14 - bic r1, r1, #0x40 - orr r1, r1, #8 - str r1, [r6, #0x1c] - bl OS_WakeupThread -_020D769C: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #0 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end FSi_NextCommand - - arm_func_start FSi_ExecuteAsyncCommand -FSi_ExecuteAsyncCommand: ; 0x020D76B0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r6, r0 - ldr r4, [r6, #8] - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r7, #0 - mov r8, #1 -_020D76C8: - bl OS_DisableInterrupts - ldr r1, [r6, #0xc] - mov r5, r0 - orr r0, r1, #0x40 - str r0, [r6, #0xc] - ldr r0, [r6, #0xc] - tst r0, #4 - movne r0, r8 - moveq r0, r7 - cmp r0, #0 - beq _020D7708 - add r0, r6, #0x18 - bl OS_WakeupThread - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D7708: - ldr r1, [r6, #0xc] - mov r0, r5 - orr r1, r1, #8 - str r1, [r6, #0xc] - bl OS_RestoreInterrupts - ldr r1, [r6, #0x10] - mov r0, r6 - bl FSi_TranslateCommand - cmp r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - bl FSi_NextCommand - movs r6, r0 - bne _020D76C8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end FSi_ExecuteAsyncCommand - - arm_func_start FSi_ExecuteSyncCommand -FSi_ExecuteSyncCommand: ; 0x020D7744 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x10] - bl FSi_TranslateCommand - mov r1, r0 - mov r0, r4 - bl FSi_ReleaseCommand - ldr r0, [r4, #8] - bl FSi_NextCommand - cmp r0, #0 - beq _020D7774 - bl FSi_ExecuteAsyncCommand -_020D7774: - ldr r0, [r4, #0x14] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, pc} - arm_func_end FSi_ExecuteSyncCommand - - arm_func_start FSi_SendCommand -FSi_SendCommand: ; 0x020D7788 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldr r4, [r6, #8] - mov r2, #1 - str r1, [r6, #0x10] - mov r0, #2 - str r0, [r6, #0x14] - ldr r0, [r6, #0xc] - mov r7, r2, lsl r1 - orr r0, r0, #1 - str r0, [r6, #0xc] - bl OS_DisableInterrupts - ldr r1, [r4, #0x1c] - mov r5, r0 - tst r1, #0x80 - beq _020D77E4 - mov r0, r6 - mov r1, #3 - bl FSi_ReleaseCommand - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D77E4: - tst r7, #0x1fc - ldrne r0, [r6, #0xc] - orrne r0, r0, #4 - strne r0, [r6, #0xc] - ldr r1, [r6] - ldr r2, [r6, #4] - cmp r1, #0 - strne r2, [r1, #4] - cmp r2, #0 - add r0, r4, #0x20 - strne r1, [r2] - ldr r1, [r0, #4] - cmp r1, #0 - beq _020D782C -_020D781C: - mov r0, r1 - ldr r1, [r1, #4] - cmp r1, #0 - bne _020D781C -_020D782C: - str r6, [r0, #4] - str r0, [r6] - mov r1, #0 - str r1, [r6, #4] - ldr r0, [r4, #0x1c] - tst r0, #8 - movne r1, #1 - cmp r1, #0 - bne _020D78DC - ldr r0, [r4, #0x1c] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - bne _020D78DC - ldr r1, [r4, #0x1c] - mov r0, r5 - orr r1, r1, #0x10 - str r1, [r4, #0x1c] - bl OS_RestoreInterrupts - ldr r0, [r4, #0x58] - tst r0, #0x200 - beq _020D7898 - ldr r2, [r4, #0x54] - mov r0, r6 - mov r1, #9 - blx r2 -_020D7898: - bl OS_DisableInterrupts - ldr r1, [r6, #0xc] - orr r1, r1, #0x40 - str r1, [r6, #0xc] - ldr r1, [r6, #0xc] - tst r1, #4 - movne r1, #1 - moveq r1, #0 - cmp r1, #0 - bne _020D78D4 - bl OS_RestoreInterrupts - mov r0, r6 - bl FSi_ExecuteAsyncCommand - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D78D4: - bl OS_RestoreInterrupts - b _020D7920 -_020D78DC: - ldr r0, [r6, #0xc] - tst r0, #4 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - bne _020D7904 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D7904: - add r0, r6, #0x18 - bl OS_SleepThread - ldr r0, [r6, #0xc] - tst r0, #0x40 - beq _020D7904 - mov r0, r5 - bl OS_RestoreInterrupts -_020D7920: - mov r0, r6 - bl FSi_ExecuteSyncCommand - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end FSi_SendCommand - - arm_func_start FS_InitArchive -FS_InitArchive: ; 0x020D792C - stmdb sp!, {r4, lr} - mov r1, #0 - mov r2, #0x5c - mov r4, r0 - bl MI_CpuFill8 - mov r0, #0 - str r0, [r4, #0x10] - str r0, [r4, #0xc] - str r0, [r4, #0x18] - str r0, [r4, #0x14] - ldmia sp!, {r4, pc} - arm_func_end FS_InitArchive - - arm_func_start FS_FindArchive -FS_FindArchive: ; 0x020D7958 - stmdb sp!, {r3, r4, r5, lr} - bl FSi_GetPackedName - mov r4, r0 - bl OS_DisableInterrupts - ldr r1, _020D7994 ; =_021E3628 - ldr r5, [r1] - b _020D7978 -_020D7974: - ldr r5, [r5, #4] -_020D7978: - cmp r5, #0 - ldrne r1, [r5] - cmpne r1, r4 - bne _020D7974 - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D7994: .word _021E3628 - arm_func_end FS_FindArchive - - arm_func_start FS_RegisterArchiveName -FS_RegisterArchiveName: ; 0x020D7998 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r1 - mov r5, r2 - mov r7, r0 - mov r8, #0 - bl OS_DisableInterrupts - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl FS_FindArchive - cmp r0, #0 - bne _020D7A38 - ldr r0, _020D7A48 ; =_021E3628 - ldr r1, [r0] - cmp r1, #0 - bne _020D79F4 - str r7, [r0] - str r7, [r0, #4] - mov r1, r8 - str r1, [r0, #0xc] - strh r1, [r0, #0xa] - strh r1, [r0, #8] - b _020D7A18 -_020D79F4: - ldr r0, [r1, #4] - cmp r0, #0 - beq _020D7A10 -_020D7A00: - mov r1, r0 - ldr r0, [r0, #4] - cmp r0, #0 - bne _020D7A00 -_020D7A10: - str r7, [r1, #4] - str r1, [r7, #8] -_020D7A18: - mov r0, r6 - mov r1, r5 - bl FSi_GetPackedName - str r0, [r7] - ldr r0, [r7, #0x1c] - mov r8, #1 - orr r0, r0, #1 - str r0, [r7, #0x1c] -_020D7A38: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020D7A48: .word _021E3628 - arm_func_end FS_RegisterArchiveName - - arm_func_start FS_ReleaseArchiveName -FS_ReleaseArchiveName: ; 0x020D7A4C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl OS_DisableInterrupts - ldr r2, [r4, #4] - mov r3, #0 - cmp r2, #0 - ldrne r1, [r4, #8] - strne r1, [r2, #8] - ldr r2, [r4, #8] - cmp r2, #0 - ldrne r1, [r4, #4] - strne r1, [r2, #4] - str r3, [r4] - str r3, [r4, #8] - str r3, [r4, #4] - ldr r2, [r4, #0x1c] - ldr r1, _020D7ACC ; =_021E3628 - bic r2, r2, #1 - str r2, [r4, #0x1c] - ldr r2, [r1, #4] - cmp r2, r4 - bne _020D7AC4 - ldr r2, [r1] - str r2, [r1, #4] - str r3, [r1, #0xc] - strh r3, [r1, #0xa] - strh r3, [r1, #8] -_020D7AC4: - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020D7ACC: .word _021E3628 - arm_func_end FS_ReleaseArchiveName - - arm_func_start FS_LoadArchive -FS_LoadArchive: ; 0x020D7AD0 - str r1, [r0, #0x28] - str r3, [r0, #0x30] - str r2, [r0, #0x3c] - ldr r3, [sp, #4] - str r2, [r0, #0x2c] - ldr ip, [sp, #8] - ldr r1, [sp] - str r3, [r0, #0x38] - str r1, [r0, #0x40] - str r1, [r0, #0x34] - cmp ip, #0 - ldreq ip, _020D7B38 ; =FSi_ReadMemCallback - ldr r1, [sp, #0xc] - str ip, [r0, #0x48] - cmp r1, #0 - ldreq r1, _020D7B3C ; =FSi_WriteMemCallback - str r1, [r0, #0x4c] - ldr r2, [r0, #0x48] - mov r1, #0 - str r2, [r0, #0x50] - str r1, [r0, #0x44] - ldr r1, [r0, #0x1c] - orr r1, r1, #2 - str r1, [r0, #0x1c] - mov r0, #1 - bx lr - .align 2, 0 -_020D7B38: .word FSi_ReadMemCallback -_020D7B3C: .word FSi_WriteMemCallback - arm_func_end FS_LoadArchive - - arm_func_start FS_UnloadArchive -FS_UnloadArchive: ; 0x020D7B40 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - bl OS_DisableInterrupts - ldr r1, [r6, #0x1c] - mov r4, r0 - tst r1, #2 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D7BF0 - mov r0, r6 - ldr r1, [r6, #0x1c] - bl FS_SuspendArchive - ldr r1, [r6, #0x1c] - mov r5, r0 - orr r0, r1, #0x80 - str r0, [r6, #0x1c] - ldr r0, [r6, #0x24] - cmp r0, #0 - beq _020D7BAC - mov r7, #3 -_020D7B94: - ldr r8, [r0, #4] - mov r1, r7 - bl FSi_ReleaseCommand - mov r0, r8 - cmp r8, #0 - bne _020D7B94 -_020D7BAC: - mov r0, #0 - str r0, [r6, #0x24] - cmp r5, #0 - beq _020D7BC4 - mov r0, r6 - bl FS_ResumeArchive -_020D7BC4: - mov r0, #0 - str r0, [r6, #0x28] - str r0, [r6, #0x2c] - str r0, [r6, #0x30] - str r0, [r6, #0x34] - str r0, [r6, #0x38] - str r0, [r6, #0x40] - str r0, [r6, #0x3c] - ldr r0, [r6, #0x1c] - bic r0, r0, #0xa2 - str r0, [r6, #0x1c] -_020D7BF0: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end FS_UnloadArchive - - arm_func_start FS_LoadArchiveTables -FS_LoadArchiveTables: ; 0x020D7C00 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x4c - mov r7, r0 - ldr r3, [r7, #0x30] - ldr r0, [r7, #0x38] - mov r6, r1 - add r0, r3, r0 - add r0, r0, #0x3f - bic r4, r0, #0x1f - cmp r4, r2 - bhi _020D7D14 - add r1, r6, #0x1f - add r0, sp, #4 - bic r5, r1, #0x1f - bl FS_InitFile - ldr r2, [r7, #0x2c] - mvn r0, #0 - str r0, [sp] - ldr r3, [r7, #0x30] - add r0, sp, #4 - mov r1, r7 - add r3, r2, r3 - bl FS_OpenFileDirect - cmp r0, #0 - beq _020D7C94 - ldr r2, [r7, #0x30] - add r0, sp, #4 - mov r1, r5 - bl FS_ReadFile - cmp r0, #0 - bge _020D7C8C - ldr r2, [r7, #0x30] - mov r0, r5 - mov r1, #0 - bl MI_CpuFill8 -_020D7C8C: - add r0, sp, #4 - bl FS_CloseFile -_020D7C94: - str r5, [r7, #0x2c] - ldr ip, [r7, #0x30] - ldr r2, [r7, #0x34] - mvn r0, #0 - str r0, [sp] - ldr r3, [r7, #0x38] - add r0, sp, #4 - mov r1, r7 - add r3, r2, r3 - add r5, r5, ip - bl FS_OpenFileDirect - cmp r0, #0 - beq _020D7CF8 - ldr r2, [r7, #0x38] - add r0, sp, #4 - mov r1, r5 - bl FS_ReadFile - cmp r0, #0 - bge _020D7CF0 - ldr r2, [r7, #0x38] - mov r0, r5 - mov r1, #0 - bl MI_CpuFill8 -_020D7CF0: - add r0, sp, #4 - bl FS_CloseFile -_020D7CF8: - str r5, [r7, #0x34] - ldr r0, _020D7D20 ; =FSi_ReadMemoryCore - str r6, [r7, #0x44] - str r0, [r7, #0x50] - ldr r0, [r7, #0x1c] - orr r0, r0, #4 - str r0, [r7, #0x1c] -_020D7D14: - mov r0, r4 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_020D7D20: .word FSi_ReadMemoryCore - arm_func_end FS_LoadArchiveTables - - arm_func_start FS_UnloadArchiveTables -FS_UnloadArchiveTables: ; 0x020D7D24 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x1c] - mov r4, #0 - tst r0, #2 - movne r0, #1 - moveq r0, r4 - cmp r0, #0 - beq _020D7DA8 - mov r0, r5 - bl FS_SuspendArchive - ldr r1, [r5, #0x1c] - tst r1, #4 - movne r1, #1 - moveq r1, #0 - cmp r1, #0 - beq _020D7D98 - ldr r2, [r5, #0x1c] - mov r1, #0 - bic r2, r2, #4 - str r2, [r5, #0x1c] - ldr r4, [r5, #0x44] - str r1, [r5, #0x44] - ldr r1, [r5, #0x3c] - str r1, [r5, #0x2c] - ldr r1, [r5, #0x40] - str r1, [r5, #0x34] - ldr r1, [r5, #0x48] - str r1, [r5, #0x50] -_020D7D98: - cmp r0, #0 - beq _020D7DA8 - mov r0, r5 - bl FS_ResumeArchive -_020D7DA8: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FS_UnloadArchiveTables - - arm_func_start FS_SuspendArchive -FS_SuspendArchive: ; 0x020D7DB0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - bl OS_DisableInterrupts - ldr r1, [r6, #0x1c] - mov r4, r0 - tst r1, #8 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - moveq r5, #1 - movne r5, #0 - cmp r5, #0 - beq _020D7E3C - ldr r0, [r6, #0x1c] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - ldr r0, [r6, #0x1c] - beq _020D7E34 - orr r0, r0, #0x40 - str r0, [r6, #0x1c] - mov r7, #0 - mov r8, #1 -_020D7E10: - add r0, r6, #0x14 - bl OS_SleepThread - ldr r0, [r6, #0x1c] - tst r0, #0x40 - movne r0, r8 - moveq r0, r7 - cmp r0, #0 - bne _020D7E10 - b _020D7E3C -_020D7E34: - orr r0, r0, #8 - str r0, [r6, #0x1c] -_020D7E3C: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end FS_SuspendArchive - - arm_func_start FS_ResumeArchive -FS_ResumeArchive: ; 0x020D7E4C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - mov r5, #0 - bl OS_DisableInterrupts - ldr r1, [r4, #0x1c] - mov r6, r0 - tst r1, #8 - movne r0, #1 - moveq r0, r5 - cmp r0, #0 - moveq r7, #1 - movne r7, #0 - cmp r7, #0 - bne _020D7E9C - ldr r1, [r4, #0x1c] - mov r0, r4 - bic r1, r1, #8 - str r1, [r4, #0x1c] - bl FSi_NextCommand - mov r5, r0 -_020D7E9C: - mov r0, r6 - bl OS_RestoreInterrupts - cmp r5, #0 - beq _020D7EB4 - mov r0, r5 - bl FSi_ExecuteAsyncCommand -_020D7EB4: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end FS_ResumeArchive - - arm_func_start FS_SetArchiveProc -FS_SetArchiveProc: ; 0x020D7EBC - cmp r2, #0 - moveq r1, #0 - beq _020D7ED0 - cmp r1, #0 - moveq r2, #0 -_020D7ED0: - str r1, [r0, #0x54] - str r2, [r0, #0x58] - bx lr - arm_func_end FS_SetArchiveProc - - arm_func_start FS_NotifyArchiveAsyncEnd -FS_NotifyArchiveAsyncEnd: ; 0x020D7EDC - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - ldr r0, [r4, #0x1c] - mov r6, r1 - tst r0, #0x100 - movne r0, #1 - moveq r0, #0 - cmp r0, #0 - beq _020D7F30 - ldr r1, [r4, #0x1c] - ldr r0, [r4, #0x24] - bic r2, r1, #0x100 - mov r1, r6 - str r2, [r4, #0x1c] - bl FSi_ReleaseCommand - mov r0, r4 - bl FSi_NextCommand - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl FSi_ExecuteAsyncCommand - ldmia sp!, {r4, r5, r6, pc} -_020D7F30: - ldr r5, [r4, #0x24] - bl OS_DisableInterrupts - str r6, [r5, #0x14] - ldr r1, [r4, #0x1c] - mov r5, r0 - bic r1, r1, #0x200 - add r0, r4, #0xc - str r1, [r4, #0x1c] - bl OS_WakeupThread - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, pc} - arm_func_end FS_NotifyArchiveAsyncEnd - - arm_func_start FS_Init -FS_Init: ; 0x020D7F60 - stmdb sp!, {r3, lr} - ldr r1, _020D7F84 ; =_021E3638 - ldr r2, [r1] - cmp r2, #0 - ldmneia sp!, {r3, pc} - mov r2, #1 - str r2, [r1] - bl FSi_InitRom - ldmia sp!, {r3, pc} - .align 2, 0 -_020D7F84: .word _021E3638 - arm_func_end FS_Init - - arm_func_start FS_IsAvailable -FS_IsAvailable: ; 0x020D7F88 - ldr r0, _020D7F94 ; =_021E3638 - ldr r0, [r0] - bx lr - .align 2, 0 -_020D7F94: .word _021E3638 - arm_func_end FS_IsAvailable - - arm_func_start FS_InitFile -FS_InitFile: ; 0x020D7F98 - mov r2, #0 - str r2, [r0] - str r2, [r0, #4] - str r2, [r0, #0x1c] - str r2, [r0, #0x18] - str r2, [r0, #8] - mov r1, #0xe - str r1, [r0, #0x10] - str r2, [r0, #0xc] - bx lr - arm_func_end FS_InitFile - - arm_func_start FSi_FindPath -FSi_FindPath: ; 0x020D7FC0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r7, r1 - ldrb r1, [r7] - mov r8, r0 - mov r6, r2 - cmp r1, #0x2f - mov r5, r3 - cmpne r1, #0x5c - bne _020D800C - ldr r0, _020D8100 ; =_021E362C - mov r1, #0 - ldr r0, [r0] - strh r1, [sp, #4] - str r0, [sp] - str r1, [sp, #8] - strh r1, [sp, #6] - add r7, r7, #1 - b _020D80B0 -_020D800C: - ldr r0, _020D8100 ; =_021E362C - add r3, sp, #0 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r4, #0 -_020D8020: - ldrb r0, [r7, r4] - cmp r0, #0 - cmpne r0, #0x2f - cmpne r0, #0x5c - beq _020D80B0 - cmp r0, #0x3a - bne _020D80A4 - mov r0, r7 - mov r1, r4 - bl FS_FindArchive - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r1, [r0, #0x1c] - tst r1, #2 - movne r1, #1 - moveq r1, #0 - cmp r1, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r1, #0 - str r0, [sp] - str r1, [sp, #8] - strh r1, [sp, #6] - strh r1, [sp, #4] - add r0, r4, #1 - ldrb r0, [r7, r0]! - cmp r0, #0x2f - cmpne r0, #0x5c - addeq r7, r7, #1 - b _020D80B0 -_020D80A4: - add r4, r4, #1 - cmp r4, #3 - ble _020D8020 -_020D80B0: - ldr r1, [sp] - add r0, sp, #0 - str r1, [r8, #8] - str r7, [r8, #0x3c] - add r3, r8, #0x30 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - cmp r5, #0 - moveq r0, #0 - streq r0, [r8, #0x40] - streq r6, [r8, #0x44] - beq _020D80EC - mov r0, #1 - str r0, [r8, #0x40] - str r5, [r8, #0x44] -_020D80EC: - mov r0, r8 - mov r1, #4 - bl FSi_SendCommand - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020D8100: .word _021E362C - arm_func_end FSi_FindPath - - arm_func_start FSi_ReadFileCore -FSi_ReadFileCore: ; 0x020D8104 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r4, [r7, #0x2c] - ldr r0, [r7, #0x28] - mov r6, r2 - str r1, [r7, #0x30] - sub r0, r0, r4 - cmp r6, r0 - movgt r6, r0 - cmp r6, #0 - movlt r6, #0 - str r2, [r7, #0x34] - mov r5, r3 - str r6, [r7, #0x38] - cmp r5, #0 - ldreq r0, [r7, #0xc] - mov r1, #0 - orreq r0, r0, #4 - streq r0, [r7, #0xc] - mov r0, r7 - bl FSi_SendCommand - cmp r5, #0 - bne _020D8178 - mov r0, r7 - bl FS_WaitAsync - cmp r0, #0 - ldrne r0, [r7, #0x2c] - subne r6, r0, r4 - mvneq r6, #0 -_020D8178: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end FSi_ReadFileCore - - arm_func_start FS_ConvertPathToFileID -FS_ConvertPathToFileID: ; 0x020D8180 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x48 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl FS_InitFile - add r0, sp, #0 - mov r1, r4 - mov r2, r5 - mov r3, #0 - bl FSi_FindPath - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FS_ConvertPathToFileID - - arm_func_start FS_OpenFileDirect -FS_OpenFileDirect: ; 0x020D81C0 - stmdb sp!, {r4, lr} - mov r4, r0 - str r1, [r4, #8] - ldr ip, [sp, #8] - mov r1, #7 - str ip, [r4, #0x38] - str r2, [r4, #0x30] - str r3, [r4, #0x34] - bl FSi_SendCommand - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0xc] - mov r0, #1 - orr r1, r1, #0x10 - bic r1, r1, #0x20 - str r1, [r4, #0xc] - ldmia sp!, {r4, pc} - arm_func_end FS_OpenFileDirect - - arm_func_start FS_OpenFileFast -FS_OpenFileFast: ; 0x020D8208 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - ldr r1, [sp, #0xc] - mov r4, r0 - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, lr} - addeq sp, sp, #0x10 - bxeq lr - str r1, [r4, #8] - str r1, [r4, #0x30] - ldr r2, [sp, #0x10] - mov r1, #6 - str r2, [r4, #0x34] - bl FSi_SendCommand - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r1, [r4, #0xc] - mov r0, #1 - orr r1, r1, #0x10 - bic r1, r1, #0x20 - str r1, [r4, #0xc] - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - arm_func_end FS_OpenFileFast - - arm_func_start FS_OpenFile -FS_OpenFile: ; 0x020D8278 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - add r0, sp, #0 - bl FS_ConvertPathToFileID - cmp r0, #0 - beq _020D82B4 - add r1, sp, #0 - mov r0, r4 - ldmia r1, {r1, r2} - bl FS_OpenFileFast - cmp r0, #0 - addne sp, sp, #8 - movne r0, #1 - ldmneia sp!, {r4, pc} -_020D82B4: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end FS_OpenFile - - arm_func_start FS_CloseFile -FS_CloseFile: ; 0x020D82C0 - stmdb sp!, {r4, lr} - mov r1, #8 - mov r4, r0 - bl FSi_SendCommand - cmp r0, #0 - mov r0, #0 - ldmeqia sp!, {r4, pc} - str r0, [r4, #8] - mov r0, #0xe - str r0, [r4, #0x10] - ldr r1, [r4, #0xc] - mov r0, #1 - bic r1, r1, #0x30 - str r1, [r4, #0xc] - ldmia sp!, {r4, pc} - arm_func_end FS_CloseFile - - arm_func_start FS_WaitAsync -FS_WaitAsync: ; 0x020D82FC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - mov r5, #0 - bl OS_DisableInterrupts - ldr r1, [r6, #0xc] - mov r4, r0 - tst r1, #1 - movne r0, #1 - moveq r0, r5 - cmp r0, #0 - beq _020D838C - ldr r0, [r6, #0xc] - tst r0, #0x44 - moveq r5, #1 - movne r5, #0 - cmp r5, #0 - beq _020D8364 - ldr r0, [r6, #0xc] - orr r0, r0, #4 - str r0, [r6, #0xc] -_020D834C: - add r0, r6, #0x18 - bl OS_SleepThread - ldr r0, [r6, #0xc] - tst r0, #0x40 - beq _020D834C - b _020D838C -_020D8364: - mov r7, #0 - mov r8, #1 -_020D836C: - add r0, r6, #0x18 - bl OS_SleepThread - ldr r0, [r6, #0xc] - tst r0, #1 - movne r0, r8 - moveq r0, r7 - cmp r0, #0 - bne _020D836C -_020D838C: - mov r0, r4 - bl OS_RestoreInterrupts - cmp r5, #0 - beq _020D83A8 - mov r0, r6 - bl FSi_ExecuteSyncCommand - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D83A8: - ldr r0, [r6, #0x14] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end FS_WaitAsync - - arm_func_start FS_ReadFileAsync -FS_ReadFileAsync: ; 0x020D83BC - ldr ip, _020D83C8 ; =FSi_ReadFileCore - mov r3, #1 - bx ip - .align 2, 0 -_020D83C8: .word FSi_ReadFileCore - arm_func_end FS_ReadFileAsync - - arm_func_start FS_ReadFile -FS_ReadFile: ; 0x020D83CC - ldr ip, _020D83D8 ; =FSi_ReadFileCore - mov r3, #0 - bx ip - .align 2, 0 -_020D83D8: .word FSi_ReadFileCore - arm_func_end FS_ReadFile - - arm_func_start FS_SeekFile -FS_SeekFile: ; 0x020D83DC - cmp r2, #0 - beq _020D83F8 - cmp r2, #1 - beq _020D8404 - cmp r2, #2 - beq _020D8410 - b _020D841C -_020D83F8: - ldr r2, [r0, #0x24] - add r1, r1, r2 - b _020D8424 -_020D8404: - ldr r2, [r0, #0x2c] - add r1, r1, r2 - b _020D8424 -_020D8410: - ldr r2, [r0, #0x28] - add r1, r1, r2 - b _020D8424 -_020D841C: - mov r0, #0 - bx lr -_020D8424: - ldr r2, [r0, #0x24] - cmp r1, r2 - movlt r1, r2 - ldr r2, [r0, #0x28] - cmp r1, r2 - movgt r1, r2 - str r1, [r0, #0x2c] - mov r0, #1 - bx lr - arm_func_end FS_SeekFile - - arm_func_start FS_ChangeDir -FS_ChangeDir: ; 0x020D8448 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x54 - mov r4, r0 - add r0, sp, #0xc - bl FS_InitFile - add r0, sp, #0xc - add r3, sp, #0 - mov r1, r4 - mov r2, #0 - bl FSi_FindPath - cmp r0, #0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r3, _020D849C ; =_021E362C - add r0, sp, #0 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, #1 - add sp, sp, #0x54 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020D849C: .word _021E362C - arm_func_end FS_ChangeDir - - arm_func_start FSi_OnRomReadDone -FSi_OnRomReadDone: ; 0x020D84A0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl CARD_IsPulledOut - cmp r0, #0 - movne r1, #5 - moveq r1, #0 - mov r0, r4 - bl FS_NotifyArchiveAsyncEnd - ldmia sp!, {r4, pc} - arm_func_end FSi_OnRomReadDone - - arm_func_start FSi_ReadRomCallback -FSi_ReadRomCallback: ; 0x020D84C4 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr ip, _020D8504 ; =FSi_OnRomReadDone - mov lr, r1 - str ip, [sp] - str r0, [sp, #4] - mov r1, #1 - ldr r0, _020D8508 ; =_021E363C - str r1, [sp, #8] - mov r1, r2 - ldr r0, [r0, #4] - mov r2, lr - bl CARDi_ReadRom - mov r0, #6 - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_020D8504: .word FSi_OnRomReadDone -_020D8508: .word _021E363C - arm_func_end FSi_ReadRomCallback - - arm_func_start FSi_WriteDummyCallback -FSi_WriteDummyCallback: ; 0x020D850C - mov r0, #1 - bx lr - arm_func_end FSi_WriteDummyCallback - - arm_func_start FSi_RomArchiveProc -FSi_RomArchiveProc: ; 0x020D8514 - stmdb sp!, {r3, lr} - cmp r1, #1 - beq _020D856C - cmp r1, #9 - beq _020D8534 - cmp r1, #0xa - beq _020D8550 - b _020D8574 -_020D8534: - ldr r0, _020D857C ; =_021E363C - ldr r0, [r0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl CARD_LockRom - mov r0, #0 - ldmia sp!, {r3, pc} -_020D8550: - ldr r0, _020D857C ; =_021E363C - ldr r0, [r0] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl CARD_UnlockRom - mov r0, #0 - ldmia sp!, {r3, pc} -_020D856C: - mov r0, #4 - ldmia sp!, {r3, pc} -_020D8574: - mov r0, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020D857C: .word _021E363C - arm_func_end FSi_RomArchiveProc - - arm_func_start FSi_ReadDummyCallback -FSi_ReadDummyCallback: ; 0x020D8580 - mov r0, #1 - bx lr - arm_func_end FSi_ReadDummyCallback - - arm_func_start FSi_EmptyArchiveProc -FSi_EmptyArchiveProc: ; 0x020D8588 - mov r0, #4 - bx lr - arm_func_end FSi_EmptyArchiveProc - - arm_func_start FSi_InitRom -FSi_InitRom: ; 0x020D8590 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, _020D86B0 ; =_021E363C - str r0, [r1, #4] - bl OS_GetLockID - ldr r1, _020D86B0 ; =_021E363C - mov r2, #0 - str r0, [r1] - str r2, [r1, #8] - str r2, [r1, #0xc] - str r2, [r1, #0x10] - str r2, [r1, #0x14] - bl CARD_Init - ldr r0, _020D86B4 ; =_021E3654 - bl FS_InitArchive - ldr r0, _020D86B4 ; =_021E3654 - ldr r1, _020D86B8 ; =_02110C9C - mov r2, #3 - bl FS_RegisterArchiveName - ldr r4, _020D86BC ; =0x027FFC40 - ldrh r0, [r4] - cmp r0, #2 - bne _020D8648 - ldr r3, _020D86B0 ; =_021E363C - mvn r2, #0 - str r2, [r3, #8] - mov ip, #0 - str ip, [r3, #0xc] - str r2, [r3, #0x10] - ldr r0, _020D86B4 ; =_021E3654 - ldr r1, _020D86C0 ; =FSi_EmptyArchiveProc - str ip, [r3, #0x14] - bl FS_SetArchiveProc - mov r1, #0 - str r1, [sp] - ldr r0, _020D86C4 ; =FSi_ReadDummyCallback - str r1, [sp, #4] - str r0, [sp, #8] - ldr ip, _020D86C8 ; =FSi_WriteDummyCallback - ldr r0, _020D86B4 ; =_021E3654 - mov r2, r1 - mov r3, r1 - str ip, [sp, #0xc] - bl FS_LoadArchive - add sp, sp, #0x10 - ldmia sp!, {r4, pc} -_020D8648: - ldr r0, _020D86B4 ; =_021E3654 - ldr r1, _020D86CC ; =FSi_RomArchiveProc - ldr r2, _020D86D0 ; =0x00000602 - bl FS_SetArchiveProc - ldr r1, [r4, #0x200] - mvn r0, #0 - cmp r1, r0 - cmpne r1, #0 - ldrne r2, [r4, #0x208] - cmpne r2, r0 - cmpne r2, #0 - addeq sp, sp, #0x10 - ldmeqia sp!, {r4, pc} - str r1, [sp] - ldr r0, [r4, #0x204] - ldr r1, _020D86D4 ; =FSi_ReadRomCallback - str r0, [sp, #4] - ldr r0, _020D86C8 ; =FSi_WriteDummyCallback - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r3, [r4, #0x20c] - ldr r0, _020D86B4 ; =_021E3654 - mov r1, #0 - bl FS_LoadArchive - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_020D86B0: .word _021E363C -_020D86B4: .word _021E3654 -_020D86B8: .word _02110C9C -_020D86BC: .word 0x027FFC40 -_020D86C0: .word FSi_EmptyArchiveProc -_020D86C4: .word FSi_ReadDummyCallback -_020D86C8: .word FSi_WriteDummyCallback -_020D86CC: .word FSi_RomArchiveProc -_020D86D0: .word 0x00000602 -_020D86D4: .word FSi_ReadRomCallback - arm_func_end FSi_InitRom - - arm_func_start FS_SetDefaultDMA -FS_SetDefaultDMA: ; 0x020D86D8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, _020D8720 ; =_021E363C - ldr r0, _020D8724 ; =_021E3654 - ldr r5, [r1, #4] - bl FS_SuspendArchive - ldr r1, _020D8720 ; =_021E363C - cmp r0, #0 - str r6, [r1, #4] - beq _020D8710 - ldr r0, _020D8724 ; =_021E3654 - bl FS_ResumeArchive -_020D8710: - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D8720: .word _021E363C -_020D8724: .word _021E3654 - arm_func_end FS_SetDefaultDMA - - arm_func_start FS_TryLoadTable -FS_TryLoadTable: ; 0x020D8728 - ldr ip, _020D8740 ; =FS_LoadArchiveTables - mov r3, r0 - mov r2, r1 - ldr r0, _020D8744 ; =_021E3654 - mov r1, r3 - bx ip - .align 2, 0 -_020D8740: .word FS_LoadArchiveTables -_020D8744: .word _021E3654 - arm_func_end FS_TryLoadTable - - arm_func_start FSi_GetOverlayBinarySize -FSi_GetOverlayBinarySize: ; 0x020D8748 - ldr r1, [r0, #0x1c] - mov r2, r1, lsr #0x18 - tst r2, #1 - movne r0, r1, lsl #8 - movne r0, r0, lsr #8 - ldreq r0, [r0, #8] - bx lr - arm_func_end FSi_GetOverlayBinarySize - - arm_func_start FS_ClearOverlayImage -FS_ClearOverlayImage: ; 0x020D8764 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, [r0, #0xc] - ldmib r0, {r4, r5} - add r6, r5, r1 - mov r0, r4 - mov r1, r6 - bl IC_InvalidateRange - mov r0, r4 - mov r1, r6 - bl DC_InvalidateRange - add r0, r4, r5 - sub r2, r6, r5 - mov r1, #0 - bl MI_CpuFill8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end FS_ClearOverlayImage - - arm_func_start FS_GetOverlayFileID -FS_GetOverlayFileID: ; 0x020D87A0 - sub sp, sp, #8 - ldr r1, [r1, #0x18] - ldr r2, _020D87C4 ; =_021E3654 - str r1, [sp, #4] - str r2, [r0] - str r2, [sp] - str r1, [r0, #4] - add sp, sp, #8 - bx lr - .align 2, 0 -_020D87C4: .word _021E3654 - arm_func_end FS_GetOverlayFileID - - arm_func_start FSi_LoadOverlayInfoCore -FSi_LoadOverlayInfoCore: ; 0x020D87C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x54 - movs sb, r1 - ldreq r7, [sp, #0x74] - ldreq r6, [sp, #0x70] - ldrne r7, [sp, #0x7c] - ldrne r6, [sp, #0x78] - cmp r7, r2, lsl #5 - mov r4, r0 - mov r8, r3 - mov r5, r2, lsl #5 - addls sp, sp, #0x54 - movls r0, #0 - ldmlsia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r0, sp, #0xc - bl FS_InitFile - mvn ip, #0 - add r0, sp, #0xc - mov r1, r8 - add r2, r6, r5 - add r3, r6, r7 - str ip, [sp] - bl FS_OpenFileDirect - cmp r0, #0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r0, sp, #0xc - mov r1, r4 - mov r2, #0x20 - bl FS_ReadFile - cmp r0, #0x20 - add r0, sp, #0xc - beq _020D8860 - bl FS_CloseFile - add sp, sp, #0x54 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020D8860: - bl FS_CloseFile - add r0, sp, #4 - mov r1, r4 - str sb, [r4, #0x20] - bl FS_GetOverlayFileID - add r1, sp, #4 - add r0, sp, #0xc - ldmia r1, {r1, r2} - bl FS_OpenFileFast - cmp r0, #0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r1, [sp, #0x30] - add r0, sp, #0xc - str r1, [r4, #0x24] - ldr r2, [sp, #0x34] - ldr r1, [sp, #0x30] - sub r1, r2, r1 - str r1, [r4, #0x28] - bl FS_CloseFile - mov r0, #1 - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end FSi_LoadOverlayInfoCore - - arm_func_start FS_LoadOverlayInfo -FS_LoadOverlayInfo: ; 0x020D88C0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x60 - movs r4, r1 - mov r5, r0 - ldreq r0, _020D89AC ; =_021E3644 - ldrne r0, _020D89B0 ; =_021E364C - ldr ip, [r0] - cmp ip, #0 - beq _020D8970 - ldr r0, [r0, #4] - mov r3, r2, lsl #5 - cmp r0, r2, lsl #5 - addls sp, sp, #0x60 - movls r0, #0 - ldmlsia sp!, {r3, r4, r5, pc} - mov r1, r5 - add r0, ip, r3 - mov r2, #0x20 - bl MI_CpuCopy8 - add r0, sp, #0x18 - str r4, [r5, #0x20] - bl FS_InitFile - add r0, sp, #0x10 - mov r1, r5 - bl FS_GetOverlayFileID - add r1, sp, #0x10 - add r0, sp, #0x18 - ldmia r1, {r1, r2} - bl FS_OpenFileFast - cmp r0, #0 - addeq sp, sp, #0x60 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [sp, #0x3c] - add r0, sp, #0x18 - str r1, [r5, #0x24] - ldr r2, [sp, #0x40] - ldr r1, [sp, #0x3c] - sub r1, r2, r1 - str r1, [r5, #0x28] - bl FS_CloseFile - add sp, sp, #0x60 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_020D8970: - ldr ip, _020D89B4 ; =0x027FFE50 - ldr r3, _020D89B8 ; =_021E3654 - ldr r1, [ip] - mov r0, r5 - str r1, [sp] - ldr r5, [ip, #4] - mov r1, r4 - str r5, [sp, #4] - ldr r4, [ip, #8] - str r4, [sp, #8] - ldr r4, [ip, #0xc] - str r4, [sp, #0xc] - bl FSi_LoadOverlayInfoCore - add sp, sp, #0x60 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D89AC: .word _021E3644 -_020D89B0: .word _021E364C -_020D89B4: .word 0x027FFE50 -_020D89B8: .word _021E3654 - arm_func_end FS_LoadOverlayInfo - - arm_func_start FS_LoadOverlayImageAsync -FS_LoadOverlayImageAsync: ; 0x020D89BC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl FS_InitFile - add r0, sp, #0 - mov r1, r6 - bl FS_GetOverlayFileID - add r1, sp, #0 - mov r0, r5 - ldmia r1, {r1, r2} - bl FS_OpenFileFast - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl FSi_GetOverlayBinarySize - mov r4, r0 - mov r0, r6 - bl FS_ClearOverlayImage - ldr r1, [r6, #4] - mov r0, r5 - mov r2, r4 - bl FS_ReadFileAsync - cmp r4, r0 - addeq sp, sp, #8 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl FS_CloseFile - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end FS_LoadOverlayImageAsync - - arm_func_start FS_LoadOverlayImage -FS_LoadOverlayImage: ; 0x020D8A48 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x50 - mov r5, r0 - add r0, sp, #8 - bl FS_InitFile - add r0, sp, #0 - mov r1, r5 - bl FS_GetOverlayFileID - add r1, sp, #0 - add r0, sp, #8 - ldmia r1, {r1, r2} - bl FS_OpenFileFast - cmp r0, #0 - addeq sp, sp, #0x50 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl FSi_GetOverlayBinarySize - mov r4, r0 - mov r0, r5 - bl FS_ClearOverlayImage - ldr r1, [r5, #4] - add r0, sp, #8 - mov r2, r4 - bl FS_ReadFile - cmp r4, r0 - add r0, sp, #8 - beq _020D8AC8 - bl FS_CloseFile - add sp, sp, #0x50 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_020D8AC8: - bl FS_CloseFile - mov r0, #1 - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FS_LoadOverlayImage - - arm_func_start FSi_CompareDigest -FSi_CompareDigest: ; 0x020D8AD8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x58 - mov r4, r0 - mov r6, r1 - mov r5, r2 - add r0, sp, #0x44 - mov r1, #0 - mov r2, #0x14 - bl MI_CpuFill8 - ldr r2, _020D8B68 ; =_02110CA0 - add r1, sp, #4 - ldmia r2, {r0, r2} - bl MI_CpuCopy8 - ldr r3, _020D8B68 ; =_02110CA0 - mov r1, r6 - ldr ip, [r3, #4] - mov r2, r5 - add r0, sp, #0x44 - add r3, sp, #4 - str ip, [sp] - bl DGT_Hash2CalcHmac - add r3, sp, #0x44 - mov r2, #0 -_020D8B34: - ldr r1, [r3] - ldr r0, [r4, r2] - cmp r1, r0 - bne _020D8B54 - add r2, r2, #4 - cmp r2, #0x14 - add r3, r3, #4 - blo _020D8B34 -_020D8B54: - cmp r2, #0x14 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020D8B68: .word _02110CA0 - arm_func_end FSi_CompareDigest - - arm_func_start FS_StartOverlay -FS_StartOverlay: ; 0x020D8B6C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl FSi_GetOverlayBinarySize - ldr r1, _020D8C50 ; =0x027FFC40 - mov r4, r0 - ldrh r0, [r1] - cmp r0, #2 - bne _020D8BFC - ldr r1, [r5, #0x1c] - mov r0, #0 - mov r1, r1, lsr #0x18 - tst r1, #2 - beq _020D8BDC - ldr r1, _020D8C54 ; =SDK_OVERLAY_DIGEST_END - ldr r3, _020D8C58 ; =SDK_OVERLAY_DIGEST - ldr r2, _020D8C5C ; =0x66666667 - sub ip, r1, r3 - smull r1, lr, r2, ip - mov r1, ip, lsr #0x1f - ldr r2, [r5] - add lr, r1, lr, asr #3 - cmp r2, lr - bhs _020D8BDC - mov r0, #0x14 - mla r0, r2, r0, r3 - ldr r1, [r5, #4] - mov r2, r4 - bl FSi_CompareDigest -_020D8BDC: - cmp r0, #0 - bne _020D8BFC - ldr r0, [r5, #4] - mov r2, r4 - mov r1, #0 - bl MI_CpuFill8 - bl OS_Terminate - ldmia sp!, {r3, r4, r5, pc} -_020D8BFC: - ldr r0, [r5, #0x1c] - mov r0, r0, lsr #0x18 - tst r0, #1 - beq _020D8C18 - ldr r0, [r5, #4] - add r0, r0, r4 - bl MIi_UncompressBackward -_020D8C18: - ldmib r5, {r0, r1} - bl DC_FlushRange - ldr r4, [r5, #0x10] - ldr r5, [r5, #0x14] - cmp r4, r5 - ldmhsia sp!, {r3, r4, r5, pc} -_020D8C30: - ldr r0, [r4] - cmp r0, #0 - beq _020D8C40 - blx r0 -_020D8C40: - add r4, r4, #4 - cmp r4, r5 - blo _020D8C30 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D8C50: .word 0x027FFC40 -_020D8C54: .word SDK_OVERLAY_DIGEST_END -_020D8C58: .word SDK_OVERLAY_DIGEST -_020D8C5C: .word 0x66666667 - arm_func_end FS_StartOverlay - - arm_func_start FS_EndOverlay -FS_EndOverlay: ; 0x020D8C60 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 -_020D8C68: - ldr r1, [fp, #8] - ldr r0, [fp, #0xc] - mov r4, #0 - ldr r6, [fp, #4] - add r0, r1, r0 - mov r5, r4 - add r7, r6, r0 - bl OS_DisableInterrupts - ldr r1, _020D8D4C ; =__global_destructor_chain - mov ip, r4 - ldr lr, [r1] - mov r8, lr - cmp lr, #0 - beq _020D8D14 - mov r2, r4 -_020D8CA4: - ldr sl, [r8, #8] - ldr sb, [r8] - cmp sl, #0 - ldr r3, [r8, #4] - bne _020D8CC8 - cmp r3, r6 - blo _020D8CC8 - cmp r3, r7 - blo _020D8CD8 -_020D8CC8: - cmp sl, r6 - blo _020D8D04 - cmp sl, r7 - bhs _020D8D04 -_020D8CD8: - cmp r5, #0 - strne r8, [r5] - moveq r4, r8 - cmp lr, r8 - streq sb, [r1] - moveq lr, sb - str r2, [r8] - cmp ip, #0 - mov r5, r8 - strne sb, [ip] - b _020D8D08 -_020D8D04: - mov ip, r8 -_020D8D08: - mov r8, sb - cmp sb, #0 - bne _020D8CA4 -_020D8D14: - bl OS_RestoreInterrupts - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D8D20: - ldr r1, [r4, #4] - ldr r5, [r4] - cmp r1, #0 - beq _020D8D38 - ldr r0, [r4, #8] - blx r1 -_020D8D38: - mov r4, r5 - cmp r5, #0 - bne _020D8D20 - b _020D8C68 -_020D8D48: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020D8D4C: .word __global_destructor_chain - arm_func_end FS_EndOverlay - - arm_func_start FS_UnloadOverlayImage -FS_UnloadOverlayImage: ; 0x020D8D50 - stmdb sp!, {r3, lr} - bl FS_EndOverlay - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end FS_UnloadOverlayImage - - arm_func_start FS_LoadOverlay -FS_LoadOverlay: ; 0x020D8D60 - stmdb sp!, {lr} - sub sp, sp, #0x2c - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl FS_LoadOverlayInfo - cmp r0, #0 - beq _020D8D94 - add r0, sp, #0 - bl FS_LoadOverlayImage - cmp r0, #0 - bne _020D8DA0 -_020D8D94: - add sp, sp, #0x2c - mov r0, #0 - ldmia sp!, {pc} -_020D8DA0: - add r0, sp, #0 - bl FS_StartOverlay - mov r0, #1 - add sp, sp, #0x2c - ldmia sp!, {pc} - arm_func_end FS_LoadOverlay - - arm_func_start FS_UnloadOverlay -FS_UnloadOverlay: ; 0x020D8DB4 - stmdb sp!, {lr} - sub sp, sp, #0x2c - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl FS_LoadOverlayInfo - cmp r0, #0 - beq _020D8DE8 - add r0, sp, #0 - bl FS_UnloadOverlayImage - cmp r0, #0 - bne _020D8DF4 -_020D8DE8: - add sp, sp, #0x2c - mov r0, #0 - ldmia sp!, {pc} -_020D8DF4: - mov r0, #1 - add sp, sp, #0x2c - ldmia sp!, {pc} - arm_func_end FS_UnloadOverlay - - arm_func_start DGT_Hash1Reset -DGT_Hash1Reset: ; 0x020D8E00 - ldr r2, _020D8E30 ; =0x67452301 - ldr r1, _020D8E34 ; =0xEFCDAB89 - str r2, [r0] - ldr r2, _020D8E38 ; =0x98BADCFE - str r1, [r0, #4] - ldr r1, _020D8E3C ; =0x10325476 - str r2, [r0, #8] - str r1, [r0, #0xc] - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0x14] - bx lr - .align 2, 0 -_020D8E30: .word 0x67452301 -_020D8E34: .word 0xEFCDAB89 -_020D8E38: .word 0x98BADCFE -_020D8E3C: .word 0x10325476 - arm_func_end DGT_Hash1Reset - - arm_func_start DGT_Hash1SetSource -DGT_Hash1SetSource: ; 0x020D8E40 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldr r3, [r6, #0x10] - mov r4, r2 - and ip, r3, #0x3f - ldr r0, [r6, #0x14] - adds r3, r3, r4 - str r3, [r6, #0x10] - adc r0, r0, #0 - rsb r7, ip, #0x40 - mov r5, r1 - str r0, [r6, #0x14] - cmp r7, r4 - bls _020D8E94 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r1, r6, #0x18 - mov r0, r5 - add r1, r1, ip - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020D8E94: - add r1, r6, #0x18 - mov r0, r5 - mov r2, r7 - add r1, r1, ip - bl MI_CpuCopy8 - mov r0, r6 - bl ProcessBlock - sub r4, r4, r7 - mov r8, r4, lsr #6 - cmp r8, #0 - add r7, r5, r7 - ble _020D8EF0 - mov r5, #0x40 -_020D8EC8: - mov r0, r7 - mov r2, r5 - add r1, r6, #0x18 - bl MI_CpuCopy8 - mov r0, r6 - add r7, r7, #0x40 - bl ProcessBlock - sub r8, r8, #1 - cmp r8, #0 - bgt _020D8EC8 -_020D8EF0: - ands r2, r4, #0x3f - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - add r1, r6, #0x18 - bl MI_CpuCopy8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end DGT_Hash1SetSource - - arm_func_start DGT_Hash1GetDigest_R -DGT_Hash1GetDigest_R: ; 0x020D8F08 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - ldr r1, [r4, #0x14] - ldr r3, [r4, #0x10] - mov r5, r0 - mov r6, r1, lsl #3 - ldr r1, _020D8FBC ; =_02110CA8 - mov r0, r4 - mov r2, #1 - orr r6, r6, r3, lsr #29 - mov r7, r3, lsl #3 - bl DGT_Hash1SetSource - ldr r0, [r4, #0x10] - mov r1, #0 - and r3, r0, #0x3f - rsb r2, r3, #0x40 - cmp r2, #8 - bhs _020D8F6C - add r0, r4, #0x18 - add r0, r0, r3 - bl MI_CpuFill8 - mov r0, r4 - bl ProcessBlock - mov r3, #0 - mov r2, #0x40 -_020D8F6C: - cmp r2, #8 - bls _020D8F88 - add r0, r4, #0x18 - add r0, r0, r3 - sub r2, r2, #8 - mov r1, #0 - bl MI_CpuFill8 -_020D8F88: - str r7, [r4, #0x50] - mov r0, r4 - str r6, [r4, #0x54] - bl ProcessBlock - mov r0, r4 - mov r1, r5 - mov r2, #0x10 - bl MI_CpuCopy8 - mov r0, r4 - mov r1, #0 - mov r2, #0x58 - bl MI_CpuFill8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D8FBC: .word _02110CA8 - arm_func_end DGT_Hash1GetDigest_R - - arm_func_start ProcessBlock -ProcessBlock: ; 0x020D8FC0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldmia r0, {r2, r3, ip, lr} - add r4, r0, #0x18 - ldr r5, _020D936C ; =_02110D6C - mov r7, r4 - mov r8, #0 -_020D8FD8: - mvn r1, r3 - and r6, r3, ip - and r1, r1, lr - orr r1, r6, r1 - ldr r6, [r7] - add r1, r2, r1 - ldr r2, [r5] - add r1, r6, r1 - add r2, r2, r1 - mov r1, r2, lsr #0x19 - orr r1, r1, r2, lsl #7 - add r2, r3, r1 - mvn r1, r2 - and r6, r2, r3 - and r1, r1, ip - orr r1, r6, r1 - ldr r6, [r7, #4] - add r1, lr, r1 - ldr sb, [r5, #4] - add r1, r6, r1 - add r6, sb, r1 - mov r1, r6, lsr #0x14 - orr r1, r1, r6, lsl #12 - add lr, r2, r1 - mvn r1, lr - and r6, lr, r2 - and r1, r1, r3 - orr r1, r6, r1 - ldr sb, [r7, #8] - add r6, ip, r1 - ldr r1, [r7, #0xc] - add sb, sb, r6 - ldr sl, [r5, #8] - ldr r6, [r5, #0xc] - add sl, sl, sb - mov sb, sl, lsr #0xf - orr sb, sb, sl, lsl #17 - add ip, lr, sb - add r5, r5, #0x10 - add r7, r7, #0x10 - and sl, ip, lr - mvn sb, ip - and sb, sb, r2 - orr sb, sl, sb - add r3, r3, sb - add r1, r1, r3 - add r3, r6, r1 - mov r1, r3, lsr #0xa - orr r1, r1, r3, lsl #22 - add r3, ip, r1 - add r8, r8, #1 - cmp r8, #4 - blt _020D8FD8 - ldr r1, _020D9370 ; =_02110CAC - mov r6, #0 -_020D90B4: - mvn r7, lr - ldr sb, [r1] - and r8, r3, lr - and r7, ip, r7 - orr r7, r8, r7 - ldr r8, [r4, sb, lsl #2] - add r2, r2, r7 - ldr r7, [r5] - add r2, r8, r2 - add r7, r7, r2 - mov r2, r7, lsr #0x1b - orr r2, r2, r7, lsl #5 - add r2, r3, r2 - mvn r8, ip - ldr r7, [r1, #4] - and sb, r2, ip - and r8, r3, r8 - orr sl, sb, r8 - mvn r8, r3 - ldr sb, [r1, #8] - ldr fp, [r4, r7, lsl #2] - add r7, lr, sl - add r7, fp, r7 - ldr sl, [r5, #4] - ldr sb, [r4, sb, lsl #2] - add sl, sl, r7 - ldr r7, [r1, #0xc] - and r8, r2, r8 - ldr r7, [r4, r7, lsl #2] - mov fp, sl, lsr #0x17 - orr sl, fp, sl, lsl #9 - add lr, r2, sl - ldr sl, [r5, #8] - and fp, lr, r3 - orr r8, fp, r8 - add r8, ip, r8 - add r8, sb, r8 - add sb, sl, r8 - mov r8, sb, lsr #0x12 - orr r8, r8, sb, lsl #14 - add ip, lr, r8 - mvn r8, r2 - and sb, lr, r8 - ldr r8, [r5, #0xc] - add r5, r5, #0x10 - add r1, r1, #0x10 - and sl, ip, r2 - orr sb, sl, sb - add r3, r3, sb - add r3, r7, r3 - add r7, r8, r3 - mov r3, r7, lsr #0xc - orr r3, r3, r7, lsl #20 - add r3, ip, r3 - add r6, r6, #1 - cmp r6, #4 - blt _020D90B4 - mov r6, #0 -_020D919C: - ldr r8, [r1] - eor r7, r3, ip - eor r7, lr, r7 - ldr r8, [r4, r8, lsl #2] - add r2, r2, r7 - ldr r7, [r5] - add r2, r8, r2 - add r7, r7, r2 - mov r2, r7, lsr #0x1c - orr r2, r2, r7, lsl #4 - add r2, r3, r2 - ldr r8, [r1, #4] - eor r7, r2, r3 - eor r7, ip, r7 - ldr r8, [r4, r8, lsl #2] - add r7, lr, r7 - ldr sb, [r1, #8] - ldr sl, [r5, #4] - add r7, r8, r7 - add r8, sl, r7 - mov r7, r8, lsr #0x15 - orr r7, r7, r8, lsl #11 - add lr, r2, r7 - eor r8, lr, r2 - ldr r7, [r1, #0xc] - ldr sb, [r4, sb, lsl #2] - eor r8, r3, r8 - add r8, ip, r8 - add sb, sb, r8 - ldr sl, [r5, #8] - ldr r8, [r4, r7, lsl #2] - add sb, sl, sb - mov r7, sb, lsr #0x10 - orr r7, r7, sb, lsl #16 - add ip, lr, r7 - eor r7, ip, lr - eor r7, r2, r7 - add r3, r3, r7 - add r3, r8, r3 - ldr r7, [r5, #0xc] - add r5, r5, #0x10 - add r7, r7, r3 - add r1, r1, #0x10 - mov r3, r7, lsr #9 - orr r3, r3, r7, lsl #23 - add r3, ip, r3 - add r6, r6, #1 - cmp r6, #4 - blt _020D919C - mov r8, #0 -_020D9264: - mvn r6, lr - ldr r7, [r1] - orr r6, r3, r6 - eor r6, ip, r6 - ldr r7, [r4, r7, lsl #2] - add r2, r2, r6 - ldr r6, [r5] - add r2, r7, r2 - add r6, r6, r2 - mov r2, r6, lsr #0x1a - orr r2, r2, r6, lsl #6 - add r2, r3, r2 - mvn r6, ip - ldr sb, [r1, #4] - orr r6, r2, r6 - eor r7, r3, r6 - ldr r6, [r1, #8] - ldr sb, [r4, sb, lsl #2] - add r7, lr, r7 - ldr sl, [r5, #4] - add r7, sb, r7 - add sb, sl, r7 - mov r7, sb, lsr #0x16 - orr sb, r7, sb, lsl #10 - ldr r7, [r1, #0xc] - add lr, r2, sb - mvn sb, r3 - ldr r6, [r4, r6, lsl #2] - orr sb, lr, sb - eor sb, r2, sb - add sb, ip, sb - add sb, r6, sb - ldr sl, [r5, #8] - ldr r6, [r4, r7, lsl #2] - add sb, sl, sb - mov r7, sb, lsr #0x11 - orr sb, r7, sb, lsl #15 - ldr r7, [r5, #0xc] - add ip, lr, sb - add r5, r5, #0x10 - add r1, r1, #0x10 - mvn sb, r2 - orr sb, ip, sb - eor sb, lr, sb - add r3, r3, sb - add r3, r6, r3 - add r6, r7, r3 - mov r3, r6, lsr #0xb - orr r3, r3, r6, lsl #21 - add r3, ip, r3 - add r8, r8, #1 - cmp r8, #4 - blt _020D9264 - ldr r1, [r0] - add r1, r1, r2 - str r1, [r0] - ldr r1, [r0, #4] - add r1, r1, r3 - str r1, [r0, #4] - ldr r1, [r0, #8] - add r1, r1, ip - str r1, [r0, #8] - ldr r1, [r0, #0xc] - add r1, r1, lr - str r1, [r0, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020D936C: .word _02110D6C -_020D9370: .word _02110CAC - arm_func_end ProcessBlock - - arm_func_start DGT_Hash2Reset -DGT_Hash2Reset: ; 0x020D9374 - ldr r1, _020D93B0 ; =0x67452301 - ldr r2, _020D93B4 ; =0xEFCDAB89 - str r1, [r0] - ldr r1, _020D93B8 ; =0x98BADCFE - str r2, [r0, #4] - ldr r2, _020D93BC ; =0x10325476 - str r1, [r0, #8] - ldr r1, _020D93C0 ; =0xC3D2E1F0 - str r2, [r0, #0xc] - str r1, [r0, #0x10] - mov r1, #0 - str r1, [r0, #0x14] - str r1, [r0, #0x18] - str r1, [r0, #0x1c] - bx lr - .align 2, 0 -_020D93B0: .word 0x67452301 -_020D93B4: .word 0xEFCDAB89 -_020D93B8: .word 0x98BADCFE -_020D93BC: .word 0x10325476 -_020D93C0: .word 0xC3D2E1F0 - arm_func_end DGT_Hash2Reset - - arm_func_start DGT_Hash2SetSource -DGT_Hash2SetSource: ; 0x020D93C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - movs r8, r2 - mov sb, r1 - add r6, sl, #0x20 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl, #0x14] - add r1, r0, r8, lsl #3 - cmp r1, r0 - ldrlo r0, [sl, #0x18] - addlo r0, r0, #1 - strlo r0, [sl, #0x18] - ldr r0, [sl, #0x18] - add r0, r0, r8, lsr #29 - str r0, [sl, #0x18] - str r1, [sl, #0x14] - ldr r1, [sl, #0x1c] - cmp r1, #0 - beq _020D947C - add r0, r1, r8 - cmp r0, #0x40 - blo _020D945C - rsb r4, r1, #0x40 - mov r0, sb - mov r2, r4 - add r1, r6, r1 - bl MI_CpuCopy8 - ldr r1, _020D9514 ; =_02110E70 - mov r0, sl - ldr r3, [r1] - mov r1, r6 - mov r2, #0x40 - sub r8, r8, r4 - add sb, sb, r4 - blx r3 - mov r0, #0 - str r0, [sl, #0x1c] - b _020D947C -_020D945C: - mov r0, sb - mov r2, r8 - add r1, r6, r1 - bl MI_CpuCopy8 - ldr r0, [sl, #0x1c] - add r0, r0, r8 - str r0, [sl, #0x1c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020D947C: - cmp r8, #0x40 - blo _020D94F4 - bic r7, r8, #0x3f - tst sb, #3 - sub r8, r8, r7 - bne _020D94B4 - ldr r1, _020D9514 ; =_02110E70 - mov r0, sl - ldr r3, [r1] - mov r1, sb - mov r2, r7 - blx r3 - add sb, sb, r7 - b _020D94F4 -_020D94B4: - mov r5, #0x40 - ldr r4, _020D9514 ; =_02110E70 - mov fp, r5 -_020D94C0: - mov r0, sb - mov r1, r6 - mov r2, r5 - bl MI_CpuCopy8 - ldr r3, [r4] - mov r0, sl - mov r1, r6 - add sb, sb, #0x40 - mov r2, fp - blx r3 - sub r7, r7, #0x40 - cmp r7, #0 - bgt _020D94C0 -_020D94F4: - str r8, [sl, #0x1c] - cmp r8, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sb - mov r1, r6 - mov r2, r8 - bl MI_CpuCopy8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020D9514: .word _02110E70 - arm_func_end DGT_Hash2SetSource - - arm_func_start DGT_Hash2GetDigest -DGT_Hash2GetDigest: ; 0x020D9518 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - ldr r0, [sp, #0x10] - mov r6, r1 - ldr r3, [r0, #0x1c] - add r4, r0, #0x20 - tst r3, #3 - mov r2, r3, asr #2 - moveq r0, #0 - streq r0, [r4, r2, lsl #2] - ldr r1, [sp, #0x10] - mov r0, #0x80 - add r5, r1, #0x20 - strb r0, [r5, r3] - add r3, r3, #1 - tst r3, #3 - beq _020D9570 - mov r0, #0 -_020D9560: - strb r0, [r5, r3] - add r3, r3, #1 - tst r3, #3 - bne _020D9560 -_020D9570: - ldr r0, [sp, #0x10] - add r2, r2, #1 - ldr r0, [r0, #0x1c] - cmp r0, #0x38 - blt _020D95BC - cmp r2, #0x10 - bge _020D95A0 - mov r0, #0 -_020D9590: - str r0, [r4, r2, lsl #2] - add r2, r2, #1 - cmp r2, #0x10 - blt _020D9590 -_020D95A0: - ldr r1, _020D9710 ; =_02110E70 - ldr r0, [sp, #0x10] - ldr r3, [r1] - mov r1, r4 - mov r2, #0x40 - blx r3 - mov r2, #0 -_020D95BC: - cmp r2, #0xe - bge _020D95D8 - mov r0, #0 -_020D95C8: - str r0, [r4, r2, lsl #2] - add r2, r2, #1 - cmp r2, #0xe - blt _020D95C8 -_020D95D8: - ldr r0, [sp, #0x10] - ldr r3, _020D9710 ; =_02110E70 - ldr r2, [r0, #0x14] - mov r1, r4 - strb r2, [r5, #0x3f] - mov r0, r2, lsr #8 - strb r0, [r5, #0x3e] - mov r0, r2, lsr #0x10 - strb r0, [r5, #0x3d] - mov r0, r2, lsr #0x18 - strb r0, [r5, #0x3c] - ldr r0, [sp, #0x10] - mov r2, #0x40 - ldr r4, [r0, #0x18] - strb r4, [r5, #0x3b] - mov r0, r4, lsr #8 - strb r0, [r5, #0x3a] - mov r0, r4, lsr #0x10 - strb r0, [r5, #0x39] - mov r0, r4, lsr #0x18 - strb r0, [r5, #0x38] - ldr r0, [sp, #0x10] - ldr r3, [r3] - blx r3 - ldr r0, [sp, #0x10] - ldr r1, [r0] - mov r0, r1, lsr #0x18 - strb r0, [r6] - mov r0, r1, lsr #0x10 - strb r0, [r6, #1] - mov r0, r1, lsr #8 - strb r0, [r6, #2] - strb r1, [r6, #3] - ldr r0, [sp, #0x10] - ldr r1, [r0, #4] - mov r0, r1, lsr #0x18 - strb r0, [r6, #4] - mov r0, r1, lsr #0x10 - strb r0, [r6, #5] - mov r0, r1, lsr #8 - strb r0, [r6, #6] - strb r1, [r6, #7] - ldr r0, [sp, #0x10] - ldr r1, [r0, #8] - mov r0, r1, lsr #0x18 - strb r0, [r6, #8] - mov r0, r1, lsr #0x10 - strb r0, [r6, #9] - mov r0, r1, lsr #8 - strb r0, [r6, #0xa] - strb r1, [r6, #0xb] - ldr r0, [sp, #0x10] - ldr r1, [r0, #0xc] - mov r0, r1, lsr #0x18 - strb r0, [r6, #0xc] - mov r0, r1, lsr #0x10 - strb r0, [r6, #0xd] - mov r0, r1, lsr #8 - strb r0, [r6, #0xe] - strb r1, [r6, #0xf] - ldr r0, [sp, #0x10] - ldr r1, [r0, #0x10] - mov r0, r1, lsr #0x18 - strb r0, [r6, #0x10] - mov r0, r1, lsr #0x10 - strb r0, [r6, #0x11] - mov r0, r1, lsr #8 - strb r0, [r6, #0x12] - strb r1, [r6, #0x13] - ldr r3, [sp, #0x10] - mov r0, #0 - add r1, sp, #0x10 - mov r2, #4 - str r0, [r3, #0x1c] - bl MIi_CpuClear32 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020D9710: .word _02110E70 - arm_func_end DGT_Hash2GetDigest - - arm_func_start DGT_Hash2CalcHmac -DGT_Hash2CalcHmac: ; 0x020D9714 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xa0 - ldr lr, _020D9798 ; =_0210E188 - add ip, sp, #8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, ip - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2} - stmia ip, {r0, r1, r2} - add lr, sp, #0x38 - add ip, sp, #0x24 - str lr, [sp, #0x10] - ldr lr, _020D979C ; =DGT_Hash2Reset - str ip, [sp, #0x14] - ldr ip, _020D97A0 ; =DGT_Hash2SetSource - str lr, [sp, #0x18] - ldr lr, _020D97A4 ; =DGT_Hash2GetDigest - str ip, [sp, #0x1c] - ldr ip, [sp, #0xb8] - str lr, [sp, #0x20] - str ip, [sp] - mov r3, r5 - mov r0, r8 - mov r1, r7 - mov r2, r6 - str r4, [sp, #4] - bl HmacCalc - add sp, sp, #0xa0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020D9798: .word _0210E188 -_020D979C: .word DGT_Hash2Reset -_020D97A0: .word DGT_Hash2SetSource -_020D97A4: .word DGT_Hash2GetDigest - arm_func_end DGT_Hash2CalcHmac - - arm_func_start HmacCalc -HmacCalc: ; 0x020D97A8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc0 - ldr r5, [sp, #0xe0] - ldr r4, [sp, #0xe4] - mov r8, r1 - movs sb, r0 - mov r7, r2 - cmpne r8, #0 - mov r6, r3 - cmpne r7, #0 - cmpne r6, #0 - cmpne r5, #0 - cmpne r4, #0 - addeq sp, sp, #0xc0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r4, #4] - cmp r5, r0 - ble _020D9828 - ldr r0, [r4, #8] - ldr r1, [r4, #0x10] - blx r1 - ldr r0, [r4, #8] - ldr r3, [r4, #0x14] - mov r1, r6 - mov r2, r5 - blx r3 - ldr r0, [r4, #8] - ldr r2, [r4, #0x18] - add r1, sp, #0x80 - blx r2 - ldr r5, [r4] - add r6, sp, #0x80 -_020D9828: - cmp r5, #0 - mov r2, #0 - ble _020D9850 - add r1, sp, #0x40 -_020D9838: - ldrb r0, [r6, r2] - add r2, r2, #1 - cmp r2, r5 - eor r0, r0, #0x36 - strb r0, [r1], #1 - blt _020D9838 -_020D9850: - ldr r0, [r4, #4] - cmp r2, r0 - bge _020D987C - add r0, sp, #0x40 - add r3, r0, r2 - mov r1, #0x36 -_020D9868: - strb r1, [r3], #1 - ldr r0, [r4, #4] - add r2, r2, #1 - cmp r2, r0 - blt _020D9868 -_020D987C: - ldr r0, [r4, #8] - ldr r1, [r4, #0x10] - blx r1 - ldr r0, [r4, #8] - ldr r2, [r4, #4] - ldr r3, [r4, #0x14] - add r1, sp, #0x40 - blx r3 - ldr r0, [r4, #8] - ldr r3, [r4, #0x14] - mov r1, r8 - mov r2, r7 - blx r3 - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x18] - blx r2 - cmp r5, #0 - mov r3, #0 - ble _020D98E8 - add r1, sp, #0 -_020D98D0: - ldrb r0, [r6, r3] - add r3, r3, #1 - cmp r3, r5 - eor r0, r0, #0x5c - strb r0, [r1], #1 - blt _020D98D0 -_020D98E8: - ldr r0, [r4, #4] - cmp r3, r0 - bge _020D9914 - add r0, sp, #0 - add r2, r0, r3 - mov r1, #0x5c -_020D9900: - strb r1, [r2], #1 - ldr r0, [r4, #4] - add r3, r3, #1 - cmp r3, r0 - blt _020D9900 -_020D9914: - ldr r0, [r4, #8] - ldr r1, [r4, #0x10] - blx r1 - ldr r0, [r4, #8] - ldr r2, [r4, #4] - ldr r3, [r4, #0x14] - add r1, sp, #0 - blx r3 - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r2, [r4] - ldr r3, [r4, #0x14] - blx r3 - ldr r0, [r4, #8] - ldr r2, [r4, #0x18] - mov r1, sb - blx r2 - add sp, sp, #0xc0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 - arm_func_end HmacCalc - -_020D9960: .word 0x00FF00FF -_020D9964: .word 0x5A827999 -_020D9968: .word 0x6ED9EBA1 -_020D996C: .word 0x8F1BBCDC -_020D9970: .word 0xCA62C1D6 - - arm_func_start DGTi_hash2_arm4_small -DGTi_hash2_arm4_small: ; 0x020D9974 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr} - ldmia r0, {r3, sb, sl, fp, ip} - sub sp, sp, #0x84 - str r2, [sp, #0x80] -_020D9984: - ldr r8, _020D9964 ; =0x5A827999 - ldr r7, _020D9960 ; =0x00FF00FF - mov r6, sp - mov r5, #0 -_020D9994: - ldr r4, [r1], #4 - add r2, r8, ip - add r2, r2, r3, ror #27 - and lr, r4, r7 - and r4, r7, r4, ror #24 - orr r4, r4, lr, ror #8 - str r4, [r6, #0x40] - str r4, [r6], #4 - add r2, r2, r4 - eor r4, sl, fp - and r4, r4, sb - eor r4, r4, fp - add r2, r2, r4 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r5, r5, #4 - cmp r5, #0x40 - blt _020D9994 - mov r7, #0 - mov r6, sp -_020D99F4: - ldr r2, [r6] - ldr r5, [r6, #8] - ldr r4, [r6, #0x20] - ldr lr, [r6, #0x34] - eor r2, r2, r5 - eor r4, r4, lr - eor r2, r2, r4 - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - eor r4, sl, fp - and r4, r4, sb - eor r4, r4, fp - add r2, r2, r4 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #4 - cmp r7, #0x10 - blt _020D99F4 - ldr r8, _020D9968 ; =0x6ED9EBA1 - mov r7, #0 -_020D9A64: - ldr r2, [r6] - ldr r4, [r6, #8] - ldr lr, [r6, #0x20] - ldr r5, [r6, #0x34] - eor r2, r2, r4 - eor lr, lr, r5 - eor r2, r2, lr - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - eor lr, sb, sl - eor lr, lr, fp - add r2, r2, lr - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #1 - cmp r7, #0xc - moveq r6, sp - cmp r7, #0x14 - blt _020D9A64 - ldr r8, _020D996C ; =0x8F1BBCDC - mov r7, #0 -_020D9AD8: - ldr r2, [r6] - ldr lr, [r6, #8] - ldr r5, [r6, #0x20] - ldr r4, [r6, #0x34] - eor r2, r2, lr - eor r5, r5, r4 - eor r2, r2, r5 - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - orr r5, sb, sl - and r5, r5, fp - and r4, sb, sl - orr r5, r5, r4 - add r2, r2, r5 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #1 - cmp r7, #8 - moveq r6, sp - cmp r7, #0x14 - blt _020D9AD8 - ldr r8, _020D9970 ; =0xCA62C1D6 - mov r7, #0 -_020D9B54: - ldr r2, [r6] - ldr r5, [r6, #8] - ldr r4, [r6, #0x20] - ldr lr, [r6, #0x34] - eor r2, r2, r5 - eor r4, r4, lr - eor r2, r2, r4 - mov r2, r2, ror #0x1f - str r2, [r6, #0x40] - str r2, [r6], #4 - add r2, r2, ip - add r2, r2, r8 - add r2, r2, r3, ror #27 - eor r4, sb, sl - eor r4, r4, fp - add r2, r2, r4 - mov sb, sb, ror #2 - mov ip, fp - mov fp, sl - mov sl, sb - mov sb, r3 - mov r3, r2 - add r7, r7, #1 - cmp r7, #4 - moveq r6, sp - cmp r7, #0x14 - blt _020D9B54 - ldmia r0, {r2, r4, r6, r7, lr} - add r3, r3, r2 - add sb, sb, r4 - add sl, sl, r6 - add fp, fp, r7 - add ip, ip, lr - stmia r0, {r3, sb, sl, fp, ip} - ldr lr, [sp, #0x80] - subs lr, lr, #0x40 - str lr, [sp, #0x80] - bgt _020D9984 - add sp, sp, #0x84 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, ip, pc} - arm_func_end DGTi_hash2_arm4_small - - arm_func_start CP_SaveContext -CP_SaveContext: ; 0x020D9BF4 - ldr r1, _020D9C30 ; =0x04000290 - stmdb sp!, {r4} - ldmia r1, {r2, r3, r4, ip} - stmia r0!, {r2, r3, r4, ip} - ldrh ip, [r1, #-0x10] - add r1, r1, #0x28 - ldmia r1, {r2, r3} - stmia r0!, {r2, r3} - and ip, ip, #3 - ldrh r2, [r1, #-8] - strh ip, [r0] - and r2, r2, #1 - strh r2, [r0, #2] - ldmia sp!, {r4} - bx lr - .align 2, 0 -_020D9C30: .word 0x04000290 - arm_func_end CP_SaveContext - - arm_func_start CPi_RestoreContext -CPi_RestoreContext: ; 0x020D9C34 - stmdb sp!, {r4} - ldr r1, _020D9C6C ; =0x04000290 - ldmia r0, {r2, r3, r4, ip} - stmia r1, {r2, r3, r4, ip} - ldrh r2, [r0, #0x18] - ldrh r3, [r0, #0x1a] - strh r2, [r1, #-0x10] - strh r3, [r1, #0x20] - add r0, r0, #0x10 - add r1, r1, #0x28 - ldmia r0, {r2, r3} - stmia r1, {r2, r3} - ldmia sp!, {r4} - bx lr - .align 2, 0 -_020D9C6C: .word 0x04000290 - arm_func_end CPi_RestoreContext - - arm_func_start TPi_TpCallback -TPi_TpCallback: ; 0x020D9C70 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r0, r1, lsl #0x10 - mov r3, r0, lsr #0x10 - and r0, r3, #0x7f00 - mov r0, r0, lsl #8 - cmp r2, #0 - mov r0, r0, lsr #0x10 - beq _020D9CCC - ldr r1, _020D9EE8 ; =_021E36B0 - mov r2, #1 - ldrh r3, [r1, #0x38] - orr r2, r3, r2, lsl r0 - strh r2, [r1, #0x38] - ldr r3, [r1, #4] - cmp r3, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, #4 - mov r2, #0 - blx r3 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D9CCC: - cmp r0, #0x10 - bne _020D9D84 - ldr r1, _020D9EE8 ; =_021E36B0 - ldrh r2, [r1, #0x10] - add r2, r2, #1 - strh r2, [r1, #0x10] - ldrh r3, [r1, #0x10] - ldrh r2, [r1, #0x18] - cmp r3, r2 - movhs r2, #0 - strhsh r2, [r1, #0x10] - ldr r2, _020D9EEC ; =0x027FFFAA - ldr r1, _020D9EE8 ; =_021E36B0 - ldrh r3, [r2] - ldrh r2, [r2, #2] - ldrh lr, [r1, #0x10] - strh r3, [sp, #4] - strh r2, [sp, #6] - ldr r5, [sp, #4] - ldr r7, [r1, #0x14] - mov r2, r5, lsl #7 - mov r3, r2, lsr #0x1f - mov r4, r5, lsl #8 - mov r2, r5, lsl #5 - mov ip, r5, lsl #0x14 - mov r2, r2, lsr #0x1e - mov r6, lr, lsl #3 - mov r5, ip, lsr #0x14 - strh r5, [r7, r6] - add r5, r7, lr, lsl #3 - mov r4, r4, lsr #0x14 - strh r4, [r5, #2] - and r3, r3, #0xff - strh r3, [r5, #4] - and r2, r2, #0xff - strh r2, [r5, #6] - ldr r3, [r1, #4] - cmp r3, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r2, [r1, #0x10] - mov r1, #0 - and r2, r2, #0xff - blx r3 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D9D84: - tst r1, #0x1000000 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - and r1, r3, #0xff - cmp r1, #4 - addls pc, pc, r1, lsl #2 - b _020D9EDC -_020D9DA0: ; jump table - b _020D9DB4 ; case 0 - b _020D9EDC ; case 1 - b _020D9E88 ; case 2 - b _020D9E90 ; case 3 - b _020D9E80 ; case 4 -_020D9DB4: - cmp r0, #0 - beq _020D9DD8 - cmp r0, #1 - beq _020D9E38 - cmp r0, #2 - ldreq r1, _020D9EE8 ; =_021E36B0 - moveq r2, #0 - streqh r2, [r1, #0x36] - b _020D9E44 -_020D9DD8: - ldr r2, _020D9EEC ; =0x027FFFAA - ldr r1, _020D9EE8 ; =_021E36B0 - ldrh r4, [r2] - ldrh r3, [r2, #2] - mov r2, #0 - strh r4, [sp] - strh r3, [sp, #2] - ldr r4, [sp] - mov r3, r4, lsl #0x14 - mov r5, r3, lsr #0x14 - mov lr, r4, lsl #8 - mov r3, r4, lsl #7 - mov ip, r3, lsr #0x1f - mov r3, r4, lsl #5 - mov r3, r3, lsr #0x1e - strh r5, [r1, #8] - mov lr, lr, lsr #0x14 - strh lr, [r1, #0xa] - and ip, ip, #0xff - strh ip, [r1, #0xc] - and r3, r3, #0xff - strh r3, [r1, #0xe] - strh r2, [r1, #0x36] - b _020D9E44 -_020D9E38: - ldr r1, _020D9EE8 ; =_021E36B0 - mov r2, #2 - strh r2, [r1, #0x36] -_020D9E44: - ldr r1, _020D9EE8 ; =_021E36B0 - mov r2, #1 - ldrh r3, [r1, #0x3a] - mvn r2, r2, lsl r0 - and r2, r3, r2 - strh r2, [r1, #0x3a] - ldr r3, [r1, #4] - cmp r3, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, #0 - mov r2, r1 - blx r3 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D9E80: - mov r4, #3 - b _020D9E94 -_020D9E88: - mov r4, #1 - b _020D9E94 -_020D9E90: - mov r4, #2 -_020D9E94: - ldr r1, _020D9EE8 ; =_021E36B0 - mov ip, #1 - ldrh r3, [r1, #0x38] - mvn r2, ip, lsl r0 - orr r3, r3, ip, lsl r0 - strh r3, [r1, #0x38] - ldrh r3, [r1, #0x3a] - and r2, r3, r2 - strh r2, [r1, #0x3a] - ldr r3, [r1, #4] - cmp r3, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - and r1, r4, #0xff - mov r2, #0 - blx r3 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020D9EDC: - bl OS_Terminate - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020D9EE8: .word _021E36B0 -_020D9EEC: .word 0x027FFFAA - arm_func_end TPi_TpCallback - - arm_func_start TP_Init -TP_Init: ; 0x020D9EF0 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020D9F60 ; =_021E36B0 - ldrh r1, [r0] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - strh r1, [r0] - bl PXI_Init - ldr r0, _020D9F60 ; =_021E36B0 - mov r1, #0 - strh r1, [r0, #0x10] - str r1, [r0, #4] - str r1, [r0, #0x14] - strh r1, [r0, #0x36] - strh r1, [r0, #0x34] - strh r1, [r0, #0x3a] - strh r1, [r0, #0x38] - mov r5, #6 - mov r4, #1 -_020D9F3C: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020D9F3C - ldr r1, _020D9F64 ; =TPi_TpCallback - mov r0, #6 - bl PXI_SetFifoRecvCallback - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020D9F60: .word _021E36B0 -_020D9F64: .word TPi_TpCallback - arm_func_end TP_Init - - arm_func_start TP_GetUserInfo -TP_GetUserInfo: ; 0x020D9F68 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x14 - ldr ip, _020D9FF8 ; =0x027FFC80 - mov r4, r0 - ldrh r1, [ip, #0x58] - ldrh r2, [ip, #0x5a] - ldrh r0, [ip, #0x5e] - cmp r1, #0 - ldrh lr, [ip, #0x60] - cmpeq r0, #0 - cmpeq r2, #0 - ldrb r3, [ip, #0x5c] - ldrb r5, [ip, #0x5d] - ldrb r6, [ip, #0x62] - ldrb ip, [ip, #0x63] - cmpeq lr, #0 - beq _020D9FCC - str r5, [sp] - stmib sp, {r0, lr} - str r6, [sp, #0xc] - mov r0, r4 - str ip, [sp, #0x10] - bl TP_CalcCalibrateParam - cmp r0, #0 - beq _020D9FEC -_020D9FCC: - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - add sp, sp, #0x14 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, pc} -_020D9FEC: - mov r0, #1 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_020D9FF8: .word 0x027FFC80 - arm_func_end TP_GetUserInfo - - arm_func_start TP_SetCalibrateParam -TP_SetCalibrateParam: ; 0x020D9FFC - stmdb sp!, {r4, lr} - movs r4, r0 - bne _020DA018 - ldr r0, _020DA118 ; =_021E36B0 - mov r1, #0 - strh r1, [r0, #0x34] - ldmia sp!, {r4, pc} -_020DA018: - bl OS_DisableInterrupts - ldrsh r2, [r4, #4] - cmp r2, #0 - beq _020DA07C - ldr r3, _020DA11C ; =0x04000280 - mov r1, #0 - strh r1, [r3] - mov r1, #0x10000000 - str r1, [r3, #0x10] - str r2, [r3, #0x18] - mov r1, #0 - str r1, [r3, #0x1c] - ldrsh r2, [r4] - ldr r1, _020DA118 ; =_021E36B0 - str r2, [r1, #0x1c] - ldrsh r2, [r4, #4] - str r2, [r1, #0x20] -_020DA05C: - ldrh r1, [r3] - tst r1, #0x8000 - bne _020DA05C - ldr r2, _020DA120 ; =0x040002A0 - ldr r1, _020DA118 ; =_021E36B0 - ldr r2, [r2] - str r2, [r1, #0x24] - b _020DA090 -_020DA07C: - ldr r1, _020DA118 ; =_021E36B0 - mov r2, #0 - str r2, [r1, #0x1c] - str r2, [r1, #0x20] - str r2, [r1, #0x24] -_020DA090: - ldrsh r2, [r4, #6] - cmp r2, #0 - beq _020DA0F0 - ldr r3, _020DA11C ; =0x04000280 - mov r1, #0 - strh r1, [r3] - mov r1, #0x10000000 - str r1, [r3, #0x10] - str r2, [r3, #0x18] - mov r1, #0 - str r1, [r3, #0x1c] - ldrsh r2, [r4, #2] - ldr r1, _020DA118 ; =_021E36B0 - str r2, [r1, #0x28] - ldrsh r2, [r4, #6] - str r2, [r1, #0x2c] -_020DA0D0: - ldrh r1, [r3] - tst r1, #0x8000 - bne _020DA0D0 - ldr r2, _020DA120 ; =0x040002A0 - ldr r1, _020DA118 ; =_021E36B0 - ldr r2, [r2] - str r2, [r1, #0x30] - b _020DA104 -_020DA0F0: - ldr r1, _020DA118 ; =_021E36B0 - mov r2, #0 - str r2, [r1, #0x28] - str r2, [r1, #0x2c] - str r2, [r1, #0x30] -_020DA104: - bl OS_RestoreInterrupts - ldr r0, _020DA118 ; =_021E36B0 - mov r1, #1 - strh r1, [r0, #0x34] - ldmia sp!, {r4, pc} - .align 2, 0 -_020DA118: .word _021E36B0 -_020DA11C: .word 0x04000280 -_020DA120: .word 0x040002A0 - arm_func_end TP_SetCalibrateParam - - arm_func_start TP_RequestSamplingAsync -TP_RequestSamplingAsync: ; 0x020DA124 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #6 - mov r1, #0x3000000 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - cmp r0, #0 - bne _020DA18C - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _020DA1B4 ; =_021E36B0 - ldrh r1, [r0, #0x38] - orr r1, r1, #1 - strh r1, [r0, #0x38] - ldr r3, [r0, #4] - cmp r3, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0 - mov r2, r0 - mov r1, #4 - blx r3 - ldmia sp!, {r4, pc} -_020DA18C: - ldr r1, _020DA1B4 ; =_021E36B0 - mov r0, r4 - ldrh r2, [r1, #0x3a] - orr r2, r2, #1 - strh r2, [r1, #0x3a] - ldrh r2, [r1, #0x38] - bic r2, r2, #1 - strh r2, [r1, #0x38] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020DA1B4: .word _021E36B0 - arm_func_end TP_RequestSamplingAsync - - arm_func_start TP_WaitRawResult -TP_WaitRawResult: ; 0x020DA1B8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - bl TP_WaitBusy - ldr r1, _020DA204 ; =_021E36B0 - ldrh r0, [r1, #0x38] - tst r0, #1 - movne r0, #1 - ldmneia sp!, {r4, pc} - ldrh r3, [r1, #8] - ldrh r2, [r1, #0xa] - mov r0, #0 - strh r3, [r4] - strh r2, [r4, #2] - ldrh r2, [r1, #0xc] - ldrh r1, [r1, #0xe] - strh r2, [r4, #4] - strh r1, [r4, #6] - ldmia sp!, {r4, pc} - .align 2, 0 -_020DA204: .word _021E36B0 - arm_func_end TP_WaitRawResult - - arm_func_start TP_RequestAutoSamplingStartAsync -TP_RequestAutoSamplingStartAsync: ; 0x020DA208 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, _020DA304 ; =_021E36B0 - mov lr, #0 - str r2, [ip, #0x14] - mov r5, r1 - strh lr, [ip, #0x10] - strh r5, [ip, #0x12] - mov r4, r0 - strh r3, [ip, #0x18] - cmp r3, #0 - bls _020DA250 - mov r1, lr -_020DA238: - ldr r0, [ip, #0x14] - add r0, r0, lr, lsl #3 - add lr, lr, #1 - strh r1, [r0, #4] - cmp lr, r3 - blo _020DA238 -_020DA250: - bl OS_DisableInterrupts - and r1, r5, #0xff - orr r1, r1, #0x100 - mov r5, r0 - orr r1, r1, #0x2000000 - mov r0, #6 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - blt _020DA29C - orr r1, r4, #0x10000 - orr r1, r1, #0x1000000 - mov r0, #6 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - movge r0, #1 -_020DA29C: - tst r0, #0xff - bne _020DA2DC - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, _020DA304 ; =_021E36B0 - ldrh r1, [r0, #0x38] - orr r1, r1, #2 - strh r1, [r0, #0x38] - ldr r3, [r0, #4] - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #1 - mov r1, #4 - mov r2, #0 - blx r3 - ldmia sp!, {r3, r4, r5, pc} -_020DA2DC: - ldr r1, _020DA304 ; =_021E36B0 - mov r0, r5 - ldrh r2, [r1, #0x3a] - orr r2, r2, #2 - strh r2, [r1, #0x3a] - ldrh r2, [r1, #0x38] - bic r2, r2, #2 - strh r2, [r1, #0x38] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DA304: .word _021E36B0 - arm_func_end TP_RequestAutoSamplingStartAsync - - arm_func_start TP_RequestAutoSamplingStopAsync -TP_RequestAutoSamplingStopAsync: ; 0x020DA308 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, _020DA398 ; =0x03000200 - mov r0, #6 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - cmp r0, #0 - bne _020DA370 - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _020DA39C ; =_021E36B0 - ldrh r1, [r0, #0x38] - orr r1, r1, #4 - strh r1, [r0, #0x38] - ldr r3, [r0, #4] - cmp r3, #0 - ldmeqia sp!, {r4, pc} - mov r0, #2 - mov r1, #4 - mov r2, #0 - blx r3 - ldmia sp!, {r4, pc} -_020DA370: - ldr r1, _020DA39C ; =_021E36B0 - mov r0, r4 - ldrh r2, [r1, #0x3a] - orr r2, r2, #4 - strh r2, [r1, #0x3a] - ldrh r2, [r1, #0x38] - bic r2, r2, #4 - strh r2, [r1, #0x38] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - .align 2, 0 -_020DA398: .word 0x03000200 -_020DA39C: .word _021E36B0 - arm_func_end TP_RequestAutoSamplingStopAsync - - arm_func_start TP_GetLatestRawPointInAuto -TP_GetLatestRawPointInAuto: ; 0x020DA3A0 - stmdb sp!, {r4, lr} - ldr ip, _020DA4E0 ; =_021E36B0 - mov r1, #3 - strh r1, [r0, #6] - ldrh r1, [ip, #0x12] - ldrh r2, [ip, #0x10] - cmp r1, #1 - ldrneh r1, [ip, #0x18] - cmpne r1, #1 - bne _020DA3FC - ldr r1, _020DA4E0 ; =_021E36B0 - mov ip, r2, lsl #3 - ldr r1, [r1, #0x14] - add r3, r1, r2, lsl #3 - ldrh r2, [r1, ip] - ldrh r1, [r3, #2] - strh r2, [r0] - strh r1, [r0, #2] - ldrh r2, [r3, #4] - ldrh r1, [r3, #6] - strh r2, [r0, #4] - strh r1, [r0, #6] - ldmia sp!, {r4, pc} -_020DA3FC: - mov r1, #0 - b _020DA4BC -_020DA404: - subs lr, r2, r1 - ldr r3, [ip, #0x14] - addmi lr, lr, r4 - add r3, r3, lr, lsl #3 - ldrh lr, [r3, #4] - cmp lr, #0 - bne _020DA444 - ldrh r2, [r3] - ldrh r1, [r3, #2] - strh r2, [r0] - strh r1, [r0, #2] - ldrh r2, [r3, #4] - ldrh r1, [r3, #6] - strh r2, [r0, #4] - strh r1, [r0, #6] - ldmia sp!, {r4, pc} -_020DA444: - ldrh lr, [r0, #6] - tst lr, #1 - beq _020DA474 - ldrh lr, [r3, #6] - tst lr, #1 - bne _020DA474 - ldrh lr, [r3] - cmp r1, #0 - strh lr, [r0] - ldrneh lr, [r0, #6] - bicne lr, lr, #1 - strneh lr, [r0, #6] -_020DA474: - ldrh lr, [r0, #6] - tst lr, #2 - beq _020DA4A4 - ldrh lr, [r3, #6] - tst lr, #2 - bne _020DA4A4 - ldrh r3, [r3, #2] - cmp r1, #0 - strh r3, [r0, #2] - ldrneh r3, [r0, #6] - bicne r3, r3, #2 - strneh r3, [r0, #6] -_020DA4A4: - ldrh r3, [r0, #6] - cmp r3, #0 - moveq r1, #1 - streqh r1, [r0, #4] - ldmeqia sp!, {r4, pc} - add r1, r1, #1 -_020DA4BC: - ldrh r3, [ip, #0x12] - cmp r1, r3 - ldrlth r4, [ip, #0x18] - sublt r3, r4, #1 - cmplt r1, r3 - blt _020DA404 - mov r1, #1 - strh r1, [r0, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_020DA4E0: .word _021E36B0 - arm_func_end TP_GetLatestRawPointInAuto - - arm_func_start TP_GetLatestIndexInAuto -TP_GetLatestIndexInAuto: ; 0x020DA4E4 - ldr r0, _020DA4F0 ; =_021E36B0 - ldrh r0, [r0, #0x10] - bx lr - .align 2, 0 -_020DA4F0: .word _021E36B0 - arm_func_end TP_GetLatestIndexInAuto - - arm_func_start TP_CalcCalibrateParam -TP_CalcCalibrateParam: ; 0x020DA4F4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov r8, r2 - cmp sb, #0x1000 - cmplo r8, #0x1000 - ldrloh r4, [sp, #0x2c] - mov r7, r3 - mov sl, r0 - cmplo r4, #0x1000 - ldrloh r3, [sp, #0x30] - cmplo r3, #0x1000 - movhs r0, #1 - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, #0x100 - ldrloh r2, [sp, #0x34] - cmplo r2, #0x100 - ldrloh r1, [sp, #0x28] - cmplo r1, #0xc0 - ldrloh r0, [sp, #0x38] - cmplo r0, #0xc0 - movhs r0, #1 - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, r2 - cmpne r1, r0 - cmpne sb, r4 - cmpne r8, r3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl OS_DisableInterrupts - ldrh lr, [sp, #0x2c] - ldrh ip, [sp, #0x34] - ldr r3, _020DA6D8 ; =0x04000280 - sub r1, sb, lr - mov r2, #0 - ldrh r4, [sp, #0x38] - ldrh r5, [sp, #0x28] - ldrh r6, [sp, #0x30] - strh r2, [r3] - mov r1, r1, lsl #8 - str r1, [r3, #0x10] - sub r1, r7, ip - str r1, [r3, #0x18] - mov r1, r2 - sub r2, r5, r4 - str r1, [r3, #0x1c] - sub r1, r8, r6 - str r2, [sp] -_020DA5B0: - ldrh r2, [r3] - tst r2, #0x8000 - bne _020DA5B0 - mov fp, r1, lsl #8 - ldr r1, _020DA6DC ; =0x040002A0 - ldr r2, [r1] - mov r1, #0 - strh r1, [r3] - ldr r1, _020DA6DC ; =0x040002A0 - cmp r2, #0x8000 - str fp, [r1, #-0x10] - sub r3, r1, #8 - ldr r1, [sp] - mov fp, #0 - stmia r3, {r1, fp} - bge _020DA600 - mov r1, fp - sub r1, r1, #0x8000 - cmp r2, r1 - bge _020DA60C -_020DA600: - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020DA60C: - strh r2, [sl, #4] - ldrsh r2, [sl, #4] - add r1, r7, ip - add r3, sb, lr - mul r1, r2, r1 - rsb r1, r1, r3, lsl #8 - mov r1, r1, lsl #9 - mov r2, r1, asr #0x10 - cmp r2, #0x8000 - bge _020DA644 - mov r1, fp - sub r1, r1, #0x8000 - cmp r2, r1 - bge _020DA650 -_020DA644: - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020DA650: - ldr r1, _020DA6DC ; =0x040002A0 - strh r2, [sl] - sub r2, r1, #0x20 -_020DA65C: - ldrh r1, [r2] - tst r1, #0x8000 - bne _020DA65C - ldr r1, _020DA6DC ; =0x040002A0 - ldr r7, [r1] - bl OS_RestoreInterrupts - cmp r7, #0x8000 - bge _020DA68C - mov r1, #0x8000 - rsb r1, r1, #0 - cmp r7, r1 - bge _020DA694 -_020DA68C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020DA694: - strh r7, [sl, #6] - ldrsh r2, [sl, #6] - add r0, r5, r4 - add r3, r8, r6 - mul r0, r2, r0 - rsb r0, r0, r3, lsl #8 - mov r0, r0, lsl #9 - mov r0, r0, asr #0x10 - cmp r0, #0x8000 - bge _020DA6C4 - cmp r0, r1 - bge _020DA6CC -_020DA6C4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020DA6CC: - strh r0, [sl, #2] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DA6D8: .word 0x04000280 -_020DA6DC: .word 0x040002A0 - arm_func_end TP_CalcCalibrateParam - - arm_func_start TP_GetCalibratedPoint -TP_GetCalibratedPoint: ; 0x020DA6E0 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _020DA7FC ; =_021E36B0 - ldrh r2, [r2, #0x34] - cmp r2, #0 - bne _020DA718 - ldrh r3, [r1] - ldrh r2, [r1, #2] - strh r3, [r0] - strh r2, [r0, #2] - ldrh r2, [r1, #4] - ldrh r1, [r1, #6] - strh r2, [r0, #4] - strh r1, [r0, #6] - ldmia sp!, {r4, r5, r6, pc} -_020DA718: - ldrh r3, [r1, #4] - ldr r2, _020DA800 ; =_021E36CC - strh r3, [r0, #4] - ldrh r3, [r1, #6] - strh r3, [r0, #6] - ldrh r3, [r1, #4] - cmp r3, #0 - bne _020DA748 - mov r1, #0 - strh r1, [r0] - strh r1, [r0, #2] - ldmia sp!, {r4, r5, r6, pc} -_020DA748: - ldrh r4, [r1] - ldr r3, [r2] - ldr lr, [r2, #8] - mov r4, r4, lsl #2 - subs ip, r4, r3 - mov r3, r3, asr #0x1f - rsc r3, r3, r4, asr #31 - umull r6, r5, lr, ip - mla r5, lr, r3, r5 - mov r3, lr, asr #0x1f - mla r5, r3, ip, r5 - mov r3, r6, lsr #0x16 - orr r3, r3, r5, lsl #10 - strh r3, [r0] - ldrsh r3, [r0] - cmp r3, #0 - movlt r3, #0 - strlth r3, [r0] - blt _020DA7A0 - cmp r3, #0xff - movgt r3, #0xff - strgth r3, [r0] -_020DA7A0: - ldrh r3, [r1, #2] - ldr r1, [r2, #0xc] - ldr ip, [r2, #0x14] - mov r2, r3, lsl #2 - subs r3, r2, r1 - mov r1, r1, asr #0x1f - rsc r1, r1, r2, asr #31 - umull r4, lr, ip, r3 - mla lr, ip, r1, lr - mov r1, ip, asr #0x1f - mla lr, r1, r3, lr - mov r1, r4, lsr #0x16 - orr r1, r1, lr, lsl #10 - strh r1, [r0, #2] - ldrsh r1, [r0, #2] - cmp r1, #0 - movlt r1, #0 - strlth r1, [r0, #2] - ldmltia sp!, {r4, r5, r6, pc} - cmp r1, #0xbf - movgt r1, #0xbf - strgth r1, [r0, #2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DA7FC: .word _021E36B0 -_020DA800: .word _021E36CC - arm_func_end TP_GetCalibratedPoint - - arm_func_start TP_WaitBusy -TP_WaitBusy: ; 0x020DA804 - ldr r1, _020DA818 ; =_021E36B0 -_020DA808: - ldrh r2, [r1, #0x3a] - tst r2, r0 - bne _020DA808 - bx lr - .align 2, 0 -_020DA818: .word _021E36B0 - arm_func_end TP_WaitBusy - - arm_func_start TP_CheckBusy -TP_CheckBusy: ; 0x020DA81C - ldr r1, _020DA82C ; =_021E36B0 - ldrh r1, [r1, #0x38] - and r0, r1, r0 - bx lr - .align 2, 0 -_020DA82C: .word _021E36B0 - arm_func_end TP_CheckBusy - - arm_func_start MIC_Init -MIC_Init: ; 0x020DA830 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020DA894 ; =_021E36EC - ldrh r1, [r0] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - strh r1, [r0] - mov r1, #0 - str r1, [r0, #4] - str r1, [r0, #8] - bl PXI_Init - mov r5, #9 - mov r4, #1 -_020DA864: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020DA864 - ldr r2, _020DA898 ; =0x027FFF90 - mov r3, #0 - ldr r1, _020DA89C ; =MicCommonCallback - mov r0, #9 - str r3, [r2] - bl PXI_SetFifoRecvCallback - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DA894: .word _021E36EC -_020DA898: .word 0x027FFF90 -_020DA89C: .word MicCommonCallback - arm_func_end MIC_Init - - arm_func_start MIC_StartAutoSamplingAsync -MIC_StartAutoSamplingAsync: ; 0x020DA8A0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #4] - mov r6, r1 - tst r0, #0x1f - mov r5, r2 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #8] - tst r0, #0x1f - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7, #0xc] - cmp r0, #0x400 - movlo r0, #2 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r7] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _020DA944 -_020DA8FC: ; jump table - b _020DA914 ; case 0 - b _020DA91C ; case 1 - b _020DA924 ; case 2 - b _020DA92C ; case 3 - b _020DA934 ; case 4 - b _020DA93C ; case 5 -_020DA914: - mov r1, #0 - b _020DA94C -_020DA91C: - mov r1, #1 - b _020DA94C -_020DA924: - mov r1, #2 - b _020DA94C -_020DA92C: - mov r1, #3 - b _020DA94C -_020DA934: - mov r1, #5 - b _020DA94C -_020DA93C: - mov r1, #7 - b _020DA94C -_020DA944: - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020DA94C: - ldr r0, [r7, #0x10] - cmp r0, #0 - orrne r0, r1, #0x10 - andne r0, r0, #0xff - andeq r0, r1, #0xff - and r4, r0, #0xff - bl OS_DisableInterrupts - ldr r1, _020DA9C8 ; =_021E36EC - ldr r2, [r1, #4] - cmp r2, #0 - beq _020DA984 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020DA984: - mov r2, #1 - str r2, [r1, #4] - bl OS_RestoreInterrupts - ldr r0, _020DA9C8 ; =_021E36EC - mov r3, r4 - str r6, [r0, #8] - str r5, [r0, #0xc] - ldr r1, [r7, #0x14] - str r1, [r0, #0x14] - ldr r1, [r7, #0x18] - str r1, [r0, #0x18] - ldmib r7, {r0, r1, r2} - bl MicStartAutoSampling - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DA9C8: .word _021E36EC - arm_func_end MIC_StartAutoSamplingAsync - - arm_func_start MIC_StartAutoSampling -MIC_StartAutoSampling: ; 0x020DA9CC - stmdb sp!, {r3, lr} - ldr r1, _020DA9FC ; =MicGetResultCallback - mov r2, #0 - bl MIC_StartAutoSamplingAsync - ldr r1, _020DAA00 ; =_021E36EC - cmp r0, #0 - str r0, [r1, #0x10] - bne _020DA9F0 - bl MicWaitBusy -_020DA9F0: - ldr r0, _020DAA00 ; =_021E36EC - ldr r0, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DA9FC: .word MicGetResultCallback -_020DAA00: .word _021E36EC - arm_func_end MIC_StartAutoSampling - - arm_func_start MIC_StopAutoSamplingAsync -MIC_StopAutoSamplingAsync: ; 0x020DAA04 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl OS_DisableInterrupts - ldr r1, _020DAA5C ; =_021E36EC - ldr r2, [r1, #4] - cmp r2, #0 - beq _020DAA30 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_020DAA30: - mov r2, #1 - str r2, [r1, #4] - bl OS_RestoreInterrupts - ldr r0, _020DAA5C ; =_021E36EC - str r5, [r0, #8] - str r4, [r0, #0xc] - bl MicStopAutoSampling - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DAA5C: .word _021E36EC - arm_func_end MIC_StopAutoSamplingAsync - - arm_func_start MIC_StopAutoSampling -MIC_StopAutoSampling: ; 0x020DAA60 - stmdb sp!, {r3, lr} - ldr r0, _020DAA90 ; =MicGetResultCallback - mov r1, #0 - bl MIC_StopAutoSamplingAsync - ldr r1, _020DAA94 ; =_021E36EC - cmp r0, #0 - str r0, [r1, #0x10] - bne _020DAA84 - bl MicWaitBusy -_020DAA84: - ldr r0, _020DAA94 ; =_021E36EC - ldr r0, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DAA90: .word MicGetResultCallback -_020DAA94: .word _021E36EC - arm_func_end MIC_StopAutoSampling - - arm_func_start MIC_GetLastSamplingAddress -MIC_GetLastSamplingAddress: ; 0x020DAA98 - ldr r0, _020DAAA4 ; =0x027FFF90 - ldr r0, [r0] - bx lr - .align 2, 0 -_020DAAA4: .word 0x027FFF90 - arm_func_end MIC_GetLastSamplingAddress - - arm_func_start MicCommonCallback -MicCommonCallback: ; 0x020DAAA8 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r2, #0 - beq _020DAAF0 - ldr r0, _020DABC8 ; =_021E36EC - ldr r1, [r0, #4] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #4] - ldr r0, _020DABC8 ; =_021E36EC - ldr r2, [r0, #8] - cmp r2, #0 - beq _020DAAF0 - mov r1, #0 - str r1, [r0, #8] - ldr r1, [r0, #0xc] - mov r0, #6 - blx r2 -_020DAAF0: - and r0, r4, #0x7f00 - and r1, r4, #0xff - mov r0, r0, lsl #8 - cmp r1, #4 - mov r2, r0, lsr #0x10 - addls pc, pc, r1, lsl #2 - b _020DAB48 -_020DAB0C: ; jump table - b _020DAB20 ; case 0 - b _020DAB28 ; case 1 - b _020DAB30 ; case 2 - b _020DAB38 ; case 3 - b _020DAB40 ; case 4 -_020DAB20: - mov r0, #0 - b _020DAB4C -_020DAB28: - mov r0, #4 - b _020DAB4C -_020DAB30: - mov r0, #2 - b _020DAB4C -_020DAB38: - mov r0, #5 - b _020DAB4C -_020DAB40: - mov r0, #1 - b _020DAB4C -_020DAB48: - mov r0, #6 -_020DAB4C: - cmp r2, #0x51 - bne _020DAB70 - ldr r1, _020DABC8 ; =_021E36EC - ldr r2, [r1, #0x14] - cmp r2, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r1, #0x18] - blx r2 - ldmia sp!, {r4, pc} -_020DAB70: - cmp r2, #0x40 - bne _020DAB90 - ldr r1, _020DABC8 ; =_021E36EC - ldr r2, [r1, #0x1c] - cmp r2, #0 - ldrne r1, _020DABCC ; =0x027FFF94 - ldrneh r1, [r1] - strneh r1, [r2] -_020DAB90: - ldr r1, _020DABC8 ; =_021E36EC - ldr r2, [r1, #4] - cmp r2, #0 - movne r2, #0 - strne r2, [r1, #4] - ldr r1, _020DABC8 ; =_021E36EC - ldr r3, [r1, #8] - cmp r3, #0 - ldmeqia sp!, {r4, pc} - mov r2, #0 - str r2, [r1, #8] - ldr r1, [r1, #0xc] - blx r3 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DABC8: .word _021E36EC -_020DABCC: .word 0x027FFF94 - arm_func_end MicCommonCallback - - arm_func_start MicStartAutoSampling -MicStartAutoSampling: ; 0x020DABD0 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - orr r1, r3, #0x4100 - mov r6, r0 - mov r4, r2 - orr r1, r1, #0x2000000 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - mov r0, r6, lsr #0x10 - orr r1, r0, #0x10000 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - orr r1, r0, #0x20000 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - mov r0, r5, lsr #0x10 - orr r1, r0, #0x30000 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - orr r1, r0, #0x40000 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - mov r0, r4, lsr #0x10 - orr r1, r0, #0x50000 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, pc} - ldr r1, _020DACD0 ; =0x01060000 - mov r0, r4, lsl #0x10 - orr r1, r1, r0, lsr #16 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DACD0: .word 0x01060000 - arm_func_end MicStartAutoSampling - - arm_func_start MicStopAutoSampling -MicStopAutoSampling: ; 0x020DACD4 - stmdb sp!, {r3, lr} - ldr r1, _020DACF8 ; =0x03004200 - mov r0, #9 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020DACF8: .word 0x03004200 - arm_func_end MicStopAutoSampling - - arm_func_start MicGetResultCallback -MicGetResultCallback: ; 0x020DACFC - ldr r1, _020DAD08 ; =_021E36EC - str r0, [r1, #0x10] - bx lr - .align 2, 0 -_020DAD08: .word _021E36EC - arm_func_end MicGetResultCallback - - arm_func_start MicWaitBusy -MicWaitBusy: ; 0x020DAD0C - ldr ip, _020DAD20 ; =_021E36F0 -_020DAD10: - ldr r0, [ip] - cmp r0, #1 - beq _020DAD10 - bx lr - .align 2, 0 -_020DAD20: .word _021E36F0 - arm_func_end MicWaitBusy - - arm_func_start PMi_Lock -PMi_Lock: ; 0x020DAD24 - stmdb sp!, {r3, lr} - bl OS_DisableInterrupts - ldr r1, _020DAD5C ; =_021E370C - ldr r2, [r1, #0x1c] - cmp r2, #0 - beq _020DAD48 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r3, pc} -_020DAD48: - mov r2, #1 - str r2, [r1, #0x1c] - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_020DAD5C: .word _021E370C - arm_func_end PMi_Lock - - arm_func_start PMi_WaitBusy -PMi_WaitBusy: ; 0x020DAD60 - stmdb sp!, {r4, lr} - ldr r0, _020DAD98 ; =_021E370C - ldr r4, _020DAD9C ; =_021E3728 - ldr r0, [r0, #0x1c] - cmp r0, #0 - ldmeqia sp!, {r4, pc} -_020DAD78: - bl OS_GetCpsrIrq - cmp r0, #0x80 - bne _020DAD88 - bl PXIi_HandlerRecvFifoNotEmpty -_020DAD88: - ldr r0, [r4] - cmp r0, #0 - bne _020DAD78 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DAD98: .word _021E370C -_020DAD9C: .word _021E3728 - arm_func_end PMi_WaitBusy - - arm_func_start PMi_DummyCallback -PMi_DummyCallback: ; 0x020DADA0 - str r0, [r1] - bx lr - arm_func_end PMi_DummyCallback - - arm_func_start PMi_CallCallbackAndUnlock -PMi_CallCallbackAndUnlock: ; 0x020DADA8 - stmdb sp!, {r3, lr} - ldr r2, _020DADE4 ; =_021E370C - ldr r1, [r2, #0x1c] - ldr ip, [r2, #0x20] - cmp r1, #0 - ldr r1, [r2, #0x24] - movne r3, #0 - strne r3, [r2, #0x1c] - cmp ip, #0 - ldmeqia sp!, {r3, pc} - ldr r2, _020DADE4 ; =_021E370C - mov r3, #0 - str r3, [r2, #0x20] - blx ip - ldmia sp!, {r3, pc} - .align 2, 0 -_020DADE4: .word _021E370C - arm_func_end PMi_CallCallbackAndUnlock - - arm_func_start PM_Init -PM_Init: ; 0x020DADE8 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020DAE78 ; =_021E370C - ldrh r1, [r0] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - strh r1, [r0] - mov r1, #0 - str r1, [r0, #0x1c] - str r1, [r0, #0x20] - bl PXI_Init - mov r5, #8 - mov r4, #1 -_020DAE1C: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020DAE1C - ldr r1, _020DAE7C ; =PMi_CommonCallback - mov r0, #8 - bl PXI_SetFifoRecvCallback - mov r3, #0 - ldr r0, _020DAE80 ; =_021E3750 - mov r2, r3 -_020DAE48: - mov r1, r3, lsl #3 - add r3, r3, #1 - strh r2, [r0, r1] - cmp r3, #5 - blt _020DAE48 - ldr r0, _020DAE84 ; =_021E3738 - bl OS_InitMutex - ldr r1, _020DAE88 ; =0x027FFC3C - ldr r0, _020DAE78 ; =_021E370C - ldr r1, [r1] - str r1, [r0, #0x10] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DAE78: .word _021E370C -_020DAE7C: .word PMi_CommonCallback -_020DAE80: .word _021E3750 -_020DAE84: .word _021E3738 -_020DAE88: .word 0x027FFC3C - arm_func_end PM_Init - - arm_func_start PMi_CommonCallback -PMi_CommonCallback: ; 0x020DAE8C - stmdb sp!, {r3, lr} - cmp r2, #0 - beq _020DAEA4 - mov r0, #2 - bl PMi_CallCallbackAndUnlock - ldmia sp!, {r3, pc} -_020DAEA4: - and r0, r1, #0x7f00 - mov r0, r0, lsl #8 - mov r2, r0, lsr #0x10 - and r0, r1, #0xff - cmp r2, #0x70 - blo _020DAEF4 - cmp r2, #0x74 - bhi _020DAEF4 - ldr r1, _020DAF48 ; =_021E3754 - sub r2, r2, #0x70 - ldr r1, [r1, r2, lsl #3] - and r0, r0, #0xff - cmp r1, #0 - strneh r0, [r1] - mov r1, r2, lsl #3 - ldr r0, _020DAF4C ; =_021E3750 - mov r2, #1 - strh r2, [r0, r1] - mov r0, #0 - b _020DAF40 -_020DAEF4: - cmp r2, #0x60 - bne _020DAF0C - ldr r1, _020DAF50 ; =_021E370C - mov r2, #1 - str r2, [r1, #4] - b _020DAF40 -_020DAF0C: - cmp r2, #0x62 - bne _020DAF24 - ldr r1, _020DAF50 ; =_021E370C - mov r2, #1 - str r2, [r1, #8] - b _020DAF40 -_020DAF24: - cmp r2, #0x67 - bne _020DAF40 - ldr r1, _020DAF50 ; =_021E370C - ldr r1, [r1, #0x28] - cmp r1, #0 - strne r0, [r1] - mov r0, #0 -_020DAF40: - bl PMi_CallCallbackAndUnlock - ldmia sp!, {r3, pc} - .align 2, 0 -_020DAF48: .word _021E3754 -_020DAF4C: .word _021E3750 -_020DAF50: .word _021E370C - arm_func_end PMi_CommonCallback - - arm_func_start PMi_SendSleepStart -PMi_SendSleepStart: ; 0x020DAF54 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl PMi_Lock - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _020DAFDC ; =_021E370C - mov r2, #0 - ldr r0, _020DAFE0 ; =0x03006000 - str r2, [r1, #4] - bl PMi_SendPxiData - ldr r0, _020DAFDC ; =_021E370C -_020DAF88: - ldr r1, [r0, #4] - cmp r1, #0 - beq _020DAF88 - ldr ip, _020DAFDC ; =_021E370C - mov r0, #0 - str r0, [ip, #4] - mov r2, r0 - mov r1, #2 - mov r3, #1 - str r0, [ip, #8] - bl PMi_SetLCDPower - and r0, r5, #0xff - orr r0, r0, #0x6100 - orr r0, r0, #0x2000000 - bl PMi_SendPxiData - ldr r1, _020DAFE4 ; =0x01010000 - mov r0, r4, lsl #0x10 - orr r0, r1, r0, lsr #16 - bl PMi_SendPxiData - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DAFDC: .word _021E370C -_020DAFE0: .word 0x03006000 -_020DAFE4: .word 0x01010000 - arm_func_end PMi_SendSleepStart - - arm_func_start PM_SendUtilityCommandAsync -PM_SendUtilityCommandAsync: ; 0x020DAFE8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl PMi_Lock - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6, lsr #0x10 - and r0, r0, #0xff - ldr r1, _020DB040 ; =_021E370C - orr r0, r0, #0x6300 - str r5, [r1, #0x20] - orr r0, r0, #0x2000000 - str r4, [r1, #0x24] - bl PMi_SendPxiData - ldr r1, _020DB044 ; =0x01010000 - mov r0, r6, lsl #0x10 - orr r0, r1, r0, lsr #16 - bl PMi_SendPxiData - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DB040: .word _021E370C -_020DB044: .word 0x01010000 - arm_func_end PM_SendUtilityCommandAsync - - arm_func_start PMi_ReadRegisterAsync -PMi_ReadRegisterAsync: ; 0x020DB048 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl PMi_Lock - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _020DB0A8 ; =_021E370C - and r0, r5, #0xff - str r7, [r1, #0x20] - orr r0, r0, #0x6500 - ldr r2, _020DB0AC ; =_021E3750 - str r6, [r1, #0x24] - mov r3, r5, lsl #3 - mov ip, #0 - ldr r1, _020DB0B0 ; =_021E3754 - strh ip, [r2, r3] - orr r0, r0, #0x3000000 - str r4, [r1, r5, lsl #3] - bl PMi_SendPxiData - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DB0A8: .word _021E370C -_020DB0AC: .word _021E3750 -_020DB0B0: .word _021E3754 - arm_func_end PMi_ReadRegisterAsync - - arm_func_start PMi_ReadRegister -PMi_ReadRegister: ; 0x020DB0B4 - stmdb sp!, {r3, lr} - ldr r2, _020DB0D8 ; =PMi_DummyCallback - add r3, sp, #0 - bl PMi_ReadRegisterAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB0D8: .word PMi_DummyCallback - arm_func_end PMi_ReadRegister - - arm_func_start PMi_WriteRegisterAsync -PMi_WriteRegisterAsync: ; 0x020DB0DC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl PMi_Lock - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - and r0, r7, #0xff - ldr r1, _020DB134 ; =_021E370C - orr r0, r0, #0x6400 - str r5, [r1, #0x20] - orr r0, r0, #0x2000000 - str r4, [r1, #0x24] - bl PMi_SendPxiData - ldr r1, _020DB138 ; =0x01010000 - mov r0, r6, lsl #0x10 - orr r0, r1, r0, lsr #16 - bl PMi_SendPxiData - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DB134: .word _021E370C -_020DB138: .word 0x01010000 - arm_func_end PMi_WriteRegisterAsync - - arm_func_start PMi_WriteRegister -PMi_WriteRegister: ; 0x020DB13C - stmdb sp!, {r3, lr} - ldr r2, _020DB160 ; =PMi_DummyCallback - add r3, sp, #0 - bl PMi_WriteRegisterAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB160: .word PMi_DummyCallback - arm_func_end PMi_WriteRegister - - arm_func_start PMi_SetLEDAsync -PMi_SetLEDAsync: ; 0x020DB164 - stmdb sp!, {r3, lr} - cmp r0, #1 - beq _020DB184 - cmp r0, #2 - beq _020DB194 - cmp r0, #3 - beq _020DB18C - b _020DB19C -_020DB184: - mov r0, #1 - b _020DB1A0 -_020DB18C: - mov r0, #2 - b _020DB1A0 -_020DB194: - mov r0, #3 - b _020DB1A0 -_020DB19C: - mov r0, #0 -_020DB1A0: - cmp r0, #0 - ldreq r0, _020DB1B4 ; =0x0000FFFF - ldmeqia sp!, {r3, pc} - bl PM_SendUtilityCommandAsync - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB1B4: .word 0x0000FFFF - arm_func_end PMi_SetLEDAsync - - arm_func_start PMi_SetLED -PMi_SetLED: ; 0x020DB1B8 - stmdb sp!, {r3, lr} - ldr r1, _020DB1DC ; =PMi_DummyCallback - add r2, sp, #0 - bl PMi_SetLEDAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB1DC: .word PMi_DummyCallback - arm_func_end PMi_SetLED - - arm_func_start PM_SetBackLightAsync -PM_SetBackLightAsync: ; 0x020DB1E0 - stmdb sp!, {r3, lr} - cmp r0, #0 - mov ip, #0 - bne _020DB204 - cmp r1, #1 - moveq ip, #6 - cmp r1, #0 - moveq ip, #7 - b _020DB238 -_020DB204: - cmp r0, #1 - bne _020DB220 - cmp r1, #1 - moveq ip, #4 - cmp r1, #0 - moveq ip, #5 - b _020DB238 -_020DB220: - cmp r0, #2 - bne _020DB238 - cmp r1, #1 - moveq ip, #8 - cmp r1, #0 - moveq ip, #9 -_020DB238: - cmp ip, #0 - ldreq r0, _020DB258 ; =0x0000FFFF - ldmeqia sp!, {r3, pc} - mov r1, r2 - mov r0, ip - mov r2, r3 - bl PM_SendUtilityCommandAsync - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB258: .word 0x0000FFFF - arm_func_end PM_SetBackLightAsync - - arm_func_start PM_SetBackLight -PM_SetBackLight: ; 0x020DB25C - stmdb sp!, {r3, lr} - ldr r2, _020DB280 ; =PMi_DummyCallback - add r3, sp, #0 - bl PM_SetBackLightAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB280: .word PMi_DummyCallback - arm_func_end PM_SetBackLight - - arm_func_start PM_ForceToPowerOffAsync -PM_ForceToPowerOffAsync: ; 0x020DB284 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - ldr r0, _020DB32C ; =0x00996A00 - mov r6, r1 - bl OS_SpinWait - bl PM_GetLCDPower - cmp r0, #1 - beq _020DB314 - add r0, sp, #4 - add r1, sp, #0 - bl PM_GetBackLight - ldr r0, [sp, #4] - cmp r0, #0 - beq _020DB2CC - mov r0, #0 - mov r1, r0 - bl PM_SetBackLight -_020DB2CC: - ldr r0, [sp] - cmp r0, #0 - beq _020DB2E4 - mov r0, #1 - mov r1, #0 - bl PM_SetBackLight -_020DB2E4: - mov r0, #1 - bl PM_SetLCDPower - cmp r0, #0 - bne _020DB314 - ldr r5, _020DB32C ; =0x00996A00 - mov r4, #1 -_020DB2FC: - mov r0, r5 - bl OS_SpinWait - mov r0, r4 - bl PM_SetLCDPower - cmp r0, #0 - beq _020DB2FC -_020DB314: - mov r1, r7 - mov r2, r6 - mov r0, #0xe - bl PM_SendUtilityCommandAsync - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DB32C: .word 0x00996A00 - arm_func_end PM_ForceToPowerOffAsync - - arm_func_start PM_ForceToPowerOff -PM_ForceToPowerOff: ; 0x020DB330 - stmdb sp!, {r3, lr} - ldr r0, _020DB354 ; =PMi_DummyCallback - add r1, sp, #0 - bl PM_ForceToPowerOffAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB354: .word PMi_DummyCallback - arm_func_end PM_ForceToPowerOff - - arm_func_start PM_SetAmp -PM_SetAmp: ; 0x020DB358 - ldr r1, _020DB368 ; =_021E370C - ldr ip, _020DB36C ; =PMi_SetAmp - str r0, [r1, #0x14] - bx ip - .align 2, 0 -_020DB368: .word _021E370C -_020DB36C: .word PMi_SetAmp - arm_func_end PM_SetAmp - - arm_func_start PMi_SetAmp -PMi_SetAmp: ; 0x020DB370 - stmdb sp!, {r4, lr} - mov r4, r0 - bl PM_GetLCDPower - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, #2 - bl PMi_WriteRegister - ldmia sp!, {r4, pc} - arm_func_end PMi_SetAmp - - arm_func_start PM_SetAmpGain -PM_SetAmpGain: ; 0x020DB39C - ldr ip, _020DB3B0 ; =PMi_WriteRegister - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, #3 - bx ip - .align 2, 0 -_020DB3B0: .word PMi_WriteRegister - arm_func_end PM_SetAmpGain - - arm_func_start PM_GetBackLight -PM_GetBackLight: ; 0x020DB3B4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - add r1, sp, #0 - mov r0, #0 - bl PMi_ReadRegister - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r5, #0 - beq _020DB3F0 - ldrh r1, [sp] - tst r1, #8 - movne r1, #1 - moveq r1, #0 - str r1, [r5] -_020DB3F0: - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r1, [sp] - tst r1, #4 - movne r1, #1 - moveq r1, #0 - str r1, [r4] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end PM_GetBackLight - - arm_func_start PMi_SendPxiData -PMi_SendPxiData: ; 0x020DB410 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #8 - mov r4, #0 -_020DB420: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _020DB420 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end PMi_SendPxiData - - arm_func_start PM_GoSleepMode -PM_GoSleepMode: ; 0x020DB43C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r3, _020DB660 ; =_021E370C - mov sl, r0 - ldr r0, [r3, #0xc] - mov sb, r1 - mov fp, r2 - mov r4, #0 - bl PMi_ExecuteList - ldr r1, _020DB664 ; =0x04000208 - mov r0, r4 - ldrh r8, [r1] - strh r0, [r1] - bl OS_DisableInterrupts - str r0, [sp, #8] - ldr r0, _020DB668 ; =0x003FFFFF - bl OS_DisableIrqMask - str r0, [sp, #4] - bl OS_IsTickAvailable - cmp r0, #0 - movne r0, #8 - moveq r0, r4 - orr r0, r0, #0x40000 - bl OS_SetIrqMask - ldr r0, [sp, #8] - bl OS_RestoreInterrupts - ldr r2, _020DB664 ; =0x04000208 - mov r0, #1 - ldrh r1, [r2] - tst sl, #8 - strh r0, [r2] - beq _020DB4CC - ldr r0, _020DB66C ; =0x027FFC40 - ldrh r0, [r0] - cmp r0, #2 - biceq sl, sl, #8 -_020DB4CC: - tst sl, #0x10 - beq _020DB4E0 - bl CTRDG_IsExisting - cmp r0, #0 - biceq sl, sl, #0x10 -_020DB4E0: - mov r1, #0x4000000 - add r0, r1, #0x1000 - ldr r5, [r1] - ldr r6, [r0] - bl PM_GetLCDPower - str r0, [sp] - add r0, sp, #0x14 - add r1, sp, #0x10 - bl PM_GetBackLight - mov r0, #2 - mov r1, #0 - bl PM_SetBackLight - ldr r2, _020DB670 ; =0x027FFC3C - ldr r0, [r2] - str r0, [sp, #0xc] -_020DB51C: - ldr r1, [r2] - ldr r0, [sp, #0xc] - cmp r0, r1 - beq _020DB51C - ldr r0, [r2] - mov r2, #0x4000000 - str r0, [sp, #0xc] - ldr r0, [r2] - add r1, r2, #0x1000 - bic r0, r0, #0x30000 - str r0, [r2] - ldr r0, [r1] - bic r0, r0, #0x10000 - str r0, [r1] - ldr r2, _020DB670 ; =0x027FFC3C -_020DB558: - ldr r1, [r2] - ldr r0, [sp, #0xc] - cmp r0, r1 - beq _020DB558 - ldr r0, [r2] - str r0, [sp, #0xc] - ldr r2, _020DB670 ; =0x027FFC3C -_020DB574: - ldr r1, [r2] - ldr r0, [sp, #0xc] - cmp r0, r1 - beq _020DB574 - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x10] - orr r0, sl, r0, lsl #5 - orr r0, r0, r1, lsl #6 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - orr r0, sb, fp - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 -_020DB5A8: - mov r0, r7 - mov r1, sb - bl PMi_SendSleepStart - cmp r0, #0 - bne _020DB5A8 - bl OS_Halt - tst sl, #8 - beq _020DB5D8 - ldr r0, _020DB674 ; =0x04000214 - ldr r0, [r0] - tst r0, #0x100000 - movne r4, #1 -_020DB5D8: - cmp r4, #0 - bne _020DB618 - ldr r0, [sp] - cmp r0, #1 - mov r0, #1 - bne _020DB604 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl PMi_SetLCDPower - b _020DB608 -_020DB604: - bl PMi_SetLED -_020DB608: - mov r0, #0x4000000 - str r5, [r0] - add r0, r0, #0x1000 - str r6, [r0] -_020DB618: - ldr r0, _020DB678 ; =0x00708100 - bl OS_SpinWait - bl OS_DisableInterrupts - ldr r0, [sp, #4] - bl OS_SetIrqMask - ldr r0, [sp, #8] - bl OS_RestoreInterrupts - ldr r1, _020DB664 ; =0x04000208 - cmp r4, #0 - ldrh r0, [r1] - strh r8, [r1] - beq _020DB64C - bl PM_ForceToPowerOff -_020DB64C: - ldr r0, _020DB660 ; =_021E370C - ldr r0, [r0, #0x18] - bl PMi_ExecuteList - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DB660: .word _021E370C -_020DB664: .word 0x04000208 -_020DB668: .word 0x003FFFFF -_020DB66C: .word 0x027FFC40 -_020DB670: .word 0x027FFC3C -_020DB674: .word 0x04000214 -_020DB678: .word 0x00708100 - arm_func_end PM_GoSleepMode - - arm_func_start PMi_SetLCDPower -PMi_SetLCDPower: ; 0x020DB67C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r3 - cmp r0, #0 - beq _020DB70C - cmp r0, #1 - bne _020DB760 - cmp r2, #0 - bne _020DB6C0 - ldr r1, _020DB768 ; =0x027FFC3C - ldr r0, _020DB76C ; =_021E370C - ldr r1, [r1] - ldr r0, [r0, #0x10] - sub r0, r1, r0 - cmp r0, #7 - movls r0, #0 - ldmlsia sp!, {r3, r4, r5, pc} -_020DB6C0: - cmp r5, #0 - beq _020DB6EC - cmp r4, #0 - beq _020DB6DC - mov r0, r5 - bl PMi_SetLED - b _020DB6EC -_020DB6DC: - mov r1, #0 - mov r0, r5 - mov r2, r1 - bl PMi_SetLEDAsync -_020DB6EC: - ldr r2, _020DB770 ; =0x04000304 - ldr r0, _020DB76C ; =_021E370C - ldrh r1, [r2] - orr r1, r1, #1 - strh r1, [r2] - ldr r0, [r0, #0x14] - bl PMi_SetAmp - b _020DB760 -_020DB70C: - mov r0, #0 - bl PMi_SetAmp - ldr r3, _020DB770 ; =0x04000304 - ldr r1, _020DB768 ; =0x027FFC3C - ldrh r2, [r3] - ldr r0, _020DB76C ; =_021E370C - cmp r5, #0 - bic r2, r2, #1 - strh r2, [r3] - ldr r1, [r1] - str r1, [r0, #0x10] - beq _020DB760 - cmp r4, #0 - beq _020DB750 - mov r0, r5 - bl PMi_SetLED - b _020DB760 -_020DB750: - mov r1, #0 - mov r0, r5 - mov r2, r1 - bl PMi_SetLEDAsync -_020DB760: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DB768: .word 0x027FFC3C -_020DB76C: .word _021E370C -_020DB770: .word 0x04000304 - arm_func_end PMi_SetLCDPower - - arm_func_start PM_SetLCDPower -PM_SetLCDPower: ; 0x020DB774 - ldr ip, _020DB790 ; =PMi_SetLCDPower - mov r1, #0 - cmp r0, #1 - movne r0, #0 - mov r2, r1 - mov r3, #1 - bx ip - .align 2, 0 -_020DB790: .word PMi_SetLCDPower - arm_func_end PM_SetLCDPower - - arm_func_start PM_GetLCDPower -PM_GetLCDPower: ; 0x020DB794 - ldr r0, _020DB7AC ; =0x04000304 - ldrh r0, [r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_020DB7AC: .word 0x04000304 - arm_func_end PM_GetLCDPower - - arm_func_start PMi_SendLEDPatternCommandAsync -PMi_SendLEDPatternCommandAsync: ; 0x020DB7B0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl PMi_Lock - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - and r0, r6, #0xff - ldr r1, _020DB7F4 ; =_021E370C - orr r0, r0, #0x6600 - str r5, [r1, #0x20] - orr r0, r0, #0x3000000 - str r4, [r1, #0x24] - bl PMi_SendPxiData - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DB7F4: .word _021E370C - arm_func_end PMi_SendLEDPatternCommandAsync - - arm_func_start PMi_SendLEDPatternCommand -PMi_SendLEDPatternCommand: ; 0x020DB7F8 - stmdb sp!, {r3, lr} - ldr r1, _020DB81C ; =PMi_DummyCallback - add r2, sp, #0 - bl PMi_SendLEDPatternCommandAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB81C: .word PMi_DummyCallback - arm_func_end PMi_SendLEDPatternCommand - - arm_func_start PM_GetLEDPatternAsync -PM_GetLEDPatternAsync: ; 0x020DB820 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl PMi_Lock - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _020DB860 ; =_021E370C - ldr r0, _020DB864 ; =0x03006700 - str r5, [r1, #0x20] - str r4, [r1, #0x24] - str r6, [r1, #0x28] - bl PMi_SendPxiData - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DB860: .word _021E370C -_020DB864: .word 0x03006700 - arm_func_end PM_GetLEDPatternAsync - - arm_func_start PM_GetLEDPattern -PM_GetLEDPattern: ; 0x020DB868 - stmdb sp!, {r3, lr} - ldr r1, _020DB88C ; =PMi_DummyCallback - add r2, sp, #0 - bl PM_GetLEDPatternAsync - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl PMi_WaitBusy - ldr r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DB88C: .word PMi_DummyCallback - arm_func_end PM_GetLEDPattern - - arm_func_start PMi_PrependList -PMi_PrependList: ; 0x020DB890 - cmp r0, #0 - ldrne r2, [r0] - strne r2, [r1, #8] - strne r1, [r0] - bx lr - arm_func_end PMi_PrependList - - arm_func_start PMi_AppendList -PMi_AppendList: ; 0x020DB8A4 - cmp r0, #0 - bxeq lr - ldr r2, [r0] - cmp r2, #0 - bne _020DB8C8 - mov r2, #0 - str r2, [r1, #8] - str r1, [r0] - bx lr -_020DB8C8: - ldr r0, [r2, #8] - cmp r0, #0 - beq _020DB8E4 -_020DB8D4: - mov r2, r0 - ldr r0, [r0, #8] - cmp r0, #0 - bne _020DB8D4 -_020DB8E4: - str r0, [r1, #8] - str r1, [r2, #8] - bx lr - arm_func_end PMi_AppendList - - arm_func_start PMi_DeleteList -PMi_DeleteList: ; 0x020DB8F0 - cmp r0, #0 - ldrne r2, [r0] - movne r3, r2 - cmpne r2, #0 - bxeq lr -_020DB904: - cmp r2, r1 - bne _020DB924 - cmp r2, r3 - ldreq r1, [r2, #8] - streq r1, [r0] - ldrne r0, [r2, #8] - strne r0, [r3, #8] - bx lr -_020DB924: - mov r3, r2 - ldr r2, [r2, #8] - cmp r2, #0 - bne _020DB904 - bx lr - arm_func_end PMi_DeleteList - - arm_func_start PMi_ExecuteList -PMi_ExecuteList: ; 0x020DB938 - stmdb sp!, {r4, lr} - movs r4, r0 - ldmeqia sp!, {r4, pc} -_020DB944: - ldr r0, [r4, #4] - ldr r1, [r4] - blx r1 - ldr r4, [r4, #8] - cmp r4, #0 - bne _020DB944 - ldmia sp!, {r4, pc} - arm_func_end PMi_ExecuteList - - arm_func_start PM_PrependPreSleepCallback -PM_PrependPreSleepCallback: ; 0x020DB960 - ldr ip, _020DB970 ; =PMi_PrependList - mov r1, r0 - ldr r0, _020DB974 ; =_021E3718 - bx ip - .align 2, 0 -_020DB970: .word PMi_PrependList -_020DB974: .word _021E3718 - arm_func_end PM_PrependPreSleepCallback - - arm_func_start PM_AppendPostSleepCallback -PM_AppendPostSleepCallback: ; 0x020DB978 - ldr ip, _020DB988 ; =PMi_AppendList - mov r1, r0 - ldr r0, _020DB98C ; =_021E3724 - bx ip - .align 2, 0 -_020DB988: .word PMi_AppendList -_020DB98C: .word _021E3724 - arm_func_end PM_AppendPostSleepCallback - - arm_func_start PM_DeletePreSleepCallback -PM_DeletePreSleepCallback: ; 0x020DB990 - ldr ip, _020DB9A0 ; =PMi_DeleteList - mov r1, r0 - ldr r0, _020DB9A4 ; =_021E3718 - bx ip - .align 2, 0 -_020DB9A0: .word PMi_DeleteList -_020DB9A4: .word _021E3718 - arm_func_end PM_DeletePreSleepCallback - - arm_func_start PM_DeletePostSleepCallback -PM_DeletePostSleepCallback: ; 0x020DB9A8 - ldr ip, _020DB9B8 ; =PMi_DeleteList - mov r1, r0 - ldr r0, _020DB9BC ; =_021E3724 - bx ip - .align 2, 0 -_020DB9B8: .word PMi_DeleteList -_020DB9BC: .word _021E3724 - arm_func_end PM_DeletePostSleepCallback - - arm_func_start RTC_Init -RTC_Init: ; 0x020DB9C0 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020DBA24 ; =_021E3778 - ldrh r1, [r0] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - strh r1, [r0] - mov r1, #0 - str r1, [r0, #0xc] - str r1, [r0, #0x10] - str r1, [r0, #0x28] - str r1, [r0, #0x14] - str r1, [r0, #0x18] - bl PXI_Init - mov r5, #5 - mov r4, #1 -_020DBA00: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020DBA00 - ldr r1, _020DBA28 ; =RtcCommonCallback - mov r0, #5 - bl PXI_SetFifoRecvCallback - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DBA24: .word _021E3778 -_020DBA28: .word RtcCommonCallback - arm_func_end RTC_Init - - arm_func_start RTC_GetDateAsync -RTC_GetDateAsync: ; 0x020DBA2C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl OS_DisableInterrupts - ldr r1, _020DBA98 ; =_021E3778 - ldr r2, [r1, #0xc] - cmp r2, #0 - beq _020DBA5C - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_020DBA5C: - mov r2, #1 - str r2, [r1, #0xc] - bl OS_RestoreInterrupts - ldr r0, _020DBA98 ; =_021E3778 - mov r1, #0 - str r1, [r0, #0x20] - str r1, [r0, #0x24] - str r6, [r0, #0x14] - str r5, [r0, #0x10] - str r4, [r0, #0x1c] - bl RTCi_ReadRawDateAsync - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DBA98: .word _021E3778 - arm_func_end RTC_GetDateAsync - - arm_func_start RTC_GetDate -RTC_GetDate: ; 0x020DBA9C - stmdb sp!, {r3, lr} - ldr r1, _020DBACC ; =RtcGetResultCallback - mov r2, #0 - bl RTC_GetDateAsync - ldr r1, _020DBAD0 ; =_021E3778 - cmp r0, #0 - str r0, [r1, #0x2c] - bne _020DBAC0 - bl RtcWaitBusy -_020DBAC0: - ldr r0, _020DBAD0 ; =_021E3778 - ldr r0, [r0, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DBACC: .word RtcGetResultCallback -_020DBAD0: .word _021E3778 - arm_func_end RTC_GetDate - - arm_func_start RTC_GetTimeAsync -RTC_GetTimeAsync: ; 0x020DBAD4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl OS_DisableInterrupts - ldr r1, _020DBB44 ; =_021E3778 - ldr r2, [r1, #0xc] - cmp r2, #0 - beq _020DBB04 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_020DBB04: - mov r2, #1 - str r2, [r1, #0xc] - bl OS_RestoreInterrupts - ldr r0, _020DBB44 ; =_021E3778 - mov r1, #1 - str r1, [r0, #0x20] - mov r1, #0 - str r1, [r0, #0x24] - str r6, [r0, #0x14] - str r5, [r0, #0x10] - str r4, [r0, #0x1c] - bl RTCi_ReadRawTimeAsync - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DBB44: .word _021E3778 - arm_func_end RTC_GetTimeAsync - - arm_func_start RTC_GetTime -RTC_GetTime: ; 0x020DBB48 - stmdb sp!, {r3, lr} - ldr r1, _020DBB78 ; =RtcGetResultCallback - mov r2, #0 - bl RTC_GetTimeAsync - ldr r1, _020DBB7C ; =_021E3778 - cmp r0, #0 - str r0, [r1, #0x2c] - bne _020DBB6C - bl RtcWaitBusy -_020DBB6C: - ldr r0, _020DBB7C ; =_021E3778 - ldr r0, [r0, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DBB78: .word RtcGetResultCallback -_020DBB7C: .word _021E3778 - arm_func_end RTC_GetTime - - arm_func_start RTC_GetDateTimeAsync -RTC_GetDateTimeAsync: ; 0x020DBB80 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl OS_DisableInterrupts - ldr r1, _020DBBF8 ; =_021E3778 - ldr r2, [r1, #0xc] - cmp r2, #0 - beq _020DBBB4 - bl OS_RestoreInterrupts - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020DBBB4: - mov r2, #1 - str r2, [r1, #0xc] - bl OS_RestoreInterrupts - ldr r0, _020DBBF8 ; =_021E3778 - mov r1, #2 - str r1, [r0, #0x20] - mov r1, #0 - str r1, [r0, #0x24] - str r7, [r0, #0x14] - str r6, [r0, #0x18] - str r5, [r0, #0x10] - str r4, [r0, #0x1c] - bl RTCi_ReadRawDateTimeAsync - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DBBF8: .word _021E3778 - arm_func_end RTC_GetDateTimeAsync - - arm_func_start RTC_GetDateTime -RTC_GetDateTime: ; 0x020DBBFC - stmdb sp!, {r3, lr} - ldr r2, _020DBC2C ; =RtcGetResultCallback - mov r3, #0 - bl RTC_GetDateTimeAsync - ldr r1, _020DBC30 ; =_021E3778 - cmp r0, #0 - str r0, [r1, #0x2c] - bne _020DBC20 - bl RtcWaitBusy -_020DBC20: - ldr r0, _020DBC30 ; =_021E3778 - ldr r0, [r0, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DBC2C: .word RtcGetResultCallback -_020DBC30: .word _021E3778 - arm_func_end RTC_GetDateTime - - arm_func_start RtcCommonCallback -RtcCommonCallback: ; 0x020DBC34 - stmdb sp!, {r3, r4, r5, lr} - cmp r2, #0 - beq _020DBC90 - ldr r0, _020DC174 ; =_021E3778 - ldr r1, [r0, #0x24] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #0x24] - ldr r0, _020DC174 ; =_021E3778 - ldr r1, [r0, #0xc] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #0xc] - ldr r0, _020DC174 ; =_021E3778 - ldr r2, [r0, #0x10] - cmp r2, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, #0 - str r1, [r0, #0x10] - ldr r1, [r0, #0x1c] - mov r0, #6 - blx r2 - ldmia sp!, {r3, r4, r5, pc} -_020DBC90: - and r0, r1, #0x7f00 - mov r0, r0, lsr #8 - and r0, r0, #0xff - cmp r0, #0x30 - and r2, r1, #0xff - bne _020DBCC0 - ldr r0, _020DC174 ; =_021E3778 - ldr r0, [r0, #0x28] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - blx r0 - ldmia sp!, {r3, r4, r5, pc} -_020DBCC0: - cmp r2, #0 - bne _020DC0E4 - ldr r0, _020DC174 ; =_021E3778 - mov r4, #0 - ldr r1, [r0, #0x20] - cmp r1, #0xf - addls pc, pc, r1, lsl #2 - b _020DC0D0 -_020DBCE0: ; jump table - b _020DBD20 ; case 0 - b _020DBD7C ; case 1 - b _020DBDCC ; case 2 - b _020DC12C ; case 3 - b _020DC12C ; case 4 - b _020DC12C ; case 5 - b _020DBE74 ; case 6 - b _020DBEA4 ; case 7 - b _020DBEC8 ; case 8 - b _020DBF70 ; case 9 - b _020DC024 ; case 10 - b _020DC12C ; case 11 - b _020DC12C ; case 12 - b _020DC12C ; case 13 - b _020DC12C ; case 14 - b _020DC12C ; case 15 -_020DBD20: - ldr r1, _020DC178 ; =0x027FFDE8 - ldr r5, [r0, #0x14] - ldr r0, [r1] - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x18 - bl RtcBCD2HEX - ldr r1, _020DC178 ; =0x027FFDE8 - str r0, [r5] - ldr r0, [r1] - mov r0, r0, lsl #0x13 - mov r0, r0, lsr #0x1b - bl RtcBCD2HEX - ldr r1, _020DC178 ; =0x027FFDE8 - str r0, [r5, #4] - ldr r0, [r1] - mov r0, r0, lsl #0xa - mov r0, r0, lsr #0x1a - bl RtcBCD2HEX - str r0, [r5, #8] - mov r0, r5 - bl RTC_GetDayOfWeek - str r0, [r5, #0xc] - b _020DC12C -_020DBD7C: - ldr r1, _020DC17C ; =0x027FFDEC - ldr r5, [r0, #0x14] - ldr r0, [r1] - mov r0, r0, lsl #0x1a - mov r0, r0, lsr #0x1a - bl RtcBCD2HEX - ldr r1, _020DC17C ; =0x027FFDEC - str r0, [r5] - ldr r0, [r1] - mov r0, r0, lsl #0x11 - mov r0, r0, lsr #0x19 - bl RtcBCD2HEX - ldr r1, _020DC17C ; =0x027FFDEC - str r0, [r5, #4] - ldr r0, [r1] - mov r0, r0, lsl #9 - mov r0, r0, lsr #0x19 - bl RtcBCD2HEX - str r0, [r5, #8] - b _020DC12C -_020DBDCC: - ldr r1, _020DC178 ; =0x027FFDE8 - ldr r5, [r0, #0x14] - ldr r0, [r1] - and r0, r0, #0xff - bl RtcBCD2HEX - ldr r1, _020DC178 ; =0x027FFDE8 - str r0, [r5] - ldr r0, [r1] - mov r0, r0, lsl #0x13 - mov r0, r0, lsr #0x1b - bl RtcBCD2HEX - ldr r1, _020DC178 ; =0x027FFDE8 - str r0, [r5, #4] - ldr r0, [r1] - mov r0, r0, lsl #0xa - mov r0, r0, lsr #0x1a - bl RtcBCD2HEX - str r0, [r5, #8] - mov r0, r5 - bl RTC_GetDayOfWeek - ldr r1, _020DC17C ; =0x027FFDEC - str r0, [r5, #0xc] - ldr r0, [r1] - ldr r1, _020DC174 ; =_021E3778 - mov r0, r0, lsl #0x1a - mov r0, r0, lsr #0x1a - ldr r5, [r1, #0x18] - bl RtcBCD2HEX - ldr r1, _020DC17C ; =0x027FFDEC - str r0, [r5] - ldr r0, [r1] - mov r0, r0, lsl #0x11 - mov r0, r0, lsr #0x19 - bl RtcBCD2HEX - ldr r1, _020DC17C ; =0x027FFDEC - str r0, [r5, #4] - ldr r0, [r1] - mov r0, r0, lsl #9 - mov r0, r0, lsr #0x19 - bl RtcBCD2HEX - str r0, [r5, #8] - b _020DC12C -_020DBE74: - ldr r1, _020DC180 ; =0x027FFDEA - ldr r2, [r0, #0x14] - ldrh r0, [r1] - mov r0, r0, lsl #0x1c - mov r0, r0, lsr #0x1c - cmp r0, #4 - bne _020DBE9C - mov r0, #1 - str r0, [r2] - b _020DC12C -_020DBE9C: - str r4, [r2] - b _020DC12C -_020DBEA4: - ldr r1, _020DC180 ; =0x027FFDEA - ldr r2, [r0, #0x14] - ldrh r0, [r1] - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1f - movne r0, #1 - strne r0, [r2] - streq r4, [r2] - b _020DC12C -_020DBEC8: - ldr r1, _020DC17C ; =0x027FFDEC - ldr r5, [r0, #0x14] - ldr r0, [r1] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1d - str r0, [r5] - ldr r0, [r1] - mov r0, r0, lsl #0x12 - mov r0, r0, lsr #0x1a - bl RtcBCD2HEX - ldr r1, _020DC17C ; =0x027FFDEC - str r0, [r5, #4] - ldr r0, [r1] - mov r0, r0, lsl #9 - mov r0, r0, lsr #0x19 - bl RtcBCD2HEX - str r0, [r5, #8] - mov r1, r4 - ldr r0, _020DC17C ; =0x027FFDEC - str r1, [r5, #0xc] - ldr r0, [r0] - mov r0, r0, lsl #0x18 - movs r0, r0, lsr #0x1f - ldrne r0, [r5, #0xc] - addne r0, r0, #1 - strne r0, [r5, #0xc] - ldr r0, _020DC17C ; =0x027FFDEC - ldr r0, [r0] - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x1f - ldrne r0, [r5, #0xc] - addne r0, r0, #2 - strne r0, [r5, #0xc] - ldr r0, _020DC17C ; =0x027FFDEC - ldr r0, [r0] - mov r0, r0, lsl #8 - movs r0, r0, lsr #0x1f - beq _020DC12C - ldr r0, [r5, #0xc] - add r0, r0, #4 - str r0, [r5, #0xc] - b _020DC12C -_020DBF70: - ldr r3, [r0, #0x24] - cmp r3, #0 - bne _020DC01C - ldr r1, [r0, #0x14] - ldr r2, _020DC180 ; =0x027FFDEA - ldr r1, [r1] - cmp r1, #1 - ldrh r1, [r2] - bne _020DBFDC - mov r1, r1, lsl #0x1c - mov r1, r1, lsr #0x1c - cmp r1, #4 - beq _020DC12C - add r1, r3, #1 - str r1, [r0, #0x24] - ldrh r0, [r2] - bic r0, r0, #0xf - orr r0, r0, #4 - strh r0, [r2] - bl RTCi_WriteRawStatus2Async - cmp r0, #0 - bne _020DC12C - ldr r0, _020DC174 ; =_021E3778 - mov r1, r4 - str r1, [r0, #0x24] - mov r4, #3 - b _020DC12C -_020DBFDC: - mov r1, r1, lsl #0x1c - movs r1, r1, lsr #0x1c - beq _020DC12C - add r1, r3, #1 - str r1, [r0, #0x24] - ldrh r0, [r2] - bic r0, r0, #0xf - strh r0, [r2] - bl RTCi_WriteRawStatus2Async - cmp r0, #0 - bne _020DC12C - ldr r0, _020DC174 ; =_021E3778 - mov r1, r4 - str r1, [r0, #0x24] - mov r4, #3 - b _020DC12C -_020DC01C: - str r4, [r0, #0x24] - b _020DC12C -_020DC024: - ldr r3, [r0, #0x24] - cmp r3, #0 - bne _020DC0C8 - ldr r1, [r0, #0x14] - ldr r2, _020DC180 ; =0x027FFDEA - ldr r1, [r1] - cmp r1, #1 - ldrh r1, [r2] - bne _020DC088 - mov r1, r1, lsl #0x19 - movs r1, r1, lsr #0x1f - bne _020DC12C - add r1, r3, #1 - str r1, [r0, #0x24] - ldrh r0, [r2] - orr r0, r0, #0x40 - strh r0, [r2] - bl RTCi_WriteRawStatus2Async - cmp r0, #0 - bne _020DC12C - ldr r0, _020DC174 ; =_021E3778 - mov r1, r4 - str r1, [r0, #0x24] - mov r4, #3 - b _020DC12C -_020DC088: - mov r1, r1, lsl #0x19 - movs r1, r1, lsr #0x1f - beq _020DC12C - add r1, r3, #1 - str r1, [r0, #0x24] - ldrh r0, [r2] - bic r0, r0, #0x40 - strh r0, [r2] - bl RTCi_WriteRawStatus2Async - cmp r0, #0 - bne _020DC12C - ldr r0, _020DC174 ; =_021E3778 - mov r1, r4 - str r1, [r0, #0x24] - mov r4, #3 - b _020DC12C -_020DC0C8: - str r4, [r0, #0x24] - b _020DC12C -_020DC0D0: - ldr r0, _020DC174 ; =_021E3778 - mov r1, #0 - str r1, [r0, #0x24] - mov r4, #4 - b _020DC12C -_020DC0E4: - ldr r0, _020DC174 ; =_021E3778 - mov r1, #0 - str r1, [r0, #0x24] - cmp r2, #4 - addls pc, pc, r2, lsl #2 - b _020DC128 -_020DC0FC: ; jump table - b _020DC128 ; case 0 - b _020DC110 ; case 1 - b _020DC118 ; case 2 - b _020DC120 ; case 3 - b _020DC128 ; case 4 -_020DC110: - mov r4, #4 - b _020DC12C -_020DC118: - mov r4, #5 - b _020DC12C -_020DC120: - mov r4, #1 - b _020DC12C -_020DC128: - mov r4, #6 -_020DC12C: - ldr r0, _020DC174 ; =_021E3778 - ldr r1, [r0, #0x24] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, [r0, #0xc] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #0xc] - ldr r0, _020DC174 ; =_021E3778 - ldr r2, [r0, #0x10] - cmp r2, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, #0 - str r1, [r0, #0x10] - ldr r1, [r0, #0x1c] - mov r0, r4 - blx r2 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DC174: .word _021E3778 -_020DC178: .word 0x027FFDE8 -_020DC17C: .word 0x027FFDEC -_020DC180: .word 0x027FFDEA - arm_func_end RtcCommonCallback - - arm_func_start RtcBCD2HEX -RtcBCD2HEX: ; 0x020DC184 - stmdb sp!, {r3, r4, r5, lr} - mov ip, #0 - mov r2, ip - mov r3, ip -_020DC194: - mov r1, r0, lsr r3 - and r1, r1, #0xf - cmp r1, #0xa - movhs r0, #0 - ldmhsia sp!, {r3, r4, r5, pc} - add r2, r2, #1 - cmp r2, #8 - add r3, r3, #4 - blt _020DC194 - mov r5, #0 - mov r4, r5 - mov lr, #1 - mov r2, #0xa -_020DC1C8: - mov r1, r0, lsr r4 - and r3, r1, #0xf - mul r1, lr, r2 - mla ip, lr, r3, ip - add r5, r5, #1 - mov lr, r1 - cmp r5, #8 - add r4, r4, #4 - blt _020DC1C8 - mov r0, ip - ldmia sp!, {r3, r4, r5, pc} - arm_func_end RtcBCD2HEX - - arm_func_start RtcGetResultCallback -RtcGetResultCallback: ; 0x020DC1F4 - ldr r1, _020DC200 ; =_021E3778 - str r0, [r1, #0x2c] - bx lr - .align 2, 0 -_020DC200: .word _021E3778 - arm_func_end RtcGetResultCallback - - arm_func_start RtcWaitBusy -RtcWaitBusy: ; 0x020DC204 - ldr ip, _020DC218 ; =_021E3784 -_020DC208: - ldr r0, [ip] - cmp r0, #1 - beq _020DC208 - bx lr - .align 2, 0 -_020DC218: .word _021E3784 - arm_func_end RtcWaitBusy - - arm_func_start RTCi_ReadRawDateTimeAsync -RTCi_ReadRawDateTimeAsync: ; 0x020DC21C - ldr ip, _020DC228 ; =RtcSendPxiCommand - mov r0, #0x10 - bx ip - .align 2, 0 -_020DC228: .word RtcSendPxiCommand - arm_func_end RTCi_ReadRawDateTimeAsync - - arm_func_start RTCi_ReadRawDateAsync -RTCi_ReadRawDateAsync: ; 0x020DC22C - ldr ip, _020DC238 ; =RtcSendPxiCommand - mov r0, #0x11 - bx ip - .align 2, 0 -_020DC238: .word RtcSendPxiCommand - arm_func_end RTCi_ReadRawDateAsync - - arm_func_start RTCi_ReadRawTimeAsync -RTCi_ReadRawTimeAsync: ; 0x020DC23C - ldr ip, _020DC248 ; =RtcSendPxiCommand - mov r0, #0x12 - bx ip - .align 2, 0 -_020DC248: .word RtcSendPxiCommand - arm_func_end RTCi_ReadRawTimeAsync - - arm_func_start RTCi_WriteRawStatus2Async -RTCi_WriteRawStatus2Async: ; 0x020DC24C - ldr ip, _020DC258 ; =RtcSendPxiCommand - mov r0, #0x27 - bx ip - .align 2, 0 -_020DC258: .word RtcSendPxiCommand - arm_func_end RTCi_WriteRawStatus2Async - - arm_func_start RtcSendPxiCommand -RtcSendPxiCommand: ; 0x020DC25C - stmdb sp!, {r3, lr} - mov r0, r0, lsl #8 - and r1, r0, #0x7f00 - mov r0, #5 - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - ldmia sp!, {r3, pc} - arm_func_end RtcSendPxiCommand - - arm_func_start RTC_ConvertDateToDay -RTC_ConvertDateToDay: ; 0x020DC284 - ldr r3, [r0] - cmp r3, #0x64 - bhs _020DC2D4 - ldr r2, [r0, #4] - cmp r2, #1 - blo _020DC2D4 - cmp r2, #0xc - bhi _020DC2D4 - ldr r1, [r0, #8] - cmp r1, #1 - blo _020DC2D4 - cmp r1, #0x1f - bhi _020DC2D4 - ldr r0, [r0, #0xc] - cmp r0, #7 - bge _020DC2D4 - cmp r2, #1 - blo _020DC2D4 - cmp r2, #0xc - bls _020DC2DC -_020DC2D4: - mvn r0, #0 - bx lr -_020DC2DC: - ldr r0, _020DC310 ; =_02110F88 - 4 - sub r1, r1, #1 - ldr r0, [r0, r2, lsl #2] - cmp r2, #3 - add r2, r1, r0 - blo _020DC2FC - tst r3, #3 - addeq r2, r2, #1 -_020DC2FC: - ldr r0, _020DC314 ; =0x0000016D - add r1, r3, #3 - mla r0, r3, r0, r2 - add r0, r0, r1, lsr #2 - bx lr - .align 2, 0 -_020DC310: .word _02110F88 - 4 -_020DC314: .word 0x0000016D - arm_func_end RTC_ConvertDateToDay - - arm_func_start RTCi_ConvertTimeToSecond -RTCi_ConvertTimeToSecond: ; 0x020DC318 - mov r1, #0x3c - ldmia r0, {r2, r3} - mla r3, r2, r1, r3 - ldr r0, [r0, #8] - mla r0, r3, r1, r0 - bx lr - arm_func_end RTCi_ConvertTimeToSecond - - arm_func_start RTC_ConvertDateTimeToSecond -RTC_ConvertDateTimeToSecond: ; 0x020DC330 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl RTC_ConvertDateToDay - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - moveq r1, r0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl RTCi_ConvertTimeToSecond - mvn r2, #0 - cmp r0, r2 - moveq r1, r2 - beq _020DC388 - ldr r1, _020DC390 ; =0x00015180 - mov r2, #0 - umull ip, r3, r4, r1 - mla r3, r4, r2, r3 - mov r2, r4, asr #0x1f - mla r3, r2, r1, r3 - adds r2, r0, ip - adc r1, r3, r0, asr #31 -_020DC388: - mov r0, r2 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DC390: .word 0x00015180 - arm_func_end RTC_ConvertDateTimeToSecond - - arm_func_start RTC_ConvertDayToDate -RTC_ConvertDayToDate: ; 0x020DC394 - stmdb sp!, {r4, lr} - ldr r2, _020DC484 ; =0x00008EAC - cmp r1, #0 - movlt r1, #0 - cmp r1, r2 - movgt r1, r2 - ldr r3, _020DC488 ; =0x92492493 - add lr, r1, #6 - smull r2, r4, r3, lr - add r4, lr, r4 - mov r2, lr, lsr #0x1f - add r4, r2, r4, asr #2 - mov ip, #7 - smull r2, r3, ip, r4 - sub r4, lr, r2 - ldr r2, _020DC48C ; =0x0000016D - str r4, [r0, #0xc] - mov r3, #0 -_020DC3DC: - tst r3, #3 - addeq ip, r2, #1 - movne ip, r2 - mov r4, r1 - subs r1, r1, ip - movmi r1, r4 - bmi _020DC404 - add r3, r3, #1 - cmp r3, #0x63 - blo _020DC3DC -_020DC404: - ldr r2, _020DC48C ; =0x0000016D - str r3, [r0] - cmp r1, r2 - movgt r1, r2 - tst r3, #3 - bne _020DC448 - cmp r1, #0x3c - bge _020DC444 - cmp r1, #0x1f - movlt r2, #1 - subge r1, r1, #0x1f - movge r2, #2 - str r2, [r0, #4] - add r1, r1, #1 - str r1, [r0, #8] - ldmia sp!, {r4, pc} -_020DC444: - sub r1, r1, #1 -_020DC448: - ldr r3, _020DC490 ; =_02110F88 - mov r4, #0xb -_020DC450: - ldr r2, [r3, r4, lsl #2] - cmp r1, r2 - blt _020DC478 - add r2, r4, #1 - str r2, [r0, #4] - ldr r2, [r3, r4, lsl #2] - sub r1, r1, r2 - add r1, r1, #1 - str r1, [r0, #8] - ldmia sp!, {r4, pc} -_020DC478: - subs r4, r4, #1 - bpl _020DC450 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DC484: .word 0x00008EAC -_020DC488: .word 0x92492493 -_020DC48C: .word 0x0000016D -_020DC490: .word _02110F88 - arm_func_end RTC_ConvertDayToDate - - arm_func_start RTCi_ConvertSecondToTime -RTCi_ConvertSecondToTime: ; 0x020DC494 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _020DC50C ; =0x0001517F - cmp r1, #0 - movlt r1, #0 - cmp r1, r2 - movgt r1, r2 - ldr lr, _020DC510 ; =0x88888889 - mov ip, r1, lsr #0x1f - smull r3, r2, lr, r1 - smull r3, r6, lr, r1 - add r2, r1, r2 - add r2, ip, r2, asr #5 - smull r3, r5, lr, r2 - smull r3, r4, lr, r2 - add r6, r1, r6 - add r6, ip, r6, asr #5 - mov lr, #0x3c - smull r3, ip, lr, r6 - sub r6, r1, r3 - add r5, r2, r5 - mov ip, r2, lsr #0x1f - add r5, ip, r5, asr #5 - smull r1, r3, lr, r5 - add r4, r2, r4 - str r6, [r0, #8] - sub r5, r2, r1 - str r5, [r0, #4] - add r4, ip, r4, asr #5 - str r4, [r0] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DC50C: .word 0x0001517F -_020DC510: .word 0x88888889 - arm_func_end RTCi_ConvertSecondToTime - - arm_func_start RTC_ConvertSecondToDateTime -RTC_ConvertSecondToDateTime: ; 0x020DC514 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r4, r3 - subs r2, r5, #0 - sbcs r2, r4, #0 - mov r2, #0 - mov r7, r0 - mov r6, r1 - movlt r5, r2 - movlt r4, r2 - blt _020DC554 - ldr r1, _020DC598 ; =0xBC19137F - subs r0, r1, r5 - sbcs r0, r2, r4 - movlt r5, r1 - movlt r4, r2 -_020DC554: - ldr r2, _020DC59C ; =0x00015180 - mov r0, r5 - mov r1, r4 - mov r3, #0 - bl _ll_mod - mov r1, r0 - mov r0, r6 - bl RTCi_ConvertSecondToTime - ldr r2, _020DC59C ; =0x00015180 - mov r0, r5 - mov r1, r4 - mov r3, #0 - bl _ll_sdiv - mov r1, r0 - mov r0, r7 - bl RTC_ConvertDayToDate - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DC598: .word 0xBC19137F -_020DC59C: .word 0x00015180 - arm_func_end RTC_ConvertSecondToDateTime - - arm_func_start RTC_GetDayOfWeek -RTC_GetDayOfWeek: ; 0x020DC5A0 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, [r0, #4] - ldr r2, [r0] - sub r1, r1, #2 - cmp r1, #1 - add ip, r2, #0x7d0 - sublt ip, ip, #1 - ldr r6, _020DC650 ; =0x51EB851F - ldr lr, [r0, #8] - smull r3, r2, r6, ip - smull r4, r3, r6, ip - mov r5, ip, lsr #0x1f - add r3, r5, r3, asr #5 - add r2, r5, r2, asr #5 - mov r5, #0x64 - smull r2, r4, r5, r2 - sub r2, ip, r2 - addlt r1, r1, #0xc - mov r0, #0x1a - mul r0, r1, r0 - sub r1, r0, #2 - ldr r0, _020DC654 ; =0x66666667 - mov r5, r1, lsr #0x1f - smull r1, ip, r0, r1 - add ip, r5, ip, asr #2 - mov r4, r2, asr #1 - add r0, lr, ip - add r1, r2, r4, lsr #30 - add r2, r2, r0 - mov r6, r3, asr #1 - add r0, r3, r6, lsr #30 - add r1, r2, r1, asr #2 - add r1, r1, r0, asr #2 - add r0, r3, r3, lsl #2 - add r4, r1, r0 - ldr r3, _020DC658 ; =0x92492493 - mov r1, r4, lsr #0x1f - smull r2, r0, r3, r4 - add r0, r4, r0 - add r0, r1, r0, asr #2 - mov r2, #7 - smull r0, r1, r2, r0 - sub r0, r4, r0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DC650: .word 0x51EB851F -_020DC654: .word 0x66666667 -_020DC658: .word 0x92492493 - arm_func_end RTC_GetDayOfWeek - - arm_func_start CARDi_SetTask -CARDi_SetTask: ; 0x020DC65C - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _020DC694 ; =_021E3820 - mov r5, r0 - ldr r1, [r4, #0x108] - add r0, r4, #0x44 - bl OS_SetThreadPriority - ldr r1, [r4, #0x114] - add r0, r4, #0x44 - orr r1, r1, #8 - str r0, [r4, #0x104] - str r5, [r4, #0x40] - str r1, [r4, #0x114] - bl OS_WakeupThreadDirect - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DC694: .word _021E3820 - arm_func_end CARDi_SetTask - - arm_func_start CARDi_LockResource -CARDi_LockResource: ; 0x020DC698 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _020DC718 ; =_021E3820 - mov r8, r0 - mov r7, r1 - bl OS_DisableInterrupts - ldr r1, [r4, #8] - mov r5, r0 - cmp r1, r8 - bne _020DC6D0 - ldr r0, [r4, #0x18] - cmp r0, r7 - beq _020DC6F4 - bl OS_Terminate - b _020DC6F4 -_020DC6D0: - mvn r6, #2 - b _020DC6E0 -_020DC6D8: - add r0, r4, #0x10 - bl OS_SleepThread -_020DC6E0: - ldr r0, [r4, #8] - cmp r0, r6 - bne _020DC6D8 - str r8, [r4, #8] - str r7, [r4, #0x18] -_020DC6F4: - ldr r0, [r4, #0xc] - ldr r1, [r4] - add r2, r0, #1 - mov r0, r5 - str r2, [r4, #0xc] - mov r2, #0 - str r2, [r1] - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020DC718: .word _021E3820 - arm_func_end CARDi_LockResource - - arm_func_start CARDi_UnlockResource -CARDi_UnlockResource: ; 0x020DC71C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _020DC7A4 ; =_021E3820 - mov r7, r0 - mov r6, r1 - bl OS_DisableInterrupts - ldr r1, [r4, #8] - mov r5, r0 - cmp r1, r7 - bne _020DC74C - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _020DC754 -_020DC74C: - bl OS_Terminate - b _020DC78C -_020DC754: - ldr r0, [r4, #0x18] - cmp r0, r6 - beq _020DC764 - bl OS_Terminate -_020DC764: - ldr r0, [r4, #0xc] - subs r0, r0, #1 - str r0, [r4, #0xc] - bne _020DC78C - mvn r2, #2 - mov r1, #0 - add r0, r4, #0x10 - str r2, [r4, #8] - str r1, [r4, #0x18] - bl OS_WakeupThread -_020DC78C: - ldr r1, [r4] - mov r2, #0 - mov r0, r5 - str r2, [r1] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DC7A4: .word _021E3820 - arm_func_end CARDi_UnlockResource - - arm_func_start CARDi_InitCommon -CARDi_InitCommon: ; 0x020DC7A8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r4, _020DC89C ; =_021E3820 - ldr r1, _020DC8A0 ; =_021E37C0 - mvn r2, #2 - mov r0, #0 - str r2, [r4, #8] - mov r2, #0x60 - str r0, [r4, #0xc] - str r0, [r4, #0x18] - str r1, [r4] - bl MIi_CpuClearFast - ldr r0, _020DC8A0 ; =_021E37C0 - mov r1, #0x60 - bl DC_FlushRange - mvn r1, #0 - ldr r0, _020DC8A4 ; =0x027FFC40 - str r1, [r4, #0x118] - str r1, [r4, #0x11c] - ldrh r0, [r0] - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - cmp r0, #0 - bne _020DC81C - ldr r0, _020DC8A8 ; =0x027FFE00 - mov r2, #0x160 - sub r1, r0, #0x380 - bl MI_CpuCopy8 -_020DC81C: - mov r2, #0 - mov r0, #4 - str r0, [r4, #0x108] - str r2, [r4, #0x14] - str r2, [r4, #0x10] - str r2, [r4, #0x110] - str r2, [r4, #0x10c] - mov r0, #0x400 - str r0, [sp] - ldr ip, [r4, #0x108] - ldr r1, _020DC8AC ; =CARDi_TaskThread - ldr r3, _020DC8B0 ; =_021E3E40 - add r0, r4, #0x44 - str ip, [sp, #4] - bl OS_CreateThread - add r0, r4, #0x44 - bl OS_WakeupThreadDirect - ldr r1, _020DC8B4 ; =CARDi_OnFifoRecv - mov r0, #0xb - bl PXI_SetFifoRecvCallback - ldr r0, _020DC8A4 ; =0x027FFC40 - ldrh r0, [r0] - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - mov r0, #1 - bl CARD_Enable - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DC89C: .word _021E3820 -_020DC8A0: .word _021E37C0 -_020DC8A4: .word 0x027FFC40 -_020DC8A8: .word 0x027FFE00 -_020DC8AC: .word CARDi_TaskThread -_020DC8B0: .word _021E3E40 -_020DC8B4: .word CARDi_OnFifoRecv - arm_func_end CARDi_InitCommon - - arm_func_start CARD_IsEnabled -CARD_IsEnabled: ; 0x020DC8B8 - ldr r0, _020DC8C4 ; =_021E37A8 - ldr r0, [r0] - bx lr - .align 2, 0 -_020DC8C4: .word _021E37A8 - arm_func_end CARD_IsEnabled - - arm_func_start CARD_CheckEnabled -CARD_CheckEnabled: ; 0x020DC8C8 - stmdb sp!, {r3, lr} - bl CARD_IsEnabled - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl OS_Terminate - ldmia sp!, {r3, pc} - arm_func_end CARD_CheckEnabled - - arm_func_start CARD_Enable -CARD_Enable: ; 0x020DC8E0 - ldr r1, _020DC8EC ; =_021E37A8 - str r0, [r1] - bx lr - .align 2, 0 -_020DC8EC: .word _021E37A8 - arm_func_end CARD_Enable - - arm_func_start CARDi_WaitAsync -CARDi_WaitAsync: ; 0x020DC8F0 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _020DC938 ; =_021E3820 - bl OS_DisableInterrupts - mov r5, r0 - b _020DC90C -_020DC904: - add r0, r4, #0x10c - bl OS_SleepThread -_020DC90C: - ldr r0, [r4, #0x114] - tst r0, #4 - bne _020DC904 - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4] - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DC938: .word _021E3820 - arm_func_end CARDi_WaitAsync - - arm_func_start CARDi_TryWaitAsync -CARDi_TryWaitAsync: ; 0x020DC93C - ldr r0, _020DC954 ; =_021E3820 - ldr r0, [r0, #0x114] - tst r0, #4 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_020DC954: .word _021E3820 - arm_func_end CARDi_TryWaitAsync - - arm_func_start CARD_GetResultCode -CARD_GetResultCode: ; 0x020DC958 - ldr r0, _020DC968 ; =_021E3820 - ldr r0, [r0] - ldr r0, [r0] - bx lr - .align 2, 0 -_020DC968: .word _021E3820 - arm_func_end CARD_GetResultCode - - arm_func_start CARD_LockRom -CARD_LockRom: ; 0x020DC96C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, #1 - bl CARDi_LockResource - mov r0, r4 - bl OS_LockCard - ldmia sp!, {r4, pc} - arm_func_end CARD_LockRom - - arm_func_start CARD_UnlockRom -CARD_UnlockRom: ; 0x020DC988 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_UnlockCard - mov r0, r4 - mov r1, #1 - bl CARDi_UnlockResource - ldmia sp!, {r4, pc} - arm_func_end CARD_UnlockRom - - arm_func_start CARD_LockBackup -CARD_LockBackup: ; 0x020DC9A4 - ldr ip, _020DC9B0 ; =CARDi_LockResource - mov r1, #2 - bx ip - .align 2, 0 -_020DC9B0: .word CARDi_LockResource - arm_func_end CARD_LockBackup - - arm_func_start CARD_UnlockBackup -CARD_UnlockBackup: ; 0x020DC9B4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl CARD_TryWaitBackupAsync - cmp r0, #0 - bne _020DC9CC - bl CARD_WaitBackupAsync -_020DC9CC: - mov r0, r4 - mov r1, #2 - bl CARDi_UnlockResource - ldmia sp!, {r4, pc} - arm_func_end CARD_UnlockBackup - - arm_func_start CARD_SetCacheFlushThreshold -CARD_SetCacheFlushThreshold: ; 0x020DC9DC - ldr r2, _020DC9EC ; =_021E3820 - str r0, [r2, #0x118] - str r1, [r2, #0x11c] - bx lr - .align 2, 0 -_020DC9EC: .word _021E3820 - arm_func_end CARD_SetCacheFlushThreshold - - arm_func_start CARDi_IdentifyBackupCore -CARDi_IdentifyBackupCore: ; 0x020DC9F0 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _020DCD54 ; =_021E3820 - mov r5, r0 - ldr r4, [r1] - mov r1, #0 - add r0, r4, #0x18 - mov r2, #0x48 - bl MI_CpuFill8 - ldr r0, _020DCD58 ; =0x0000203F - str r5, [r4, #4] - str r0, [r4, #0x58] - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5, asr #8 - and r0, r0, #0xff - mov r3, #1 - mov ip, r3, lsl r0 - and r2, r5, #0xff - mov r1, r5, asr #0x10 - str ip, [r4, #0x18] - mov r0, #0xff - strb r0, [r4, #0x54] - cmp r2, #1 - and r0, r1, #0xff - bne _020DCB2C - cmp ip, #0x2000 - bhi _020DCA6C - bhs _020DCAA8 - cmp ip, #0x200 - beq _020DCA88 - b _020DCD34 -_020DCA6C: - cmp ip, #0x10000 - bhi _020DCA7C - beq _020DCACC - b _020DCD34 -_020DCA7C: - cmp ip, #0x20000 - beq _020DCAF0 - b _020DCD34 -_020DCA88: - mov r0, #0x10 - str r0, [r4, #0x24] - str r3, [r4, #0x28] - mov r0, #5 - str r0, [r4, #0x2c] - mov r0, #0xf0 - strb r0, [r4, #0x54] - b _020DCB10 -_020DCAA8: - mov r0, #0x20 - str r0, [r4, #0x24] - mov r0, #2 - str r0, [r4, #0x28] - mov r0, #5 - str r0, [r4, #0x2c] - mov r0, #0 - strb r0, [r4, #0x54] - b _020DCB10 -_020DCACC: - mov r0, #0x80 - str r0, [r4, #0x24] - mov r0, #2 - str r0, [r4, #0x28] - mov r0, #0xa - str r0, [r4, #0x2c] - mov r0, #0 - strb r0, [r4, #0x54] - b _020DCB10 -_020DCAF0: - mov r0, #0x100 - str r0, [r4, #0x24] - mov r0, #3 - str r0, [r4, #0x28] - mov r0, #5 - str r0, [r4, #0x2c] - mov r0, #0 - strb r0, [r4, #0x54] -_020DCB10: - ldr r0, [r4, #0x24] - str r0, [r4, #0x1c] - ldr r0, [r4, #0x58] - orr r0, r0, #0x40 - orr r0, r0, #0x4300 - str r0, [r4, #0x58] - ldmia sp!, {r3, r4, r5, pc} -_020DCB2C: - cmp r2, #2 - bne _020DCCF4 - cmp ip, #0x100000 - bhi _020DCB5C - bhs _020DCB80 - cmp ip, #0x40000 - bhi _020DCB50 - beq _020DCB80 - b _020DCD34 -_020DCB50: - cmp ip, #0x80000 - beq _020DCB80 - b _020DCD34 -_020DCB5C: - cmp ip, #0x400000 - bhi _020DCB74 - bhs _020DCBF8 - cmp ip, #0x200000 - beq _020DCBAC - b _020DCD34 -_020DCB74: - cmp ip, #0x800000 - beq _020DCC48 - b _020DCD34 -_020DCB80: - mov r0, #0x19 - str r0, [r4, #0x30] - mov r1, #0x12c - str r1, [r4, #0x34] - ldr r0, _020DCD5C ; =0x00001388 - str r1, [r4, #0x50] - str r0, [r4, #0x40] - ldr r0, [r4, #0x58] - orr r0, r0, #0x480 - str r0, [r4, #0x58] - b _020DCCC4 -_020DCBAC: - mov r0, #0x17 - str r0, [r4, #0x30] - mov r1, #0x12c - str r1, [r4, #0x34] - mov r1, #0x1f4 - ldr r0, _020DCD5C ; =0x00001388 - str r1, [r4, #0x40] - str r0, [r4, #0x44] - mov r1, r0, lsl #1 - ldr r0, _020DCD60 ; =0x0000EA60 - str r1, [r4, #0x38] - str r0, [r4, #0x3c] - mov r0, #0 - strb r0, [r4, #0x54] - ldr r0, [r4, #0x58] - orr r0, r0, #0x80 - orr r0, r0, #0x5400 - str r0, [r4, #0x58] - b _020DCCC4 -_020DCBF8: - mov r0, #0x258 - str r0, [r4, #0x40] - add r0, r0, #0x960 - str r0, [r4, #0x44] - mov r0, #0x46 - str r0, [r4, #0x48] - mov r0, #0x96 - str r0, [r4, #0x4c] - ldr r1, _020DCD64 ; =0x000059D8 - ldr r0, _020DCD68 ; =0x000C3500 - str r1, [r4, #0x38] - str r0, [r4, #0x3c] - mov r0, #0 - strb r0, [r4, #0x54] - mov r0, #0x1000 - str r0, [r4, #0x20] - ldr r0, [r4, #0x58] - orr r0, r0, #0xd000 - str r0, [r4, #0x58] - b _020DCCC4 -_020DCC48: - cmp r0, #0 - bne _020DCC88 - mov r0, #0x3e8 - str r0, [r4, #0x40] - add r0, r0, #0x7d0 - str r0, [r4, #0x44] - ldr r1, _020DCD6C ; =0x000109A0 - ldr r0, _020DCD70 ; =0x00027100 - str r1, [r4, #0x38] - str r0, [r4, #0x3c] - mov r0, #0 - strb r0, [r4, #0x54] - ldr r0, [r4, #0x58] - orr r0, r0, #0x5000 - str r0, [r4, #0x58] - b _020DCCC4 -_020DCC88: - cmp r0, #1 - bne _020DCCC4 - mov r0, #0x3e8 - str r0, [r4, #0x40] - add r0, r0, #0x7d0 - str r0, [r4, #0x44] - ldr r1, _020DCD6C ; =0x000109A0 - ldr r0, _020DCD70 ; =0x00027100 - str r1, [r4, #0x38] - str r0, [r4, #0x3c] - mov r0, #0x84 - strb r0, [r4, #0x54] - ldr r0, [r4, #0x58] - orr r0, r0, #0x5000 - str r0, [r4, #0x58] -_020DCCC4: - mov r0, #0x10000 - str r0, [r4, #0x1c] - mov r0, #0x100 - str r0, [r4, #0x24] - mov r0, #3 - str r0, [r4, #0x28] - mov r0, #5 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x58] - orr r0, r0, #0xb40 - str r0, [r4, #0x58] - ldmia sp!, {r3, r4, r5, pc} -_020DCCF4: - cmp r2, #3 - bne _020DCD34 - cmp ip, #0x2000 - cmpne ip, #0x8000 - bne _020DCD34 - str ip, [r4, #0x24] - str ip, [r4, #0x1c] - mov r0, #2 - str r0, [r4, #0x28] - mov r0, #0 - strb r0, [r4, #0x54] - ldr r0, [r4, #0x58] - orr r0, r0, #0x40 - orr r0, r0, #0x4300 - str r0, [r4, #0x58] - ldmia sp!, {r3, r4, r5, pc} -_020DCD34: - mov r1, #0 - str r1, [r4, #4] - str r1, [r4, #0x18] - ldr r0, _020DCD54 ; =_021E3820 - mov r1, #3 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DCD54: .word _021E3820 -_020DCD58: .word 0x0000203F -_020DCD5C: .word 0x00001388 -_020DCD60: .word 0x0000EA60 -_020DCD64: .word 0x000059D8 -_020DCD68: .word 0x000C3500 -_020DCD6C: .word 0x000109A0 -_020DCD70: .word 0x00027100 - arm_func_end CARDi_IdentifyBackupCore - - arm_func_start CARDi_RequestStreamCommandCore -CARDi_RequestStreamCommandCore: ; 0x020DCD74 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - ldr r7, [sb, #0x2c] - ldr r0, _020DCF5C ; =_version_NINTENDO_BACKUP - ldr r4, [sb, #0x34] - ldr sl, [sb, #0x30] - mov r5, #0x100 - bl OSi_ReferSymbol - cmp r7, #0xb - bne _020DCDA8 - bl CARD_GetBackupSectorSize - mov r5, r0 - b _020DCDB8 -_020DCDA8: - cmp r7, #0xf - ldreq r0, _020DCF60 ; =_021E3820 - ldreq r0, [r0] - ldreq r5, [r0, #0x20] -_020DCDB8: - add r6, sb, #0x120 - mov fp, #9 -_020DCDC0: - ldr r8, [sb, #0x24] - ldr r0, [sb] - cmp r5, r8 - movlo r8, r5 - str r8, [r0, #0x14] - ldr r0, [sb, #0x114] - tst r0, #0x40 - beq _020DCDFC - ldr r0, [sb, #0x114] - mov r1, #7 - bic r0, r0, #0x40 - str r0, [sb, #0x114] - ldr r0, [sb] - str r1, [r0] - b _020DCF08 -_020DCDFC: - cmp r4, #3 - addls pc, pc, r4, lsl #2 - b _020DCE8C -_020DCE08: ; jump table - b _020DCE18 ; case 0 - b _020DCE3C ; case 1 - b _020DCE3C ; case 2 - b _020DCE74 ; case 3 -_020DCE18: - mov r0, r6 - mov r1, r8 - bl DC_InvalidateRange - ldr r1, [sb, #0x1c] - ldr r0, [sb] - str r1, [r0, #0xc] - ldr r0, [sb] - str r6, [r0, #0x10] - b _020DCE8C -_020DCE3C: - ldr r0, [sb, #0x1c] - mov r1, r6 - mov r2, r8 - bl MI_CpuCopy8 - mov r0, r6 - mov r1, r8 - bl DC_FlushRange - bl DC_WaitWriteBufferEmpty - ldr r0, [sb] - str r6, [r0, #0xc] - ldr r1, [sb, #0x20] - ldr r0, [sb] - str r1, [r0, #0x10] - b _020DCE8C -_020DCE74: - ldr r1, [sb, #0x1c] - ldr r0, [sb] - str r1, [r0, #0xc] - ldr r1, [sb, #0x20] - ldr r0, [sb] - str r1, [r0, #0x10] -_020DCE8C: - mov r0, sb - mov r1, r7 - mov r2, sl - bl CARDi_Request - cmp r0, #0 - beq _020DCF08 - cmp r4, #2 - bne _020DCEC8 - mov r0, sb - mov r1, fp - mov r2, #1 - bl CARDi_Request - cmp r0, #0 - beq _020DCF08 - b _020DCEE0 -_020DCEC8: - cmp r4, #0 - bne _020DCEE0 - ldr r1, [sb, #0x20] - mov r0, r6 - mov r2, r8 - bl MI_CpuCopy8 -_020DCEE0: - ldr r0, [sb, #0x1c] - add r0, r0, r8 - str r0, [sb, #0x1c] - ldr r0, [sb, #0x20] - add r0, r0, r8 - str r0, [sb, #0x20] - ldr r0, [sb, #0x24] - subs r0, r0, r8 - str r0, [sb, #0x24] - bne _020DCDC0 -_020DCF08: - ldr r6, [sb, #0x38] - ldr r5, [sb, #0x3c] - bl OS_DisableInterrupts - ldr r1, [sb, #0x114] - mov r4, r0 - bic r0, r1, #0x4c - str r0, [sb, #0x114] - add r0, sb, #0x10c - bl OS_WakeupThread - ldr r0, [sb, #0x114] - tst r0, #0x10 - beq _020DCF40 - add r0, sb, #0x44 - bl OS_WakeupThreadDirect -_020DCF40: - mov r0, r4 - bl OS_RestoreInterrupts - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r5 - blx r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DCF5C: .word _version_NINTENDO_BACKUP -_020DCF60: .word _021E3820 - arm_func_end CARDi_RequestStreamCommandCore - - arm_func_start CARDi_RequestStreamCommand -CARDi_RequestStreamCommand: ; 0x020DCF64 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r4, _020DD03C ; =_021E3820 - ldr r0, _020DD040 ; =_version_NINTENDO_BACKUP - mov r8, r1 - mov r7, r2 - mov r6, r3 - bl OSi_ReferSymbol - bl OS_DisableInterrupts - ldr r1, [r4, #0x114] - mov r5, r0 - tst r1, #4 - beq _020DCFAC -_020DCF98: - add r0, r4, #0x10c - bl OS_SleepThread - ldr r0, [r4, #0x114] - tst r0, #4 - bne _020DCF98 -_020DCFAC: - ldr r0, [r4, #0x114] - ldr r1, [sp, #0x20] - orr r2, r0, #4 - mov r0, r5 - str r2, [r4, #0x114] - str r6, [r4, #0x38] - str r1, [r4, #0x3c] - bl OS_RestoreInterrupts - ldr r3, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r1, [sp, #0x30] - ldr r0, [sp, #0x24] - str sb, [r4, #0x1c] - str r8, [r4, #0x20] - str r7, [r4, #0x24] - str r3, [r4, #0x2c] - str r2, [r4, #0x30] - str r1, [r4, #0x34] - cmp r0, #0 - beq _020DD00C - ldr r0, _020DD044 ; =CARDi_RequestStreamCommandCore - bl CARDi_SetTask - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020DD00C: - ldr r0, _020DD048 ; =OSi_ThreadInfo - ldr r1, _020DD03C ; =_021E3820 - ldr r2, [r0, #4] - mov r0, r4 - str r2, [r1, #0x104] - bl CARDi_RequestStreamCommandCore - ldr r0, [r4] - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020DD03C: .word _021E3820 -_020DD040: .word _version_NINTENDO_BACKUP -_020DD044: .word CARDi_RequestStreamCommandCore -_020DD048: .word OSi_ThreadInfo - arm_func_end CARDi_RequestStreamCommand - - arm_func_start CARD_GetBackupSectorSize -CARD_GetBackupSectorSize: ; 0x020DD04C - ldr r0, _020DD05C ; =_021E3820 - ldr r0, [r0] - ldr r0, [r0, #0x1c] - bx lr - .align 2, 0 -_020DD05C: .word _021E3820 - arm_func_end CARD_GetBackupSectorSize - - arm_func_start CARD_IdentifyBackup -CARD_IdentifyBackup: ; 0x020DD060 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - ldr r0, _020DD18C ; =_version_NINTENDO_BACKUP - ldr r4, _020DD190 ; =_021E3820 - bl OSi_ReferSymbol - cmp r6, #0 - bne _020DD080 - bl OS_Terminate -_020DD080: - bl CARD_CheckEnabled - bl OS_DisableInterrupts - ldr r1, [r4, #0x114] - mov r5, r0 - tst r1, #4 - beq _020DD0AC -_020DD098: - add r0, r4, #0x10c - bl OS_SleepThread - ldr r0, [r4, #0x114] - tst r0, #4 - bne _020DD098 -_020DD0AC: - ldr r0, [r4, #0x114] - mov r1, #0 - orr r2, r0, #4 - mov r0, r5 - str r2, [r4, #0x114] - str r1, [r4, #0x38] - str r1, [r4, #0x3c] - bl OS_RestoreInterrupts - mov r0, r6 - bl CARDi_IdentifyBackupCore - ldr r0, _020DD194 ; =OSi_ThreadInfo - ldr r1, _020DD190 ; =_021E3820 - ldr r2, [r0, #4] - mov r0, r4 - str r2, [r1, #0x104] - mov r1, #2 - mov r2, #1 - bl CARDi_Request - ldr r0, [r4] - mov r1, #0 - str r1, [r0, #0xc] - ldr r0, [r4] - add r1, r4, #0x120 - str r1, [r0, #0x10] - ldr r1, [r4] - mov r2, #1 - mov r0, r4 - str r2, [r1, #0x14] - mov r1, #6 - bl CARDi_Request - ldr r7, [r4, #0x38] - ldr r6, [r4, #0x3c] - bl OS_DisableInterrupts - mov r5, r0 - ldr r1, [r4, #0x114] - add r0, r4, #0x10c - bic r1, r1, #0x4c - str r1, [r4, #0x114] - bl OS_WakeupThread - ldr r0, [r4, #0x114] - tst r0, #0x10 - beq _020DD15C - add r0, r4, #0x44 - bl OS_WakeupThreadDirect -_020DD15C: - mov r0, r5 - bl OS_RestoreInterrupts - cmp r7, #0 - beq _020DD174 - mov r0, r6 - blx r7 -_020DD174: - ldr r0, [r4] - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DD18C: .word _version_NINTENDO_BACKUP -_020DD190: .word _021E3820 -_020DD194: .word OSi_ThreadInfo - arm_func_end CARD_IdentifyBackup - - arm_func_start CARD_WaitBackupAsync -CARD_WaitBackupAsync: ; 0x020DD198 - ldr ip, _020DD1A0 ; =CARDi_WaitAsync - bx ip - .align 2, 0 -_020DD1A0: .word CARDi_WaitAsync - arm_func_end CARD_WaitBackupAsync - - arm_func_start CARD_TryWaitBackupAsync -CARD_TryWaitBackupAsync: ; 0x020DD1A4 - ldr ip, _020DD1AC ; =CARDi_TryWaitAsync - bx ip - .align 2, 0 -_020DD1AC: .word CARDi_TryWaitAsync - arm_func_end CARD_TryWaitBackupAsync - - arm_func_start CARD_CancelBackupAsync -CARD_CancelBackupAsync: ; 0x020DD1B0 - stmdb sp!, {r3, lr} - bl OS_DisableInterrupts - ldr r1, _020DD1D0 ; =_021E3820 - ldr r2, [r1, #0x114] - orr r2, r2, #0x40 - str r2, [r1, #0x114] - bl OS_RestoreInterrupts - ldmia sp!, {r3, pc} - .align 2, 0 -_020DD1D0: .word _021E3820 - arm_func_end CARD_CancelBackupAsync - - arm_func_start CARDi_ReadFromCache -CARDi_ReadFromCache: ; 0x020DD1D4 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _020DD25C ; =_021E3820 - mov r1, #0x200 - ldr r3, [r4, #0x1c] - rsb r1, r1, #0 - ldr r2, [r0, #8] - and r3, r3, r1 - cmp r3, r2 - bne _020DD248 - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x24] - sub r3, r2, r3 - rsb r5, r3, #0x200 - cmp r5, r1 - movhi r5, r1 - add r0, r0, #0x20 - ldr r1, [r4, #0x20] - mov r2, r5 - add r0, r0, r3 - bl MI_CpuCopy8 - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x20] - ldr r0, [r4, #0x24] - add r2, r2, r5 - add r1, r1, r5 - sub r0, r0, r5 - str r2, [r4, #0x1c] - str r1, [r4, #0x20] - str r0, [r4, #0x24] -_020DD248: - ldr r0, [r4, #0x24] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DD25C: .word _021E3820 - arm_func_end CARDi_ReadFromCache - - arm_func_start CARDi_SetRomOp -CARDi_SetRomOp: ; 0x020DD260 - ldr r3, _020DD2B8 ; =0x040001A4 -_020DD264: - ldr r2, [r3] - tst r2, #0x80000000 - bne _020DD264 - ldr r3, _020DD2BC ; =0x040001A1 - mov r2, #0xc0 - strb r2, [r3] - mov r2, r0, lsr #0x18 - strb r2, [r3, #7] - mov r2, r0, lsr #0x10 - strb r2, [r3, #8] - mov r2, r0, lsr #8 - strb r2, [r3, #9] - strb r0, [r3, #0xa] - mov r0, r1, lsr #0x18 - strb r0, [r3, #0xb] - mov r0, r1, lsr #0x10 - strb r0, [r3, #0xc] - mov r0, r1, lsr #8 - strb r0, [r3, #0xd] - strb r1, [r3, #0xe] - bx lr - .align 2, 0 -_020DD2B8: .word 0x040001A4 -_020DD2BC: .word 0x040001A1 - arm_func_end CARDi_SetRomOp - - arm_func_start CARDi_SetCardDma -CARDi_SetCardDma: ; 0x020DD2C0 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _020DD304 ; =_021E3820 - ldr r1, _020DD308 ; =0x04100010 - ldr r0, [r4, #0x28] - ldr r2, [r4, #0x20] - mov r3, #0x200 - ldr r5, _020DD30C ; =_021E3E60 - bl MIi_CardDmaCopy32 - ldr r1, [r4, #0x1c] - mov r0, r1, lsr #8 - orr r0, r0, #0xb7000000 - mov r1, r1, lsl #0x18 - bl CARDi_SetRomOp - ldr r1, [r5, #4] - ldr r0, _020DD310 ; =0x040001A4 - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DD304: .word _021E3820 -_020DD308: .word 0x04100010 -_020DD30C: .word _021E3E60 -_020DD310: .word 0x040001A4 - arm_func_end CARDi_SetCardDma - - arm_func_start CARDi_OnReadCard -CARDi_OnReadCard: ; 0x020DD314 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _020DD3E0 ; =_021E3820 - ldr r0, [r0, #0x28] - bl MI_StopDma - ldr r3, _020DD3E0 ; =_021E3820 - ldr r0, [r3, #0x24] - ldr r2, [r3, #0x1c] - ldr r1, [r3, #0x20] - subs r0, r0, #0x200 - str r0, [r3, #0x24] - movne r0, #1 - add r2, r2, #0x200 - add r1, r1, #0x200 - moveq r0, #0 - str r2, [r3, #0x1c] - str r1, [r3, #0x20] - cmp r0, #0 - bne _020DD3D8 - mov r0, #0x80000 - bl OS_DisableIrqMask - mov r0, #0x80000 - bl OS_ResetRequestIrqMask - ldr r4, _020DD3E0 ; =_021E3820 - bl CARDi_ReadRomIDCore - bl CARDi_CheckPulledOutCore - ldr r0, [r4] - mov r1, #0 - str r1, [r0] - ldr r5, [r4, #0x38] - ldr r6, [r4, #0x3c] - bl OS_DisableInterrupts - ldr r1, [r4, #0x114] - mov r7, r0 - bic r0, r1, #0x4c - str r0, [r4, #0x114] - add r0, r4, #0x10c - bl OS_WakeupThread - ldr r0, [r4, #0x114] - tst r0, #0x10 - beq _020DD3BC - add r0, r4, #0x44 - bl OS_WakeupThreadDirect -_020DD3BC: - mov r0, r7 - bl OS_RestoreInterrupts - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - blx r5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020DD3D8: - bl CARDi_SetCardDma - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DD3E0: .word _021E3820 - arm_func_end CARDi_OnReadCard - - arm_func_start CARDi_TryReadCardDma -CARDi_TryReadCardDma: ; 0x020DD3E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _020DD55C ; =_021E3820 - mov r6, #0 - ldr sb, [r4, #0x20] - mov fp, r0 - mov r7, r6 - mov r8, r6 - mov r1, r6 - ands sl, sb, #0x1f - ldr r5, [r4, #0x24] - bne _020DD41C - ldr r0, [r4, #0x28] - cmp r0, #3 - movls r1, #1 -_020DD41C: - cmp r1, #0 - beq _020DD470 - bl OS_GetDTCMAddress - ldr r1, _020DD560 ; =OS_IrqHandler - add r3, sb, r5 - cmp r3, r1 - mov r1, #1 - mov r2, #0 - bls _020DD448 - cmp sb, #0x2000000 - movlo r2, r1 -_020DD448: - cmp r2, #0 - bne _020DD468 - cmp r0, r3 - bhs _020DD464 - add r0, r0, #0x4000 - cmp r0, sb - bhi _020DD468 -_020DD464: - mov r1, #0 -_020DD468: - cmp r1, #0 - moveq r8, #1 -_020DD470: - cmp r8, #0 - beq _020DD48C - ldr r1, [r4, #0x1c] - ldr r0, _020DD564 ; =0x000001FF - orr r1, r1, r5 - tst r1, r0 - moveq r7, #1 -_020DD48C: - ldr r0, _020DD568 ; =_02110FB8 - cmp r7, #0 - ldr r0, [r0] - cmpne r5, #0 - ldr r0, [r0, #0x60] - movne r6, #1 - bic r0, r0, #0x7000000 - orr r0, r0, #0xa1000000 - cmp r6, #0 - str r0, [fp, #4] - beq _020DD554 - bl OS_DisableInterrupts - ldr r1, [r4, #0x118] - mov r7, r0 - cmp r5, r1 - bhs _020DD4DC - mov r0, sb - mov r1, r5 - bl IC_InvalidateRange - b _020DD4E0 -_020DD4DC: - bl IC_InvalidateAll -_020DD4E0: - ldr r0, [r4, #0x11c] - cmp r5, r0 - bhs _020DD528 - cmp sl, #0 - beq _020DD514 - sub sb, sb, sl - mov r0, sb - mov r1, #0x20 - bl DC_StoreRange - add r0, sb, r5 - mov r1, #0x20 - bl DC_StoreRange - add r5, r5, #0x20 -_020DD514: - mov r0, sb - mov r1, r5 - bl DC_InvalidateRange - bl DC_WaitWriteBufferEmpty - b _020DD52C -_020DD528: - bl DC_FlushAll -_020DD52C: - ldr r1, _020DD56C ; =CARDi_OnReadCard - mov r0, #0x80000 - bl OS_SetIrqFunction - mov r0, #0x80000 - bl OS_ResetRequestIrqMask - mov r0, #0x80000 - bl OS_EnableIrqMask - mov r0, r7 - bl OS_RestoreInterrupts - bl CARDi_SetCardDma -_020DD554: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DD55C: .word _021E3820 -_020DD560: .word OS_IrqHandler -_020DD564: .word 0x000001FF -_020DD568: .word _02110FB8 -_020DD56C: .word CARDi_OnReadCard - arm_func_end CARDi_TryReadCardDma - - arm_func_start CARDi_ReadCard -CARDi_ReadCard: ; 0x020DD570 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _020DD654 ; =_021E3820 - mov r6, r0 -_020DD57C: - mov r0, #0x200 - ldr r1, [r4, #0x1c] - rsb r0, r0, #0 - and r2, r1, r0 - cmp r2, r1 - bne _020DD5AC - ldr r5, [r4, #0x20] - tst r5, #3 - bne _020DD5AC - ldr r0, [r4, #0x24] - cmp r0, #0x200 - bhs _020DD5B4 -_020DD5AC: - str r2, [r6, #8] - add r5, r6, #0x20 -_020DD5B4: - mov r0, r2, lsr #8 - orr r0, r0, #0xb7000000 - mov r1, r2, lsl #0x18 - bl CARDi_SetRomOp - mov ip, #0 - ldr r0, [r6, #4] - ldr r2, _020DD658 ; =0x040001A4 - mov lr, ip - str r0, [r2] - ldr r1, _020DD65C ; =0x04100010 -_020DD5DC: - ldr r3, [r2] - tst r3, #0x800000 - beq _020DD5FC - ldr r0, [r1] - cmp lr, #0x200 - strlo r0, [r5, ip, lsl #2] - addlo lr, lr, #4 - addlo ip, ip, #1 -_020DD5FC: - tst r3, #0x80000000 - bne _020DD5DC - ldr r0, [r4, #0x20] - cmp r5, r0 - bne _020DD640 - ldr r0, _020DD654 ; =_021E3820 - ldr r1, [r0, #0x1c] - add r1, r1, #0x200 - str r1, [r0, #0x1c] - ldr r1, [r0, #0x20] - add r1, r1, #0x200 - str r1, [r0, #0x20] - ldr r1, [r0, #0x24] - subs r1, r1, #0x200 - str r1, [r0, #0x24] - ldmeqia sp!, {r4, r5, r6, pc} - b _020DD57C -_020DD640: - mov r0, r6 - bl CARDi_ReadFromCache - cmp r0, #0 - bne _020DD57C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DD654: .word _021E3820 -_020DD658: .word 0x040001A4 -_020DD65C: .word 0x04100010 - arm_func_end CARDi_ReadCard - - arm_func_start CARDi_ReadRomIDCore -CARDi_ReadRomIDCore: ; 0x020DD660 - stmdb sp!, {r3, lr} - mov r0, #0xb8000000 - mov r1, #0 - bl CARDi_SetRomOp - ldr r1, _020DD6B0 ; =_02110FB8 - mov r0, #0x2000 - ldr r1, [r1] - rsb r0, r0, #0 - ldr r2, [r1, #0x60] - ldr r1, _020DD6B4 ; =0x040001A4 - bic r2, r2, #0x7000000 - orr r2, r2, #0xa7000000 - and r0, r2, r0 - str r0, [r1] -_020DD698: - ldr r0, [r1] - tst r0, #0x800000 - beq _020DD698 - ldr r0, _020DD6B8 ; =0x04100010 - ldr r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DD6B0: .word _02110FB8 -_020DD6B4: .word 0x040001A4 -_020DD6B8: .word 0x04100010 - arm_func_end CARDi_ReadRomIDCore - - arm_func_start CARDi_ReadRomSyncCore -CARDi_ReadRomSyncCore: ; 0x020DD6BC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _020DD74C ; =_021E3E60 - mov r0, r4 - bl CARDi_ReadFromCache - cmp r0, #0 - beq _020DD6E0 - ldr r1, [r4] - mov r0, r4 - blx r1 -_020DD6E0: - ldr r4, _020DD750 ; =_021E3820 - bl CARDi_ReadRomIDCore - bl CARDi_CheckPulledOutCore - ldr r0, [r4] - mov r1, #0 - str r1, [r0] - ldr r5, [r4, #0x38] - ldr r6, [r4, #0x3c] - bl OS_DisableInterrupts - ldr r1, [r4, #0x114] - mov r7, r0 - bic r0, r1, #0x4c - str r0, [r4, #0x114] - add r0, r4, #0x10c - bl OS_WakeupThread - ldr r0, [r4, #0x114] - tst r0, #0x10 - beq _020DD730 - add r0, r4, #0x44 - bl OS_WakeupThreadDirect -_020DD730: - mov r0, r7 - bl OS_RestoreInterrupts - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - blx r5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020DD74C: .word _021E3E60 -_020DD750: .word _021E3820 - arm_func_end CARDi_ReadRomSyncCore - - arm_func_start CARDi_ReadRom -CARDi_ReadRom: ; 0x020DD754 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - ldr r4, _020DD838 ; =_021E3E60 - ldr r5, _020DD83C ; =_021E3820 - bl CARD_CheckEnabled - bl OS_DisableInterrupts - mov r6, r0 - b _020DD788 -_020DD780: - add r0, r5, #0x10c - bl OS_SleepThread -_020DD788: - ldr r0, [r5, #0x114] - tst r0, #4 - bne _020DD780 - ldr r0, [r5, #0x114] - ldr r2, [sp, #0x20] - ldr r1, [sp, #0x24] - orr r3, r0, #4 - mov r0, r6 - str r3, [r5, #0x114] - str r2, [r5, #0x38] - str r1, [r5, #0x3c] - bl OS_RestoreInterrupts - ldr r0, _020DD840 ; =_021E3E40 - str sl, [r5, #0x28] - ldr r0, [r0] - str r8, [r5, #0x20] - add r0, sb, r0 - str r0, [r5, #0x1c] - str r7, [r5, #0x24] - cmp sl, #3 - bhi _020DD7E4 - mov r0, sl - bl MI_StopDma -_020DD7E4: - mov r0, r4 - bl CARDi_TryReadCardDma - cmp r0, #0 - beq _020DD808 - ldr r0, [sp, #0x28] - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl CARD_WaitRomAsync - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DD808: - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _020DD820 - ldr r0, _020DD844 ; =CARDi_ReadRomSyncCore - bl CARDi_SetTask - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DD820: - ldr r1, _020DD848 ; =OSi_ThreadInfo - mov r0, r5 - ldr r1, [r1, #4] - str r1, [r5, #0x104] - bl CARDi_ReadRomSyncCore - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020DD838: .word _021E3E60 -_020DD83C: .word _021E3820 -_020DD840: .word _021E3E40 -_020DD844: .word CARDi_ReadRomSyncCore -_020DD848: .word OSi_ThreadInfo - arm_func_end CARDi_ReadRom - - arm_func_start CARD_Init -CARD_Init: ; 0x020DD84C - stmdb sp!, {r3, lr} - ldr ip, _020DD8A8 ; =_021E3820 - ldr r0, [ip, #0x114] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r2, #0 - ldr r0, _020DD8AC ; =_021E3E40 - sub r1, r2, #1 - mov r3, #1 - str r3, [ip, #0x114] - str r2, [ip, #0x24] - str r2, [ip, #0x20] - str r2, [ip, #0x1c] - str r1, [ip, #0x28] - str r2, [ip, #0x38] - str r2, [ip, #0x3c] - str r2, [r0] - bl CARDi_InitCommon - bl CARDi_GetRomAccessor - ldr r1, _020DD8B0 ; =_021E3E60 - str r0, [r1] - bl CARD_InitPulledOutCallback - ldmia sp!, {r3, pc} - .align 2, 0 -_020DD8A8: .word _021E3820 -_020DD8AC: .word _021E3E40 -_020DD8B0: .word _021E3E60 - arm_func_end CARD_Init - - arm_func_start CARD_WaitRomAsync -CARD_WaitRomAsync: ; 0x020DD8B4 - ldr ip, _020DD8BC ; =CARDi_WaitAsync - bx ip - .align 2, 0 -_020DD8BC: .word CARDi_WaitAsync - arm_func_end CARD_WaitRomAsync - - arm_func_start CARDi_GetRomAccessor -CARDi_GetRomAccessor: ; 0x020DD8C0 - ldr r0, _020DD8C8 ; =CARDi_ReadCard - bx lr - .align 2, 0 -_020DD8C8: .word CARDi_ReadCard - arm_func_end CARDi_GetRomAccessor - - arm_func_start CARDi_OnFifoRecv -CARDi_OnFifoRecv: ; 0x020DD8CC - stmdb sp!, {r3, lr} - cmp r0, #0xb - ldmneia sp!, {r3, pc} - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldr r2, _020DD8FC ; =_021E3820 - ldr r1, [r2, #0x114] - ldr r0, [r2, #0x104] - bic r1, r1, #0x20 - str r1, [r2, #0x114] - bl OS_WakeupThreadDirect - ldmia sp!, {r3, pc} - .align 2, 0 -_020DD8FC: .word _021E3820 - arm_func_end CARDi_OnFifoRecv - - arm_func_start CARDi_TaskThread -CARDi_TaskThread: ; 0x020DD900 - stmdb sp!, {r4, r5, r6, lr} - ldr r5, _020DD94C ; =_021E3820 - mov r4, #0 -_020DD90C: - bl OS_DisableInterrupts - ldr r1, [r5, #0x114] - mov r6, r0 - tst r1, #8 - bne _020DD934 -_020DD920: - mov r0, r4 - bl OS_SleepThread - ldr r0, [r5, #0x114] - tst r0, #8 - beq _020DD920 -_020DD934: - mov r0, r6 - bl OS_RestoreInterrupts - ldr r1, [r5, #0x40] - mov r0, r5 - blx r1 - b _020DD90C - .align 2, 0 -_020DD94C: .word _021E3820 - arm_func_end CARDi_TaskThread - - arm_func_start CARDi_Request -CARDi_Request: ; 0x020DD950 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r0, [sl, #0x114] - mov sb, r1 - str r2, [sp] - tst r0, #2 - bne _020DD9C4 - ldr r1, [sl, #0x114] - mov r0, #0xb - orr r2, r1, #2 - mov r1, #1 - str r2, [sl, #0x114] - bl PXI_IsCallbackReady - cmp r0, #0 - bne _020DD9B4 - mov r6, #0x64 - mov r5, #0xb - mov r4, #1 -_020DD998: - mov r0, r6 - bl OS_SpinWait - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020DD998 -_020DD9B4: - mov r0, sl - mov r1, #0 - mov r2, #1 - bl CARDi_Request -_020DD9C4: - ldr r0, [sl] - mov r1, #0x60 - bl DC_FlushRange - bl DC_WaitWriteBufferEmpty - mov r7, #0xb - mov r6, #1 - mov r5, r7 - mov r4, r6 - mov fp, #0 -_020DD9E8: - str sb, [sl, #4] - ldr r0, [sl, #0x114] - orr r0, r0, #0x20 - str r0, [sl, #0x114] -_020DD9F8: - mov r0, r7 - mov r1, sb - mov r2, r6 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _020DD9F8 - cmp sb, #0 - bne _020DDA34 - ldr r8, [sl] -_020DDA1C: - mov r0, r5 - mov r1, r8 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _020DDA1C -_020DDA34: - bl OS_DisableInterrupts - ldr r1, [sl, #0x114] - mov r8, r0 - tst r1, #0x20 - beq _020DDA5C -_020DDA48: - mov r0, fp - bl OS_SleepThread - ldr r0, [sl, #0x114] - tst r0, #0x20 - bne _020DDA48 -_020DDA5C: - mov r0, r8 - bl OS_RestoreInterrupts - ldr r0, [sl] - mov r1, #0x60 - bl DC_InvalidateRange - ldr r0, [sl] - ldr r1, [r0] - cmp r1, #4 - bne _020DDA94 - ldr r0, [sp] - sub r0, r0, #1 - str r0, [sp] - cmp r0, #0 - bgt _020DD9E8 -_020DDA94: - cmp r1, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end CARDi_Request - - arm_func_start CARD_InitPulledOutCallback -CARD_InitPulledOutCallback: ; 0x020DDAA4 - stmdb sp!, {r3, lr} - bl PXI_Init - ldr r1, _020DDAC8 ; =CARDi_PulledOutCallback - mov r0, #0xe - bl PXI_SetFifoRecvCallback - ldr r0, _020DDACC ; =_021E4080 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DDAC8: .word CARDi_PulledOutCallback -_020DDACC: .word _021E4080 - arm_func_end CARD_InitPulledOutCallback - - arm_func_start CARDi_PulledOutCallback -CARDi_PulledOutCallback: ; 0x020DDAD0 - stmdb sp!, {r3, lr} - and r0, r1, #0x3f - cmp r0, #0x11 - bne _020DDB18 - ldr r1, _020DDB20 ; =_021E4080 - ldr r0, [r1] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #1 - str r0, [r1] - ldr r1, [r1, #4] - cmp r1, #0 - beq _020DDB08 - blx r1 -_020DDB08: - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl CARD_TerminateForPulledOut - ldmia sp!, {r3, pc} -_020DDB18: - bl OS_Terminate - ldmia sp!, {r3, pc} - .align 2, 0 -_020DDB20: .word _021E4080 - arm_func_end CARDi_PulledOutCallback - - arm_func_start CARD_IsPulledOut -CARD_IsPulledOut: ; 0x020DDB24 - ldr r0, _020DDB30 ; =_021E4080 - ldr r0, [r0] - bx lr - .align 2, 0 -_020DDB30: .word _021E4080 - arm_func_end CARD_IsPulledOut - - arm_func_start CARD_TerminateForPulledOut -CARD_TerminateForPulledOut: ; 0x020DDB34 - stmdb sp!, {r3, r4, r5, lr} - mov r0, #0 - mov r5, #1 - bl MI_StopDma - mov r0, r5 - bl MI_StopDma - mov r0, #2 - bl MI_StopDma - mov r0, #3 - bl MI_StopDma - ldr r0, _020DDBB8 ; =0x027FFFA8 - ldrh r0, [r0] - and r0, r0, #0x8000 - movs r0, r0, asr #0xf - beq _020DDB9C - bl PM_ForceToPowerOff - cmp r0, #4 - bne _020DDB94 - ldr r4, _020DDBBC ; =0x000A3A47 -_020DDB80: - mov r0, r4 - bl OS_SpinWait - bl PM_ForceToPowerOff - cmp r0, #4 - beq _020DDB80 -_020DDB94: - cmp r0, #0 - moveq r5, #0 -_020DDB9C: - cmp r5, #0 - beq _020DDBB0 - mov r0, #1 - mov r1, r0 - bl CARDi_SendtoPxi -_020DDBB0: - bl OS_Terminate - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020DDBB8: .word 0x027FFFA8 -_020DDBBC: .word 0x000A3A47 - arm_func_end CARD_TerminateForPulledOut - - arm_func_start CARDi_CheckPulledOutCore -CARDi_CheckPulledOutCore: ; 0x020DDBC0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r2, _020DDC1C ; =0x027FFC10 - ldrh r1, [r2] - cmp r1, #0 - subeq r1, r2, #0x410 - subne r1, r2, #0x10 - ldr r1, [r1] - str r1, [sp] - ldr r1, [sp] - cmp r0, r1 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #0xe - mov r1, #0x11 - mov r2, #0 - bl CARDi_PulledOutCallback - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020DDC1C: .word 0x027FFC10 - arm_func_end CARDi_CheckPulledOutCore - - arm_func_start CARDi_SendtoPxi -CARDi_SendtoPxi: ; 0x020DDC20 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r1, r7 - mov r0, #0xe - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r5, #0xe - mov r4, #0 -_020DDC4C: - mov r0, r6 - bl SVC_WaitByLoop - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _020DDC4C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end CARDi_SendtoPxi - - ; Functions presumably in libcard but not present in plat - - arm_func_start CARD_SetSpiReadWaitCycles -CARD_SetSpiReadWaitCycles: ; 0x020DDC70 - ldr r1, _020DDC7C ; =_021E4088 - strb r0, [r1, #2] - bx lr - .align 2, 0 -_020DDC7C: .word _021E4088 - arm_func_end CARD_SetSpiReadWaitCycles - - arm_func_start CARD_SetSpiWriteWaitCycles -CARD_SetSpiWriteWaitCycles: ; 0x020DDC80 - ldr r1, _020DDC8C ; =_021E4088 - strb r0, [r1, #1] - bx lr - .align 2, 0 -_020DDC8C: .word _021E4088 - arm_func_end CARD_SetSpiWriteWaitCycles - - arm_func_start CARDi_SpiDummyWait -CARDi_SpiDummyWait: ; 0x020DDC90 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bl OS_GetTick - mov r4, #0 - ldr r5, _020DDCEC ; =0x000082EA - ldr sl, _020DDCF0 ; =_021E4088 - mov r6, r0 - mov r7, r1 - mov sb, r4 - mov r8, #0xfa00 -_020DDCB4: - bl OS_GetTick - subs r3, r0, r6 - sbc r2, r1, r7 - umull r0, r1, r3, r8 - mla r1, r3, sb, r1 - mla r1, r2, r8, r1 - mov r2, r5 - mov r3, r4 - bl _ll_udiv - ldrb r2, [sl] - cmp r1, r2, asr #31 - cmpeq r0, r2 - blo _020DDCB4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020DDCEC: .word 0x000082EA -_020DDCF0: .word _021E4088 - arm_func_end CARDi_SpiDummyWait - - arm_func_start CARD_SpiWaitInit -CARD_SpiWaitInit: ; 0x020DDCF4 - stmdb sp!, {r3, lr} - ldr r1, _020DDD38 ; =_021E4088 - mov r0, #0x32 - strb r0, [r1, #2] - strb r0, [r1, #1] - strb r0, [r1] - mov r2, #1 - ldr r0, _020DDD3C ; =_02110FBC - str r2, [r1, #4] - ldrh r1, [r0] - ldr r0, _020DDD40 ; =0x0000FFFD - cmp r1, r0 - ldmneia sp!, {r3, pc} - bl OS_GetLockID - ldr r1, _020DDD3C ; =_02110FBC - strh r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DDD38: .word _021E4088 -_020DDD3C: .word _02110FBC -_020DDD40: .word 0x0000FFFD - arm_func_end CARD_SpiWaitInit - - arm_func_start CARDi_SpiWaitWriteByte -CARDi_SpiWaitWriteByte: ; 0x020DDD44 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r0 - bl OS_GetTick - mov fp, #0 - ldr sl, _020DDDE4 ; =0x000082EA - ldr sb, _020DDDE8 ; =_021E4088 - mov r4, r0 - mov r5, r1 - mov r8, fp - mov r7, #0xfa00 -_020DDD6C: - bl OS_GetTick - subs lr, r0, r4 - sbc ip, r1, r5 - mov r2, sl - mov r3, fp - umull r0, r1, lr, r7 - mla r1, lr, r8, r1 - mla r1, ip, r7, r1 - bl _ll_udiv - ldrb r2, [sb, #1] - cmp r1, r2, asr #31 - cmpeq r0, r2 - blo _020DDD6C - ldr r0, [r6, #4] - ldr r1, _020DDDEC ; =0x040001A2 - ldrb r0, [r0] - strh r0, [r1] - ldr r0, [r6, #4] - sub r1, r1, #2 - add r0, r0, #1 - str r0, [r6, #4] -_020DDDC0: - ldrh r0, [r1] - tst r0, #0x80 - bne _020DDDC0 - ldr r0, _020DDDEC ; =0x040001A2 - ldrh r0, [r0] - strh r0, [sp] - ldrh r0, [sp] - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DDDE4: .word 0x000082EA -_020DDDE8: .word _021E4088 -_020DDDEC: .word 0x040001A2 - arm_func_end CARDi_SpiWaitWriteByte - - arm_func_start CARDi_SpiWaitReadByte -CARDi_SpiWaitReadByte: ; 0x020DDDF0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r0 - bl OS_GetTick - mov fp, #0 - ldr sl, _020DDE88 ; =0x000082EA - ldr sb, _020DDE8C ; =_021E4088 - mov r4, r0 - mov r5, r1 - mov r8, fp - mov r7, #0xfa00 -_020DDE18: - bl OS_GetTick - subs lr, r0, r4 - sbc ip, r1, r5 - mov r2, sl - mov r3, fp - umull r0, r1, lr, r7 - mla r1, lr, r8, r1 - mla r1, ip, r7, r1 - bl _ll_udiv - ldrb r2, [sb, #2] - cmp r1, r2, asr #31 - cmpeq r0, r2 - blo _020DDE18 - ldr r0, _020DDE90 ; =0x040001A2 - mov r1, #0 - strh r1, [r0] - sub r1, r0, #2 -_020DDE5C: - ldrh r0, [r1] - tst r0, #0x80 - bne _020DDE5C - ldr r1, _020DDE90 ; =0x040001A2 - ldr r0, [r6, #8] - ldrh r1, [r1] - strb r1, [r0] - ldr r0, [r6, #8] - add r0, r0, #1 - str r0, [r6, #8] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DDE88: .word 0x000082EA -_020DDE8C: .word _021E4088 -_020DDE90: .word 0x040001A2 - arm_func_end CARDi_SpiWaitReadByte - - arm_func_start CARD_SpiWaitReadRange -CARD_SpiWaitReadRange: ; 0x020DDE94 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r2, _020DDFC4 ; =_021E409C - ldr r1, _020DDFC8 ; =_021E4088 - mov r6, r0 - str r2, [r1, #8] - str r6, [r1, #0xc] - mov r0, #1 - strb r0, [r2] - mov r1, #0 - ldr r0, _020DDFCC ; =_02110FBC - strb r1, [r6] - ldrh r0, [r0] - bl CARD_LockBackup - ldr r0, _020DDFCC ; =_02110FBC - ldrh r0, [r0] - bl OS_LockCard - ldr r2, _020DDFD0 ; =0x040001A0 -_020DDED8: - ldrh r0, [r2] - tst r0, #0x80 - bne _020DDED8 - ldr r1, _020DDFD4 ; =0x0000A042 - ldr r0, _020DDFD8 ; =_021E408C - strh r1, [r2] - bl CARDi_SpiWaitWriteByte - bl CARDi_SpiDummyWait - ldr r0, _020DDFD8 ; =_021E408C - bl CARDi_SpiWaitReadByte - bl CARDi_SpiDummyWait - ldrb r4, [r6] - ldr r0, _020DDFC8 ; =_021E4088 - mov r5, #0 - str r5, [r0, #8] - cmp r4, #0xb9 - movhi r4, #0 - str r6, [r0, #0xc] - strb r5, [r6] - cmp r4, #0 - beq _020DDF60 - sub sl, r4, #1 - ldr sb, _020DDFDC ; =0x0000A002 - ldr r8, _020DDFD0 ; =0x040001A0 - ldr r7, _020DDFD8 ; =_021E408C - b _020DDF54 -_020DDF40: - mov r0, r7 - cmp r5, sl - streqh sb, [r8] - bl CARDi_SpiWaitReadByte - add r5, r5, #1 -_020DDF54: - cmp r5, r4 - blt _020DDF40 - b _020DDF74 -_020DDF60: - ldr r2, _020DDFDC ; =0x0000A002 - ldr r1, _020DDFD0 ; =0x040001A0 - ldr r0, _020DDFD8 ; =_021E408C - strh r2, [r1] - bl CARDi_SpiWaitReadByte -_020DDF74: - mov r5, #0 - b _020DDF8C -_020DDF7C: - ldrb r0, [r6, r5] - eor r0, r0, #0xaa - strb r0, [r6, r5] - add r5, r5, #1 -_020DDF8C: - cmp r5, r4 - blt _020DDF7C - ldr r1, _020DDFD0 ; =0x040001A0 -_020DDF98: - ldrh r0, [r1] - tst r0, #0x80 - bne _020DDF98 - ldr r0, _020DDFCC ; =_02110FBC - ldrh r0, [r0] - bl OS_UnLockCard - ldr r0, _020DDFCC ; =_02110FBC - ldrh r0, [r0] - bl CARD_UnlockBackup - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020DDFC4: .word _021E409C -_020DDFC8: .word _021E4088 -_020DDFCC: .word _02110FBC -_020DDFD0: .word 0x040001A0 -_020DDFD4: .word 0x0000A042 -_020DDFD8: .word _021E408C -_020DDFDC: .word 0x0000A002 - arm_func_end CARD_SpiWaitReadRange - - arm_func_start CARD_SpiWaitWriteRange -CARD_SpiWaitWriteRange: ; 0x020DDFE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r7, _020DE0AC ; =_021E4158 - ldr r3, _020DE0B0 ; =_021E4088 - mov r4, #0 - str r7, [r3, #8] - ldr r2, _020DE0B4 ; =_02110FBC - str r4, [r3, #0xc] - mov r6, r0 - mov r3, #2 - ldrh r0, [r2] - mov r5, r1 - strb r3, [r7] - bl CARD_LockBackup - ldr r0, _020DE0B4 ; =_02110FBC - ldrh r0, [r0] - bl OS_LockCard - ldr r2, _020DE0B8 ; =0x040001A0 -_020DE024: - ldrh r0, [r2] - tst r0, #0x80 - bne _020DE024 - ldr r1, _020DE0BC ; =0x0000A042 - ldr r0, _020DE0C0 ; =_021E408C - strh r1, [r2] - bl CARDi_SpiWaitWriteByte - bl CARDi_SpiDummyWait - ldr r0, _020DE0B0 ; =_021E4088 - mov r4, #0 - str r6, [r0, #8] - sub sb, r5, #1 - ldr r8, _020DE0C4 ; =0x0000A002 - ldr r7, _020DE0B8 ; =0x040001A0 - ldr r6, _020DE0C0 ; =_021E408C - b _020DE078 -_020DE064: - mov r0, r6 - cmp r4, sb - streqh r8, [r7] - bl CARDi_SpiWaitWriteByte - add r4, r4, #1 -_020DE078: - cmp r4, r5 - blt _020DE064 - ldr r1, _020DE0B8 ; =0x040001A0 -_020DE084: - ldrh r0, [r1] - tst r0, #0x80 - bne _020DE084 - ldr r0, _020DE0B4 ; =_02110FBC - ldrh r0, [r0] - bl OS_UnLockCard - ldr r0, _020DE0B4 ; =_02110FBC - ldrh r0, [r0] - bl CARD_UnlockBackup - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020DE0AC: .word _021E4158 -_020DE0B0: .word _021E4088 -_020DE0B4: .word _02110FBC -_020DE0B8: .word 0x040001A0 -_020DE0BC: .word 0x0000A042 -_020DE0C0: .word _021E408C -_020DE0C4: .word 0x0000A002 - arm_func_end CARD_SpiWaitWriteRange - - arm_func_start CARD_SpiWaitGetStatus -CARD_SpiWaitGetStatus: ; 0x020DE0C8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r3, _020DE228 ; =_021E409C - ldr r1, _020DE22C ; =_021E4088 - add r2, sp, #0 - str r3, [r1, #8] - str r2, [r1, #0xc] - ldr r0, _020DE230 ; =_02110FBC - mov r1, #8 - ldrh r0, [r0] - strb r1, [r3] - bl CARD_LockBackup - ldr r0, _020DE230 ; =_02110FBC - ldrh r0, [r0] - bl OS_LockCard - bl OS_GetTick - mov fp, #0 - mov r4, r0 - mov r5, r1 - mov r6, #0x40 - mov r8, fp - mov r7, #0x3e8 - mov sl, fp - mov sb, #0x3c -_020DE124: - bl OS_GetTick - subs r0, r0, r4 - umull lr, ip, r0, r6 - mla ip, r0, fp, ip - sbc r1, r1, r5 - mla ip, r1, r6, ip - umull r0, r1, lr, r7 - mla r1, lr, r8, r1 - mla r1, ip, r7, r1 - ldr r2, _020DE234 ; =0x000082EA - mov r3, #0 - bl _ll_udiv - cmp r1, sl - cmpeq r0, sb - blo _020DE124 - ldr r2, _020DE238 ; =0x040001A0 -_020DE164: - ldrh r0, [r2] - tst r0, #0x80 - bne _020DE164 - ldr r1, _020DE23C ; =0x0000A042 - ldr r0, _020DE240 ; =_021E408C - strh r1, [r2] - bl CARDi_SpiWaitWriteByte - strb r0, [sp] - bl OS_GetTick - mov r4, r0 - mov r5, r1 - mov r6, #0x40 - mov r7, #0x3e8 - mov sb, #0 - mov r8, #0x32 -_020DE1A0: - bl OS_GetTick - subs r0, r0, r4 - mov r3, #0 - sbc ip, r1, r5 - mov r1, r3 - umull fp, sl, r0, r6 - mla sl, r0, r1, sl - mla sl, ip, r6, sl - mov ip, r3 - umull r0, r1, fp, r7 - mla r1, fp, ip, r1 - mla r1, sl, r7, r1 - ldr r2, _020DE234 ; =0x000082EA - bl _ll_udiv - cmp r1, sb - cmpeq r0, r8 - blo _020DE1A0 - ldr r2, _020DE244 ; =0x0000A002 - ldr r1, _020DE238 ; =0x040001A0 - ldr r0, _020DE240 ; =_021E408C - strh r2, [r1] - bl CARDi_SpiWaitReadByte - ldr r1, _020DE238 ; =0x040001A0 -_020DE1FC: - ldrh r0, [r1] - tst r0, #0x80 - bne _020DE1FC - ldr r0, _020DE230 ; =_02110FBC - ldrh r0, [r0] - bl OS_UnLockCard - ldr r0, _020DE230 ; =_02110FBC - ldrh r0, [r0] - bl CARD_UnlockBackup - ldrb r0, [sp] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DE228: .word _021E409C -_020DE22C: .word _021E4088 -_020DE230: .word _02110FBC -_020DE234: .word 0x000082EA -_020DE238: .word 0x040001A0 -_020DE23C: .word 0x0000A042 -_020DE240: .word _021E408C -_020DE244: .word 0x0000A002 - arm_func_end CARD_SpiWaitGetStatus - - ; libwm - - arm_func_start WM_Init -WM_Init: ; 0x020DE248 - stmdb sp!, {r3, lr} - mov r2, #0xf00 - bl WmInitCore - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r1, _020DE270 ; =_021E4220 - mov r2, #0 - ldr r1, [r1, #4] - strh r2, [r1, #0x16] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DE270: .word _021E4220 - arm_func_end WM_Init - - arm_func_start WmInitCore -WmInitCore: ; 0x020DE274 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r6, r0 - mov r4, r1 - mov r7, r2 - bl OS_DisableInterrupts - ldr r1, _020DE444 ; =_021E4220 - mov r5, r0 - ldrh r1, [r1] - cmp r1, #0 - beq _020DE2A8 - bl OS_RestoreInterrupts - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DE2A8: - cmp r6, #0 - bne _020DE2BC - bl OS_RestoreInterrupts - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DE2BC: - cmp r4, #3 - bls _020DE2D0 - bl OS_RestoreInterrupts - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DE2D0: - tst r6, #0x1f - beq _020DE2E4 - bl OS_RestoreInterrupts - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DE2E4: - bl PXI_Init - mov r0, #0xa - mov r1, #1 - bl PXI_IsCallbackReady - cmp r0, #0 - bne _020DE30C - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_020DE30C: - mov r0, r6 - mov r1, r7 - bl DC_InvalidateRange - mov r0, r4 - mov r1, r6 - mov r3, r7 - mov r2, #0 - bl MI_DmaFill32 - ldr r0, _020DE444 ; =_021E4220 - add r1, r6, #0x200 - str r6, [r0, #4] - str r1, [r6] - ldr r2, [r0, #4] - ldr r1, [r2] - add r1, r1, #0x300 - str r1, [r2, #4] - ldr r2, [r0, #4] - ldr r1, [r2, #4] - add r1, r1, #0x800 - str r1, [r2, #0xc] - ldr r1, [r0, #4] - ldr r0, [r1, #0xc] - add r0, r0, #0x100 - str r0, [r1, #0x10] - bl WmClearFifoRecvFlag - ldr r1, _020DE444 ; =_021E4220 - mov r3, #0 - ldr r0, [r1, #4] - mov r2, r3 - strh r4, [r0, #0x14] - ldr r0, [r1, #4] - str r3, [r0, #0x14c] - ldr r0, [r1, #4] - add r0, r0, #0x100 - strh r3, [r0, #0x50] - b _020DE3B8 -_020DE39C: - ldr r0, [r1, #4] - add r0, r0, r3, lsl #2 - str r2, [r0, #0xcc] - ldr r0, [r1, #4] - add r0, r0, r3, lsl #2 - str r2, [r0, #0x10c] - add r3, r3, #1 -_020DE3B8: - cmp r3, #0x10 - blt _020DE39C - ldr r0, _020DE448 ; =_021E4228 - ldr r1, _020DE44C ; =_021E4248 - mov r2, #0xa - bl OS_InitMessageQueue - mov r6, #0 - mov r4, #0x8000 - ldr sl, _020DE450 ; =_021E42C0 - mov sb, #2 - ldr r8, _020DE448 ; =_021E4228 - mov r7, #1 - b _020DE414 -_020DE3EC: - mov r2, r6, lsl #8 - mov r1, sb - add r0, sl, r6, lsl #8 - strh r4, [sl, r2] - bl DC_StoreRange - mov r0, r8 - mov r2, r7 - add r1, sl, r6, lsl #8 - bl OS_SendMessage - add r6, r6, #1 -_020DE414: - cmp r6, #0xa - blt _020DE3EC - ldr r1, _020DE454 ; =WmReceiveFifo - mov r0, #0xa - bl PXI_SetFifoRecvCallback - ldr r1, _020DE444 ; =_021E4220 - mov r2, #1 - mov r0, r5 - strh r2, [r1] - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020DE444: .word _021E4220 -_020DE448: .word _021E4228 -_020DE44C: .word _021E4248 -_020DE450: .word _021E42C0 -_020DE454: .word WmReceiveFifo - arm_func_end WmInitCore - - arm_func_start WM_Finish -WM_Finish: ; 0x020DE458 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - mov r4, r0 - bl WMi_CheckInitialized - cmp r0, #0 - beq _020DE480 - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, #3 - ldmia sp!, {r4, pc} -_020DE480: - mov r0, #1 - mov r1, #0 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl WmClearFifoRecvFlag - mov r0, #0xa - mov r1, #0 - bl PXI_SetFifoRecvCallback - ldr r1, _020DE4C4 ; =_021E4220 - mov r2, #0 - str r2, [r1, #4] - mov r0, r4 - strh r2, [r1] - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DE4C4: .word _021E4220 - arm_func_end WM_Finish - - arm_func_start WMi_SetCallbackTable -WMi_SetCallbackTable: ; 0x020DE4C8 - ldr r2, _020DE4DC ; =_021E4220 - ldr r2, [r2, #4] - add r0, r2, r0, lsl #2 - str r1, [r0, #0x18] - bx lr - .align 2, 0 -_020DE4DC: .word _021E4220 - arm_func_end WMi_SetCallbackTable - - arm_func_start WmGetCommandBuffer4Arm7 -WmGetCommandBuffer4Arm7: ; 0x020DE4E0 - stmdb sp!, {r3, lr} - ldr r0, _020DE534 ; =_021E4228 - add r1, sp, #0 - mov r2, #0 - bl OS_ReceiveMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [sp] - mov r1, #2 - bl DC_InvalidateRange - ldr r1, [sp] - ldrh r0, [r1] - tst r0, #0x8000 - movne r0, r1 - ldmneia sp!, {r3, pc} - ldr r0, _020DE534 ; =_021E4228 - mov r2, #1 - bl OS_JamMessage - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020DE534: .word _021E4228 - arm_func_end WmGetCommandBuffer4Arm7 - - arm_func_start WMi_SendCommand -WMi_SendCommand: ; 0x020DE538 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl WmGetCommandBuffer4Arm7 - movs r4, r0 - moveq r0, #8 - ldmeqia sp!, {r3, r4, r5, lr} - addeq sp, sp, #0x10 - bxeq lr - strh r5, [r4] - ldrh r5, [sp, #0x14] - add r0, sp, #0x14 - bic r0, r0, #3 - mov r3, #0 - cmp r5, #0 - add r2, r0, #4 - ble _020DE598 -_020DE57C: - add r2, r2, #4 - ldr r1, [r2, #-4] - add r0, r4, r3, lsl #2 - add r3, r3, #1 - str r1, [r0, #4] - cmp r3, r5 - blt _020DE57C -_020DE598: - mov r0, r4 - mov r1, #0x100 - bl DC_StoreRange - mov r1, r4 - mov r0, #0xa - mov r2, #0 - bl PXI_SendWordByFifo - mov r5, r0 - ldr r0, _020DE5E0 ; =_021E4228 - mov r1, r4 - mov r2, #1 - bl OS_SendMessage - cmp r5, #0 - movlt r0, #8 - movge r0, #2 - ldmia sp!, {r3, r4, r5, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020DE5E0: .word _021E4228 - arm_func_end WMi_SendCommand - - arm_func_start WMi_SendCommandDirect -WMi_SendCommandDirect: ; 0x020DE5E4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r4, r1 - bl WmGetCommandBuffer4Arm7 - movs r5, r0 - moveq r0, #8 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MI_CpuCopy8 - mov r0, r5 - mov r1, r4 - bl DC_StoreRange - mov r1, r5 - mov r0, #0xa - mov r2, #0 - bl PXI_SendWordByFifo - mov r4, r0 - ldr r0, _020DE650 ; =_021E4228 - mov r1, r5 - mov r2, #1 - bl OS_SendMessage - cmp r4, #0 - movlt r0, #8 - movge r0, #2 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020DE650: .word _021E4228 - arm_func_end WMi_SendCommandDirect - - arm_func_start WMi_GetSystemWork -WMi_GetSystemWork: ; 0x020DE654 - ldr r0, _020DE660 ; =_021E4220 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_020DE660: .word _021E4220 - arm_func_end WMi_GetSystemWork - - arm_func_start WMi_CheckInitialized -WMi_CheckInitialized: ; 0x020DE664 - ldr r0, _020DE67C ; =_021E4220 - ldrh r0, [r0] - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - bx lr - .align 2, 0 -_020DE67C: .word _021E4220 - arm_func_end WMi_CheckInitialized - - arm_func_start WMi_CheckIdle -WMi_CheckIdle: ; 0x020DE680 - stmdb sp!, {r3, lr} - bl WMi_CheckInitialized - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _020DE6C4 ; =_021E4220 - mov r1, #2 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - bl DC_InvalidateRange - ldr r0, _020DE6C4 ; =_021E4220 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - ldrh r0, [r0] - cmp r0, #1 - movls r0, #3 - movhi r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020DE6C4: .word _021E4220 - arm_func_end WMi_CheckIdle - - arm_func_start WMi_CheckStateEx -WMi_CheckStateEx: ; 0x020DE6C8 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - bl WMi_CheckInitialized - cmp r0, #0 - ldmneia sp!, {r3, lr} - addne sp, sp, #0x10 - bxne lr - ldr r0, _020DE758 ; =_021E4220 - mov r1, #2 - ldr r0, [r0, #4] - ldr r0, [r0, #4] - bl DC_InvalidateRange - ldr r0, _020DE758 ; =_021E4220 - ldr r3, [sp, #8] - ldr r0, [r0, #4] - add r1, sp, #8 - ldr r2, [r0, #4] - bic r0, r1, #3 - add ip, r0, #4 - ldrh lr, [r2] - cmp r3, #0 - mov r0, #3 - ldmeqia sp!, {r3, lr} - addeq sp, sp, #0x10 - bxeq lr - mov r1, #0 -_020DE730: - add ip, ip, #4 - ldr r2, [ip, #-4] - cmp r2, lr - moveq r0, r1 - subs r3, r3, #1 - str r3, [sp, #8] - bne _020DE730 - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_020DE758: .word _021E4220 - arm_func_end WMi_CheckStateEx - - arm_func_start WmReceiveFifo -WmReceiveFifo: ; 0x020DE75C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r0, _020DEAF4 ; =_021E4220 - cmp r2, #0 - ldr r4, [r0, #4] - mov sl, r1 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r4, #0x10] - mov r1, #0x100 - bl DC_InvalidateRange - ldrh r0, [r4, #0x16] - cmp r0, #0 - bne _020DE7A0 - ldr r0, [r4, #4] - mov r1, #0x800 - bl DC_InvalidateRange -_020DE7A0: - ldr r0, [r4, #0x10] - cmp sl, r0 - beq _020DE7B8 - mov r0, sl - mov r1, #0x100 - bl DC_InvalidateRange -_020DE7B8: - ldrh r0, [sl] - cmp r0, #0x2c - blo _020DE870 - cmp r0, #0x80 - bne _020DE7F4 - ldrh r0, [sl, #2] - cmp r0, #0x13 - bne _020DE7DC - bl OS_Terminate -_020DE7DC: - ldr r1, [r4, #0xc8] - cmp r1, #0 - beq _020DEAB4 - mov r0, sl - blx r1 - b _020DEAB4 -_020DE7F4: - cmp r0, #0x82 - bne _020DE848 - ldrh r0, [sl, #6] - add r1, r4, r0, lsl #2 - ldr r0, [r1, #0xcc] - cmp r0, #0 - beq _020DEAB4 - ldr r0, [r1, #0x10c] - str r0, [sl, #0x1c] - ldr r0, [r4, #0x14c] - strh r0, [sl, #0x22] - ldr r1, [r4, #4] - ldr r0, [sl, #8] - ldrh r1, [r1, #0x72] - bl DC_InvalidateRange - ldrh r1, [sl, #6] - mov r0, sl - add r1, r4, r1, lsl #2 - ldr r1, [r1, #0xcc] - blx r1 - b _020DEAB4 -_020DE848: - cmp r0, #0x81 - bne _020DEAB4 - mov r0, #0xf - strh r0, [sl] - ldr r1, [sl, #0x1c] - cmp r1, #0 - beq _020DEAB4 - mov r0, sl - blx r1 - b _020DEAB4 -_020DE870: - cmp r0, #0xe - bne _020DE8B0 - ldrh r0, [sl, #4] - add r0, r0, #0xf5 - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _020DE8B0 - ldrh r0, [sl, #2] - cmp r0, #0 - bne _020DE8B0 - ldr r1, [r4, #4] - ldr r0, [sl, #8] - ldrh r1, [r1, #0x72] - bl DC_InvalidateRange -_020DE8B0: - ldrh r1, [sl] - cmp r1, #2 - ldreqh r0, [sl, #2] - cmpeq r0, #0 - add r0, r4, r1, lsl #2 - bne _020DE8EC - ldr r4, [r0, #0x18] - bl WM_Finish - cmp r4, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - blx r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020DE8EC: - ldr r1, [r0, #0x18] - cmp r1, #0 - beq _020DE914 - mov r0, sl - blx r1 - ldr r0, _020DEAF4 ; =_021E4220 - ldrh r0, [r0] - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020DE914: - ldrh r0, [sl] - cmp r0, #8 - cmpne r0, #0xc - bne _020DEAB4 - cmp r0, #8 - bne _020DE958 - add r0, sl, #0xa - str r0, [sp] - ldrh r5, [sl, #8] - ldrh r6, [sl, #0x10] - ldrh r0, [sl, #0x12] - add fp, sl, #0x14 - mov r7, #0 - str r0, [sp, #4] - ldrh r8, [sl, #0x2c] - ldrh sb, [sl, #0x2e] - b _020DE988 -_020DE958: - cmp r0, #0xc - bne _020DE988 - ldrh r5, [sl, #8] - ldrh r7, [sl, #0xa] - ldrh r0, [sl, #0xc] - mov r6, #0 - mov fp, r6 - str r0, [sp, #4] - add r0, sl, #0x10 - ldrh r8, [sl, #0x16] - ldrh sb, [sl, #0x18] - str r0, [sp] -_020DE988: - cmp r5, #7 - cmpne r5, #9 - cmpne r5, #0x1a - bne _020DEAB4 - cmp r5, #7 - ldreq r1, [r4, #0x14c] - mov r0, #1 - orreq r0, r1, r0, lsl r6 - mvnne r0, r0, lsl r6 - ldrne r1, [r4, #0x14c] - add r3, r4, #0x100 - andne r0, r1, r0 - str r0, [r4, #0x14c] - ldr r0, _020DEAF8 ; =_021E4270 - mov r1, #0 - mov r2, #0x44 - strh r7, [r3, #0x50] - bl MI_CpuFill8 - ldr ip, _020DEAF4 ; =_021E4220 - mov r1, #0x82 - strh r1, [ip, #0x50] - mov r1, #0 - strh r1, [ip, #0x52] - strh r5, [ip, #0x54] - str r1, [ip, #0x58] - str r1, [ip, #0x5c] - strh r1, [ip, #0x60] - strh r6, [ip, #0x62] - strh r7, [ip, #0x70] - ldr r2, [r4, #0x14c] - ldr r1, _020DEAFC ; =0x0000FFFF - strh r2, [ip, #0x72] - strh r1, [ip, #0x6a] - ldr r3, [sp, #4] - ldr r0, [sp] - ldr r1, _020DEB00 ; =_021E4284 - mov r2, #6 - strh r3, [ip, #0x8c] - bl MI_CpuCopy8 - cmp fp, #0 - mov r2, #0x18 - beq _020DEA40 - ldr r1, _020DEB04 ; =_021E4294 - mov r0, fp - bl MIi_CpuCopy16 - b _020DEA4C -_020DEA40: - ldr r1, _020DEB04 ; =_021E4294 - mov r0, #0 - bl MIi_CpuClear16 -_020DEA4C: - cmp r7, #0 - moveq r1, r8 - movne r1, sb - cmp r7, #0 - ldr r0, _020DEAF4 ; =_021E4220 - ldr r7, _020DEAF4 ; =_021E4220 - strh r1, [r0, #0x90] - movne sb, r8 - ldr r5, _020DEAF8 ; =_021E4270 - mov r6, #0 - strh sb, [r7, #0x92] -_020DEA78: - strh r6, [r7, #0x56] - add r2, r4, r6, lsl #2 - ldr r0, [r2, #0xcc] - cmp r0, #0 - beq _020DEAA0 - ldr r1, [r2, #0x10c] - mov r0, r5 - str r1, [r7, #0x6c] - ldr r1, [r2, #0xcc] - blx r1 -_020DEAA0: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - cmp r6, #0x10 - blo _020DEA78 -_020DEAB4: - ldr r0, [r4, #0x10] - mov r1, #0x100 - bl DC_InvalidateRange - bl WmClearFifoRecvFlag - ldr r0, [r4, #0x10] - cmp sl, r0 - addeq sp, sp, #8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrh r2, [sl] - mov r0, sl - mov r1, #0x100 - orr r2, r2, #0x8000 - strh r2, [sl] - bl DC_StoreRange - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020DEAF4: .word _021E4220 -_020DEAF8: .word _021E4270 -_020DEAFC: .word 0x0000FFFF -_020DEB00: .word _021E4284 -_020DEB04: .word _021E4294 - arm_func_end WmReceiveFifo - - arm_func_start WmClearFifoRecvFlag -WmClearFifoRecvFlag: ; 0x020DEB08 - ldr r1, _020DEB20 ; =0x027FFF96 - ldrh r0, [r1] - tst r0, #1 - bicne r0, r0, #1 - strneh r0, [r1] - bx lr - .align 2, 0 -_020DEB20: .word 0x027FFF96 - arm_func_end WmClearFifoRecvFlag - - arm_func_start WMi_GetStatusAddress -WMi_GetStatusAddress: ; 0x020DEB24 - stmdb sp!, {r3, lr} - bl WMi_CheckInitialized - cmp r0, #0 - movne r0, #0 - ldreq r0, _020DEB44 ; =_021E4220 - ldreq r0, [r0, #4] - ldreq r0, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DEB44: .word _021E4220 - arm_func_end WMi_GetStatusAddress - - arm_func_start WM_GetAID -WM_GetAID: ; 0x020DEB48 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _020DEB74 ; =_021E4220 - ldr r1, [r1, #4] - cmp r1, #0 - addne r1, r1, #0x100 - ldrneh r4, [r1, #0x50] - moveq r4, #0 - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DEB74: .word _021E4220 - arm_func_end WM_GetAID - - arm_func_start WM_GetConnectedAIDs -WM_GetConnectedAIDs: ; 0x020DEB78 - stmdb sp!, {r4, lr} - bl OS_DisableInterrupts - ldr r1, _020DEBA4 ; =_021E4220 - ldr r1, [r1, #4] - cmp r1, #0 - ldrne r4, [r1, #0x14c] - moveq r4, #0 - bl OS_RestoreInterrupts - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_020DEBA4: .word _021E4220 - arm_func_end WM_GetConnectedAIDs - - arm_func_start WM_SetIndCallback -WM_SetIndCallback: ; 0x020DEBA8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - bl OS_DisableInterrupts - mov r5, r0 - bl WMi_CheckInitialized - movs r4, r0 - beq _020DEBD4 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} -_020DEBD4: - bl WMi_GetSystemWork - str r6, [r0, #0xc8] - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end WM_SetIndCallback - - arm_func_start WM_SetPortCallback -WM_SetPortCallback: ; 0x020DEBEC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x44 - movs r5, r1 - mov r6, r0 - mov r4, r2 - beq _020DEC54 - add r0, sp, #0 - mov r1, #0 - mov r2, #0x44 - bl MI_CpuFill8 - mov r3, #0 - ldr r1, _020DECC0 ; =0x0000FFFF - mov r7, #0x82 - mov r2, #0x19 - add r0, sp, #0x14 - strh r7, [sp] - strh r3, [sp, #2] - strh r2, [sp, #4] - strh r6, [sp, #6] - str r3, [sp, #8] - str r3, [sp, #0xc] - strh r3, [sp, #0x10] - strh r1, [sp, #0x1a] - str r4, [sp, #0x1c] - strh r3, [sp, #0x12] - bl OS_GetMacAddress -_020DEC54: - bl OS_DisableInterrupts - mov r8, r0 - bl WMi_CheckInitialized - movs r7, r0 - beq _020DEC7C - mov r0, r8 - bl OS_RestoreInterrupts - add sp, sp, #0x44 - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_020DEC7C: - bl WMi_GetSystemWork - add r0, r0, r6, lsl #2 - str r5, [r0, #0xcc] - str r4, [r0, #0x10c] - cmp r5, #0 - beq _020DECAC - bl WM_GetConnectedAIDs - strh r0, [sp, #0x22] - bl WM_GetAID - strh r0, [sp, #0x20] - add r0, sp, #0 - blx r5 -_020DECAC: - mov r0, r8 - bl OS_RestoreInterrupts - mov r0, #0 - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020DECC0: .word 0x0000FFFF - arm_func_end WM_SetPortCallback - - arm_func_start WM_ReadStatus -WM_ReadStatus: ; 0x020DECC4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl WMi_GetSystemWork - mov r4, r0 - bl WMi_CheckInitialized - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r5, #0 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #4] - mov r1, #0x7d0 - bl DC_InvalidateRange - ldr r0, [r4, #4] - mov r1, r5 - mov r2, #0x7d0 - bl MIi_CpuCopyFast - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_ReadStatus - - arm_func_start WM_GetMPSendBufferSize -WM_GetMPSendBufferSize: ; 0x020DED10 - stmdb sp!, {r4, lr} - bl WMi_GetSystemWork - mov r4, r0 - mov r0, #2 - mov r1, #7 - mov r2, #8 - bl WMi_CheckStateEx - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #4] - mov r1, #4 - add r0, r0, #0xc - bl DC_InvalidateRange - ldr r1, [r4, #4] - ldr r0, [r1, #0xc] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r1, #0x3c - mov r1, #4 - bl DC_InvalidateRange - ldr r0, [r4, #4] - ldrh r0, [r0, #0x3c] - add r0, r0, #0x1f - bic r0, r0, #0x1f - ldmia sp!, {r4, pc} - arm_func_end WM_GetMPSendBufferSize - - arm_func_start WM_GetMPReceiveBufferSize -WM_GetMPReceiveBufferSize: ; 0x020DED7C - stmdb sp!, {r3, r4, r5, lr} - bl WMi_GetSystemWork - mov r4, r0 - mov r0, #2 - mov r1, #7 - mov r2, #8 - bl WMi_CheckStateEx - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #4] - mov r1, #4 - add r0, r0, #0xc - bl DC_InvalidateRange - ldr r1, [r4, #4] - ldr r0, [r1, #0xc] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - add r0, r1, #0x188 - mov r1, #2 - bl DC_InvalidateRange - ldr r1, [r4, #4] - add r0, r1, #0x100 - ldrh r0, [r0, #0x88] - cmp r0, #0 - moveq r5, #1 - add r0, r1, #0x3e - mov r1, #2 - movne r5, #0 - bl DC_InvalidateRange - ldr r0, [r4, #4] - cmp r5, #1 - ldrh r5, [r0, #0x3e] - addne r0, r5, #0x51 - bicne r0, r0, #0x1f - movne r0, r0, lsl #1 - ldmneia sp!, {r3, r4, r5, pc} - add r0, r0, #0xf8 - mov r1, #2 - bl DC_InvalidateRange - ldr r0, [r4, #4] - add r1, r5, #0xc - ldrh r0, [r0, #0xf8] - mul r0, r1, r0 - add r0, r0, #0x29 - bic r0, r0, #0x1f - mov r0, r0, lsl #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_GetMPReceiveBufferSize - - arm_func_start WM_ReadMPData -WM_ReadMPData: ; 0x020DEE40 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x3c - mov r5, r0 - mov r4, r1 - bl WMi_GetSystemWork - mov r6, r0 - bl WMi_CheckInitialized - cmp r0, #0 - addne sp, sp, #0x3c - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, pc} - cmp r4, #1 - blo _020DEE7C - cmp r4, #0xf - bls _020DEE88 -_020DEE7C: - add sp, sp, #0x3c - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_020DEE88: - ldr r0, [r6, #4] - mov r1, #2 - add r0, r0, #0x82 - add r0, r0, #0x100 - bl DC_InvalidateRange - ldr r0, [r6, #4] - mov r1, #1 - add r0, r0, #0x100 - ldrh r0, [r0, #0x82] - tst r0, r1, lsl r4 - addeq sp, sp, #0x3c - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldrh r0, [r5, #4] - cmp r0, #0 - addeq sp, sp, #0x3c - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - add r0, r5, #0xa - str r0, [sp] - mov r3, #0 - add r2, sp, #0 -_020DEEE0: - ldr r0, [r2, r3, lsl #2] - ldrh r1, [r0, #4] - cmp r4, r1 - addeq sp, sp, #0x3c - ldmeqia sp!, {r3, r4, r5, r6, pc} - add r3, r3, #1 - add r0, r2, r3, lsl #2 - ldrh r1, [r5, #6] - ldr r0, [r0, #-4] - add r0, r1, r0 - str r0, [r2, r3, lsl #2] - ldrh r0, [r5, #4] - cmp r3, r0 - blt _020DEEE0 - mov r0, #0 - add sp, sp, #0x3c - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end WM_ReadMPData - - arm_func_start WM_GetAllowedChannel -WM_GetAllowedChannel: ; 0x020DEF24 - stmdb sp!, {r3, lr} - bl WMi_CheckInitialized - cmp r0, #0 - movne r0, #0x8000 - ldreq r0, _020DEF40 ; =0x027FFCFA - ldreqh r0, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_020DEF40: .word 0x027FFCFA - arm_func_end WM_GetAllowedChannel - - arm_func_start WM_GetLinkLevel -WM_GetLinkLevel: ; 0x020DEF44 - stmdb sp!, {r4, lr} - bl WMi_GetSystemWork - mov r4, r0 - bl WMi_CheckInitialized - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #4] - mov r1, #2 - bl DC_InvalidateRange - ldr r1, [r4, #4] - ldrh r0, [r1] - cmp r0, #9 - beq _020DEF8C - cmp r0, #0xa - cmpne r0, #0xb - beq _020DEFB4 - b _020DEFCC -_020DEF8C: - add r0, r1, #0x82 - add r0, r0, #0x100 - mov r1, #2 - bl DC_InvalidateRange - ldr r1, [r4, #4] - add r0, r1, #0x100 - ldrh r0, [r0, #0x82] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_020DEFB4: - add r0, r1, #0xbc - mov r1, #2 - bl DC_InvalidateRange - ldr r0, [r4, #4] - ldrh r0, [r0, #0xbc] - ldmia sp!, {r4, pc} -_020DEFCC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end WM_GetLinkLevel - - arm_func_start WM_GetDispersionBeaconPeriod -WM_GetDispersionBeaconPeriod: ; 0x020DEFD4 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r0, sp, #0 - bl OS_GetMacAddress - mov r2, #0 - add r3, sp, #0 - mov r1, r2 -_020DEFF0: - ldrb r0, [r3], #1 - add r2, r2, #1 - cmp r2, #6 - add r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - blt _020DEFF0 - ldr r0, _020DF05C ; =0x027FFC3C - ldr ip, _020DF060 ; =0x66666667 - ldr r0, [r0] - mov r3, #0x14 - add r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - rsb r0, r0, r0, lsl #3 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r1, r2, lsr #0x1f - smull r2, lr, ip, r2 - add lr, r1, lr, asr #3 - smull r1, r2, r3, lr - rsb lr, r1, r0, lsr #16 - add r0, lr, #0xc8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020DF05C: .word 0x027FFC3C -_020DF060: .word 0x66666667 - arm_func_end WM_GetDispersionBeaconPeriod - - arm_func_start WM_GetDispersionScanPeriod -WM_GetDispersionScanPeriod: ; 0x020DF064 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r0, sp, #0 - bl OS_GetMacAddress - mov r1, #0 - add r3, sp, #0 - mov r2, r1 -_020DF080: - ldrb r0, [r3], #1 - add r1, r1, #1 - cmp r1, #6 - add r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - blt _020DF080 - ldr r0, _020DF0F0 ; =0x027FFC3C - mov r1, #0xd - ldr r0, [r0] - ldr r3, _020DF0F4 ; =0x66666667 - add r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mul r0, r2, r1 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r1, r2, lsr #0x1f - smull r2, ip, r3, r2 - add ip, r1, ip, asr #2 - mov r3, #0xa - smull r1, r2, r3, ip - rsb ip, r1, r0, lsr #16 - add r0, ip, #0x1e - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020DF0F0: .word 0x027FFC3C -_020DF0F4: .word 0x66666667 - arm_func_end WM_GetDispersionScanPeriod - - arm_func_start WM_GetOtherElements -WM_GetOtherElements: ; 0x020DF0F8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x84 - ldrh r2, [r1, #0x3c] - mov lr, r0 - cmp r2, #0 - beq _020DF140 - mov r0, #0 - add r5, sp, #0 - strb r0, [sp] - mov r4, #8 -_020DF120: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _020DF120 - ldr r0, [r5] - add sp, sp, #0x84 - str r0, [lr] - ldmia sp!, {r3, r4, r5, r6, pc} -_020DF140: - ldrh r0, [r1, #0x3e] - strb r0, [sp] - ands r0, r0, #0xff - bne _020DF178 - add r5, sp, #0 - mov r4, #8 -_020DF158: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _020DF158 - ldr r0, [r5] - add sp, sp, #0x84 - str r0, [lr] - ldmia sp!, {r3, r4, r5, r6, pc} -_020DF178: - cmp r0, #0x10 - movhi r0, #0x10 - strhib r0, [sp] - ldrh r2, [r1] - ldrb r0, [sp] - mov r3, #0 - mov r2, r2, lsl #1 - sub r4, r2, #0x40 - cmp r0, #0 - add r0, r1, #0x40 - mov r2, r3 - and r1, r4, #0xff - ble _020DF228 - add ip, sp, #0 -_020DF1B0: - ldrb r5, [r0] - add r6, ip, r2, lsl #3 - add r4, r0, #2 - strb r5, [r6, #4] - ldrb r5, [r0, #1] - strb r5, [r6, #5] - str r4, [r6, #8] - ldrb r4, [r6, #5] - add r4, r4, #2 - and r5, r4, #0xff - add r3, r3, r5 - and r3, r3, #0xff - cmp r3, r1 - bls _020DF214 - mov r0, #0 - strb r0, [sp] - mov r4, #8 -_020DF1F4: - ldmia ip!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _020DF1F4 - ldr r0, [ip] - add sp, sp, #0x84 - str r0, [lr] - ldmia sp!, {r3, r4, r5, r6, pc} -_020DF214: - ldrb r4, [sp] - add r2, r2, #1 - add r0, r0, r5 - cmp r2, r4 - blt _020DF1B0 -_020DF228: - add r4, sp, #0 - mov ip, #8 -_020DF230: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _020DF230 - ldr r0, [r4] - str r0, [lr] - add sp, sp, #0x84 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end WM_GetOtherElements - - arm_func_start WM_GetNextTgid -WM_GetNextTgid: ; 0x020DF250 - stmdb sp!, {lr} - sub sp, sp, #0xc - ldr r0, _020DF2C0 ; =_02110FC0 - ldr r0, [r0] - cmp r0, #0x10000 - bne _020DF298 - bl RTC_Init - add r0, sp, #0 - bl RTC_GetTime - cmp r0, #0 - bne _020DF298 - ldr r2, [sp, #8] - ldr r0, [sp, #4] - ldr r1, _020DF2C0 ; =_02110FC0 - add r0, r2, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [r1] -_020DF298: - ldr r1, _020DF2C0 ; =_02110FC0 - ldr r0, [r1] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r0, r2, lsl #0x10 - str r2, [r1] - mov r0, r0, lsr #0x10 - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_020DF2C0: .word _02110FC0 - arm_func_end WM_GetNextTgid - - arm_func_start WM_Enable -WM_Enable: ; 0x020DF2C4 - ldr ip, _020DF2D0 ; =WMi_EnableEx - mov r1, #0 - bx ip - .align 2, 0 -_020DF2D0: .word WMi_EnableEx - arm_func_end WM_Enable - - arm_func_start WMi_EnableEx -WMi_EnableEx: ; 0x020DF2D4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - mov r0, #1 - mov r1, #0 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r0, #3 - bl WMi_SetCallbackTable - bl WMi_GetSystemWork - mov r3, r0 - ldr r1, [r3, #0x10] - mov r0, #3 - stmia sp, {r1, r4} - mov r1, #4 - ldmia r3, {r2, r3} - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WMi_EnableEx - - arm_func_start WM_Disable -WM_Disable: ; 0x020DF338 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - mov r1, r0 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #4 - bl WMi_SetCallbackTable - mov r0, #4 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_Disable - - arm_func_start WM_PowerOn -WM_PowerOn: ; 0x020DF378 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - mov r1, r0 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #5 - bl WMi_SetCallbackTable - mov r0, #5 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_PowerOn - - arm_func_start WM_PowerOff -WM_PowerOff: ; 0x020DF3B8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - mov r1, #2 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #6 - bl WMi_SetCallbackTable - mov r0, #6 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_PowerOff - - arm_func_start WM_Initialize -WM_Initialize: ; 0x020DF3F8 - ldr ip, _020DF404 ; =WMi_InitializeEx - mov r3, #0 - bx ip - .align 2, 0 -_020DF404: .word WMi_InitializeEx - arm_func_end WM_Initialize - - arm_func_start WM_InitializeForListening -WM_InitializeForListening: ; 0x020DF408 - ldr ip, _020DF41C ; =WMi_InitializeEx - cmp r3, #0 - mov r3, #1 - orreq r3, r3, #2 - bx ip - .align 2, 0 -_020DF41C: .word WMi_InitializeEx - arm_func_end WM_InitializeForListening - - arm_func_start WMi_InitializeEx -WMi_InitializeEx: ; 0x020DF420 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r1 - mov r1, r2 - mov r4, r3 - bl WM_Init - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r0, #0 - bl WMi_SetCallbackTable - bl WMi_GetSystemWork - mov r3, r0 - ldr r1, [r3, #0x10] - mov r0, #0 - stmia sp, {r1, r4} - mov r1, #4 - ldmia r3, {r2, r3} - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WMi_InitializeEx - - arm_func_start WM_Reset -WM_Reset: ; 0x020DF480 - stmdb sp!, {r4, lr} - mov r4, r0 - bl WMi_CheckIdle - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #1 - bl WMi_SetCallbackTable - mov r0, #1 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_Reset - - arm_func_start WM_End -WM_End: ; 0x020DF4B8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - mov r1, #2 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #2 - bl WMi_SetCallbackTable - mov r0, #2 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_End - - arm_func_start WM_SetParentParameter -WM_SetParentParameter: ; 0x020DF4F8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #1 - mov r1, #2 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [r4, #4] - cmp r0, #0 - beq _020DF540 - ldr r0, [r4] - cmp r0, #0 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, pc} -_020DF540: - ldrh r1, [r4, #0x14] - ldrh r0, [r4, #0x34] - cmp r1, #0 - movne r2, #0x2a - moveq r2, #0 - add r0, r0, r2 - cmp r0, #0x200 - bgt _020DF57C - ldrh r0, [r4, #0x36] - cmp r1, #0 - movne r1, #6 - moveq r1, #0 - add r0, r0, r1 - cmp r0, #0x200 - ble _020DF584 -_020DF57C: - mov r0, #6 - ldmia sp!, {r3, r4, r5, pc} -_020DF584: - mov r0, r4 - bl WmCheckParentParameter - mov r1, r5 - mov r0, #7 - bl WMi_SetCallbackTable - mov r0, r4 - mov r1, #0x40 - bl DC_StoreRange - ldrh r1, [r4, #4] - cmp r1, #0 - beq _020DF5B8 - ldr r0, [r4] - bl DC_StoreRange -_020DF5B8: - mov r2, r4 - mov r0, #7 - mov r1, #1 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_SetParentParameter - - arm_func_start WmCheckParentParameter -WmCheckParentParameter: ; 0x020DF5D4 - ldrh r1, [r0, #4] - cmp r1, #0x70 - movhi r0, #0 - bxhi lr - ldrh r1, [r0, #0x18] - cmp r1, #0xa - blo _020DF5F8 - cmp r1, #0x3e8 - bls _020DF600 -_020DF5F8: - mov r0, #0 - bx lr -_020DF600: - ldrh r0, [r0, #0x32] - cmp r0, #1 - blo _020DF614 - cmp r0, #0xe - bls _020DF61C -_020DF614: - mov r0, #0 - bx lr -_020DF61C: - mov r0, #1 - bx lr - arm_func_end WmCheckParentParameter - - arm_func_start WMi_StartParentEx -WMi_StartParentEx: ; 0x020DF624 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #1 - mov r1, #2 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl WMi_GetSystemWork - add r1, r0, #0x100 - mov r2, #0 - strh r2, [r1, #0x50] - str r2, [r0, #0x14c] - mov r1, r5 - mov r0, #8 - bl WMi_SetCallbackTable - mov r2, r4 - mov r0, #8 - mov r1, #1 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WMi_StartParentEx - - arm_func_start WM_StartParent -WM_StartParent: ; 0x020DF680 - ldr ip, _020DF68C ; =WMi_StartParentEx - mov r1, #1 - bx ip - .align 2, 0 -_020DF68C: .word WMi_StartParentEx - arm_func_end WM_StartParent - - arm_func_start WM_EndParent -WM_EndParent: ; 0x020DF690 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - mov r1, #7 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #9 - bl WMi_SetCallbackTable - mov r0, #9 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_EndParent - - arm_func_start WM_StartScan -WM_StartScan: ; 0x020DF6D0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - mov r0, #3 - mov r4, r1 - mov r2, r0 - mov r1, #2 - mov r3, #5 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - addeq sp, sp, #0x10 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4] - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [r4, #4] - cmp r0, #1 - blo _020DF738 - cmp r0, #0xe - bls _020DF744 -_020DF738: - add sp, sp, #0x10 - mov r0, #6 - ldmia sp!, {r3, r4, r5, pc} -_020DF744: - mov r1, r5 - mov r0, #0xa - bl WMi_SetCallbackTable - mov r0, #0xa - strh r0, [sp] - ldrh r2, [r4, #4] - add r0, sp, #0 - mov r1, #0x10 - strh r2, [sp, #2] - ldr r2, [r4] - str r2, [sp, #4] - ldrh r2, [r4, #6] - strh r2, [sp, #8] - ldrb r2, [r4, #8] - strb r2, [sp, #0xa] - ldrb r2, [r4, #9] - strb r2, [sp, #0xb] - ldrb r2, [r4, #0xa] - strb r2, [sp, #0xc] - ldrb r2, [r4, #0xb] - strb r2, [sp, #0xd] - ldrb r2, [r4, #0xc] - strb r2, [sp, #0xe] - ldrb r2, [r4, #0xd] - strb r2, [sp, #0xf] - bl WMi_SendCommandDirect - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_StartScan - - arm_func_start WM_StartScanEx -WM_StartScanEx: ; 0x020DF7BC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x3c - mov r5, r0 - mov r0, #3 - mov r4, r1 - mov r2, r0 - mov r1, #2 - mov r3, #5 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0x3c - ldmneia sp!, {r4, r5, pc} - cmp r4, #0 - addeq sp, sp, #0x3c - moveq r0, #6 - ldmeqia sp!, {r4, r5, pc} - ldr r0, [r4] - cmp r0, #0 - addeq sp, sp, #0x3c - moveq r0, #6 - ldmeqia sp!, {r4, r5, pc} - ldrh r0, [r4, #4] - cmp r0, #0x400 - addhi sp, sp, #0x3c - movhi r0, #6 - ldmhiia sp!, {r4, r5, pc} - ldrh r0, [r4, #0x12] - cmp r0, #0x20 - addhi sp, sp, #0x3c - movhi r0, #6 - ldmhiia sp!, {r4, r5, pc} - ldrh r0, [r4, #0x10] - cmp r0, #0 - cmpne r0, #1 - cmpne r0, #2 - cmpne r0, #3 - addne sp, sp, #0x3c - movne r0, #6 - ldmneia sp!, {r4, r5, pc} - add r0, r0, #0xfe - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _020DF884 - ldrh r0, [r4, #0x34] - cmp r0, #0x20 - addhi sp, sp, #0x3c - movhi r0, #6 - ldmhiia sp!, {r4, r5, pc} -_020DF884: - mov r1, r5 - mov r0, #0x26 - bl WMi_SetCallbackTable - mov r0, #0x26 - strh r0, [sp] - ldrh r2, [r4, #6] - add r1, sp, #0xc - add r0, r4, #0xa - strh r2, [sp, #2] - ldr r3, [r4] - mov r2, #6 - str r3, [sp, #4] - ldrh r3, [r4, #4] - strh r3, [sp, #8] - ldrh r3, [r4, #8] - strh r3, [sp, #0xa] - bl MI_CpuCopy8 - ldrh r2, [r4, #0x10] - add r1, sp, #0x16 - add r0, r4, #0x14 - strh r2, [sp, #0x12] - ldrh r3, [r4, #0x34] - mov r2, #0x20 - strh r3, [sp, #0x36] - ldrh r3, [r4, #0x12] - strh r3, [sp, #0x14] - bl MI_CpuCopy8 - add r0, sp, #0 - mov r1, #0x3c - bl WMi_SendCommandDirect - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0x3c - ldmia sp!, {r4, r5, pc} - arm_func_end WM_StartScanEx - - arm_func_start WM_EndScan -WM_EndScan: ; 0x020DF90C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #1 - mov r1, #5 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #0xb - bl WMi_SetCallbackTable - mov r0, #0xb - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, pc} - arm_func_end WM_EndScan - - arm_func_start WM_StartConnectEx -WM_StartConnectEx: ; 0x020DF94C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x28 - mov r7, r0 - mov r6, r1 - mov r0, #1 - mov r1, #2 - mov r5, r2 - mov r4, r3 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0x28 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - addeq sp, sp, #0x28 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r1, [r6] - mov r0, r6 - mov r1, r1, lsl #1 - bl DC_StoreRange - bl WMi_GetSystemWork - add r1, r0, #0x100 - mov r2, #0 - strh r2, [r1, #0x50] - str r2, [r0, #0x14c] - mov r1, r7 - mov r0, #0xc - bl WMi_SetCallbackTable - mov r0, #0xc - strh r0, [sp] - str r6, [sp, #4] - cmp r5, #0 - mov r2, #0x18 - beq _020DF9E4 - add r1, sp, #8 - mov r0, r5 - bl MI_CpuCopy8 - b _020DF9F0 -_020DF9E4: - add r0, sp, #8 - mov r1, #0 - bl MI_CpuFill8 -_020DF9F0: - ldrh r2, [sp, #0x40] - add r0, sp, #0 - mov r1, #0x28 - str r4, [sp, #0x20] - strh r2, [sp, #0x26] - bl WMi_SendCommandDirect - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end WM_StartConnectEx - - arm_func_start WM_Disconnect -WM_Disconnect: ; 0x020DFA18 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl WMi_GetSystemWork - mov r1, #0xa - mov r6, r0 - str r1, [sp] - mov ip, #0xb - mov r0, #5 - mov r1, #7 - mov r2, #9 - mov r3, #8 - str ip, [sp, #4] - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, [r6, #4] - ldrh r0, [r1] - cmp r0, #7 - cmpne r0, #9 - bne _020DFAC4 - cmp r4, #1 - blo _020DFA84 - cmp r4, #0xf - bls _020DFA90 -_020DFA84: - add sp, sp, #8 - mov r0, #6 - ldmia sp!, {r4, r5, r6, pc} -_020DFA90: - add r0, r1, #0x82 - add r0, r0, #0x100 - mov r1, #2 - bl DC_InvalidateRange - ldr r0, [r6, #4] - mov r1, #1 - add r0, r0, #0x100 - ldrh r0, [r0, #0x82] - tst r0, r1, lsl r4 - bne _020DFAD4 - add sp, sp, #8 - mov r0, #7 - ldmia sp!, {r4, r5, r6, pc} -_020DFAC4: - cmp r4, #0 - addne sp, sp, #8 - movne r0, #6 - ldmneia sp!, {r4, r5, r6, pc} -_020DFAD4: - mov r1, r5 - mov r0, #0xd - bl WMi_SetCallbackTable - mov r1, #1 - mov r2, r1, lsl r4 - mov r0, #0xd - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end WM_Disconnect - - arm_func_start WMi_StartMP -WMi_StartMP: ; 0x020DFB00 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x40 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl WMi_GetSystemWork - ldr r4, [r0, #4] - mov r0, #2 - mov r1, #7 - mov r2, #8 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0x40 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r4, #0x188 - mov r1, #2 - bl DC_InvalidateRange - add r0, r4, #0xc6 - mov r1, #2 - bl DC_InvalidateRange - add r0, r4, #0x100 - ldrh r0, [r0, #0x88] - cmp r0, #0 - ldrneh r0, [r4, #0xc6] - cmpne r0, #1 - addne sp, sp, #0x40 - movne r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r4, #0xc - mov r1, #4 - bl DC_InvalidateRange - ldr r0, [r4, #0xc] - cmp r0, #1 - addeq sp, sp, #0x40 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - tst r6, #0x3f - addne sp, sp, #0x40 - movne r0, #6 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrh sb, [sp, #0x60] - tst sb, #0x1f - addne sp, sp, #0x40 - movne r0, #6 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r4, #0x9c - mov r1, #2 - bl DC_InvalidateRange - ldrh r0, [r4, #0x9c] - cmp r0, #0 - bne _020DFBF8 - bl WM_GetMPReceiveBufferSize - cmp r6, r0 - addlt sp, sp, #0x40 - movlt r0, #6 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl WM_GetMPSendBufferSize - cmp sb, r0 - addlt sp, sp, #0x40 - movlt r0, #6 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_020DFBF8: - mov r1, r8 - mov r0, #0xe - bl WMi_SetCallbackTable - add r1, sp, #0 - mov r0, #0 - mov r2, #0x40 - bl MIi_CpuClear32 - mov r4, r6, lsr #1 - ldrh r3, [sp, #0x60] - mov r6, #0xe - add r1, sp, #0x14 - mov r0, #0 - mov r2, #0x1c - strh r6, [sp] - str r7, [sp, #4] - str r4, [sp, #8] - str r5, [sp, #0xc] - str r3, [sp, #0x10] - bl MIi_CpuClear32 - ldr r0, [sp, #0x64] - add r1, sp, #0x30 - mov r2, #0x10 - bl MIi_CpuCopy32 - add r0, sp, #0 - mov r1, #0x40 - bl WMi_SendCommandDirect - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end WMi_StartMP - - arm_func_start WM_StartMPEx -WM_StartMPEx: ; 0x020DFC70 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - mov r7, r1 - mov r8, r0 - mov r6, r2 - add r1, sp, #8 - mov r0, #0 - mov r2, #0x10 - mov r5, r3 - ldr r4, [sp, #0x34] - bl MIi_CpuClear32 - ldr r1, [sp, #0x48] - ldrh ip, [sp, #0x38] - ldr r0, [sp, #0x44] - ldr lr, _020DFD10 ; =0x00001E03 - ldr r3, [sp, #0x3c] - ldr r2, [sp, #0x40] - strb r1, [sp, #0x16] - cmp r0, #0 - cmpne r4, #0 - strb r3, [sp, #0x14] - strb r2, [sp, #0x15] - ldrh r1, [sp, #0x30] - str lr, [sp, #8] - orrne r0, lr, #4 - strne r0, [sp, #8] - strh ip, [sp, #0x12] - strh r4, [sp, #0xc] - strh r4, [sp, #0xe] - strneh r4, [sp, #0x10] - str r1, [sp] - add r4, sp, #8 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, r5 - str r4, [sp, #4] - bl WMi_StartMP - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020DFD10: .word 0x00001E03 - arm_func_end WM_StartMPEx - - arm_func_start WM_StartMP -WM_StartMP: ; 0x020DFD14 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - mov r6, r1 - mov r7, r0 - mov r5, r2 - add r1, sp, #8 - mov r0, #0 - mov r2, #0x10 - mov r4, r3 - bl MIi_CpuClear32 - ldrh ip, [sp, #0x34] - mov r0, #3 - str r0, [sp, #8] - ldrh lr, [sp, #0x30] - strh ip, [sp, #0xc] - strh ip, [sp, #0xe] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - add ip, sp, #8 - str lr, [sp] - str ip, [sp, #4] - bl WMi_StartMP - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end WM_StartMP - - arm_func_start WM_SetMPDataToPortEx -WM_SetMPDataToPortEx: ; 0x020DFD7C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r6, r3 - mov r4, #1 - bl WMi_GetSystemWork - ldr r5, [r0, #4] - mov r0, #2 - mov r1, #9 - mov r2, #0xa - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0x14 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r0, r5, #0x188 - mov r1, #2 - bl DC_InvalidateRange - add r0, r5, #0x100 - ldrh r0, [r0, #0x88] - cmp r0, #0 - bne _020DFDFC - add r0, r5, #0x82 - add r0, r0, #0x100 - mov r1, #2 - bl DC_InvalidateRange - add r2, r5, #0x100 - add r0, r5, #0x86 - mov r1, #2 - ldrh r4, [r2, #0x82] - bl DC_InvalidateRange -_020DFDFC: - cmp r7, #0 - addeq sp, sp, #0x14 - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - cmp r4, #0 - addeq sp, sp, #0x14 - moveq r0, #7 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r0, r5, #0x7c - mov r1, #2 - bl DC_InvalidateRange - ldr r0, [r5, #0x7c] - cmp r7, r0 - addeq sp, sp, #0x14 - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0x200 - addhi sp, sp, #0x14 - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0 - addeq sp, sp, #0x14 - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - mov r1, r6 - bl DC_StoreRange - ldrh r2, [sp, #0x30] - ldrh r1, [sp, #0x34] - ldrh r0, [sp, #0x38] - str r2, [sp] - str r1, [sp, #4] - str r0, [sp, #8] - str sb, [sp, #0xc] - mov r2, r7 - mov r3, r6 - mov r0, #0xf - mov r1, #7 - str r8, [sp, #0x10] - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end WM_SetMPDataToPortEx - - arm_func_start WM_EndMP -WM_EndMP: ; 0x020DFEAC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl WMi_GetSystemWork - mov r4, r0 - mov r0, #2 - mov r1, #9 - mov r2, #0xa - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #4] - mov r1, #4 - add r0, r0, #0xc - bl DC_InvalidateRange - ldr r0, [r4, #4] - ldr r0, [r0, #0xc] - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r0, #0x10 - bl WMi_SetCallbackTable - mov r0, #0x10 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_EndMP - - arm_func_start WM_StartDCF -WM_StartDCF: ; 0x020DFF1C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl WMi_GetSystemWork - mov r4, r0 - mov r0, #1 - mov r1, #8 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #4] - mov r1, #4 - add r0, r0, #0x10 - bl DC_InvalidateRange - ldr r0, [r4, #4] - ldr r0, [r0, #0x10] - cmp r0, #1 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0x10 - movlo r0, #6 - ldmloia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, r5 - bl DC_StoreRange - mov r1, r7 - mov r0, #0x11 - bl WMi_SetCallbackTable - mov r2, r6 - mov r3, r5 - mov r0, #0x11 - mov r1, #2 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end WM_StartDCF - - arm_func_start WM_SetDCFData -WM_SetDCFData: ; 0x020DFFBC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl WMi_GetSystemWork - mov r8, r0 - mov r0, #1 - mov r1, #0xb - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r8, #4] - mov r1, #4 - add r0, r0, #0x10 - bl DC_InvalidateRange - ldr r0, [r8, #4] - ldr r0, [r0, #0x10] - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _020E0084 ; =0x000005E4 - cmp r4, r0 - addhi sp, sp, #0x10 - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r5 - mov r1, r4 - bl DC_StoreRange - mov r1, r7 - mov r0, #0x12 - bl WMi_SetCallbackTable - add r1, sp, #8 - mov r0, r6 - mov r2, #6 - bl MI_CpuCopy8 - str r5, [sp] - str r4, [sp, #4] - ldr r2, [sp, #8] - ldr r3, [sp, #0xc] - mov r0, #0x12 - mov r1, #4 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E0084: .word 0x000005E4 - arm_func_end WM_SetDCFData - - arm_func_start WM_EndDCF -WM_EndDCF: ; 0x020E0088 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl WMi_GetSystemWork - mov r4, r0 - mov r0, #1 - mov r1, #0xb - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #4] - mov r1, #4 - add r0, r0, #0x10 - bl DC_InvalidateRange - ldr r0, [r4, #4] - ldr r0, [r0, #0x10] - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r0, #0x13 - bl WMi_SetCallbackTable - mov r0, #0x13 - mov r1, #0 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_EndDCF - - arm_func_start WM_StartDataSharing -WM_StartDataSharing: ; 0x020E00F4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - mov r7, r1 - mov r6, r2 - mov r0, #2 - mov r1, #9 - mov r2, #0xa - mov r5, r3 - mov r8, #1 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0 - addeq sp, sp, #0xc - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, #0x10 - addhs sp, sp, #0xc - movhs r0, #6 - ldmhsia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r6, #0 - addeq sp, sp, #0xc - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl WM_GetAID - movs r4, r0 - bne _020E0170 - bl WM_GetConnectedAIDs - mov r8, r0 -_020E0170: - mov r1, sl - mov r0, #0 - mov r2, #0x820 - bl MIi_CpuClearFast - add r0, sl, #0x800 - mov r2, #0 - strh r2, [r0, #8] - strh r2, [r0, #0xa] - strh r2, [r0, #0xc] - strh r5, [r0, #0x10] - strh r7, [r0, #0x16] - strh r2, [r0, #0xe] - mov r0, #1 - ldr r1, [sp, #0x30] - orr r0, r6, r0, lsl r4 - cmp r1, #0 - mov r0, r0, lsl #0x10 - movne r2, #1 - add r1, sl, #0x800 - strh r2, [r1, #0x18] - mov r0, r0, lsr #0x10 - strh r0, [r1, #0xe] - bl MATH_CountPopulation - add r3, sl, #0x800 - mul r1, r5, r0 - strh r0, [r3, #0x12] - strh r1, [r3, #0x14] - ldrh r0, [r3, #0x14] - cmp r0, #0x1fc - bls _020E01FC - mov r0, #0 - strh r0, [r3, #0xe] - add sp, sp, #0xc - mov r0, #6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E01FC: - add r0, r0, #4 - strh r0, [r3, #0x14] - mov r0, #1 - strh r0, [r3, #0x1c] - cmp r4, #0 - bne _020E0314 - orr r4, r8, #1 - mov r2, #0 -_020E021C: - ldrh r1, [r3, #0xe] - mov r0, r2, lsl #9 - add r2, r2, #1 - and r1, r1, r4 - strh r1, [sl, r0] - cmp r2, #4 - blt _020E021C - ldr r1, _020E0338 ; =WmDataSharingReceiveCallback_Parent - mov r0, r7 - mov r2, sl - bl WM_SetPortCallback - mov r7, sl - mov sb, #0 - add r4, sl, #0x800 - mov r6, #1 - ldr fp, _020E033C ; =WmDataSharingSetDataCallback - ldr r5, _020E0340 ; =0x0000FFFF - b _020E02F8 -_020E0264: - ldrh r2, [r4, #8] - mov r0, fp - mov r1, sl - add r2, r2, #1 - and r2, r2, #3 - strh r2, [r4, #8] - ldrh r3, [r4, #0xe] - mov r2, r7 - and r3, r3, r8 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - str r3, [sp] - ldrh r3, [r4, #0x16] - stmib sp, {r3, r6} - ldrh r3, [r4, #0x14] - bl WM_SetMPDataToPortEx - cmp r0, #7 - bne _020E02CC - add r0, sl, sb, lsl #1 - add r0, r0, #0x800 - strh r5, [r0] - ldrh r0, [r4, #0xa] - add r0, r0, #1 - and r0, r0, #3 - strh r0, [r4, #0xa] - b _020E02F0 -_020E02CC: - cmp r0, #0 - cmpne r0, #2 - beq _020E02F0 - add r0, sl, #0x800 - mov r1, #5 - strh r1, [r0, #0x1c] - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E02F0: - add r7, r7, #0x200 - add sb, sb, #1 -_020E02F8: - ldrh r0, [r4, #0x18] - cmp r0, #1 - movne r0, #1 - moveq r0, #2 - cmp sb, r0 - blt _020E0264 - b _020E032C -_020E0314: - ldr r1, _020E0344 ; =WmDataSharingReceiveCallback_Child - mov r4, #3 - mov r0, r7 - mov r2, sl - strh r4, [r3, #0xa] - bl WM_SetPortCallback -_020E032C: - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020E0338: .word WmDataSharingReceiveCallback_Parent -_020E033C: .word WmDataSharingSetDataCallback -_020E0340: .word 0x0000FFFF -_020E0344: .word WmDataSharingReceiveCallback_Child - arm_func_end WM_StartDataSharing - - arm_func_start WM_EndDataSharing -WM_EndDataSharing: ; 0x020E0348 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #6 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x800 - ldrh r1, [r0, #0xe] - cmp r1, #0 - moveq r0, #3 - ldmeqia sp!, {r4, pc} - ldrh r0, [r0, #0x16] - mov r1, #0 - mov r2, r1 - bl WM_SetPortCallback - add r1, r4, #0x800 - mov r0, #0 - strh r0, [r1, #0xe] - strh r0, [r1, #0x1c] - ldmia sp!, {r4, pc} - arm_func_end WM_EndDataSharing - - arm_func_start WM_StepDataSharing -WM_StepDataSharing: ; 0x020E0390 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r0, #2 - mov r1, #9 - mov r2, #0xa - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0 - addeq sp, sp, #0xc - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #0 - addeq sp, sp, #0xc - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #0 - addeq sp, sp, #0xc - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl WM_GetAID - movs r5, r0 - bne _020E0404 - bl WM_GetConnectedAIDs - mov r4, r0 -_020E0404: - add r0, sl, #0x800 - ldrh r0, [r0, #0x1c] - cmp r0, #5 - addeq sp, sp, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #1 - cmpne r0, #4 - addne sp, sp, #0xc - movne r0, #3 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r5, #0 - mov r7, #5 - bne _020E05C8 - mov r5, #0 - mov fp, r5 - cmp r0, #4 - bne _020E04EC - add ip, sl, #0x800 - mov r2, #1 - strh r2, [ip, #0x1c] - ldrh r3, [ip, #0xe] - ldrh r1, [ip, #8] - ldr r0, _020E06D0 ; =WmDataSharingSetDataCallback - and r3, r3, r4 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - str r3, [sp] - ldrh r3, [ip, #0x16] - add r1, r1, #3 - and r6, r1, #3 - str r3, [sp, #4] - str r2, [sp, #8] - ldrh r3, [ip, #0x14] - mov r1, sl - add r2, sl, r6, lsl #9 - bl WM_SetMPDataToPortEx - cmp r0, #7 - bne _020E04C8 - add r0, sl, r6, lsl #1 - ldr r1, _020E06D4 ; =0x0000FFFF - add r0, r0, #0x800 - strh r1, [r0] - add r0, sl, #0x800 - ldrh r1, [r0, #0xa] - add r1, r1, #1 - and r1, r1, #3 - strh r1, [r0, #0xa] - b _020E04EC -_020E04C8: - cmp r0, #0 - cmpne r0, #2 - beq _020E04EC - add r0, sl, #0x800 - mov r1, r7 - strh r1, [r0, #0x1c] - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020E04EC: - add r0, sl, #0x800 - ldrh r2, [r0, #0xc] - ldrh r1, [r0, #0xa] - cmp r2, r1 - beq _020E0584 - mov r5, r2, lsl #9 - ldrh r3, [sl, r5] - mov r1, r8 - mov r2, #0x200 - orr r3, r3, #1 - strh r3, [sl, r5] - ldrh r0, [r0, #0xc] - add r0, sl, r0, lsl #9 - bl MIi_CpuCopy16 - add r1, sl, #0x800 - ldrh r0, [r1, #0xc] - mov r5, #1 - mov r7, #0 - add r0, sl, r0, lsl #1 - add r0, r0, #0x800 - ldrh r0, [r0] - strh r0, [r1, #0x1a] - ldrh r0, [r1, #0xc] - add r0, r0, #1 - and r0, r0, #3 - strh r0, [r1, #0xc] - ldrh r0, [r1, #0x18] - cmp r0, #0 - bne _020E0580 - cmp r4, #0 - beq _020E0580 - ldrh r0, [r1, #8] - mov r0, r0, lsl #9 - ldrh r0, [sl, r0] - cmp r0, #1 - moveq fp, r5 - beq _020E0584 -_020E0580: - mov fp, #0 -_020E0584: - mov r0, sl - mov r1, #0 - bl WmDataSharingSendDataSet - cmp r5, #0 - beq _020E06C4 - mov r0, sl - mov r2, sb - mov r1, #0 - bl WmDataSharingReceiveData - add r0, sl, #0x800 - ldrh r0, [r0, #0x18] - cmp r0, #0 - bne _020E06C4 - mov r0, sl - mov r1, fp - bl WmDataSharingSendDataSet - b _020E06C4 -_020E05C8: - cmp r0, #4 - mov r0, #0 - add r1, sl, #0x800 - moveq r0, #1 - streqh r0, [r1, #0x1c] - beq _020E0648 - ldrh r2, [r1, #0xc] - ldrh r1, [r1, #8] - cmp r2, r1 - beq _020E0648 - mov r2, r2, lsl #9 - ldrh r1, [sl, r2] - tst r1, #1 - orreq r1, r1, #1 - streqh r1, [sl, r2] - beq _020E0648 - mov r1, r8 - add r0, sl, r2 - mov r2, #0x200 - bl MIi_CpuCopy16 - add r2, sl, #0x800 - ldrh r1, [r2, #0xc] - mov r0, #1 - mov r7, #0 - add r1, sl, r1, lsl #1 - add r1, r1, #0x800 - ldrh r1, [r1] - strh r1, [r2, #0x1a] - ldrh r1, [r2, #0xc] - add r1, r1, #1 - and r1, r1, #3 - strh r1, [r2, #0xc] -_020E0648: - cmp r0, #0 - beq _020E06C4 - add r0, sl, #0x800 - ldrh r1, [r0, #0xa] - ldrh r2, [r0, #0x10] - mov r0, sb - add r6, sl, r1, lsl #9 - add r1, r6, #0x20 - bl MIi_CpuCopy16 - add r3, sl, #0x800 - ldrh r1, [r3, #0xe] - mov r4, #1 - ldr r0, _020E06D0 ; =WmDataSharingSetDataCallback - str r1, [sp] - ldrh r5, [r3, #0x16] - mov r1, sl - add r2, r6, #0x20 - str r5, [sp, #4] - str r4, [sp, #8] - ldrh r3, [r3, #0x10] - bl WM_SetMPDataToPortEx - add r1, sl, #0x800 - ldrh r2, [r1, #0xa] - cmp r0, #2 - cmpne r0, #0 - add r2, r2, #1 - and r2, r2, #3 - strh r2, [r1, #0xa] - movne r0, #5 - strneh r0, [r1, #0x1c] - movne r7, r4 -_020E06C4: - mov r0, r7 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020E06D0: .word WmDataSharingSetDataCallback -_020E06D4: .word 0x0000FFFF - arm_func_end WM_StepDataSharing - - arm_func_start WmDataSharingSetDataCallback -WmDataSharingSetDataCallback: ; 0x020E06D8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl WMi_GetSystemWork - ldrh r2, [r5, #0xa] - ldr r1, _020E07A8 ; =WmDataSharingReceiveCallback_Parent - add r0, r0, r2, lsl #2 - ldr r2, [r0, #0xcc] - ldr r4, [r0, #0x10c] - cmp r2, r1 - ldrne r0, _020E07AC ; =WmDataSharingReceiveCallback_Child - cmpne r2, r0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x20] - cmp r4, r0 - ldmneia sp!, {r3, r4, r5, pc} - bl WM_GetAID - ldrh r1, [r5, #2] - cmp r1, #0 - bne _020E0764 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - add r1, r4, #0x800 - ldrh r0, [r1, #0xa] - ldrh r2, [r5, #0x1a] - add r0, r4, r0, lsl #1 - mov r2, r2, asr #1 - add r0, r0, #0x800 - strh r2, [r0] - ldrh r0, [r1, #0xa] - add r0, r0, #1 - and r0, r0, #3 - strh r0, [r1, #0xa] - ldmia sp!, {r3, r4, r5, pc} -_020E0764: - cmp r1, #0xa - bne _020E0798 - cmp r0, #0 - beq _020E0788 - add r0, r4, #0x800 - ldrh r1, [r0, #0xa] - add r1, r1, #3 - and r1, r1, #3 - strh r1, [r0, #0xa] -_020E0788: - add r0, r4, #0x800 - mov r1, #4 - strh r1, [r0, #0x1c] - ldmia sp!, {r3, r4, r5, pc} -_020E0798: - add r0, r4, #0x800 - mov r1, #5 - strh r1, [r0, #0x1c] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E07A8: .word WmDataSharingReceiveCallback_Parent -_020E07AC: .word WmDataSharingReceiveCallback_Child - arm_func_end WmDataSharingSetDataCallback - - arm_func_start WmDataSharingReceiveCallback_Parent -WmDataSharingReceiveCallback_Parent: ; 0x020E07B0 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, [r0, #0x1c] - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrh r1, [r0, #2] - cmp r1, #0 - bne _020E08CC - ldrh r1, [r0, #4] - cmp r1, #0x15 - bgt _020E07FC - bge _020E081C - cmp r1, #9 - ldmgtia sp!, {r4, r5, r6, pc} - cmp r1, #7 - ldmltia sp!, {r4, r5, r6, pc} - beq _020E083C - cmp r1, #9 - beq _020E084C - ldmia sp!, {r4, r5, r6, pc} -_020E07FC: - cmp r1, #0x1a - ldmgtia sp!, {r4, r5, r6, pc} - cmp r1, #0x19 - ldmltia sp!, {r4, r5, r6, pc} - ldmeqia sp!, {r4, r5, r6, pc} - cmp r1, #0x1a - beq _020E084C - ldmia sp!, {r4, r5, r6, pc} -_020E081C: - ldrh r1, [r0, #0x12] - ldr r2, [r0, #0xc] - mov r0, r4 - bl WmDataSharingReceiveData - mov r0, r4 - mov r1, #0 - bl WmDataSharingSendDataSet - ldmia sp!, {r4, r5, r6, pc} -_020E083C: - mov r0, r4 - mov r1, #0 - bl WmDataSharingSendDataSet - ldmia sp!, {r4, r5, r6, pc} -_020E084C: - ldrh r5, [r0, #0x12] - mov r6, #1 - bl OS_DisableInterrupts - add r1, r4, #0x800 - ldrh lr, [r1, #8] - mvn ip, r6, lsl r5 - mov r3, lr, lsl #9 - ldrh r2, [r4, r3] - and r2, r2, ip - strh r2, [r4, r3] - ldrh r1, [r1, #0x18] - cmp r1, #1 - bne _020E089C - add r1, lr, #1 - and r1, r1, #3 - mov r1, r1, lsl #0x10 - mov r2, r1, lsr #7 - ldrh r1, [r4, r2] - and r1, r1, ip - strh r1, [r4, r2] -_020E089C: - bl OS_RestoreInterrupts - mov r0, r4 - mov r1, #0 - bl WmDataSharingSendDataSet - add r0, r4, #0x800 - ldrh r0, [r0, #0x18] - cmp r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r4 - mov r1, #0 - bl WmDataSharingSendDataSet - ldmia sp!, {r4, r5, r6, pc} -_020E08CC: - add r0, r4, #0x800 - mov r1, #5 - strh r1, [r0, #0x1c] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end WmDataSharingReceiveCallback_Parent - - arm_func_start WmDataSharingReceiveCallback_Child -WmDataSharingReceiveCallback_Child: ; 0x020E08DC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r4, [r8, #0x1c] - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrh r0, [r8, #2] - cmp r0, #0 - bne _020E09C0 - ldrh r0, [r8, #4] - cmp r0, #0x15 - bgt _020E0924 - bge _020E093C - cmp r0, #9 - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - cmp r0, #7 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - cmpne r0, #9 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020E0924: - cmp r0, #0x1a - ldmgtia sp!, {r4, r5, r6, r7, r8, pc} - cmp r0, #0x19 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - cmpne r0, #0x1a - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020E093C: - ldr r7, [r8, #0xc] - ldrh r5, [r8, #0x10] - ldrh r6, [r7] - bl WM_GetAID - add r1, r4, #0x800 - ldrh r1, [r1, #0x14] - cmp r5, r1 - beq _020E0964 - cmp r5, #0x200 - movhi r5, #0x200 -_020E0964: - cmp r5, #4 - ldmloia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, #1 - tst r6, r1, lsl r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r4, #0x800 - ldrh r1, [r0, #8] - mov r0, r7 - mov r2, r5 - add r1, r4, r1, lsl #9 - bl MIi_CpuCopy16 - add r1, r4, #0x800 - ldrh r0, [r1, #8] - ldrh r2, [r8, #0x1a] - add r0, r4, r0, lsl #1 - mov r2, r2, asr #1 - add r0, r0, #0x800 - strh r2, [r0] - ldrh r0, [r1, #8] - add r0, r0, #1 - and r0, r0, #3 - strh r0, [r1, #8] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_020E09C0: - add r0, r4, #0x800 - mov r1, #5 - strh r1, [r0, #0x1c] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end WmDataSharingReceiveCallback_Child - - arm_func_start WmDataSharingReceiveData -WmDataSharingReceiveData: ; 0x020E09D0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r3, r1 - mov r1, #1 - mov r4, r1, lsl r3 - add r0, r6, #0x800 - ldrh r1, [r0, #0xe] - mov r7, r4, lsl #0x10 - mov r5, r2 - tst r1, r7, lsr #16 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r4, [r0, #8] - mov r2, r4, lsl #9 - ldrh r2, [r6, r2] - tst r2, r7, lsr #16 - bne _020E0A34 - ldrh r0, [r0, #0x18] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - add r0, r4, #1 - and r4, r0, #3 - mov r0, r4, lsl #9 - ldrh r0, [r6, r0] - tst r0, r7, lsr #16 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_020E0A34: - add r2, r6, r4, lsl #9 - mov r0, r6 - add r2, r2, #4 - bl WmGetSharedDataAddress - mov r1, r0 - add r0, r6, #0x800 - cmp r5, #0 - ldrh r2, [r0, #0x10] - beq _020E0A64 - mov r0, r5 - bl MIi_CpuCopy16 - b _020E0A6C -_020E0A64: - mov r0, #0 - bl MIi_CpuClear16 -_020E0A6C: - bl OS_DisableInterrupts - mov r4, r4, lsl #9 - ldrh r3, [r6, r4] - mvn r1, r7, lsr #16 - add r2, r6, #2 - and r1, r3, r1 - strh r1, [r6, r4] - ldrh r1, [r2, r4] - orr r1, r1, r7, lsr #16 - strh r1, [r2, r4] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end WmDataSharingReceiveData - - arm_func_start WmDataSharingSendDataSet -WmDataSharingSendDataSet: ; 0x020E0A9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0xc - mov sl, r0 - mov sb, r1 - bl OS_DisableInterrupts - add r1, sl, #0x800 - ldrh r1, [r1, #8] - mov r4, r0 - mov r1, r1, lsl #9 - ldrh r1, [sl, r1] - cmp r1, #0 - bne _020E0BDC - bl WM_GetConnectedAIDs - add r1, sl, #0x800 - ldrh r6, [r1, #8] - ldrh r1, [r1, #0x18] - mov r7, r0 - add r0, r6, #1 - and r5, r0, #3 - cmp r1, #1 - addeq r0, r5, #1 - andeq r8, r0, #3 - movne r8, r5 - add r1, sl, r8, lsl #9 - mov r0, #0 - mov r2, #0x200 - bl MIi_CpuClear16 - add r0, sl, #0x800 - ldrh r3, [r0, #0xe] - orr r2, r7, #1 - mov r1, r8, lsl #9 - and r2, r3, r2 - strh r2, [sl, r1] - strh r5, [r0, #8] - ldrh r0, [r0, #0xe] - mov r1, r6, lsl #9 - cmp sb, #1 - strh r0, [sl, r1] - ldreqh r0, [sl, r1] - biceq r0, r0, #1 - streqh r0, [sl, r1] - mov r0, r4 - bl OS_RestoreInterrupts - add r3, sl, #0x800 - ldrh r1, [r3, #0xe] - mov r4, #1 - ldr r0, _020E0BE8 ; =WmDataSharingSetDataCallback - and r1, r1, r7 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - str r1, [sp] - ldrh r5, [r3, #0x16] - mov r1, sl - add r2, sl, r6, lsl #9 - str r5, [sp, #4] - str r4, [sp, #8] - ldrh r3, [r3, #0x14] - bl WM_SetMPDataToPortEx - cmp r0, #7 - bne _020E0BB8 - add r0, sl, r6, lsl #1 - ldr r1, _020E0BEC ; =0x0000FFFF - add r0, r0, #0x800 - strh r1, [r0] - add r0, sl, #0x800 - ldrh r1, [r0, #0xa] - add sp, sp, #0xc - add r1, r1, #1 - and r1, r1, #3 - strh r1, [r0, #0xa] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_020E0BB8: - cmp r0, #0 - cmpne r0, #2 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - add r0, sl, #0x800 - mov r1, #5 - strh r1, [r0, #0x1c] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_020E0BDC: - bl OS_RestoreInterrupts - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020E0BE8: .word WmDataSharingSetDataCallback -_020E0BEC: .word 0x0000FFFF - arm_func_end WmDataSharingSendDataSet - - arm_func_start WM_GetSharedDataAddress -WM_GetSharedDataAddress: ; 0x020E0BF0 - stmdb sp!, {r3, lr} - mov lr, r1 - mov r3, r2 - cmp r0, #0 - ldrh r1, [lr] - ldrh ip, [lr, #2] - mov r2, #1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp lr, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - tst r1, r2, lsl r3 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - tst ip, r2, lsl r3 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r2, lr, #4 - bl WmGetSharedDataAddress - ldmia sp!, {r3, pc} - arm_func_end WM_GetSharedDataAddress - - arm_func_start WmGetSharedDataAddress -WmGetSharedDataAddress: ; 0x020E0C44 - stmdb sp!, {r3, r4, r5, lr} - mov ip, #1 - mov r3, ip, lsl r3 - sub r3, r3, #1 - mov r5, r0 - and r0, r1, r3 - mov r4, r2 - bl MATH_CountPopulation - add r1, r5, #0x800 - ldrh r1, [r1, #0x10] - mla r0, r1, r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WmGetSharedDataAddress - - arm_func_start WM_StartKeySharing -WM_StartKeySharing: ; 0x020E0C74 - stmdb sp!, {r3, lr} - mov ip, #1 - rsb r2, ip, #0x10000 - mov r3, #2 - str ip, [sp] - bl WM_StartDataSharing - ldmia sp!, {r3, pc} - arm_func_end WM_StartKeySharing - - arm_func_start WM_EndKeySharing -WM_EndKeySharing: ; 0x020E0C90 - ldr ip, _020E0C98 ; =WM_EndDataSharing - bx ip - .align 2, 0 -_020E0C98: .word WM_EndDataSharing - arm_func_end WM_EndKeySharing - - arm_func_start WM_SetWEPKey -WM_SetWEPKey: ; 0x020E0C9C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl WMi_CheckIdle - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r5, #3 - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, pc} - cmp r5, #0 - beq _020E0CE4 - cmp r4, #0 - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r4 - mov r1, #0x50 - bl DC_StoreRange -_020E0CE4: - mov r1, r6 - mov r0, #0x14 - bl WMi_SetCallbackTable - mov r2, r5 - mov r3, r4 - mov r0, #0x14 - mov r1, #2 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end WM_SetWEPKey - - arm_func_start WM_SetWEPKeyEx -WM_SetWEPKeyEx: ; 0x020E0D10 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl WMi_CheckIdle - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #3 - movhi r0, #6 - ldmhiia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - beq _020E0D5C - cmp r4, #0 - moveq r0, #6 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r4 - mov r1, #0x50 - bl DC_StoreRange -_020E0D5C: - mov r1, r7 - mov r0, #0x27 - bl WMi_SetCallbackTable - mov r2, r6 - mov r3, r4 - mov r0, #0x27 - mov r1, #3 - str r5, [sp] - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end WM_SetWEPKeyEx - - arm_func_start WM_SetGameInfo -WM_SetGameInfo: ; 0x020E0D8C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r0, #2 - mov r1, #7 - mov r2, #9 - mov r4, r3 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - cmp r6, #0 - addeq sp, sp, #0xc - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, r7, pc} - cmp r5, #0x70 - addhi sp, sp, #0xc - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, pc} - ldr r1, _020E0E40 ; =_021E4CC0 - mov r0, r6 - mov r2, r5 - bl MIi_CpuCopy16 - ldr r0, _020E0E40 ; =_021E4CC0 - mov r1, r5 - bl DC_StoreRange - mov r1, r7 - mov r0, #0x18 - bl WMi_SetCallbackTable - ldrh r0, [sp, #0x20] - str r4, [sp] - ldrb r1, [sp, #0x24] - str r0, [sp, #4] - ldr r2, _020E0E40 ; =_021E4CC0 - str r1, [sp, #8] - mov r3, r5 - mov r0, #0x18 - mov r1, #5 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_020E0E40: .word _021E4CC0 - arm_func_end WM_SetGameInfo - - arm_func_start WM_SetBeaconIndication -WM_SetBeaconIndication: ; 0x020E0E44 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl WMi_CheckIdle - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - cmpne r4, #1 - movne r0, #6 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r0, #0x19 - bl WMi_SetCallbackTable - mov r2, r4 - mov r0, #0x19 - mov r1, #1 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_SetBeaconIndication - - arm_func_start WM_SetLifeTime -WM_SetLifeTime: ; 0x020E0E94 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl WMi_CheckIdle - cmp r0, #0 - addne sp, sp, #8 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r7 - mov r0, #0x1d - bl WMi_SetCallbackTable - ldrh ip, [sp, #0x20] - mov r2, r6 - mov r3, r5 - mov r0, #0x1d - mov r1, #4 - stmia sp, {r4, ip} - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end WM_SetLifeTime - - arm_func_start WM_MeasureChannel -WM_MeasureChannel: ; 0x020E0EF4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl WMi_GetSystemWork - mov r0, #1 - mov r1, #2 - bl WMi_CheckStateEx - cmp r0, #0 - addne sp, sp, #0xc - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r1, r7 - mov r0, #0x1e - bl WMi_SetCallbackTable - ldrh r2, [sp, #0x20] - mov r3, #0x1e - add r0, sp, #0 - mov r1, #0xa - strh r3, [sp] - strh r6, [sp, #2] - strh r5, [sp, #4] - strh r4, [sp, #6] - strh r2, [sp, #8] - bl WMi_SendCommandDirect - cmp r0, #0 - moveq r0, #2 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end WM_MeasureChannel - - arm_func_start WM_SetEntry -WM_SetEntry: ; 0x020E0F6C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #2 - mov r1, #7 - mov r2, #9 - bl WMi_CheckStateEx - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r0, #0x21 - bl WMi_SetCallbackTable - mov r2, r4 - mov r0, #0x21 - mov r1, #1 - bl WMi_SendCommand - cmp r0, #0 - moveq r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end WM_SetEntry - - arm_func_start CTRDGi_InitCommon -CTRDGi_InitCommon: ; 0x020E0FB8 - stmdb sp!, {r3, lr} - ldr r1, _020E0FE4 ; =_021E4D44 - mov r3, #0 - ldr r2, _020E0FE8 ; =0x05000001 - add r0, sp, #0 - str r3, [sp] - bl SVC_CpuSet - bl OS_GetLockID - ldr r1, _020E0FEC ; =_021E4D40 - strh r0, [r1, #6] - ldmia sp!, {r3, pc} - .align 2, 0 -_020E0FE4: .word _021E4D44 -_020E0FE8: .word 0x05000001 -_020E0FEC: .word _021E4D40 - arm_func_end CTRDGi_InitCommon - - arm_func_start CTRDG_IsAgbCartridge -CTRDG_IsAgbCartridge: ; 0x020E0FF0 - stmdb sp!, {r3, lr} - bl CTRDG_IsExisting - cmp r0, #0 - beq _020E1010 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} -_020E1010: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end CTRDG_IsAgbCartridge - - arm_func_start CTRDG_IsOptionCartridge -CTRDG_IsOptionCartridge: ; 0x020E1018 - stmdb sp!, {r3, lr} - bl CTRDG_IsExisting - cmp r0, #0 - beq _020E1038 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_020E1038: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end CTRDG_IsOptionCartridge - - arm_func_start CTRDGi_IsAgbCartridgeAtInit -CTRDGi_IsAgbCartridgeAtInit: ; 0x020E1040 - ldr r0, _020E1054 ; =0x027FFC30 - ldrb r0, [r0, #5] - mov r0, r0, lsl #0x1f - mov r0, r0, lsr #0x1f - bx lr - .align 2, 0 -_020E1054: .word 0x027FFC30 - arm_func_end CTRDGi_IsAgbCartridgeAtInit - - arm_func_start CTRDG_GetAgbGameCode -CTRDG_GetAgbGameCode: ; 0x020E1058 - stmdb sp!, {r4, lr} - mov r4, #0 - bl CTRDG_IsExisting - cmp r0, #0 - beq _020E1074 - bl CTRDGi_GetAgbGameCodeAtInit - mov r4, r0 -_020E1074: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end CTRDG_GetAgbGameCode - - arm_func_start CTRDGi_GetAgbGameCodeAtInit -CTRDGi_GetAgbGameCodeAtInit: ; 0x020E107C - stmdb sp!, {r4, lr} - mov r4, #0 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0 - ldrne r0, _020E109C ; =0x027FFC30 - ldrne r4, [r0, #8] - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020E109C: .word 0x027FFC30 - arm_func_end CTRDGi_GetAgbGameCodeAtInit - - arm_func_start CTRDG_GetAgbMakerCode -CTRDG_GetAgbMakerCode: ; 0x020E10A0 - stmdb sp!, {r4, lr} - mov r4, #0 - bl CTRDG_IsExisting - cmp r0, #0 - beq _020E10BC - bl CTRDGi_GetAgbMakerCodeAtInit - mov r4, r0 -_020E10BC: - mov r0, r4 - ldmia sp!, {r4, pc} - arm_func_end CTRDG_GetAgbMakerCode - - arm_func_start CTRDGi_GetAgbMakerCodeAtInit -CTRDGi_GetAgbMakerCodeAtInit: ; 0x020E10C4 - stmdb sp!, {r4, lr} - mov r4, #0 - bl CTRDGi_IsAgbCartridgeAtInit - cmp r0, #0 - ldrne r0, _020E10E4 ; =0x027FFC30 - ldrneh r4, [r0, #6] - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020E10E4: .word 0x027FFC30 - arm_func_end CTRDGi_GetAgbMakerCodeAtInit - - arm_func_start CTRDG_IsPulledOut -CTRDG_IsPulledOut: ; 0x020E10E8 - stmdb sp!, {r3, lr} - ldr r2, _020E112C ; =0x027FFC30 - ldr r0, _020E1130 ; =0x0000FFFF - ldrh r1, [r2] - cmp r1, r0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldrb r0, [r2, #5] - mov r0, r0, lsl #0x1e - movs r0, r0, lsr #0x1f - bne _020E1118 - bl CTRDG_IsExisting -_020E1118: - ldr r0, _020E112C ; =0x027FFC30 - ldrb r0, [r0, #5] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f - ldmia sp!, {r3, pc} - .align 2, 0 -_020E112C: .word 0x027FFC30 -_020E1130: .word 0x0000FFFF - arm_func_end CTRDG_IsPulledOut - - arm_func_start CTRDG_IsExisting -CTRDG_IsExisting: ; 0x020E1134 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r2, _020E1234 ; =0x027FFC30 - mov r4, #1 - ldrh r1, [r2] - rsb r0, r4, #0x10000 - cmp r1, r0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldrb r0, [r2, #5] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f - cmp r0, #1 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _020E1238 ; =_021E4D40 - add r1, sp, #8 - ldrh r0, [r0, #6] - bl CTRDGi_LockByProcessor - add r0, sp, #0 - bl CTRDGi_ChangeLatestAccessCycle - mov r0, #0x8000000 - ldrb r2, [r0, #0xb2] - cmp r2, #0x96 - bne _020E11B4 - ldr r1, _020E1234 ; =0x027FFC30 - ldrh r0, [r0, #0xbe] - ldrh r1, [r1] - cmp r1, r0 - bne _020E11FC -_020E11B4: - cmp r2, #0x96 - beq _020E11D4 - ldr r1, _020E1234 ; =0x027FFC30 - ldr r0, _020E123C ; =0x0801FFFE - ldrh r1, [r1] - ldrh r0, [r0] - cmp r1, r0 - bne _020E11FC -_020E11D4: - ldr r2, _020E1234 ; =0x027FFC30 - mov r0, #0x8000000 - ldr r1, [r2, #8] - ldr r0, [r0, #0xac] - cmp r1, r0 - beq _020E1210 - ldrb r0, [r2, #5] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _020E1210 -_020E11FC: - ldr r1, _020E1234 ; =0x027FFC30 - mov r4, #0 - ldrb r0, [r1, #5] - orr r0, r0, #2 - strb r0, [r1, #5] -_020E1210: - add r0, sp, #0 - bl CTRDGi_RestoreAccessCycle - ldr r0, _020E1238 ; =_021E4D40 - add r1, sp, #8 - ldrh r0, [r0, #6] - bl CTRDGi_UnlockByProcessor - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_020E1234: .word 0x027FFC30 -_020E1238: .word _021E4D40 -_020E123C: .word 0x0801FFFE - arm_func_end CTRDG_IsExisting - - arm_func_start CTRDGi_ChangeLatestAccessCycle -CTRDGi_ChangeLatestAccessCycle: ; 0x020E1240 - ldr r2, _020E1284 ; =0x04000204 - ldrh r1, [r2] - and r1, r1, #0xc - mov r1, r1, asr #2 - str r1, [r0] - ldrh r1, [r2] - and r1, r1, #0x10 - mov r1, r1, asr #4 - str r1, [r0, #4] - ldrh r0, [r2] - bic r0, r0, #0xc - orr r0, r0, #0xc - strh r0, [r2] - ldrh r0, [r2] - bic r0, r0, #0x10 - strh r0, [r2] - bx lr - .align 2, 0 -_020E1284: .word 0x04000204 - arm_func_end CTRDGi_ChangeLatestAccessCycle - - arm_func_start CTRDGi_RestoreAccessCycle -CTRDGi_RestoreAccessCycle: ; 0x020E1288 - ldr r3, _020E12B8 ; =0x04000204 - ldr r2, [r0] - ldrh r1, [r3] - bic r1, r1, #0xc - orr r1, r1, r2, lsl #2 - strh r1, [r3] - ldrh r1, [r3] - ldr r2, [r0, #4] - bic r0, r1, #0x10 - orr r0, r0, r2, lsl #4 - strh r0, [r3] - bx lr - .align 2, 0 -_020E12B8: .word 0x04000204 - arm_func_end CTRDGi_RestoreAccessCycle - - arm_func_start CTRDGi_LockByProcessor -CTRDGi_LockByProcessor: ; 0x020E12BC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, _020E1314 ; =0x027FFFE8 - mov r7, r0 - mov r6, r1 - mov r4, #1 -_020E12D0: - bl OS_DisableInterrupts - str r0, [r6, #4] - mov r0, r5 - bl OS_ReadOwnerOfLockWord - ands r0, r0, #0x40 - str r0, [r6] - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - bl OS_TryLockCartridge - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #4] - bl OS_RestoreInterrupts - mov r0, r4 - bl SVC_WaitByLoop - b _020E12D0 -_020E1310: ; 0x020E1310 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E1314: .word 0x027FFFE8 - arm_func_end CTRDGi_LockByProcessor - - arm_func_start CTRDGi_UnlockByProcessor -CTRDGi_UnlockByProcessor: ; 0x020E1318 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4] - cmp r1, #0 - bne _020E1330 - bl OS_UnLockCartridge -_020E1330: - ldr r0, [r4, #4] - bl OS_RestoreInterrupts - ldmia sp!, {r4, pc} - arm_func_end CTRDGi_UnlockByProcessor - - arm_func_start CTRDGi_SendtoPxi -CTRDGi_SendtoPxi: ; 0x020E133C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r1, r7 - mov r0, #0xd - mov r2, #0 - bl PXI_SendWordByFifo - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r6, #1 - mov r5, #0xd - mov r4, #0 -_020E1368: - mov r0, r6 - bl SVC_WaitByLoop - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _020E1368 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end CTRDGi_SendtoPxi - - arm_func_start CTRDG_CpuCopy8 -CTRDG_CpuCopy8: ; 0x020E138C - stmdb sp!, {r3, lr} - mov lr, r1 - mov r3, r2 - cmp lr, #0x8000000 - blo _020E13C4 - ldr r2, _020E13E0 ; =0x0A010000 - cmp lr, r2 - bhs _020E13C4 - mov ip, #1 - mov r2, r0 - mov r0, #0 - str ip, [sp] - bl CTRDGi_CopyCommon - ldmia sp!, {r3, pc} -_020E13C4: - mov ip, #1 - mov r1, r0 - mov r2, lr - mov r0, #0 - str ip, [sp] - bl CTRDGi_CopyCommon - ldmia sp!, {r3, pc} - .align 2, 0 -_020E13E0: .word 0x0A010000 - arm_func_end CTRDG_CpuCopy8 - - arm_func_start CTRDG_CpuCopy16 -CTRDG_CpuCopy16: ; 0x020E13E4 - stmdb sp!, {r3, lr} - mov lr, r1 - mov r3, r2 - mov ip, #0x11 - mov r1, r0 - mov r2, lr - mov r0, #0 - str ip, [sp] - bl CTRDGi_CopyCommon - ldmia sp!, {r3, pc} - arm_func_end CTRDG_CpuCopy16 - - arm_func_start CTRDG_CpuCopy32 -CTRDG_CpuCopy32: ; 0x020E140C - stmdb sp!, {r3, lr} - mov lr, r1 - mov r3, r2 - mov ip, #0x21 - mov r1, r0 - mov r2, lr - mov r0, #0 - str ip, [sp] - bl CTRDGi_CopyCommon - ldmia sp!, {r3, pc} - arm_func_end CTRDG_CpuCopy32 - - arm_func_start CTRDGi_CopyCommon -CTRDGi_CopyCommon: ; 0x020E1434 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl CTRDG_IsExisting - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl CTRDG_CheckEnabled - ldr r0, _020E156C ; =_021E4D40 - ldrh r0, [r0, #6] - bl OS_LockCartridge - ldr r0, [sp, #0x18] - tst r0, #1 - bne _020E1488 - mov r0, r7 - bl MI_StopDma - mov r0, r5 - mov r1, r4 - bl DC_FlushRange -_020E1488: - ldr r0, [sp, #0x18] - cmp r0, #0x11 - bhi _020E14B8 - cmp r0, #0x10 - blo _020E14AC - beq _020E14D4 - cmp r0, #0x11 - beq _020E1504 - b _020E154C -_020E14AC: - cmp r0, #1 - beq _020E152C - b _020E154C -_020E14B8: - cmp r0, #0x20 - bhi _020E14C8 - beq _020E14EC - b _020E154C -_020E14C8: - cmp r0, #0x21 - beq _020E1518 - b _020E154C -_020E14D4: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl MI_DmaCopy16 - b _020E154C -_020E14EC: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl MI_DmaCopy32 - b _020E154C -_020E1504: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MIi_CpuCopy16 - b _020E154C -_020E1518: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl MIi_CpuCopy32 - b _020E154C -_020E152C: - cmp r4, #0 - mov r1, #0 - bls _020E154C -_020E1538: - ldrb r0, [r6], #1 - add r1, r1, #1 - cmp r1, r4 - strb r0, [r5], #1 - blo _020E1538 -_020E154C: - ldr r0, _020E156C ; =_021E4D40 - ldrh r0, [r0, #6] - bl OS_UnLockCartridge - bl CTRDG_IsExisting - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E156C: .word _021E4D40 - arm_func_end CTRDGi_CopyCommon - - arm_func_start CTRDG_Read32 -CTRDG_Read32: ; 0x020E1570 - ldr ip, _020E1584 ; =CTRDGi_AccessCommon - mov r2, r1 - mov r1, #0 - mov r3, #0x41 - bx ip - .align 2, 0 -_020E1584: .word CTRDGi_AccessCommon - arm_func_end CTRDG_Read32 - - arm_func_start CTRDGi_AccessCommon -CTRDGi_AccessCommon: ; 0x020E1588 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl CTRDG_IsExisting - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl CTRDG_CheckEnabled - ldr r0, _020E1664 ; =_021E4D40 - ldrh r0, [r0, #6] - bl OS_LockCartridge - cmp r4, #0x21 - bhi _020E15F4 - bhs _020E1620 - cmp r4, #0x11 - bhi _020E15E8 - cmp r4, #0x10 - blo _020E1644 - beq _020E1640 - cmp r4, #0x11 - beq _020E1610 - b _020E1644 -_020E15E8: - cmp r4, #0x20 - streqh r6, [r7] - b _020E1644 -_020E15F4: - cmp r4, #0x40 - bhi _020E1604 - streq r6, [r7] - b _020E1644 -_020E1604: - cmp r4, #0x41 - beq _020E1630 - b _020E1644 -_020E1610: - cmp r5, #0 - ldrneb r0, [r7] - strneb r0, [r5] - b _020E1644 -_020E1620: - cmp r5, #0 - ldrneh r0, [r7] - strneh r0, [r5] - b _020E1644 -_020E1630: - cmp r5, #0 - ldrne r0, [r7] - strne r0, [r5] - b _020E1644 -_020E1640: - strb r6, [r7] -_020E1644: - ldr r0, _020E1664 ; =_021E4D40 - ldrh r0, [r0, #6] - bl OS_UnLockCartridge - bl CTRDG_IsExisting - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E1664: .word _021E4D40 - arm_func_end CTRDGi_AccessCommon - - arm_func_start CTRDG_IsEnabled -CTRDG_IsEnabled: ; 0x020E1668 - ldr r0, _020E1674 ; =_021E4D40 - ldr r0, [r0] - bx lr - .align 2, 0 -_020E1674: .word _021E4D40 - arm_func_end CTRDG_IsEnabled - - arm_func_start CTRDG_Enable -CTRDG_Enable: ; 0x020E1678 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl OS_DisableInterrupts - ldr r1, _020E16BC ; =_021E4D40 - mov r4, r0 - str r5, [r1] - bl CTRDG_IsOptionCartridge - cmp r0, #0 - bne _020E16B0 - cmp r5, #0 - movne r1, #0x1000 - moveq r1, #0x5000 - mov r0, #0xf000 - bl OS_SetDPermissionsForProtectionRegion -_020E16B0: - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E16BC: .word _021E4D40 - arm_func_end CTRDG_Enable - - arm_func_start CTRDG_CheckEnabled -CTRDG_CheckEnabled: ; 0x020E16C0 - stmdb sp!, {r3, lr} - bl CTRDG_IsOptionCartridge - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl CTRDG_IsEnabled - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl OS_Terminate - ldmia sp!, {r3, pc} - arm_func_end CTRDG_CheckEnabled - - arm_func_start CTRDG_Init -CTRDG_Init: ; 0x020E16E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020E1784 ; =_021E4D60 - ldr r1, [r0, #8] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - str r1, [r0, #8] - bl CTRDGi_InitCommon - ldr r0, _020E1784 ; =_021E4D60 - mov r1, #0 - str r1, [r0, #0xc] - bl PXI_Init - mov r5, #0xd - mov r4, #1 -_020E171C: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _020E171C - ldr r1, _020E1788 ; =CTRDGi_CallbackForInitModuleInfo - mov r0, #0xd - bl PXI_SetFifoRecvCallback - bl CTRDGi_InitModuleInfo - mov r0, #0xd - mov r1, #0 - bl PXI_SetFifoRecvCallback - ldr r1, _020E178C ; =CTRDGi_PulledOutCallback - mov r0, #0xd - bl PXI_SetFifoRecvCallback - ldr r1, _020E1784 ; =_021E4D60 - mov r2, #0 - ldr r0, _020E1790 ; =_021E4E40 - str r2, [r1, #0x18] - bl CTRDGi_InitTaskThread - ldr r1, _020E1794 ; =CTRDGi_CallbackForSetPhi - mov r0, #0x11 - bl PXI_SetFifoRecvCallback - mov r0, #0 - bl CTRDG_Enable - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E1784: .word _021E4D60 -_020E1788: .word CTRDGi_CallbackForInitModuleInfo -_020E178C: .word CTRDGi_PulledOutCallback -_020E1790: .word _021E4E40 -_020E1794: .word CTRDGi_CallbackForSetPhi - arm_func_end CTRDG_Init - - arm_func_start CTRDGi_InitModuleInfo -CTRDGi_InitModuleInfo: ; 0x020E1798 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - ldr r0, _020E1960 ; =_021E4D60 - ldr r1, [r0] - cmp r1, #0 - addne sp, sp, #0x10 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _020E1964 ; =0x04000300 - mov r2, #1 - ldrh r1, [r1] - str r2, [r0] - tst r1, #1 - addeq sp, sp, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0x40000 - bl OS_SetIrqMask - ldr r3, _020E1968 ; =0x04000208 - mov r2, #1 - ldrh r5, [r3] - ldr r1, _020E196C ; =_021E4D44 - mov r4, r0 - strh r2, [r3] - ldrh r0, [r1, #2] - add r1, sp, #8 - bl CTRDGi_LockByProcessor - ldr r1, _020E1970 ; =0x04000204 - add r0, sp, #0 - ldrh r1, [r1] - and r1, r1, #0x8000 - mov r6, r1, asr #0xf - bl CTRDGi_ChangeLatestAccessCycle - ldr r3, _020E1970 ; =0x04000204 - ldr r0, _020E1974 ; =_021E4D80 - ldrh r2, [r3] - add r0, r0, #0x80 - mov r1, #0x40 - bic r2, r2, #0x8000 - strh r2, [r3] - bl DC_InvalidateRange - ldr r2, _020E1974 ; =_021E4D80 - ldr r1, _020E1978 ; =0x08000080 - mov r0, #1 - mov r3, #0x40 - add r2, r2, #0x80 - bl MI_DmaCopy16 - ldr r2, _020E1970 ; =0x04000204 - add r0, sp, #0 - ldrh r1, [r2] - bic r1, r1, #0x8000 - orr r1, r1, r6, lsl #15 - strh r1, [r2] - bl CTRDGi_RestoreAccessCycle - ldr r0, _020E196C ; =_021E4D44 - add r1, sp, #8 - ldrh r0, [r0, #2] - bl CTRDGi_UnlockByProcessor - ldr r1, _020E197C ; =0x027FFF9B - ldrb r0, [r1] - cmp r0, #0 - bne _020E1894 - ldrb r0, [r1, #-1] - cmp r0, #0 - bne _020E18F8 -_020E1894: - ldr r3, _020E1974 ; =_021E4D80 - ldr r6, _020E1980 ; =0x027FFC30 - ldrh r0, [r3, #0xbe] - mov r2, #0 - strh r0, [r6] - b _020E18C0 -_020E18AC: - add r0, r3, r2 - ldrb r1, [r0, #0xb5] - add r0, r6, r2 - add r2, r2, #1 - strb r1, [r0, #2] -_020E18C0: - cmp r2, #3 - blt _020E18AC - ldrh r0, [r3, #0xb0] - strh r0, [r6, #6] - ldr r0, [r3, #0xac] - str r0, [r6, #8] - bl CTRDG_IsExisting - cmp r0, #0 - movne r2, #1 - ldr r1, _020E197C ; =0x027FFF9B - moveq r2, #0 - mov r0, #1 - strb r2, [r1] - strb r0, [r1, #-1] -_020E18F8: - ldr r0, _020E1984 ; =0xFFFF0020 - ldr r1, _020E1988 ; =_021E4D84 - mov r2, #0x9c - bl MIi_CpuCopy32 - bl DC_FlushAll - ldr r0, _020E1974 ; =_021E4D80 - add r0, r0, #0xfe000000 - mov r0, r0, lsr #5 - mov r0, r0, lsl #6 - orr r0, r0, #1 - bl CTRDGi_SendtoPxi - mov r7, #1 - ldr r6, _020E196C ; =_021E4D44 - b _020E1938 -_020E1930: - mov r0, r7 - bl SVC_WaitByLoop -_020E1938: - ldrh r0, [r6] - cmp r0, #1 - bne _020E1930 - ldr r2, _020E1968 ; =0x04000208 - mov r0, r4 - ldrh r1, [r2] - strh r5, [r2] - bl OS_SetIrqMask - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E1960: .word _021E4D60 -_020E1964: .word 0x04000300 -_020E1968: .word 0x04000208 -_020E196C: .word _021E4D44 -_020E1970: .word 0x04000204 -_020E1974: .word _021E4D80 -_020E1978: .word 0x08000080 -_020E197C: .word 0x027FFF9B -_020E1980: .word 0x027FFC30 -_020E1984: .word 0xFFFF0020 -_020E1988: .word _021E4D84 - arm_func_end CTRDGi_InitModuleInfo - - arm_func_start CTRDGi_CallbackForInitModuleInfo -CTRDGi_CallbackForInitModuleInfo: ; 0x020E198C - stmdb sp!, {r3, lr} - and r0, r1, #0x3f - cmp r0, #1 - bne _020E19AC - ldr r0, _020E19B4 ; =_021E4D44 - mov r1, #1 - strh r1, [r0] - ldmia sp!, {r3, pc} -_020E19AC: - bl OS_Terminate - ldmia sp!, {r3, pc} - .align 2, 0 -_020E19B4: .word _021E4D44 - arm_func_end CTRDGi_CallbackForInitModuleInfo - - arm_func_start CTRDGi_PulledOutCallback -CTRDGi_PulledOutCallback: ; 0x020E19B8 - stmdb sp!, {r3, lr} - and r0, r1, #0x3f - cmp r0, #0x11 - bne _020E1A08 - ldr r0, _020E1A10 ; =_021E4D60 - ldr r1, [r0, #0xc] - cmp r1, #0 - ldmneia sp!, {r3, pc} - ldr r1, [r0, #0x18] - mov r0, #0 - cmp r1, #0 - beq _020E19EC - blx r1 -_020E19EC: - cmp r0, #0 - beq _020E19F8 - bl CTRDG_TerminateForPulledOut -_020E19F8: - ldr r0, _020E1A10 ; =_021E4D60 - mov r1, #1 - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} -_020E1A08: - bl OS_Terminate - ldmia sp!, {r3, pc} - .align 2, 0 -_020E1A10: .word _021E4D60 - arm_func_end CTRDGi_PulledOutCallback - - arm_func_start CTRDG_TerminateForPulledOut -CTRDG_TerminateForPulledOut: ; 0x020E1A14 - stmdb sp!, {r3, lr} - mov r0, #2 - bl CTRDGi_SendtoPxi - bl OS_Terminate - ldmia sp!, {r3, pc} - arm_func_end CTRDG_TerminateForPulledOut - - arm_func_start CTRDGi_CallbackForSetPhi -CTRDGi_CallbackForSetPhi: ; 0x020E1A28 - ldr r0, _020E1A38 ; =_021E4D60 - mov r1, #0 - str r1, [r0, #4] - bx lr - .align 2, 0 -_020E1A38: .word _021E4D60 - arm_func_end CTRDGi_CallbackForSetPhi - - arm_func_start CTRDG_IdentifyAgbBackup -CTRDG_IdentifyAgbBackup: ; 0x020E1A3C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - cmp r7, #1 - mov r0, #1 - bhi _020E1B8C - bl OS_GetLockID - ldr r1, _020E1BA8 ; =_021E4F2C - strh r0, [r1] - ldrh r0, [r1] - bl OS_LockCartridge - ldr r4, _020E1BAC ; =0x04000204 - ldr r1, _020E1BB0 ; =_0210E1DC - ldrh r3, [r4] - ldrh r2, [r4] - ldr r0, _020E1BB4 ; =_02110FC8 - and r6, r3, #3 - bic r2, r2, #3 - orr r2, r2, #3 - strh r2, [r4] - str r1, [r0] - bl CTRDGi_ReadFlashID - ldr r2, _020E1BAC ; =0x04000204 - mov r4, r0 - ldrh r1, [r2] - cmp r7, #0 - ldreq r5, _020E1BB8 ; =_0210E1EC - bic r1, r1, #3 - orr r1, r1, r6 - cmp r7, #1 - ldr r0, _020E1BA8 ; =_021E4F2C - strh r1, [r2] - ldrh r0, [r0] - ldreq r5, _020E1BBC ; =_0210E1E0 - bl OS_UnlockCartridge - ldr r3, [r5] - mov r0, #1 - ldrh r1, [r3, #0x38] - cmp r1, #0 - beq _020E1AFC - and r2, r4, #0xff -_020E1ADC: - ldrh r1, [r3, #0x38] - cmp r2, r1 - moveq r0, #0 - beq _020E1AFC - ldr r3, [r5, #4]! - ldrh r1, [r3, #0x38] - cmp r1, #0 - bne _020E1ADC -_020E1AFC: - ldr r2, [r3] - ldr r1, _020E1BC0 ; =_021E4F30 - ldr r3, _020E1BC4 ; =_021E4F44 - str r2, [r1] - ldr r1, [r5] - ldr r2, _020E1BC8 ; =_021E4F3C - ldr r4, [r1, #4] - ldr r1, _020E1BCC ; =_021E4F34 - str r4, [r3] - ldr r3, [r5] - ldr r6, _020E1BD0 ; =_021E4F38 - ldr r3, [r3, #8] - ldr r4, _020E1BD4 ; =_021E4F40 - str r3, [r2] - ldr r2, [r5] - ldr r3, _020E1BD8 ; =_021E4F5C - ldr r7, [r2, #0xc] - ldr r2, _020E1BB4 ; =_02110FC8 - str r7, [r1] - ldr r7, [r5] - ldr r1, _020E1BDC ; =_02110FC4 - ldr r7, [r7, #0x10] - str r7, [r6] - ldr r6, [r5] - ldr r6, [r6, #0x14] - str r6, [r4] - ldr r4, [r5] - ldr r4, [r4, #0x18] - str r4, [r3] - ldr r3, [r5] - ldr r3, [r3, #0x1c] - str r3, [r2] - ldr r2, [r5] - add r2, r2, #0x20 - str r2, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020E1B8C: - cmp r7, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl OS_GetLockID - ldr r1, _020E1BE0 ; =_021E4F60 - strh r0, [r1] - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E1BA8: .word _021E4F2C -_020E1BAC: .word 0x04000204 -_020E1BB0: .word _0210E1DC -_020E1BB4: .word _02110FC8 -_020E1BB8: .word _0210E1EC -_020E1BBC: .word _0210E1E0 -_020E1BC0: .word _021E4F30 -_020E1BC4: .word _021E4F44 -_020E1BC8: .word _021E4F3C -_020E1BCC: .word _021E4F34 -_020E1BD0: .word _021E4F38 -_020E1BD4: .word _021E4F40 -_020E1BD8: .word _021E4F5C -_020E1BDC: .word _02110FC4 -_020E1BE0: .word _021E4F60 - arm_func_end CTRDG_IdentifyAgbBackup - - arm_func_start CTRDGi_SetFlashBankMx -CTRDGi_SetFlashBankMx: ; 0x020E1BE4 - ldr r3, _020E1C10 ; =0x0A005555 - mov r2, #0xaa - ldr r1, _020E1C14 ; =0x0A002AAA - strb r2, [r3] - mov r2, #0x55 - strb r2, [r1] - mov r1, #0xb0 - strb r1, [r3] - mov r1, #0xa000000 - strb r0, [r1] - bx lr - .align 2, 0 -_020E1C10: .word 0x0A005555 -_020E1C14: .word 0x0A002AAA - arm_func_end CTRDGi_SetFlashBankMx - - arm_func_start CTRDGi_ReadFlashID -CTRDGi_ReadFlashID: ; 0x020E1C18 - stmdb sp!, {r3, r4, r5, lr} - ldr r5, _020E1D10 ; =0x04000208 - mov r0, #0 - ldrh r2, [r5] - ldr r1, _020E1D14 ; =_021E4F2C - ldr r4, _020E1D18 ; =0x0A005555 - strh r0, [r5] - str r2, [r1, #0x1c] - mov r3, #0xaa - ldr r2, _020E1D1C ; =0x0A002AAA - strb r3, [r4] - mov r3, #0x55 - strb r3, [r2] - mov r2, #0x90 - strb r2, [r4] - ldrh r2, [r5] - ldr r1, [r1, #0x1c] - strh r1, [r5] - bl StartFlashTimer - ldr r4, _020E1D14 ; =_021E4F2C - ldrh r0, [r4, #2] - cmp r0, #0 - bne _020E1C84 -_020E1C74: - bl CheckFlashTimer - ldrh r0, [r4, #2] - cmp r0, #0 - beq _020E1C74 -_020E1C84: - ldr r0, _020E1D20 ; =0x0A000001 - bl CTRDGi_ReadSrFunc - mov r4, r0, lsl #0x18 - mov r0, #0xa000000 - bl CTRDGi_ReadSrFunc - ldr ip, _020E1D10 ; =0x04000208 - orr r4, r0, r4, lsr #16 - ldrh r2, [ip] - mov r0, #0 - ldr r1, _020E1D14 ; =_021E4F2C - strh r0, [ip] - ldr r5, _020E1D18 ; =0x0A005555 - str r2, [r1, #0x1c] - mov r3, #0xaa - ldr r2, _020E1D1C ; =0x0A002AAA - strb r3, [r5] - mov r3, #0x55 - strb r3, [r2] - mov r2, #0xf0 - strb r2, [r5] - strb r2, [r5] - ldrh r2, [ip] - ldr r1, [r1, #0x1c] - strh r1, [ip] - bl StartFlashTimer - ldr r5, _020E1D14 ; =_021E4F2C - ldrh r0, [r5, #2] - cmp r0, #0 - bne _020E1D08 -_020E1CF8: - bl CheckFlashTimer - ldrh r0, [r5, #2] - cmp r0, #0 - beq _020E1CF8 -_020E1D08: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E1D10: .word 0x04000208 -_020E1D14: .word _021E4F2C -_020E1D18: .word 0x0A005555 -_020E1D1C: .word 0x0A002AAA -_020E1D20: .word 0x0A000001 - arm_func_end CTRDGi_ReadFlashID - - arm_func_start StartFlashTimer -StartFlashTimer: ; 0x020E1D24 - stmdb sp!, {r3, lr} - ldr r1, _020E1D64 ; =_02110FC4 - ldr r2, _020E1D68 ; =_021E4F2C - mov r3, #0 - ldr r1, [r1, #4] - strh r3, [r2, #2] - mov r0, r0, lsl #1 - ldrh r1, [r1, r0] - mov r0, r3 - str r1, [r2, #0x20] - str r0, [r2, #0x24] - bl OS_GetTick - ldr r2, _020E1D68 ; =_021E4F2C - str r0, [r2, #0x28] - str r1, [r2, #0x2c] - ldmia sp!, {r3, pc} - .align 2, 0 -_020E1D64: .word _02110FC4 -_020E1D68: .word _021E4F2C - arm_func_end StartFlashTimer - - arm_func_start CheckFlashTimer -CheckFlashTimer: ; 0x020E1D6C - stmdb sp!, {r3, lr} - bl OS_GetTick - ldr r3, _020E1DC0 ; =_021E4F2C - ldr r2, _020E1DC4 ; =0x000082EA - ldr ip, [r3, #0x28] - ldr r3, [r3, #0x2c] - subs ip, r0, ip - sbc r0, r1, r3 - mov r1, r0, lsl #6 - orr r1, r1, ip, lsr #26 - mov r0, ip, lsl #6 - mov r3, #0 - bl _ll_udiv - ldr r2, _020E1DC0 ; =_021E4F2C - ldr r3, [r2, #0x24] - ldr ip, [r2, #0x20] - cmp r3, r1 - cmpeq ip, r0 - movls r0, #1 - strlsh r0, [r2, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_020E1DC0: .word _021E4F2C -_020E1DC4: .word 0x000082EA - arm_func_end CheckFlashTimer - - arm_func_start CTRDGi_ReadSrFunc -CTRDGi_ReadSrFunc: ; 0x020E1DC8 - ldrb r0, [r0] - bx lr - arm_func_end CTRDGi_ReadSrFunc - - arm_func_start CTRDGi_PollingSR512kCOMMON -CTRDGi_PollingSR512kCOMMON: ; 0x020E1DD0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, r0 - mov r8, r1 - mov r7, r2 - mov r6, #0 - bl StartFlashTimer - ldr r5, _020E1E54 ; =_021E4F2C -_020E1DEC: - mov r0, r8 - bl CTRDGi_ReadSrFunc - cmp r0, r7 - beq _020E1E40 - ldrh r0, [r5, #2] - cmp r0, #0 - beq _020E1DEC - mov r0, r8 - bl CTRDGi_ReadSrFunc - cmp r7, r0 - beq _020E1E40 - ldr r0, _020E1E58 ; =_02110FC4 - ldr r0, [r0] - ldrh r0, [r0, #0x18] - cmp r0, #0xc2 - ldreq r0, _020E1E5C ; =0x0A005555 - moveq r1, #0xf0 - streqb r1, [r0] - orr r0, r4, #0xc000 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 -_020E1E40: - bl CTRDG_IsExisting - cmp r0, #0 - moveq r6, #0x1000 - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E1E54: .word _021E4F2C -_020E1E58: .word _02110FC4 -_020E1E5C: .word 0x0A005555 - arm_func_end CTRDGi_PollingSR512kCOMMON - - arm_func_start CTRDGi_PollingSR1MCOMMON -CTRDGi_PollingSR1MCOMMON: ; 0x020E1E60 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0 - bl StartFlashTimer - ldr r4, _020E1F0C ; =_021E4F2C -_020E1E7C: - bl CheckFlashTimer - mov r0, r7 - bl CTRDGi_ReadSrFunc - cmp r0, r6 - beq _020E1EF8 - tst r0, #0x20 - beq _020E1EC4 - mov r0, r7 - bl CTRDGi_ReadSrFunc - cmp r6, r0 - beq _020E1EF8 - orr r0, r8, #0xa000 - mov r0, r0, lsl #0x10 - ldr r1, _020E1F10 ; =0x0A005555 - mov r2, #0xf0 - strb r2, [r1] - mov r5, r0, lsr #0x10 - b _020E1EF8 -_020E1EC4: - ldrh r0, [r4, #2] - cmp r0, #0 - beq _020E1E7C - mov r0, r7 - bl CTRDGi_ReadSrFunc - cmp r6, r0 - beq _020E1EF8 - orr r0, r8, #0xc000 - mov r0, r0, lsl #0x10 - ldr r1, _020E1F10 ; =0x0A005555 - mov r2, #0xf0 - strb r2, [r1] - mov r5, r0, lsr #0x10 -_020E1EF8: - bl CTRDG_IsExisting - cmp r0, #0 - moveq r5, #0x1000 - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E1F0C: .word _021E4F2C -_020E1F10: .word 0x0A005555 - arm_func_end CTRDGi_PollingSR1MCOMMON - - arm_func_start CTRDGi_ReadAgbFlashCore -CTRDGi_ReadAgbFlashCore: ; 0x020E1F14 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, _020E1FFC ; =_021E4F2C - ldr r1, [r5] - ldrh r0, [r0] - str r1, [r4] - ldrh r5, [sp, #0x20] - ldr r6, [sp, #0x14] - ldr r7, [sp, #0x1c] - ldr r8, [sp, #0x18] - bl OS_LockCartridge - ldr r3, _020E2000 ; =0x04000204 - ldr r0, _020E2004 ; =_02110FC4 - ldrh r2, [r3] - ldrh r1, [r3] - and r4, r2, #3 - bic r1, r1, #3 - orr r1, r1, #3 - strh r1, [r3] - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0x20000 - bne _020E1F98 - mov r0, r5, lsl #0xc - mov r0, r0, lsr #0x10 - bl CTRDGi_SetFlashBankMx - and r5, r5, #0xf -_020E1F98: - ldr r0, _020E2004 ; =_02110FC4 - cmp r8, #0 - ldr r0, [r0] - sub r8, r8, #1 - ldrh r0, [r0, #8] - mov r0, r5, lsl r0 - add r0, r0, #0xa000000 - add r1, r6, r0 - beq _020E1FD0 -_020E1FBC: - ldrb r0, [r1], #1 - cmp r8, #0 - sub r8, r8, #1 - strb r0, [r7], #1 - bne _020E1FBC -_020E1FD0: - ldr r2, _020E2000 ; =0x04000204 - ldr r0, _020E1FFC ; =_021E4F2C - ldrh r1, [r2] - bic r1, r1, #3 - orr r1, r1, r4 - strh r1, [r2] - ldrh r0, [r0] - bl OS_UnlockCartridge - mov r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E1FFC: .word _021E4F2C -_020E2000: .word 0x04000204 -_020E2004: .word _02110FC4 - arm_func_end CTRDGi_ReadAgbFlashCore - - arm_func_start CTRDGi_VerifyFlashSectorCore -CTRDGi_VerifyFlashSectorCore: ; 0x020E2008 - cmp r2, #0 - sub r2, r2, #1 - beq _020E2034 -_020E2014: - ldrb ip, [r1], #1 - ldrb r3, [r0], #1 - cmp ip, r3 - subne r0, r1, #1 - bxne lr - cmp r2, #0 - sub r2, r2, #1 - bne _020E2014 -_020E2034: - mov r0, #0 - bx lr - arm_func_end CTRDGi_VerifyFlashSectorCore - - arm_func_start CTRDGi_VerifyAgbFlashCore -CTRDGi_VerifyAgbFlashCore: ; 0x020E203C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, _020E210C ; =_021E4F2C - ldr r1, [r5] - ldrh r0, [r0] - str r1, [r4] - ldrh r5, [sp, #0x20] - ldr r6, [sp, #0xc] - ldr r7, [sp, #0x18] - bl OS_LockCartridge - ldr r3, _020E2110 ; =0x04000204 - ldr r0, _020E2114 ; =_02110FC4 - ldrh r2, [r3] - ldrh r1, [r3] - and r4, r2, #3 - bic r1, r1, #3 - orr r1, r1, #3 - strh r1, [r3] - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #0x20000 - bne _020E20BC - mov r0, r5, lsl #0xc - mov r0, r0, lsr #0x10 - bl CTRDGi_SetFlashBankMx - and r5, r5, #0xf -_020E20BC: - ldr r1, _020E2114 ; =_02110FC4 - mov r0, r6 - ldr r1, [r1] - mov r2, r7 - ldrh r1, [r1, #8] - mov r1, r5, lsl r1 - add r1, r1, #0xa000000 - bl CTRDGi_VerifyFlashSectorCore - ldr r3, _020E2110 ; =0x04000204 - ldr r1, _020E210C ; =_021E4F2C - ldrh r2, [r3] - mov r5, r0 - bic r0, r2, #3 - orr r0, r0, r4 - strh r0, [r3] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, r5 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_020E210C: .word _021E4F2C -_020E2110: .word 0x04000204 -_020E2114: .word _02110FC4 - arm_func_end CTRDGi_VerifyAgbFlashCore - - arm_func_start CTRDGi_WriteAndVerifyAgbFlashSectorCore -CTRDGi_WriteAndVerifyAgbFlashSectorCore: ; 0x020E2118 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x24 - mov r4, r0 - ldmia r4!, {r0, r1, r2, r3} - add ip, sp, #0 - stmia ip!, {r0, r1, r2, r3} - ldmia r4!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r0, [r4] - mov r4, #0 - str r0, [ip] - ldrh r5, [sp, #0x20] - ldr r6, [sp, #0xc] - ldr r7, [sp, #0x18] -_020E2150: - mov r0, r5 - mov r1, r6 - bl CTRDG_WriteAgbFlashSector - cmp r0, #0 - bne _020E2180 - mov r0, r5 - mov r1, r6 - mov r2, r7 - bl CTRDG_VerifyAgbFlash - cmp r0, #0 - addeq sp, sp, #0x24 - ldmeqia sp!, {r4, r5, r6, r7, pc} -_020E2180: - add r1, r4, #1 - mov r1, r1, lsl #0x10 - mov r4, r1, lsr #0x10 - cmp r4, #3 - blo _020E2150 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end CTRDGi_WriteAndVerifyAgbFlashSectorCore - - arm_func_start CTRDG_ReadAgbFlash -CTRDG_ReadAgbFlash: ; 0x020E219C - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0x14] - str r2, [sp, #0x1c] - str r3, [sp, #0x18] - bl CTRDGi_ReadAgbFlashCore - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDG_ReadAgbFlash - - arm_func_start CTRDG_WriteAgbFlashSector -CTRDG_WriteAgbFlashSector: ; 0x020E21C4 - stmdb sp!, {r3, lr} - ldr r2, _020E21D8 ; =_021E4F2C - ldr r2, [r2, #4] - blx r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_020E21D8: .word _021E4F2C - arm_func_end CTRDG_WriteAgbFlashSector - - arm_func_start CTRDG_VerifyAgbFlash -CTRDG_VerifyAgbFlash: ; 0x020E21DC - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0xc] - str r2, [sp, #0x18] - bl CTRDGi_VerifyAgbFlashCore - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDG_VerifyAgbFlash - - arm_func_start CTRDG_WriteAndVerifyAgbFlashAsync -CTRDG_WriteAndVerifyAgbFlashAsync: - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - str r2, [sp, #0x18] - ldr r1, _020E222C ; =CTRDGi_WriteAndVerifyAgbFlashSectorCore - add r0, sp, #0 - mov r2, r3 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E222C: .word CTRDGi_WriteAndVerifyAgbFlashSectorCore - arm_func_end CTRDG_WriteAndVerifyAgbFlashAsync - - arm_func_start CTRDGi_EraseFlashChipCoreAT -CTRDGi_EraseFlashChipCoreAT: ; 0x020E2230 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020E22FC ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r0, _020E2300 ; =0x04000204 - ldr r1, _020E2304 ; =_02110FC4 - ldrh r3, [r0] - ldr r2, [r1] - ldrh r1, [r0] - ldr r4, [r2, #0x10] - mov r2, #0 - bic r1, r1, #3 - orr r1, r1, r4 - strh r1, [r0] - ldrh r4, [r0, #4] - ldr r1, _020E2308 ; =_021E4F48 - ldr lr, _020E230C ; =0x0A005555 - strh r2, [r0, #4] - str r4, [r1] - mov r5, #0xaa - ldr r4, _020E2310 ; =0x0A002AAA - strb r5, [lr] - mov ip, #0x55 - strb ip, [r4] - mov r2, #0x80 - strb r2, [lr] - strb r5, [lr] - strb ip, [r4] - mov r2, #0x10 - strb r2, [lr] - ldrh r2, [r0, #4] - ldr r2, [r1] - ldr r1, _020E2314 ; =_021E4F5C - strh r2, [r0, #4] - ldr r4, [r1] - mov r0, #3 - mov r1, #0xa000000 - mov r2, #0xff - and r5, r3, #3 - blx r4 - ldr r3, _020E2300 ; =0x04000204 - ldr r1, _020E22FC ; =_021E4F2C - ldrh r2, [r3] - mov r4, r0 - bic r0, r2, #3 - orr r0, r0, r5 - strh r0, [r3] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E22FC: .word _021E4F2C -_020E2300: .word 0x04000204 -_020E2304: .word _02110FC4 -_020E2308: .word _021E4F48 -_020E230C: .word 0x0A005555 -_020E2310: .word 0x0A002AAA -_020E2314: .word _021E4F5C - arm_func_end CTRDGi_EraseFlashChipCoreAT - - arm_func_start CTRDGi_EraseFlashSectorCoreAT -CTRDGi_EraseFlashSectorCoreAT: ; 0x020E2318 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r1, [r5] - ldr r0, _020E2424 ; =_021E4F2C - str r1, [r4] - ldrh r1, [sp, #0x20] - ldrh r0, [r0] - mov r1, r1, lsl #7 - add r5, r1, #0xa000000 - bl OS_LockCartridge - ldr ip, _020E2428 ; =0x04000204 - ldr r1, _020E242C ; =_02110FC4 - ldrh r0, [ip] - ldr r1, [r1] - ldrh r2, [ip] - ldr r3, [r1, #0x10] - mov r1, #0 - bic r2, r2, #3 - orr r2, r2, r3 - strh r2, [ip] - ldrh r3, [ip, #4] - ldr r4, _020E2430 ; =0x0A005555 - mov r2, #0xaa - strh r1, [ip, #4] - strb r2, [r4] - ldr r1, _020E2434 ; =0x0A002AAA - mov r2, #0x55 - strb r2, [r1] - mov r1, #0xa0 - strb r1, [r4] - and r4, r0, #3 - mov r0, #0x80 - mov r2, #0xff -_020E23B4: - strb r2, [r5], #1 - subs r0, r0, #1 - bne _020E23B4 - ldr lr, _020E2438 ; =0x04000208 - ldr ip, _020E243C ; =_021E4F5C - ldrh r0, [lr] - sub r1, r5, #1 - strh r3, [lr] - ldr r3, [ip] - mov r0, #1 - blx r3 - movs r5, r0 - beq _020E23F8 - and r0, r5, #0xff00 - orr r0, r0, #2 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 -_020E23F8: - ldr r2, _020E2428 ; =0x04000204 - ldr r0, _020E2424 ; =_021E4F2C - ldrh r1, [r2] - bic r1, r1, #3 - orr r1, r1, r4 - strh r1, [r2] - ldrh r0, [r0] - bl OS_UnlockCartridge - mov r0, r5 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020E2424: .word _021E4F2C -_020E2428: .word 0x04000204 -_020E242C: .word _02110FC4 -_020E2430: .word 0x0A005555 -_020E2434: .word 0x0A002AAA -_020E2438: .word 0x04000208 -_020E243C: .word _021E4F5C - arm_func_end CTRDGi_EraseFlashSectorCoreAT - - arm_func_start CTRDGi_EraseFlash4KBCoreAT -CTRDGi_EraseFlash4KBCoreAT: ; 0x020E2440 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r5] - str r0, [r4] - ldrh r0, [sp, #0x20] - cmp r0, #0x10 - addhs sp, sp, #0x24 - ldrhs r0, _020E24E4 ; =0x000080FF - ldmhsia sp!, {r4, r5, r6, r7, pc} - mov r0, r0, lsl #0x15 - mov r6, r0, lsr #0x10 - mov r5, #0 - mov r4, #2 -_020E248C: - mov r7, r4 -_020E2490: - mov r0, r6 - bl CTRDGi_EraseFlashSectorAT - cmp r0, #0 - beq _020E24B0 - sub r1, r7, #1 - mov r1, r1, lsl #0x10 - movs r7, r1, lsr #0x10 - bne _020E2490 -_020E24B0: - add r1, r6, #1 - mov r1, r1, lsl #0x10 - cmp r0, #0 - mov r6, r1, lsr #0x10 - addne sp, sp, #0x24 - ldmneia sp!, {r4, r5, r6, r7, pc} - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r5, r1, lsr #0x10 - cmp r5, #0x20 - blo _020E248C - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_020E24E4: .word 0x000080FF - arm_func_end CTRDGi_EraseFlash4KBCoreAT - - arm_func_start CTRDGi_WriteFlashSectorCoreAT -CTRDGi_WriteFlashSectorCoreAT: ; 0x020E24E8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, _020E25E8 ; =_021E4F2C - ldr r1, [r5] - ldrh r0, [r0] - str r1, [r4] - ldr r5, [sp, #0xc] - bl OS_LockCartridge - ldr r1, _020E25EC ; =0x04000204 - ldr r2, _020E25F0 ; =_02110FC4 - ldrh r0, [r1] - ldr r3, [r2] - ldrh r2, [r1] - ldr r4, [r3, #0x10] - mov r3, #0 - bic r2, r2, #3 - orr r2, r2, r4 - strh r2, [r1] - ldrh ip, [sp, #0x20] - ldrh r2, [r1, #4] - ldr r4, _020E25F4 ; =0x0A005555 - mov ip, ip, lsl #7 - strh r3, [r1, #4] - mov r3, #0xaa - strb r3, [r4] - ldr r1, _020E25F8 ; =0x0A002AAA - mov r3, #0x55 - strb r3, [r1] - mov r1, #0xa0 - strb r1, [r4] - and r4, r0, #3 - add lr, ip, #0xa000000 - mov r1, #0x80 -_020E2584: - ldrb r0, [r5], #1 - subs r1, r1, #1 - strb r0, [lr], #1 - bne _020E2584 - ldr ip, _020E25FC ; =0x04000208 - ldr r3, _020E2600 ; =_021E4F5C - ldrh r0, [ip] - sub r1, lr, #1 - mov r0, #1 - strh r2, [ip] - ldrb r2, [r5, #-1] - ldr r3, [r3] - blx r3 - ldr r3, _020E25EC ; =0x04000204 - ldr r1, _020E25E8 ; =_021E4F2C - ldrh r2, [r3] - mov r5, r0 - bic r0, r2, #3 - orr r0, r0, r4 - strh r0, [r3] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, r5 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020E25E8: .word _021E4F2C -_020E25EC: .word 0x04000204 -_020E25F0: .word _02110FC4 -_020E25F4: .word 0x0A005555 -_020E25F8: .word 0x0A002AAA -_020E25FC: .word 0x04000208 -_020E2600: .word _021E4F5C - arm_func_end CTRDGi_WriteFlashSectorCoreAT - - arm_func_start CTRDGi_WriteFlash4KBCoreAT -CTRDGi_WriteFlash4KBCoreAT: ; 0x020E2604 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r5] - str r0, [r4] - ldrh r0, [sp, #0x20] - ldr r6, [sp, #0xc] - cmp r0, #0x10 - addhs sp, sp, #0x24 - ldrhs r0, _020E26C0 ; =0x000080FF - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r7, _020E26C4 ; =_021E4F28 - mov r0, r0, lsl #0x15 - mov r1, #0x1000 - strh r1, [r7] - mov r5, r0, lsr #0x10 - mov r4, #2 -_020E265C: - mov r8, r4 -_020E2660: - mov r0, r5 - mov r1, r6 - bl CTRDGi_WriteFlashSectorAT - cmp r0, #0 - beq _020E2684 - sub r1, r8, #1 - mov r1, r1, lsl #0x10 - movs r8, r1, lsr #0x10 - bne _020E2660 -_020E2684: - cmp r0, #0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrh r2, [r7] - add r1, r5, #1 - mov r1, r1, lsl #0x10 - sub r2, r2, #0x80 - strh r2, [r7] - ldrh r2, [r7] - add r6, r6, #0x80 - mov r5, r1, lsr #0x10 - cmp r2, #0 - bne _020E265C - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E26C0: .word 0x000080FF -_020E26C4: .word _021E4F28 - arm_func_end CTRDGi_WriteFlash4KBCoreAT - - arm_func_start CTRDGi_EraseFlashChipAT -CTRDGi_EraseFlashChipAT: ; 0x020E26C8 - stmdb sp!, {lr} - sub sp, sp, #0x24 - add r0, sp, #0 - bl CTRDGi_EraseFlashChipCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlashChipAT - - arm_func_start CTRDGi_EraseFlash4KBAT -CTRDGi_EraseFlash4KBAT: - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - bl CTRDGi_EraseFlash4KBCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlash4KBAT - - arm_func_start CTRDGi_WriteFlash4KBAT -CTRDGi_WriteFlash4KBAT: - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlash4KBCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_WriteFlash4KBAT - - arm_func_start CTRDGi_EraseFlashChipAsyncAT -CTRDGi_EraseFlashChipAsyncAT: - stmdb sp!, {lr} - sub sp, sp, #0x24 - ldr r1, _020E2754 ; =CTRDGi_EraseFlashChipCoreAT - mov r2, r0 - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E2754: .word CTRDGi_EraseFlashChipCoreAT - arm_func_end CTRDGi_EraseFlashChipAsyncAT - - arm_func_start CTRDGi_EraseFlash4KBAsyncAT -CTRDGi_EraseFlash4KBAsyncAT: ; 0x020E2758 - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov r2, r1 - strh r0, [sp, #0x20] - ldr r1, _020E277C ; =CTRDGi_EraseFlash4KBCoreAT - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E277C: .word CTRDGi_EraseFlash4KBCoreAT - arm_func_end CTRDGi_EraseFlash4KBAsyncAT - - arm_func_start CTRDGi_WriteFlash4KBAsyncAT -CTRDGi_WriteFlash4KBAsyncAT: ; 0x020E2780 - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020E27A4 ; =CTRDGi_WriteFlash4KBCoreAT - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E27A4: .word CTRDGi_WriteFlash4KBCoreAT - arm_func_end CTRDGi_WriteFlash4KBAsyncAT - - arm_func_start CTRDGi_EraseFlashSectorAT -CTRDGi_EraseFlashSectorAT: ; 0x020E27A8 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - bl CTRDGi_EraseFlashSectorCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlashSectorAT - - arm_func_start CTRDGi_WriteFlashSectorAT -CTRDGi_WriteFlashSectorAT: ; 0x020E27CC - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlashSectorCoreAT - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_WriteFlashSectorAT - - arm_func_start CTRDGi_EraseFlashSectorAsyncAT -CTRDGi_EraseFlashSectorAsyncAT: - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov r2, r1 - strh r0, [sp, #0x20] - ldr r1, _020E2818 ; =CTRDGi_EraseFlashSectorCoreAT - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E2818: .word CTRDGi_EraseFlashSectorCoreAT - arm_func_end CTRDGi_EraseFlashSectorAsyncAT - - arm_func_start CTRDGi_WriteFlashSectorAsyncAT -CTRDGi_WriteFlashSectorAsyncAT: ; 0x020E281C - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020E2840 ; =CTRDGi_WriteFlashSectorCoreAT - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E2840: .word CTRDGi_WriteFlashSectorCoreAT - arm_func_end CTRDGi_WriteFlashSectorAsyncAT - - arm_func_start CTRDGi_EraseFlashChipCoreLE -CTRDGi_EraseFlashChipCoreLE: ; 0x020E2844 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020E2910 ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r0, _020E2914 ; =0x04000204 - ldr r1, _020E2918 ; =_02110FC4 - ldrh r3, [r0] - ldr r2, [r1] - ldrh r1, [r0] - ldr r4, [r2, #0x10] - mov r2, #0 - bic r1, r1, #3 - orr r1, r1, r4 - strh r1, [r0] - ldrh r4, [r0, #4] - ldr r1, _020E291C ; =_021E4F48 - ldr lr, _020E2920 ; =0x0A005555 - strh r2, [r0, #4] - str r4, [r1] - mov r5, #0xaa - ldr r4, _020E2924 ; =0x0A002AAA - strb r5, [lr] - mov ip, #0x55 - strb ip, [r4] - mov r2, #0x80 - strb r2, [lr] - strb r5, [lr] - strb ip, [r4] - mov r2, #0x10 - strb r2, [lr] - ldrh r2, [r0, #4] - ldr r2, [r1] - ldr r1, _020E2928 ; =_021E4F5C - strh r2, [r0, #4] - ldr r4, [r1] - mov r0, #3 - mov r1, #0xa000000 - mov r2, #0xff - and r5, r3, #3 - blx r4 - ldr r3, _020E2914 ; =0x04000204 - ldr r1, _020E2910 ; =_021E4F2C - ldrh r2, [r3] - mov r4, r0 - bic r0, r2, #3 - orr r0, r0, r5 - strh r0, [r3] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E2910: .word _021E4F2C -_020E2914: .word 0x04000204 -_020E2918: .word _02110FC4 -_020E291C: .word _021E4F48 -_020E2920: .word 0x0A005555 -_020E2924: .word 0x0A002AAA -_020E2928: .word _021E4F5C - arm_func_end CTRDGi_EraseFlashChipCoreLE - - arm_func_start CTRDGi_EraseFlashSectorCoreLE -CTRDGi_EraseFlashSectorCoreLE: ; 0x020E292C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r5] - str r0, [r4] - ldrh r4, [sp, #0x20] - cmp r4, #0x10 - addhs sp, sp, #0x24 - ldrhs r0, _020E2A40 ; =0x000080FF - ldmhsia sp!, {r3, r4, r5, r6, pc} - ldr r0, _020E2A44 ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r0, _020E2A48 ; =0x04000204 - ldr r1, _020E2A4C ; =_02110FC4 - ldrh r3, [r0] - ldr r5, [r1] - ldrh r2, [r0] - ldr r6, [r5, #0x10] - mov r5, #0 - bic r2, r2, #3 - orr r2, r2, r6 - strh r2, [r0] - ldr r2, [r1] - ldrh r1, [r0, #4] - ldrh ip, [r2, #8] - ldr r2, _020E2A50 ; =_021E4F48 - ldr lr, _020E2A54 ; =0x0A005555 - strh r5, [r0, #4] - mov r6, r4, lsl ip - str r1, [r2] - mov r5, #0xaa - ldr r4, _020E2A58 ; =0x0A002AAA - strb r5, [lr] - mov ip, #0x55 - strb ip, [r4] - mov r1, #0x80 - strb r1, [lr] - strb r5, [lr] - strb ip, [r4] - add r1, r6, #0xa000000 - mov r4, #0x30 - strb r4, [r1] - ldrh r4, [r0, #4] - ldr r4, [r2] - ldr r2, _020E2A5C ; =_021E4F5C - strh r4, [r0, #4] - ldr r4, [r2] - mov r0, #2 - mov r2, #0xff - and r5, r3, #3 - blx r4 - ldr r3, _020E2A48 ; =0x04000204 - ldr r1, _020E2A44 ; =_021E4F2C - ldrh r2, [r3] - mov r4, r0 - bic r0, r2, #3 - orr r0, r0, r5 - strh r0, [r3] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, r4 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_020E2A40: .word 0x000080FF -_020E2A44: .word _021E4F2C -_020E2A48: .word 0x04000204 -_020E2A4C: .word _02110FC4 -_020E2A50: .word _021E4F48 -_020E2A54: .word 0x0A005555 -_020E2A58: .word 0x0A002AAA -_020E2A5C: .word _021E4F5C - arm_func_end CTRDGi_EraseFlashSectorCoreLE - - arm_func_start CTRDGi_ProgramFlashByteLE -CTRDGi_ProgramFlashByteLE: ; 0x020E2A60 - stmdb sp!, {r3, lr} - ldr ip, _020E2AA8 ; =0x0A005555 - mov r3, #0xaa - ldr r2, _020E2AAC ; =0x0A002AAA - strb r3, [ip] - mov r3, #0x55 - mov lr, r0 - strb r3, [r2] - mov r0, #0xa0 - strb r0, [ip] - ldrb r2, [lr] - ldr r3, _020E2AB0 ; =_021E4F5C - mov r0, #1 - strb r2, [r1] - ldrb r2, [lr] - ldr r3, [r3] - blx r3 - ldmia sp!, {r3, pc} - .align 2, 0 -_020E2AA8: .word 0x0A005555 -_020E2AAC: .word 0x0A002AAA -_020E2AB0: .word _021E4F5C - arm_func_end CTRDGi_ProgramFlashByteLE - - arm_func_start CTRDGi_WriteFlashSectorCoreLE -CTRDGi_WriteFlashSectorCoreLE: ; 0x020E2AB4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r5] - str r0, [r4] - ldrh r8, [sp, #0x20] - ldr r5, [sp, #0xc] - cmp r8, #0x10 - addhs sp, sp, #0x24 - ldrhs r0, _020E2C64 ; =0x000080FF - ldmhsia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, _020E2C68 ; =_02110FC4 - ldr r6, _020E2C6C ; =CTRDGi_VerifyFlashCoreFF - ldr r0, [r0] - mov sb, #0 - ldrh r0, [r0, #8] - mov r0, r8, lsl r0 - add r7, r0, #0xa000000 -_020E2B10: - mov r0, r8 - bl CTRDGi_EraseFlashSectorLE - movs r4, r0 - bne _020E2B38 - mov r0, r7 - mov r1, r6 - bl CTRDGi_VerifyFlashErase - mov r0, r0, lsl #0x10 - movs r4, r0, lsr #0x10 - beq _020E2B58 -_020E2B38: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - cmp sb, #0x50 - mov sb, r0, lsr #0x10 - bne _020E2B10 - add sp, sp, #0x24 - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_020E2B58: - mov r6, #1 - cmp sb, #0 - movne r6, #6 - cmp r6, #1 - mov sb, #1 - blo _020E2B8C -_020E2B70: - mov r0, r8 - bl CTRDGi_EraseFlashSectorLE - add r0, sb, #1 - mov r0, r0, lsl #0x10 - cmp r6, r0, lsr #16 - mov sb, r0, lsr #0x10 - bhs _020E2B70 -_020E2B8C: - ldr r0, _020E2C70 ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r1, _020E2C74 ; =0x04000204 - ldr r2, _020E2C68 ; =_02110FC4 - ldrh r0, [r1] - ldr r6, [r2] - ldrh r3, [r1] - ldr r8, [r6, #0x10] - ldr r6, _020E2C78 ; =_021E4F28 - bic r3, r3, #3 - orr r3, r3, r8 - strh r3, [r1] - ldr r2, [r2] - mov r3, #0 - ldr r8, [r2, #4] - ldr r2, _020E2C7C ; =_021E4F48 - strh r8, [r6] - ldrh sb, [r1, #4] - and r8, r0, #3 - strh r3, [r1, #4] - ldrh r0, [r6] - str sb, [r2] - cmp r0, #0 - beq _020E2C24 -_020E2BF0: - mov r0, r5 - mov r1, r7 - bl CTRDGi_ProgramFlashByteLE - movs r4, r0 - bne _020E2C24 - ldrh r0, [r6] - add r5, r5, #1 - add r7, r7, #1 - sub r0, r0, #1 - strh r0, [r6] - ldrh r0, [r6] - cmp r0, #0 - bne _020E2BF0 -_020E2C24: - ldr r3, _020E2C80 ; =0x04000208 - ldr r0, _020E2C7C ; =_021E4F48 - ldrh r1, [r3] - ldr r0, [r0] - sub r2, r3, #4 - strh r0, [r3] - ldrh r1, [r2] - ldr r0, _020E2C70 ; =_021E4F2C - bic r1, r1, #3 - orr r1, r1, r8 - strh r1, [r2] - ldrh r0, [r0] - bl OS_UnlockCartridge - mov r0, r4 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020E2C64: .word 0x000080FF -_020E2C68: .word _02110FC4 -_020E2C6C: .word CTRDGi_VerifyFlashCoreFF -_020E2C70: .word _021E4F2C -_020E2C74: .word 0x04000204 -_020E2C78: .word _021E4F28 -_020E2C7C: .word _021E4F48 -_020E2C80: .word 0x04000208 - arm_func_end CTRDGi_WriteFlashSectorCoreLE - - arm_func_start CTRDGi_VerifyFlashCoreFF -CTRDGi_VerifyFlashCoreFF: ; 0x020E2C84 - ldr r1, _020E2CB4 ; =_02110FC4 - ldr r1, [r1] - ldr r2, [r1, #4] - cmp r2, #0 - beq _020E2CAC -_020E2C98: - ldrb r1, [r0], #1 - cmp r1, #0xff - bne _020E2CAC - subs r2, r2, #1 - bne _020E2C98 -_020E2CAC: - mov r0, r2 - bx lr - .align 2, 0 -_020E2CB4: .word _02110FC4 - arm_func_end CTRDGi_VerifyFlashCoreFF - - arm_func_start CTRDGi_VerifyFlashErase -CTRDGi_VerifyFlashErase: ; 0x020E2CB8 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _020E2D34 ; =_021E4F2C - mov r5, r0 - ldrh r0, [r2] - mov r4, r1 - bl OS_LockCartridge - ldr ip, _020E2D38 ; =0x04000204 - ldr r0, _020E2D3C ; =_02110FC4 - ldrh r3, [ip] - ldr r0, [r0] - ldrh r1, [ip] - ldr r2, [r0, #0x10] - mov r0, r5 - bic r1, r1, #3 - orr r1, r1, r2 - strh r1, [ip] - and r6, r3, #3 - mov r5, #0 - blx r4 - cmp r0, #0 - ldr r2, _020E2D38 ; =0x04000204 - ldr r0, _020E2D34 ; =_021E4F2C - ldrh r1, [r2] - ldrne r5, _020E2D40 ; =0x00008004 - bic r1, r1, #3 - orr r1, r1, r6 - strh r1, [r2] - ldrh r0, [r0] - bl OS_UnlockCartridge - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_020E2D34: .word _021E4F2C -_020E2D38: .word 0x04000204 -_020E2D3C: .word _02110FC4 -_020E2D40: .word 0x00008004 - arm_func_end CTRDGi_VerifyFlashErase - - arm_func_start CTRDGi_EraseFlashChipLE -CTRDGi_EraseFlashChipLE: ; 0x020E2D44 - stmdb sp!, {lr} - sub sp, sp, #0x24 - add r0, sp, #0 - bl CTRDGi_EraseFlashChipCoreLE - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlashChipLE - - arm_func_start CTRDGi_EraseFlashSectorLE -CTRDGi_EraseFlashSectorLE: ; 0x020E2D64 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - bl CTRDGi_EraseFlashSectorCoreLE - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlashSectorLE - - arm_func_start CTRDGi_WriteFlashSectorLE -CTRDGi_WriteFlashSectorLE: - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlashSectorCoreLE - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_WriteFlashSectorLE - - arm_func_start CTRDGi_EraseFlashChipAsyncLE -CTRDGi_EraseFlashChipAsyncLE: - stmdb sp!, {lr} - sub sp, sp, #0x24 - ldr r1, _020E2DD0 ; =CTRDGi_EraseFlashChipCoreLE - mov r2, r0 - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E2DD0: .word CTRDGi_EraseFlashChipCoreLE - arm_func_end CTRDGi_EraseFlashChipAsyncLE - - arm_func_start CTRDGi_EraseFlashSectorAsyncLE -CTRDGi_EraseFlashSectorAsyncLE: ; 0x020E2DD4 - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov r2, r1 - strh r0, [sp, #0x20] - ldr r1, _020E2DF8 ; =CTRDGi_EraseFlashSectorCoreLE - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E2DF8: .word CTRDGi_EraseFlashSectorCoreLE - arm_func_end CTRDGi_EraseFlashSectorAsyncLE - - arm_func_start CTRDGi_WriteFlashSectorAsyncLE -CTRDGi_WriteFlashSectorAsyncLE: ; 0x020E2DFC - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020E2E20 ; =CTRDGi_WriteFlashSectorCoreLE - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E2E20: .word CTRDGi_WriteFlashSectorCoreLE - arm_func_end CTRDGi_WriteFlashSectorAsyncLE - - arm_func_start CTRDGi_EraseFlashChipCoreMX -CTRDGi_EraseFlashChipCoreMX: ; 0x020E2E24 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020E2EF0 ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r0, _020E2EF4 ; =0x04000204 - ldr r1, _020E2EF8 ; =_02110FC4 - ldrh r3, [r0] - ldr r2, [r1] - ldrh r1, [r0] - ldr r4, [r2, #0x10] - mov r2, #0 - bic r1, r1, #3 - orr r1, r1, r4 - strh r1, [r0] - ldrh r4, [r0, #4] - ldr r1, _020E2EFC ; =_021E4F48 - ldr lr, _020E2F00 ; =0x0A005555 - strh r2, [r0, #4] - str r4, [r1] - mov r5, #0xaa - ldr r4, _020E2F04 ; =0x0A002AAA - strb r5, [lr] - mov ip, #0x55 - strb ip, [r4] - mov r2, #0x80 - strb r2, [lr] - strb r5, [lr] - strb ip, [r4] - mov r2, #0x10 - strb r2, [lr] - ldrh r2, [r0, #4] - ldr r2, [r1] - ldr r1, _020E2F08 ; =_021E4F5C - strh r2, [r0, #4] - ldr r4, [r1] - mov r0, #3 - mov r1, #0xa000000 - mov r2, #0xff - and r5, r3, #3 - blx r4 - ldr r3, _020E2EF4 ; =0x04000204 - ldr r1, _020E2EF0 ; =_021E4F2C - ldrh r2, [r3] - mov r4, r0 - bic r0, r2, #3 - orr r0, r0, r5 - strh r0, [r3] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E2EF0: .word _021E4F2C -_020E2EF4: .word 0x04000204 -_020E2EF8: .word _02110FC4 -_020E2EFC: .word _021E4F48 -_020E2F00: .word 0x0A005555 -_020E2F04: .word 0x0A002AAA -_020E2F08: .word _021E4F5C - arm_func_end CTRDGi_EraseFlashChipCoreMX - - arm_func_start CTRDGi_EraseFlashSectorCoreMX -CTRDGi_EraseFlashSectorCoreMX: ; 0x020E2F0C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #4 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, _020E3074 ; =_02110FC4 - ldr r1, [r5] - ldr r0, [r0] - str r1, [r4] - ldrh r4, [sp, #0x24] - ldrh r0, [r0, #0xa] - cmp r4, r0 - addhs sp, sp, #0x28 - ldrhs r0, _020E3078 ; =0x000080FF - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _020E307C ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r5, _020E3080 ; =0x04000204 - ldr r0, _020E3074 ; =_02110FC4 - ldrh r3, [r5] - ldr r2, [r0] - ldrh r1, [r5] - mov r0, r4, lsl #0xc - ldr r2, [r2, #0x10] - bic r1, r1, #3 - orr r1, r1, r2 - strh r1, [r5] - and r1, r3, #3 - mov r0, r0, lsr #0x10 - str r1, [sp] - bl CTRDGi_SetFlashBankMx - and sl, r4, #0xf - mov r8, #0 - add r7, r5, #4 - ldr r5, _020E3084 ; =0x0A005555 - ldr r4, _020E3088 ; =_021E4F48 - mov fp, r8 - mov r6, #0xaa -_020E2FB4: - ldr r0, _020E3074 ; =_02110FC4 - ldrh r3, [r7] - ldr r0, [r0] - mov sb, #0x55 - ldrh r1, [r0, #8] - mov r0, #2 - mov r2, #0xff - strh fp, [r7] - str r3, [r4] - ldr r3, _020E308C ; =0x0A002AAA - strb r6, [r5] - strb sb, [r3] - mov r3, #0x80 - strb r3, [r5] - mov r1, sl, lsl r1 - ldr r3, _020E308C ; =0x0A002AAA - strb r6, [r5] - strb sb, [r3] - add r1, r1, #0xa000000 - mov r3, #0x30 - strb r3, [r1] - ldrh r3, [r7] - ldr r3, [r4] - strh r3, [r7] - ldr r3, _020E3090 ; =_021E4F5C - ldr r3, [r3] - blx r3 - mov sb, r0 - tst sb, #0xa000 - beq _020E3044 - cmp r8, #0 - bne _020E3044 - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - b _020E2FB4 -_020E3044: - ldr r2, _020E3080 ; =0x04000204 - ldr r1, _020E307C ; =_021E4F2C - ldrh r0, [r2] - bic r3, r0, #3 - ldr r0, [sp] - orr r0, r3, r0 - strh r0, [r2] - ldrh r0, [r1] - bl OS_UnlockCartridge - mov r0, sb - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020E3074: .word _02110FC4 -_020E3078: .word 0x000080FF -_020E307C: .word _021E4F2C -_020E3080: .word 0x04000204 -_020E3084: .word 0x0A005555 -_020E3088: .word _021E4F48 -_020E308C: .word 0x0A002AAA -_020E3090: .word _021E4F5C - arm_func_end CTRDGi_EraseFlashSectorCoreMX - - arm_func_start CTRDGi_ProgramFlashByteMX -CTRDGi_ProgramFlashByteMX: ; 0x020E3094 - stmdb sp!, {r3, lr} - ldr ip, _020E30DC ; =0x0A005555 - mov r3, #0xaa - ldr r2, _020E30E0 ; =0x0A002AAA - strb r3, [ip] - mov r3, #0x55 - mov lr, r0 - strb r3, [r2] - mov r0, #0xa0 - strb r0, [ip] - ldrb r2, [lr] - ldr r3, _020E30E4 ; =_021E4F5C - mov r0, #1 - strb r2, [r1] - ldrb r2, [lr] - ldr r3, [r3] - blx r3 - ldmia sp!, {r3, pc} - .align 2, 0 -_020E30DC: .word 0x0A005555 -_020E30E0: .word 0x0A002AAA -_020E30E4: .word _021E4F5C - arm_func_end CTRDGi_ProgramFlashByteMX - - arm_func_start CTRDGi_WriteFlashSectorCoreMX -CTRDGi_WriteFlashSectorCoreMX: ; 0x020E30E8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, _020E3244 ; =_02110FC4 - ldr r1, [r5] - ldr r0, [r0] - str r1, [r4] - ldrh r4, [sp, #0x20] - ldrh r0, [r0, #0xa] - ldr r7, [sp, #0xc] - cmp r4, r0 - addhs sp, sp, #0x24 - ldrhs r0, _020E3248 ; =0x000080FF - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, r4 - bl CTRDGi_EraseFlashSectorMX - movs r6, r0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, _020E324C ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r5, _020E3250 ; =0x04000204 - ldr r0, _020E3244 ; =_02110FC4 - ldrh r3, [r5] - ldr r2, [r0] - ldrh r1, [r5] - mov r0, r4, lsl #0xc - ldr r2, [r2, #0x10] - bic r1, r1, #3 - orr r1, r1, r2 - strh r1, [r5] - mov r0, r0, lsr #0x10 - and r5, r3, #3 - bl CTRDGi_SetFlashBankMx - ldr r0, _020E3244 ; =_02110FC4 - ldr r8, _020E3254 ; =_021E4F28 - ldr r2, [r0] - ldr r1, _020E3258 ; =0x04000208 - ldr r0, [r2, #4] - and r4, r4, #0xf - strh r0, [r8] - ldrh r3, [r2, #8] - ldrh r2, [r1] - mov r0, #0 - mov r3, r4, lsl r3 - strh r0, [r1] - ldrh r1, [r8] - ldr r0, _020E325C ; =_021E4F48 - add r4, r3, #0xa000000 - str r2, [r0] - cmp r1, #0 - beq _020E3204 -_020E31D0: - mov r0, r7 - mov r1, r4 - bl CTRDGi_ProgramFlashByteMX - movs r6, r0 - bne _020E3204 - ldrh r0, [r8] - add r7, r7, #1 - add r4, r4, #1 - sub r0, r0, #1 - strh r0, [r8] - ldrh r0, [r8] - cmp r0, #0 - bne _020E31D0 -_020E3204: - ldr r3, _020E3258 ; =0x04000208 - ldr r0, _020E325C ; =_021E4F48 - ldrh r1, [r3] - ldr r0, [r0] - sub r2, r3, #4 - strh r0, [r3] - ldrh r1, [r2] - ldr r0, _020E324C ; =_021E4F2C - bic r1, r1, #3 - orr r1, r1, r5 - strh r1, [r2] - ldrh r0, [r0] - bl OS_UnlockCartridge - mov r0, r6 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E3244: .word _02110FC4 -_020E3248: .word 0x000080FF -_020E324C: .word _021E4F2C -_020E3250: .word 0x04000204 -_020E3254: .word _021E4F28 -_020E3258: .word 0x04000208 -_020E325C: .word _021E4F48 - arm_func_end CTRDGi_WriteFlashSectorCoreMX - - arm_func_start CTRDGi_EraseFlashChipMX -CTRDGi_EraseFlashChipMX: ; 0x020E3260 - stmdb sp!, {lr} - sub sp, sp, #0x24 - add r0, sp, #0 - bl CTRDGi_EraseFlashChipCoreMX - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlashChipMX - - arm_func_start CTRDGi_EraseFlashSectorMX -CTRDGi_EraseFlashSectorMX: ; 0x020E3280 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - bl CTRDGi_EraseFlashSectorCoreMX - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_EraseFlashSectorMX - - arm_func_start CTRDGi_WriteFlashSectorMX -CTRDGi_WriteFlashSectorMX: - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlashSectorCoreMX - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_WriteFlashSectorMX - - arm_func_start CTRDGi_EraseFlashChipAsyncMX -CTRDGi_EraseFlashChipAsyncMX: - stmdb sp!, {lr} - sub sp, sp, #0x24 - ldr r1, _020E32EC ; =CTRDGi_EraseFlashChipCoreMX - mov r2, r0 - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E32EC: .word CTRDGi_EraseFlashChipCoreMX - arm_func_end CTRDGi_EraseFlashChipAsyncMX - - arm_func_start CTRDGi_EraseFlashSectorAsyncMX -CTRDGi_EraseFlashSectorAsyncMX: ; 0x020E32F0 - stmdb sp!, {lr} - sub sp, sp, #0x24 - mov r2, r1 - strh r0, [sp, #0x20] - ldr r1, _020E3314 ; =CTRDGi_EraseFlashSectorCoreMX - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E3314: .word CTRDGi_EraseFlashSectorCoreMX - arm_func_end CTRDGi_EraseFlashSectorAsyncMX - - arm_func_start CTRDGi_WriteFlashSectorAsyncMX -CTRDGi_WriteFlashSectorAsyncMX: ; 0x020E3318 - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020E333C ; =CTRDGi_WriteFlashSectorCoreMX - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E333C: .word CTRDGi_WriteFlashSectorCoreMX - arm_func_end CTRDGi_WriteFlashSectorAsyncMX - - arm_func_start CTRDGi_WriteFlashSectorCoreMX5 -CTRDGi_WriteFlashSectorCoreMX5: ; 0x020E3340 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r5, r0 - ldmia r5!, {r0, r1, r2, r3} - add r4, sp, #0 - stmia r4!, {r0, r1, r2, r3} - ldmia r5!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - ldr r0, _020E345C ; =_02110FC4 - ldr r1, [r5] - ldr r0, [r0] - str r1, [r4] - ldrh r4, [sp, #0x20] - ldrh r0, [r0, #0xa] - ldr r7, [sp, #0xc] - cmp r4, r0 - addhs sp, sp, #0x24 - ldrhs r0, _020E3460 ; =0x000080FF - ldmhsia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, r4 - bl CTRDGi_EraseFlashSectorLE - movs r6, r0 - addne sp, sp, #0x24 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldr r0, _020E3464 ; =_021E4F2C - ldrh r0, [r0] - bl OS_LockCartridge - ldr r5, _020E3468 ; =0x04000204 - ldr r0, _020E345C ; =_02110FC4 - ldrh r3, [r5] - ldr r2, [r0] - ldrh r1, [r5] - ldr r2, [r2, #0x10] - ldr r8, _020E346C ; =_021E4F28 - bic r1, r1, #3 - orr r1, r1, r2 - strh r1, [r5] - ldr r1, [r0] - and r5, r3, #3 - ldr r0, [r1, #4] - strh r0, [r8] - ldrh r1, [r1, #8] - ldrh r0, [r8] - mov r1, r4, lsl r1 - cmp r0, #0 - add r4, r1, #0xa000000 - beq _020E3430 -_020E33FC: - mov r0, r7 - mov r1, r4 - bl CTRDGi_ProgramFlashByteLE - movs r6, r0 - bne _020E3430 - ldrh r0, [r8] - add r7, r7, #1 - add r4, r4, #1 - sub r0, r0, #1 - strh r0, [r8] - ldrh r0, [r8] - cmp r0, #0 - bne _020E33FC -_020E3430: - ldr r2, _020E3468 ; =0x04000204 - ldr r0, _020E3464 ; =_021E4F2C - ldrh r1, [r2] - bic r1, r1, #3 - orr r1, r1, r5 - strh r1, [r2] - ldrh r0, [r0] - bl OS_UnlockCartridge - mov r0, r6 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020E345C: .word _02110FC4 -_020E3460: .word 0x000080FF -_020E3464: .word _021E4F2C -_020E3468: .word 0x04000204 -_020E346C: .word _021E4F28 - arm_func_end CTRDGi_WriteFlashSectorCoreMX5 - - arm_func_start CTRDGi_WriteFlashSectorMX5 -CTRDGi_WriteFlashSectorMX5: ; 0x020E3470 - stmdb sp!, {lr} - sub sp, sp, #0x24 - strh r0, [sp, #0x20] - add r0, sp, #0 - str r1, [sp, #0xc] - bl CTRDGi_WriteFlashSectorCoreMX5 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add sp, sp, #0x24 - ldmia sp!, {pc} - arm_func_end CTRDGi_WriteFlashSectorMX5 - - arm_func_start CTRDGi_WriteFlashSectorAsyncMX5 -CTRDGi_WriteFlashSectorAsyncMX5: - stmdb sp!, {lr} - sub sp, sp, #0x24 - str r1, [sp, #0xc] - strh r0, [sp, #0x20] - ldr r1, _020E34BC ; =CTRDGi_WriteFlashSectorCoreMX5 - add r0, sp, #0 - bl CTRDGi_SetTask - add sp, sp, #0x24 - ldmia sp!, {pc} - .align 2, 0 -_020E34BC: .word CTRDGi_WriteFlashSectorCoreMX5 - arm_func_end CTRDGi_WriteFlashSectorAsyncMX5 - - arm_func_start CTRDGi_InitTaskThread -CTRDGi_InitTaskThread: ; 0x020E34C0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - bl OS_DisableInterrupts - ldr r1, _020E353C ; =_021E4F68 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - bne _020E352C - add r0, r5, #0xc4 - str r5, [r1] - bl CTRDGi_InitTaskInfo - ldr r0, _020E3540 ; =_021E4F6C - bl CTRDGi_InitTaskInfo - mov r0, #0 - str r0, [r5, #0xc0] - mov r2, #0x400 - ldr r1, _020E3544 ; =CTRDGi_TaskThread - ldr r3, _020E3548 ; =_021E4F90 + 0x400 - mov r0, r5 - str r2, [sp] - mov r2, #0x14 - str r2, [sp, #4] - mov r2, r5 - bl OS_CreateThread - mov r0, r5 - bl OS_WakeupThreadDirect -_020E352C: - mov r0, r4 - bl OS_RestoreInterrupts - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020E353C: .word _021E4F68 -_020E3540: .word _021E4F6C -_020E3544: .word CTRDGi_TaskThread -_020E3548: .word _021E4F90 + 0x400 - arm_func_end CTRDGi_InitTaskThread - - arm_func_start CTRDGi_IsTaskAvailable -CTRDGi_IsTaskAvailable: ; 0x020E354C - ldr r0, _020E3564 ; =_021E4F68 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_020E3564: .word _021E4F68 - arm_func_end CTRDGi_IsTaskAvailable - - arm_func_start CTRDGi_InitTaskInfo -CTRDGi_InitTaskInfo: ; 0x020E3568 - ldr ip, _020E3578 ; =MI_CpuFill8 - mov r1, #0 - mov r2, #0x24 - bx ip - .align 2, 0 -_020E3578: .word MI_CpuFill8 - arm_func_end CTRDGi_InitTaskInfo - - arm_func_start CTRDGi_TaskThread -CTRDGi_TaskThread: ; 0x020E357C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov r4, #0 - mov r8, r0 - add r6, sp, #0 - mov sl, r4 - mov sb, r4 - mov r5, r4 - mov fp, #0x24 -_020E35A0: - mov r0, r6 - mov r1, r5 - mov r2, fp - bl MI_CpuFill8 - bl OS_DisableInterrupts - ldr r1, [r8, #0xc0] - mov r7, r0 - cmp r1, #0 - bne _020E35D8 -_020E35C4: - mov r0, r4 - bl OS_SleepThread - ldr r0, [r8, #0xc0] - cmp r0, #0 - beq _020E35C4 -_020E35D8: - ldr lr, [r8, #0xc0] - add ip, sp, #0 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r1, [lr] - mov r0, r7 - str r1, [ip] - bl OS_RestoreInterrupts - ldr r1, [sp] - cmp r1, #0 - beq _020E3618 - mov r0, r6 - blx r1 - str r0, [sp, #8] -_020E3618: - bl OS_DisableInterrupts - ldr r2, [sp, #4] - ldr r1, _020E3668 ; =_021E4F68 - mov r7, r0 - strb sl, [r1, #0x26] - cmp r2, #0 - beq _020E363C - mov r0, r6 - blx r2 -_020E363C: - ldr r0, _020E3668 ; =_021E4F68 - ldr r0, [r0] - cmp r0, #0 - beq _020E365C - mov r0, r7 - str sb, [r8, #0xc0] - bl OS_RestoreInterrupts - b _020E35A0 -_020E365C: - bl OS_ExitThread - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020E3668: .word _021E4F68 - arm_func_end CTRDGi_TaskThread - - arm_func_start CTRDGi_SetTask -CTRDGi_SetTask: ; 0x020E366C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _020E370C ; =_021E4F68 - mov r7, r0 - mov r5, r1 - mov r6, r2 - ldr r4, [r3] - bl CTRDGi_IsTaskAvailable - cmp r0, #0 - bne _020E3694 - bl OS_Terminate -_020E3694: - ldr r0, _020E370C ; =_021E4F68 - ldrb r0, [r0, #0x26] - cmp r0, #0 - beq _020E36A8 - bl OS_Terminate -_020E36A8: - bl OS_DisableInterrupts - mov r1, #1 - strb r1, [r7, #0x22] - str r5, [r7] - add r1, r4, #0xc4 - cmp r7, r1 - mov r5, r0 - ldreq r0, _020E370C ; =_021E4F68 - str r6, [r7, #4] - moveq r1, #0 - streq r1, [r0] - ldr ip, _020E3710 ; =_021E4F6C - ldmia r7!, {r0, r1, r2, r3} - mov r6, ip - stmia ip!, {r0, r1, r2, r3} - ldmia r7!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r1, [r7] - mov r0, r4 - str r1, [ip] - str r6, [r4, #0xc0] - bl OS_WakeupThreadDirect - mov r0, r5 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020E370C: .word _021E4F68 -_020E3710: .word _021E4F6C - arm_func_end CTRDGi_SetTask - - arm_func_start MATH_CountPopulation -MATH_CountPopulation: ; 0x020E3714 - ldr r1, _020E374C ; =0x55555555 - ldr r2, _020E3750 ; =0x33333333 - and r1, r1, r0, lsr #1 - sub r0, r0, r1 - and r1, r0, r2 - and r0, r2, r0, lsr #2 - add r1, r1, r0 - ldr r0, _020E3754 ; =0x0F0F0F0F - add r1, r1, r1, lsr #4 - and r0, r1, r0 - add r0, r0, r0, lsr #8 - add r0, r0, r0, lsr #16 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020E374C: .word 0x55555555 -_020E3750: .word 0x33333333 -_020E3754: .word 0x0F0F0F0F - arm_func_end MATH_CountPopulation - - arm_func_start MATH_CalcMD5 -MATH_CalcMD5: ; 0x020E3758 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x58 - mov r6, r0 - add r0, sp, #0 - mov r5, r1 - mov r4, r2 - bl DGT_Hash1Reset - add r0, sp, #0 - mov r1, r5 - mov r2, r4 - bl DGT_Hash1SetSource - add r1, sp, #0 - mov r0, r6 - bl DGT_Hash1GetDigest_R - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MATH_CalcMD5 - - arm_func_start MATH_CalcSHA1 -MATH_CalcSHA1: ; 0x020E3798 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x68 - mov r6, r0 - add r0, sp, #0 - mov r5, r1 - mov r4, r2 - bl DGT_Hash2Reset - add r0, sp, #0 - mov r1, r5 - mov r2, r4 - bl DGT_Hash2SetSource - add r0, sp, #0 - mov r1, r6 - bl DGT_Hash2GetDigest - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end MATH_CalcSHA1 - - arm_func_start MATHi_CRC8InitTable -MATHi_CRC8InitTable: ; 0x020E37D8 - stmdb sp!, {r3, lr} - mov ip, #0 - mov r2, ip -_020E37E4: - mov r3, ip - mov lr, r2 -_020E37EC: - tst r3, #0x80 - eorne r3, r1, r3, lsl #1 - add lr, lr, #1 - moveq r3, r3, lsl #1 - cmp lr, #8 - blo _020E37EC - strb r3, [r0, ip] - add ip, ip, #1 - cmp ip, #0x100 - blo _020E37E4 - ldmia sp!, {r3, pc} - arm_func_end MATHi_CRC8InitTable - - arm_func_start MATHi_CRC8Update -MATHi_CRC8Update: ; 0x020E3818 - stmdb sp!, {r4, lr} - cmp r3, #0 - ldrb lr, [r1] - mov r4, #0 - bls _020E3848 -_020E382C: - ldrb ip, [r2], #1 - add r4, r4, #1 - cmp r4, r3 - eor ip, lr, ip - and ip, ip, #0xff - ldrb lr, [r0, ip] - blo _020E382C -_020E3848: - strb lr, [r1] - ldmia sp!, {r4, pc} - arm_func_end MATHi_CRC8Update - - arm_func_start MATHi_CRC16InitTable -MATHi_CRC16InitTable: ; 0x020E3850 - stmdb sp!, {r4, lr} - mov lr, #0 - mov r4, lr - mov r3, lr -_020E3860: - mov ip, r4 - mov r2, r3 -_020E3868: - tst ip, #0x8000 - eorne ip, r1, ip, lsl #1 - add r2, r2, #1 - moveq ip, ip, lsl #1 - cmp r2, #8 - blo _020E3868 - mov r2, lr, lsl #1 - add lr, lr, #1 - strh ip, [r0, r2] - cmp lr, #0x100 - add r4, r4, #0x100 - blo _020E3860 - ldmia sp!, {r4, pc} - arm_func_end MATHi_CRC16InitTable - - arm_func_start MATHi_CRC16InitTableRev -MATHi_CRC16InitTableRev: ; 0x020E389C - stmdb sp!, {r3, lr} - mov lr, #0 - mov r3, lr -_020E38A8: - mov ip, lr - mov r2, r3 -_020E38B0: - tst ip, #1 - eorne ip, r1, ip, lsr #1 - add r2, r2, #1 - moveq ip, ip, lsr #1 - cmp r2, #8 - blo _020E38B0 - mov r2, lr, lsl #1 - add lr, lr, #1 - strh ip, [r0, r2] - cmp lr, #0x100 - blo _020E38A8 - ldmia sp!, {r3, pc} - arm_func_end MATHi_CRC16InitTableRev - - arm_func_start MATHi_CRC16Update -MATHi_CRC16Update: ; 0x020E38E0 - stmdb sp!, {r4, lr} - cmp r3, #0 - ldrh lr, [r1] - mov r4, #0 - bls _020E3918 -_020E38F4: - ldrb ip, [r2], #1 - add r4, r4, #1 - cmp r4, r3 - eor ip, ip, lr, lsr #8 - mov ip, ip, lsl #0x18 - mov ip, ip, lsr #0x17 - ldrh ip, [r0, ip] - eor lr, ip, lr, lsl #8 - blo _020E38F4 -_020E3918: - strh lr, [r1] - ldmia sp!, {r4, pc} - arm_func_end MATHi_CRC16Update - - arm_func_start MATHi_CRC16UpdateRev -MATHi_CRC16UpdateRev: ; 0x020E3920 - stmdb sp!, {r4, lr} - cmp r3, #0 - ldrh lr, [r1] - mov r4, #0 - bls _020E3958 -_020E3934: - ldrb ip, [r2], #1 - add r4, r4, #1 - cmp r4, r3 - eor ip, lr, ip - mov ip, ip, lsl #0x18 - mov ip, ip, lsr #0x17 - ldrh ip, [r0, ip] - eor lr, ip, lr, lsr #8 - blo _020E3934 -_020E3958: - strh lr, [r1] - ldmia sp!, {r4, pc} - arm_func_end MATHi_CRC16UpdateRev - - arm_func_start MATHi_CRC32InitTableRev -MATHi_CRC32InitTableRev: ; 0x020E3960 - stmdb sp!, {r3, lr} - mov ip, #0 - mov r2, ip -_020E396C: - mov r3, ip - mov lr, r2 -_020E3974: - tst r3, #1 - eorne r3, r1, r3, lsr #1 - add lr, lr, #1 - moveq r3, r3, lsr #1 - cmp lr, #8 - blo _020E3974 - str r3, [r0, ip, lsl #2] - add ip, ip, #1 - cmp ip, #0x100 - blo _020E396C - ldmia sp!, {r3, pc} - arm_func_end MATHi_CRC32InitTableRev - - arm_func_start MATHi_CRC32UpdateRev -MATHi_CRC32UpdateRev: ; 0x020E39A0 - stmdb sp!, {r4, lr} - cmp r3, #0 - ldr lr, [r1] - mov r4, #0 - bls _020E39D4 -_020E39B4: - ldrb ip, [r2], #1 - add r4, r4, #1 - cmp r4, r3 - eor ip, lr, ip - and ip, ip, #0xff - ldr ip, [r0, ip, lsl #2] - eor lr, ip, lr, lsr #8 - blo _020E39B4 -_020E39D4: - str lr, [r1] - ldmia sp!, {r4, pc} - arm_func_end MATHi_CRC32UpdateRev - - arm_func_start MATH_CalcCRC8 -MATH_CalcCRC8: ; 0x020E39DC - stmdb sp!, {r3, lr} - mov lr, r1 - mov ip, #0 - mov r3, r2 - add r1, sp, #0 - mov r2, lr - strb ip, [sp] - bl MATHi_CRC8Update - ldrb r0, [sp] - ldmia sp!, {r3, pc} - arm_func_end MATH_CalcCRC8 - - arm_func_start MATH_CalcCRC16 -MATH_CalcCRC16: ; 0x020E3A04 - stmdb sp!, {r3, lr} - mov lr, r1 - mov ip, #0 - mov r3, r2 - add r1, sp, #0 - mov r2, lr - strh ip, [sp] - bl MATHi_CRC16UpdateRev - ldrh r0, [sp] - ldmia sp!, {r3, pc} - arm_func_end MATH_CalcCRC16 - - arm_func_start MATH_CalcCRC16CCITT -MATH_CalcCRC16CCITT: ; 0x020E3A2C - stmdb sp!, {r3, lr} - ldr ip, _020E3A54 ; =0x0000FFFF - mov lr, r1 - mov r3, r2 - add r1, sp, #0 - mov r2, lr - strh ip, [sp] - bl MATHi_CRC16Update - ldrh r0, [sp] - ldmia sp!, {r3, pc} - .align 2, 0 -_020E3A54: .word 0x0000FFFF - arm_func_end MATH_CalcCRC16CCITT - - arm_func_start MATH_CalcCRC32 -MATH_CalcCRC32: ; 0x020E3A58 - stmdb sp!, {r3, lr} - mov lr, r1 - mvn ip, #0 - mov r3, r2 - add r1, sp, #0 - mov r2, lr - str ip, [sp] - bl MATHi_CRC32UpdateRev - ldr r0, [sp] - mvn r0, r0 - ldmia sp!, {r3, pc} - arm_func_end MATH_CalcCRC32 - - arm_func_start MATH_QSort -MATH_QSort: ; 0x020E3A84 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - cmp r1, #1 - ble _020E3D6C - ldr r4, [sp, #0x24] - mov fp, r3 - mov r8, r2 - cmp r4, #0 - bne _020E3ABC - clz r2, r1 - rsb r2, r2, #0x20 - mov r2, r2, lsl #3 - sub sp, sp, r2 - mov r4, sp - str r2, [sp, #-4]! -_020E3ABC: - sub r1, r1, #1 - mla r1, r1, r8, r0 - mov r5, r4 - str r0, [r4], #4 - str r1, [r4], #4 - clz r2, r8 - rsb r2, r2, #0x20 - str r2, [sp, #-4]! -_020E3ADC: - cmp r4, r5 - beq _020E3D3C - ldr r7, [r4, #-4] - ldr r6, [r4, #-8]! - sub r2, r7, r6 - cmp r2, r8 - bne _020E3B50 - mov r0, r6 - mov r1, r7 - blx fp - cmp r0, #0 - ble _020E3ADC - mov r0, r8 - tst r0, #3 - beq _020E3B34 -_020E3B18: - ldrb r1, [r6] - subs r0, r0, #1 - swpb r1, r1, [r7] - add r7, r7, #1 - strb r1, [r6], #1 - bne _020E3B18 - b _020E3ADC -_020E3B34: - ldr r1, [r6] - subs r0, r0, #4 - swp r1, r1, [r7] - add r7, r7, #4 - str r1, [r6], #4 - bne _020E3B34 - b _020E3ADC -_020E3B50: - ldr r3, [sp] - sub r2, r7, r6 - mov r2, r2, lsr r3 - mla r2, r2, r8, r6 - mov r3, r6 - mov r0, r8 - mov r2, r2 - tst r0, #3 - beq _020E3B90 -_020E3B74: - ldrb r1, [r2] - subs r0, r0, #1 - swpb r1, r1, [r3] - add r3, r3, #1 - strb r1, [r2], #1 - bne _020E3B74 - b _020E3BA8 -_020E3B90: - ldr r1, [r2] - subs r0, r0, #4 - swp r1, r1, [r3] - add r3, r3, #4 - str r1, [r2], #4 - bne _020E3B90 -_020E3BA8: - mov sb, r6 - mov sl, r7 - add sb, sb, r8 -_020E3BB4: - cmp sb, r7 - bge _020E3BDC - mov r1, r6 - mov r0, sb - blx fp - cmp r0, #0 - blt _020E3BD4 - b _020E3BD8 -_020E3BD4: - add sb, sb, r8 -_020E3BD8: - blt _020E3BB4 -_020E3BDC: - mov r1, r6 - mov r0, sl - blx fp - cmp r0, #0 - bgt _020E3BF4 - b _020E3BF8 -_020E3BF4: - sub sl, sl, r8 -_020E3BF8: - bgt _020E3BDC - cmp sb, sl - bge _020E3C5C - mov r2, sb - mov r3, sl - mov r0, r8 - tst r0, #3 - beq _020E3C34 -_020E3C18: - ldrb r1, [r2] - subs r0, r0, #1 - swpb r1, r1, [r3] - add r3, r3, #1 - strb r1, [r2], #1 - bne _020E3C18 - b _020E3C4C -_020E3C34: - ldr r1, [r2] - subs r0, r0, #4 - swp r1, r1, [r3] - add r3, r3, #4 - str r1, [r2], #4 - bne _020E3C34 -_020E3C4C: - add sb, sb, r8 - sub sl, sl, r8 - cmp sb, sl - ble _020E3BB4 -_020E3C5C: - mov r2, r6 - mov r3, sl - mov r0, r8 - tst r0, #3 - beq _020E3C8C -_020E3C70: - ldrb r1, [r2] - subs r0, r0, #1 - swpb r1, r1, [r3] - add r3, r3, #1 - strb r1, [r2], #1 - bne _020E3C70 - b _020E3CA4 -_020E3C8C: - ldr r1, [r2] - subs r0, r0, #4 - swp r1, r1, [r3] - add r3, r3, #4 - str r1, [r2], #4 - bne _020E3C8C -_020E3CA4: - sub r2, sl, r6 - sub r3, r7, sl - cmp r2, r3 - ble _020E3CF8 - sub r2, sl, r8 - cmp r6, r2 - blt _020E3CC4 - b _020E3CC8 -_020E3CC4: - str r6, [r4], #4 -_020E3CC8: - blt _020E3CD0 - b _020E3CD4 -_020E3CD0: - str r2, [r4], #4 -_020E3CD4: - add r2, sl, r8 - cmp r2, r7 - blt _020E3CE4 - b _020E3CE8 -_020E3CE4: - str r2, [r4], #4 -_020E3CE8: - blt _020E3CF0 - b _020E3CF4 -_020E3CF0: - str r7, [r4], #4 -_020E3CF4: - b _020E3ADC -_020E3CF8: - add r2, sl, r8 - cmp r2, r7 - blt _020E3D08 - b _020E3D0C -_020E3D08: - str r2, [r4], #4 -_020E3D0C: - blt _020E3D14 - b _020E3D18 -_020E3D14: - str r7, [r4], #4 -_020E3D18: - sub r2, sl, r8 - cmp r6, r2 - blt _020E3D28 - b _020E3D2C -_020E3D28: - str r6, [r4], #4 -_020E3D2C: - blt _020E3D34 - b _020E3D38 -_020E3D34: - str r2, [r4], #4 -_020E3D38: - b _020E3ADC -_020E3D3C: - add sp, sp, #4 - sub r4, r4, #4 - cmp r4, sp - beq _020E3D50 - b _020E3D54 -_020E3D50: - ldr r0, [sp] -_020E3D54: - beq _020E3D5C - b _020E3D60 -_020E3D5C: - add r0, r0, #4 -_020E3D60: - beq _020E3D68 - b _020E3D6C -_020E3D68: - add sp, sp, r0 -_020E3D6C: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - arm_func_end MATH_QSort - - arm_func_start STD_CopyLString -STD_CopyLString: ; 0x020E3D74 - stmdb sp!, {r4, lr} - sub ip, r2, #1 - mov r4, r1 - cmp ip, #0 - mov lr, #0 - ble _020E3DB0 -_020E3D8C: - ldrsb r3, [r4] - strb r3, [r0, lr] - ldrsb r3, [r4] - cmp r3, #0 - beq _020E3DB0 - add lr, lr, #1 - cmp lr, ip - add r4, r4, #1 - blt _020E3D8C -_020E3DB0: - sub r3, r2, #1 - cmp lr, r3 - blt _020E3DC8 - cmp r2, #0 - movne r2, #0 - strneb r2, [r0, lr] -_020E3DC8: - mov r0, r1 - bl STD_GetStringLength - ldmia sp!, {r4, pc} - arm_func_end STD_CopyLString - - arm_func_start STD_GetStringLength -STD_GetStringLength: ; 0x020E3DD4 - ldrsb r1, [r0] - mov r2, #0 - cmp r1, #0 - beq _020E3DF4 -_020E3DE4: - add r2, r2, #1 - ldrsb r1, [r0, r2] - cmp r1, #0 - bne _020E3DE4 -_020E3DF4: - mov r0, r2 - bx lr - arm_func_end STD_GetStringLength - - arm_func_start STD_CompareString -STD_CompareString: ; 0x020E3DFC - b _020E3E08 -_020E3E00: - add r0, r0, #1 - add r1, r1, #1 -_020E3E08: - ldrsb r3, [r1] - ldrsb r2, [r0] - cmp r2, r3 - bne _020E3E20 - cmp r2, #0 - bne _020E3E00 -_020E3E20: - sub r0, r2, r3 - bx lr - arm_func_end STD_CompareString - - arm_func_start STD_CompareNString -STD_CompareNString: ; 0x020E3E28 - stmdb sp!, {r3, lr} - cmp r2, #0 - beq _020E3E60 - cmp r2, #0 - mov lr, #0 - ble _020E3E60 -_020E3E40: - ldrb ip, [r0, lr] - ldrb r3, [r1, lr] - cmp ip, r3 - subne r0, ip, r3 - ldmneia sp!, {r3, pc} - add lr, lr, #1 - cmp lr, r2 - blt _020E3E40 -_020E3E60: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end STD_CompareNString - - arm_func_start string_put_char -string_put_char: ; 0x020E3E68 - ldr r2, [r0] - cmp r2, #0 - beq _020E3E88 - ldr r2, [r0, #4] - strb r1, [r2] - ldr r1, [r0] - sub r1, r1, #1 - str r1, [r0] -_020E3E88: - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - bx lr - arm_func_end string_put_char - - arm_func_start string_fill_char -string_fill_char: ; 0x020E3E98 - stmdb sp!, {r3, lr} - cmp r2, #0 - ldmleia sp!, {r3, pc} - ldr lr, [r0] - mov ip, #0 - cmp lr, r2 - movhi lr, r2 - cmp lr, #0 - bls _020E3ED0 -_020E3EBC: - ldr r3, [r0, #4] - strb r1, [r3, ip] - add ip, ip, #1 - cmp ip, lr - blo _020E3EBC -_020E3ED0: - ldr r1, [r0] - sub r1, r1, lr - str r1, [r0] - ldr r1, [r0, #4] - add r1, r1, r2 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - arm_func_end string_fill_char - - arm_func_start string_put_string -string_put_string: ; 0x020E3EEC - stmdb sp!, {r4, lr} - cmp r2, #0 - ldmleia sp!, {r4, pc} - ldr r4, [r0] - mov lr, #0 - cmp r4, r2 - movhi r4, r2 - cmp r4, #0 - bls _020E3F28 -_020E3F10: - ldrsb ip, [r1, lr] - ldr r3, [r0, #4] - strb ip, [r3, lr] - add lr, lr, #1 - cmp lr, r4 - blo _020E3F10 -_020E3F28: - ldr r1, [r0] - sub r1, r1, r4 - str r1, [r0] - ldr r1, [r0, #4] - add r1, r1, r2 - str r1, [r0, #4] - ldmia sp!, {r4, pc} - arm_func_end string_put_string - - arm_func_start STD_TVSNPrintf -STD_TVSNPrintf: ; 0x020E3F44 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - mov sb, r2 - str r1, [sp, #0xc] - str r0, [sp, #0x14] - str r0, [sp, #0x10] - ldrsb r0, [sb] - str r1, [sp] - mov fp, r3 - cmp r0, #0 - beq _020E4770 -_020E3F70: - ldrsb r1, [sb] - and r0, r1, #0xff - eor r0, r0, #0x20 - sub r0, r0, #0xa1 - cmp r0, #0x3c - bhs _020E3FAC - add r0, sp, #0xc - bl string_put_char - ldrsb r1, [sb, #1]! - cmp r1, #0 - beq _020E4764 - add r0, sp, #0xc - add sb, sb, #1 - bl string_put_char - b _020E4764 -_020E3FAC: - cmp r1, #0x25 - beq _020E3FC4 - add r0, sp, #0xc - add sb, sb, #1 - bl string_put_char - b _020E4764 -_020E3FC4: - mov r5, #0 - mov sl, r5 - mov r2, sb - sub r6, r5, #1 - mov r0, #0xa - mov r3, #0x57 -_020E3FDC: - ldrsb r4, [sb, #1]! - cmp r4, #0x20 - bgt _020E3FF0 - beq _020E402C - b _020E4044 -_020E3FF0: - cmp r4, #0x30 - bgt _020E4044 - cmp r4, #0x2b - blt _020E4044 - beq _020E4018 - cmp r4, #0x2d - beq _020E4034 - cmp r4, #0x30 - beq _020E403C - b _020E4044 -_020E4018: - ldrsb r1, [sb, #-1] - cmp r1, #0x20 - bne _020E4044 - orr r5, r5, #2 - b _020E3FDC -_020E402C: - orr r5, r5, #1 - b _020E3FDC -_020E4034: - orr r5, r5, #8 - b _020E3FDC -_020E403C: - orr r5, r5, #0x10 - b _020E3FDC -_020E4044: - cmp r4, #0x2a - bne _020E4068 - add fp, fp, #4 - ldr sl, [fp, #-4] - add sb, sb, #1 - cmp sl, #0 - rsblt sl, sl, #0 - orrlt r5, r5, #8 - b _020E4090 -_020E4068: - mov r1, #0xa - b _020E407C -_020E4070: - ldrsb r4, [sb], #1 - mla r4, sl, r1, r4 - sub sl, r4, #0x30 -_020E407C: - ldrsb r4, [sb] - cmp r4, #0x30 - blt _020E4090 - cmp r4, #0x39 - ble _020E4070 -_020E4090: - ldrsb r1, [sb] - cmp r1, #0x2e - bne _020E40EC - ldrsb r1, [sb, #1]! - mov r6, #0 - cmp r1, #0x2a - bne _020E40C4 - add fp, fp, #4 - ldr r6, [fp, #-4] - add sb, sb, #1 - cmp r6, #0 - mvnlt r6, #0 - b _020E40EC -_020E40C4: - mov r1, #0xa - b _020E40D8 -_020E40CC: - ldrsb r4, [sb], #1 - mla r4, r6, r1, r4 - sub r6, r4, #0x30 -_020E40D8: - ldrsb r4, [sb] - cmp r4, #0x30 - blt _020E40EC - cmp r4, #0x39 - ble _020E40CC -_020E40EC: - ldrsb r1, [sb] - cmp r1, #0x68 - beq _020E4104 - cmp r1, #0x6c - beq _020E411C - b _020E4130 -_020E4104: - ldrsb r1, [sb, #1]! - cmp r1, #0x68 - orrne r5, r5, #0x40 - addeq sb, sb, #1 - orreq r5, r5, #0x100 - b _020E4130 -_020E411C: - ldrsb r1, [sb, #1]! - cmp r1, #0x6c - orrne r5, r5, #0x20 - addeq sb, sb, #1 - orreq r5, r5, #0x80 -_020E4130: - ldrsb r1, [sb] - cmp r1, #0x69 - bgt _020E4174 - cmp r1, #0x63 - blt _020E4158 - beq _020E41E4 - cmp r1, #0x64 - cmpne r1, #0x69 - beq _020E439C - b _020E4380 -_020E4158: - cmp r1, #0x25 - bgt _020E4168 - beq _020E4364 - b _020E4380 -_020E4168: - cmp r1, #0x58 - beq _020E41D0 - b _020E4380 -_020E4174: - cmp r1, #0x6e - bgt _020E4184 - beq _020E430C - b _020E4380 -_020E4184: - sub r1, r1, #0x6f - cmp r1, #9 - addls pc, pc, r1, lsl #2 - b _020E4380 -_020E4194: ; jump table - b _020E41BC ; case 0 - b _020E41D8 ; case 1 - b _020E4380 ; case 2 - b _020E4380 ; case 3 - b _020E4258 ; case 4 - b _020E4380 ; case 5 - b _020E41C8 ; case 6 - b _020E4380 ; case 7 - b _020E4380 ; case 8 - b _020E4394 ; case 9 -_020E41BC: - orr r5, r5, #0x1000 - mov r0, #8 - b _020E439C -_020E41C8: - orr r5, r5, #0x1000 - b _020E439C -_020E41D0: - mov r3, #0x37 - b _020E4394 -_020E41D8: - orr r5, r5, #4 - mov r6, #8 - b _020E4394 -_020E41E4: - cmp r6, #0 - bge _020E4380 - add fp, fp, #4 - tst r5, #8 - ldr r4, [fp, #-4] - beq _020E4220 - mov r1, r4, lsl #0x18 - add r0, sp, #0xc - mov r1, r1, asr #0x18 - bl string_put_char - add r0, sp, #0xc - sub r2, sl, #1 - mov r1, #0x20 - bl string_fill_char - b _020E4250 -_020E4220: - tst r5, #0x10 - movne r0, #0x30 - moveq r0, #0x20 - mov r1, r0, lsl #0x18 - add r0, sp, #0xc - mov r1, r1, asr #0x18 - sub r2, sl, #1 - bl string_fill_char - mov r1, r4, lsl #0x18 - add r0, sp, #0xc - mov r1, r1, asr #0x18 - bl string_put_char -_020E4250: - add sb, sb, #1 - b _020E4764 -_020E4258: - add fp, fp, #4 - cmp r6, #0 - ldr r7, [fp, #-4] - mov r4, #0 - bge _020E4290 - ldrsb r0, [r7] - cmp r0, #0 - beq _020E42A4 -_020E4278: - add r4, r4, #1 - ldrsb r0, [r7, r4] - cmp r0, #0 - bne _020E4278 - b _020E42A4 -_020E428C: - add r4, r4, #1 -_020E4290: - cmp r4, r6 - bge _020E42A4 - ldrsb r0, [r7, r4] - cmp r0, #0 - bne _020E428C -_020E42A4: - tst r5, #8 - sub sl, sl, r4 - beq _020E42D4 - add r0, sp, #0xc - mov r1, r7 - mov r2, r4 - bl string_put_string - add r0, sp, #0xc - mov r2, sl - mov r1, #0x20 - bl string_fill_char - b _020E4304 -_020E42D4: - tst r5, #0x10 - movne r0, #0x30 - moveq r0, #0x20 - mov r1, r0, lsl #0x18 - add r0, sp, #0xc - mov r2, sl - mov r1, r1, asr #0x18 - bl string_fill_char - add r0, sp, #0xc - mov r1, r7 - mov r2, r4 - bl string_put_string -_020E4304: - add sb, sb, #1 - b _020E4764 -_020E430C: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - tst r5, #0x100 - sub r2, r1, r0 - bne _020E435C - tst r5, #0x40 - beq _020E4338 - add fp, fp, #4 - ldr r0, [fp, #-4] - strh r2, [r0] - b _020E435C -_020E4338: - add fp, fp, #4 - tst r5, #0x80 - ldreq r0, [fp, #-4] - streq r2, [r0] - beq _020E435C - ldr r0, [fp, #-4] - mov r1, r2, asr #0x1f - str r2, [r0] - str r1, [r0, #4] -_020E435C: - add sb, sb, #1 - b _020E4764 -_020E4364: - add r0, r2, #1 - cmp r0, sb - bne _020E4380 - add r0, sp, #0xc - add sb, sb, #1 - bl string_put_char - b _020E4764 -_020E4380: - mov r1, r2 - add r0, sp, #0xc - sub r2, sb, r2 - bl string_put_string - b _020E4764 -_020E4394: - orr r5, r5, #0x1000 - mov r0, #0x10 -_020E439C: - tst r5, #8 - bicne r5, r5, #0x10 - cmp r6, #0 - bicge r5, r5, #0x10 - movlt r6, #1 - mov r4, #0 - tst r5, #0x1000 - beq _020E445C - tst r5, #0x100 - beq _020E43D4 - add fp, fp, #4 - ldrb r7, [fp, #-4] - mov r1, #0 - b _020E440C -_020E43D4: - tst r5, #0x40 - beq _020E43EC - add fp, fp, #4 - ldrh r7, [fp, #-4] - mov r1, #0 - b _020E440C -_020E43EC: - tst r5, #0x80 - addeq fp, fp, #4 - ldreq r7, [fp, #-4] - moveq r1, #0 - beq _020E440C - add fp, fp, #8 - ldr r7, [fp, #-8] - ldr r1, [fp, #-4] -_020E440C: - bic r5, r5, #3 - tst r5, #4 - beq _020E451C - cmp r0, #0x10 - bne _020E4444 - cmp r1, #0 - cmpeq r7, #0 - beq _020E451C - add r4, r3, #0x21 - mov r2, #0x30 - strb r4, [sp, #8] - strb r2, [sp, #9] - mov r4, #2 - b _020E451C -_020E4444: - cmp r0, #8 - bne _020E451C - mov r2, #0x30 - strb r2, [sp, #8] - mov r4, #1 - b _020E451C -_020E445C: - tst r5, #0x100 - beq _020E4474 - add fp, fp, #4 - ldrsb r7, [fp, #-4] - mov r1, r7, asr #0x1f - b _020E44AC -_020E4474: - tst r5, #0x40 - beq _020E448C - add fp, fp, #4 - ldrsh r7, [fp, #-4] - mov r1, r7, asr #0x1f - b _020E44AC -_020E448C: - tst r5, #0x80 - addeq fp, fp, #4 - ldreq r7, [fp, #-4] - moveq r1, r7, asr #0x1f - beq _020E44AC - add fp, fp, #8 - ldr r7, [fp, #-8] - ldr r1, [fp, #-4] -_020E44AC: - mov ip, #0 - and r2, ip, #0 - and r8, r1, #0x80000000 - cmp r2, #0 - cmpeq r8, #0 - beq _020E44E4 - mvn r4, r7 - mov r2, #0x2d - mvn r1, r1 - strb r2, [sp, #8] - adds r7, r4, #1 - adc r1, r1, ip - mov r4, #1 - b _020E451C -_020E44E4: - cmp r1, ip - cmpeq r7, ip - cmpeq r6, #0 - beq _020E451C - tst r5, #2 - beq _020E450C - mov r2, #0x2b - strb r2, [sp, #8] - mov r4, #1 - b _020E451C -_020E450C: - tst r5, #1 - movne r2, #0x20 - strneb r2, [sp, #8] - movne r4, #1 -_020E451C: - cmp r0, #8 - mov r8, #0 - beq _020E453C - cmp r0, #0xa - beq _020E4588 - cmp r0, #0x10 - beq _020E4620 - b _020E466C -_020E453C: - cmp r1, r8 - cmpeq r7, r8 - beq _020E466C - add r2, sp, #0x18 - mov r0, r8 - mov lr, #7 - mov ip, r8 -_020E4558: - and r3, r7, lr - add r3, r3, #0x30 - strb r3, [r2, r8] - mov r3, r1, lsr #3 - cmp r3, r0 - mov r7, r7, lsr #3 - orr r7, r7, r1, lsl #29 - mov r1, r3 - cmpeq r7, ip - add r8, r8, #1 - bne _020E4558 - b _020E466C -_020E4588: - mov r0, r8 - cmp r0, r8 - cmpeq r1, r8 - bne _020E45D4 - cmp r7, #0 - beq _020E466C - ldr ip, _020E47BC ; =0xCCCCCCCD - add r3, sp, #0x18 - mov r2, #0xa -_020E45AC: - umull r1, r0, r7, ip - movs r0, r0, lsr #3 - mul r1, r0, r2 - sub r1, r7, r1 - mov r7, r0 - add r0, r1, #0x30 - strb r0, [r3, r8] - add r8, r8, #1 - bne _020E45AC - b _020E466C -_020E45D4: - cmp r1, r8 - cmpeq r7, r8 - beq _020E466C -_020E45E0: - mov r0, r7 - mov r2, #0xa - mov r3, #0 - bl _ll_udiv - mov r2, #0xa - umull r3, r2, r0, r2 - subs r2, r7, r3 - add r3, r2, #0x30 - add r2, sp, #0x18 - strb r3, [r2, r8] - cmp r1, #0 - cmpeq r0, #0 - mov r7, r0 - add r8, r8, #1 - bne _020E45E0 - b _020E466C -_020E4620: - cmp r1, r8 - cmpeq r7, r8 - beq _020E466C - add ip, sp, #0x18 - mov lr, #0xf -_020E4634: - and r2, r7, lr - mov r7, r7, lsr #4 - mov r0, r1, lsr #4 - orr r7, r7, r1, lsl #28 - cmp r2, #0xa - mov r1, r0 - addlt r0, r2, #0x30 - addge r0, r2, r3 - strb r0, [ip, r8] - mov r0, #0 - cmp r1, r0 - cmpeq r7, r0 - add r8, r8, #1 - bne _020E4634 -_020E466C: - cmp r4, #0 - ble _020E4694 - ldrsb r0, [sp, #8] - cmp r0, #0x30 - bne _020E4694 - add r0, sp, #0x18 - mov r1, #0x30 - strb r1, [r0, r8] - add r8, r8, #1 - mov r4, #0 -_020E4694: - tst r5, #0x10 - sub r6, r6, r8 - beq _020E46B0 - sub r0, sl, r8 - sub r0, r0, r4 - cmp r6, r0 - movlt r6, r0 -_020E46B0: - cmp r6, #0 - subgt sl, sl, r6 - add r0, r4, r8 - sub sl, sl, r0 - ands r0, r5, #8 - str r0, [sp, #4] - bne _020E46DC - add r0, sp, #0xc - mov r2, sl - mov r1, #0x20 - bl string_fill_char -_020E46DC: - cmp r4, #0 - ble _020E4708 - add r0, sp, #8 - add r5, r0, r4 - add r7, sp, #0xc -_020E46F0: - ldrsb r1, [r5, #-1]! - mov r0, r7 - sub r4, r4, #1 - bl string_put_char - cmp r4, #0 - bgt _020E46F0 -_020E4708: - add r0, sp, #0xc - mov r2, r6 - mov r1, #0x30 - bl string_fill_char - cmp r8, #0 - ble _020E4744 - add r0, sp, #0x18 - add r5, r0, r8 - add r4, sp, #0xc -_020E472C: - ldrsb r1, [r5, #-1]! - mov r0, r4 - sub r8, r8, #1 - bl string_put_char - cmp r8, #0 - bgt _020E472C -_020E4744: - ldr r0, [sp, #4] - cmp r0, #0 - beq _020E4760 - add r0, sp, #0xc - mov r2, sl - mov r1, #0x20 - bl string_fill_char -_020E4760: - add sb, sb, #1 -_020E4764: - ldrsb r0, [sb] - cmp r0, #0 - bne _020E3F70 -_020E4770: - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _020E478C - ldr r0, [sp, #0x10] - mov r1, #0 - strb r1, [r0] - b _020E47A8 -_020E478C: - ldr r0, [sp] - cmp r0, #0 - beq _020E47A8 - ldr r1, [sp, #0x14] - mov r2, #0 - add r0, r1, r0 - strb r2, [r0, #-1] -_020E47A8: - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - sub r0, r1, r0 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020E47BC: .word 0xCCCCCCCD - arm_func_end STD_TVSNPrintf - - .rodata - -_0210D650: - .byte 0x00, 0x80, 0x2E, 0xFD, 0x2F, 0xFD, 0x75, 0xFD, 0xA7, 0xFD, 0xCE, 0xFD, 0xEE, 0xFD, 0x09, 0xFE - .byte 0x20, 0xFE, 0x34, 0xFE, 0x46, 0xFE, 0x57, 0xFE, 0x66, 0xFE, 0x74, 0xFE, 0x81, 0xFE, 0x8D, 0xFE - .byte 0x98, 0xFE, 0xA3, 0xFE, 0xAD, 0xFE, 0xB6, 0xFE, 0xBF, 0xFE, 0xC7, 0xFE, 0xCF, 0xFE, 0xD7, 0xFE - .byte 0xDF, 0xFE, 0xE6, 0xFE, 0xEC, 0xFE, 0xF3, 0xFE, 0xF9, 0xFE, 0xFF, 0xFE, 0x05, 0xFF, 0x0B, 0xFF - .byte 0x11, 0xFF, 0x16, 0xFF, 0x1B, 0xFF, 0x20, 0xFF, 0x25, 0xFF, 0x2A, 0xFF, 0x2E, 0xFF, 0x33, 0xFF - .byte 0x37, 0xFF, 0x3C, 0xFF, 0x40, 0xFF, 0x44, 0xFF, 0x48, 0xFF, 0x4C, 0xFF, 0x50, 0xFF, 0x53, 0xFF - .byte 0x57, 0xFF, 0x5B, 0xFF, 0x5E, 0xFF, 0x62, 0xFF, 0x65, 0xFF, 0x68, 0xFF, 0x6B, 0xFF, 0x6F, 0xFF - .byte 0x72, 0xFF, 0x75, 0xFF, 0x78, 0xFF, 0x7B, 0xFF, 0x7E, 0xFF, 0x81, 0xFF, 0x83, 0xFF, 0x86, 0xFF - .byte 0x89, 0xFF, 0x8C, 0xFF, 0x8E, 0xFF, 0x91, 0xFF, 0x93, 0xFF, 0x96, 0xFF, 0x99, 0xFF, 0x9B, 0xFF - .byte 0x9D, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA5, 0xFF, 0xA7, 0xFF, 0xA9, 0xFF, 0xAB, 0xFF, 0xAE, 0xFF - .byte 0xB0, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB8, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBE, 0xFF - .byte 0xC0, 0xFF, 0xC2, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCC, 0xFF, 0xCE, 0xFF - .byte 0xCF, 0xFF, 0xD1, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD8, 0xFF, 0xDA, 0xFF, 0xDC, 0xFF - .byte 0xDD, 0xFF, 0xDF, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE7, 0xFF, 0xE9, 0xFF - .byte 0xEA, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF, 0xF5, 0xFF - .byte 0xF6, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00 - .public _0210D750 -_0210D750: - .byte 0x00, 0x80, 0x5B, 0xFE, 0x97, 0xFE, 0xBB, 0xFE, 0xD4, 0xFE, 0xE7, 0xFE, 0xF7, 0xFE, 0x04, 0xFF - .byte 0x10, 0xFF, 0x1A, 0xFF, 0x23, 0xFF, 0x2C, 0xFF, 0x33, 0xFF, 0x3A, 0xFF, 0x40, 0xFF, 0x46, 0xFF - .byte 0x4C, 0xFF, 0x51, 0xFF, 0x56, 0xFF, 0x5B, 0xFF, 0x5F, 0xFF, 0x64, 0xFF, 0x68, 0xFF, 0x6C, 0xFF - .byte 0x6F, 0xFF, 0x73, 0xFF, 0x76, 0xFF, 0x7A, 0xFF, 0x7D, 0xFF, 0x80, 0xFF, 0x83, 0xFF, 0x86, 0xFF - .byte 0x88, 0xFF, 0x8B, 0xFF, 0x8E, 0xFF, 0x90, 0xFF, 0x92, 0xFF, 0x95, 0xFF, 0x97, 0xFF, 0x99, 0xFF - .byte 0x9C, 0xFF, 0x9E, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA4, 0xFF, 0xA6, 0xFF, 0xA8, 0xFF, 0xAA, 0xFF - .byte 0xAB, 0xFF, 0xAD, 0xFF, 0xAF, 0xFF, 0xB1, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB7, 0xFF - .byte 0xB9, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBD, 0xFF, 0xBF, 0xFF, 0xC0, 0xFF, 0xC2, 0xFF, 0xC3, 0xFF - .byte 0xC4, 0xFF, 0xC6, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCB, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF - .byte 0xCF, 0xFF, 0xD0, 0xFF, 0xD1, 0xFF, 0xD2, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD7, 0xFF - .byte 0xD8, 0xFF, 0xD9, 0xFF, 0xDA, 0xFF, 0xDB, 0xFF, 0xDC, 0xFF, 0xDD, 0xFF, 0xDE, 0xFF, 0xDF, 0xFF - .byte 0xE0, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE3, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE6, 0xFF, 0xE7, 0xFF - .byte 0xE8, 0xFF, 0xE9, 0xFF, 0xE9, 0xFF, 0xEA, 0xFF, 0xEB, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEE, 0xFF - .byte 0xEF, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF1, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF, 0xF4, 0xFF, 0xF4, 0xFF - .byte 0xF5, 0xFF, 0xF6, 0xFF, 0xF7, 0xFF, 0xF7, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFA, 0xFF - .byte 0xFB, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00, 0x3B, 0x00, 0x76, 0x00, 0xB2, 0x00, 0xED, 0x00, 0x28, 0x01, 0x64, 0x01, 0x9F, 0x01 - .byte 0xDB, 0x01, 0x17, 0x02, 0x52, 0x02, 0x8E, 0x02, 0xCA, 0x02, 0x05, 0x03, 0x41, 0x03, 0x7D, 0x03 - .byte 0xB9, 0x03, 0xF5, 0x03, 0x31, 0x04, 0x6E, 0x04, 0xAA, 0x04, 0xE6, 0x04, 0x22, 0x05, 0x5F, 0x05 - .byte 0x9B, 0x05, 0xD8, 0x05, 0x14, 0x06, 0x51, 0x06, 0x8D, 0x06, 0xCA, 0x06, 0x07, 0x07, 0x43, 0x07 - .byte 0x80, 0x07, 0xBD, 0x07, 0xFA, 0x07, 0x37, 0x08, 0x74, 0x08, 0xB1, 0x08, 0xEF, 0x08, 0x2C, 0x09 - .byte 0x69, 0x09, 0xA7, 0x09, 0xE4, 0x09, 0x21, 0x0A, 0x5F, 0x0A, 0x9C, 0x0A, 0xDA, 0x0A, 0x18, 0x0B - .byte 0x56, 0x0B, 0x93, 0x0B, 0xD1, 0x0B, 0x0F, 0x0C, 0x4D, 0x0C, 0x8B, 0x0C, 0xC9, 0x0C, 0x07, 0x0D - .byte 0x45, 0x0D, 0x84, 0x0D, 0xC2, 0x0D, 0x00, 0x0E, 0x3F, 0x0E, 0x7D, 0x0E, 0xBC, 0x0E, 0xFA, 0x0E - .byte 0x39, 0x0F, 0x78, 0x0F, 0xB6, 0x0F, 0xF5, 0x0F, 0x34, 0x10, 0x73, 0x10, 0xB2, 0x10, 0xF1, 0x10 - .byte 0x30, 0x11, 0x6F, 0x11, 0xAE, 0x11, 0xEE, 0x11, 0x2D, 0x12, 0x6C, 0x12, 0xAC, 0x12, 0xEB, 0x12 - .byte 0x2B, 0x13, 0x6B, 0x13, 0xAA, 0x13, 0xEA, 0x13, 0x2A, 0x14, 0x6A, 0x14, 0xA9, 0x14, 0xE9, 0x14 - .byte 0x29, 0x15, 0x69, 0x15, 0xAA, 0x15, 0xEA, 0x15, 0x2A, 0x16, 0x6A, 0x16, 0xAB, 0x16, 0xEB, 0x16 - .byte 0x2C, 0x17, 0x6C, 0x17, 0xAD, 0x17, 0xED, 0x17, 0x2E, 0x18, 0x6F, 0x18, 0xB0, 0x18, 0xF0, 0x18 - .byte 0x31, 0x19, 0x72, 0x19, 0xB3, 0x19, 0xF5, 0x19, 0x36, 0x1A, 0x77, 0x1A, 0xB8, 0x1A, 0xFA, 0x1A - .byte 0x3B, 0x1B, 0x7D, 0x1B, 0xBE, 0x1B, 0x00, 0x1C, 0x41, 0x1C, 0x83, 0x1C, 0xC5, 0x1C, 0x07, 0x1D - .byte 0x48, 0x1D, 0x8A, 0x1D, 0xCC, 0x1D, 0x0E, 0x1E, 0x51, 0x1E, 0x93, 0x1E, 0xD5, 0x1E, 0x17, 0x1F - .byte 0x5A, 0x1F, 0x9C, 0x1F, 0xDF, 0x1F, 0x21, 0x20, 0x64, 0x20, 0xA6, 0x20, 0xE9, 0x20, 0x2C, 0x21 - .byte 0x6F, 0x21, 0xB2, 0x21, 0xF5, 0x21, 0x38, 0x22, 0x7B, 0x22, 0xBE, 0x22, 0x01, 0x23, 0x44, 0x23 - .byte 0x88, 0x23, 0xCB, 0x23, 0x0E, 0x24, 0x52, 0x24, 0x96, 0x24, 0xD9, 0x24, 0x1D, 0x25, 0x61, 0x25 - .byte 0xA4, 0x25, 0xE8, 0x25, 0x2C, 0x26, 0x70, 0x26, 0xB4, 0x26, 0xF8, 0x26, 0x3D, 0x27, 0x81, 0x27 - .byte 0xC5, 0x27, 0x0A, 0x28, 0x4E, 0x28, 0x92, 0x28, 0xD7, 0x28, 0x1C, 0x29, 0x60, 0x29, 0xA5, 0x29 - .byte 0xEA, 0x29, 0x2F, 0x2A, 0x74, 0x2A, 0xB9, 0x2A, 0xFE, 0x2A, 0x43, 0x2B, 0x88, 0x2B, 0xCD, 0x2B - .byte 0x13, 0x2C, 0x58, 0x2C, 0x9D, 0x2C, 0xE3, 0x2C, 0x28, 0x2D, 0x6E, 0x2D, 0xB4, 0x2D, 0xF9, 0x2D - .byte 0x3F, 0x2E, 0x85, 0x2E, 0xCB, 0x2E, 0x11, 0x2F, 0x57, 0x2F, 0x9D, 0x2F, 0xE3, 0x2F, 0x2A, 0x30 - .byte 0x70, 0x30, 0xB6, 0x30, 0xFD, 0x30, 0x43, 0x31, 0x8A, 0x31, 0xD0, 0x31, 0x17, 0x32, 0x5E, 0x32 - .byte 0xA5, 0x32, 0xEC, 0x32, 0x32, 0x33, 0x79, 0x33, 0xC1, 0x33, 0x08, 0x34, 0x4F, 0x34, 0x96, 0x34 - .byte 0xDD, 0x34, 0x25, 0x35, 0x6C, 0x35, 0xB4, 0x35, 0xFB, 0x35, 0x43, 0x36, 0x8B, 0x36, 0xD3, 0x36 - .byte 0x1A, 0x37, 0x62, 0x37, 0xAA, 0x37, 0xF2, 0x37, 0x3A, 0x38, 0x83, 0x38, 0xCB, 0x38, 0x13, 0x39 - .byte 0x5C, 0x39, 0xA4, 0x39, 0xED, 0x39, 0x35, 0x3A, 0x7E, 0x3A, 0xC6, 0x3A, 0x0F, 0x3B, 0x58, 0x3B - .byte 0xA1, 0x3B, 0xEA, 0x3B, 0x33, 0x3C, 0x7C, 0x3C, 0xC5, 0x3C, 0x0E, 0x3D, 0x58, 0x3D, 0xA1, 0x3D - .byte 0xEA, 0x3D, 0x34, 0x3E, 0x7D, 0x3E, 0xC7, 0x3E, 0x11, 0x3F, 0x5A, 0x3F, 0xA4, 0x3F, 0xEE, 0x3F - .byte 0x38, 0x40, 0x82, 0x40, 0xCC, 0x40, 0x16, 0x41, 0x61, 0x41, 0xAB, 0x41, 0xF5, 0x41, 0x40, 0x42 - .byte 0x8A, 0x42, 0xD5, 0x42, 0x1F, 0x43, 0x6A, 0x43, 0xB5, 0x43, 0x00, 0x44, 0x4B, 0x44, 0x95, 0x44 - .byte 0xE1, 0x44, 0x2C, 0x45, 0x77, 0x45, 0xC2, 0x45, 0x0D, 0x46, 0x59, 0x46, 0xA4, 0x46, 0xF0, 0x46 - .byte 0x3B, 0x47, 0x87, 0x47, 0xD3, 0x47, 0x1E, 0x48, 0x6A, 0x48, 0xB6, 0x48, 0x02, 0x49, 0x4E, 0x49 - .byte 0x9A, 0x49, 0xE6, 0x49, 0x33, 0x4A, 0x7F, 0x4A, 0xCB, 0x4A, 0x18, 0x4B, 0x64, 0x4B, 0xB1, 0x4B - .byte 0xFE, 0x4B, 0x4A, 0x4C, 0x97, 0x4C, 0xE4, 0x4C, 0x31, 0x4D, 0x7E, 0x4D, 0xCB, 0x4D, 0x18, 0x4E - .byte 0x66, 0x4E, 0xB3, 0x4E, 0x00, 0x4F, 0x4E, 0x4F, 0x9B, 0x4F, 0xE9, 0x4F, 0x36, 0x50, 0x84, 0x50 - .byte 0xD2, 0x50, 0x20, 0x51, 0x6E, 0x51, 0xBC, 0x51, 0x0A, 0x52, 0x58, 0x52, 0xA6, 0x52, 0xF4, 0x52 - .byte 0x43, 0x53, 0x91, 0x53, 0xE0, 0x53, 0x2E, 0x54, 0x7D, 0x54, 0xCC, 0x54, 0x1A, 0x55, 0x69, 0x55 - .byte 0xB8, 0x55, 0x07, 0x56, 0x56, 0x56, 0xA5, 0x56, 0xF4, 0x56, 0x44, 0x57, 0x93, 0x57, 0xE2, 0x57 - .byte 0x32, 0x58, 0x82, 0x58, 0xD1, 0x58, 0x21, 0x59, 0x71, 0x59, 0xC1, 0x59, 0x10, 0x5A, 0x60, 0x5A - .byte 0xB0, 0x5A, 0x01, 0x5B, 0x51, 0x5B, 0xA1, 0x5B, 0xF1, 0x5B, 0x42, 0x5C, 0x92, 0x5C, 0xE3, 0x5C - .byte 0x34, 0x5D, 0x84, 0x5D, 0xD5, 0x5D, 0x26, 0x5E, 0x77, 0x5E, 0xC8, 0x5E, 0x19, 0x5F, 0x6A, 0x5F - .byte 0xBB, 0x5F, 0x0D, 0x60, 0x5E, 0x60, 0xB0, 0x60, 0x01, 0x61, 0x53, 0x61, 0xA4, 0x61, 0xF6, 0x61 - .byte 0x48, 0x62, 0x9A, 0x62, 0xEC, 0x62, 0x3E, 0x63, 0x90, 0x63, 0xE2, 0x63, 0x34, 0x64, 0x87, 0x64 - .byte 0xD9, 0x64, 0x2C, 0x65, 0x7E, 0x65, 0xD1, 0x65, 0x24, 0x66, 0x76, 0x66, 0xC9, 0x66, 0x1C, 0x67 - .byte 0x6F, 0x67, 0xC2, 0x67, 0x15, 0x68, 0x69, 0x68, 0xBC, 0x68, 0x0F, 0x69, 0x63, 0x69, 0xB6, 0x69 - .byte 0x0A, 0x6A, 0x5E, 0x6A, 0xB1, 0x6A, 0x05, 0x6B, 0x59, 0x6B, 0xAD, 0x6B, 0x01, 0x6C, 0x55, 0x6C - .byte 0xAA, 0x6C, 0xFE, 0x6C, 0x52, 0x6D, 0xA7, 0x6D, 0xFB, 0x6D, 0x50, 0x6E, 0xA4, 0x6E, 0xF9, 0x6E - .byte 0x4E, 0x6F, 0xA3, 0x6F, 0xF8, 0x6F, 0x4D, 0x70, 0xA2, 0x70, 0xF7, 0x70, 0x4D, 0x71, 0xA2, 0x71 - .byte 0xF7, 0x71, 0x4D, 0x72, 0xA2, 0x72, 0xF8, 0x72, 0x4E, 0x73, 0xA4, 0x73, 0xFA, 0x73, 0x50, 0x74 - .byte 0xA6, 0x74, 0xFC, 0x74, 0x52, 0x75, 0xA8, 0x75, 0xFF, 0x75, 0x55, 0x76, 0xAC, 0x76, 0x02, 0x77 - .byte 0x59, 0x77, 0xB0, 0x77, 0x07, 0x78, 0x5E, 0x78, 0xB4, 0x78, 0x0C, 0x79, 0x63, 0x79, 0xBA, 0x79 - .byte 0x11, 0x7A, 0x69, 0x7A, 0xC0, 0x7A, 0x18, 0x7B, 0x6F, 0x7B, 0xC7, 0x7B, 0x1F, 0x7C, 0x77, 0x7C - .byte 0xCF, 0x7C, 0x27, 0x7D, 0x7F, 0x7D, 0xD7, 0x7D, 0x2F, 0x7E, 0x88, 0x7E, 0xE0, 0x7E, 0x38, 0x7F - .byte 0x91, 0x7F, 0xEA, 0x7F, 0x42, 0x80, 0x9B, 0x80, 0xF4, 0x80, 0x4D, 0x81, 0xA6, 0x81, 0xFF, 0x81 - .byte 0x59, 0x82, 0xB2, 0x82, 0x0B, 0x83, 0x65, 0x83, 0xBE, 0x83, 0x18, 0x84, 0x72, 0x84, 0xCB, 0x84 - .byte 0x25, 0x85, 0x7F, 0x85, 0xD9, 0x85, 0x33, 0x86, 0x8E, 0x86, 0xE8, 0x86, 0x42, 0x87, 0x9D, 0x87 - .byte 0xF7, 0x87, 0x52, 0x88, 0xAC, 0x88, 0x07, 0x89, 0x62, 0x89, 0xBD, 0x89, 0x18, 0x8A, 0x73, 0x8A - .byte 0xCE, 0x8A, 0x2A, 0x8B, 0x85, 0x8B, 0xE0, 0x8B, 0x3C, 0x8C, 0x97, 0x8C, 0xF3, 0x8C, 0x4F, 0x8D - .byte 0xAB, 0x8D, 0x07, 0x8E, 0x63, 0x8E, 0xBF, 0x8E, 0x1B, 0x8F, 0x77, 0x8F, 0xD4, 0x8F, 0x30, 0x90 - .byte 0x8C, 0x90, 0xE9, 0x90, 0x46, 0x91, 0xA2, 0x91, 0xFF, 0x91, 0x5C, 0x92, 0xB9, 0x92, 0x16, 0x93 - .byte 0x73, 0x93, 0xD1, 0x93, 0x2E, 0x94, 0x8C, 0x94, 0xE9, 0x94, 0x47, 0x95, 0xA4, 0x95, 0x02, 0x96 - .byte 0x60, 0x96, 0xBE, 0x96, 0x1C, 0x97, 0x7A, 0x97, 0xD8, 0x97, 0x36, 0x98, 0x95, 0x98, 0xF3, 0x98 - .byte 0x52, 0x99, 0xB0, 0x99, 0x0F, 0x9A, 0x6E, 0x9A, 0xCD, 0x9A, 0x2C, 0x9B, 0x8B, 0x9B, 0xEA, 0x9B - .byte 0x49, 0x9C, 0xA8, 0x9C, 0x08, 0x9D, 0x67, 0x9D, 0xC7, 0x9D, 0x26, 0x9E, 0x86, 0x9E, 0xE6, 0x9E - .byte 0x46, 0x9F, 0xA6, 0x9F, 0x06, 0xA0, 0x66, 0xA0, 0xC6, 0xA0, 0x27, 0xA1, 0x87, 0xA1, 0xE8, 0xA1 - .byte 0x48, 0xA2, 0xA9, 0xA2, 0x0A, 0xA3, 0x6B, 0xA3, 0xCC, 0xA3, 0x2D, 0xA4, 0x8E, 0xA4, 0xEF, 0xA4 - .byte 0x50, 0xA5, 0xB2, 0xA5, 0x13, 0xA6, 0x75, 0xA6, 0xD6, 0xA6, 0x38, 0xA7, 0x9A, 0xA7, 0xFC, 0xA7 - .byte 0x5E, 0xA8, 0xC0, 0xA8, 0x22, 0xA9, 0x84, 0xA9, 0xE7, 0xA9, 0x49, 0xAA, 0xAC, 0xAA, 0x0E, 0xAB - .byte 0x71, 0xAB, 0xD4, 0xAB, 0x37, 0xAC, 0x9A, 0xAC, 0xFD, 0xAC, 0x60, 0xAD, 0xC3, 0xAD, 0x27, 0xAE - .byte 0x8A, 0xAE, 0xED, 0xAE, 0x51, 0xAF, 0xB5, 0xAF, 0x19, 0xB0, 0x7C, 0xB0, 0xE0, 0xB0, 0x45, 0xB1 - .byte 0xA9, 0xB1, 0x0D, 0xB2, 0x71, 0xB2, 0xD6, 0xB2, 0x3A, 0xB3, 0x9F, 0xB3, 0x03, 0xB4, 0x68, 0xB4 - .byte 0xCD, 0xB4, 0x32, 0xB5, 0x97, 0xB5, 0xFC, 0xB5, 0x62, 0xB6, 0xC7, 0xB6, 0x2C, 0xB7, 0x92, 0xB7 - .byte 0xF7, 0xB7, 0x5D, 0xB8, 0xC3, 0xB8, 0x29, 0xB9, 0x8F, 0xB9, 0xF5, 0xB9, 0x5B, 0xBA, 0xC1, 0xBA - .byte 0x28, 0xBB, 0x8E, 0xBB, 0xF5, 0xBB, 0x5B, 0xBC, 0xC2, 0xBC, 0x29, 0xBD, 0x90, 0xBD, 0xF7, 0xBD - .byte 0x5E, 0xBE, 0xC5, 0xBE, 0x2C, 0xBF, 0x94, 0xBF, 0xFB, 0xBF, 0x63, 0xC0, 0xCA, 0xC0, 0x32, 0xC1 - .byte 0x9A, 0xC1, 0x02, 0xC2, 0x6A, 0xC2, 0xD2, 0xC2, 0x3A, 0xC3, 0xA2, 0xC3, 0x0B, 0xC4, 0x73, 0xC4 - .byte 0xDC, 0xC4, 0x44, 0xC5, 0xAD, 0xC5, 0x16, 0xC6, 0x7F, 0xC6, 0xE8, 0xC6, 0x51, 0xC7, 0xBB, 0xC7 - .byte 0x24, 0xC8, 0x8D, 0xC8, 0xF7, 0xC8, 0x60, 0xC9, 0xCA, 0xC9, 0x34, 0xCA, 0x9E, 0xCA, 0x08, 0xCB - .byte 0x72, 0xCB, 0xDC, 0xCB, 0x47, 0xCC, 0xB1, 0xCC, 0x1B, 0xCD, 0x86, 0xCD, 0xF1, 0xCD, 0x5B, 0xCE - .byte 0xC6, 0xCE, 0x31, 0xCF, 0x9C, 0xCF, 0x08, 0xD0, 0x73, 0xD0, 0xDE, 0xD0, 0x4A, 0xD1, 0xB5, 0xD1 - .byte 0x21, 0xD2, 0x8D, 0xD2, 0xF8, 0xD2, 0x64, 0xD3, 0xD0, 0xD3, 0x3D, 0xD4, 0xA9, 0xD4, 0x15, 0xD5 - .byte 0x82, 0xD5, 0xEE, 0xD5, 0x5B, 0xD6, 0xC7, 0xD6, 0x34, 0xD7, 0xA1, 0xD7, 0x0E, 0xD8, 0x7B, 0xD8 - .byte 0xE9, 0xD8, 0x56, 0xD9, 0xC3, 0xD9, 0x31, 0xDA, 0x9E, 0xDA, 0x0C, 0xDB, 0x7A, 0xDB, 0xE8, 0xDB - .byte 0x56, 0xDC, 0xC4, 0xDC, 0x32, 0xDD, 0xA0, 0xDD, 0x0F, 0xDE, 0x7D, 0xDE, 0xEC, 0xDE, 0x5B, 0xDF - .byte 0xC9, 0xDF, 0x38, 0xE0, 0xA7, 0xE0, 0x16, 0xE1, 0x86, 0xE1, 0xF5, 0xE1, 0x64, 0xE2, 0xD4, 0xE2 - .byte 0x43, 0xE3, 0xB3, 0xE3, 0x23, 0xE4, 0x93, 0xE4, 0x03, 0xE5, 0x73, 0xE5, 0xE3, 0xE5, 0x54, 0xE6 - .byte 0xC4, 0xE6, 0x35, 0xE7, 0xA5, 0xE7, 0x16, 0xE8, 0x87, 0xE8, 0xF8, 0xE8, 0x69, 0xE9, 0xDA, 0xE9 - .byte 0x4B, 0xEA, 0xBC, 0xEA, 0x2E, 0xEB, 0x9F, 0xEB, 0x11, 0xEC, 0x83, 0xEC, 0xF5, 0xEC, 0x66, 0xED - .byte 0xD9, 0xED, 0x4B, 0xEE, 0xBD, 0xEE, 0x2F, 0xEF, 0xA2, 0xEF, 0x14, 0xF0, 0x87, 0xF0, 0xFA, 0xF0 - .byte 0x6D, 0xF1, 0xE0, 0xF1, 0x53, 0xF2, 0xC6, 0xF2, 0x39, 0xF3, 0xAD, 0xF3, 0x20, 0xF4, 0x94, 0xF4 - .byte 0x07, 0xF5, 0x7B, 0xF5, 0xEF, 0xF5, 0x63, 0xF6, 0xD7, 0xF6, 0x4C, 0xF7, 0xC0, 0xF7, 0x34, 0xF8 - .byte 0xA9, 0xF8, 0x1E, 0xF9, 0x92, 0xF9, 0x07, 0xFA, 0x7C, 0xFA, 0xF1, 0xFA, 0x66, 0xFB, 0xDC, 0xFB - .byte 0x51, 0xFC, 0xC7, 0xFC, 0x3C, 0xFD, 0xB2, 0xFD, 0x28, 0xFE, 0x9E, 0xFE, 0x14, 0xFF, 0x8A, 0xFF - -_0210DE50: - .byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 - .byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 - .byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 - .byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03 - .byte 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 - .byte 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 - .byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 - .byte 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05 - .byte 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 - .byte 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08 - .byte 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09 - .byte 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B - .byte 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E - .byte 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10 - .byte 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x14 - .byte 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x18 - .byte 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C - .byte 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22 - .byte 0x22, 0x23, 0x23, 0x24, 0x24, 0x24, 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x29 - .byte 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D, 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x31, 0x31 - .byte 0x32, 0x32, 0x33, 0x33, 0x34, 0x35, 0x35, 0x36, 0x36, 0x37, 0x38, 0x38, 0x39, 0x3A, 0x3A, 0x3B - .byte 0x3C, 0x3C, 0x3D, 0x3E, 0x3F, 0x3F, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45, 0x46, 0x47 - .byte 0x48, 0x49, 0x4A, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x52, 0x53, 0x54, 0x55 - .byte 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x67 - .byte 0x68, 0x69, 0x6A, 0x6B, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A, 0x7B - .byte 0x7D, 0x7E, 0x7F, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24, 0x25, 0x25 - .byte 0x26, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28, 0x29, 0x29, 0x2A, 0x2A, 0x2B, 0x2B, 0x2C, 0x2C, 0x2D - .byte 0x2D, 0x2E, 0x2E, 0x2F, 0x2F, 0x30, 0x30, 0x31, 0x31, 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x36 - .byte 0x36, 0x37, 0x37, 0x38, 0x39, 0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3E, 0x3E, 0x3F, 0x40, 0x40 - .byte 0x41, 0x42, 0x43, 0x43, 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4D - .byte 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D - .byte 0x5E, 0x5F, 0x60, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6F, 0x70 - .byte 0x71, 0x73, 0x74, 0x75, 0x77, 0x78, 0x79, 0x7B, 0x7C, 0x7E, 0x7E, 0x40, 0x41, 0x42, 0x43, 0x43 - .byte 0x44, 0x45, 0x46, 0x47, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51 - .byte 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61 - .byte 0x62, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6B, 0x6C, 0x6D, 0x6E, 0x70, 0x71, 0x72, 0x74, 0x75 - .byte 0x76, 0x78, 0x79, 0x7B, 0x7C, 0x7D, 0x7E, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x45, 0x46, 0x46 - .byte 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55 - .byte 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x65, 0x66 - .byte 0x67, 0x68, 0x69, 0x6A, 0x6C, 0x6D, 0x6E, 0x6F, 0x71, 0x72, 0x73, 0x75, 0x76, 0x77, 0x79, 0x7A - .byte 0x7C, 0x7D, 0x7E, 0x7F - -_0210E124: - .word FSi_ReadFileCommand - .word FSi_WriteFileCommand - .word FSi_SeekDirCommand - .word FSi_ReadDirCommand - .word FSi_FindPathCommand - .word FSi_GetPathCommand - .word FSi_OpenFileFastCommand - .word FSi_OpenFileDirectCommand - .word FSi_CloseFileCommand - -_0210E148: - .word 0xDEC00621 - -_0210E14C: - .byte 0xBA, 0x98, 0xCE, 0x3F - .byte 0xA6, 0x92, 0xE3, 0x9D, 0x46, 0xF2, 0xED, 0x01, 0x76, 0xE3, 0xCC, 0x08, 0x56, 0x23, 0x63, 0xFA - .byte 0xCA, 0xD4, 0xEC, 0xDF, 0x9A, 0x62, 0x78, 0x34, 0x8F, 0x6D, 0x63, 0x3C, 0xFE, 0x22, 0xCA, 0x92 - .byte 0x20, 0x88, 0x97, 0x23, 0xD2, 0xCF, 0xAE, 0xC2, 0x32, 0x67, 0x8D, 0xFE, 0xCA, 0x83, 0x64, 0x98 - .byte 0xAC, 0xFD, 0x3E, 0x37, 0x87, 0x46, 0x58, 0x24 - -_0210E188: - .byte 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -_0210E1DC: - .byte 0x14, 0x00, 0x00, 0x00 - -_0210E1E0: - .word _0210E348 - .word _0210E284 - .word _0210E384 - -_0210E1EC: - .word _0210E304 - .word _0210E204 - .word _0210E3C8 - .word _0210E2C8 - -_0210E1FC: - .byte 0x0A, 0x00, 0x28, 0x00 - .byte 0x00, 0x00, 0x28, 0x00 - -_0210E204: - .word CTRDGi_WriteFlash4KBAT - .word CTRDGi_EraseFlashChipAT - .word CTRDGi_EraseFlash4KBAT - .word CTRDGi_WriteFlash4KBAsyncAT - .word CTRDGi_EraseFlashChipAsyncAT - .word CTRDGi_EraseFlash4KBAsyncAT - .word CTRDGi_PollingSR512kCOMMON - .word _0210E1FC - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 - -_0210E244: - .word CTRDGi_WriteFlashSectorAT - .word CTRDGi_EraseFlashChipAT - .word CTRDGi_EraseFlashSectorAT - .word CTRDGi_WriteFlashSectorAsyncAT - .word CTRDGi_EraseFlashChipAsyncAT - .word CTRDGi_EraseFlashSectorAsyncAT - .word CTRDGi_PollingSR512kCOMMON - .word _0210E1FC - .byte 0x00, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x3D, 0x00 - -_0210E27C: - .byte 0x0A, 0x00, 0x0A, 0x00 - .byte 0xD0, 0x07, 0x88, 0x13 - -_0210E284: - .word CTRDGi_WriteFlashSectorMX - .word CTRDGi_EraseFlashChipMX - .word CTRDGi_EraseFlashSectorMX - .word CTRDGi_WriteFlashSectorAsyncMX - .word CTRDGi_EraseFlashChipAsyncMX - .word CTRDGi_EraseFlashSectorAsyncMX - .word CTRDGi_PollingSR1MCOMMON - .word _0210E27C - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x00, 0x13, 0x00 - -_0210E2C0: - .byte 0x0A, 0x00, 0x0A, 0x00, 0x28, 0x00, 0xC8, 0x00 - -_0210E2C8: - .word CTRDGi_WriteFlashSectorLE - .word CTRDGi_EraseFlashChipLE - .word CTRDGi_EraseFlashSectorLE - .word CTRDGi_WriteFlashSectorAsyncLE - .word CTRDGi_EraseFlashChipAsyncLE - .word CTRDGi_EraseFlashSectorAsyncLE - .word CTRDGi_PollingSR512kCOMMON - .word _0210E2C0 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - -_0210E304: - .word CTRDGi_WriteFlashSectorLE - .word CTRDGi_EraseFlashChipLE - .word CTRDGi_EraseFlashSectorLE - .word CTRDGi_WriteFlashSectorAsyncLE - .word CTRDGi_EraseFlashChipAsyncLE - .word CTRDGi_EraseFlashSectorAsyncLE - .word CTRDGi_PollingSR512kCOMMON - .word _0210E2C0 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x10, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBF, 0x00, 0xD4, 0x00 - -_0210E340: - .byte 0x0A, 0x00, 0x0A, 0x00, 0xD0, 0x07, 0xD0, 0x07 - -_0210E348: - .word CTRDGi_WriteFlashSectorMX - .word CTRDGi_EraseFlashChipMX - .word CTRDGi_EraseFlashSectorMX - .word CTRDGi_WriteFlashSectorAsyncMX - .word CTRDGi_EraseFlashChipAsyncMX - .word CTRDGi_EraseFlashSectorAsyncMX - .word CTRDGi_PollingSR1MCOMMON - .word _0210E340 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x0C, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xC2, 0x00, 0x09, 0x00 - -_0210E384: - .word CTRDGi_WriteFlashSectorMX - .word CTRDGi_EraseFlashChipMX - .word CTRDGi_EraseFlashSectorMX - .word CTRDGi_WriteFlashSectorAsyncMX - .word CTRDGi_EraseFlashChipAsyncMX - .word CTRDGi_EraseFlashSectorAsyncMX - .word CTRDGi_PollingSR1MCOMMON - .word _0210E340 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x20, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -_0210E3C0: - .byte 0x0A, 0x00, 0x0A, 0x00, 0xF4, 0x01, 0xF4, 0x01 - -_0210E3C8: - .word CTRDGi_WriteFlashSectorMX5 - .word CTRDGi_EraseFlashChipLE - .word CTRDGi_EraseFlashSectorLE - .word CTRDGi_WriteFlashSectorAsyncMX5 - .word CTRDGi_EraseFlashChipAsyncLE - .word CTRDGi_EraseFlashSectorAsyncLE - .word CTRDGi_PollingSR512kCOMMON - .word _0210E3C0 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x0C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x32, 0x00, 0x1B, 0x00 - - .data - - .balign 4, 0 -_02110C98: - .asciz ":/" - .balign 4, 0 -_02110C9C: - .asciz "rom" - .balign 4, 0 -_02110CA0: - .word _0210E148 - .byte 0x40, 0x00, 0x00, 0x00 -_02110CA8: - .byte 0x80, 0x00, 0x00, 0x00 -_02110CAC: - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00 -_02110D6C: - .byte 0x78, 0xA4, 0x6A, 0xD7 - .byte 0x56, 0xB7, 0xC7, 0xE8, 0xDB, 0x70, 0x20, 0x24, 0xEE, 0xCE, 0xBD, 0xC1, 0xAF, 0x0F, 0x7C, 0xF5 - .byte 0x2A, 0xC6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xA8, 0x01, 0x95, 0x46, 0xFD, 0xD8, 0x98, 0x80, 0x69 - .byte 0xAF, 0xF7, 0x44, 0x8B, 0xB1, 0x5B, 0xFF, 0xFF, 0xBE, 0xD7, 0x5C, 0x89, 0x22, 0x11, 0x90, 0x6B - .byte 0x93, 0x71, 0x98, 0xFD, 0x8E, 0x43, 0x79, 0xA6, 0x21, 0x08, 0xB4, 0x49, 0x62, 0x25, 0x1E, 0xF6 - .byte 0x40, 0xB3, 0x40, 0xC0, 0x51, 0x5A, 0x5E, 0x26, 0xAA, 0xC7, 0xB6, 0xE9, 0x5D, 0x10, 0x2F, 0xD6 - .byte 0x53, 0x14, 0x44, 0x02, 0x81, 0xE6, 0xA1, 0xD8, 0xC8, 0xFB, 0xD3, 0xE7, 0xE6, 0xCD, 0xE1, 0x21 - .byte 0xD6, 0x07, 0x37, 0xC3, 0x87, 0x0D, 0xD5, 0xF4, 0xED, 0x14, 0x5A, 0x45, 0x05, 0xE9, 0xE3, 0xA9 - .byte 0xF8, 0xA3, 0xEF, 0xFC, 0xD9, 0x02, 0x6F, 0x67, 0x8A, 0x4C, 0x2A, 0x8D, 0x42, 0x39, 0xFA, 0xFF - .byte 0x81, 0xF6, 0x71, 0x87, 0x22, 0x61, 0x9D, 0x6D, 0x0C, 0x38, 0xE5, 0xFD, 0x44, 0xEA, 0xBE, 0xA4 - .byte 0xA9, 0xCF, 0xDE, 0x4B, 0x60, 0x4B, 0xBB, 0xF6, 0x70, 0xBC, 0xBF, 0xBE, 0xC6, 0x7E, 0x9B, 0x28 - .byte 0xFA, 0x27, 0xA1, 0xEA, 0x85, 0x30, 0xEF, 0xD4, 0x05, 0x1D, 0x88, 0x04, 0x39, 0xD0, 0xD4, 0xD9 - .byte 0xE5, 0x99, 0xDB, 0xE6, 0xF8, 0x7C, 0xA2, 0x1F, 0x65, 0x56, 0xAC, 0xC4, 0x44, 0x22, 0x29, 0xF4 - .byte 0x97, 0xFF, 0x2A, 0x43, 0xA7, 0x23, 0x94, 0xAB, 0x39, 0xA0, 0x93, 0xFC, 0xC3, 0x59, 0x5B, 0x65 - .byte 0x92, 0xCC, 0x0C, 0x8F, 0x7D, 0xF4, 0xEF, 0xFF, 0xD1, 0x5D, 0x84, 0x85, 0x4F, 0x7E, 0xA8, 0x6F - .byte 0xE0, 0xE6, 0x2C, 0xFE, 0x14, 0x43, 0x01, 0xA3, 0xA1, 0x11, 0x08, 0x4E, 0x82, 0x7E, 0x53, 0xF7 - .byte 0x35, 0xF2, 0x3A, 0xBD, 0xBB, 0xD2, 0xD7, 0x2A, 0x91, 0xD3, 0x86, 0xEB -_02110E6C: - .byte 0x61, 0x00, 0x00, 0x00 -_02110E70: - .word DGTi_hash2_arm4_small - .word _02110ED8 - .word _02110EF0 - .word _02110EA8 - .word _02110EC0 - .word _02110EA4 - .word _02110F08 - .word _02110E6C - .word _02110F44 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0F, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00 - -_02110EA4: - .byte 0x61, 0x62, 0x63, 0x00 - -_02110EA8: - .byte 0x34, 0xAA, 0x97, 0x3C, 0xD4, 0xC4, 0xDA, 0xA4 - .byte 0xF6, 0x1E, 0xEB, 0x2B, 0xDB, 0xAD, 0x27, 0x31, 0x65, 0x34, 0x01, 0x6F, 0x00, 0x00, 0x00, 0x00 - -_02110EC0: - .byte 0xDE, 0xA3, 0x56, 0xA2, 0xCD, 0xDD, 0x90, 0xC7, 0xA7, 0xEC, 0xED, 0xC5, 0xEB, 0xB5, 0x63, 0x93 - .byte 0x4F, 0x46, 0x04, 0x52, 0x00, 0x00, 0x00, 0x00 - -_02110ED8: - .byte 0xA9, 0x99, 0x3E, 0x36, 0x47, 0x06, 0x81, 0x6A - .byte 0xBA, 0x3E, 0x25, 0x71, 0x78, 0x50, 0xC2, 0x6C, 0x9C, 0xD0, 0xD8, 0x9D, 0x00, 0x00, 0x00, 0x00 - -_02110EF0: - .byte 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E, 0xBA, 0xAE, 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5 - .byte 0xE5, 0x46, 0x70, 0xF1, 0x00, 0x00, 0x00, 0x00 - -_02110F08: - .byte 0x61, 0x62, 0x63, 0x64, 0x62, 0x63, 0x64, 0x65 - .byte 0x63, 0x64, 0x65, 0x66, 0x64, 0x65, 0x66, 0x67, 0x65, 0x66, 0x67, 0x68, 0x66, 0x67, 0x68, 0x69 - .byte 0x67, 0x68, 0x69, 0x6A, 0x68, 0x69, 0x6A, 0x6B, 0x69, 0x6A, 0x6B, 0x6C, 0x6A, 0x6B, 0x6C, 0x6D - .byte 0x6B, 0x6C, 0x6D, 0x6E, 0x6C, 0x6D, 0x6E, 0x6F, 0x6D, 0x6E, 0x6F, 0x70, 0x6E, 0x6F, 0x70, 0x71 - .byte 0x00, 0x00, 0x00, 0x00 - -_02110F44: - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x00, 0x00, 0x00, 0x00 - -_02110F88: - .word 0 - .word 31 - .word 59 - .word 90 - .word 120 - .word 151 - .word 181 - .word 212 - .word 243 - .word 273 - .word 304 - .word 334 -_02110FB8: - .word 0x027FFE00 -_02110FBC: - .byte 0xFD, 0xFF, 0x00, 0x00 -_02110FC0: - .byte 0x00, 0x00, 0x01, 0x00 -_02110FC4: - .byte 0x00, 0x00, 0x00, 0x00 -_02110FC8: - .byte 0x00, 0x00, 0x00, 0x00 diff --git a/lib/include/ansi_params.h b/lib/include/ansi_params.h deleted file mode 100644 index 45f5522e..00000000 --- a/lib/include/ansi_params.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _MSL_MSLEXTERN_H -#define _MSL_MSLEXTERN_H - -#ifdef __cplusplus -#define _MSL_BEGIN_NAMESPACE_STD namespace std { -#define _MSL_BEGIN_EXTERN_C extern "C" { -#define _MSL_END_EXTERN_C } -#define _MSL_END_NAMESPACE_STD } -#else -#define _MSL_BEGIN_NAMESPACE_STD -#define _MSL_BEGIN_EXTERN_C -#define _MSL_END_EXTERN_C -#define _MSL_END_NAMESPACE_STD -#endif //__cplusplus - -#endif //_MSL_MSLEXTERN_H diff --git a/lib/include/assert.h b/lib/include/assert.h deleted file mode 100644 index a96a4d8a..00000000 --- a/lib/include/assert.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _MSL_ASSERT_H_ -#define _MSL_ASSERT_H_ - -#define assert(expr) ((expr) ? (void)0 : __msl_assertion_failed(#expr, __FILE__, __func__, __LINE__)) - -// For matching -#define assert_ex(expr, file, line) ((expr) ? (void)0 : __msl_assertion_failed(#expr, file, __func__, line)) - -// Assertion (%s) failed in "%s", function "%s", line %d -extern void __msl_assertion_failed( - const char *expr, - const char *file, - const char *func, - int line -); - -#endif //_MSL_ASSERT_H_ diff --git a/lib/include/cw.h b/lib/include/cw.h deleted file mode 100644 index b39e2e36..00000000 --- a/lib/include/cw.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef GUARD_CW_H -#define GUARD_CW_H - -#include - -#endif //GUARD_CW_H diff --git a/lib/include/cw/function_target.h b/lib/include/cw/function_target.h deleted file mode 100644 index a1760945..00000000 --- a/lib/include/cw/function_target.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef GUARD_CW_FUNCTION_TARGET_H -#define GUARD_CW_FUNCTION_TARGET_H - -#define ARM_FUNC _Pragma("thumb off") -#define THUMB_FUNC _Pragma("thumb on") - -#define ENUMS_ALWAYS_INT_ON _Pragma("enumsalwaysint on") -#define ENUMS_ALWAYS_INT_OFF _Pragma("enumsalwaysint off") -#define ENUMS_ALWAYS_INT_RESET _Pragma("enumsalwaysint reset") - -#define ALIGN(num) __attribute__ ((aligned(num))) - -#ifdef __CLION_IDE__ -#define asm -#endif //__CLION_IDE__ - -#endif //GUARD_CW_FUNCTION_TARGET_H diff --git a/lib/include/nitro.h b/lib/include/nitro.h deleted file mode 100644 index 1379eefc..00000000 --- a/lib/include/nitro.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef NITRO_H_ -#define NITRO_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif //NITRO_H_ diff --git a/lib/include/nitro/card.h b/lib/include/nitro/card.h deleted file mode 100644 index 3914b68d..00000000 --- a/lib/include/nitro/card.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NITRO_CARD_H_ -#define NITRO_CARD_H_ - -#include -#include - -void CARD_Init(void); - -#endif //NITRO_CARD_H_ diff --git a/lib/include/nitro/card/backup.h b/lib/include/nitro/card/backup.h deleted file mode 100644 index 8280b2e7..00000000 --- a/lib/include/nitro/card/backup.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef NITRO_CARD_BACKUP_BACKUP_H_ -#define NITRO_CARD_BACKUP_BACKUP_H_ - -BOOL CARD_TryWaitBackupAsync(void); -void CARD_CancelBackupAsync(void); - -BOOL CARDi_RequestStreamCommand(u32 src, u32 dst, u32 len, MIDmaCallback callback, void *arg, BOOL is_async, CARDRequest req_type, int req_retry, CARDRequestMode req_mode); - -static inline BOOL CARDi_ReadBackup(u32 src, void *dst, u32 len, MIDmaCallback callback, void *arg, BOOL is_async) { - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, CARD_REQ_READ_BACKUP, 1, CARD_REQUEST_MODE_RECV); -} - -static inline void CARD_ReadBackupAsync(u32 src, void *dst, u32 len, MIDmaCallback callback, void *arg) { - CARDi_ReadBackup(src, dst, len, callback, arg, TRUE); -} - -BOOL CARD_WaitBackupAsync(void); - -static inline BOOL CARD_ReadBackup(u32 src, void *dst, u32 len) { - return CARDi_ReadBackup(src, dst, len, NULL, NULL, FALSE); -} - -static inline BOOL CARDi_WriteBackup(u32 dst, const void *src, u32 len, MIDmaCallback callback, void *arg, BOOL is_async) { - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, CARD_REQ_WRITE_BACKUP, CARD_RETRY_COUNT_MAX, CARD_REQUEST_MODE_SEND); -} - -static inline void CARD_WriteBackupAsync(u32 dst, const void *src, u32 len, MIDmaCallback callback, void *arg) { - CARDi_WriteBackup(dst, src, len, callback, arg, TRUE); -} - -static inline BOOL CARD_WriteBackup(u32 dst, const void *src, u32 len) { - return CARDi_WriteBackup(dst, src, len, NULL, NULL, FALSE); -} - -static inline BOOL CARDi_WriteAndVerifyBackup(u32 dst, const void *src, u32 len, MIDmaCallback callback, void *arg, BOOL is_async) { - return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, CARD_REQ_WRITE_BACKUP, CARD_RETRY_COUNT_MAX, CARD_REQUEST_MODE_SEND_VERIFY); -} - -static inline void CARD_WriteAndVerifyBackupAsync(u32 dst, const void *src, u32 len, MIDmaCallback callback, void *arg) { - CARDi_WriteAndVerifyBackup(dst, src, len, callback, arg, TRUE); -} - -static inline BOOL CARD_WriteAndVerifyBackup(u32 dst, const void *src, u32 len) { - return CARDi_WriteAndVerifyBackup(dst, src, len, NULL, NULL, FALSE); -} - -#endif //NITRO_CARD_BACKUP_BACKUP_H_ diff --git a/lib/include/nitro/card/common.h b/lib/include/nitro/card/common.h deleted file mode 100644 index a22dfddb..00000000 --- a/lib/include/nitro/card/common.h +++ /dev/null @@ -1,239 +0,0 @@ -#ifndef NITRO_CARD_COMMON_H_ -#define NITRO_CARD_COMMON_H_ - -#include -#include -#include -#include -#include - -#define CARD_PXI_COMMAND_MASK 0x3f -#define CARD_PXI_COMMAND_PULLED_OUT 0x0011 -#define CARD_PXI_COMMAND_TERMINATE 0x0001 - -#define CARD_THREAD_PRIORITY_DEFAULT 4 - -#define CARD_BACKUP_TYPE_DEVICE_SHIFT 0 -#define CARD_BACKUP_TYPE_DEVICE_MASK 0xFF -#define CARD_BACKUP_TYPE_DEVICE_EEPROM 1 -#define CARD_BACKUP_TYPE_DEVICE_FLASH 2 -#define CARD_BACKUP_TYPE_DEVICE_FRAM 3 -#define CARD_BACKUP_TYPE_SIZEBIT_SHIFT 8 -#define CARD_BACKUP_TYPE_SIZEBIT_MASK 0xFF -#define CARD_BACKUP_TYPE_VENDER_SHIFT 16 -#define CARD_BACKUP_TYPE_DEFINE(type, size, vender) \ - (((CARD_BACKUP_TYPE_DEVICE_ ## type) << CARD_BACKUP_TYPE_DEVICE_SHIFT) | \ - ((size) << CARD_BACKUP_TYPE_SIZEBIT_SHIFT) | \ - ((vender) << CARD_BACKUP_TYPE_VENDER_SHIFT)) - -#define ALIGN_MASK(a) ((a) - 1) -#define CARD_ALIGN_HI_BIT(n) (((u32)(n)) & ~ALIGN_MASK(CARD_ROM_PAGE_SIZE)) -#define CARD_ALIGN_LO_BIT(n) (((u32)(n)) & ALIGN_MASK(CARD_ROM_PAGE_SIZE)) - -#define CARD_BACKUP_CAPS_AVAILABLE (u32)(CARD_BACKUP_CAPS_READ - 1) -#define CARD_BACKUP_CAPS_READ (u32)(1 << CARD_REQ_READ_BACKUP) -#define CARD_BACKUP_CAPS_WRITE (u32)(1 << CARD_REQ_WRITE_BACKUP) -#define CARD_BACKUP_CAPS_PROGRAM (u32)(1 << CARD_REQ_PROGRAM_BACKUP) -#define CARD_BACKUP_CAPS_VERIFY (u32)(1 << CARD_REQ_VERIFY_BACKUP) -#define CARD_BACKUP_CAPS_ERASE_PAGE (u32)(1 << CARD_REQ_ERASE_PAGE_BACKUP) -#define CARD_BACKUP_CAPS_ERASE_SECTOR (u32)(1 << CARD_REQ_ERASE_SECTOR_BACKUP) -#define CARD_BACKUP_CAPS_ERASE_CHIP (u32)(1 << CARD_REQ_ERASE_CHIP_BACKUP) - -typedef enum -{ - CARD_BACKUP_TYPE_EEPROM_4KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 9, 0), - CARD_BACKUP_TYPE_EEPROM_64KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 13, 0), - CARD_BACKUP_TYPE_EEPROM_512KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 16, 0), - CARD_BACKUP_TYPE_FLASH_2MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 18, 0), - CARD_BACKUP_TYPE_FLASH_4MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 19, 0), - CARD_BACKUP_TYPE_FLASH_8MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 20, 0), - CARD_BACKUP_TYPE_FRAM_256KBITS = CARD_BACKUP_TYPE_DEFINE(FRAM, 15, 0), - CARD_BACKUP_TYPE_NOT_USE = 0 -} CARDBackupType; - -#define CARD_BACKUP_TYPE_FLASH_4MBITS_EX (CARDBackupType)(CARD_BACKUP_TYPE_FLASH_4MBITS | (255<callback; - void *const arg = p->callback_arg; - - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - - p->flag &= ~(CARD_STAT_BUSY | CARD_STAT_TASK | CARD_STAT_CANCEL); - OS_WakeupThread(p->busy_q); - if ((p->flag & CARD_STAT_RECV) != 0) - { - OS_WakeupThreadDirect(p->thread); - } - (void)OS_RestoreInterrupts(bak_psr); - } - - if (is_own_task && func) - { - (*func)(arg); - } -} - -static inline void CARDi_WaitTask(CARDiCommon *p, MIDmaCallback callback, void *callback_arg) -{ - OSIntrMode bak_psr = OS_DisableInterrupts(); - while ((p->flag & CARD_STAT_BUSY) != 0) - { - OS_SleepThread(p->busy_q); - } - p->flag |= CARD_STAT_BUSY; - p->callback = callback; - p->callback_arg = callback_arg; - (void)OS_RestoreInterrupts(bak_psr); -} - -void CARDi_SetTask(void (*task) (CARDiCommon *)); -void CARDi_InitCommon(void); -BOOL CARD_IsEnabled(void); -void CARD_CheckEnabled(void); -void CARD_Enable(BOOL enable); -BOOL CARDi_WaitAsync(void); -BOOL CARDi_TryWaitAsync(void); -CARDResult CARD_GetResultCode(void); -void CARD_LockRom(u16 lock_id); -void CARD_UnlockRom(u16 lock_id); -void CARD_UnlockBackup(u16 lock_id); - -#define CARD_RETRY_COUNT_MAX 10 - -static inline void CARDi_SendPxi(u32 data) -{ - while (PXI_SendWordByFifo(PXI_FIFO_TAG_FS, data, TRUE) < 0) - ; -} - -void CARD_SetCacheFlushThreshold(u32 icache, u32 dcache); -BOOL CARD_IdentifyBackup(CARDBackupType type); -void CARD_LockBackup(u16 lock_id); -void CARD_UnlockBackup(u16 lock_id); - -#endif //NITRO_CARD_COMMON_H_ diff --git a/lib/include/nitro/card/pullOut.h b/lib/include/nitro/card/pullOut.h deleted file mode 100644 index 4a64f5ae..00000000 --- a/lib/include/nitro/card/pullOut.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_CARD_PULLOUT_H_ -#define NITRO_CARD_PULLOUT_H_ - -BOOL CARD_IsPulledOut(void); - -#endif //NITRO_CARD_PULLOUT_H_ diff --git a/lib/include/nitro/card/rom.h b/lib/include/nitro/card/rom.h deleted file mode 100644 index 49b0ef81..00000000 --- a/lib/include/nitro/card/rom.h +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef NITRO_CARD_ROM_H_ -#define NITRO_CARD_ROM_H_ - -#include -#include -#include -#include - -#define CARD_ROM_PAGE_SIZE 512 - -#define CARDMST_SEL_ROM 0x00 -#define CARDMST_IF_ENABLE 0x40 -#define CARDMST_ENABLE 0x80 - -#define CARD_DATA_READY 0x00800000 -#define CARD_COMMAND_PAGE 0x01000000 -#define CARD_COMMAND_ID 0x07000000 -#define CARD_COMMAND_MASK 0x07000000 -#define CARD_RESET_HI 0x20000000 -#define CARD_READ_MODE 0x00000000 -#define CARD_START 0x80000000 -#define CARD_LATENCY1_MASK 0x00001FFF - -#define MROMOP_G_READ_PAGE 0xB7000000 -#define MROMOP_G_READ_ID 0xB8000000 - -extern CARDiCommon cardi_common; - -typedef struct -{ - u32 offset; - u32 length; -} -CARDRomRegion; - -typedef struct CARDRomStat -{ - void (*read_func) (struct CARDRomStat *); - u32 ctrl; - u8 *cache_page; - u32 dummy[5]; - u8 cache_buf[CARD_ROM_PAGE_SIZE]; -} CARDRomStat; - -static inline const CARDRomRegion * CARD_GetRomRegionOVT(MIProcessor target) -{ - return (target == MI_PROCESSOR_ARM9) - ? (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x50) - : (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x58); -} - -BOOL CARDi_TryReadCardDma(CARDRomStat *p); -void CARDi_ReadCard(CARDRomStat *p); -u32 CARDi_ReadRomIDCore(void); -void CARDi_CheckPulledOutCore(u32 id); -void CARDi_ReadRom(u32 dma, const void *src, void *dst, u32 len, MIDmaCallback callback, void *arg, BOOL is_async); -void CARD_Init(void); -void CARD_WaitRomAsync(void); -void (*CARDi_GetRomAccessor(void)) (CARDRomStat *); - -static inline void CARD_ReadRomAsync(u32 dma, const void * src, void * dst, u32 len, MIDmaCallback callback, void * arg) -{ - CARDi_ReadRom(dma, src, dst, len, callback, arg, TRUE); -} - -static inline const CARDRomRegion * CARD_GetRomRegionFNT() { - return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x40); -} - -static inline const CARDRomRegion * CARD_GetRomRegionFAT() { - return (const CARDRomRegion *)((const u8 *)HW_ROM_HEADER_BUF + 0x48); -} - -static inline void CARDi_ReadEnd(void) -{ - CARDiCommon *const p = &cardi_common; - CARDi_CheckPulledOutCore(CARDi_ReadRomIDCore()); - p->cmd->result = CARD_RESULT_SUCCESS; - CARDi_EndTask(p, TRUE); -} - -#ifdef SDK_ARM9 -static inline BOOL CARDi_IsInTcm(u32 buf, u32 len) -{ - const u32 i = (u32)HW_ITCM; - const u32 d = OS_GetDTCMAddress(); - return ((i < buf + len) && (i + HW_ITCM_SIZE > buf)) || - ((d < buf + len) && (d + HW_DTCM_SIZE > buf)); -} -#endif - -extern u32 cardi_rom_header_addr; - -static inline u32 CARDi_GetRomFlag(u32 flag) -{ - const u32 rom_ctrl = *(vu32 *)(cardi_rom_header_addr + 0x60); - return (u32)((rom_ctrl & ~CARD_COMMAND_MASK) | flag | - CARD_READ_MODE | CARD_START | CARD_RESET_HI); -} - -#endif //NITRO_CARD_ROM_H_ diff --git a/lib/include/nitro/code16.h b/lib/include/nitro/code16.h deleted file mode 100644 index 2f9a8e9f..00000000 --- a/lib/include/nitro/code16.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma thumb on -// Prepare to switch the definition of FX_Mul -#ifdef FX_Mul -#undef FX_Mul -#endif -// Prepare to switch the definition of FX_MulFx64c -#ifdef FX_Mul32x64c -#undef FX_Mul32x64c -#endif -// Prepare to switch the definition of MATH_CountLeadingZeros -#ifdef MATH_CountLeadingZeros -#undef MATH_CountLeadingZeros -#endif -// Because CPU is in THUMB mode, function versions are used. -#define FX_Mul(v1, v2) FX_MulFunc(v1, v2) -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cFunc(v32, v64c) -#define MATH_CountLeadingZeros(x) MATH_CountLeadingZerosFunc(x) diff --git a/lib/include/nitro/code32.h b/lib/include/nitro/code32.h deleted file mode 100644 index c699204e..00000000 --- a/lib/include/nitro/code32.h +++ /dev/null @@ -1,17 +0,0 @@ -#pragma thumb off -// Prepare to switch the definition of FX_Mul -#ifdef FX_Mul -#undef FX_Mul -#endif -// Prepare to switch the definition of FX_MulFx64c -#ifdef FX_Mul32x64c -#undef FX_Mul32x64c -#endif -// Prepare to switch the definition of MATH_CountLeadingZeros -#ifdef MATH_CountLeadingZeros -#undef MATH_CountLeadingZeros -#endif -// Because CPU is in ARM mode, inline versions are used. -#define FX_Mul(v1, v2) FX_MulInline(v1, v2) -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cInline(v32, v64c) -#define MATH_CountLeadingZeros(x) MATH_CountLeadingZerosInline(x) diff --git a/lib/include/nitro/codereset.h b/lib/include/nitro/codereset.h deleted file mode 100644 index 90e578e7..00000000 --- a/lib/include/nitro/codereset.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef SDK_CODE_ARM -#include -#else -#include -#endif diff --git a/lib/include/nitro/cp.h b/lib/include/nitro/cp.h deleted file mode 100644 index b2262024..00000000 --- a/lib/include/nitro/cp.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_CP_H_ -#define NITRO_CP_H_ - -#include - -#endif //NITRO_CP_H_ diff --git a/lib/include/nitro/cp/context.h b/lib/include/nitro/cp/context.h deleted file mode 100644 index 9c8fac7b..00000000 --- a/lib/include/nitro/cp/context.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_CP_CONTEXT_H_ -#define NITRO_CP_CONTEXT_H_ - -#include - -typedef struct CPContext { - u64 div_numer; - u64 div_denom; - u64 sqrt; - u16 div_mode; - u16 sqrt_mode; -} CPContext; - -void CP_SaveContext(register CPContext *context); -void CPi_RestoreContext(register CPContext *context); - -#endif //NITRO_CP_CONTEXT_H_ diff --git a/lib/include/nitro/ctrdg.h b/lib/include/nitro/ctrdg.h deleted file mode 100644 index c2c524e6..00000000 --- a/lib/include/nitro/ctrdg.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NITRO_CTRDG_H_ -#define NITRO_CTRDG_H_ - -#include - -#ifdef SDK_ARM7 -#include -#endif //SDK_ARM7 - -void CTRDG_Init(void); - -#endif //NITRO_CTRDG_H_ diff --git a/lib/include/nitro/ctrdg/ARM7/vibrate.h b/lib/include/nitro/ctrdg/ARM7/vibrate.h deleted file mode 100644 index 68c4f8c1..00000000 --- a/lib/include/nitro/ctrdg/ARM7/vibrate.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_CTRDG_ARM7_VIBRATE_H_ -#define NITRO_CTRDG_ARM7_VIBRATE_H_ - -void CTRDG_VibPulseEdgeUpdate(int value); - -#endif //NITRO_CTRDG_ARM7_VIBRATE_H_ diff --git a/lib/include/nitro/ctrdg/common/ctrdg_common.h b/lib/include/nitro/ctrdg/common/ctrdg_common.h deleted file mode 100644 index f0e237be..00000000 --- a/lib/include/nitro/ctrdg/common/ctrdg_common.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_CTRDG_COMMON_CTRDG_COMMON_H -#define NITRO_CTRDG_COMMON_CTRDG_COMMON_H - -BOOL CTRDG_IsPulledOut(void); - -#endif //NITRO_CTRDG_COMMON_CTRDG_COMMON_H diff --git a/lib/include/nitro/dgt/common.h b/lib/include/nitro/dgt/common.h deleted file mode 100644 index 08a49dc0..00000000 --- a/lib/include/nitro/dgt/common.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NITRO_DGT_COMMON_H_ -#define NITRO_DGT_COMMON_H_ - -#define DGT_HASH1_DIGEST_SIZE (128/8) -#define DGT_HASH2_DIGEST_SIZE (160/8) -#define DGT_HASH_DIGEST_SIZE_MAX DGT_HASH2_DIGEST_SIZE -#define DGT_HASH_BLOCK_SIZE (512/8) - - - -#endif //NITRO_DGT_COMMON_H_ diff --git a/lib/include/nitro/dtcm_begin.h b/lib/include/nitro/dtcm_begin.h deleted file mode 100644 index ec8c5c15..00000000 --- a/lib/include/nitro/dtcm_begin.h +++ /dev/null @@ -1,4 +0,0 @@ -#include -#ifdef SDK_ARM9 -#pragma section DTCM begin -#endif diff --git a/lib/include/nitro/dtcm_end.h b/lib/include/nitro/dtcm_end.h deleted file mode 100644 index 796bb7ae..00000000 --- a/lib/include/nitro/dtcm_end.h +++ /dev/null @@ -1,4 +0,0 @@ -#include -#ifdef SDK_ARM9 -#pragma section DTCM end -#endif diff --git a/lib/include/nitro/exi.h b/lib/include/nitro/exi.h deleted file mode 100644 index 2c0c4236..00000000 --- a/lib/include/nitro/exi.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef GUARD_EXI_H -#define GUARD_EXI_H - -#ifdef SDK_ARM7 -#include -#endif //SDK_ARM7 - -#endif //GUARD_EXI_H diff --git a/lib/include/nitro/exi/ARM7/genPort.h b/lib/include/nitro/exi/ARM7/genPort.h deleted file mode 100644 index 76f1735c..00000000 --- a/lib/include/nitro/exi/ARM7/genPort.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NITRO_EXI_GENPORT_H_ -#define NITRO_EXI_GENPORT_H_ - -#include - -typedef enum { - EXI_GPIOIF_SERIAL = 0x0000, - EXI_GPIOIF_UNDEF = REG_EXI_RCNT0_L_RE0_MASK, - EXI_GPIOIF_GPIO = REG_EXI_RCNT0_L_RE1_MASK, - EXI_GPIOIF_JOY = REG_EXI_RCNT0_L_RE1_MASK | REG_EXI_RCNT0_L_RE0_MASK -} EXIGpioIF; - -void EXIi_SetBitRcnt0L(u16 mask, u16 data); -void EXIi_SelectRcnt(EXIGpioIF type); - -#endif //NITRO_EXI_GENPORT_H_ diff --git a/lib/include/nitro/fs.h b/lib/include/nitro/fs.h deleted file mode 100644 index 81ca52bd..00000000 --- a/lib/include/nitro/fs.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NITRO_FS_H_ -#define NITRO_FS_H_ - -#include -#include -#include - -#endif //NITRO_FS_H_ diff --git a/lib/include/nitro/fs/archive.h b/lib/include/nitro/fs/archive.h deleted file mode 100644 index 84fad269..00000000 --- a/lib/include/nitro/fs/archive.h +++ /dev/null @@ -1,218 +0,0 @@ -#ifndef NITRO_FS_ARCHIVE_H_ -#define NITRO_FS_ARCHIVE_H_ - -#include - -struct FSFile; -struct FSArchive; - -#define FS_ARCHIVE_NAME_LEN_MAX 3 - -#define FS_ARCHIVE_FLAG_REGISTER 0x00000001 -#define FS_ARCHIVE_FLAG_LOADED 0x00000002 -#define FS_ARCHIVE_FLAG_TABLE_LOAD 0x00000004 -#define FS_ARCHIVE_FLAG_SUSPEND 0x00000008 -#define FS_ARCHIVE_FLAG_RUNNING 0x00000010 -#define FS_ARCHIVE_FLAG_CANCELING 0x00000020 -#define FS_ARCHIVE_FLAG_SUSPENDING 0x00000040 -#define FS_ARCHIVE_FLAG_UNLOADING 0x00000080 -#define FS_ARCHIVE_FLAG_IS_ASYNC 0x00000100 -#define FS_ARCHIVE_FLAG_IS_SYNC 0x00000200 - -typedef enum { - FS_COMMAND_ASYNC_BEGIN = 0, - FS_COMMAND_READFILE = FS_COMMAND_ASYNC_BEGIN, - FS_COMMAND_WRITEFILE, - FS_COMMAND_ASYNC_END, - - FS_COMMAND_SYNC_BEGIN = FS_COMMAND_ASYNC_END, - FS_COMMAND_SEEKDIR = FS_COMMAND_SYNC_BEGIN, - FS_COMMAND_READDIR, - FS_COMMAND_FINDPATH, - FS_COMMAND_GETPATH, - FS_COMMAND_OPENFILEFAST, - FS_COMMAND_OPENFILEDIRECT, - FS_COMMAND_CLOSEFILE, - FS_COMMAND_SYNC_END, - - FS_COMMAND_STATUS_BEGIN = FS_COMMAND_SYNC_END, - FS_COMMAND_ACTIVATE = FS_COMMAND_STATUS_BEGIN, - FS_COMMAND_IDLE, - FS_COMMAND_SUSPEND, - FS_COMMAND_RESUME, - FS_COMMAND_STATUS_END, - - FS_COMMAND_INVALID -} FSCommandType; - -/* Asynchronous commands*/ -#define FS_ARCHIVE_PROC_READFILE (1 << FS_COMMAND_READFILE) -#define FS_ARCHIVE_PROC_WRITEFILE (1 << FS_COMMAND_WRITEFILE) -/* All asynchronous commands*/ -#define FS_ARCHIVE_PROC_ASYNC \ - (FS_ARCHIVE_PROC_READFILE | FS_ARCHIVE_PROC_WRITEFILE) - -/* Synchronous commands*/ -#define FS_ARCHIVE_PROC_SEEKDIR (1 << FS_COMMAND_SEEKDIR) -#define FS_ARCHIVE_PROC_READDIR (1 << FS_COMMAND_READDIR) -#define FS_ARCHIVE_PROC_FINDPATH (1 << FS_COMMAND_FINDPATH) -#define FS_ARCHIVE_PROC_GETPATH (1 << FS_COMMAND_GETPATH) -#define FS_ARCHIVE_PROC_OPENFILEFAST (1 << FS_COMMAND_OPENFILEFAST) -#define FS_ARCHIVE_PROC_OPENFILEDIRECT (1 << FS_COMMAND_OPENFILEDIRECT) -#define FS_ARCHIVE_PROC_CLOSEFILE (1 << FS_COMMAND_CLOSEFILE) -/* All synchronous commands*/ -#define FS_ARCHIVE_PROC_SYNC \ - (FS_ARCHIVE_PROC_SEEKDIR | FS_ARCHIVE_PROC_READDIR | \ - FS_ARCHIVE_PROC_FINDPATH | FS_ARCHIVE_PROC_GETPATH | \ - FS_ARCHIVE_PROC_OPENFILEFAST | FS_ARCHIVE_PROC_OPENFILEDIRECT | FS_ARCHIVE_PROC_CLOSEFILE) - -/* Messages when status changes*/ -#define FS_ARCHIVE_PROC_ACTIVATE (1 << FS_COMMAND_ACTIVATE) -#define FS_ARCHIVE_PROC_IDLE (1 << FS_COMMAND_IDLE) -#define FS_ARCHIVE_PROC_SUSPENDING (1 << FS_COMMAND_SUSPEND) -#define FS_ARCHIVE_PROC_RESUME (1 << FS_COMMAND_RESUME) -/* All messages when status changes*/ -#define FS_ARCHIVE_PROC_STATUS \ - (FS_ARCHIVE_PROC_ACTIVATE | FS_ARCHIVE_PROC_IDLE | \ - FS_ARCHIVE_PROC_SUSPENDING | FS_ARCHIVE_PROC_RESUME) - -#define FS_ARCHIVE_PROC_ALL (~0) - -typedef enum { - FS_RESULT_SUCCESS = 0, - FS_RESULT_FAILURE, - FS_RESULT_BUSY, - FS_RESULT_CANCELED, - FS_RESULT_CANCELLED = FS_RESULT_CANCELED, // SDK alias - FS_RESULT_UNSUPPORTED, - FS_RESULT_ERROR, - FS_RESULT_PROC_ASYNC, - FS_RESULT_PROC_DEFAULT, - FS_RESULT_PROC_UNKNOWN -} -FSResult; - -typedef FSResult (*FS_ARCHIVE_READ_FUNC) (struct FSArchive *p, void *dst, u32 pos, u32 size); -typedef FSResult (*FS_ARCHIVE_WRITE_FUNC) (struct FSArchive *p, const void *src, u32 pos, u32 size); -typedef FSResult (*FS_ARCHIVE_PROC_FUNC) (struct FSFile *, FSCommandType); - -typedef struct -{ - struct FSFile * prev; - struct FSFile * next; -} -FSFileLink; - -typedef struct -{ - u32 start; - u16 index; - u16 parent; -} FSArchiveFNT; - -typedef struct -{ - u32 top; - u32 bottom; -} FSArchiveFAT; - -typedef struct FSArchive -{ - union - { - char ptr[4]; - u32 pack; - } name; - struct FSArchive * next; - struct FSArchive * prev; - OSThreadQueue sync_q; - OSThreadQueue stat_q; - u32 flag; - FSFileLink list; - u32 base; - u32 fat; - u32 fat_size; - u32 fnt; - u32 fnt_size; - u32 fat_bak; - u32 fnt_bak; - void * load_mem; - FS_ARCHIVE_READ_FUNC read_func; - FS_ARCHIVE_WRITE_FUNC write_func; - FS_ARCHIVE_READ_FUNC table_func; - FS_ARCHIVE_PROC_FUNC proc; - u32 proc_flag; -} FSArchive; - -static inline BOOL FS_IsArchiveLoaded(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_LOADED) ? TRUE : FALSE; -} - -static inline u32 FS_GetArchiveOffset(const FSArchive * p_arc, u32 pos) -{ - return p_arc->base + pos; -} - -static inline BOOL FSi_IsArchiveCanceling(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_CANCELING) != 0; -} - -static inline BOOL FS_IsArchiveSuspended(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_SUSPEND) ? TRUE : FALSE; -} - -static inline BOOL FSi_IsArchiveSuspending(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_SUSPENDING) != 0; -} - -static inline BOOL FSi_IsArchiveRunning(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_RUNNING) != 0; -} - -static inline BOOL FSi_IsArchiveUnloading(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_UNLOADING) != 0; -} - -static inline BOOL FSi_IsArchiveAsync(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_IS_ASYNC) != 0; -} - -static inline BOOL FSi_IsArchiveSync(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_IS_SYNC) != 0; -} - -static inline BOOL FS_IsArchiveTableLoaded(volatile const FSArchive * p_arc) -{ - return (p_arc->flag & FS_ARCHIVE_FLAG_TABLE_LOAD) ? TRUE : FALSE; -} - -u32 FSi_GetPackedName(const char * name, int name_len); -FSResult FSi_ReadMemCallback(struct FSArchive * p_arc, void * dest, u32 pos, u32 size); -FSResult FSi_WriteMemCallback(struct FSArchive * p_arc, const void * src, u32 pos, u32 size); -FSResult FSi_ReadMemoryCore(struct FSArchive * p_arc, void * dest, u32 pos, u32 size); -struct FSFile * FSi_NextCommand(struct FSArchive * p_arc); -void FSi_ExecuteAsyncCommand(struct FSFile * p_file); -BOOL FSi_ExecuteSyncCommand(struct FSFile * file); -BOOL FSi_SendCommand(struct FSFile * file, FSCommandType command); -void FS_InitArchive(struct FSArchive * p_arc); -struct FSArchive * const FS_FindArchive(const char * path, int offset); -BOOL FS_RegisterArchiveName(struct FSArchive * p_arc, const char * name, int name_len); -void FS_ReleaseArchiveName(struct FSArchive * p_arc); -BOOL FS_LoadArchive(struct FSArchive * p_arc, u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func); -BOOL FS_UnloadArchive(struct FSArchive * p_arc); -u32 FS_LoadArchiveTables(struct FSArchive *p_arc, void *p_mem, u32 max_size); -void * FS_UnloadArchiveTables(struct FSArchive * p_arc); -BOOL FS_SuspendArchive(struct FSArchive * p_arc); -BOOL FS_ResumeArchive(struct FSArchive * p_arc); -void FS_SetArchiveProc(struct FSArchive * p_arc, FS_ARCHIVE_PROC_FUNC proc, u32 flags); -void FS_NotifyArchiveAsyncEnd(struct FSArchive *p_arc, FSResult ret); - -#endif //NITRO_FS_ARCHIVE_H_ diff --git a/lib/include/nitro/fs/file.h b/lib/include/nitro/fs/file.h deleted file mode 100644 index 2079566a..00000000 --- a/lib/include/nitro/fs/file.h +++ /dev/null @@ -1,227 +0,0 @@ -#ifndef NITRO_FS_FILE_H_ -#define NITRO_FS_FILE_H_ - -#include - -#define FS_FILE_STATUS_BUSY 0x00000001 -#define FS_FILE_STATUS_CANCEL 0x00000002 -#define FS_FILE_STATUS_SYNC 0x00000004 -#define FS_FILE_STATUS_ASYNC 0x00000008 -#define FS_FILE_STATUS_IS_FILE 0x00000010 -#define FS_FILE_STATUS_IS_DIR 0x00000020 -#define FS_FILE_STATUS_OPERATING 0x00000040 - -#define FS_FILE_NAME_MAX 127 - -typedef enum FSSeekFileMode -{ - FS_SEEK_SET = 0, - FS_SEEK_CUR, - FS_SEEK_END -} FSSeekFileMode; - -struct FSFile; - -#define FS_DMA_NOT_USE ((u32)~0) - -typedef struct FSDirPos -{ - struct FSArchive *arc; - u16 own_id; - u16 index; - u32 pos; -} -FSDirPos; // size = 0xC - -typedef struct FSFileID -{ - struct FSArchive *arc; - u32 file_id; -} -FSFileID; - -typedef struct -{ - union - { - FSFileID file_id; - FSDirPos dir_id; - }; - u32 is_directory; - u32 name_len; - char name[128]; -} -FSDirEntry; - - -typedef struct -{ - FSDirPos pos; -} -FSSeekDirInfo; - - -typedef struct -{ - FSDirEntry *p_entry; - BOOL skip_string; -} -FSReadDirInfo; - - -typedef struct -{ - FSDirPos pos; - const char *path; - BOOL find_directory; - union - { - FSFileID *file; - FSDirPos *dir; - } - result; -} -FSFindPathInfo; - - -typedef struct -{ - u8 *buf; - u32 buf_len; - u16 total_len; - u16 dir_id; -} -FSGetPathInfo; - - -typedef struct -{ - FSFileID id; -} -FSOpenFileFastInfo; - - -typedef struct -{ - u32 top; - u32 bottom; - u32 index; -} -FSOpenFileDirectInfo; - - -typedef struct -{ - u32 reserved; -} -FSCloseFileInfo; - - -typedef struct -{ - void *dst; - u32 len_org; - u32 len; -} -FSReadFileInfo; - - -typedef struct -{ - const void *src; - u32 len_org; - u32 len; -} -FSWriteFileInfo; - -typedef struct FSFile -{ - FSFileLink link; // 0x00 - struct FSArchive *arc; // 0x08 - u32 stat; // 0xC - FSCommandType command; // 0x10 - FSResult error; // 0x14 - OSThreadQueue queue[1]; // 0x18 - union { - struct - { - u32 own_id; // 0x20 - u32 top; // 0x24 - u32 bottom; // 0x28 - u32 pos; // 0x2C - } file; - struct - { - FSDirPos pos; // 0x20 - u32 parent; // 0x2C - } dir; - } prop; // 0x20 - - union { - FSReadFileInfo readfile; // 0x30 - FSWriteFileInfo writefile; // 0x30 - - FSSeekDirInfo seekdir; // 0x30 - FSReadDirInfo readdir; // 0x30 - FSFindPathInfo findpath; // 0x30 - FSGetPathInfo getpath; // 0x30 - FSOpenFileFastInfo openfilefast; // 0x30 - FSOpenFileDirectInfo openfiledirect; // 0x30 - FSCloseFileInfo closefile; // 0x30 - } arg; // 0x30 -} -FSFile; // size = 0x50 - -void FS_Init(u32 default_dma_no); -BOOL FS_IsAvailable(void); -void FS_InitFile(FSFile * p_file); -int FSi_ReadFileCore(FSFile * p_file, void * dst, s32 len, BOOL async); -BOOL FS_ConvertPathToFileID(FSFileID * p_file_id, const char * path); -BOOL FS_OpenFileDirect(FSFile * p_file, FSArchive * p_arc, u32 image_top, u32 image_bottom, u32 file_index); -BOOL FS_OpenFileFast(FSFile * p_file, FSFileID file_id); -BOOL FS_OpenFile(FSFile * p_file, const char * path); -BOOL FS_CloseFile(FSFile * p_file); -BOOL FS_WaitAsync(FSFile * p_file); -int FS_ReadFileAsync(FSFile * p_file, void * dst, s32 len); -int FS_ReadFile(FSFile * p_file, void * dst, s32 len); -BOOL FS_SeekFile(FSFile * p_file, s32 offset, FSSeekFileMode origin); -BOOL FS_ChangeDir(const char * path); -u32 FS_SetDefaultDMA(u32 dma_no); - -static inline u32 const FS_GetFileImageTop(volatile const FSFile * p_file) { - return p_file->prop.file.top; -} - -static inline u32 const FS_GetLength(volatile const FSFile * p_file) -{ - return p_file->prop.file.bottom - p_file->prop.file.top; -} - -static inline BOOL FS_IsCanceling(volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_CANCEL) ? TRUE : FALSE; -} - -static inline BOOL FS_IsFileSyncMode(volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_SYNC) ? TRUE : FALSE; -} - -static inline BOOL FS_IsBusy(volatile const FSFile * p_file) -{ - return p_file->stat & FS_FILE_STATUS_BUSY ? TRUE : FALSE; -} - -static inline BOOL FS_IsSucceeded(volatile const FSFile * p_file) -{ - return (p_file->error == FS_RESULT_SUCCESS) ? TRUE : FALSE; -} - -static inline BOOL FS_IsDir(volatile const FSFile * p_file) -{ - return (p_file->stat & FS_FILE_STATUS_IS_DIR) ? TRUE : FALSE; -} - -u32 FS_TryLoadTable(void *p_mem, u32 maxsize); - -#endif //NITRO_FS_FILE_H_ diff --git a/lib/include/nitro/fs/overlay.h b/lib/include/nitro/fs/overlay.h deleted file mode 100644 index 7bca17f6..00000000 --- a/lib/include/nitro/fs/overlay.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef NITRO_FS_OVERLAY_H_ -#define NITRO_FS_OVERLAY_H_ - -#if defined(__cplusplus) -extern "C" { -#endif - -#ifdef SDK_ASM -#define FS_EXTERN_OVERLAY(name) .public SDK_OVERLAY_##name##_ID -#define FS_OVERLAY_ID(name) SDK_OVERLAY_##name##_ID -#else -#include -#include -#include - -typedef u32 FSOverlayID; - -#define FS_EXTERN_OVERLAY(name) extern u32 SDK_OVERLAY_ ## name ## _ID[1] -#define FS_OVERLAY_ID(name) ((u32)&(SDK_OVERLAY_ ## name ## _ID)) - -typedef void (*FSOverlayInitFunc)(void); - -typedef struct FSOverlayInfoHeader -{ - u32 id; - u8 *ram_address; - u32 ram_size; - u32 bss_size; - FSOverlayInitFunc *sinit_init; - FSOverlayInitFunc *sinit_init_end; - u32 file_id; - u32 compressed: 24; - u32 flag: 8; -} FSOverlayInfoHeader; - -typedef struct FSOverlayInfo -{ - FSOverlayInfoHeader header; - MIProcessor target; - CARDRomRegion file_pos; -} FSOverlayInfo; - -static inline u8 *const FS_GetOverlayAddress(FSOverlayInfo *p_ovi) -{ - return p_ovi->header.ram_address; -} - -static inline u32 const FS_GetOverlayImageSize(FSOverlayInfo *p_ovi) -{ - return p_ovi->header.ram_size; -} - -static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo *p_ovi) -{ - return p_ovi->header.ram_size + p_ovi->header.bss_size; -} - -u32 FSi_GetOverlayBinarySize(FSOverlayInfo * p_ovi); -void FS_ClearOverlayImage(FSOverlayInfo * p_ovi); -FSFileID FS_GetOverlayFileID(FSOverlayInfo * p_ovi); -BOOL FSi_LoadOverlayInfoCore(FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id, FSArchive * arc, u32 offset_arm9, u32 len_arm9, u32 offset_arm7, u32 len_arm7); -BOOL FS_LoadOverlayInfo(FSOverlayInfo *p_ovi, MIProcessor target, FSOverlayID id); -BOOL FS_LoadOverlayImageAsync(FSOverlayInfo *p_ovi, FSFile *p_file); -BOOL FS_LoadOverlayImage(FSOverlayInfo *p_ovi); -BOOL FSi_CompareDigest(const u8 *spec_digest, void *src, u32 len); -void FS_StartOverlay(FSOverlayInfo *p_ovi); -void FS_EndOverlay(FSOverlayInfo *p_ovi); -BOOL FS_UnloadOverlayImage(FSOverlayInfo * p_ovi); -BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id); -BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id); -#endif - -#if defined(__cplusplus) -} -#endif - -#endif //NITRO_FS_OVERLAY_H_ diff --git a/lib/include/nitro/fx.h b/lib/include/nitro/fx.h deleted file mode 100644 index 3e53474b..00000000 --- a/lib/include/nitro/fx.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NITRO_FX_H_ -#define NITRO_FX_H_ - -#include -#include -#include -#include -#include -#include - -#endif //NITRO_FX_H_ diff --git a/lib/include/nitro/fx/.gitignore b/lib/include/nitro/fx/.gitignore deleted file mode 100644 index e0c047f4..00000000 --- a/lib/include/nitro/fx/.gitignore +++ /dev/null @@ -1 +0,0 @@ -fx_const.h diff --git a/lib/include/nitro/fx/fx.h b/lib/include/nitro/fx/fx.h deleted file mode 100644 index fe70c575..00000000 --- a/lib/include/nitro/fx/fx.h +++ /dev/null @@ -1,186 +0,0 @@ -#ifndef NITRO_FX_FX_H_ -#define NITRO_FX_FX_H_ - -// 19.12 -typedef s32 fx32; -#define FX32_SHIFT 12 -#define FX32_INT_SIZE 19 -#define FX32_DEC_SIZE 12 - -#define FX32_INT_MASK 0x7ffff000 -#define FX32_DEC_MASK 0x00000fff -#define FX32_SIGN_MASK 0x80000000 - -#define FX32_MAX ((fx32)0x7fffffff) -#define FX32_MIN ((fx32)0x80000000) - -#define FX_MUL(v1, v2) FX32_CAST(((fx64)(v1) * (v2) + 0x800LL) >> FX32_SHIFT) -#define FX_MUL32x64C(v1, v2) FX32_CAST(((v2) * (v1) + 0x80000000LL) >> 32) - -#define FX_FX32_TO_F32(x) ((f32)((x) / (f32)(1 << FX32_SHIFT))) -#define FX_F32_TO_FX32(x) ((fx32)(((x) > 0) ? \ - ((x) * (1 << FX32_SHIFT) + 0.5f ) : \ - ((x) * (1 << FX32_SHIFT) - 0.5f ))) - -#define FX32_CONST(x) FX_F32_TO_FX32(x) - -// 51.12 -typedef s64 fx64; -#define FX64_SHIFT 12 -#define FX64_INT_SIZE 51 -#define FX64_DEC_SIZE 12 - -#define FX64_INT_MASK ((fx64)0x7ffffffffffff000) -#define FX64_DEC_MASK ((fx64)0x0000000000000fff) -#define FX64_SIGN_MASK ((fx64)0x8000000000000000) - -#define FX64_MAX ((fx64)0x7fffffffffffffff) -#define FX64_MIN ((fx64)0x8000000000000000) - -#define FX_FX64_TO_F32(x) ((f32)((x) / (f32)(1 << FX64_SHIFT))) -#define FX_F32_TO_FX64(x) ((fx64)(((x) > 0) ? \ - ((x) * (1 << FX32_SHIFT) + 0.5f ) : \ - ((x) * (1 << FX32_SHIFT) - 0.5f ))) - -#define FX64_CONST(x) FX_F32_TO_FX64(x) - -// 31.32 -typedef s64 fx64c; -#define FX64C_SHIFT 32 -#define FX64C_INT_SIZE 31 -#define FX64C_DEC_SIZE 32 - -#define FX64C_INT_MASK ((fx64c)0x7fffffff00000000) -#define FX64C_DEC_MASK ((fx64c)0x00000000ffffffff) -#define FX64C_SIGN_MASK ((fx64c)0x8000000000000000) - -#define FX64C_MAX ((fx64c)0x7fffffffffffffff) -#define FX64C_MIN ((fx64c)0x8000000000000000) - -#define FX_FX64C_TO_F32(x) ((f32)((x) / (f32)((fx64c)1 << FX64C_SHIFT))) -#define FX_F32_TO_FX64C(x) ((fx64c)(((x) > 0) ? \ - ((x) * ((fx64c)1 << FX64C_SHIFT) + 0.5f ) : \ - ((x) * ((fx64c)1 << FX64C_SHIFT) - 0.5f ))) - -#define FX64C_CONST(x) FX_F32_TO_FX64C(x) - -// 3.12 -typedef s16 fx16; -#define FX16_SHIFT 12 -#define FX16_INT_SIZE 3 -#define FX16_DEC_SIZE 12 - -#define FX16_INT_MASK 0x7000 -#define FX16_DEC_MASK 0x0fff -#define FX16_SIGN_MASK 0x8000 - -/* 7.999759 */ -#define FX16_MAX ((fx16)0x7fff) -/* -8 */ -#define FX16_MIN ((fx16)0x8000) - -#define FX_FX16_TO_F32(x) ((f32)((x) / (f32)(1 << FX16_SHIFT))) -#define FX_F32_TO_FX16(x) ((fx16)(((x) > 0) ? \ - (fx16)((x) * (1 << FX16_SHIFT) + 0.5f ) : \ - (fx16)((x) * (1 << FX16_SHIFT) - 0.5f ))) - -#define FX16_CONST(x) FX_F32_TO_FX16(x) - -// Vectors -typedef struct { - fx32 x; - fx32 y; - fx32 z; -} VecFx32; - -typedef struct { - fx16 x; - fx16 y; - fx16 z; -} VecFx16; - -// Matrices -typedef union { - struct { - fx32 _00, _01, _02, _03; - fx32 _10, _11, _12, _13; - fx32 _20, _21, _22, _23; - fx32 _30, _31, _32, _33; - }; - fx32 m[4][4]; - fx32 a[16]; -} MtxFx44; - -typedef union { - struct { - fx32 _00, _01, _02; - fx32 _10, _11, _12; - fx32 _20, _21, _22; - fx32 _30, _31, _32; - }; - fx32 m[4][3]; - fx32 a[12]; -} MtxFx43; - -typedef union { - struct { - fx32 _00, _01, _02; - fx32 _10, _11, _12; - fx32 _20, _21, _22; - }; - fx32 m[3][3]; - fx32 a[9]; -} MtxFx33; - -typedef union { - struct { - fx32 _00, _01; - fx32 _10, _11; - }; - fx32 m[2][2]; - fx32 a[4]; -} MtxFx22; - -static inline s32 FX_Whole(fx32 v) { - return v >> FX32_SHIFT; -} - -static inline fx32 FX_Floor(fx32 v) { - return v & (FX32_INT_MASK | FX32_SIGN_MASK); -} - -static inline fx32 FX32_CAST(s64 res) { - return (fx32)res; -} - -fx32 FX_MulFunc(fx32 v1, fx32 v2); -static inline fx32 FX_MulInline(fx32 v1, fx32 v2) { - return ((s64)v1 * v2 + 0x800LL) >> FX32_SHIFT; -} - -fx32 FX_Mul32x64cFunc(fx32 v32, fx64c v64c); -static inline fx32 FX_Mul32x64cInline(fx32 v32, fx64c v64c) { - fx64c tmp = v64c * v32 + 0x80000000LL; // for better precision - return FX32_CAST(tmp >> FX64C_SHIFT); -} - -// ARM uses the inline version, THUMB uses the function version -#ifndef FX_Mul -#ifdef SDK_CODE_ARM -#define FX_Mul(v1, v2) FX_MulInline(v1, v2) -#else -#define FX_Mul(v1, v2) FX_MulFunc(v1, v2) -#endif //SDK_CODE_ARM -#endif //FX_Mul - -#ifndef FX_Mul32x64c -#ifdef SDK_CODE_ARM -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cInline(v32, v64c) -#else -#define FX_Mul32x64c(v32, v64c) FX_Mul32x64cFunc(v32, v64c) -#endif //SDK_CODE_ARM -#endif //FX_Mul32x64c - -void FX_Init(void); - -#endif //NITRO_FX_FX_H_ diff --git a/lib/include/nitro/fx/fx_const.h b/lib/include/nitro/fx/fx_const.h new file mode 100644 index 00000000..96d7cb4a --- /dev/null +++ b/lib/include/nitro/fx/fx_const.h @@ -0,0 +1,866 @@ +#ifndef LIB_INCLUDE_NITRO_FX_FX_CONST_H_ +#define LIB_INCLUDE_NITRO_FX_FX_CONST_H_ + +#define FX64C_E ((fx64c) 0x00000002b7e15163LL) // 2.718281828459 +#define FX64C_LOG2E ((fx64c) 0x0000000171547653LL) // 1.442695040889 +#define FX64C_LOG10E ((fx64c) 0x000000006f2dec55LL) // 0.434294481903 +#define FX64C_LN2 ((fx64c) 0x00000000b17217f8LL) // 0.693147180560 +#define FX64C_LN10 ((fx64c) 0x000000024d763777LL) // 2.302585092994 +#define FX64C_PI ((fx64c) 0x00000003243f6a89LL) // 3.141592653590 +#define FX64C_TWOPI ((fx64c) 0x00000006487ed511LL) // 6.283185307180 +#define FX64C_PI_2 ((fx64c) 0x00000001921fb544LL) // 1.570796326795 +#define FX64C_PI_4 ((fx64c) 0x00000000c90fdaa2LL) // 0.785398163397 +#define FX64C_3PI_4 ((fx64c) 0x000000025b2f8fe6LL) // 2.356194490192 +#define FX64C_SQRTPI ((fx64c) 0x00000001c5bf891bLL) // 1.772453850906 +#define FX64C_1_PI ((fx64c) 0x00000000517cc1b7LL) // 0.318309886184 +#define FX64C_2_PI ((fx64c) 0x00000000a2f9836eLL) // 0.636619772368 +#define FX64C_2_SQRTPI ((fx64c) 0x0000000120dd7504LL) // 1.128379167096 +#define FX64C_SQRT2 ((fx64c) 0x000000016a09e668LL) // 1.414213562373 +#define FX64C_SQRT1_2 ((fx64c) 0x00000000b504f334LL) // 0.707106781187 +#define FX64C_SQRT3 ((fx64c) 0x00000001bb67ae86LL) // 1.732050807569 +#define FX64C_SQRT1_3 ((fx64c) 0x0000000093cd3a2dLL) // 0.577350269190 +#define FX64C_IVLN10 ((fx64c) 0x000000006f2dec55LL) // 0.434294481903 +#define FX64C_LOG2_E ((fx64c) 0x00000000b17217f8LL) // 0.693147180560 +#define FX64C_INVLN2 ((fx64c) 0x0000000171547653LL) // 1.442695040889 +#define FX64C_1_360 ((fx64c) 0x0000000000b60b61LL) // 0.002777777778 +#define FX64C_TWOPI_360 ((fx64c) 0x000000000477d1a9LL) // 0.017453292520 +#define FX64C_360_TWOPI ((fx64c) 0x000000394bb834c8LL) // 57.295779513082 +#define FX64C_65536_TWOPI ((fx64c) 0x000028be60db9391LL) // 10430.378350470453 +#define FX64C_65536_360 ((fx64c) 0x000000b60b60b60bLL) // 182.044444444444 +#define FX64C_TWOPI_65536 ((fx64c) 0x000000000006487fLL) // 0.000095873799 +#define FX64C_360_65536 ((fx64c) 0x0000000001680000LL) // 0.005493164062 +#define FX64C_1_100 ((fx64c) 0x00000000028f5c29LL) // 0.010000000000 +#define FX64C_2_100 ((fx64c) 0x00000000051eb852LL) // 0.020000000000 +#define FX64C_3_100 ((fx64c) 0x0000000007ae147bLL) // 0.030000000000 +#define FX64C_4_100 ((fx64c) 0x000000000a3d70a4LL) // 0.040000000000 +#define FX64C_5_100 ((fx64c) 0x000000000ccccccdLL) // 0.050000000000 +#define FX64C_6_100 ((fx64c) 0x000000000f5c28f6LL) // 0.060000000000 +#define FX64C_7_100 ((fx64c) 0x0000000011eb851fLL) // 0.070000000000 +#define FX64C_8_100 ((fx64c) 0x00000000147ae148LL) // 0.080000000000 +#define FX64C_9_100 ((fx64c) 0x00000000170a3d71LL) // 0.090000000000 +#define FX64C_10_100 ((fx64c) 0x000000001999999aLL) // 0.100000000000 +#define FX64C_11_100 ((fx64c) 0x000000001c28f5c3LL) // 0.110000000000 +#define FX64C_12_100 ((fx64c) 0x000000001eb851ecLL) // 0.120000000000 +#define FX64C_13_100 ((fx64c) 0x000000002147ae14LL) // 0.130000000000 +#define FX64C_14_100 ((fx64c) 0x0000000023d70a3dLL) // 0.140000000000 +#define FX64C_15_100 ((fx64c) 0x0000000026666666LL) // 0.150000000000 +#define FX64C_16_100 ((fx64c) 0x0000000028f5c28fLL) // 0.160000000000 +#define FX64C_17_100 ((fx64c) 0x000000002b851eb8LL) // 0.170000000000 +#define FX64C_18_100 ((fx64c) 0x000000002e147ae1LL) // 0.180000000000 +#define FX64C_19_100 ((fx64c) 0x0000000030a3d70aLL) // 0.190000000000 +#define FX64C_20_100 ((fx64c) 0x0000000033333333LL) // 0.200000000000 +#define FX64C_21_100 ((fx64c) 0x0000000035c28f5cLL) // 0.210000000000 +#define FX64C_22_100 ((fx64c) 0x000000003851eb85LL) // 0.220000000000 +#define FX64C_23_100 ((fx64c) 0x000000003ae147aeLL) // 0.230000000000 +#define FX64C_24_100 ((fx64c) 0x000000003d70a3d7LL) // 0.240000000000 +#define FX64C_25_100 ((fx64c) 0x0000000040000000LL) // 0.250000000000 +#define FX64C_26_100 ((fx64c) 0x00000000428f5c29LL) // 0.260000000000 +#define FX64C_27_100 ((fx64c) 0x00000000451eb852LL) // 0.270000000000 +#define FX64C_28_100 ((fx64c) 0x0000000047ae147bLL) // 0.280000000000 +#define FX64C_29_100 ((fx64c) 0x000000004a3d70a4LL) // 0.290000000000 +#define FX64C_30_100 ((fx64c) 0x000000004ccccccdLL) // 0.300000000000 +#define FX64C_31_100 ((fx64c) 0x000000004f5c28f6LL) // 0.310000000000 +#define FX64C_32_100 ((fx64c) 0x0000000051eb851fLL) // 0.320000000000 +#define FX64C_33_100 ((fx64c) 0x00000000547ae148LL) // 0.330000000000 +#define FX64C_34_100 ((fx64c) 0x00000000570a3d71LL) // 0.340000000000 +#define FX64C_35_100 ((fx64c) 0x000000005999999aLL) // 0.350000000000 +#define FX64C_36_100 ((fx64c) 0x000000005c28f5c3LL) // 0.360000000000 +#define FX64C_37_100 ((fx64c) 0x000000005eb851ecLL) // 0.370000000000 +#define FX64C_38_100 ((fx64c) 0x000000006147ae14LL) // 0.380000000000 +#define FX64C_39_100 ((fx64c) 0x0000000063d70a3dLL) // 0.390000000000 +#define FX64C_40_100 ((fx64c) 0x0000000066666666LL) // 0.400000000000 +#define FX64C_41_100 ((fx64c) 0x0000000068f5c28fLL) // 0.410000000000 +#define FX64C_42_100 ((fx64c) 0x000000006b851eb8LL) // 0.420000000000 +#define FX64C_43_100 ((fx64c) 0x000000006e147ae1LL) // 0.430000000000 +#define FX64C_44_100 ((fx64c) 0x0000000070a3d70aLL) // 0.440000000000 +#define FX64C_45_100 ((fx64c) 0x0000000073333333LL) // 0.450000000000 +#define FX64C_46_100 ((fx64c) 0x0000000075c28f5cLL) // 0.460000000000 +#define FX64C_47_100 ((fx64c) 0x000000007851eb85LL) // 0.470000000000 +#define FX64C_48_100 ((fx64c) 0x000000007ae147aeLL) // 0.480000000000 +#define FX64C_49_100 ((fx64c) 0x000000007d70a3d7LL) // 0.490000000000 +#define FX64C_50_100 ((fx64c) 0x0000000080000000LL) // 0.500000000000 +#define FX64C_51_100 ((fx64c) 0x00000000828f5c29LL) // 0.510000000000 +#define FX64C_52_100 ((fx64c) 0x00000000851eb852LL) // 0.520000000000 +#define FX64C_53_100 ((fx64c) 0x0000000087ae147bLL) // 0.530000000000 +#define FX64C_54_100 ((fx64c) 0x000000008a3d70a4LL) // 0.540000000000 +#define FX64C_55_100 ((fx64c) 0x000000008ccccccdLL) // 0.550000000000 +#define FX64C_56_100 ((fx64c) 0x000000008f5c28f6LL) // 0.560000000000 +#define FX64C_57_100 ((fx64c) 0x0000000091eb851fLL) // 0.570000000000 +#define FX64C_58_100 ((fx64c) 0x00000000947ae148LL) // 0.580000000000 +#define FX64C_59_100 ((fx64c) 0x00000000970a3d71LL) // 0.590000000000 +#define FX64C_60_100 ((fx64c) 0x000000009999999aLL) // 0.600000000000 +#define FX64C_61_100 ((fx64c) 0x000000009c28f5c3LL) // 0.610000000000 +#define FX64C_62_100 ((fx64c) 0x000000009eb851ecLL) // 0.620000000000 +#define FX64C_63_100 ((fx64c) 0x00000000a147ae14LL) // 0.630000000000 +#define FX64C_64_100 ((fx64c) 0x00000000a3d70a3dLL) // 0.640000000000 +#define FX64C_65_100 ((fx64c) 0x00000000a6666666LL) // 0.650000000000 +#define FX64C_66_100 ((fx64c) 0x00000000a8f5c28fLL) // 0.660000000000 +#define FX64C_67_100 ((fx64c) 0x00000000ab851eb8LL) // 0.670000000000 +#define FX64C_68_100 ((fx64c) 0x00000000ae147ae1LL) // 0.680000000000 +#define FX64C_69_100 ((fx64c) 0x00000000b0a3d70aLL) // 0.690000000000 +#define FX64C_70_100 ((fx64c) 0x00000000b3333333LL) // 0.700000000000 +#define FX64C_71_100 ((fx64c) 0x00000000b5c28f5cLL) // 0.710000000000 +#define FX64C_72_100 ((fx64c) 0x00000000b851eb85LL) // 0.720000000000 +#define FX64C_73_100 ((fx64c) 0x00000000bae147aeLL) // 0.730000000000 +#define FX64C_74_100 ((fx64c) 0x00000000bd70a3d7LL) // 0.740000000000 +#define FX64C_75_100 ((fx64c) 0x00000000c0000000LL) // 0.750000000000 +#define FX64C_76_100 ((fx64c) 0x00000000c28f5c29LL) // 0.760000000000 +#define FX64C_77_100 ((fx64c) 0x00000000c51eb852LL) // 0.770000000000 +#define FX64C_78_100 ((fx64c) 0x00000000c7ae147bLL) // 0.780000000000 +#define FX64C_79_100 ((fx64c) 0x00000000ca3d70a4LL) // 0.790000000000 +#define FX64C_80_100 ((fx64c) 0x00000000cccccccdLL) // 0.800000000000 +#define FX64C_81_100 ((fx64c) 0x00000000cf5c28f6LL) // 0.810000000000 +#define FX64C_82_100 ((fx64c) 0x00000000d1eb851fLL) // 0.820000000000 +#define FX64C_83_100 ((fx64c) 0x00000000d47ae148LL) // 0.830000000000 +#define FX64C_84_100 ((fx64c) 0x00000000d70a3d71LL) // 0.840000000000 +#define FX64C_85_100 ((fx64c) 0x00000000d999999aLL) // 0.850000000000 +#define FX64C_86_100 ((fx64c) 0x00000000dc28f5c3LL) // 0.860000000000 +#define FX64C_87_100 ((fx64c) 0x00000000deb851ecLL) // 0.870000000000 +#define FX64C_88_100 ((fx64c) 0x00000000e147ae14LL) // 0.880000000000 +#define FX64C_89_100 ((fx64c) 0x00000000e3d70a3dLL) // 0.890000000000 +#define FX64C_90_100 ((fx64c) 0x00000000e6666666LL) // 0.900000000000 +#define FX64C_91_100 ((fx64c) 0x00000000e8f5c28fLL) // 0.910000000000 +#define FX64C_92_100 ((fx64c) 0x00000000eb851eb8LL) // 0.920000000000 +#define FX64C_93_100 ((fx64c) 0x00000000ee147ae1LL) // 0.930000000000 +#define FX64C_94_100 ((fx64c) 0x00000000f0a3d70aLL) // 0.940000000000 +#define FX64C_95_100 ((fx64c) 0x00000000f3333333LL) // 0.950000000000 +#define FX64C_96_100 ((fx64c) 0x00000000f5c28f5cLL) // 0.960000000000 +#define FX64C_97_100 ((fx64c) 0x00000000f851eb85LL) // 0.970000000000 +#define FX64C_98_100 ((fx64c) 0x00000000fae147aeLL) // 0.980000000000 +#define FX64C_99_100 ((fx64c) 0x00000000fd70a3d7LL) // 0.990000000000 +#define FX64C_ONE ((fx64c) 0x0000000100000000LL) // 1.000000000000 +#define FX64C_HALF ((fx64c) 0x0000000080000000LL) // 0.500000000000 +#define FX32_ONE ((fx32) 0x00001000L) // 1.000000000000 +#define FX32_HALF ((fx32) 0x00000800L) // 0.500000000000 +#define FX32_SQRT2 ((fx32) 0x000016a1L) // 1.414213562373 +#define FX32_SQRT1_2 ((fx32) 0x00000b50L) // 0.707106781187 +#define FX32_SQRT3 ((fx32) 0x00001bb6L) // 1.732050807569 +#define FX32_SQRT1_3 ((fx32) 0x0000093dL) // 0.577350269190 +#define FX16_ONE ((fx16) 0x1000) // 1.000000000000 +#define FX16_HALF ((fx16) 0x0800) // 0.500000000000 +#define FX16_SQRT2 ((fx16) 0x16a1) // 1.414213562373 +#define FX16_SQRT1_2 ((fx16) 0x0b50) // 0.707106781187 +#define FX16_SQRT3 ((fx16) 0x1bb6) // 1.732050807569 +#define FX16_SQRT1_3 ((fx16) 0x093d) // 0.577350269190 +#define FX32_SIN0 ((fx32) 0x00000000L) // 0.000000000000 +#define FX32_SIN1 ((fx32) 0x00000047L) // 0.017452406437 +#define FX32_SIN2 ((fx32) 0x0000008fL) // 0.034899496703 +#define FX32_SIN3 ((fx32) 0x000000d6L) // 0.052335956243 +#define FX32_SIN4 ((fx32) 0x0000011eL) // 0.069756473744 +#define FX32_SIN5 ((fx32) 0x00000165L) // 0.087155742748 +#define FX32_SIN6 ((fx32) 0x000001acL) // 0.104528463268 +#define FX32_SIN7 ((fx32) 0x000001f3L) // 0.121869343405 +#define FX32_SIN8 ((fx32) 0x0000023aL) // 0.139173100960 +#define FX32_SIN9 ((fx32) 0x00000281L) // 0.156434465040 +#define FX32_SIN10 ((fx32) 0x000002c7L) // 0.173648177667 +#define FX32_SIN11 ((fx32) 0x0000030eL) // 0.190808995377 +#define FX32_SIN12 ((fx32) 0x00000354L) // 0.207911690818 +#define FX32_SIN13 ((fx32) 0x00000399L) // 0.224951054344 +#define FX32_SIN14 ((fx32) 0x000003dfL) // 0.241921895600 +#define FX32_SIN15 ((fx32) 0x00000424L) // 0.258819045103 +#define FX32_SIN16 ((fx32) 0x00000469L) // 0.275637355817 +#define FX32_SIN17 ((fx32) 0x000004aeL) // 0.292371704723 +#define FX32_SIN18 ((fx32) 0x000004f2L) // 0.309016994375 +#define FX32_SIN19 ((fx32) 0x00000536L) // 0.325568154457 +#define FX32_SIN20 ((fx32) 0x00000579L) // 0.342020143326 +#define FX32_SIN21 ((fx32) 0x000005bcL) // 0.358367949545 +#define FX32_SIN22 ((fx32) 0x000005feL) // 0.374606593416 +#define FX32_SIN23 ((fx32) 0x00000640L) // 0.390731128489 +#define FX32_SIN24 ((fx32) 0x00000682L) // 0.406736643076 +#define FX32_SIN25 ((fx32) 0x000006c3L) // 0.422618261741 +#define FX32_SIN26 ((fx32) 0x00000704L) // 0.438371146789 +#define FX32_SIN27 ((fx32) 0x00000744L) // 0.453990499740 +#define FX32_SIN28 ((fx32) 0x00000783L) // 0.469471562786 +#define FX32_SIN29 ((fx32) 0x000007c2L) // 0.484809620246 +#define FX32_SIN30 ((fx32) 0x00000800L) // 0.500000000000 +#define FX32_SIN31 ((fx32) 0x0000083eL) // 0.515038074910 +#define FX32_SIN32 ((fx32) 0x0000087bL) // 0.529919264233 +#define FX32_SIN33 ((fx32) 0x000008b7L) // 0.544639035015 +#define FX32_SIN34 ((fx32) 0x000008f2L) // 0.559192903471 +#define FX32_SIN35 ((fx32) 0x0000092dL) // 0.573576436351 +#define FX32_SIN36 ((fx32) 0x00000968L) // 0.587785252292 +#define FX32_SIN37 ((fx32) 0x000009a1L) // 0.601815023152 +#define FX32_SIN38 ((fx32) 0x000009daL) // 0.615661475326 +#define FX32_SIN39 ((fx32) 0x00000a12L) // 0.629320391050 +#define FX32_SIN40 ((fx32) 0x00000a49L) // 0.642787609687 +#define FX32_SIN41 ((fx32) 0x00000a7fL) // 0.656059028991 +#define FX32_SIN42 ((fx32) 0x00000ab5L) // 0.669130606359 +#define FX32_SIN43 ((fx32) 0x00000ae9L) // 0.681998360062 +#define FX32_SIN44 ((fx32) 0x00000b1dL) // 0.694658370459 +#define FX32_SIN45 ((fx32) 0x00000b50L) // 0.707106781187 +#define FX32_SIN46 ((fx32) 0x00000b82L) // 0.719339800339 +#define FX32_SIN47 ((fx32) 0x00000bb4L) // 0.731353701619 +#define FX32_SIN48 ((fx32) 0x00000be4L) // 0.743144825477 +#define FX32_SIN49 ((fx32) 0x00000c13L) // 0.754709580223 +#define FX32_SIN50 ((fx32) 0x00000c42L) // 0.766044443119 +#define FX32_SIN51 ((fx32) 0x00000c6fL) // 0.777145961457 +#define FX32_SIN52 ((fx32) 0x00000c9cL) // 0.788010753607 +#define FX32_SIN53 ((fx32) 0x00000cc7L) // 0.798635510047 +#define FX32_SIN54 ((fx32) 0x00000cf2L) // 0.809016994375 +#define FX32_SIN55 ((fx32) 0x00000d1bL) // 0.819152044289 +#define FX32_SIN56 ((fx32) 0x00000d44L) // 0.829037572555 +#define FX32_SIN57 ((fx32) 0x00000d6bL) // 0.838670567945 +#define FX32_SIN58 ((fx32) 0x00000d92L) // 0.848048096156 +#define FX32_SIN59 ((fx32) 0x00000db7L) // 0.857167300702 +#define FX32_SIN60 ((fx32) 0x00000ddbL) // 0.866025403784 +#define FX32_SIN61 ((fx32) 0x00000dfeL) // 0.874619707139 +#define FX32_SIN62 ((fx32) 0x00000e21L) // 0.882947592859 +#define FX32_SIN63 ((fx32) 0x00000e42L) // 0.891006524188 +#define FX32_SIN64 ((fx32) 0x00000e61L) // 0.898794046299 +#define FX32_SIN65 ((fx32) 0x00000e80L) // 0.906307787037 +#define FX32_SIN66 ((fx32) 0x00000e9eL) // 0.913545457643 +#define FX32_SIN67 ((fx32) 0x00000ebaL) // 0.920504853452 +#define FX32_SIN68 ((fx32) 0x00000ed6L) // 0.927183854567 +#define FX32_SIN69 ((fx32) 0x00000ef0L) // 0.933580426497 +#define FX32_SIN70 ((fx32) 0x00000f09L) // 0.939692620786 +#define FX32_SIN71 ((fx32) 0x00000f21L) // 0.945518575599 +#define FX32_SIN72 ((fx32) 0x00000f38L) // 0.951056516295 +#define FX32_SIN73 ((fx32) 0x00000f4dL) // 0.956304755963 +#define FX32_SIN74 ((fx32) 0x00000f61L) // 0.961261695938 +#define FX32_SIN75 ((fx32) 0x00000f74L) // 0.965925826289 +#define FX32_SIN76 ((fx32) 0x00000f86L) // 0.970295726276 +#define FX32_SIN77 ((fx32) 0x00000f97L) // 0.974370064785 +#define FX32_SIN78 ((fx32) 0x00000fa6L) // 0.978147600734 +#define FX32_SIN79 ((fx32) 0x00000fb5L) // 0.981627183448 +#define FX32_SIN80 ((fx32) 0x00000fc2L) // 0.984807753012 +#define FX32_SIN81 ((fx32) 0x00000fceL) // 0.987688340595 +#define FX32_SIN82 ((fx32) 0x00000fd8L) // 0.990268068742 +#define FX32_SIN83 ((fx32) 0x00000fe1L) // 0.992546151641 +#define FX32_SIN84 ((fx32) 0x00000feaL) // 0.994521895368 +#define FX32_SIN85 ((fx32) 0x00000ff0L) // 0.996194698092 +#define FX32_SIN86 ((fx32) 0x00000ff6L) // 0.997564050260 +#define FX32_SIN87 ((fx32) 0x00000ffaL) // 0.998629534755 +#define FX32_SIN88 ((fx32) 0x00000ffeL) // 0.999390827019 +#define FX32_SIN89 ((fx32) 0x00000fffL) // 0.999847695156 +#define FX32_SIN90 ((fx32) 0x00001000L) // 1.000000000000 +#define FX32_SIN91 ((fx32) 0x00000fffL) // 0.999847695156 +#define FX32_SIN92 ((fx32) 0x00000ffeL) // 0.999390827019 +#define FX32_SIN93 ((fx32) 0x00000ffaL) // 0.998629534755 +#define FX32_SIN94 ((fx32) 0x00000ff6L) // 0.997564050260 +#define FX32_SIN95 ((fx32) 0x00000ff0L) // 0.996194698092 +#define FX32_SIN96 ((fx32) 0x00000feaL) // 0.994521895368 +#define FX32_SIN97 ((fx32) 0x00000fe1L) // 0.992546151641 +#define FX32_SIN98 ((fx32) 0x00000fd8L) // 0.990268068742 +#define FX32_SIN99 ((fx32) 0x00000fceL) // 0.987688340595 +#define FX32_SIN100 ((fx32) 0x00000fc2L) // 0.984807753012 +#define FX32_SIN101 ((fx32) 0x00000fb5L) // 0.981627183448 +#define FX32_SIN102 ((fx32) 0x00000fa6L) // 0.978147600734 +#define FX32_SIN103 ((fx32) 0x00000f97L) // 0.974370064785 +#define FX32_SIN104 ((fx32) 0x00000f86L) // 0.970295726276 +#define FX32_SIN105 ((fx32) 0x00000f74L) // 0.965925826289 +#define FX32_SIN106 ((fx32) 0x00000f61L) // 0.961261695938 +#define FX32_SIN107 ((fx32) 0x00000f4dL) // 0.956304755963 +#define FX32_SIN108 ((fx32) 0x00000f38L) // 0.951056516295 +#define FX32_SIN109 ((fx32) 0x00000f21L) // 0.945518575599 +#define FX32_SIN110 ((fx32) 0x00000f09L) // 0.939692620786 +#define FX32_SIN111 ((fx32) 0x00000ef0L) // 0.933580426497 +#define FX32_SIN112 ((fx32) 0x00000ed6L) // 0.927183854567 +#define FX32_SIN113 ((fx32) 0x00000ebaL) // 0.920504853452 +#define FX32_SIN114 ((fx32) 0x00000e9eL) // 0.913545457643 +#define FX32_SIN115 ((fx32) 0x00000e80L) // 0.906307787037 +#define FX32_SIN116 ((fx32) 0x00000e61L) // 0.898794046299 +#define FX32_SIN117 ((fx32) 0x00000e42L) // 0.891006524188 +#define FX32_SIN118 ((fx32) 0x00000e21L) // 0.882947592859 +#define FX32_SIN119 ((fx32) 0x00000dfeL) // 0.874619707139 +#define FX32_SIN120 ((fx32) 0x00000ddbL) // 0.866025403784 +#define FX32_SIN121 ((fx32) 0x00000db7L) // 0.857167300702 +#define FX32_SIN122 ((fx32) 0x00000d92L) // 0.848048096156 +#define FX32_SIN123 ((fx32) 0x00000d6bL) // 0.838670567945 +#define FX32_SIN124 ((fx32) 0x00000d44L) // 0.829037572555 +#define FX32_SIN125 ((fx32) 0x00000d1bL) // 0.819152044289 +#define FX32_SIN126 ((fx32) 0x00000cf2L) // 0.809016994375 +#define FX32_SIN127 ((fx32) 0x00000cc7L) // 0.798635510047 +#define FX32_SIN128 ((fx32) 0x00000c9cL) // 0.788010753607 +#define FX32_SIN129 ((fx32) 0x00000c6fL) // 0.777145961457 +#define FX32_SIN130 ((fx32) 0x00000c42L) // 0.766044443119 +#define FX32_SIN131 ((fx32) 0x00000c13L) // 0.754709580223 +#define FX32_SIN132 ((fx32) 0x00000be4L) // 0.743144825477 +#define FX32_SIN133 ((fx32) 0x00000bb4L) // 0.731353701619 +#define FX32_SIN134 ((fx32) 0x00000b82L) // 0.719339800339 +#define FX32_SIN135 ((fx32) 0x00000b50L) // 0.707106781187 +#define FX32_SIN136 ((fx32) 0x00000b1dL) // 0.694658370459 +#define FX32_SIN137 ((fx32) 0x00000ae9L) // 0.681998360062 +#define FX32_SIN138 ((fx32) 0x00000ab5L) // 0.669130606359 +#define FX32_SIN139 ((fx32) 0x00000a7fL) // 0.656059028991 +#define FX32_SIN140 ((fx32) 0x00000a49L) // 0.642787609687 +#define FX32_SIN141 ((fx32) 0x00000a12L) // 0.629320391050 +#define FX32_SIN142 ((fx32) 0x000009daL) // 0.615661475326 +#define FX32_SIN143 ((fx32) 0x000009a1L) // 0.601815023152 +#define FX32_SIN144 ((fx32) 0x00000968L) // 0.587785252292 +#define FX32_SIN145 ((fx32) 0x0000092dL) // 0.573576436351 +#define FX32_SIN146 ((fx32) 0x000008f2L) // 0.559192903471 +#define FX32_SIN147 ((fx32) 0x000008b7L) // 0.544639035015 +#define FX32_SIN148 ((fx32) 0x0000087bL) // 0.529919264233 +#define FX32_SIN149 ((fx32) 0x0000083eL) // 0.515038074910 +#define FX32_SIN150 ((fx32) 0x00000800L) // 0.500000000000 +#define FX32_SIN151 ((fx32) 0x000007c2L) // 0.484809620246 +#define FX32_SIN152 ((fx32) 0x00000783L) // 0.469471562786 +#define FX32_SIN153 ((fx32) 0x00000744L) // 0.453990499740 +#define FX32_SIN154 ((fx32) 0x00000704L) // 0.438371146789 +#define FX32_SIN155 ((fx32) 0x000006c3L) // 0.422618261741 +#define FX32_SIN156 ((fx32) 0x00000682L) // 0.406736643076 +#define FX32_SIN157 ((fx32) 0x00000640L) // 0.390731128489 +#define FX32_SIN158 ((fx32) 0x000005feL) // 0.374606593416 +#define FX32_SIN159 ((fx32) 0x000005bcL) // 0.358367949545 +#define FX32_SIN160 ((fx32) 0x00000579L) // 0.342020143326 +#define FX32_SIN161 ((fx32) 0x00000536L) // 0.325568154457 +#define FX32_SIN162 ((fx32) 0x000004f2L) // 0.309016994375 +#define FX32_SIN163 ((fx32) 0x000004aeL) // 0.292371704723 +#define FX32_SIN164 ((fx32) 0x00000469L) // 0.275637355817 +#define FX32_SIN165 ((fx32) 0x00000424L) // 0.258819045103 +#define FX32_SIN166 ((fx32) 0x000003dfL) // 0.241921895600 +#define FX32_SIN167 ((fx32) 0x00000399L) // 0.224951054344 +#define FX32_SIN168 ((fx32) 0x00000354L) // 0.207911690818 +#define FX32_SIN169 ((fx32) 0x0000030eL) // 0.190808995377 +#define FX32_SIN170 ((fx32) 0x000002c7L) // 0.173648177667 +#define FX32_SIN171 ((fx32) 0x00000281L) // 0.156434465040 +#define FX32_SIN172 ((fx32) 0x0000023aL) // 0.139173100960 +#define FX32_SIN173 ((fx32) 0x000001f3L) // 0.121869343405 +#define FX32_SIN174 ((fx32) 0x000001acL) // 0.104528463268 +#define FX32_SIN175 ((fx32) 0x00000165L) // 0.087155742748 +#define FX32_SIN176 ((fx32) 0x0000011eL) // 0.069756473744 +#define FX32_SIN177 ((fx32) 0x000000d6L) // 0.052335956243 +#define FX32_SIN178 ((fx32) 0x0000008fL) // 0.034899496703 +#define FX32_SIN179 ((fx32) 0x00000047L) // 0.017452406437 +#define FX32_SIN180 ((fx32) 0x00000000L) // 0.000000000000 +#define FX32_SIN181 ((fx32) 0xffffffb9L) // -0.017452406437 +#define FX32_SIN182 ((fx32) 0xffffff71L) // -0.034899496703 +#define FX32_SIN183 ((fx32) 0xffffff2aL) // -0.052335956243 +#define FX32_SIN184 ((fx32) 0xfffffee2L) // -0.069756473744 +#define FX32_SIN185 ((fx32) 0xfffffe9bL) // -0.087155742748 +#define FX32_SIN186 ((fx32) 0xfffffe54L) // -0.104528463268 +#define FX32_SIN187 ((fx32) 0xfffffe0dL) // -0.121869343405 +#define FX32_SIN188 ((fx32) 0xfffffdc6L) // -0.139173100960 +#define FX32_SIN189 ((fx32) 0xfffffd7fL) // -0.156434465040 +#define FX32_SIN190 ((fx32) 0xfffffd39L) // -0.173648177667 +#define FX32_SIN191 ((fx32) 0xfffffcf2L) // -0.190808995377 +#define FX32_SIN192 ((fx32) 0xfffffcacL) // -0.207911690818 +#define FX32_SIN193 ((fx32) 0xfffffc67L) // -0.224951054344 +#define FX32_SIN194 ((fx32) 0xfffffc21L) // -0.241921895600 +#define FX32_SIN195 ((fx32) 0xfffffbdcL) // -0.258819045103 +#define FX32_SIN196 ((fx32) 0xfffffb97L) // -0.275637355817 +#define FX32_SIN197 ((fx32) 0xfffffb52L) // -0.292371704723 +#define FX32_SIN198 ((fx32) 0xfffffb0eL) // -0.309016994375 +#define FX32_SIN199 ((fx32) 0xfffffacaL) // -0.325568154457 +#define FX32_SIN200 ((fx32) 0xfffffa87L) // -0.342020143326 +#define FX32_SIN201 ((fx32) 0xfffffa44L) // -0.358367949545 +#define FX32_SIN202 ((fx32) 0xfffffa02L) // -0.374606593416 +#define FX32_SIN203 ((fx32) 0xfffff9c0L) // -0.390731128489 +#define FX32_SIN204 ((fx32) 0xfffff97eL) // -0.406736643076 +#define FX32_SIN205 ((fx32) 0xfffff93dL) // -0.422618261741 +#define FX32_SIN206 ((fx32) 0xfffff8fcL) // -0.438371146789 +#define FX32_SIN207 ((fx32) 0xfffff8bcL) // -0.453990499740 +#define FX32_SIN208 ((fx32) 0xfffff87dL) // -0.469471562786 +#define FX32_SIN209 ((fx32) 0xfffff83eL) // -0.484809620246 +#define FX32_SIN210 ((fx32) 0xfffff800L) // -0.500000000000 +#define FX32_SIN211 ((fx32) 0xfffff7c2L) // -0.515038074910 +#define FX32_SIN212 ((fx32) 0xfffff785L) // -0.529919264233 +#define FX32_SIN213 ((fx32) 0xfffff749L) // -0.544639035015 +#define FX32_SIN214 ((fx32) 0xfffff70eL) // -0.559192903471 +#define FX32_SIN215 ((fx32) 0xfffff6d3L) // -0.573576436351 +#define FX32_SIN216 ((fx32) 0xfffff698L) // -0.587785252292 +#define FX32_SIN217 ((fx32) 0xfffff65fL) // -0.601815023152 +#define FX32_SIN218 ((fx32) 0xfffff626L) // -0.615661475326 +#define FX32_SIN219 ((fx32) 0xfffff5eeL) // -0.629320391050 +#define FX32_SIN220 ((fx32) 0xfffff5b7L) // -0.642787609687 +#define FX32_SIN221 ((fx32) 0xfffff581L) // -0.656059028991 +#define FX32_SIN222 ((fx32) 0xfffff54bL) // -0.669130606359 +#define FX32_SIN223 ((fx32) 0xfffff517L) // -0.681998360062 +#define FX32_SIN224 ((fx32) 0xfffff4e3L) // -0.694658370459 +#define FX32_SIN225 ((fx32) 0xfffff4b0L) // -0.707106781187 +#define FX32_SIN226 ((fx32) 0xfffff47eL) // -0.719339800339 +#define FX32_SIN227 ((fx32) 0xfffff44cL) // -0.731353701619 +#define FX32_SIN228 ((fx32) 0xfffff41cL) // -0.743144825477 +#define FX32_SIN229 ((fx32) 0xfffff3edL) // -0.754709580223 +#define FX32_SIN230 ((fx32) 0xfffff3beL) // -0.766044443119 +#define FX32_SIN231 ((fx32) 0xfffff391L) // -0.777145961457 +#define FX32_SIN232 ((fx32) 0xfffff364L) // -0.788010753607 +#define FX32_SIN233 ((fx32) 0xfffff339L) // -0.798635510047 +#define FX32_SIN234 ((fx32) 0xfffff30eL) // -0.809016994375 +#define FX32_SIN235 ((fx32) 0xfffff2e5L) // -0.819152044289 +#define FX32_SIN236 ((fx32) 0xfffff2bcL) // -0.829037572555 +#define FX32_SIN237 ((fx32) 0xfffff295L) // -0.838670567945 +#define FX32_SIN238 ((fx32) 0xfffff26eL) // -0.848048096156 +#define FX32_SIN239 ((fx32) 0xfffff249L) // -0.857167300702 +#define FX32_SIN240 ((fx32) 0xfffff225L) // -0.866025403784 +#define FX32_SIN241 ((fx32) 0xfffff202L) // -0.874619707139 +#define FX32_SIN242 ((fx32) 0xfffff1dfL) // -0.882947592859 +#define FX32_SIN243 ((fx32) 0xfffff1beL) // -0.891006524188 +#define FX32_SIN244 ((fx32) 0xfffff19fL) // -0.898794046299 +#define FX32_SIN245 ((fx32) 0xfffff180L) // -0.906307787037 +#define FX32_SIN246 ((fx32) 0xfffff162L) // -0.913545457643 +#define FX32_SIN247 ((fx32) 0xfffff146L) // -0.920504853452 +#define FX32_SIN248 ((fx32) 0xfffff12aL) // -0.927183854567 +#define FX32_SIN249 ((fx32) 0xfffff110L) // -0.933580426497 +#define FX32_SIN250 ((fx32) 0xfffff0f7L) // -0.939692620786 +#define FX32_SIN251 ((fx32) 0xfffff0dfL) // -0.945518575599 +#define FX32_SIN252 ((fx32) 0xfffff0c8L) // -0.951056516295 +#define FX32_SIN253 ((fx32) 0xfffff0b3L) // -0.956304755963 +#define FX32_SIN254 ((fx32) 0xfffff09fL) // -0.961261695938 +#define FX32_SIN255 ((fx32) 0xfffff08cL) // -0.965925826289 +#define FX32_SIN256 ((fx32) 0xfffff07aL) // -0.970295726276 +#define FX32_SIN257 ((fx32) 0xfffff069L) // -0.974370064785 +#define FX32_SIN258 ((fx32) 0xfffff05aL) // -0.978147600734 +#define FX32_SIN259 ((fx32) 0xfffff04bL) // -0.981627183448 +#define FX32_SIN260 ((fx32) 0xfffff03eL) // -0.984807753012 +#define FX32_SIN261 ((fx32) 0xfffff032L) // -0.987688340595 +#define FX32_SIN262 ((fx32) 0xfffff028L) // -0.990268068742 +#define FX32_SIN263 ((fx32) 0xfffff01fL) // -0.992546151641 +#define FX32_SIN264 ((fx32) 0xfffff016L) // -0.994521895368 +#define FX32_SIN265 ((fx32) 0xfffff010L) // -0.996194698092 +#define FX32_SIN266 ((fx32) 0xfffff00aL) // -0.997564050260 +#define FX32_SIN267 ((fx32) 0xfffff006L) // -0.998629534755 +#define FX32_SIN268 ((fx32) 0xfffff002L) // -0.999390827019 +#define FX32_SIN269 ((fx32) 0xfffff001L) // -0.999847695156 +#define FX32_SIN270 ((fx32) 0xfffff000L) // -1.000000000000 +#define FX32_SIN271 ((fx32) 0xfffff001L) // -0.999847695156 +#define FX32_SIN272 ((fx32) 0xfffff002L) // -0.999390827019 +#define FX32_SIN273 ((fx32) 0xfffff006L) // -0.998629534755 +#define FX32_SIN274 ((fx32) 0xfffff00aL) // -0.997564050260 +#define FX32_SIN275 ((fx32) 0xfffff010L) // -0.996194698092 +#define FX32_SIN276 ((fx32) 0xfffff016L) // -0.994521895368 +#define FX32_SIN277 ((fx32) 0xfffff01fL) // -0.992546151641 +#define FX32_SIN278 ((fx32) 0xfffff028L) // -0.990268068742 +#define FX32_SIN279 ((fx32) 0xfffff032L) // -0.987688340595 +#define FX32_SIN280 ((fx32) 0xfffff03eL) // -0.984807753012 +#define FX32_SIN281 ((fx32) 0xfffff04bL) // -0.981627183448 +#define FX32_SIN282 ((fx32) 0xfffff05aL) // -0.978147600734 +#define FX32_SIN283 ((fx32) 0xfffff069L) // -0.974370064785 +#define FX32_SIN284 ((fx32) 0xfffff07aL) // -0.970295726276 +#define FX32_SIN285 ((fx32) 0xfffff08cL) // -0.965925826289 +#define FX32_SIN286 ((fx32) 0xfffff09fL) // -0.961261695938 +#define FX32_SIN287 ((fx32) 0xfffff0b3L) // -0.956304755963 +#define FX32_SIN288 ((fx32) 0xfffff0c8L) // -0.951056516295 +#define FX32_SIN289 ((fx32) 0xfffff0dfL) // -0.945518575599 +#define FX32_SIN290 ((fx32) 0xfffff0f7L) // -0.939692620786 +#define FX32_SIN291 ((fx32) 0xfffff110L) // -0.933580426497 +#define FX32_SIN292 ((fx32) 0xfffff12aL) // -0.927183854567 +#define FX32_SIN293 ((fx32) 0xfffff146L) // -0.920504853452 +#define FX32_SIN294 ((fx32) 0xfffff162L) // -0.913545457643 +#define FX32_SIN295 ((fx32) 0xfffff180L) // -0.906307787037 +#define FX32_SIN296 ((fx32) 0xfffff19fL) // -0.898794046299 +#define FX32_SIN297 ((fx32) 0xfffff1beL) // -0.891006524188 +#define FX32_SIN298 ((fx32) 0xfffff1dfL) // -0.882947592859 +#define FX32_SIN299 ((fx32) 0xfffff202L) // -0.874619707139 +#define FX32_SIN300 ((fx32) 0xfffff225L) // -0.866025403784 +#define FX32_SIN301 ((fx32) 0xfffff249L) // -0.857167300702 +#define FX32_SIN302 ((fx32) 0xfffff26eL) // -0.848048096156 +#define FX32_SIN303 ((fx32) 0xfffff295L) // -0.838670567945 +#define FX32_SIN304 ((fx32) 0xfffff2bcL) // -0.829037572555 +#define FX32_SIN305 ((fx32) 0xfffff2e5L) // -0.819152044289 +#define FX32_SIN306 ((fx32) 0xfffff30eL) // -0.809016994375 +#define FX32_SIN307 ((fx32) 0xfffff339L) // -0.798635510047 +#define FX32_SIN308 ((fx32) 0xfffff364L) // -0.788010753607 +#define FX32_SIN309 ((fx32) 0xfffff391L) // -0.777145961457 +#define FX32_SIN310 ((fx32) 0xfffff3beL) // -0.766044443119 +#define FX32_SIN311 ((fx32) 0xfffff3edL) // -0.754709580223 +#define FX32_SIN312 ((fx32) 0xfffff41cL) // -0.743144825477 +#define FX32_SIN313 ((fx32) 0xfffff44cL) // -0.731353701619 +#define FX32_SIN314 ((fx32) 0xfffff47eL) // -0.719339800339 +#define FX32_SIN315 ((fx32) 0xfffff4b0L) // -0.707106781187 +#define FX32_SIN316 ((fx32) 0xfffff4e3L) // -0.694658370459 +#define FX32_SIN317 ((fx32) 0xfffff517L) // -0.681998360062 +#define FX32_SIN318 ((fx32) 0xfffff54bL) // -0.669130606359 +#define FX32_SIN319 ((fx32) 0xfffff581L) // -0.656059028991 +#define FX32_SIN320 ((fx32) 0xfffff5b7L) // -0.642787609687 +#define FX32_SIN321 ((fx32) 0xfffff5eeL) // -0.629320391050 +#define FX32_SIN322 ((fx32) 0xfffff626L) // -0.615661475326 +#define FX32_SIN323 ((fx32) 0xfffff65fL) // -0.601815023152 +#define FX32_SIN324 ((fx32) 0xfffff698L) // -0.587785252292 +#define FX32_SIN325 ((fx32) 0xfffff6d3L) // -0.573576436351 +#define FX32_SIN326 ((fx32) 0xfffff70eL) // -0.559192903471 +#define FX32_SIN327 ((fx32) 0xfffff749L) // -0.544639035015 +#define FX32_SIN328 ((fx32) 0xfffff785L) // -0.529919264233 +#define FX32_SIN329 ((fx32) 0xfffff7c2L) // -0.515038074910 +#define FX32_SIN330 ((fx32) 0xfffff800L) // -0.500000000000 +#define FX32_SIN331 ((fx32) 0xfffff83eL) // -0.484809620246 +#define FX32_SIN332 ((fx32) 0xfffff87dL) // -0.469471562786 +#define FX32_SIN333 ((fx32) 0xfffff8bcL) // -0.453990499740 +#define FX32_SIN334 ((fx32) 0xfffff8fcL) // -0.438371146789 +#define FX32_SIN335 ((fx32) 0xfffff93dL) // -0.422618261741 +#define FX32_SIN336 ((fx32) 0xfffff97eL) // -0.406736643076 +#define FX32_SIN337 ((fx32) 0xfffff9c0L) // -0.390731128489 +#define FX32_SIN338 ((fx32) 0xfffffa02L) // -0.374606593416 +#define FX32_SIN339 ((fx32) 0xfffffa44L) // -0.358367949545 +#define FX32_SIN340 ((fx32) 0xfffffa87L) // -0.342020143326 +#define FX32_SIN341 ((fx32) 0xfffffacaL) // -0.325568154457 +#define FX32_SIN342 ((fx32) 0xfffffb0eL) // -0.309016994375 +#define FX32_SIN343 ((fx32) 0xfffffb52L) // -0.292371704723 +#define FX32_SIN344 ((fx32) 0xfffffb97L) // -0.275637355817 +#define FX32_SIN345 ((fx32) 0xfffffbdcL) // -0.258819045103 +#define FX32_SIN346 ((fx32) 0xfffffc21L) // -0.241921895600 +#define FX32_SIN347 ((fx32) 0xfffffc67L) // -0.224951054344 +#define FX32_SIN348 ((fx32) 0xfffffcacL) // -0.207911690818 +#define FX32_SIN349 ((fx32) 0xfffffcf2L) // -0.190808995377 +#define FX32_SIN350 ((fx32) 0xfffffd39L) // -0.173648177667 +#define FX32_SIN351 ((fx32) 0xfffffd7fL) // -0.156434465040 +#define FX32_SIN352 ((fx32) 0xfffffdc6L) // -0.139173100960 +#define FX32_SIN353 ((fx32) 0xfffffe0dL) // -0.121869343405 +#define FX32_SIN354 ((fx32) 0xfffffe54L) // -0.104528463268 +#define FX32_SIN355 ((fx32) 0xfffffe9bL) // -0.087155742748 +#define FX32_SIN356 ((fx32) 0xfffffee2L) // -0.069756473744 +#define FX32_SIN357 ((fx32) 0xffffff2aL) // -0.052335956243 +#define FX32_SIN358 ((fx32) 0xffffff71L) // -0.034899496703 +#define FX32_SIN359 ((fx32) 0xffffffb9L) // -0.017452406437 +#define FX32_COS0 ((fx32) 0x00001000L) // 1.000000000000 +#define FX32_COS1 ((fx32) 0x00000fffL) // 0.999847695156 +#define FX32_COS2 ((fx32) 0x00000ffeL) // 0.999390827019 +#define FX32_COS3 ((fx32) 0x00000ffaL) // 0.998629534755 +#define FX32_COS4 ((fx32) 0x00000ff6L) // 0.997564050260 +#define FX32_COS5 ((fx32) 0x00000ff0L) // 0.996194698092 +#define FX32_COS6 ((fx32) 0x00000feaL) // 0.994521895368 +#define FX32_COS7 ((fx32) 0x00000fe1L) // 0.992546151641 +#define FX32_COS8 ((fx32) 0x00000fd8L) // 0.990268068742 +#define FX32_COS9 ((fx32) 0x00000fceL) // 0.987688340595 +#define FX32_COS10 ((fx32) 0x00000fc2L) // 0.984807753012 +#define FX32_COS11 ((fx32) 0x00000fb5L) // 0.981627183448 +#define FX32_COS12 ((fx32) 0x00000fa6L) // 0.978147600734 +#define FX32_COS13 ((fx32) 0x00000f97L) // 0.974370064785 +#define FX32_COS14 ((fx32) 0x00000f86L) // 0.970295726276 +#define FX32_COS15 ((fx32) 0x00000f74L) // 0.965925826289 +#define FX32_COS16 ((fx32) 0x00000f61L) // 0.961261695938 +#define FX32_COS17 ((fx32) 0x00000f4dL) // 0.956304755963 +#define FX32_COS18 ((fx32) 0x00000f38L) // 0.951056516295 +#define FX32_COS19 ((fx32) 0x00000f21L) // 0.945518575599 +#define FX32_COS20 ((fx32) 0x00000f09L) // 0.939692620786 +#define FX32_COS21 ((fx32) 0x00000ef0L) // 0.933580426497 +#define FX32_COS22 ((fx32) 0x00000ed6L) // 0.927183854567 +#define FX32_COS23 ((fx32) 0x00000ebaL) // 0.920504853452 +#define FX32_COS24 ((fx32) 0x00000e9eL) // 0.913545457643 +#define FX32_COS25 ((fx32) 0x00000e80L) // 0.906307787037 +#define FX32_COS26 ((fx32) 0x00000e61L) // 0.898794046299 +#define FX32_COS27 ((fx32) 0x00000e42L) // 0.891006524188 +#define FX32_COS28 ((fx32) 0x00000e21L) // 0.882947592859 +#define FX32_COS29 ((fx32) 0x00000dfeL) // 0.874619707139 +#define FX32_COS30 ((fx32) 0x00000ddbL) // 0.866025403784 +#define FX32_COS31 ((fx32) 0x00000db7L) // 0.857167300702 +#define FX32_COS32 ((fx32) 0x00000d92L) // 0.848048096156 +#define FX32_COS33 ((fx32) 0x00000d6bL) // 0.838670567945 +#define FX32_COS34 ((fx32) 0x00000d44L) // 0.829037572555 +#define FX32_COS35 ((fx32) 0x00000d1bL) // 0.819152044289 +#define FX32_COS36 ((fx32) 0x00000cf2L) // 0.809016994375 +#define FX32_COS37 ((fx32) 0x00000cc7L) // 0.798635510047 +#define FX32_COS38 ((fx32) 0x00000c9cL) // 0.788010753607 +#define FX32_COS39 ((fx32) 0x00000c6fL) // 0.777145961457 +#define FX32_COS40 ((fx32) 0x00000c42L) // 0.766044443119 +#define FX32_COS41 ((fx32) 0x00000c13L) // 0.754709580223 +#define FX32_COS42 ((fx32) 0x00000be4L) // 0.743144825477 +#define FX32_COS43 ((fx32) 0x00000bb4L) // 0.731353701619 +#define FX32_COS44 ((fx32) 0x00000b82L) // 0.719339800339 +#define FX32_COS45 ((fx32) 0x00000b50L) // 0.707106781187 +#define FX32_COS46 ((fx32) 0x00000b1dL) // 0.694658370459 +#define FX32_COS47 ((fx32) 0x00000ae9L) // 0.681998360062 +#define FX32_COS48 ((fx32) 0x00000ab5L) // 0.669130606359 +#define FX32_COS49 ((fx32) 0x00000a7fL) // 0.656059028991 +#define FX32_COS50 ((fx32) 0x00000a49L) // 0.642787609687 +#define FX32_COS51 ((fx32) 0x00000a12L) // 0.629320391050 +#define FX32_COS52 ((fx32) 0x000009daL) // 0.615661475326 +#define FX32_COS53 ((fx32) 0x000009a1L) // 0.601815023152 +#define FX32_COS54 ((fx32) 0x00000968L) // 0.587785252292 +#define FX32_COS55 ((fx32) 0x0000092dL) // 0.573576436351 +#define FX32_COS56 ((fx32) 0x000008f2L) // 0.559192903471 +#define FX32_COS57 ((fx32) 0x000008b7L) // 0.544639035015 +#define FX32_COS58 ((fx32) 0x0000087bL) // 0.529919264233 +#define FX32_COS59 ((fx32) 0x0000083eL) // 0.515038074910 +#define FX32_COS60 ((fx32) 0x00000800L) // 0.500000000000 +#define FX32_COS61 ((fx32) 0x000007c2L) // 0.484809620246 +#define FX32_COS62 ((fx32) 0x00000783L) // 0.469471562786 +#define FX32_COS63 ((fx32) 0x00000744L) // 0.453990499740 +#define FX32_COS64 ((fx32) 0x00000704L) // 0.438371146789 +#define FX32_COS65 ((fx32) 0x000006c3L) // 0.422618261741 +#define FX32_COS66 ((fx32) 0x00000682L) // 0.406736643076 +#define FX32_COS67 ((fx32) 0x00000640L) // 0.390731128489 +#define FX32_COS68 ((fx32) 0x000005feL) // 0.374606593416 +#define FX32_COS69 ((fx32) 0x000005bcL) // 0.358367949545 +#define FX32_COS70 ((fx32) 0x00000579L) // 0.342020143326 +#define FX32_COS71 ((fx32) 0x00000536L) // 0.325568154457 +#define FX32_COS72 ((fx32) 0x000004f2L) // 0.309016994375 +#define FX32_COS73 ((fx32) 0x000004aeL) // 0.292371704723 +#define FX32_COS74 ((fx32) 0x00000469L) // 0.275637355817 +#define FX32_COS75 ((fx32) 0x00000424L) // 0.258819045103 +#define FX32_COS76 ((fx32) 0x000003dfL) // 0.241921895600 +#define FX32_COS77 ((fx32) 0x00000399L) // 0.224951054344 +#define FX32_COS78 ((fx32) 0x00000354L) // 0.207911690818 +#define FX32_COS79 ((fx32) 0x0000030eL) // 0.190808995377 +#define FX32_COS80 ((fx32) 0x000002c7L) // 0.173648177667 +#define FX32_COS81 ((fx32) 0x00000281L) // 0.156434465040 +#define FX32_COS82 ((fx32) 0x0000023aL) // 0.139173100960 +#define FX32_COS83 ((fx32) 0x000001f3L) // 0.121869343405 +#define FX32_COS84 ((fx32) 0x000001acL) // 0.104528463268 +#define FX32_COS85 ((fx32) 0x00000165L) // 0.087155742748 +#define FX32_COS86 ((fx32) 0x0000011eL) // 0.069756473744 +#define FX32_COS87 ((fx32) 0x000000d6L) // 0.052335956243 +#define FX32_COS88 ((fx32) 0x0000008fL) // 0.034899496703 +#define FX32_COS89 ((fx32) 0x00000047L) // 0.017452406437 +#define FX32_COS90 ((fx32) 0x00000000L) // 0.000000000000 +#define FX32_COS91 ((fx32) 0xffffffb9L) // -0.017452406437 +#define FX32_COS92 ((fx32) 0xffffff71L) // -0.034899496703 +#define FX32_COS93 ((fx32) 0xffffff2aL) // -0.052335956243 +#define FX32_COS94 ((fx32) 0xfffffee2L) // -0.069756473744 +#define FX32_COS95 ((fx32) 0xfffffe9bL) // -0.087155742748 +#define FX32_COS96 ((fx32) 0xfffffe54L) // -0.104528463268 +#define FX32_COS97 ((fx32) 0xfffffe0dL) // -0.121869343405 +#define FX32_COS98 ((fx32) 0xfffffdc6L) // -0.139173100960 +#define FX32_COS99 ((fx32) 0xfffffd7fL) // -0.156434465040 +#define FX32_COS100 ((fx32) 0xfffffd39L) // -0.173648177667 +#define FX32_COS101 ((fx32) 0xfffffcf2L) // -0.190808995377 +#define FX32_COS102 ((fx32) 0xfffffcacL) // -0.207911690818 +#define FX32_COS103 ((fx32) 0xfffffc67L) // -0.224951054344 +#define FX32_COS104 ((fx32) 0xfffffc21L) // -0.241921895600 +#define FX32_COS105 ((fx32) 0xfffffbdcL) // -0.258819045103 +#define FX32_COS106 ((fx32) 0xfffffb97L) // -0.275637355817 +#define FX32_COS107 ((fx32) 0xfffffb52L) // -0.292371704723 +#define FX32_COS108 ((fx32) 0xfffffb0eL) // -0.309016994375 +#define FX32_COS109 ((fx32) 0xfffffacaL) // -0.325568154457 +#define FX32_COS110 ((fx32) 0xfffffa87L) // -0.342020143326 +#define FX32_COS111 ((fx32) 0xfffffa44L) // -0.358367949545 +#define FX32_COS112 ((fx32) 0xfffffa02L) // -0.374606593416 +#define FX32_COS113 ((fx32) 0xfffff9c0L) // -0.390731128489 +#define FX32_COS114 ((fx32) 0xfffff97eL) // -0.406736643076 +#define FX32_COS115 ((fx32) 0xfffff93dL) // -0.422618261741 +#define FX32_COS116 ((fx32) 0xfffff8fcL) // -0.438371146789 +#define FX32_COS117 ((fx32) 0xfffff8bcL) // -0.453990499740 +#define FX32_COS118 ((fx32) 0xfffff87dL) // -0.469471562786 +#define FX32_COS119 ((fx32) 0xfffff83eL) // -0.484809620246 +#define FX32_COS120 ((fx32) 0xfffff800L) // -0.500000000000 +#define FX32_COS121 ((fx32) 0xfffff7c2L) // -0.515038074910 +#define FX32_COS122 ((fx32) 0xfffff785L) // -0.529919264233 +#define FX32_COS123 ((fx32) 0xfffff749L) // -0.544639035015 +#define FX32_COS124 ((fx32) 0xfffff70eL) // -0.559192903471 +#define FX32_COS125 ((fx32) 0xfffff6d3L) // -0.573576436351 +#define FX32_COS126 ((fx32) 0xfffff698L) // -0.587785252292 +#define FX32_COS127 ((fx32) 0xfffff65fL) // -0.601815023152 +#define FX32_COS128 ((fx32) 0xfffff626L) // -0.615661475326 +#define FX32_COS129 ((fx32) 0xfffff5eeL) // -0.629320391050 +#define FX32_COS130 ((fx32) 0xfffff5b7L) // -0.642787609687 +#define FX32_COS131 ((fx32) 0xfffff581L) // -0.656059028991 +#define FX32_COS132 ((fx32) 0xfffff54bL) // -0.669130606359 +#define FX32_COS133 ((fx32) 0xfffff517L) // -0.681998360062 +#define FX32_COS134 ((fx32) 0xfffff4e3L) // -0.694658370459 +#define FX32_COS135 ((fx32) 0xfffff4b0L) // -0.707106781187 +#define FX32_COS136 ((fx32) 0xfffff47eL) // -0.719339800339 +#define FX32_COS137 ((fx32) 0xfffff44cL) // -0.731353701619 +#define FX32_COS138 ((fx32) 0xfffff41cL) // -0.743144825477 +#define FX32_COS139 ((fx32) 0xfffff3edL) // -0.754709580223 +#define FX32_COS140 ((fx32) 0xfffff3beL) // -0.766044443119 +#define FX32_COS141 ((fx32) 0xfffff391L) // -0.777145961457 +#define FX32_COS142 ((fx32) 0xfffff364L) // -0.788010753607 +#define FX32_COS143 ((fx32) 0xfffff339L) // -0.798635510047 +#define FX32_COS144 ((fx32) 0xfffff30eL) // -0.809016994375 +#define FX32_COS145 ((fx32) 0xfffff2e5L) // -0.819152044289 +#define FX32_COS146 ((fx32) 0xfffff2bcL) // -0.829037572555 +#define FX32_COS147 ((fx32) 0xfffff295L) // -0.838670567945 +#define FX32_COS148 ((fx32) 0xfffff26eL) // -0.848048096156 +#define FX32_COS149 ((fx32) 0xfffff249L) // -0.857167300702 +#define FX32_COS150 ((fx32) 0xfffff225L) // -0.866025403784 +#define FX32_COS151 ((fx32) 0xfffff202L) // -0.874619707139 +#define FX32_COS152 ((fx32) 0xfffff1dfL) // -0.882947592859 +#define FX32_COS153 ((fx32) 0xfffff1beL) // -0.891006524188 +#define FX32_COS154 ((fx32) 0xfffff19fL) // -0.898794046299 +#define FX32_COS155 ((fx32) 0xfffff180L) // -0.906307787037 +#define FX32_COS156 ((fx32) 0xfffff162L) // -0.913545457643 +#define FX32_COS157 ((fx32) 0xfffff146L) // -0.920504853452 +#define FX32_COS158 ((fx32) 0xfffff12aL) // -0.927183854567 +#define FX32_COS159 ((fx32) 0xfffff110L) // -0.933580426497 +#define FX32_COS160 ((fx32) 0xfffff0f7L) // -0.939692620786 +#define FX32_COS161 ((fx32) 0xfffff0dfL) // -0.945518575599 +#define FX32_COS162 ((fx32) 0xfffff0c8L) // -0.951056516295 +#define FX32_COS163 ((fx32) 0xfffff0b3L) // -0.956304755963 +#define FX32_COS164 ((fx32) 0xfffff09fL) // -0.961261695938 +#define FX32_COS165 ((fx32) 0xfffff08cL) // -0.965925826289 +#define FX32_COS166 ((fx32) 0xfffff07aL) // -0.970295726276 +#define FX32_COS167 ((fx32) 0xfffff069L) // -0.974370064785 +#define FX32_COS168 ((fx32) 0xfffff05aL) // -0.978147600734 +#define FX32_COS169 ((fx32) 0xfffff04bL) // -0.981627183448 +#define FX32_COS170 ((fx32) 0xfffff03eL) // -0.984807753012 +#define FX32_COS171 ((fx32) 0xfffff032L) // -0.987688340595 +#define FX32_COS172 ((fx32) 0xfffff028L) // -0.990268068742 +#define FX32_COS173 ((fx32) 0xfffff01fL) // -0.992546151641 +#define FX32_COS174 ((fx32) 0xfffff016L) // -0.994521895368 +#define FX32_COS175 ((fx32) 0xfffff010L) // -0.996194698092 +#define FX32_COS176 ((fx32) 0xfffff00aL) // -0.997564050260 +#define FX32_COS177 ((fx32) 0xfffff006L) // -0.998629534755 +#define FX32_COS178 ((fx32) 0xfffff002L) // -0.999390827019 +#define FX32_COS179 ((fx32) 0xfffff001L) // -0.999847695156 +#define FX32_COS180 ((fx32) 0xfffff000L) // -1.000000000000 +#define FX32_COS181 ((fx32) 0xfffff001L) // -0.999847695156 +#define FX32_COS182 ((fx32) 0xfffff002L) // -0.999390827019 +#define FX32_COS183 ((fx32) 0xfffff006L) // -0.998629534755 +#define FX32_COS184 ((fx32) 0xfffff00aL) // -0.997564050260 +#define FX32_COS185 ((fx32) 0xfffff010L) // -0.996194698092 +#define FX32_COS186 ((fx32) 0xfffff016L) // -0.994521895368 +#define FX32_COS187 ((fx32) 0xfffff01fL) // -0.992546151641 +#define FX32_COS188 ((fx32) 0xfffff028L) // -0.990268068742 +#define FX32_COS189 ((fx32) 0xfffff032L) // -0.987688340595 +#define FX32_COS190 ((fx32) 0xfffff03eL) // -0.984807753012 +#define FX32_COS191 ((fx32) 0xfffff04bL) // -0.981627183448 +#define FX32_COS192 ((fx32) 0xfffff05aL) // -0.978147600734 +#define FX32_COS193 ((fx32) 0xfffff069L) // -0.974370064785 +#define FX32_COS194 ((fx32) 0xfffff07aL) // -0.970295726276 +#define FX32_COS195 ((fx32) 0xfffff08cL) // -0.965925826289 +#define FX32_COS196 ((fx32) 0xfffff09fL) // -0.961261695938 +#define FX32_COS197 ((fx32) 0xfffff0b3L) // -0.956304755963 +#define FX32_COS198 ((fx32) 0xfffff0c8L) // -0.951056516295 +#define FX32_COS199 ((fx32) 0xfffff0dfL) // -0.945518575599 +#define FX32_COS200 ((fx32) 0xfffff0f7L) // -0.939692620786 +#define FX32_COS201 ((fx32) 0xfffff110L) // -0.933580426497 +#define FX32_COS202 ((fx32) 0xfffff12aL) // -0.927183854567 +#define FX32_COS203 ((fx32) 0xfffff146L) // -0.920504853452 +#define FX32_COS204 ((fx32) 0xfffff162L) // -0.913545457643 +#define FX32_COS205 ((fx32) 0xfffff180L) // -0.906307787037 +#define FX32_COS206 ((fx32) 0xfffff19fL) // -0.898794046299 +#define FX32_COS207 ((fx32) 0xfffff1beL) // -0.891006524188 +#define FX32_COS208 ((fx32) 0xfffff1dfL) // -0.882947592859 +#define FX32_COS209 ((fx32) 0xfffff202L) // -0.874619707139 +#define FX32_COS210 ((fx32) 0xfffff225L) // -0.866025403784 +#define FX32_COS211 ((fx32) 0xfffff249L) // -0.857167300702 +#define FX32_COS212 ((fx32) 0xfffff26eL) // -0.848048096156 +#define FX32_COS213 ((fx32) 0xfffff295L) // -0.838670567945 +#define FX32_COS214 ((fx32) 0xfffff2bcL) // -0.829037572555 +#define FX32_COS215 ((fx32) 0xfffff2e5L) // -0.819152044289 +#define FX32_COS216 ((fx32) 0xfffff30eL) // -0.809016994375 +#define FX32_COS217 ((fx32) 0xfffff339L) // -0.798635510047 +#define FX32_COS218 ((fx32) 0xfffff364L) // -0.788010753607 +#define FX32_COS219 ((fx32) 0xfffff391L) // -0.777145961457 +#define FX32_COS220 ((fx32) 0xfffff3beL) // -0.766044443119 +#define FX32_COS221 ((fx32) 0xfffff3edL) // -0.754709580223 +#define FX32_COS222 ((fx32) 0xfffff41cL) // -0.743144825477 +#define FX32_COS223 ((fx32) 0xfffff44cL) // -0.731353701619 +#define FX32_COS224 ((fx32) 0xfffff47eL) // -0.719339800339 +#define FX32_COS225 ((fx32) 0xfffff4b0L) // -0.707106781187 +#define FX32_COS226 ((fx32) 0xfffff4e3L) // -0.694658370459 +#define FX32_COS227 ((fx32) 0xfffff517L) // -0.681998360062 +#define FX32_COS228 ((fx32) 0xfffff54bL) // -0.669130606359 +#define FX32_COS229 ((fx32) 0xfffff581L) // -0.656059028991 +#define FX32_COS230 ((fx32) 0xfffff5b7L) // -0.642787609687 +#define FX32_COS231 ((fx32) 0xfffff5eeL) // -0.629320391050 +#define FX32_COS232 ((fx32) 0xfffff626L) // -0.615661475326 +#define FX32_COS233 ((fx32) 0xfffff65fL) // -0.601815023152 +#define FX32_COS234 ((fx32) 0xfffff698L) // -0.587785252292 +#define FX32_COS235 ((fx32) 0xfffff6d3L) // -0.573576436351 +#define FX32_COS236 ((fx32) 0xfffff70eL) // -0.559192903471 +#define FX32_COS237 ((fx32) 0xfffff749L) // -0.544639035015 +#define FX32_COS238 ((fx32) 0xfffff785L) // -0.529919264233 +#define FX32_COS239 ((fx32) 0xfffff7c2L) // -0.515038074910 +#define FX32_COS240 ((fx32) 0xfffff800L) // -0.500000000000 +#define FX32_COS241 ((fx32) 0xfffff83eL) // -0.484809620246 +#define FX32_COS242 ((fx32) 0xfffff87dL) // -0.469471562786 +#define FX32_COS243 ((fx32) 0xfffff8bcL) // -0.453990499740 +#define FX32_COS244 ((fx32) 0xfffff8fcL) // -0.438371146789 +#define FX32_COS245 ((fx32) 0xfffff93dL) // -0.422618261741 +#define FX32_COS246 ((fx32) 0xfffff97eL) // -0.406736643076 +#define FX32_COS247 ((fx32) 0xfffff9c0L) // -0.390731128489 +#define FX32_COS248 ((fx32) 0xfffffa02L) // -0.374606593416 +#define FX32_COS249 ((fx32) 0xfffffa44L) // -0.358367949545 +#define FX32_COS250 ((fx32) 0xfffffa87L) // -0.342020143326 +#define FX32_COS251 ((fx32) 0xfffffacaL) // -0.325568154457 +#define FX32_COS252 ((fx32) 0xfffffb0eL) // -0.309016994375 +#define FX32_COS253 ((fx32) 0xfffffb52L) // -0.292371704723 +#define FX32_COS254 ((fx32) 0xfffffb97L) // -0.275637355817 +#define FX32_COS255 ((fx32) 0xfffffbdcL) // -0.258819045103 +#define FX32_COS256 ((fx32) 0xfffffc21L) // -0.241921895600 +#define FX32_COS257 ((fx32) 0xfffffc67L) // -0.224951054344 +#define FX32_COS258 ((fx32) 0xfffffcacL) // -0.207911690818 +#define FX32_COS259 ((fx32) 0xfffffcf2L) // -0.190808995377 +#define FX32_COS260 ((fx32) 0xfffffd39L) // -0.173648177667 +#define FX32_COS261 ((fx32) 0xfffffd7fL) // -0.156434465040 +#define FX32_COS262 ((fx32) 0xfffffdc6L) // -0.139173100960 +#define FX32_COS263 ((fx32) 0xfffffe0dL) // -0.121869343405 +#define FX32_COS264 ((fx32) 0xfffffe54L) // -0.104528463268 +#define FX32_COS265 ((fx32) 0xfffffe9bL) // -0.087155742748 +#define FX32_COS266 ((fx32) 0xfffffee2L) // -0.069756473744 +#define FX32_COS267 ((fx32) 0xffffff2aL) // -0.052335956243 +#define FX32_COS268 ((fx32) 0xffffff71L) // -0.034899496703 +#define FX32_COS269 ((fx32) 0xffffffb9L) // -0.017452406437 +#define FX32_COS270 ((fx32) 0x00000000L) // -0.000000000000 +#define FX32_COS271 ((fx32) 0x00000047L) // 0.017452406437 +#define FX32_COS272 ((fx32) 0x0000008fL) // 0.034899496703 +#define FX32_COS273 ((fx32) 0x000000d6L) // 0.052335956243 +#define FX32_COS274 ((fx32) 0x0000011eL) // 0.069756473744 +#define FX32_COS275 ((fx32) 0x00000165L) // 0.087155742748 +#define FX32_COS276 ((fx32) 0x000001acL) // 0.104528463268 +#define FX32_COS277 ((fx32) 0x000001f3L) // 0.121869343405 +#define FX32_COS278 ((fx32) 0x0000023aL) // 0.139173100960 +#define FX32_COS279 ((fx32) 0x00000281L) // 0.156434465040 +#define FX32_COS280 ((fx32) 0x000002c7L) // 0.173648177667 +#define FX32_COS281 ((fx32) 0x0000030eL) // 0.190808995377 +#define FX32_COS282 ((fx32) 0x00000354L) // 0.207911690818 +#define FX32_COS283 ((fx32) 0x00000399L) // 0.224951054344 +#define FX32_COS284 ((fx32) 0x000003dfL) // 0.241921895600 +#define FX32_COS285 ((fx32) 0x00000424L) // 0.258819045103 +#define FX32_COS286 ((fx32) 0x00000469L) // 0.275637355817 +#define FX32_COS287 ((fx32) 0x000004aeL) // 0.292371704723 +#define FX32_COS288 ((fx32) 0x000004f2L) // 0.309016994375 +#define FX32_COS289 ((fx32) 0x00000536L) // 0.325568154457 +#define FX32_COS290 ((fx32) 0x00000579L) // 0.342020143326 +#define FX32_COS291 ((fx32) 0x000005bcL) // 0.358367949545 +#define FX32_COS292 ((fx32) 0x000005feL) // 0.374606593416 +#define FX32_COS293 ((fx32) 0x00000640L) // 0.390731128489 +#define FX32_COS294 ((fx32) 0x00000682L) // 0.406736643076 +#define FX32_COS295 ((fx32) 0x000006c3L) // 0.422618261741 +#define FX32_COS296 ((fx32) 0x00000704L) // 0.438371146789 +#define FX32_COS297 ((fx32) 0x00000744L) // 0.453990499740 +#define FX32_COS298 ((fx32) 0x00000783L) // 0.469471562786 +#define FX32_COS299 ((fx32) 0x000007c2L) // 0.484809620246 +#define FX32_COS300 ((fx32) 0x00000800L) // 0.500000000000 +#define FX32_COS301 ((fx32) 0x0000083eL) // 0.515038074910 +#define FX32_COS302 ((fx32) 0x0000087bL) // 0.529919264233 +#define FX32_COS303 ((fx32) 0x000008b7L) // 0.544639035015 +#define FX32_COS304 ((fx32) 0x000008f2L) // 0.559192903471 +#define FX32_COS305 ((fx32) 0x0000092dL) // 0.573576436351 +#define FX32_COS306 ((fx32) 0x00000968L) // 0.587785252292 +#define FX32_COS307 ((fx32) 0x000009a1L) // 0.601815023152 +#define FX32_COS308 ((fx32) 0x000009daL) // 0.615661475326 +#define FX32_COS309 ((fx32) 0x00000a12L) // 0.629320391050 +#define FX32_COS310 ((fx32) 0x00000a49L) // 0.642787609687 +#define FX32_COS311 ((fx32) 0x00000a7fL) // 0.656059028991 +#define FX32_COS312 ((fx32) 0x00000ab5L) // 0.669130606359 +#define FX32_COS313 ((fx32) 0x00000ae9L) // 0.681998360062 +#define FX32_COS314 ((fx32) 0x00000b1dL) // 0.694658370459 +#define FX32_COS315 ((fx32) 0x00000b50L) // 0.707106781187 +#define FX32_COS316 ((fx32) 0x00000b82L) // 0.719339800339 +#define FX32_COS317 ((fx32) 0x00000bb4L) // 0.731353701619 +#define FX32_COS318 ((fx32) 0x00000be4L) // 0.743144825477 +#define FX32_COS319 ((fx32) 0x00000c13L) // 0.754709580223 +#define FX32_COS320 ((fx32) 0x00000c42L) // 0.766044443119 +#define FX32_COS321 ((fx32) 0x00000c6fL) // 0.777145961457 +#define FX32_COS322 ((fx32) 0x00000c9cL) // 0.788010753607 +#define FX32_COS323 ((fx32) 0x00000cc7L) // 0.798635510047 +#define FX32_COS324 ((fx32) 0x00000cf2L) // 0.809016994375 +#define FX32_COS325 ((fx32) 0x00000d1bL) // 0.819152044289 +#define FX32_COS326 ((fx32) 0x00000d44L) // 0.829037572555 +#define FX32_COS327 ((fx32) 0x00000d6bL) // 0.838670567945 +#define FX32_COS328 ((fx32) 0x00000d92L) // 0.848048096156 +#define FX32_COS329 ((fx32) 0x00000db7L) // 0.857167300702 +#define FX32_COS330 ((fx32) 0x00000ddbL) // 0.866025403784 +#define FX32_COS331 ((fx32) 0x00000dfeL) // 0.874619707139 +#define FX32_COS332 ((fx32) 0x00000e21L) // 0.882947592859 +#define FX32_COS333 ((fx32) 0x00000e42L) // 0.891006524188 +#define FX32_COS334 ((fx32) 0x00000e61L) // 0.898794046299 +#define FX32_COS335 ((fx32) 0x00000e80L) // 0.906307787037 +#define FX32_COS336 ((fx32) 0x00000e9eL) // 0.913545457643 +#define FX32_COS337 ((fx32) 0x00000ebaL) // 0.920504853452 +#define FX32_COS338 ((fx32) 0x00000ed6L) // 0.927183854567 +#define FX32_COS339 ((fx32) 0x00000ef0L) // 0.933580426497 +#define FX32_COS340 ((fx32) 0x00000f09L) // 0.939692620786 +#define FX32_COS341 ((fx32) 0x00000f21L) // 0.945518575599 +#define FX32_COS342 ((fx32) 0x00000f38L) // 0.951056516295 +#define FX32_COS343 ((fx32) 0x00000f4dL) // 0.956304755963 +#define FX32_COS344 ((fx32) 0x00000f61L) // 0.961261695938 +#define FX32_COS345 ((fx32) 0x00000f74L) // 0.965925826289 +#define FX32_COS346 ((fx32) 0x00000f86L) // 0.970295726276 +#define FX32_COS347 ((fx32) 0x00000f97L) // 0.974370064785 +#define FX32_COS348 ((fx32) 0x00000fa6L) // 0.978147600734 +#define FX32_COS349 ((fx32) 0x00000fb5L) // 0.981627183448 +#define FX32_COS350 ((fx32) 0x00000fc2L) // 0.984807753012 +#define FX32_COS351 ((fx32) 0x00000fceL) // 0.987688340595 +#define FX32_COS352 ((fx32) 0x00000fd8L) // 0.990268068742 +#define FX32_COS353 ((fx32) 0x00000fe1L) // 0.992546151641 +#define FX32_COS354 ((fx32) 0x00000feaL) // 0.994521895368 +#define FX32_COS355 ((fx32) 0x00000ff0L) // 0.996194698092 +#define FX32_COS356 ((fx32) 0x00000ff6L) // 0.997564050260 +#define FX32_COS357 ((fx32) 0x00000ffaL) // 0.998629534755 +#define FX32_COS358 ((fx32) 0x00000ffeL) // 0.999390827019 +#define FX32_COS359 ((fx32) 0x00000fffL) // 0.999847695156 + +#endif //LIB_INCLUDE_NITRO_FX_FX_CONST_H_ diff --git a/lib/include/nitro/fx/fx_mtx22.h b/lib/include/nitro/fx/fx_mtx22.h deleted file mode 100644 index b1b3dfc9..00000000 --- a/lib/include/nitro/fx/fx_mtx22.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NITR_FX_FX_MTX22_H_ -#define NITR_FX_FX_MTX22_H_ - -#include - -void MTX_Rot22_(MtxFx22 *mtx, fx16 x, fx16 y); -void MTX_ScaleApply22(MtxFx22 *a, MtxFx22 *b, fx32 x, fx32 y); - -#endif //NITR_FX_FX_MTX22_H_ diff --git a/lib/include/nitro/fx/fx_mtx33.h b/lib/include/nitro/fx/fx_mtx33.h deleted file mode 100644 index f7ae99bd..00000000 --- a/lib/include/nitro/fx/fx_mtx33.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NITRO_FX_FX_MTX33_H_ -#define NITRO_FX_FX_MTX33_H_ - -static inline void MTX_Copy33(const MtxFx33 *pSrc, MtxFx33 *pDst) { - MI_Copy36B(pSrc, pDst); -} - -void MTX_Identity33_(register MtxFx33 *pDst); -void MTX_RotX33_(register MtxFx33 *pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotY33_(register MtxFx33 *pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_Concat33(const MtxFx33 *a, const MtxFx33 *b, MtxFx33 *ab); -void MTX_MultVec33(const VecFx32 *vec, const MtxFx33 *m, VecFx32 *dst); - -static inline void MTX_Identity33(MtxFx33 *pDst) { - MTX_Identity33_(pDst); -} - -static inline void MTX_RotY33(MtxFx33 *pDst, fx32 sinVal, fx32 cosVal) { - MTX_RotY33_(pDst, sinVal, cosVal); -} - -static inline void MTX_RotX33(MtxFx33 *pDst, fx32 sinVal, fx32 cosVal) { - MTX_RotX33_(pDst, sinVal, cosVal); -} - -#endif //NITRO_FX_FX_MTX33_H_ diff --git a/lib/include/nitro/fx/fx_mtx43.h b/lib/include/nitro/fx/fx_mtx43.h deleted file mode 100644 index 000b5f53..00000000 --- a/lib/include/nitro/fx/fx_mtx43.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NITRO_FX_FX_MTX43_H_ -#define NITRO_FX_FX_MTX43_H_ - -void MTX_Identity43_(register MtxFx43 *pDst); -void MTX_TransApply43(const MtxFx43 *pSrc, MtxFx43 *pDst, fx32 x, fx32 y, fx32 z); -void MTX_Concat43(const MtxFx43 *a, const MtxFx43 *b, MtxFx43 *ab); -void MTX_RotX43_(register MtxFx43 *pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_RotY43_(register MtxFx43 *pDst, register fx32 sinVal, register fx32 cosVal); -void MTX_Scale43_(register MtxFx43 *pDst, register fx32 x, register fx32 y, register fx32 z); - -static inline void MTX_Identity43(MtxFx43 *pDst) { - MTX_Identity43_(pDst); -} - -static inline void MTX_RotX43(MtxFx43 *pDst, fx32 sinVal, fx32 cosVal) { - MTX_RotX43_(pDst, sinVal, cosVal); -} - -static inline void MTX_RotY43(MtxFx43 *pDst, fx32 sinVal, fx32 cosVal) { - MTX_RotY43_(pDst, sinVal, cosVal); -} - -static inline void MTX_Scale43(MtxFx43 *pDst, fx32 x, fx32 y, fx32 z) { - MTX_Scale43_(pDst, x, y, z); -} - -#endif //NITRO_FX_FX_MTX43_H_ diff --git a/lib/include/nitro/fx/fx_trig.h b/lib/include/nitro/fx/fx_trig.h deleted file mode 100644 index d55eb496..00000000 --- a/lib/include/nitro/fx/fx_trig.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NITRO_FX_FX_TRIG_H_ -#define NITRO_FX_FX_TRIG_H_ - -#include - -// deg must be in fx32/fx16 format -#define FX_DEG_TO_RAD(deg) ((fx32)((FX64C_TWOPI_360 * (deg) + 0x80000000LL) >> 32)) -#define FX_DEG_TO_IDX(deg) ((u16) ((FX64C_65536_360 * (deg) + 0x80000000000LL) >> 44)) - -// rad must be in fx32/fx16 format -#define FX_RAD_TO_DEG(rad) ((fx32)((FX64C_360_TWOPI * (rad) + 0x80000000LL) >> 32)) -#define FX_RAD_TO_IDX(rad) ((u16)((FX64C_65536_TWOPI * (rad) + 0x80000000000LL) >> 44)) - -#define FX_IDX_TO_RAD(idx) ((fx32)((FX64C_TWOPI_65536 * (idx) + 0x80000LL) >> 20)) -#define FX_IDX_TO_DEG(idx) ((fx32)((FX64C_360_65536 * (idx) + 0x80000LL) >> 20)) - -extern const fx16 FX_SinCosTable_[]; - -static inline fx16 FX_SinIdx(int idx) { - return FX_SinCosTable_[((idx >> 4) << 1)]; -} - -static inline fx16 FX_CosIdx(int idx) { - return FX_SinCosTable_[((idx >> 4) << 1) + 1]; -} - -#endif //NITRO_FX_FX_TRIG_H_ diff --git a/lib/include/nitro/fx/fx_vec.h b/lib/include/nitro/fx/fx_vec.h deleted file mode 100644 index 4c697f53..00000000 --- a/lib/include/nitro/fx/fx_vec.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_FX_FX_VEC_H_ -#define NITRO_FX_FX_VEC_H_ - -void VEC_Add(const VecFx32 *a, const VecFx32 *b, VecFx32 *ab); -void VEC_Subtract(const VecFx32 *a, const VecFx32 *b, VecFx32 *ab); - -#endif //NITRO_FX_FX_VEC_H_ diff --git a/lib/include/nitro/gx.h b/lib/include/nitro/gx.h deleted file mode 100644 index c8596224..00000000 --- a/lib/include/nitro/gx.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NITRO_GX_H_ -#define NITRO_GX_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef SDK_ARM9 -#include -#endif //SDK_ARM9 - -#endif //NITRO_GX_H_ diff --git a/lib/include/nitro/gx/g2.h b/lib/include/nitro/gx/g2.h deleted file mode 100644 index 842ab3fd..00000000 --- a/lib/include/nitro/gx/g2.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef NITRO_GX_GX_G2_H_ -#define NITRO_GX_GX_G2_H_ - -void G2x_SetBGyAffine_(u32 addr, const MtxFx22 *mtx, fx32 a, fx32 b, fx32 c, fx32 d); -void G2x_SetBlendAlpha_(u32 addr, int plane1, int plane2, int ev1, int ev2); -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_BLEND_PLANEMASK_NONE = 0x0000, - GX_BLEND_PLANEMASK_BG0 = 0x0001, - GX_BLEND_PLANEMASK_BG1 = 0x0002, - GX_BLEND_PLANEMASK_BG2 = 0x0004, - GX_BLEND_PLANEMASK_BG3 = 0x0008, - GX_BLEND_PLANEMASK_OBJ = 0x0010, - GX_BLEND_PLANEMASK_BD = 0x0020 -} GXBlendPlaneMask; - -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; -} - -static inline void G2_SetBG0Offset(int hOffset, int vOffset) { - reg_G2_BG0OFS = (u32)(((hOffset << REG_G2_BG0OFS_HOFFSET_SHIFT) & REG_G2_BG0OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG0OFS_VOFFSET_SHIFT) & REG_G2_BG0OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG1Offset(int hOffset, int vOffset) { - reg_G2_BG1OFS = (u32)(((hOffset << REG_G2_BG1OFS_HOFFSET_SHIFT) & REG_G2_BG1OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG1OFS_VOFFSET_SHIFT) & REG_G2_BG1OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG2Offset(int hOffset, int vOffset) { - reg_G2_BG2OFS = (u32)(((hOffset << REG_G2_BG2OFS_HOFFSET_SHIFT) & REG_G2_BG2OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG2OFS_VOFFSET_SHIFT) & REG_G2_BG2OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG3Offset(int hOffset, int vOffset) { - reg_G2_BG3OFS = (u32)(((hOffset << REG_G2_BG3OFS_HOFFSET_SHIFT) & REG_G2_BG3OFS_HOFFSET_MASK) | - ((vOffset << REG_G2_BG3OFS_VOFFSET_SHIFT) & REG_G2_BG3OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG0Offset(int hOffset, int vOffset) { - reg_G2S_DB_BG0OFS = (u32)(((hOffset << REG_G2S_DB_BG0OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG0OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG0OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG0OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG1Offset(int hOffset, int vOffset) { - reg_G2S_DB_BG1OFS = (u32)(((hOffset << REG_G2S_DB_BG1OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG1OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG1OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG1OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG2Offset(int hOffset, int vOffset) { - reg_G2S_DB_BG2OFS = (u32)(((hOffset << REG_G2S_DB_BG2OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG2OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG2OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG2OFS_VOFFSET_MASK)); -} - -static inline void G2S_SetBG3Offset(int hOffset, int vOffset) { - reg_G2S_DB_BG3OFS = (u32)(((hOffset << REG_G2S_DB_BG3OFS_HOFFSET_SHIFT) & REG_G2S_DB_BG3OFS_HOFFSET_MASK) | - ((vOffset << REG_G2S_DB_BG3OFS_VOFFSET_SHIFT) & REG_G2S_DB_BG3OFS_VOFFSET_MASK)); -} - -static inline void G2_SetBG2Affine(const MtxFx22 *mtx, int centerX, int centerY, int x1, int y1) { - G2x_SetBGyAffine_((u32)®_G2_BG2PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2_SetBG3Affine(const MtxFx22 *mtx, int centerX, int centerY, int x1, int y1) { - G2x_SetBGyAffine_((u32)®_G2_BG3PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2S_SetBG2Affine(const MtxFx22 *mtx, int centerX, int centerY, int x1, int y1) { - G2x_SetBGyAffine_((u32)®_G2S_DB_BG2PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2S_SetBG3Affine(const MtxFx22 *mtx, int centerX, int centerY, int x1, int y1) { - G2x_SetBGyAffine_((u32)®_G2S_DB_BG3PA, mtx, centerX, centerY, x1, y1); -} - -static inline void G2_BlendNone(void) { - reg_G2_BLDCNT = 0; -} - -static inline void G2S_BlendNone(void) { - reg_G2S_DB_BLDCNT = 0; -} - -static inline void G2_SetBlendAlpha(int plane1, int plane2, int ev1, int ev2) { - G2x_SetBlendAlpha_((u32)®_G2_BLDCNT, plane1, plane2, ev1, ev2); -} - -static inline void G2S_SetBlendAlpha(int plane1, int plane2, int ev1, int ev2) { - G2x_SetBlendAlpha_((u32)®_G2S_DB_BLDCNT, plane1, plane2, ev1, ev2); -} - -//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 //NITRO_GX_GX_G2_H_ diff --git a/lib/include/nitro/gx/g2_oam.h b/lib/include/nitro/gx/g2_oam.h deleted file mode 100644 index d1b2a9f8..00000000 --- a/lib/include/nitro/gx/g2_oam.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef NITRO_GX_G2_OAM_H_ -#define NITRO_GX_G2_OAM_H_ - -typedef struct { - union { - u32 attr01; - struct { - u16 attr0; - u16 attr1; - }; - struct { - u32 y:8; - u32 rsMode:2; - u32 objMode:2; - u32 mosaic:1; - u32 colorMode:1; - u32 shape:2; - - u32 x:9; - u32 rsParam:5; - u32 size:2; - }; - struct { - u32 _0:28; - u32 flipH:1; - u32 flipV:1; - u32 _1:2; - }; - }; - union { - struct { - u16 attr2; - u16 _3; - }; - u32 attr23; - struct { - u32 charNo:10; - u32 priority:2; - u32 cParam:4; - u32 _2:16; - }; - }; -} GXOamAttr; - -typedef enum { - GX_OAM_MODE_NORMAL = 0, - GX_OAM_MODE_XLU = 1, - GX_OAM_MODE_OBJWND = 2, - GX_OAM_MODE_BITMAPOBJ = 3 -} GXOamMode; - -#endif //NITRO_GX_G2_OAM_H_ diff --git a/lib/include/nitro/gx/g3.h b/lib/include/nitro/gx/g3.h deleted file mode 100644 index 6c8916e7..00000000 --- a/lib/include/nitro/gx/g3.h +++ /dev/null @@ -1,152 +0,0 @@ -#ifndef NITRO_GX_G3_H_ -#define NITRO_GX_G3_H_ - -#define G3OP_NOP 0x00 - -#define G3OP_MTX_MODE 0x10 -#define G3OP_MTX_PUSH 0x11 -#define G3OP_MTX_POP 0x12 -#define G3OP_MTX_STORE 0x13 -#define G3OP_MTX_RESTORE 0x14 -#define G3OP_MTX_IDENTITY 0x15 -#define G3OP_MTX_LOAD_4x4 0x16 -#define G3OP_MTX_LOAD_4x3 0x17 -#define G3OP_MTX_MULT_4x4 0x18 -#define G3OP_MTX_MULT_4x3 0x19 -#define G3OP_MTX_MULT_3x3 0x1a -#define G3OP_MTX_SCALE 0x1b -#define G3OP_MTX_TRANS 0x1c - -#define G3OP_COLOR 0x20 -#define G3OP_NORMAL 0x21 -#define G3OP_TEXCOORD 0x22 -#define G3OP_VTX_16 0x23 -#define G3OP_VTX_10 0x24 -#define G3OP_VTX_XY 0x25 -#define G3OP_VTX_XZ 0x26 -#define G3OP_VTX_YZ 0x27 -#define G3OP_VTX_DIFF 0x28 -#define G3OP_POLYGON_ATTR 0x29 -#define G3OP_TEXIMAGE_PARAM 0x2a -#define G3OP_TEXPLTT_BASE 0x2b - -#define G3OP_DIF_AMB 0x30 -#define G3OP_SPE_EMI 0x31 -#define G3OP_LIGHT_VECTOR 0x32 -#define G3OP_LIGHT_COLOR 0x33 -#define G3OP_SHININESS 0x34 - -#define G3OP_BEGIN 0x40 -#define G3OP_END 0x41 - -#define G3OP_SWAP_BUFFERS 0x50 - -#define G3OP_VIEWPORT 0x60 - -#define G3OP_BOX_TEST 0x70 -#define G3OP_POS_TEST 0x71 -#define G3OP_VEC_TEST 0x72 - -#define G3OP_DUMMY_COMMAND 0xFF - -#define G3OP_NOP_NPARAMS 0 - -#define G3OP_MTX_MODE_NPARAMS 1 -#define G3OP_MTX_PUSH_NPARAMS 0 -#define G3OP_MTX_POP_NPARAMS 1 -#define G3OP_MTX_STORE_NPARAMS 1 -#define G3OP_MTX_RESTORE_NPARAMS 1 -#define G3OP_MTX_IDENTITY_NPARAMS 0 -#define G3OP_MTX_LOAD_4x4_NPARAMS 16 -#define G3OP_MTX_LOAD_4x3_NPARAMS 12 -#define G3OP_MTX_MULT_4x4_NPARAMS 16 -#define G3OP_MTX_MULT_4x3_NPARAMS 12 -#define G3OP_MTX_MULT_3x3_NPARAMS 9 -#define G3OP_MTX_SCALE_NPARAMS 3 -#define G3OP_MTX_TRANS_NPARAMS 3 - -#define G3OP_COLOR_NPARAMS 1 -#define G3OP_NORMAL_NPARAMS 1 -#define G3OP_TEXCOORD_NPARAMS 1 -#define G3OP_VTX_16_NPARAMS 2 -#define G3OP_VTX_10_NPARAMS 1 -#define G3OP_VTX_XY_NPARAMS 1 -#define G3OP_VTX_XZ_NPARAMS 1 -#define G3OP_VTX_YZ_NPARAMS 1 -#define G3OP_VTX_DIFF_NPARAMS 1 -#define G3OP_POLYGON_ATTR_NPARAMS 1 -#define G3OP_TEXIMAGE_PARAM_NPARAMS 1 -#define G3OP_TEXPLTT_BASE_NPARAMS 1 - -#define G3OP_DIF_AMB_NPARAMS 1 -#define G3OP_SPE_EMI_NPARAMS 1 -#define G3OP_LIGHT_VECTOR_NPARAMS 1 -#define G3OP_LIGHT_COLOR_NPARAMS 1 -#define G3OP_SHININESS_NPARAMS 32 - -#define G3OP_BEGIN_NPARAMS 1 -#define G3OP_END_NPARAMS 0 - -#define G3OP_SWAP_BUFFERS_NPARAMS 1 - -#define G3OP_VIEWPORT_NPARAMS 1 - -#define G3OP_BOX_TEST_NPARAMS 3 -#define G3OP_POS_TEST_NPARAMS 2 -#define G3OP_VEC_TEST_NPARAMS 1 - -typedef enum { - GX_TEXSIZE_S8 = 0, - GX_TEXSIZE_S16 = 1, - GX_TEXSIZE_S32 = 2, - GX_TEXSIZE_S64 = 3, - GX_TEXSIZE_S128 = 4, - GX_TEXSIZE_S256 = 5, - GX_TEXSIZE_S512 = 6, - GX_TEXSIZE_S1024 = 7 -} GXTexSizeS; - -typedef enum { - GX_TEXSIZE_T8 = 0, - GX_TEXSIZE_T16 = 1, - GX_TEXSIZE_T32 = 2, - GX_TEXSIZE_T64 = 3, - GX_TEXSIZE_T128 = 4, - GX_TEXSIZE_T256 = 5, - GX_TEXSIZE_T512 = 6, - GX_TEXSIZE_T1024 = 7 -} GXTexSizeT; - -typedef enum { - GX_TEXFMT_NONE = 0, - GX_TEXFMT_A3I5 = 1, - GX_TEXFMT_PLTT4 = 2, - GX_TEXFMT_PLTT16 = 3, - GX_TEXFMT_PLTT256 = 4, - GX_TEXFMT_COMP4x4 = 5, - GX_TEXFMT_A5I3 = 6, - GX_TEXFMT_DIRECT = 7 -} GXTexFmt; - -typedef enum { - GX_TEXPLTTCOLOR0_USE = 0, - GX_TEXPLTTCOLOR0_TRNS = 1 -} GXTexPlttColor0; - -typedef enum { - GX_LIGHTID_0 = 0, - GX_LIGHTID_1 = 1, - GX_LIGHTID_2 = 2, - GX_LIGHTID_3 = 3 -} GXLightId; - -typedef enum { - GX_MTXMODE_PROJECTION = 0, - GX_MTXMODE_POSITION = 1, - GX_MTXMODE_POSITION_VECTOR = 2, - GX_MTXMODE_TEXTURE = 3 -} GXMtxMode; - -#define GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2) ((u32)((x1) | ((y1) << 8) | ((x2) << 16) | ((y2) << 24))) - -#endif //NITRO_GX_G3_H_ diff --git a/lib/include/nitro/gx/g3imm.h b/lib/include/nitro/gx/g3imm.h deleted file mode 100644 index 92858ae4..00000000 --- a/lib/include/nitro/gx/g3imm.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NITRO_GX_G3IMM_H_ -#define NITRO_GX_G3IMM_H_ - -typedef enum { - GX_SORTMODE_AUTO = 0, - GX_SORTMODE_MANUAL = 1 -} GXSortMode; - -typedef enum { - GX_BUFFERMODE_Z = 0, - GX_BUFFERMODE_W = 1 -} GXBufferMode; - -#define GX_PACK_SWAPBUFFERS_PARAM(am, zw) \ - ((u32) (((am) << REG_G3_SWAP_BUFFERS_XS_SHIFT) | \ - ((zw) << REG_G3_SWAP_BUFFERS_DP_SHIFT))) - -static inline void G3_SwapBuffers(GXSortMode am, GXBufferMode zw) { - reg_G3_SWAP_BUFFERS = GX_PACK_SWAPBUFFERS_PARAM(am, zw); -} - -static inline void G3_ViewPort(int x1, int y1, int x2, int y2) { - reg_G3_VIEWPORT = GX_PACK_VIEWPORT_PARAM(x1, y1, x2, y2); -} - -#endif //NITRO_GX_G3IMM_H_ diff --git a/lib/include/nitro/gx/g3x.h b/lib/include/nitro/gx/g3x.h deleted file mode 100644 index 9095b194..00000000 --- a/lib/include/nitro/gx/g3x.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef NITRO_GX_G3X_H_ -#define NITRO_GX_G3X_H_ - -typedef enum { - GX_SHADING_TOON = 0, - GX_SHADING_HIGHLIGHT = 1 -} GXShading; - -typedef enum { - GX_FOGBLEND_COLOR_ALPHA = 0, - GX_FOGBLEND_ALPHA = 1 -} GXFogBlend; - -typedef enum { - GX_FOGSLOPE_0x8000 = 0, - GX_FOGSLOPE_0x4000 = 1, - GX_FOGSLOPE_0x2000 = 2, - GX_FOGSLOPE_0x1000 = 3, - GX_FOGSLOPE_0x0800 = 4, - GX_FOGSLOPE_0x0400 = 5, - GX_FOGSLOPE_0x0200 = 6, - GX_FOGSLOPE_0x0100 = 7, - GX_FOGSLOPE_0x0080 = 8, - GX_FOGSLOPE_0x0040 = 9, - GX_FOGSLOPE_0x0020 = 10 -} GXFogSlope; - -void G3X_Init(void); -void G3X_InitMtxStack(void); -void G3X_ResetMtxStack(void); -void G3X_InitTable(void); -void G3X_Reset(void); -void G3X_SetFog(BOOL enable, GXFogBlend fogMode, GXFogSlope fogSlope, int fogOffset); -void G3X_SetClearColor(GXRgb rgb, int alpha, int depth, int polygonID, BOOL fog); - -static inline void G3X_SetShading(GXShading shading) { - reg_G3X_DISP3DCNT = (u16)((reg_G3X_DISP3DCNT & ~(REG_G3X_DISP3DCNT_THS_MASK | REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK)) | (shading << REG_G3X_DISP3DCNT_THS_SHIFT)); -} - -static inline void G3X_AlphaTest(BOOL enable, int ref) { - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_ATE_MASK); - reg_G3X_ALPHA_TEST_REF = (u16)ref; - } else { - reg_G3X_DISP3DCNT &= (u16)~(REG_G3X_DISP3DCNT_ATE_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_AlphaBlend(BOOL enable) { - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_ABE_MASK); - } else { - reg_G3X_DISP3DCNT &= (u16)~(REG_G3X_DISP3DCNT_ABE_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_AntiAlias(BOOL enable) { - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_AAE_MASK); - } else { - reg_G3X_DISP3DCNT &= (u16)~(REG_G3X_DISP3DCNT_AAE_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -static inline void G3X_EdgeMarking(BOOL enable) { - if (enable) { - reg_G3X_DISP3DCNT = (u16)(reg_G3X_DISP3DCNT & - ~(REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK) | - REG_G3X_DISP3DCNT_EME_MASK); - } else { - reg_G3X_DISP3DCNT &= (u16)~(REG_G3X_DISP3DCNT_EME_MASK | - REG_G3X_DISP3DCNT_RO_MASK | REG_G3X_DISP3DCNT_GO_MASK); - } -} - -void G3X_SetEdgeColorTable(const GXRgb *rgb_8); - -#endif //NITRO_GX_G3X_H_ diff --git a/lib/include/nitro/gx/gx.h b/lib/include/nitro/gx/gx.h deleted file mode 100644 index 07499da7..00000000 --- a/lib/include/nitro/gx/gx.h +++ /dev/null @@ -1,157 +0,0 @@ -#ifndef NITRO_GX_GX_H_ -#define NITRO_GX_GX_H_ - -#include - -typedef enum { - GX_DISPMODE_GRAPHICS = 0x01, - GX_DISPMODE_VRAM_A = 0x02, - GX_DISPMODE_VRAM_B = 0x06, - GX_DISPMODE_VRAM_C = 0x0a, - GX_DISPMODE_VRAM_D = 0x0e, - GX_DISPMODE_MMEM = 0x03 -} GXDispMode; - -typedef enum { - GX_BGMODE_0 = 0, - GX_BGMODE_1 = 1, - GX_BGMODE_2 = 2, - GX_BGMODE_3 = 3, - GX_BGMODE_4 = 4, - GX_BGMODE_5 = 5, - GX_BGMODE_6 = 6 -} GXBGMode; - -typedef enum { - GX_BG0_AS_2D = 0, - GX_BG0_AS_3D = 1 -} GXBG0As; - -typedef enum { - GX_BGSCROFFSET_0x00000 = 0x00, - GX_BGSCROFFSET_0x10000 = 0x01, - GX_BGSCROFFSET_0x20000 = 0x02, - GX_BGSCROFFSET_0x30000 = 0x03, - GX_BGSCROFFSET_0x40000 = 0x04, - GX_BGSCROFFSET_0x50000 = 0x05, - GX_BGSCROFFSET_0x60000 = 0x06, - GX_BGSCROFFSET_0x70000 = 0x07 -} GXBGScrOffset; - -typedef enum { - GX_BGCHAROFFSET_0x00000 = 0x00, - GX_BGCHAROFFSET_0x10000 = 0x01, - GX_BGCHAROFFSET_0x20000 = 0x02, - GX_BGCHAROFFSET_0x30000 = 0x03, - GX_BGCHAROFFSET_0x40000 = 0x04, - GX_BGCHAROFFSET_0x50000 = 0x05, - GX_BGCHAROFFSET_0x60000 = 0x06, - GX_BGCHAROFFSET_0x70000 = 0x07 -} GXBGCharOffset; - -typedef enum { - GX_OBJVRAMMODE_CHAR_2D = (0 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_32K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (0 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_64K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (1 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_128K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (2 << REG_GX_DISPCNT_EXOBJ_SHIFT), - GX_OBJVRAMMODE_CHAR_1D_256K = - (1 << REG_GX_DISPCNT_OBJMAP_SHIFT) | (3 << REG_GX_DISPCNT_EXOBJ_SHIFT) -} GXOBJVRamModeChar; - -typedef enum { - GX_POWER_OFF = 0, - - GX_POWER_2D_MAIN = 1 << REG_GX_POWCNT_E2DG_SHIFT, - GX_POWER_2D_SUB = 1 << REG_GX_POWCNT_E2DGB_SHIFT, - - GX_POWER_RE = 1 << REG_GX_POWCNT_RE_SHIFT, - GX_POWER_GE = 1 << REG_GX_POWCNT_GE_SHIFT, - - GX_POWER_2D = GX_POWER_2D_MAIN | GX_POWER_2D_SUB, - GX_POWER_3D = GX_POWER_RE | GX_POWER_GE, - - GX_POWER_ALL = GX_POWER_2D | GX_POWER_3D -} GXPower; - -typedef enum { - GX_DISP_SELECT_SUB_MAIN = 0, - GX_DISP_SELECT_MAIN_SUB = 1 -} GXDispSelect; - -void GX_SetGraphicsMode(GXDispMode dispMode, GXBGMode bgMode, GXBG0As bg0_2d3d); -void GXS_SetGraphicsMode(GXBGMode bgMode); - -static inline s32 GX_GetVCount() { - return reg_GX_VCOUNT; -} - -static inline s32 GX_GetVCountEqVal(void) { - u16 val = reg_GX_DISPSTAT; - return ((val >> 8) & 0x00ff) | ((val << 1) & 0x0100); -} - -static inline void GX_VCountEqIntr(BOOL enable) { - if (enable) { - reg_GX_DISPSTAT |= REG_GX_DISPSTAT_VQI_MASK; - } else { - reg_GX_DISPSTAT &= ~REG_GX_DISPSTAT_VQI_MASK; - } -} - -static inline void GX_SetVCountEqVal(s32 val) { - reg_GX_DISPSTAT = (u16)(reg_GX_DISPSTAT & (REG_GX_DISPSTAT_VBLK_MASK | REG_GX_DISPSTAT_HBLK_MASK | REG_GX_DISPSTAT_LYC_MASK | REG_GX_DISPSTAT_VBI_MASK | REG_GX_DISPSTAT_HBI_MASK | REG_GX_DISPSTAT_VQI_MASK) | ((val & 0xFF) << 8) | ((val & 0x100) >> 1)); -} - -static inline void GX_SetBGScrOffset(GXBGScrOffset offset) -{ - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGSCREENOFFSET_MASK) | - (offset << REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT)); -} - -static inline void GX_SetBGCharOffset(GXBGCharOffset offset) { - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_BGCHAROFFSET_MASK) | - (offset << REG_GX_DISPCNT_BGCHAROFFSET_SHIFT)); -} - -s32 GX_VBlankIntr(BOOL enable); -s32 GX_HBlankIntr(BOOL enable); -void GX_Init(void); -void GX_DispOff(void); -void GX_DispOn(void); - -static inline void GX_SetPower(GXPower gxbit_power) { - reg_GX_POWCNT = (reg_GX_POWCNT & ~GX_POWER_ALL) | gxbit_power; -} - -static inline void GXS_DispOff(void) { - reg_GXS_DB_DISPCNT &= ~REG_GXS_DB_DISPCNT_MODE_MASK; -} - -static inline void GXS_DispOn(void) { - reg_GXS_DB_DISPCNT |= REG_GXS_DB_DISPCNT_MODE_MASK; -} - -static inline void GX_SetDispSelect(GXDispSelect sel) { - reg_GX_POWCNT = (reg_GX_POWCNT & ~REG_GX_POWCNT_DSEL_MASK) | (sel << REG_GX_POWCNT_DSEL_SHIFT); -} - -static inline void GX_SetVisiblePlane(int plane) { - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~REG_GX_DISPCNT_DISPLAY_MASK) | (plane << REG_GX_DISPCNT_DISPLAY_SHIFT)); -} - -static inline void GXS_SetVisiblePlane(int plane) { - reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & ~REG_GXS_DB_DISPCNT_DISPLAY_MASK) | (plane << REG_GXS_DB_DISPCNT_DISPLAY_SHIFT)); -} - -static inline void GX_SetVisibleWnd(int window) { - reg_GX_DISPCNT = (u32)((reg_GX_DISPCNT & ~(REG_GX_DISPCNT_W0_MASK | REG_GX_DISPCNT_W1_MASK | REG_GX_DISPCNT_OW_MASK)) | (window << REG_GX_DISPCNT_W0_SHIFT)); -} - -static inline void GXS_SetVisibleWnd(int window) { - reg_GXS_DB_DISPCNT = (u32)((reg_GXS_DB_DISPCNT & ~(REG_GXS_DB_DISPCNT_W0_MASK | REG_GXS_DB_DISPCNT_W1_MASK | REG_GXS_DB_DISPCNT_OW_MASK)) | (window << REG_GXS_DB_DISPCNT_W0_SHIFT)); -} - -#endif //NITRO_GX_GX_H_ diff --git a/lib/include/nitro/gx/gx_bgcnt.h b/lib/include/nitro/gx/gx_bgcnt.h deleted file mode 100644 index cefd4ae3..00000000 --- a/lib/include/nitro/gx/gx_bgcnt.h +++ /dev/null @@ -1,614 +0,0 @@ -#ifndef NITRO_GX_GX_BGCNT_H -#define NITRO_GX_GX_BGCNT_H - -void *G2_GetBG0ScrPtr(); -void *G2S_GetBG0ScrPtr(); -void *G2_GetBG1ScrPtr(); -void *G2S_GetBG1ScrPtr(); -void *G2_GetBG2ScrPtr(); -void *G2S_GetBG2ScrPtr(); -void *G2_GetBG3ScrPtr(); -void *G2S_GetBG3ScrPtr(); -void *G2_GetBG0CharPtr(); -void *G2S_GetBG0CharPtr(); -void *G2_GetBG1CharPtr(); -void *G2S_GetBG1CharPtr(); -void *G2_GetBG2CharPtr(); -void *G2S_GetBG2CharPtr(); -void *G2_GetBG3CharPtr(); -void *G2S_GetBG3CharPtr(); - -typedef union { - u16 raw; - struct { - u16 priority:2; - u16 charBase:4; - u16 mosaic:1; - u16 colorMode:1; - u16 screenBase:5; - u16 bgExtPltt:1; - u16 screenSize:2; - }; -} GXBg01Control; - -typedef union { - u16 raw; - struct { - u16 priority:2; - u16 charBase:4; - u16 mosaic:1; - u16 colorMode:1; - u16 screenBase:5; - u16 _reserve:1; - u16 screenSize:2; - }; -} GXBg23ControlText; - -typedef union { - u16 raw; - struct { - u16 priority:2; - u16 charBase:4; - u16 mosaic:1; - u16 _reserve:1; - u16 screenBase:5; - u16 areaOver:1; - u16 screenSize:2; - }; -} GXBg23ControlAffine; - -typedef union { - u16 raw; - struct { - u16 priority:2; - u16 _reserve1:1; - u16 charBase:3; - u16 mosaic:1; - u16 _reserve2:1; - u16 screenBase:5; - u16 areaOver:1; - u16 screenSize:2; - }; -} GXBg23Control256x16Pltt; - - -typedef union { - u16 raw; - struct { - u16 priority:2; - u16 _reserve1:4; - u16 mosaic:1; - u16 _reserve2:1; - u16 screenBase:5; - u16 areaOver:1; - u16 screenSize:2; - }; -} - GXBg23Control256Bmp, GXBg23ControlDCBmp; - -typedef union { - u16 raw; - struct { - u16 priority:2; - u16 _reserve1:4; - u16 mosaic:1; - u16 _reserve2:6; - u16 areaOver:1; - u16 screenSize:2; - }; -} GXBg2ControlLargeBmp; - - - -typedef enum { - GX_BG_SCRSIZE_TEXT_256x256 = 0, - GX_BG_SCRSIZE_TEXT_512x256 = 1, - GX_BG_SCRSIZE_TEXT_256x512 = 2, - GX_BG_SCRSIZE_TEXT_512x512 = 3 -} GXBGScrSizeText; - -typedef enum { - GX_BG_SCRSIZE_AFFINE_128x128 = 0, - GX_BG_SCRSIZE_AFFINE_256x256 = 1, - GX_BG_SCRSIZE_AFFINE_512x512 = 2, - GX_BG_SCRSIZE_AFFINE_1024x1024 = 3 -} GXBGScrSizeAffine; - -typedef enum { - GX_BG_SCRSIZE_256x16PLTT_128x128 = 0, - GX_BG_SCRSIZE_256x16PLTT_256x256 = 1, - GX_BG_SCRSIZE_256x16PLTT_512x512 = 2, - GX_BG_SCRSIZE_256x16PLTT_1024x1024 = 3 -} GXBGScrSize256x16Pltt; - -typedef enum { - GX_BG_SCRSIZE_256BMP_128x128 = 0, - GX_BG_SCRSIZE_256BMP_256x256 = 1, - GX_BG_SCRSIZE_256BMP_512x256 = 2, - GX_BG_SCRSIZE_256BMP_512x512 = 3 -} GXBGScrSize256Bmp; - -typedef enum { - GX_BG_SCRSIZE_DCBMP_128x128 = 0, - GX_BG_SCRSIZE_DCBMP_256x256 = 1, - GX_BG_SCRSIZE_DCBMP_512x256 = 2, - GX_BG_SCRSIZE_DCBMP_512x512 = 3 -} GXBGScrSizeDcBmp; - -typedef enum { - GX_BG_SCRSIZE_LARGEBMP_512x1024 = 0, - GX_BG_SCRSIZE_LARGEBMP_1024x512 = 1 -} GXBGScrSizeLargeBmp; - -typedef enum { - GX_BG_COLORMODE_16 = 0, - GX_BG_COLORMODE_256 = 1 -} GXBGColorMode; - -typedef enum { - GX_BG_AREAOVER_XLU = 0, - GX_BG_AREAOVER_REPEAT = 1 -} GXBGAreaOver; - -typedef enum { - GX_BG_CHARBASE_0x00000 = 0, - GX_BG_CHARBASE_0x04000 = 1, - GX_BG_CHARBASE_0x08000 = 2, - GX_BG_CHARBASE_0x0c000 = 3, - GX_BG_CHARBASE_0x10000 = 4, - GX_BG_CHARBASE_0x14000 = 5, - GX_BG_CHARBASE_0x18000 = 6, - GX_BG_CHARBASE_0x1c000 = 7, - GX_BG_CHARBASE_0x20000 = 8, - GX_BG_CHARBASE_0x24000 = 9, - GX_BG_CHARBASE_0x28000 = 10, - GX_BG_CHARBASE_0x2c000 = 11, - GX_BG_CHARBASE_0x30000 = 12, - GX_BG_CHARBASE_0x34000 = 13, - GX_BG_CHARBASE_0x38000 = 14, - GX_BG_CHARBASE_0x3c000 = 15 -} GXBGCharBase; - -typedef enum { - GX_BG_SCRBASE_0x0000 = 0, - GX_BG_SCRBASE_0x0800 = 1, - GX_BG_SCRBASE_0x1000 = 2, - GX_BG_SCRBASE_0x1800 = 3, - GX_BG_SCRBASE_0x2000 = 4, - GX_BG_SCRBASE_0x2800 = 5, - GX_BG_SCRBASE_0x3000 = 6, - GX_BG_SCRBASE_0x3800 = 7, - GX_BG_SCRBASE_0x4000 = 8, - GX_BG_SCRBASE_0x4800 = 9, - GX_BG_SCRBASE_0x5000 = 10, - GX_BG_SCRBASE_0x5800 = 11, - GX_BG_SCRBASE_0x6000 = 12, - GX_BG_SCRBASE_0x6800 = 13, - GX_BG_SCRBASE_0x7000 = 14, - GX_BG_SCRBASE_0x7800 = 15, - GX_BG_SCRBASE_0x8000 = 16, - GX_BG_SCRBASE_0x8800 = 17, - GX_BG_SCRBASE_0x9000 = 18, - GX_BG_SCRBASE_0x9800 = 19, - GX_BG_SCRBASE_0xa000 = 20, - GX_BG_SCRBASE_0xa800 = 21, - GX_BG_SCRBASE_0xb000 = 22, - GX_BG_SCRBASE_0xb800 = 23, - GX_BG_SCRBASE_0xc000 = 24, - GX_BG_SCRBASE_0xc800 = 25, - GX_BG_SCRBASE_0xd000 = 26, - GX_BG_SCRBASE_0xd800 = 27, - GX_BG_SCRBASE_0xe000 = 28, - GX_BG_SCRBASE_0xe800 = 29, - GX_BG_SCRBASE_0xf000 = 30, - GX_BG_SCRBASE_0xf800 = 31 -} GXBGScrBase; - -typedef enum { - GX_BG_BMPSCRBASE_0x00000 = 0, - GX_BG_BMPSCRBASE_0x04000 = 1, - GX_BG_BMPSCRBASE_0x08000 = 2, - GX_BG_BMPSCRBASE_0x0c000 = 3, - GX_BG_BMPSCRBASE_0x10000 = 4, - GX_BG_BMPSCRBASE_0x14000 = 5, - GX_BG_BMPSCRBASE_0x18000 = 6, - GX_BG_BMPSCRBASE_0x1c000 = 7, - GX_BG_BMPSCRBASE_0x20000 = 8, - GX_BG_BMPSCRBASE_0x24000 = 9, - GX_BG_BMPSCRBASE_0x28000 = 10, - GX_BG_BMPSCRBASE_0x2c000 = 11, - GX_BG_BMPSCRBASE_0x30000 = 12, - GX_BG_BMPSCRBASE_0x34000 = 13, - GX_BG_BMPSCRBASE_0x38000 = 14, - GX_BG_BMPSCRBASE_0x3c000 = 15, - GX_BG_BMPSCRBASE_0x40000 = 16, - GX_BG_BMPSCRBASE_0x44000 = 17, - GX_BG_BMPSCRBASE_0x48000 = 18, - GX_BG_BMPSCRBASE_0x4c000 = 19, - GX_BG_BMPSCRBASE_0x50000 = 20, - GX_BG_BMPSCRBASE_0x54000 = 21, - GX_BG_BMPSCRBASE_0x58000 = 22, - GX_BG_BMPSCRBASE_0x5c000 = 23, - GX_BG_BMPSCRBASE_0x60000 = 24, - GX_BG_BMPSCRBASE_0x64000 = 25, - GX_BG_BMPSCRBASE_0x68000 = 26, - GX_BG_BMPSCRBASE_0x6c000 = 27, - GX_BG_BMPSCRBASE_0x70000 = 28, - GX_BG_BMPSCRBASE_0x74000 = 29, - GX_BG_BMPSCRBASE_0x78000 = 30, - GX_BG_BMPSCRBASE_0x7c000 = 31 -} GXBGBmpScrBase; - -typedef enum { - GX_BG_EXTPLTT_01 = 0, - GX_BG_EXTPLTT_23 = 1 -} GXBGExtPltt; - -typedef enum { - GX_BG_EXTMODE_256x16PLTT = (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (0 << REG_G2_BG2CNT_COLORMODE_SHIFT), - GX_BG_EXTMODE_256BITMAP = (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT), - GX_BG_EXTMODE_DCBITMAP = (1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT) -} GXBGExtMode; - -//GX_capture -typedef enum { - GX_CAPTURE_DEST_VRAM_A_0x00000 = 0, - GX_CAPTURE_DEST_VRAM_B_0x00000 = 1, - GX_CAPTURE_DEST_VRAM_C_0x00000 = 2, - GX_CAPTURE_DEST_VRAM_D_0x00000 = 3, - - GX_CAPTURE_DEST_VRAM_A_0x08000 = 4, - GX_CAPTURE_DEST_VRAM_B_0x08000 = 5, - GX_CAPTURE_DEST_VRAM_C_0x08000 = 6, - GX_CAPTURE_DEST_VRAM_D_0x08000 = 7, - - GX_CAPTURE_DEST_VRAM_A_0x10000 = 8, - GX_CAPTURE_DEST_VRAM_B_0x10000 = 9, - GX_CAPTURE_DEST_VRAM_C_0x10000 = 10, - GX_CAPTURE_DEST_VRAM_D_0x10000 = 11, - - GX_CAPTURE_DEST_VRAM_A_0x18000 = 12, - GX_CAPTURE_DEST_VRAM_B_0x18000 = 13, - GX_CAPTURE_DEST_VRAM_C_0x18000 = 14, - GX_CAPTURE_DEST_VRAM_D_0x18000 = 15 -} GXCaptureDest; - -typedef enum { - GX_CAPTURE_SIZE_128x128 = 0, - GX_CAPTURE_SIZE_256x64 = 1, - GX_CAPTURE_SIZE_256x128 = 2, - GX_CAPTURE_SIZE_256x192 = 3 -} GXCaptureSize; - -typedef enum { - GX_CAPTURE_SRCA_2D3D = 0, - GX_CAPTURE_SRCA_3D = 1 -} GXCaptureSrcA; - -typedef enum { - GX_CAPTURE_SRCB_VRAM_0x00000 = 0, - GX_CAPTURE_SRCB_MRAM = 1, - GX_CAPTURE_SRCB_VRAM_0x08000 = 2, - GX_CAPTURE_SRCB_VRAM_0x10000 = 4, - GX_CAPTURE_SRCB_VRAM_0x18000 = 6 -} GXCaptureSrcB; - -typedef enum { - GX_CAPTURE_MODE_A = 0, - GX_CAPTURE_MODE_B = 1, - GX_CAPTURE_MODE_AB = 2 -} GXCaptureMode; - -static inline void G2_SetBG0Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt) { - reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & (REG_G2_BG0CNT_PRIORITY_MASK | REG_G2_BG0CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG0CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG0CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2_BG0CNT_BGPLTTSLOT_SHIFT)); -} - -static inline void G2S_SetBG0Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt) { - reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & (REG_G2S_DB_BG0CNT_PRIORITY_MASK | REG_G2S_DB_BG0CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG0CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT)); -} - -static inline void G2_SetBG1Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt) { - reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & (REG_G2_BG1CNT_PRIORITY_MASK | REG_G2_BG1CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG1CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG1CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2_BG1CNT_BGPLTTSLOT_SHIFT)); -} - -static inline void G2S_SetBG1Control(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt) { - reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & (REG_G2S_DB_BG1CNT_PRIORITY_MASK | REG_G2S_DB_BG1CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG1CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt << REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT)); -} - -static inline void G2_SetBG2ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ((REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG2CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT)); -} - -static inline void G2S_SetBG2ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ((REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG2CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT)); -} - -static inline void G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ((REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ((REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG2Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG2Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG3ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ((REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2_BG3CNT_COLORMODE_SHIFT) | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT)); -} - -static inline void G2S_SetBG3ControlText(GXBGScrSizeText screenSize, GXBGColorMode colorMode, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ((REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (colorMode << REG_G2S_DB_BG3CNT_COLORMODE_SHIFT) | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT)); -} - -static inline void G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ((REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ((REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK))) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG3Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG3Control256x16Pltt(GXBGScrSize256x16Pltt screenSize, GXBGAreaOver areaOver, GXBGScrBase screenBase, GXBGCharBase charBase) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize, GXBGAreaOver areaOver, GXBGBmpScrBase screenBase) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2_SetBG3ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2S_SetBG3ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize << REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT) | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT)); -} - -static inline void G2_BG0Mosaic(BOOL enable) { - if (enable) { - reg_G2_BG0CNT |= REG_G2_BG0CNT_MOSAIC_MASK; - } else { - reg_G2_BG0CNT &= ~REG_G2_BG0CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG0Mosaic(BOOL enable) { - if (enable) { - reg_G2S_DB_BG0CNT |= REG_G2S_DB_BG0CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG0CNT &= ~REG_G2S_DB_BG0CNT_MOSAIC_MASK; - } -} - -static inline void G2_BG1Mosaic(BOOL enable) { - if (enable) { - reg_G2_BG1CNT |= REG_G2_BG1CNT_MOSAIC_MASK; - } else { - reg_G2_BG1CNT &= ~REG_G2_BG1CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG1Mosaic(BOOL enable) { - if (enable) { - reg_G2S_DB_BG1CNT |= REG_G2S_DB_BG1CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG1CNT &= ~REG_G2S_DB_BG1CNT_MOSAIC_MASK; - } -} - -static inline void G2_BG2Mosaic(BOOL enable) { - if (enable) { - reg_G2_BG2CNT |= REG_G2_BG2CNT_MOSAIC_MASK; - } else { - reg_G2_BG2CNT &= ~REG_G2_BG2CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG2Mosaic(BOOL enable) { - if (enable) { - reg_G2S_DB_BG2CNT |= REG_G2S_DB_BG2CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG2CNT &= ~REG_G2S_DB_BG2CNT_MOSAIC_MASK; - } -} - -static inline void G2_BG3Mosaic(BOOL enable) { - if (enable) { - reg_G2_BG3CNT |= REG_G2_BG3CNT_MOSAIC_MASK; - } else { - reg_G2_BG3CNT &= ~REG_G2_BG3CNT_MOSAIC_MASK; - } -} - -static inline void G2S_BG3Mosaic(BOOL enable) { - if (enable) { - reg_G2S_DB_BG3CNT |= REG_G2S_DB_BG3CNT_MOSAIC_MASK; - } else { - reg_G2S_DB_BG3CNT &= ~REG_G2S_DB_BG3CNT_MOSAIC_MASK; - } -} - -static inline void G2_SetBG0Priority(int priority) { - reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & ~REG_G2_BG0CNT_PRIORITY_MASK) | (priority << REG_G2_BG0CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG0Priority(int priority) { - reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & ~REG_G2S_DB_BG0CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG0CNT_PRIORITY_SHIFT)); -} - -static inline void G2_SetBG1Priority(int priority) { - reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & ~REG_G2_BG1CNT_PRIORITY_MASK) | (priority << REG_G2_BG1CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG1Priority(int priority) { - reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & ~REG_G2S_DB_BG1CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG1CNT_PRIORITY_SHIFT)); -} - -static inline void G2_SetBG2Priority(int priority) { - reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ~REG_G2_BG2CNT_PRIORITY_MASK) | (priority << REG_G2_BG2CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG2Priority(int priority) { - reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ~REG_G2S_DB_BG2CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG2CNT_PRIORITY_SHIFT)); -} - -static inline void G2_SetBG3Priority(int priority) { - reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ~REG_G2_BG3CNT_PRIORITY_MASK) | (priority << REG_G2_BG3CNT_PRIORITY_SHIFT)); -} - -static inline void G2S_SetBG3Priority(int priority) { - reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ~REG_G2S_DB_BG3CNT_PRIORITY_MASK) | (priority << REG_G2S_DB_BG3CNT_PRIORITY_SHIFT)); -} - -static inline GXBg01Control G2_GetBG0Control(void) { - return *(volatile GXBg01Control *)®_G2_BG0CNT; -} - -static inline GXBg01Control G2S_GetBG0Control(void) { - return *(volatile GXBg01Control *)®_G2S_DB_BG0CNT; -} - -static inline GXBg01Control G2_GetBG1Control(void) { - return *(volatile GXBg01Control *)®_G2_BG1CNT; -} - -static inline GXBg01Control G2S_GetBG1Control(void) { - return *(volatile GXBg01Control *)®_G2S_DB_BG1CNT; -} - -static inline GXBg23ControlText G2_GetBG2ControlText(void) { - return *(volatile GXBg23ControlText *)®_G2_BG2CNT; -} - -static inline GXBg23ControlText G2S_GetBG2ControlText(void) { - return *(volatile GXBg23ControlText *)®_G2S_DB_BG2CNT; -} - -static inline GXBg23ControlAffine G2_GetBG2ControlAffine(void) { - return *(volatile GXBg23ControlAffine *)®_G2_BG2CNT; -} - -static inline GXBg23ControlAffine G2S_GetBG2ControlAffine(void) { - return *(volatile GXBg23ControlAffine *)®_G2S_DB_BG2CNT; -} - -static inline GXBg23Control256x16Pltt G2_GetBG2Control256x16Pltt(void) { - return *(volatile GXBg23Control256x16Pltt *)®_G2_BG2CNT; -} - -static inline GXBg23Control256x16Pltt G2S_GetBG2Control256x16Pltt(void) { - return *(volatile GXBg23Control256x16Pltt *)®_G2S_DB_BG2CNT; -} - -static inline GXBg23Control256Bmp G2_GetBG2Control256Bmp(void) { - return *(volatile GXBg23Control256Bmp *)®_G2_BG2CNT; -} - -static inline GXBg23Control256Bmp G2S_GetBG2Control256Bmp(void) { - return *(volatile GXBg23Control256Bmp *)®_G2S_DB_BG2CNT; -} - -static inline GXBg23ControlDCBmp G2_GetBG2ControlDCBmp(void) { - return *(volatile GXBg23ControlDCBmp *)®_G2_BG2CNT; -} - -static inline GXBg23ControlDCBmp G2S_GetBG2ControlDCBmp(void) { - return *(volatile GXBg23ControlDCBmp *)®_G2S_DB_BG2CNT; -} - -static inline GXBg2ControlLargeBmp G2_GetBG2ControlLargeBmp(void) { - return *(volatile GXBg2ControlLargeBmp *)®_G2_BG2CNT; -} - -static inline GXBg2ControlLargeBmp G2S_GetBG2ControlLargeBmp(void) { - return *(volatile GXBg2ControlLargeBmp *)®_G2S_DB_BG2CNT; -} - -static inline GXBg23ControlText G2_GetBG3ControlText(void) { - return *(volatile GXBg23ControlText *)®_G2_BG3CNT; -} - -static inline GXBg23ControlText G2S_GetBG3ControlText(void) { - return *(volatile GXBg23ControlText *)®_G2S_DB_BG3CNT; -} - -static inline GXBg23ControlAffine G2_GetBG3ControlAffine(void) { - return *(volatile GXBg23ControlAffine *)®_G2_BG3CNT; -} - -static inline GXBg23ControlAffine G2S_GetBG3ControlAffine(void) { - return *(volatile GXBg23ControlAffine *)®_G2S_DB_BG3CNT; -} - -static inline GXBg23Control256x16Pltt G2_GetBG3Control256x16Pltt(void) { - return *(volatile GXBg23Control256x16Pltt *)®_G2_BG3CNT; -} - -static inline GXBg23Control256x16Pltt G2S_GetBG3Control256x16Pltt(void) { - return *(volatile GXBg23Control256x16Pltt *)®_G2S_DB_BG3CNT; -} - -static inline GXBg23Control256Bmp G2_GetBG3Control256Bmp(void) { - return *(volatile GXBg23Control256Bmp *)®_G2_BG3CNT; -} - -static inline GXBg23Control256Bmp G2S_GetBG3Control256Bmp(void) { - return *(volatile GXBg23Control256Bmp *)®_G2S_DB_BG3CNT; -} - -static inline GXBg23ControlDCBmp G2_GetBG3ControlDCBmp(void) { - return *(volatile GXBg23ControlDCBmp *)®_G2_BG3CNT; -} - -static inline GXBg23ControlDCBmp G2S_GetBG3ControlDCBmp(void) { - return *(volatile GXBg23ControlDCBmp *)®_G2S_DB_BG3CNT; -} - -#endif //NITRO_GX_GX_BGCNT_H diff --git a/lib/include/nitro/gx/gx_load.h b/lib/include/nitro/gx/gx_load.h deleted file mode 100644 index ef6744fb..00000000 --- a/lib/include/nitro/gx/gx_load.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef NITRO_GX_GX_LOAD_H_ -#define NITRO_GX_GX_LOAD_H_ - -void GX_LoadBG0Scr(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBG1Scr(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBG2Scr(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBG3Scr(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG0Scr(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG1Scr(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG2Scr(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG3Scr(const void *pSrc, u32 offset, u32 szByte); - -void GX_LoadBG0Char(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBG1Char(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBG2Char(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBG3Char(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG0Char(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG1Char(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG2Char(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBG3Char(const void *pSrc, u32 offset, u32 szByte); - -void GX_BeginLoadBGExtPltt(void); -void GX_EndLoadBGExtPltt(void); -void GXS_BeginLoadBGExtPltt(void); -void GXS_EndLoadBGExtPltt(void); -void GX_BeginLoadOBJExtPltt(void); -void GX_EndLoadOBJExtPltt(void); -void GXS_BeginLoadOBJExtPltt(void); -void GXS_EndLoadOBJExtPltt(void); - -void GX_LoadBGPltt(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadOBJPltt(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadBGExtPltt(const void *pSrc, u32 offset, u32 szByte); -void GX_LoadOBJExtPltt(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBGPltt(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadOBJPltt(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadBGExtPltt(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadOBJExtPltt(const void *pSrc, u32 offset, u32 szByte); - -void GX_LoadOBJ(const void *pSrc, u32 offset, u32 szByte); -void GXS_LoadOBJ(const void *pSrc, u32 offset, u32 szByte); - -#endif //NITRO_GX_GX_LOAD_H_ diff --git a/lib/include/nitro/gx/gx_vramcnt.h b/lib/include/nitro/gx/gx_vramcnt.h deleted file mode 100644 index f148ad84..00000000 --- a/lib/include/nitro/gx/gx_vramcnt.h +++ /dev/null @@ -1,213 +0,0 @@ -#ifndef NITRO_GX_GX_VRAMCNT_H_ -#define NITRO_GX_GX_VRAMCNT_H_ - -typedef enum { - GX_VRAM_A = OS_VRAM_BANK_ID_A,// VRAM-A - GX_VRAM_B = OS_VRAM_BANK_ID_B,// VRAM-B - GX_VRAM_C = OS_VRAM_BANK_ID_C,// VRAM-C - GX_VRAM_D = OS_VRAM_BANK_ID_D,// VRAM-D - GX_VRAM_E = OS_VRAM_BANK_ID_E,// VRAM-E - GX_VRAM_F = OS_VRAM_BANK_ID_F,// VRAM-F - GX_VRAM_G = OS_VRAM_BANK_ID_G,// VRAM-G - GX_VRAM_H = OS_VRAM_BANK_ID_H,// VRAM-H - GX_VRAM_I = OS_VRAM_BANK_ID_I,// VRAM-I - GX_VRAM_ALL = OS_VRAM_BANK_ID_ALL -} GXVRam; - -typedef enum { - GX_VRAM_LCDC_NONE = 0x0000, - GX_VRAM_LCDC_A = GX_VRAM_A, - GX_VRAM_LCDC_B = GX_VRAM_B, - GX_VRAM_LCDC_C = GX_VRAM_C, - GX_VRAM_LCDC_D = GX_VRAM_D, - GX_VRAM_LCDC_E = GX_VRAM_E, - GX_VRAM_LCDC_F = GX_VRAM_F, - GX_VRAM_LCDC_G = GX_VRAM_G, - GX_VRAM_LCDC_H = GX_VRAM_H, - GX_VRAM_LCDC_I = GX_VRAM_I, - GX_VRAM_LCDC_ALL = GX_VRAM_ALL -} GXVRamLCDC; - -typedef enum { - GX_VRAM_BG_NONE = 0x0000, - GX_VRAM_BG_16_F = GX_VRAM_F, - GX_VRAM_BG_16_G = GX_VRAM_G, - GX_VRAM_BG_32_FG = GX_VRAM_F | GX_VRAM_G, - GX_VRAM_BG_64_E = GX_VRAM_E, - GX_VRAM_BG_80_EF = GX_VRAM_E | GX_VRAM_F, - GX_VRAM_BG_96_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G, - GX_VRAM_BG_128_A = GX_VRAM_A, - GX_VRAM_BG_128_B = GX_VRAM_B, - GX_VRAM_BG_128_C = GX_VRAM_C, - GX_VRAM_BG_128_D = GX_VRAM_D, - GX_VRAM_BG_256_AB = GX_VRAM_A | GX_VRAM_B, - GX_VRAM_BG_256_BC = GX_VRAM_B | GX_VRAM_C, - GX_VRAM_BG_256_CD = GX_VRAM_C | GX_VRAM_D, - GX_VRAM_BG_384_ABC = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C, - GX_VRAM_BG_384_BCD = GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - GX_VRAM_BG_512_ABCD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - GX_VRAM_BG_80_EG = GX_VRAM_E | GX_VRAM_G, - GX_VRAM_BG_256_AC = GX_VRAM_A | GX_VRAM_C, - GX_VRAM_BG_256_AD = GX_VRAM_A | GX_VRAM_D, - GX_VRAM_BG_256_BD = GX_VRAM_B | GX_VRAM_D, - GX_VRAM_BG_384_ABD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_D, - GX_VRAM_BG_384_ACD = GX_VRAM_A | GX_VRAM_C | GX_VRAM_D -} GXVRamBG; - -typedef enum { - GX_VRAM_OBJ_NONE = 0x0000, - GX_VRAM_OBJ_16_F = GX_VRAM_F, - GX_VRAM_OBJ_16_G = GX_VRAM_G, - GX_VRAM_OBJ_32_FG = GX_VRAM_F | GX_VRAM_G, - GX_VRAM_OBJ_64_E = GX_VRAM_E, - GX_VRAM_OBJ_80_EF = GX_VRAM_E | GX_VRAM_F, - GX_VRAM_OBJ_80_EG = GX_VRAM_E | GX_VRAM_G, - GX_VRAM_OBJ_96_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G, - GX_VRAM_OBJ_128_A = GX_VRAM_A, - GX_VRAM_OBJ_128_B = GX_VRAM_B, - GX_VRAM_OBJ_256_AB = GX_VRAM_A | GX_VRAM_B -} GXVRamOBJ; - -typedef enum { - GX_VRAM_TEX_NONE = 0x0000, - GX_VRAM_TEX_0_A = GX_VRAM_A, - GX_VRAM_TEX_0_B = GX_VRAM_B, - GX_VRAM_TEX_0_C = GX_VRAM_C, - GX_VRAM_TEX_0_D = GX_VRAM_D, - GX_VRAM_TEX_01_AB = GX_VRAM_A | GX_VRAM_B, - GX_VRAM_TEX_01_BC = GX_VRAM_B | GX_VRAM_C, - GX_VRAM_TEX_01_CD = GX_VRAM_C | GX_VRAM_D, - GX_VRAM_TEX_012_ABC = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C, - GX_VRAM_TEX_012_BCD = GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - GX_VRAM_TEX_0123_ABCD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C | GX_VRAM_D, - GX_VRAM_TEX_01_AC = GX_VRAM_A | GX_VRAM_C, - GX_VRAM_TEX_01_AD = GX_VRAM_A | GX_VRAM_D, - GX_VRAM_TEX_01_BD = GX_VRAM_B | GX_VRAM_D, - GX_VRAM_TEX_012_ABD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_D, - GX_VRAM_TEX_012_ACD = GX_VRAM_A | GX_VRAM_C | GX_VRAM_D -} GXVRamTex; - -typedef enum { - GX_VRAM_CLEARIMAGE_NONE = 0x0000, - GX_VRAM_CLEARIMAGE_256_AB = GX_VRAM_A | GX_VRAM_B, - GX_VRAM_CLEARIMAGE_256_CD = GX_VRAM_C | GX_VRAM_D, - GX_VRAM_CLEARDEPTH_128_A = GX_VRAM_A, - GX_VRAM_CLEARDEPTH_128_B = GX_VRAM_B, - GX_VRAM_CLEARDEPTH_128_C = GX_VRAM_C, - GX_VRAM_CLEARDEPTH_128_D = GX_VRAM_D -} GXVRamClearImage; - -typedef enum { - GX_VRAM_TEXPLTT_NONE = 0x0000, - GX_VRAM_TEXPLTT_0_F = GX_VRAM_F, - GX_VRAM_TEXPLTT_0_G = GX_VRAM_G, - GX_VRAM_TEXPLTT_01_FG = GX_VRAM_F | GX_VRAM_G, - GX_VRAM_TEXPLTT_0123_E = GX_VRAM_E, - GX_VRAM_TEXPLTT_01234_EF = GX_VRAM_E | GX_VRAM_F, - GX_VRAM_TEXPLTT_012345_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G -} GXVRamTexPltt; - -typedef enum { - GX_VRAM_BGEXTPLTT_NONE = 0x0000, - GX_VRAM_BGEXTPLTT_01_F = GX_VRAM_F, - GX_VRAM_BGEXTPLTT_23_G = GX_VRAM_G, - GX_VRAM_BGEXTPLTT_0123_E = GX_VRAM_E, - GX_VRAM_BGEXTPLTT_0123_FG = GX_VRAM_F | GX_VRAM_G -} GXVRamBGExtPltt; - -typedef enum { - GX_VRAM_OBJEXTPLTT_NONE = 0, - GX_VRAM_OBJEXTPLTT_0_F = GX_VRAM_F, - GX_VRAM_OBJEXTPLTT_0_G = GX_VRAM_G -} GXVRamOBJExtPltt; - -typedef enum { - GX_VRAM_SUB_BG_NONE = 0x0000, - GX_VRAM_SUB_BG_128_C = GX_VRAM_C, - GX_VRAM_SUB_BG_32_H = GX_VRAM_H, - GX_VRAM_SUB_BG_48_HI = GX_VRAM_H | GX_VRAM_I -} GXVRamSubBG; - -typedef enum { - GX_VRAM_SUB_OBJ_NONE = 0x0000, - GX_VRAM_SUB_OBJ_128_D = GX_VRAM_D, - GX_VRAM_SUB_OBJ_16_I = GX_VRAM_I -} GXVRamSubOBJ; - -typedef enum { - GX_VRAM_SUB_BGEXTPLTT_NONE = 0x0000, - GX_VRAM_SUB_BGEXTPLTT_0123_H = GX_VRAM_H -} GXVRamSubBGExtPltt; - -typedef enum { - GX_VRAM_SUB_OBJEXTPLTT_NONE = 0x0000, - GX_VRAM_SUB_OBJEXTPLTT_0_I = GX_VRAM_I -} GXVRamSubOBJExtPltt; - -void GX_SetBankForLCDC(GXVRamLCDC lcdc); -GXVRamLCDC GX_DisableBankForLCDC(void); - -void GX_SetBankForBG(GXVRamBG bank); -BOOL GX_TrySetBankForBG(GXVRamBG bank); -void GX_SetBankForOBJ(GXVRamOBJ bank); -BOOL GX_TrySetBankForOBJ(GXVRamOBJ bank); -void GX_SetBankForBGExtPltt(GXVRamBGExtPltt bank); -BOOL GX_TrySetBankForBGExtPltt(GXVRamBGExtPltt bank); -void GX_SetBankForOBJExtPltt(GXVRamOBJExtPltt bank); -BOOL GX_TrySetBankForOBJExtPltt(GXVRamOBJExtPltt bank); -void GX_SetBankForTex(GXVRamTex bank); -BOOL GX_TrySetBankForTex(GXVRamTex bank); -void GX_SetBankForTexPltt(GXVRamTexPltt bank); -BOOL GX_TrySetBankForTexPltt(GXVRamTexPltt bank); -void GX_SetBankForClearImage(GXVRamClearImage bank); -BOOL GX_TrySetBankForClearImage(GXVRamClearImage bank); - -GXVRamBG GX_GetBankForBG(void); -GXVRamOBJ GX_GetBankForOBJ(void); -GXVRamBGExtPltt GX_GetBankForBGExtPltt(void); -GXVRamOBJExtPltt GX_GetBankForOBJExtPltt(void); -GXVRamTex GX_GetBankForTex(void); -GXVRamTexPltt GX_GetBankForTexPltt(void); -GXVRamClearImage GX_GetBankForClearImage(void); - -GXVRamBG GX_ResetBankForBG(void); -GXVRamOBJ GX_ResetBankForOBJ(void); -GXVRamBGExtPltt GX_ResetBankForBGExtPltt(void); -GXVRamOBJExtPltt GX_ResetBankForOBJExtPltt(void); -GXVRamTex GX_ResetBankForTex(void); -GXVRamTexPltt GX_ResetBankForTexPltt(void); -GXVRamClearImage GX_ResetBankForClearImage(void); - -GXVRamBG GX_DisableBankForBG(void); -GXVRamOBJ GX_DisableBankForOBJ(void); -GXVRamBGExtPltt GX_DisableBankForBGExtPltt(void); -GXVRamOBJExtPltt GX_DisableBankForOBJExtPltt(void); -GXVRamTex GX_DisableBankForTex(void); -GXVRamTexPltt GX_DisableBankForTexPltt(void); -GXVRamClearImage GX_DisableBankForClearImage(void); - -void GX_SetBankForSubBG(GXVRamSubBG bank); -BOOL GX_TrySetBankForSubBG(GXVRamSubBG bank); -void GX_SetBankForSubOBJ(GXVRamSubOBJ bank); -BOOL GX_TrySetBankForSubOBJ(GXVRamSubOBJ bank); -void GX_SetBankForSubBGExtPltt(GXVRamSubBGExtPltt bank); -BOOL GX_TrySetBankForSubBGExtPltt(GXVRamSubBGExtPltt bank); -void GX_SetBankForSubOBJExtPltt(GXVRamSubOBJExtPltt bank); -BOOL GX_TrySetBankForSubOBJExtPltt(GXVRamSubOBJExtPltt bank); - -GXVRamSubBG GX_GetBankForSubBG(void); -GXVRamSubOBJ GX_GetBankForSubOBJ(void); -GXVRamSubBGExtPltt GX_GetBankForSubBGExtPltt(void); -GXVRamSubOBJExtPltt GX_GetBankForSubOBJExtPltt(void); - -GXVRamSubBG GX_ResetBankForSubBG(void); -GXVRamSubOBJ GX_ResetBankForSubOBJ(void); -GXVRamSubBGExtPltt GX_ResetBankForSubBGExtPltt(void); -GXVRamSubOBJExtPltt GX_ResetBankForSubOBJExtPltt(void); - -GXVRamSubBG GX_DisableBankForSubBG(void); -GXVRamSubOBJ GX_DisableBankForSubOBJ(void); -GXVRamSubBGExtPltt GX_DisableBankForSubBGExtPltt(void); -GXVRamSubOBJExtPltt GX_DisableBankForSubOBJExtPltt(void); - -#endif //NITRO_GX_GX_VRAMCNT_H_ diff --git a/lib/include/nitro/gx/gxcommon.h b/lib/include/nitro/gx/gxcommon.h deleted file mode 100644 index 9e387d30..00000000 --- a/lib/include/nitro/gx/gxcommon.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef NITRO_GX_GXCOMMON_H_ -#define NITRO_GX_GXCOMMON_H_ - -#ifndef SDK_ASM -typedef u16 GXRgb; -#endif - -#define GX_RGB_R_SHIFT (0) -#define GX_RGB_R_MASK (0x001f) -#define GX_RGB_G_SHIFT (5) -#define GX_RGB_G_MASK (0x03e0) -#define GX_RGB_B_SHIFT (10) -#define GX_RGB_B_MASK (0x7c00) -#ifdef SDK_ASM -#define GX_RGB(r, g, b) ((((r) << GX_RGB_R_SHIFT) | ((g) << GX_RGB_G_SHIFT) | ((b) << GX_RGB_B_SHIFT))) -#else -#define GX_RGB(r, g, b) ((GXRgb)(((r) << GX_RGB_R_SHIFT) | ((g) << GX_RGB_G_SHIFT) | ((b) << GX_RGB_B_SHIFT))) -#endif - -#define GX_DEFAULT_DMAID 3 - -#endif //NITRO_GX_GXCOMMON_H_ diff --git a/lib/include/nitro/hw/ARM7/io_reg.h b/lib/include/nitro/hw/ARM7/io_reg.h deleted file mode 100644 index b7356171..00000000 --- a/lib/include/nitro/hw/ARM7/io_reg.h +++ /dev/null @@ -1,211 +0,0 @@ -#ifndef NITRO_HW_ARM7_IO_REG_H_ -#define NITRO_HW_ARM7_IO_REG_H_ - -#define REG_MAINPINTF_OFFSET 0x180 -#define REG_MAINPINTF_ADDR (HW_REG_BASE + REG_MAINPINTF_OFFSET) -#define reg_PXI_MAINPINTF (*( REGType16v *) REG_MAINPINTF_ADDR) - -#define REG_MAINP_FIFO_CNT_OFFSET (0x184) -#define REG_MAINP_FIFO_CNT_ADDR (HW_REG_BASE + REG_MAINP_FIFO_CNT_OFFSET) -#define reg_PXI_MAINP_FIFO_CNT (*(REGType16v *)REG_MAINP_FIFO_CNT_ADDR) - -#define REG_SEND_FIFO_OFFSET 0x188 -#define REG_SEND_FIFO_ADDR (HW_REG_BASE + REG_SEND_FIFO_OFFSET) -#define reg_PXI_SEND_FIFO (*( REGType32v *) REG_SEND_FIFO_ADDR) - -/* RECV_FIFO */ - -#define REG_RECV_FIFO_OFFSET 0x100000 -#define REG_RECV_FIFO_ADDR (HW_REG_BASE + REG_RECV_FIFO_OFFSET) -#define reg_PXI_RECV_FIFO (*( REGType32v *) REG_RECV_FIFO_ADDR) - -#define REG_PXI_MAINPINTF_I_SHIFT 14 -#define REG_PXI_MAINPINTF_I_SIZE 1 -#define REG_PXI_MAINPINTF_I_MASK 0x4000 - -#define REG_PXI_MAINPINTF_IREQ_SHIFT 13 -#define REG_PXI_MAINPINTF_IREQ_SIZE 1 -#define REG_PXI_MAINPINTF_IREQ_MASK 0x2000 - -#define REG_PXI_MAINPINTF_A7STATUS_SHIFT 8 -#define REG_PXI_MAINPINTF_A7STATUS_SIZE 4 -#define REG_PXI_MAINPINTF_A7STATUS_MASK 0x0f00 - -#define REG_PXI_MAINPINTF_A9STATUS_SHIFT 0 -#define REG_PXI_MAINPINTF_A9STATUS_SIZE 4 -#define REG_PXI_MAINPINTF_A9STATUS_MASK 0x000f - -#ifndef SDK_ASM -#define REG_PXI_MAINPINTF_FIELD( i, ireq, a7status, a9status ) \ - (u16)( \ - ((u32)(i) << REG_PXI_MAINPINTF_I_SHIFT) | \ - ((u32)(ireq) << REG_PXI_MAINPINTF_IREQ_SHIFT) | \ - ((u32)(a7status) << REG_PXI_MAINPINTF_A7STATUS_SHIFT) | \ - ((u32)(a9status) << REG_PXI_MAINPINTF_A9STATUS_SHIFT)) -#endif - -#define REG_PXI_MAINP_FIFO_CNT_E_SHIFT 15 -#define REG_PXI_MAINP_FIFO_CNT_E_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_E_MASK 0x8000 - -#define REG_PXI_MAINP_FIFO_CNT_ERR_SHIFT 14 -#define REG_PXI_MAINP_FIFO_CNT_ERR_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_ERR_MASK 0x4000 - -#define REG_PXI_MAINP_FIFO_CNT_RECV_RI_SHIFT 10 -#define REG_PXI_MAINP_FIFO_CNT_RECV_RI_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_RECV_RI_MASK 0x0400 - -#define REG_PXI_MAINP_FIFO_CNT_RECV_FULL_SHIFT 9 -#define REG_PXI_MAINP_FIFO_CNT_RECV_FULL_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_RECV_FULL_MASK 0x0200 - -#define REG_PXI_MAINP_FIFO_CNT_RECV_EMP_SHIFT 8 -#define REG_PXI_MAINP_FIFO_CNT_RECV_EMP_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_RECV_EMP_MASK 0x0100 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_CL_SHIFT 3 -#define REG_PXI_MAINP_FIFO_CNT_SEND_CL_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_CL_MASK 0x0008 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_TI_SHIFT 2 -#define REG_PXI_MAINP_FIFO_CNT_SEND_TI_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_TI_MASK 0x0004 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_FULL_SHIFT 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_FULL_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_FULL_MASK 0x0002 - -#define REG_PXI_MAINP_FIFO_CNT_SEND_EMP_SHIFT 0 -#define REG_PXI_MAINP_FIFO_CNT_SEND_EMP_SIZE 1 -#define REG_PXI_MAINP_FIFO_CNT_SEND_EMP_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PXI_MAINP_FIFO_CNT_FIELD( e, err, recv_ri, recv_full, recv_emp, send_cl, send_ti, send_full, send_emp ) \ - (u16)( \ - ((u32)(e) << REG_PXI_MAINP_FIFO_CNT_E_SHIFT) | \ - ((u32)(err) << REG_PXI_MAINP_FIFO_CNT_ERR_SHIFT) | \ - ((u32)(recv_ri) << REG_PXI_MAINP_FIFO_CNT_RECV_RI_SHIFT) | \ - ((u32)(recv_full) << REG_PXI_MAINP_FIFO_CNT_RECV_FULL_SHIFT) | \ - ((u32)(recv_emp) << REG_PXI_MAINP_FIFO_CNT_RECV_EMP_SHIFT) | \ - ((u32)(send_cl) << REG_PXI_MAINP_FIFO_CNT_SEND_CL_SHIFT) | \ - ((u32)(send_ti) << REG_PXI_MAINP_FIFO_CNT_SEND_TI_SHIFT) | \ - ((u32)(send_full) << REG_PXI_MAINP_FIFO_CNT_SEND_FULL_SHIFT) | \ - ((u32)(send_emp) << REG_PXI_MAINP_FIFO_CNT_SEND_EMP_SHIFT)) -#endif - - -#define REG_RCNT0_L_OFFSET 0x134 -#define REG_RCNT0_L_ADDR (HW_REG_BASE + REG_RCNT0_L_OFFSET) -#define reg_EXI_RCNT0_L (*(REGType16v *)REG_RCNT0_L_ADDR) - -#define REG_RCNT0_H_OFFSET 0x136 -#define REG_RCNT0_H_ADDR (HW_REG_BASE + REG_RCNT0_H_OFFSET) -#define reg_EXI_RCNT0_H (*(REGType16v *)REG_RCNT0_H_ADDR) - -#define REG_EXI_RCNT0_L_RE1_SHIFT 15 -#define REG_EXI_RCNT0_L_RE1_SIZE 1 -#define REG_EXI_RCNT0_L_RE1_MASK 0x8000 - -#define REG_EXI_RCNT0_L_RE0_SHIFT 14 -#define REG_EXI_RCNT0_L_RE0_SIZE 1 -#define REG_EXI_RCNT0_L_RE0_MASK 0x4000 - -#define REG_EXI_RCNT0_L_I_SHIFT 8 -#define REG_EXI_RCNT0_L_I_SIZE 1 -#define REG_EXI_RCNT0_L_I_MASK 0x0100 - -#define REG_EXI_RCNT0_L_DIR_SO_SHIFT 7 -#define REG_EXI_RCNT0_L_DIR_SO_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SO_MASK 0x0080 - -#define REG_EXI_RCNT0_L_DIR_SI_SHIFT 6 -#define REG_EXI_RCNT0_L_DIR_SI_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SI_MASK 0x0040 - -#define REG_EXI_RCNT0_L_DIR_SD_SHIFT 5 -#define REG_EXI_RCNT0_L_DIR_SD_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SD_MASK 0x0020 - -#define REG_EXI_RCNT0_L_DIR_SC_SHIFT 4 -#define REG_EXI_RCNT0_L_DIR_SC_SIZE 1 -#define REG_EXI_RCNT0_L_DIR_SC_MASK 0x0010 - -#define REG_EXI_RCNT0_L_DATA_SO_SHIFT 3 -#define REG_EXI_RCNT0_L_DATA_SO_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SO_MASK 0x0008 - -#define REG_EXI_RCNT0_L_DATA_SI_SHIFT 2 -#define REG_EXI_RCNT0_L_DATA_SI_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SI_MASK 0x0004 - -#define REG_EXI_RCNT0_L_DATA_SD_SHIFT 1 -#define REG_EXI_RCNT0_L_DATA_SD_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SD_MASK 0x0002 - -#define REG_EXI_RCNT0_L_DATA_SC_SHIFT 0 -#define REG_EXI_RCNT0_L_DATA_SC_SIZE 1 -#define REG_EXI_RCNT0_L_DATA_SC_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT0_L_FIELD( re1, re0, i, dir_so, dir_si, dir_sd, dir_sc, data_so, data_si, data_sd, data_sc ) \ - (u16)( \ - ((u32)(re1) << REG_EXI_RCNT0_L_RE1_SHIFT) | \ - ((u32)(re0) << REG_EXI_RCNT0_L_RE0_SHIFT) | \ - ((u32)(i) << REG_EXI_RCNT0_L_I_SHIFT) | \ - ((u32)(dir_so) << REG_EXI_RCNT0_L_DIR_SO_SHIFT) | \ - ((u32)(dir_si) << REG_EXI_RCNT0_L_DIR_SI_SHIFT) | \ - ((u32)(dir_sd) << REG_EXI_RCNT0_L_DIR_SD_SHIFT) | \ - ((u32)(dir_sc) << REG_EXI_RCNT0_L_DIR_SC_SHIFT) | \ - ((u32)(data_so) << REG_EXI_RCNT0_L_DATA_SO_SHIFT) | \ - ((u32)(data_si) << REG_EXI_RCNT0_L_DATA_SI_SHIFT) | \ - ((u32)(data_sd) << REG_EXI_RCNT0_L_DATA_SD_SHIFT) | \ - ((u32)(data_sc) << REG_EXI_RCNT0_L_DATA_SC_SHIFT)) -#endif - -#define REG_EXI_RCNT0_H_DATA_R7_SHIFT 7 -#define REG_EXI_RCNT0_H_DATA_R7_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R7_MASK 0x0080 - -#define REG_EXI_RCNT0_H_DATA_R6_SHIFT 6 -#define REG_EXI_RCNT0_H_DATA_R6_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R6_MASK 0x0040 - -#define REG_EXI_RCNT0_H_DATA_R5_SHIFT 5 -#define REG_EXI_RCNT0_H_DATA_R5_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R5_MASK 0x0020 - -#define REG_EXI_RCNT0_H_DATA_R4_SHIFT 4 -#define REG_EXI_RCNT0_H_DATA_R4_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R4_MASK 0x0010 - -#define REG_EXI_RCNT0_H_DATA_R3_SHIFT 3 -#define REG_EXI_RCNT0_H_DATA_R3_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R3_MASK 0x0008 - -#define REG_EXI_RCNT0_H_DATA_R2_SHIFT 2 -#define REG_EXI_RCNT0_H_DATA_R2_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R2_MASK 0x0004 - -#define REG_EXI_RCNT0_H_DATA_R1_SHIFT 1 -#define REG_EXI_RCNT0_H_DATA_R1_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R1_MASK 0x0002 - -#define REG_EXI_RCNT0_H_DATA_R0_SHIFT 0 -#define REG_EXI_RCNT0_H_DATA_R0_SIZE 1 -#define REG_EXI_RCNT0_H_DATA_R0_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_EXI_RCNT0_H_FIELD( data_r7, data_r6, data_r5, data_r4, data_r3, data_r2, data_r1, data_r0 ) \ - (u16)( \ - ((u32)(data_r7) << REG_EXI_RCNT0_H_DATA_R7_SHIFT) | \ - ((u32)(data_r6) << REG_EXI_RCNT0_H_DATA_R6_SHIFT) | \ - ((u32)(data_r5) << REG_EXI_RCNT0_H_DATA_R5_SHIFT) | \ - ((u32)(data_r4) << REG_EXI_RCNT0_H_DATA_R4_SHIFT) | \ - ((u32)(data_r3) << REG_EXI_RCNT0_H_DATA_R3_SHIFT) | \ - ((u32)(data_r2) << REG_EXI_RCNT0_H_DATA_R2_SHIFT) | \ - ((u32)(data_r1) << REG_EXI_RCNT0_H_DATA_R1_SHIFT) | \ - ((u32)(data_r0) << REG_EXI_RCNT0_H_DATA_R0_SHIFT)) -#endif - -#endif //NITRO_HW_ARM7_IO_REG_H_ diff --git a/lib/include/nitro/hw/ARM7/mmap.h b/lib/include/nitro/hw/ARM7/mmap.h deleted file mode 100644 index 4275c0f4..00000000 --- a/lib/include/nitro/hw/ARM7/mmap.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef NITRO_HW_ARM7_MMAP_H -#define NITRO_HW_ARM7_MMAP_H - -#define HW_WRAM_END 0x03800000 -#define HW_PRV_WRAM 0x03800000 -#define HW_PRV_WRAM_END 0x03810000 - -#define HW_PRV_WRAM_SIZE (HW_PRV_WRAM_END-HW_PRV_WRAM) - -#define HW_PRV_WRAM_SYSRV_SIZE 0x40 - -#define HW_MAIN_MEM_SUB_SIZE (HW_MAIN_MEM_SIZE - HW_MAIN_MEM_MAIN_SIZE - HW_MAIN_MEM_SHARED_SIZE) - -#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000) -#define HW_MAIN_MEM_SUB_END (HW_MAIN_MEM_SUB + HW_MAIN_MEM_SUB_SIZE) -#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer - -#define HW_PRV_WRAM_IRQ_STACK_END (HW_PRV_WRAM_SVC_STACK) -#define HW_PRV_WRAM_SVC_STACK (HW_PRV_WRAM_SVC_STACK_END - HW_SVC_STACK_SIZE) -#define HW_PRV_WRAM_SVC_STACK_END (HW_PRV_WRAM_SYSRV) - -#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE) - -#define HW_INTR_CHECK_BUF (HW_PRV_WRAM_SYSRV + 0x38) -#define HW_INTR_VECTOR_BUF (HW_PRV_WRAM_SYSRV + 0x3C) - -#define HW_VBLANK_COUNT_BUF (HW_MAIN_MEM + 0x007ffc3c) -#define HW_LOCK_ID_FLAG_SUB (HW_MAIN_MEM + 0x007fffb8) - -#define HW_CARD_LOCK_BUF (HW_MAIN_MEM + 0x007FFFE0) - -#endif //NITRO_HW_ARM7_MMAP_H diff --git a/lib/include/nitro/hw/ARM9/io_reg.h b/lib/include/nitro/hw/ARM9/io_reg.h deleted file mode 100644 index 5fbd3499..00000000 --- a/lib/include/nitro/hw/ARM9/io_reg.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NITRO_HW_ARM9_IO_REG_H_ -#define NITRO_HW_ARM9_IO_REG_H_ - -#define REG_SUBPINTF_ADDR 0x4000180 -#define reg_PXI_SUBPINTF (*(REGType16v *)REG_SUBPINTF_ADDR) -#define reg_PXI_SUBP_FIFO_CNT (*(REGType16v *)0x4000184) -#define reg_PXI_SEND_FIFO (*(REGType32v *)0x4000188) - -#define reg_PXI_RECV_FIFO (*(REGType32v *)0x4100000) - -#endif //NITRO_HW_ARM9_IO_REG_H_ diff --git a/lib/include/nitro/hw/ARM9/mmap.h b/lib/include/nitro/hw/ARM9/mmap.h deleted file mode 100644 index 94a84700..00000000 --- a/lib/include/nitro/hw/ARM9/mmap.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef NITRO_HW_ARM9_MMAP_H -#define NITRO_HW_ARM9_MMAP_H - -extern u32 SDK_AUTOLOAD_DTCM_START[]; - -#define HW_MAIN_MEM_EX_SIZE 0x00800000 -#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x00700000 - -#define HW_ITCM_IMAGE 0x01000000 -#define HW_ITCM 0x01FF8000 -#define HW_ITCM_SIZE 0x00008000 -#define HW_ITCM_END (HW_ITCM + HW_ITCM_SIZE) - -#define HW_IOREG 0x04000000 -#define HW_CTRDG_ROM 0x08000000 -#define HW_BIOS 0xffff0000 - -#define HW_DTCM ((u32)SDK_AUTOLOAD_DTCM_START) -#define HW_DTCM_SIZE 0x00004000 -#define HW_DTCM_END (HW_DTCM + HW_DTCM_SIZE) - -#define HW_DTCM_SYSRV (HW_DTCM + 0x00003fc0) -#define HW_INTR_CHECK_BUF (HW_DTCM_SYSRV + 0x38) -#define HW_EXCP_VECTOR_BUF (HW_DTCM_SYSRV + 0x1C) - - -#define HW_CARD_ROM_HEADER_SIZE 0x00000160 -#define HW_DOWNLOAD_PARAMETER_SIZE 0x00000020 - -#define HW_CHECK_DEBUGGER_SW 0x027ffc10 -#define HW_CARD_ROM_HEADER (HW_MAIN_MEM + 0x007ffa80) -#define HW_BOOT_CHECK_INFO_BUF (HW_MAIN_MEM + 0x007ffc00) -#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20) -#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c) -#define HW_CTRDG_MODULE_INFO_BUF (HW_MAIN_MEM + 0x007ffc30) -#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer -#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory -#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE) -#define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE) -#define HW_DTCM_SVC_STACK_END (HW_DTCM + 0x00003fc0) -#define HW_DTCM_SVC_STACK (HW_DTCM_SVC_STACK_END - HW_SVC_STACK_SIZE) -#define HW_DTCM_IRQ_STACK_END (HW_DTCM_SVC_STACK) - -#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000) - -#define HW_BIOS_EXCP_STACK_MAIN (HW_MAIN_MEM + 0x007ffd80) -#define HW_EXCP_VECTOR_MAIN (HW_MAIN_MEM + 0x007ffd9c) - -#define HW_PXI_SIGNAL_PARAM_ARM9 (HW_MAIN_MEM + 0x007fff80) - -#define HW_WM_RSSI_POOL (HW_MAIN_MEM + 0x007fff98) - -#define HW_COMPONENT_PARAM (HW_MAIN_MEM + 0x007fff9c) - -#define HW_LOCK_ID_FLAG_MAIN (HW_MAIN_MEM + 0x007fffb0) -#define HW_SHARED_LOCK_BUF (HW_MAIN_MEM + 0x007fffc0) -#define HW_CARD_LOCK_BUF (HW_MAIN_MEM + 0x007fffe0) - -extern void SDK_SECTION_ARENA_EX_START(void); -#define OSi_MAIN_ARENA_HI_DEFAULT (HW_MAIN_MEM_MAIN_END) -#define OSi_MAINEX_ARENA_HI_DEFAULT (HW_MAIN_MEM + HW_MAIN_MEM_DEBUGGER_OFFSET) -#define OSi_MAINEX_ARENA_LO_DEFAULT ((u32)SDK_SECTION_ARENA_EX_START) -#define HW_ITCM_ARENA_HI_DEFAULT (HW_ITCM + HW_ITCM_SIZE) -#define HW_SHARED_ARENA_HI_DEFAULT (HW_RED_RESERVED - HW_CARD_ROM_HEADER_SIZE - HW_DOWNLOAD_PARAMETER_SIZE) -#define HW_SHARED_ARENA_LO_DEFAULT (HW_MAIN_MEM_SHARED) -#define OSi_WRAM_MAIN_ARENA_HI_DEFAULT (HW_WRAM) -#define OSi_WRAM_MAIN_ARENA_LO_DEFAULT (HW_WRAM) - -#define HW_BG_PLTT 0x05000000 -#define HW_BG_PLTT_END 0x05000200 -#define HW_BG_PLTT_SIZE (HW_BG_PLTT_END-HW_BG_PLTT) -#define HW_OBJ_PLTT 0x05000200 -#define HW_OBJ_PLTT_END 0x05000400 -#define HW_OBJ_PLTT_SIZE (HW_OBJ_PLTT_END-HW_OBJ_PLTT) -#define HW_PLTT HW_BG_PLTT -#define HW_PLTT_END HW_OBJ_PLTT_END -#define HW_PLTT_SIZE (HW_PLTT_END-HW_PLTT) -#define HW_DB_BG_PLTT 0x05000400 -#define HW_DB_BG_PLTT_END 0x05000600 -#define HW_DB_BG_PLTT_SIZE (HW_DB_BG_PLTT_END-HW_DB_BG_PLTT) -#define HW_DB_OBJ_PLTT 0x05000600 -#define HW_DB_OBJ_PLTT_END 0x05000800 -#define HW_DB_OBJ_PLTT_SIZE (HW_DB_OBJ_PLTT_END-HW_DB_OBJ_PLTT) -#define HW_DB_PLTT HW_DB_BG_PLTT -#define HW_DB_PLTT_END HW_DB_OBJ_PLTT_END -#define HW_DB_PLTT_SIZE (HW_DB_PLTT_END-HW_DB_PLTT) -#define HW_BG_VRAM 0x06000000 -#define HW_BG_VRAM_END 0x06080000 -#define HW_BG_VRAM_SIZE (HW_BG_VRAM_END-HW_BG_VRAM) -#define HW_DB_BG_VRAM 0x06200000 -#define HW_DB_BG_VRAM_END 0x06220000 -#define HW_DB_BG_VRAM_SIZE (HW_DB_BG_VRAM_END-HW_DB_BG_VRAM) -#define HW_OBJ_VRAM 0x06400000 -#define HW_OBJ_VRAM_END 0x06440000 -#define HW_OBJ_VRAM_SIZE (HW_OBJ_VRAM_END-HW_OBJ_VRAM) -#define HW_DB_OBJ_VRAM 0x06600000 -#define HW_DB_OBJ_VRAM_END 0x06620000 -#define HW_DB_OBJ_VRAM_SIZE (HW_DB_OBJ_VRAM_END-HW_DB_OBJ_VRAM) -#define HW_LCDC_VRAM 0x6800000 -#define HW_LCDC_VRAM_END 0x68a4000 -#define HW_LCDC_VRAM_SIZE (HW_LCDC_VRAM_END - HW_LCDC_VRAM) -#define HW_OAM 0x07000000 -#define HW_OAM_END 0x07000400 -#define HW_OAM_SIZE (HW_OAM_END-HW_OAM) -#define HW_DB_OAM 0x07000400 -#define HW_DB_OAM_END 0x07000800 -#define HW_DB_OAM_SIZE (HW_DB_OAM_END-HW_DB_OAM) - -#define HW_CTRDG_RAM_END 0x0a010000 - -#define HW_DTCM_SYSRV_OFS_INTR_VECTOR 0x3c -#define HW_RESET_VECTOR 0xffff0000 - -#endif //NITRO_HW_ARM9_MMAP_H diff --git a/lib/include/nitro/hw/common/io_reg.h b/lib/include/nitro/hw/common/io_reg.h deleted file mode 100644 index ea996f7f..00000000 --- a/lib/include/nitro/hw/common/io_reg.h +++ /dev/null @@ -1,1205 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -#ifndef NITRO_HW_IO_REG_SHARED_H_ -#define NITRO_HW_IO_REG_SHARED_H_ - -#define HW_REG_BASE 0x04000000 - -#define REG_TM0CNT_L_OFFSET 0x100 -#define REG_TM0CNT_L_ADDR (HW_REG_BASE + REG_TM0CNT_L_OFFSET) -#define reg_OS_TM0CNT_L (*(REGType16v *)REG_TM0CNT_L_ADDR) - -#define REG_TM0CNT_H_OFFSET 0x102 -#define REG_TM0CNT_H_ADDR (HW_REG_BASE + REG_TM0CNT_H_OFFSET) -#define reg_OS_TM0CNT_H (*(REGType16v *)REG_TM0CNT_H_ADDR) - -#define REG_TM1CNT_L_OFFSET 0x104 -#define REG_TM1CNT_L_ADDR (HW_REG_BASE + REG_TM1CNT_L_OFFSET) -#define reg_OS_TM1CNT_L (*(REGType16v *)REG_TM1CNT_L_ADDR) - -#define REG_TM1CNT_H_OFFSET 0x106 -#define REG_TM1CNT_H_ADDR (HW_REG_BASE + REG_TM1CNT_H_OFFSET) -#define reg_OS_TM1CNT_H (*(REGType16v *)REG_TM1CNT_H_ADDR) - -#define REG_TM2CNT_L_OFFSET 0x108 -#define REG_TM2CNT_L_ADDR (HW_REG_BASE + REG_TM2CNT_L_OFFSET) -#define reg_OS_TM2CNT_L (*(REGType16v *)REG_TM2CNT_L_ADDR) - -#define REG_TM2CNT_H_OFFSET 0x10A -#define REG_TM2CNT_H_ADDR (HW_REG_BASE + REG_TM2CNT_H_OFFSET) -#define reg_OS_TM2CNT_H (*(REGType16v *)REG_TM2CNT_H_ADDR) - -#define REG_TM3CNT_L_OFFSET 0x10C -#define REG_TM3CNT_L_ADDR (HW_REG_BASE + REG_TM3CNT_L_OFFSET) -#define reg_OS_TM3CNT_L (*(REGType16v *)REG_TM3CNT_L_ADDR) - -#define REG_TM3CNT_H_OFFSET 0x10E -#define REG_TM3CNT_H_ADDR (HW_REG_BASE + REG_TM3CNT_H_OFFSET) -#define reg_OS_TM3CNT_H (*(REGType16v *)REG_TM3CNT_H_ADDR) - -#define REG_IE_OFFSET 0x210 -#define REG_IE_ADDR (HW_REG_BASE + REG_IE_OFFSET) -#define reg_OS_IE (*(REGType32v *)REG_IE_ADDR) - -#define REG_IME_OFFSET 0x208 -#define REG_IME_ADDR (HW_REG_BASE + REG_IME_OFFSET) -#define reg_OS_IME (*(REGType16v *)REG_IME_ADDR) - -#define REG_IF_OFFSET 0x214 -#define REG_IF_ADDR (HW_REG_BASE + REG_IF_OFFSET) -#define reg_OS_IF (*(REGType32v *)REG_IF_ADDR) - -#ifdef SDK_ARM7 -#define REG_MAINPINTF_OFFSET 0x180 -#define REG_MAINPINTF_ADDR (HW_REG_BASE + REG_MAINPINTF_OFFSET) -#define reg_OS_MAININTF (*(REGType16v *)REG_MAINPINTF_ADDR) -#else -#define REG_SUBINTF_OFFSET 0x180 -#define REG_SUBINTF_ADDR (HW_REG_BASE + REG_SUBINTF_OFFSET) -#define reg_OS_SUBINTF (*(REGType16v *)REG_SUBINTF_ADDR) -#endif //SDK_ARM7 - -#define REG_OS_TM0CNT_H_PS_SHIFT 0 - -#define REG_VCOUNT_OFFSET 0x6 - -#define reg_GX_DISPCNT (*(REGType32v *)0x4000000) -#define reg_GX_DISPSTAT (*(REGType16v *)0x4000004) -#define reg_GX_VCOUNT (*(REGType16v *)(HW_REG_BASE + REG_VCOUNT_OFFSET)) - -#define reg_G2_BG0CNT (*(REGType16v *)0x4000008) -#define reg_G2_BG1CNT (*(REGType16v *)0x400000a) -#define reg_G2_BG2CNT (*(REGType16v *)0x400000c) -#define reg_G2_BG3CNT (*(REGType16v *)0x400000e) -#define reg_G2_BG0OFS (*(REGType32v *)0x4000010) -#define reg_G2_BG0HOFS (*(REGType16v *)0x4000010) -#define reg_G2_BG0VOFS (*(REGType16v *)0x4000012) -#define reg_G2_BG1OFS (*(REGType32v *)0x4000014) -#define reg_G2_BG1HOFS (*(REGType16v *)0x4000014) -#define reg_G2_BG1VOFS (*(REGType16v *)0x4000016) -#define reg_G2_BG2OFS (*(REGType32v *)0x4000018) -#define reg_G2_BG2HOFS (*(REGType16v *)0x4000018) -#define reg_G2_BG2VOFS (*(REGType16v *)0x400001a) -#define reg_G2_BG3OFS (*(REGType32v *)0x400001c) -#define reg_G2_BG3HOFS (*(REGType16v *)0x400001c) -#define reg_G2_BG3VOFS (*(REGType16v *)0x400001e) -#define reg_G2_BG2PA (*(REGType16v *)0x4000020) -#define reg_G2_BG2PB (*(REGType16v *)0x4000022) -#define reg_G2_BG2PC (*(REGType16v *)0x4000024) -#define reg_G2_BG2PD (*(REGType16v *)0x4000026) -#define reg_G2_BG2X (*(REGType32v *)0x4000028) -#define reg_G2_BG2Y (*(REGType32v *)0x400002c) -#define reg_G2_BG3PA (*(REGType16v *)0x4000030) -#define reg_G2_BG3PB (*(REGType16v *)0x4000032) -#define reg_G2_BG3PC (*(REGType16v *)0x4000034) -#define reg_G2_BG3PD (*(REGType16v *)0x4000036) -#define reg_G2_BG3X (*(REGType32v *)0x4000038) -#define reg_G2_BG3Y (*(REGType32v *)0x400003c) -#define reg_G2_WIN0H (*(REGType16v *)0x4000040) -#define reg_G2_WIN1H (*(REGType16v *)0x4000042) -#define reg_G2_WIN0V (*(REGType16v *)0x4000044) -#define reg_G2_WIN1V (*(REGType16v *)0x4000046) -#define reg_G2_WININ (*(REGType16v *)0x4000048) -#define reg_G2_WINOUT (*(REGType16v *)0x400004a) -#define reg_G2_MOSAIC (*(REGType16v *)0x400004c) -#define reg_G2_BLDCNT (*(REGType16v *)0x4000050) -#define reg_G2_BLDALPHA (*(REGType16v *)0x4000052) -#define reg_G2_BLDY (*(REGType16v *)0x4000054) - -#define reg_G3X_DISP3DCNT (*(REGType16v *)0x4000060) - -#define reg_GX_DISPCAPCNT (*(REGType32v *)0x4000064) -#define reg_GX_DISP_MMEM_FIFO (*(REGType32v *)0x4000068) -#define reg_GX_DISP_MMEM_FIFO_L (*(REGType16v *)0x4000068) -#define reg_GX_DISP_MMEM_FIFO_H (*(REGType16v *)0x400006a) -#define reg_GX_MASTER_BRIGHT (*(REGType16v *)0x400006c) -#define reg_GX_TVOUTCNT (*(REGType16v *)0x4000070) - -#define reg_MI_DMA0SAD (*(REGType32v *)0x40000b0) -#define reg_MI_DMA0DAD (*(REGType32v *)0x40000b4) -#define reg_MI_DMA0CNT (*(REGType32v *)0x40000b8) -#define reg_MI_DMA1SAD (*(REGType32v *)0x40000bc) -#define reg_MI_DMA1DAD (*(REGType32v *)0x40000c0) -#define reg_MI_DMA1CNT (*(REGType32v *)0x40000c4) -#define reg_MI_DMA2SAD (*(REGType32v *)0x40000c8) -#define reg_MI_DMA2DAD (*(REGType32v *)0x40000cc) -#define reg_MI_DMA2CNT (*(REGType32v *)0x40000d0) -#define reg_MI_DMA3SAD (*(REGType32v *)0x40000d4) -#define reg_MI_DMA3DAD (*(REGType32v *)0x40000d8) -#define reg_MI_DMA3CNT (*(REGType32v *)0x40000dc) -#define reg_MI_DMA0_CLR_DATA (*(REGType32v *)0x40000e0) -#define reg_MI_DMA1_CLR_DATA (*(REGType32v *)0x40000e4) -#define reg_MI_DMA2_CLR_DATA (*(REGType32v *)0x40000e8) -#define reg_MI_DMA3_CLR_DATA (*(REGType32v *)0x40000ec) - -#define reg_EXI_SIODATA32 (*(REGType32v *)0x4000120) -#define reg_EXI_SIOCNT (*(REGType16v *)0x4000128) -#define reg_EXI_SIOSEL (*(REGType32v *)0x400012c) - -#define reg_PAD_KEYINPUT (*(REGType16v *)0x4000130) -#define reg_PAD_KEYCNT (*(REGType16v *)0x4000132) - -#define reg_MI_MCCNT0 (*(REGType16v *)0x40001a0) -#define reg_CARD_MASTERCNT (*(REGType8v *)0x40001a1) //? -#define reg_MI_MCD0 (*(REGType16v *)0x40001a2) -#define reg_MI_MCCNT1 (*(REGType32v *)0x40001a4) -#define reg_CARD_CNT (*(REGType32v *)0x40001a4) //? -#define reg_MI_MCCMD0 (*(REGType32v *)0x40001a8) -#define reg_CARD_CMD (*(REGType8v *)0x40001a8) //? -#define reg_MI_MCCMD1 (*(REGType32v *)0x40001ac) -#define reg_MI_EXMEMCNT (*(REGType16v *)0x4000204) - -#define reg_OS_PAUSE (*(REGType16v *)0x4000300) - -#define reg_GX_VRAMCNT (*(REGType32v *)0x4000240) -#define reg_GX_VRAMCNT_A (*(REGType8v *)0x4000240) -#define reg_GX_VRAMCNT_B (*(REGType8v *)0x4000241) -#define reg_GX_VRAMCNT_C (*(REGType8v *)0x4000242) -#define reg_GX_VRAMCNT_D (*(REGType8v *)0x4000243) -#define reg_GX_WVRAMCNT (*(REGType32v *)0x4000244) -#define reg_GX_VRAMCNT_E (*(REGType8v *)0x4000244) -#define reg_GX_VRAMCNT_F (*(REGType8v *)0x4000245) -#define reg_GX_VRAMCNT_G (*(REGType8v *)0x4000246) -#define reg_GX_VRAMCNT_WRAM (*(REGType8v *)0x4000247) -#define reg_GX_VRAM_HI_CNT (*(REGType16v *)0x4000248) -#define reg_GX_VRAMCNT_H (*(REGType8v *)0x4000248) -#define reg_GX_VRAMCNT_I (*(REGType8v *)0x4000249) - -#define reg_CP_DIVCNT (*(REGType16v *)0x4000280) - -#define REG_DIV_NUMER_ADDR 0x4000290 -#define reg_CP_DIV_NUMER (*(REGType64v *)REG_DIV_NUMER_ADDR) -#define reg_CP_DIV_NUMER_L (*(REGType32v *)REG_DIV_NUMER_ADDR) -#define reg_CP_DIV_NUMER_H (*(REGType32v *)0x4000294) -#define reg_CP_DIV_DENOM (*(REGType64v *)0x4000298) -#define reg_CP_DIV_DENOM_L (*(REGType32v *)0x4000298) -#define reg_CP_DIV_DENOM_H (*(REGType32v *)0x400029c) -#define reg_CP_DIV_RESULT (*(REGType64v *)0x40002A0) -#define reg_CP_DIV_RESULT_L (*(REGType32v *)0x40002A0) -#define reg_CP_DIV_RESULT_H (*(REGType32v *)0x40002A4) -#define reg_CP_DIVREM_RESULT (*(REGType64v *)0x40002A8) -#define reg_CP_DIVREM_RESULT_L (*(REGType32v *)0x40002A8) -#define reg_CP_DIVREM_RESULT_H (*(REGType32v *)0x40002Ac) -#define reg_CP_SQRTCNT (*(REGType16v *)0x40002B0) -#define reg_CP_SQRT_RESULT (*(REGType32v *)0x40002B4) -#define reg_CP_SQRT_PARAM (*(REGType64v *)0x40002B8) -#define reg_CP_SQRT_PARAM_L (*(REGType32v *)0x40002B8) -#define reg_CP_SQRT_PARAM_H (*(REGType32v *)0x40002Bc) - -#define reg_GX_POWCNT (*(REGType16v *)0x4000304) - -#define reg_G3X_RDLINES_COUNT (*(const REGType16v *)0x4000320) -#define reg_G3X_EDGE_COLOR_0 (*(REGType32v *)0x4000330) -#define reg_G3X_EDGE_COLOR_0_L (*(REGType16v *)0x4000330) -#define reg_G3X_EDGE_COLOR_0_H (*(REGType16v *)0x4000332) -#define reg_G3X_EDGE_COLOR_1 (*(REGType32v *)0x4000334) -#define reg_G3X_EDGE_COLOR_1_L (*(REGType16v *)0x4000334) -#define reg_G3X_EDGE_COLOR_1_H (*(REGType16v *)0x4000336) -#define reg_G3X_EDGE_COLOR_2 (*(REGType32v *)0x4000338) -#define reg_G3X_EDGE_COLOR_2_L (*(REGType16v *)0x4000338) -#define reg_G3X_EDGE_COLOR_2_H (*(REGType16v *)0x400033a) -#define reg_G3X_EDGE_COLOR_3 (*(REGType32v *)0x400033c) -#define reg_G3X_EDGE_COLOR_3_L (*(REGType16v *)0x400033c) -#define reg_G3X_EDGE_COLOR_3_H (*(REGType16v *)0x400033e) -#define reg_G3X_ALPHA_TEST_REF (*(REGType16v *)0x4000340) -#define reg_G3X_CLEAR_COLOR (*(REGType32v *)0x4000350) -#define reg_G3X_CLEAR_DEPTH (*(REGType16v *)0x4000354) -#define reg_G3X_CLRIMAGE_OFFSET (*(REGType16v *)0x4000356) -#define reg_G3X_FOG_COLOR (*(REGType32v *)0x4000358) -#define reg_G3X_FOG_OFFSET (*(REGType16v *)0x400035c) -#define reg_G3X_FOG_TABLE_0 (*(REGType32v *)0x4000360) -#define reg_G3X_FOG_TABLE_0_L (*(REGType16v *)0x4000360) -#define reg_G3X_FOG_TABLE_0_H (*(REGType16v *)0x4000362) -#define reg_G3X_FOG_TABLE_1 (*(REGType32v *)0x4000364) -#define reg_G3X_FOG_TABLE_1_L (*(REGType16v *)0x4000364) -#define reg_G3X_FOG_TABLE_1_H (*(REGType16v *)0x4000366) -#define reg_G3X_FOG_TABLE_2 (*(REGType32v *)0x4000368) -#define reg_G3X_FOG_TABLE_2_L (*(REGType16v *)0x4000368) -#define reg_G3X_FOG_TABLE_2_H (*(REGType16v *)0x400036a) -#define reg_G3X_FOG_TABLE_3 (*(REGType32v *)0x400036c) -#define reg_G3X_FOG_TABLE_3_L (*(REGType16v *)0x400036c) -#define reg_G3X_FOG_TABLE_3_H (*(REGType16v *)0x400036e) -#define reg_G3X_FOG_TABLE_4 (*(REGType32v *)0x4000370) -#define reg_G3X_FOG_TABLE_4_L (*(REGType16v *)0x4000370) -#define reg_G3X_FOG_TABLE_4_H (*(REGType16v *)0x4000372) -#define reg_G3X_FOG_TABLE_5 (*(REGType32v *)0x4000374) -#define reg_G3X_FOG_TABLE_5_L (*(REGType16v *)0x4000374) -#define reg_G3X_FOG_TABLE_5_H (*(REGType16v *)0x4000376) -#define reg_G3X_FOG_TABLE_6 (*(REGType32v *)0x4000378) -#define reg_G3X_FOG_TABLE_6_L (*(REGType16v *)0x4000378) -#define reg_G3X_FOG_TABLE_6_H (*(REGType16v *)0x400037a) -#define reg_G3X_FOG_TABLE_7 (*(REGType32v *)0x400037c) -#define reg_G3X_FOG_TABLE_7_L (*(REGType16v *)0x400037c) -#define reg_G3X_FOG_TABLE_7_H (*(REGType16v *)0x400037e) -#define reg_G3X_TOON_TABLE_0 (*(REGType32v *)0x4000380) -#define reg_G3X_TOON_TABLE_0_L (*(REGType16v *)0x4000380) -#define reg_G3X_TOON_TABLE_0_H (*(REGType16v *)0x4000382) -#define reg_G3X_TOON_TABLE_1 (*(REGType32v *)0x4000384) -#define reg_G3X_TOON_TABLE_1_L (*(REGType16v *)0x4000384) -#define reg_G3X_TOON_TABLE_1_H (*(REGType16v *)0x4000386) -#define reg_G3X_TOON_TABLE_2 (*(REGType32v *)0x4000388) -#define reg_G3X_TOON_TABLE_2_L (*(REGType16v *)0x4000388) -#define reg_G3X_TOON_TABLE_2_H (*(REGType16v *)0x400038a) -#define reg_G3X_TOON_TABLE_3 (*(REGType32v *)0x400038c) -#define reg_G3X_TOON_TABLE_3_L (*(REGType16v *)0x400038c) -#define reg_G3X_TOON_TABLE_3_H (*(REGType16v *)0x400038e) -#define reg_G3X_TOON_TABLE_4 (*(REGType32v *)0x4000390) -#define reg_G3X_TOON_TABLE_4_L (*(REGType16v *)0x4000390) -#define reg_G3X_TOON_TABLE_4_H (*(REGType16v *)0x4000392) -#define reg_G3X_TOON_TABLE_5 (*(REGType32v *)0x4000394) -#define reg_G3X_TOON_TABLE_5_L (*(REGType16v *)0x4000394) -#define reg_G3X_TOON_TABLE_5_H (*(REGType16v *)0x4000396) -#define reg_G3X_TOON_TABLE_7 (*(REGType32v *)0x400039c) -#define reg_G3X_TOON_TABLE_7_L (*(REGType16v *)0x400039c) -#define reg_G3X_TOON_TABLE_7_H (*(REGType16v *)0x400039e) -#define reg_G3X_TOON_TABLE_8 (*(REGType32v *)0x40003a0) -#define reg_G3X_TOON_TABLE_8_L (*(REGType16v *)0x40003a0) -#define reg_G3X_TOON_TABLE_8_H (*(REGType16v *)0x40003a2) -#define reg_G3X_TOON_TABLE_9 (*(REGType32v *)0x40003a4) -#define reg_G3X_TOON_TABLE_9_L (*(REGType16v *)0x40003a4) -#define reg_G3X_TOON_TABLE_9_H (*(REGType16v *)0x40003a6) -#define reg_G3X_TOON_TABLE_10 (*(REGType32v *)0x40003a8) -#define reg_G3X_TOON_TABLE_10_L (*(REGType16v *)0x40003a8) -#define reg_G3X_TOON_TABLE_10_H (*(REGType16v *)0x40003aa) -#define reg_G3X_TOON_TABLE_11 (*(REGType32v *)0x40003ac) -#define reg_G3X_TOON_TABLE_11_L (*(REGType16v *)0x40003ac) -#define reg_G3X_TOON_TABLE_11_H (*(REGType16v *)0x40003ae) -#define reg_G3X_TOON_TABLE_12 (*(REGType32v *)0x40003b0) -#define reg_G3X_TOON_TABLE_12_L (*(REGType16v *)0x40003b0) -#define reg_G3X_TOON_TABLE_12_H (*(REGType16v *)0x40003b2) -#define reg_G3X_TOON_TABLE_13 (*(REGType32v *)0x40003b4) -#define reg_G3X_TOON_TABLE_13_L (*(REGType16v *)0x40003b4) -#define reg_G3X_TOON_TABLE_13_H (*(REGType16v *)0x40003b6) -#define reg_G3X_TOON_TABLE_14 (*(REGType32v *)0x40003b8) -#define reg_G3X_TOON_TABLE_14_L (*(REGType16v *)0x40003b8) -#define reg_G3X_TOON_TABLE_14_H (*(REGType16v *)0x40003ba) -#define reg_G3X_TOON_TABLE_15 (*(REGType32v *)0x40003bc) -#define reg_G3X_TOON_TABLE_15_L (*(REGType16v *)0x40003bc) -#define reg_G3X_TOON_TABLE_15_H (*(REGType16v *)0x40003be) -#define reg_G3X_GXFIFO (*(REGType32v *)0x4000400) - -#define reg_G3_MTX_MODE (*(REGType32v *)0x4000440) -#define reg_G3_MTX_PUSH (*(REGType32v *)0x4000444) -#define reg_G3_MTX_POP (*(REGType32v *)0x4000448) -#define reg_G3_MTX_STORE (*(REGType32v *)0x400044c) -#define reg_G3_MTX_RESTORE (*(REGType32v *)0x4000450) -#define reg_G3_MTX_IDENTITY (*(REGType32v *)0x4000454) -#define reg_G3_MTX_LOAD_4x4 (*(REGType32v *)0x4000458) -#define reg_G3_MTX_LOAD_4x3 (*(REGType32v *)0x400045c) -#define reg_G3_MTX_MULT_4x4 (*(REGType32v *)0x4000460) -#define reg_G3_MTX_MULT_4x3 (*(REGType32v *)0x4000464) -#define reg_G3_MTX_MULT_3x3 (*(REGType32v *)0x4000468) -#define reg_G3_MTX_SCALE (*(REGType32v *)0x400046c) -#define reg_G3_MTX_TRANS (*(REGType32v *)0x4000470) -#define reg_G3_COLOR (*(REGType32v *)0x4000480) -#define reg_G3_NORMAL (*(REGType32v *)0x4000484) -#define reg_G3_TEXCOORD (*(REGType32v *)0x4000488) -#define reg_G3_VTX_16 (*(REGType32v *)0x400048c) -#define reg_G3_VTX_10 (*(REGType32v *)0x4000490) -#define reg_G3_VTX_XY (*(REGType32v *)0x4000494) -#define reg_G3_VTX_XZ (*(REGType32v *)0x4000498) -#define reg_G3_VTX_YZ (*(REGType32v *)0x400049c) -#define reg_G3_VTX_DIFF (*(REGType32v *)0x40004a0) -#define reg_G3_POLYGON_ATTR (*(REGType32v *)0x40004a4) -#define reg_G3_TEXIMAGE_PARAM (*(REGType32v *)0x40004a8) -#define reg_G3_TEXPLTT_BASE (*(REGType32v *)0x40004ac) -#define reg_G3_DIF_AMB (*(REGType32v *)0x40004c0) -#define reg_G3_SPE_EMI (*(REGType32v *)0x40004c4) -#define reg_G3_LIGHT_VECTOR (*(REGType32v *)0x40004c8) -#define reg_G3_LIGHT_COLOR (*(REGType32v *)0x40004cc) -#define reg_G3_SHININESS (*(REGType32v *)0x40004d0) -#define reg_G3_BEGIN_VTXS (*(REGType32v *)0x4000500) -#define reg_G3_END_VTXS (*(REGType32v *)0x4000504) -#define reg_G3_SWAP_BUFFERS (*(REGType32v *)0x4000540) -#define reg_G3_VIEWPORT (*(REGType32v *)0x4000580) -#define reg_G3_BOX_TEST (*(REGType32v *)0x40005c0) -#define reg_G3_POS_TEST (*(REGType32v *)0x40005c4) -#define reg_G3_VEC_TEST (*(REGType32v *)0x40005c8) - -#define reg_G3X_GXSTAT (*(REGType32v *)0x4000600) -#define reg_G3X_LISTRAM_COUNT (*(REGType16v *)0x4000604) -#define reg_G3X_VTXRAM_COUNT (*(REGType16v *)0x4000606) -#define reg_G3X_DISP_1DOT_DEPTH (*(REGType16v *)0x4000610) -#define reg_G3X_POS_RESULT_X (*(const REGType32v *)0x4000620) -#define reg_G3X_POS_RESULT_Y (*(const REGType32v *)0x4000624) -#define reg_G3X_POS_RESULT_Z (*(const REGType32v *)0x4000628) -#define reg_G3X_POS_RESULT_W (*(const REGType32v *)0x400062c) -#define reg_G3X_VEC_RESULT_X (*(const REGType16v *)0x4000630) -#define reg_G3X_VEC_RESULT_Y (*(const REGType16v *)0x4000632) -#define reg_G3X_VEC_RESULT_Z (*(const REGType16v *)0x4000634) -#define reg_G3X_CLIPMTX_RESULT_0 (*(const REGType32v *)0x4000640) -#define reg_G3X_CLIPMTX_RESULT_1 (*(const REGType32v *)0x4000644) -#define reg_G3X_CLIPMTX_RESULT_2 (*(const REGType32v *)0x4000648) -#define reg_G3X_CLIPMTX_RESULT_3 (*(const REGType32v *)0x400064c) -#define reg_G3X_CLIPMTX_RESULT_4 (*(const REGType32v *)0x4000650) -#define reg_G3X_CLIPMTX_RESULT_5 (*(const REGType32v *)0x4000654) -#define reg_G3X_CLIPMTX_RESULT_6 (*(const REGType32v *)0x4000658) -#define reg_G3X_CLIPMTX_RESULT_7 (*(const REGType32v *)0x400065c) -#define reg_G3X_CLIPMTX_RESULT_8 (*(const REGType32v *)0x4000660) -#define reg_G3X_CLIPMTX_RESULT_9 (*(const REGType32v *)0x4000664) -#define reg_G3X_CLIPMTX_RESULT_10 (*(const REGType32v *)0x4000668) -#define reg_G3X_CLIPMTX_RESULT_11 (*(const REGType32v *)0x400066c) -#define reg_G3X_CLIPMTX_RESULT_12 (*(const REGType32v *)0x4000670) -#define reg_G3X_CLIPMTX_RESULT_13 (*(const REGType32v *)0x4000674) -#define reg_G3X_CLIPMTX_RESULT_14 (*(const REGType32v *)0x4000678) -#define reg_G3X_CLIPMTX_RESULT_15 (*(const REGType32v *)0x400067c) -#define reg_G3X_VECMTX_RESULT_0 (*(const REGType32v *)0x4000680) -#define reg_G3X_VECMTX_RESULT_1 (*(const REGType32v *)0x4000684) -#define reg_G3X_VECMTX_RESULT_2 (*(const REGType32v *)0x4000688) -#define reg_G3X_VECMTX_RESULT_3 (*(const REGType32v *)0x400068c) -#define reg_G3X_VECMTX_RESULT_4 (*(const REGType32v *)0x4000690) -#define reg_G3X_VECMTX_RESULT_5 (*(const REGType32v *)0x4000694) -#define reg_G3X_VECMTX_RESULT_6 (*(const REGType32v *)0x4000698) -#define reg_G3X_VECMTX_RESULT_7 (*(const REGType32v *)0x400069c) -#define reg_G3X_VECMTX_RESULT_8 (*(const REGType32v *)0x40006a0) - -#define reg_GXS_DB_DISPCNT (*(REGType32v *)0x4001000) - -#define reg_G2S_DB_BG0CNT (*(REGType16v *)0x4001008) -#define reg_G2S_DB_BG1CNT (*(REGType16v *)0x400100a) -#define reg_G2S_DB_BG2CNT (*(REGType16v *)0x400100c) -#define reg_G2S_DB_BG3CNT (*(REGType16v *)0x400100e) -#define reg_G2S_DB_BG0OFS (*(REGType32v *)0x4001010) -#define reg_G2S_DB_BG0HOFS (*(REGType16v *)0x4001010) -#define reg_G2S_DB_BG0VOFS (*(REGType16v *)0x4001012) -#define reg_G2S_DB_BG1OFS (*(REGType32v *)0x4001014) -#define reg_G2S_DB_BG1HOFS (*(REGType16v *)0x4001014) -#define reg_G2S_DB_BG1VOFS (*(REGType16v *)0x4001016) -#define reg_G2S_DB_BG2OFS (*(REGType32v *)0x4001018) -#define reg_G2S_DB_BG2HOFS (*(REGType16v *)0x4001018) -#define reg_G2S_DB_BG2VOFS (*(REGType16v *)0x400101a) -#define reg_G2S_DB_BG3OFS (*(REGType32v *)0x400101c) -#define reg_G2S_DB_BG3HOFS (*(REGType16v *)0x400101c) -#define reg_G2S_DB_BG3VOFS (*(REGType16v *)0x400101e) -#define reg_G2S_DB_BG2PA (*(REGType16v *)0x4001020) -#define reg_G2S_DB_BG2PB (*(REGType16v *)0x4001022) -#define reg_G2S_DB_BG2PC (*(REGType16v *)0x4001024) -#define reg_G2S_DB_BG2PD (*(REGType16v *)0x4001026) -#define reg_G2S_DB_BG2X (*(REGType32v *)0x4001028) -#define reg_G2S_DB_BG2Y (*(REGType32v *)0x400102c) -#define reg_G2S_DB_BG3PA (*(REGType16v *)0x4001030) -#define reg_G2S_DB_BG3PB (*(REGType16v *)0x4001032) -#define reg_G2S_DB_BG3PC (*(REGType16v *)0x4001034) -#define reg_G2S_DB_BG3PD (*(REGType16v *)0x4001036) -#define reg_G2S_DB_BG3X (*(REGType32v *)0x4001038) -#define reg_G2S_DB_BG3Y (*(REGType32v *)0x400103c) -#define reg_G2S_DB_WIN0H (*(REGType16v *)0x4001040) -#define reg_G2S_DB_WIN1H (*(REGType16v *)0x4001042) -#define reg_G2S_DB_WIN0V (*(REGType16v *)0x4001044) -#define reg_G2S_DB_WIN1V (*(REGType16v *)0x4001046) -#define reg_G2S_DB_WININ (*(REGType16v *)0x4001048) -#define reg_G2S_DB_WINOUT (*(REGType16v *)0x400104a) -#define reg_G2S_DB_MOSAIC (*(REGType16v *)0x400104c) -#define reg_G2S_DB_BLDCNT (*(REGType16v *)0x4001050) -#define reg_G2S_DB_BLDALPHA (*(REGType16v *)0x4001052) -#define reg_G2S_DB_BLDY (*(REGType16v *)0x4001054) - -#define reg_GXS_DB_MASTER_BRIGHT (*(REGType16v *)0x400106c) - -#define reg_MI_MCD1 (*(REGType32v *)0x4100010) -#define reg_CARD_DATA (*(REGType32v *)0x4100010) //? - -#define REG_OS_IE_VB_SHIFT 0 -#define REG_OS_IE_HB_SHIFT 1 -#define REG_OS_IE_VE_SHIFT 2 -#define REG_OS_IE_T0_SHIFT 3 -#define REG_OS_IE_T1_SHIFT 4 -#define REG_OS_IE_T2_SHIFT 5 -#define REG_OS_IE_T3_SHIFT 6 -#define REG_OS_IE_D0_SHIFT 8 -#define REG_OS_IE_D1_SHIFT 9 -#define REG_OS_IE_D2_SHIFT 10 -#define REG_OS_IE_D3_SHIFT 11 -#define REG_OS_IE_K_SHIFT 12 -#define REG_OS_IE_I_D_SHIFT 13 -#define REG_OS_IE_A7_SHIFT 16 -#define REG_OS_IE_IFE_SHIFT 17 -#define REG_OS_IE_IFN_SHIFT 18 -#define REG_OS_IE_MC_SHIFT 19 -#define REG_OS_IE_MI_SHIFT 20 -#define REG_OS_IE_PM_SHIFT 22 -#define REG_OS_IE_SPI_SHIFT 23 -#define REG_OS_IE_WL_SHIFT 24 - -#define REG_PAD_KEYINPUT_L_SHIFT 9 -#define REG_PAD_KEYINPUT_L_SIZE 1 -#define REG_PAD_KEYINPUT_L_MASK 0x0200 - -#define REG_PAD_KEYINPUT_R_SHIFT 8 -#define REG_PAD_KEYINPUT_R_SIZE 1 -#define REG_PAD_KEYINPUT_R_MASK 0x0100 - -#define REG_PAD_KEYINPUT_DOWN_SHIFT 7 -#define REG_PAD_KEYINPUT_DOWN_SIZE 1 -#define REG_PAD_KEYINPUT_DOWN_MASK 0x0080 - -#define REG_PAD_KEYINPUT_UP_SHIFT 6 -#define REG_PAD_KEYINPUT_UP_SIZE 1 -#define REG_PAD_KEYINPUT_UP_MASK 0x0040 - -#define REG_PAD_KEYINPUT_LEFT_SHIFT 5 -#define REG_PAD_KEYINPUT_LEFT_SIZE 1 -#define REG_PAD_KEYINPUT_LEFT_MASK 0x0020 - -#define REG_PAD_KEYINPUT_RIGHT_SHIFT 4 -#define REG_PAD_KEYINPUT_RIGHT_SIZE 1 -#define REG_PAD_KEYINPUT_RIGHT_MASK 0x0010 - -#define REG_PAD_KEYINPUT_START_SHIFT 3 -#define REG_PAD_KEYINPUT_START_SIZE 1 -#define REG_PAD_KEYINPUT_START_MASK 0x0008 - -#define REG_PAD_KEYINPUT_SEL_SHIFT 2 -#define REG_PAD_KEYINPUT_SEL_SIZE 1 -#define REG_PAD_KEYINPUT_SEL_MASK 0x0004 - -#define REG_PAD_KEYINPUT_B_SHIFT 1 -#define REG_PAD_KEYINPUT_B_SIZE 1 -#define REG_PAD_KEYINPUT_B_MASK 0x0002 - -#define REG_PAD_KEYINPUT_A_SHIFT 0 -#define REG_PAD_KEYINPUT_A_SIZE 1 -#define REG_PAD_KEYINPUT_A_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PAD_KEYINPUT_FIELD( l, r, down, up, left, right, start, sel, b, a ) \ - (u16)( \ - ((u32)(l) << REG_PAD_KEYINPUT_L_SHIFT) | \ - ((u32)(r) << REG_PAD_KEYINPUT_R_SHIFT) | \ - ((u32)(down) << REG_PAD_KEYINPUT_DOWN_SHIFT) | \ - ((u32)(up) << REG_PAD_KEYINPUT_UP_SHIFT) | \ - ((u32)(left) << REG_PAD_KEYINPUT_LEFT_SHIFT) | \ - ((u32)(right) << REG_PAD_KEYINPUT_RIGHT_SHIFT) | \ - ((u32)(start) << REG_PAD_KEYINPUT_START_SHIFT) | \ - ((u32)(sel) << REG_PAD_KEYINPUT_SEL_SHIFT) | \ - ((u32)(b) << REG_PAD_KEYINPUT_B_SHIFT) | \ - ((u32)(a) << REG_PAD_KEYINPUT_A_SHIFT)) -#endif - -#define REG_PAD_KEYCNT_LOGIC_SHIFT 15 -#define REG_PAD_KEYCNT_LOGIC_SIZE 1 -#define REG_PAD_KEYCNT_LOGIC_MASK 0x8000 - -#define REG_PAD_KEYCNT_INTR_SHIFT 14 -#define REG_PAD_KEYCNT_INTR_SIZE 1 -#define REG_PAD_KEYCNT_INTR_MASK 0x4000 - -#define REG_PAD_KEYCNT_L_SHIFT 9 -#define REG_PAD_KEYCNT_L_SIZE 1 -#define REG_PAD_KEYCNT_L_MASK 0x0200 - -#define REG_PAD_KEYCNT_R_SHIFT 8 -#define REG_PAD_KEYCNT_R_SIZE 1 -#define REG_PAD_KEYCNT_R_MASK 0x0100 - -#define REG_PAD_KEYCNT_DOWN_SHIFT 7 -#define REG_PAD_KEYCNT_DOWN_SIZE 1 -#define REG_PAD_KEYCNT_DOWN_MASK 0x0080 - -#define REG_PAD_KEYCNT_UP_SHIFT 6 -#define REG_PAD_KEYCNT_UP_SIZE 1 -#define REG_PAD_KEYCNT_UP_MASK 0x0040 - -#define REG_PAD_KEYCNT_LEFT_SHIFT 5 -#define REG_PAD_KEYCNT_LEFT_SIZE 1 -#define REG_PAD_KEYCNT_LEFT_MASK 0x0020 - -#define REG_PAD_KEYCNT_RIGHT_SHIFT 4 -#define REG_PAD_KEYCNT_RIGHT_SIZE 1 -#define REG_PAD_KEYCNT_RIGHT_MASK 0x0010 - -#define REG_PAD_KEYCNT_START_SHIFT 3 -#define REG_PAD_KEYCNT_START_SIZE 1 -#define REG_PAD_KEYCNT_START_MASK 0x0008 - -#define REG_PAD_KEYCNT_SEL_SHIFT 2 -#define REG_PAD_KEYCNT_SEL_SIZE 1 -#define REG_PAD_KEYCNT_SEL_MASK 0x0004 - -#define REG_PAD_KEYCNT_B_SHIFT 1 -#define REG_PAD_KEYCNT_B_SIZE 1 -#define REG_PAD_KEYCNT_B_MASK 0x0002 - -#define REG_PAD_KEYCNT_A_SHIFT 0 -#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)( \ - ((u32)(logic) << REG_PAD_KEYCNT_LOGIC_SHIFT) | \ - ((u32)(intr) << REG_PAD_KEYCNT_INTR_SHIFT) | \ - ((u32)(l) << REG_PAD_KEYCNT_L_SHIFT) | \ - ((u32)(r) << REG_PAD_KEYCNT_R_SHIFT) | \ - ((u32)(down) << REG_PAD_KEYCNT_DOWN_SHIFT) | \ - ((u32)(up) << REG_PAD_KEYCNT_UP_SHIFT) | \ - ((u32)(left) << REG_PAD_KEYCNT_LEFT_SHIFT) | \ - ((u32)(right) << REG_PAD_KEYCNT_RIGHT_SHIFT) | \ - ((u32)(start) << REG_PAD_KEYCNT_START_SHIFT) | \ - ((u32)(sel) << REG_PAD_KEYCNT_SEL_SHIFT) | \ - ((u32)(b) << REG_PAD_KEYCNT_B_SHIFT) | \ - ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT)) -#endif - -#define REG_GX_POWCNT_GE_SHIFT 3 -#define REG_GX_POWCNT_GE_SIZE 1 -#define REG_GX_POWCNT_GE_MASK 0x0008 - -#define REG_GX_POWCNT_RE_SHIFT 2 -#define REG_GX_POWCNT_RE_SIZE 1 -#define REG_GX_POWCNT_RE_MASK 0x0004 - -#define REG_GX_POWCNT_E2DG_SHIFT 1 -#define REG_GX_POWCNT_E2DG_SIZE 1 -#define REG_GX_POWCNT_E2DG_MASK 0x0002 - -#define REG_GX_POWCNT_LCD_SHIFT 0 -#define REG_GX_POWCNT_LCD_SIZE 1 -#define REG_GX_POWCNT_LCD_MASK 0x0001 - -#define REG_GX_POWCNT_LCDB_SHIFT 8 -#define REG_GX_POWCNT_LCDB_SIZE 1 -#define REG_GX_POWCNT_LCDB_MASK 0x0100 - -#define REG_GX_POWCNT_E2DGB_SHIFT 9 -#define REG_GX_POWCNT_E2DGB_SIZE 1 -#define REG_GX_POWCNT_E2DGB_MASK 0x0200 - -#define REG_GX_POWCNT_DSEL_SHIFT 15 -#define REG_GX_POWCNT_DSEL_SIZE 1 -#define REG_GX_POWCNT_DSEL_MASK 0x8000 - -// GX_DISPCNT -#define REG_GX_DISPCNT_O_SHIFT 31 -#define REG_GX_DISPCNT_O_SIZE 1 -#define REG_GX_DISPCNT_O_MASK 0x80000000 - -#define REG_GX_DISPCNT_BG_SHIFT 30 -#define REG_GX_DISPCNT_BG_SIZE 1 -#define REG_GX_DISPCNT_BG_MASK 0x40000000 - -#define REG_GX_DISPCNT_BGSCREENOFFSET_SHIFT 27 -#define REG_GX_DISPCNT_BGSCREENOFFSET_SIZE 3 -#define REG_GX_DISPCNT_BGSCREENOFFSET_MASK 0x38000000 - -#define REG_GX_DISPCNT_BGCHAROFFSET_SHIFT 24 -#define REG_GX_DISPCNT_BGCHAROFFSET_SIZE 3 -#define REG_GX_DISPCNT_BGCHAROFFSET_MASK 0x07000000 - -#define REG_GX_DISPCNT_OH_SHIFT 23 -#define REG_GX_DISPCNT_OH_SIZE 1 -#define REG_GX_DISPCNT_OH_MASK 0x00800000 - -#define REG_GX_DISPCNT_EXOBJ_SHIFT 20 -#define REG_GX_DISPCNT_EXOBJ_SIZE 3 -#define REG_GX_DISPCNT_EXOBJ_MASK 0x00700000 - -#define REG_GX_DISPCNT_VRAM_SHIFT 18 -#define REG_GX_DISPCNT_VRAM_SIZE 2 -#define REG_GX_DISPCNT_VRAM_MASK 0x000c0000 - -#define REG_GX_DISPCNT_MODE_SHIFT 16 -#define REG_GX_DISPCNT_MODE_SIZE 2 -#define REG_GX_DISPCNT_MODE_MASK 0x00030000 - -#define REG_GX_DISPCNT_OW_SHIFT 15 -#define REG_GX_DISPCNT_OW_SIZE 1 -#define REG_GX_DISPCNT_OW_MASK 0x00008000 - -#define REG_GX_DISPCNT_W1_SHIFT 14 -#define REG_GX_DISPCNT_W1_SIZE 1 -#define REG_GX_DISPCNT_W1_MASK 0x00004000 - -#define REG_GX_DISPCNT_W0_SHIFT 13 -#define REG_GX_DISPCNT_W0_SIZE 1 -#define REG_GX_DISPCNT_W0_MASK 0x00002000 - -#define REG_GX_DISPCNT_DISPLAY_SHIFT 8 -#define REG_GX_DISPCNT_DISPLAY_SIZE 5 -#define REG_GX_DISPCNT_DISPLAY_MASK 0x00001f00 - -#define REG_GX_DISPCNT_BLANK_SHIFT 7 -#define REG_GX_DISPCNT_BLANK_SIZE 1 -#define REG_GX_DISPCNT_BLANK_MASK 0x00000080 - -#define REG_GX_DISPCNT_OBJMAP_SHIFT 4 -#define REG_GX_DISPCNT_OBJMAP_SIZE 3 -#define REG_GX_DISPCNT_OBJMAP_MASK 0x00000070 - -#define REG_GX_DISPCNT_BG02D3D_SHIFT 3 -#define REG_GX_DISPCNT_BG02D3D_SIZE 1 -#define REG_GX_DISPCNT_BG02D3D_MASK 0x00000008 - -#define REG_GX_DISPCNT_BGMODE_SHIFT 0 -#define REG_GX_DISPCNT_BGMODE_SIZE 3 -#define REG_GX_DISPCNT_BGMODE_MASK 0x00000007 - -#define REG_GX_DISPCNT_OBJMAP_CH_SHIFT 4 -#define REG_GX_DISPCNT_OBJMAP_CH_SIZE 1 -#define REG_GX_DISPCNT_OBJMAP_CH_MASK 0x00000010 - -#define REG_GX_DISPCNT_OBJMAP_BM_SHIFT 5 -#define REG_GX_DISPCNT_OBJMAP_BM_SIZE 2 -#define REG_GX_DISPCNT_OBJMAP_BM_MASK 0x00000060 - -#define REG_GX_DISPCNT_EXOBJ_CH_SHIFT 20 -#define REG_GX_DISPCNT_EXOBJ_CH_SIZE 2 -#define REG_GX_DISPCNT_EXOBJ_CH_MASK 0x00300000 - -#define REG_GX_DISPCNT_EXOBJ_BM_SHIFT 22 -#define REG_GX_DISPCNT_EXOBJ_BM_SIZE 1 -#define REG_GX_DISPCNT_EXOBJ_BM_MASK 0x00400000 - -// GXS_DB_DISPCNT -#define REG_GXS_DB_DISPCNT_O_SHIFT 31 -#define REG_GXS_DB_DISPCNT_O_SIZE 1 -#define REG_GXS_DB_DISPCNT_O_MASK 0x80000000 - -#define REG_GXS_DB_DISPCNT_BG_SHIFT 30 -#define REG_GXS_DB_DISPCNT_BG_SIZE 1 -#define REG_GXS_DB_DISPCNT_BG_MASK 0x40000000 - -#define REG_GXS_DB_DISPCNT_OH_SHIFT 23 -#define REG_GXS_DB_DISPCNT_OH_SIZE 1 -#define REG_GXS_DB_DISPCNT_OH_MASK 0x00800000 - -#define REG_GXS_DB_DISPCNT_EXOBJ_SHIFT 20 -#define REG_GXS_DB_DISPCNT_EXOBJ_SIZE 2 -#define REG_GXS_DB_DISPCNT_EXOBJ_MASK 0x00300000 - -#define REG_GXS_DB_DISPCNT_MODE_SHIFT 16 -#define REG_GXS_DB_DISPCNT_MODE_SIZE 1 -#define REG_GXS_DB_DISPCNT_MODE_MASK 0x00010000 - -#define REG_GXS_DB_DISPCNT_OW_SHIFT 15 -#define REG_GXS_DB_DISPCNT_OW_SIZE 1 -#define REG_GXS_DB_DISPCNT_OW_MASK 0x00008000 - -#define REG_GXS_DB_DISPCNT_W1_SHIFT 14 -#define REG_GXS_DB_DISPCNT_W1_SIZE 1 -#define REG_GXS_DB_DISPCNT_W1_MASK 0x00004000 - -#define REG_GXS_DB_DISPCNT_W0_SHIFT 13 -#define REG_GXS_DB_DISPCNT_W0_SIZE 1 -#define REG_GXS_DB_DISPCNT_W0_MASK 0x00002000 - -#define REG_GXS_DB_DISPCNT_DISPLAY_SHIFT 8 -#define REG_GXS_DB_DISPCNT_DISPLAY_SIZE 5 -#define REG_GXS_DB_DISPCNT_DISPLAY_MASK 0x00001f00 - -#define REG_GXS_DB_DISPCNT_BLANK_SHIFT 7 -#define REG_GXS_DB_DISPCNT_BLANK_SIZE 1 -#define REG_GXS_DB_DISPCNT_BLANK_MASK 0x00000080 - -#define REG_GXS_DB_DISPCNT_OBJMAP_SHIFT 4 -#define REG_GXS_DB_DISPCNT_OBJMAP_SIZE 3 -#define REG_GXS_DB_DISPCNT_OBJMAP_MASK 0x00000070 - -#define REG_GXS_DB_DISPCNT_BGMODE_SHIFT 0 -#define REG_GXS_DB_DISPCNT_BGMODE_SIZE 3 -#define REG_GXS_DB_DISPCNT_BGMODE_MASK 0x00000007 - -#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SHIFT 4 -#define REG_GXS_DB_DISPCNT_OBJMAP_CH_SIZE 1 -#define REG_GXS_DB_DISPCNT_OBJMAP_CH_MASK 0x00000010 - -#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SHIFT 5 -#define REG_GXS_DB_DISPCNT_OBJMAP_BM_SIZE 2 -#define REG_GXS_DB_DISPCNT_OBJMAP_BM_MASK 0x00000060 - -#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SHIFT 20 -#define REG_GXS_DB_DISPCNT_EXOBJ_CH_SIZE 2 -#define REG_GXS_DB_DISPCNT_EXOBJ_CH_MASK 0x00300000 - -// MASTER BRIGHT -#define REG_GX_MASTER_BRIGHT_E_MOD_SHIFT 14 -#define REG_GX_MASTER_BRIGHT_E_MOD_SIZE 2 -#define REG_GX_MASTER_BRIGHT_E_MOD_MASK 0xc000 - -#define REG_GX_MASTER_BRIGHT_E_VALUE_SHIFT 0 -#define REG_GX_MASTER_BRIGHT_E_VALUE_SIZE 5 -#define REG_GX_MASTER_BRIGHT_E_VALUE_MASK 0x001f - -// DISPSTAT -#define REG_GX_DISPSTAT_VCOUNTER_SHIFT 7 -#define REG_GX_DISPSTAT_VCOUNTER_SIZE 9 -#define REG_GX_DISPSTAT_VCOUNTER_MASK 0xff80 - -#define REG_GX_DISPSTAT_VQI_SHIFT 5 -#define REG_GX_DISPSTAT_VQI_SIZE 1 -#define REG_GX_DISPSTAT_VQI_MASK 0x0020 - -#define REG_GX_DISPSTAT_HBI_SHIFT 4 -#define REG_GX_DISPSTAT_HBI_SIZE 1 -#define REG_GX_DISPSTAT_HBI_MASK 0x0010 - -#define REG_GX_DISPSTAT_VBI_SHIFT 3 -#define REG_GX_DISPSTAT_VBI_SIZE 1 -#define REG_GX_DISPSTAT_VBI_MASK 0x0008 - -#define REG_GX_DISPSTAT_LYC_SHIFT 2 -#define REG_GX_DISPSTAT_LYC_SIZE 1 -#define REG_GX_DISPSTAT_LYC_MASK 0x0004 - -#define REG_GX_DISPSTAT_HBLK_SHIFT 1 -#define REG_GX_DISPSTAT_HBLK_SIZE 1 -#define REG_GX_DISPSTAT_HBLK_MASK 0x0002 - -#define REG_GX_DISPSTAT_VBLK_SHIFT 0 -#define REG_GX_DISPSTAT_VBLK_SIZE 1 -#define REG_GX_DISPSTAT_VBLK_MASK 0x0001 - -// G2_BG0CNT -#define REG_G2_BG0CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG0CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG0CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG0CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2_BG0CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2_BG0CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2_BG0CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG0CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG0CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG0CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG0CNT_COLORMODE_SIZE 1 -#define REG_G2_BG0CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG0CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG0CNT_MOSAIC_SIZE 1 -#define REG_G2_BG0CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG0CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG0CNT_CHARBASE_SIZE 4 -#define REG_G2_BG0CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG0CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG0CNT_PRIORITY_SIZE 2 -#define REG_G2_BG0CNT_PRIORITY_MASK 0x0003 - -// G2_BG1CNT -#define REG_G2_BG1CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG1CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG1CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG1CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2_BG1CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2_BG1CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2_BG1CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG1CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG1CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG1CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG1CNT_COLORMODE_SIZE 1 -#define REG_G2_BG1CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG1CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG1CNT_MOSAIC_SIZE 1 -#define REG_G2_BG1CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG1CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG1CNT_CHARBASE_SIZE 4 -#define REG_G2_BG1CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG1CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG1CNT_PRIORITY_SIZE 2 -#define REG_G2_BG1CNT_PRIORITY_MASK 0x0003 - -// G2_BG2CNT -#define REG_G2_BG2CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG2CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG2CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG2CNT_AREAOVER_SHIFT 13 -#define REG_G2_BG2CNT_AREAOVER_SIZE 1 -#define REG_G2_BG2CNT_AREAOVER_MASK 0x2000 - -#define REG_G2_BG2CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG2CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG2CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG2CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG2CNT_COLORMODE_SIZE 1 -#define REG_G2_BG2CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG2CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG2CNT_MOSAIC_SIZE 1 -#define REG_G2_BG2CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG2CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG2CNT_CHARBASE_SIZE 4 -#define REG_G2_BG2CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG2CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG2CNT_PRIORITY_SIZE 2 -#define REG_G2_BG2CNT_PRIORITY_MASK 0x0003 - -// G2_BG3CNT -#define REG_G2_BG3CNT_SCREENSIZE_SHIFT 14 -#define REG_G2_BG3CNT_SCREENSIZE_SIZE 2 -#define REG_G2_BG3CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2_BG3CNT_AREAOVER_SHIFT 13 -#define REG_G2_BG3CNT_AREAOVER_SIZE 1 -#define REG_G2_BG3CNT_AREAOVER_MASK 0x2000 - -#define REG_G2_BG3CNT_SCREENBASE_SHIFT 8 -#define REG_G2_BG3CNT_SCREENBASE_SIZE 5 -#define REG_G2_BG3CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2_BG3CNT_COLORMODE_SHIFT 7 -#define REG_G2_BG3CNT_COLORMODE_SIZE 1 -#define REG_G2_BG3CNT_COLORMODE_MASK 0x0080 - -#define REG_G2_BG3CNT_MOSAIC_SHIFT 6 -#define REG_G2_BG3CNT_MOSAIC_SIZE 1 -#define REG_G2_BG3CNT_MOSAIC_MASK 0x0040 - -#define REG_G2_BG3CNT_CHARBASE_SHIFT 2 -#define REG_G2_BG3CNT_CHARBASE_SIZE 4 -#define REG_G2_BG3CNT_CHARBASE_MASK 0x003c - -#define REG_G2_BG3CNT_PRIORITY_SHIFT 0 -#define REG_G2_BG3CNT_PRIORITY_SIZE 2 -#define REG_G2_BG3CNT_PRIORITY_MASK 0x0003 - -// G2S_DB_BG0CNT -#define REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG0CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG0CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2S_DB_BG0CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG0CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG0CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG0CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG0CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG0CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG0CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG0CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG0CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG0CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG0CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG0CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG0CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG0CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG0CNT_PRIORITY_MASK 0x0003 - -// G2S_DB_BG1CNT -#define REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG1CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG1CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT 13 -#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_SIZE 1 -#define REG_G2S_DB_BG1CNT_BGPLTTSLOT_MASK 0x2000 - -#define REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG1CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG1CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG1CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG1CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG1CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG1CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG1CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG1CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG1CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG1CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG1CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG1CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG1CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG1CNT_PRIORITY_MASK 0x0003 - -// G2S_DB_BG2CNT -#define REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG2CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG2CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG2CNT_AREAOVER_SHIFT 13 -#define REG_G2S_DB_BG2CNT_AREAOVER_SIZE 1 -#define REG_G2S_DB_BG2CNT_AREAOVER_MASK 0x2000 - -#define REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG2CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG2CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG2CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG2CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG2CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG2CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG2CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG2CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG2CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG2CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG2CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG2CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG2CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG2CNT_PRIORITY_MASK 0x0003 - -// G2S_DB_BG3CNT -#define REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT 14 -#define REG_G2S_DB_BG3CNT_SCREENSIZE_SIZE 2 -#define REG_G2S_DB_BG3CNT_SCREENSIZE_MASK 0xc000 - -#define REG_G2S_DB_BG3CNT_AREAOVER_SHIFT 13 -#define REG_G2S_DB_BG3CNT_AREAOVER_SIZE 1 -#define REG_G2S_DB_BG3CNT_AREAOVER_MASK 0x2000 - -#define REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT 8 -#define REG_G2S_DB_BG3CNT_SCREENBASE_SIZE 5 -#define REG_G2S_DB_BG3CNT_SCREENBASE_MASK 0x1f00 - -#define REG_G2S_DB_BG3CNT_COLORMODE_SHIFT 7 -#define REG_G2S_DB_BG3CNT_COLORMODE_SIZE 1 -#define REG_G2S_DB_BG3CNT_COLORMODE_MASK 0x0080 - -#define REG_G2S_DB_BG3CNT_MOSAIC_SHIFT 6 -#define REG_G2S_DB_BG3CNT_MOSAIC_SIZE 1 -#define REG_G2S_DB_BG3CNT_MOSAIC_MASK 0x0040 - -#define REG_G2S_DB_BG3CNT_CHARBASE_SHIFT 2 -#define REG_G2S_DB_BG3CNT_CHARBASE_SIZE 4 -#define REG_G2S_DB_BG3CNT_CHARBASE_MASK 0x003c - -#define REG_G2S_DB_BG3CNT_PRIORITY_SHIFT 0 -#define REG_G2S_DB_BG3CNT_PRIORITY_SIZE 2 -#define REG_G2S_DB_BG3CNT_PRIORITY_MASK 0x0003 - -// G2_BG0OFS -#define REG_G2_BG0OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG0OFS_VOFFSET_SIZE 9 -#define REG_G2_BG0OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG0OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG0OFS_HOFFSET_SIZE 9 -#define REG_G2_BG0OFS_HOFFSET_MASK 0x000001ff - -// G2_BG1OFS -#define REG_G2_BG1OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG1OFS_VOFFSET_SIZE 9 -#define REG_G2_BG1OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG1OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG1OFS_HOFFSET_SIZE 9 -#define REG_G2_BG1OFS_HOFFSET_MASK 0x000001ff - -// G2_BG2OFS -#define REG_G2_BG2OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG2OFS_VOFFSET_SIZE 9 -#define REG_G2_BG2OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG2OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG2OFS_HOFFSET_SIZE 9 -#define REG_G2_BG2OFS_HOFFSET_MASK 0x000001ff - -// G2_BG3OFS -#define REG_G2_BG3OFS_VOFFSET_SHIFT 16 -#define REG_G2_BG3OFS_VOFFSET_SIZE 9 -#define REG_G2_BG3OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2_BG3OFS_HOFFSET_SHIFT 0 -#define REG_G2_BG3OFS_HOFFSET_SIZE 9 -#define REG_G2_BG3OFS_HOFFSET_MASK 0x000001ff - -// G2S_DB_BG0OFS -#define REG_G2S_DB_BG0OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG0OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG0OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG0OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG0OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG0OFS_HOFFSET_MASK 0x000001ff - -// G2S_DB_BG1OFS -#define REG_G2S_DB_BG1OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG1OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG1OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG1OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG1OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG1OFS_HOFFSET_MASK 0x000001ff - -// G2S_DB_BG2OFS -#define REG_G2S_DB_BG2OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG2OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG2OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG2OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG2OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG2OFS_HOFFSET_MASK 0x000001ff - -// G2S_DB_BG3OFS -#define REG_G2S_DB_BG3OFS_VOFFSET_SHIFT 16 -#define REG_G2S_DB_BG3OFS_VOFFSET_SIZE 9 -#define REG_G2S_DB_BG3OFS_VOFFSET_MASK 0x01ff0000 - -#define REG_G2S_DB_BG3OFS_HOFFSET_SHIFT 0 -#define REG_G2S_DB_BG3OFS_HOFFSET_SIZE 9 -#define REG_G2S_DB_BG3OFS_HOFFSET_MASK 0x000001ff - -// Timer control - -#define REG_OS_TM0CNT_L_TIMER0CNT_SHIFT 0 -#define REG_OS_TM0CNT_L_TIMER0CNT_SIZE 16 -#define REG_OS_TM0CNT_L_TIMER0CNT_MASK 0xffff - -#define REG_OS_TM0CNT_H_E_SHIFT 7 -#define REG_OS_TM0CNT_H_E_SIZE 1 -#define REG_OS_TM0CNT_H_E_MASK 0x0080 - -#define REG_OS_TM0CNT_H_I_SHIFT 6 -#define REG_OS_TM0CNT_H_I_SIZE 1 -#define REG_OS_TM0CNT_H_I_MASK 0x0040 - -#define REG_OS_TM0CNT_H_PS_SHIFT 0 -#define REG_OS_TM0CNT_H_PS_SIZE 2 -#define REG_OS_TM0CNT_H_PS_MASK 0x0003 - -#define REG_OS_TM1CNT_L_TIMER0CNT_SHIFT 0 -#define REG_OS_TM1CNT_L_TIMER0CNT_SIZE 16 -#define REG_OS_TM1CNT_L_TIMER0CNT_MASK 0xffff - -#define REG_OS_TM1CNT_H_E_SHIFT 7 -#define REG_OS_TM1CNT_H_E_SIZE 1 -#define REG_OS_TM1CNT_H_E_MASK 0x0080 - -#define REG_OS_TM1CNT_H_I_SHIFT 6 -#define REG_OS_TM1CNT_H_I_SIZE 1 -#define REG_OS_TM1CNT_H_I_MASK 0x0040 - -#define REG_OS_TM1CNT_H_PS_SHIFT 0 -#define REG_OS_TM1CNT_H_PS_SIZE 2 -#define REG_OS_TM1CNT_H_PS_MASK 0x0003 - -#define REG_OS_TM2CNT_L_TIMER0CNT_SHIFT 0 -#define REG_OS_TM2CNT_L_TIMER0CNT_SIZE 16 -#define REG_OS_TM2CNT_L_TIMER0CNT_MASK 0xffff - -#define REG_OS_TM2CNT_H_E_SHIFT 7 -#define REG_OS_TM2CNT_H_E_SIZE 1 -#define REG_OS_TM2CNT_H_E_MASK 0x0080 - -#define REG_OS_TM2CNT_H_I_SHIFT 6 -#define REG_OS_TM2CNT_H_I_SIZE 1 -#define REG_OS_TM2CNT_H_I_MASK 0x0040 - -#define REG_OS_TM2CNT_H_PS_SHIFT 0 -#define REG_OS_TM2CNT_H_PS_SIZE 2 -#define REG_OS_TM2CNT_H_PS_MASK 0x0003 - -#define REG_OS_TM3CNT_L_TIMER0CNT_SHIFT 0 -#define REG_OS_TM3CNT_L_TIMER0CNT_SIZE 16 -#define REG_OS_TM3CNT_L_TIMER0CNT_MASK 0xffff - -#define REG_OS_TM3CNT_H_E_SHIFT 7 -#define REG_OS_TM3CNT_H_E_SIZE 1 -#define REG_OS_TM3CNT_H_E_MASK 0x0080 - -#define REG_OS_TM3CNT_H_I_SHIFT 6 -#define REG_OS_TM3CNT_H_I_SIZE 1 -#define REG_OS_TM3CNT_H_I_MASK 0x0040 - -#define REG_OS_TM3CNT_H_PS_SHIFT 0 -#define REG_OS_TM3CNT_H_PS_SIZE 2 -#define REG_OS_TM3CNT_H_PS_MASK 0x0003 - -#define REG_G3X_DISP3DCNT_PRI_SHIFT 14 -#define REG_G3X_DISP3DCNT_PRI_SIZE 1 -#define REG_G3X_DISP3DCNT_PRI_MASK 0x4000 - -#define REG_G3X_DISP3DCNT_GO_SHIFT 13 -#define REG_G3X_DISP3DCNT_GO_SIZE 1 -#define REG_G3X_DISP3DCNT_GO_MASK 0x2000 - -#define REG_G3X_DISP3DCNT_RO_SHIFT 12 -#define REG_G3X_DISP3DCNT_RO_SIZE 1 -#define REG_G3X_DISP3DCNT_RO_MASK 0x1000 - -#define REG_G3X_DISP3DCNT_FOG_SHIFT_SHIFT 8 -#define REG_G3X_DISP3DCNT_FOG_SHIFT_SIZE 4 -#define REG_G3X_DISP3DCNT_FOG_SHIFT_MASK 0x0f00 - -#define REG_G3X_DISP3DCNT_FME_SHIFT 7 -#define REG_G3X_DISP3DCNT_FME_SIZE 1 -#define REG_G3X_DISP3DCNT_FME_MASK 0x0080 - -#define REG_G3X_DISP3DCNT_FMOD_SHIFT 6 -#define REG_G3X_DISP3DCNT_FMOD_SIZE 1 -#define REG_G3X_DISP3DCNT_FMOD_MASK 0x0040 - -#define REG_G3X_DISP3DCNT_EME_SHIFT 5 -#define REG_G3X_DISP3DCNT_EME_SIZE 1 -#define REG_G3X_DISP3DCNT_EME_MASK 0x0020 - -#define REG_G3X_DISP3DCNT_AAE_SHIFT 4 -#define REG_G3X_DISP3DCNT_AAE_SIZE 1 -#define REG_G3X_DISP3DCNT_AAE_MASK 0x0010 - -#define REG_G3X_DISP3DCNT_ABE_SHIFT 3 -#define REG_G3X_DISP3DCNT_ABE_SIZE 1 -#define REG_G3X_DISP3DCNT_ABE_MASK 0x0008 - -#define REG_G3X_DISP3DCNT_ATE_SHIFT 2 -#define REG_G3X_DISP3DCNT_ATE_SIZE 1 -#define REG_G3X_DISP3DCNT_ATE_MASK 0x0004 - -#define REG_G3X_DISP3DCNT_THS_SHIFT 1 -#define REG_G3X_DISP3DCNT_THS_SIZE 1 -#define REG_G3X_DISP3DCNT_THS_MASK 0x0002 - -#define REG_G3X_DISP3DCNT_TME_SHIFT 0 -#define REG_G3X_DISP3DCNT_TME_SIZE 1 -#define REG_G3X_DISP3DCNT_TME_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_G3X_DISP3DCNT_FIELD( pri, go, ro, fog_shift, fme, fmod, eme, aae, abe, ate, ths, tme ) \ - (u16)( \ - ((u32)(pri) << REG_G3X_DISP3DCNT_PRI_SHIFT) | \ - ((u32)(go) << REG_G3X_DISP3DCNT_GO_SHIFT) | \ - ((u32)(ro) << REG_G3X_DISP3DCNT_RO_SHIFT) | \ - ((u32)(fog_shift) << REG_G3X_DISP3DCNT_FOG_SHIFT_SHIFT) | \ - ((u32)(fme) << REG_G3X_DISP3DCNT_FME_SHIFT) | \ - ((u32)(fmod) << REG_G3X_DISP3DCNT_FMOD_SHIFT) | \ - ((u32)(eme) << REG_G3X_DISP3DCNT_EME_SHIFT) | \ - ((u32)(aae) << REG_G3X_DISP3DCNT_AAE_SHIFT) | \ - ((u32)(abe) << REG_G3X_DISP3DCNT_ABE_SHIFT) | \ - ((u32)(ate) << REG_G3X_DISP3DCNT_ATE_SHIFT) | \ - ((u32)(ths) << REG_G3X_DISP3DCNT_THS_SHIFT) | \ - ((u32)(tme) << REG_G3X_DISP3DCNT_TME_SHIFT)) -#endif - -#endif //NITRO_HW_IO_REG_SHARED_H_ diff --git a/lib/include/nitro/hw/consts.h b/lib/include/nitro/hw/consts.h deleted file mode 100644 index fbd4ac31..00000000 --- a/lib/include/nitro/hw/consts.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef NITRO_HW_CONSTS_H_ -#define NITRO_HW_CONSTS_H_ - -#include -#include -#include -#include - -#define HW_C5_PERMIT_MASK 0xf - -#define HW_C5_PERMIT_RO 5 -#define HW_C5_PERMIT_RW 1 - -#define HW_C5_PR3_SFT 12 - -#define HW_C6_PR_4KB 0x16 -#define HW_C6_PR_8KB 0x18 -#define HW_C6_PR_16KB 0x1a -#define HW_C6_PR_32KB 0x1c -#define HW_C6_PR_64KB 0x1e -#define HW_C6_PR_128KB 0x20 -#define HW_C6_PR_256KB 0x22 -#define HW_C6_PR_512KB 0x24 -#define HW_C6_PR_1MB 0x26 -#define HW_C6_PR_2MB 0x28 -#define HW_C6_PR_4MB 0x2a -#define HW_C6_PR_8MB 0x2c -#define HW_C6_PR_16MB 0x2e -#define HW_C6_PR_32MB 0x30 -#define HW_C6_PR_64MB 0x32 -#define HW_C6_PR_128MB 0x34 -#define HW_C6_PR_256MB 0x36 -#define HW_C6_PR_512MB 0x38 -#define HW_C6_PR_1GB 0x3a -#define HW_C6_PR_2GB 0x3c -#define HW_C6_PR_4GB 0x3e - -#define HW_C6_PR_ENABLE 1 - -#define HW_C9_TCMR_16KB 0x0a -#define HW_C9_TCMR_32MB 0x20 - -#define HW_ICACHE_SIZE 0x2000 -#define HW_DCACHE_SIZE 0x1000 -#define HW_CACHE_LINE_SIZE 32 - -#define OSi_CONSOLE_NOT_DETECT 0xffffffff - -#define OS_CONSOLE_NITRO 0x80000000 -#define OS_CONSOLE_DEV_CARD 0x02000000 -#define OS_CONSOLE_SIZE_MASK 0x00000003 -#define OS_CONSOLE_SIZE_4MB 0x00000001 - -#define OSi_TCM_REGION_BASE_MASK 0xfffff000 - -#define OS_IE_V_BLANK (1UL << 0) -#define OS_IE_H_BLANK (1UL << 1) - -#define HW_CPU_CLOCK_ARM9 67027964 - -#define REG_PXI_SUBP_FIFO_CNT_E_MASK 0x8000 -#define REG_PXI_SUBP_FIFO_CNT_ERR_MASK 0x4000 -#define REG_PXI_SUBP_FIFO_CNT_RECV_RI_MASK 0x0400 -#define REG_PXI_SUBP_FIFO_CNT_RECV_EMP_MASK 0x0100 -#define REG_PXI_SUBP_FIFO_CNT_SEND_CL_MASK 0x0008 -#define REG_PXI_SUBP_FIFO_CNT_SEND_FULL_MASK 0x0002 - -#endif //NITRO_HW_CONSTS_H_ diff --git a/lib/include/nitro/hw/consts_shared.h b/lib/include/nitro/hw/consts_shared.h deleted file mode 100644 index d93e33ad..00000000 --- a/lib/include/nitro/hw/consts_shared.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include consts.h from the specific proc's lib - */ - -#ifndef NITRO_HW_CONSTS_SHARED_H_ -#define NITRO_HW_CONSTS_SHARED_H_ - -#include -#include - -//Shared Consts - -#define HW_PSR_CPU_MODE_MASK 0x1f // CPU mode - -#define HW_PSR_DISABLE_FIQ 0x40 // Disable FIQ -#define HW_PSR_DISABLE_IRQ 0x80 // Disable IRQ -#define HW_PSR_DISABLE_IRQ_FIQ 0xc0 // Disable FIQ and IRQ - -#define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) -#define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1)) -#define OSi_InRange(targ, a, b) ((u32)(a) <= (u32)(targ) && (u32)(targ) < (u32)(b)) -#define OSi_OFFSET(n, a) (((u32) (n)) & ((a) - 1)) - -#define OS_THREAD_SPECIFIC_MAX 0x03 - -#define OS_THREAD_LAUNCHER_PRIORITY 0x10 -#define OS_THREAD_PRIORITY_MIN 0x00 -#define OS_THREAD_PRIORITY_MAX 0x1F - -#define HW_SYSTEM_CLOCK 33514000 - -#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF) - -#endif //NITRO_HW_CONSTS_SHARED_H_ diff --git a/lib/include/nitro/hw/io_reg.h b/lib/include/nitro/hw/io_reg.h deleted file mode 100644 index 8349c772..00000000 --- a/lib/include/nitro/hw/io_reg.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef NITRO_IO_REG_H_ -#define NITRO_IO_REG_H_ - -#include - -#ifdef SDK_ARM9 -#include -#else -#include -#endif - -#define REG_OS_IME_IME_SHIFT 0 -#define REG_OS_IME_IME_SIZE 1 -#define REG_OS_IME_IME_MASK 0x0001 - -#define REG_INTF_OFFSET (0x180) -#define REG_INTF_ADDR (HW_REG_BASE + REG_INTF_OFFSET) -#define reg_PXI_INTF (*(REGType16v *)REG_INTF_ADDR) - -#define REG_FIFO_CNT_OFFSET (0x184) -#define REG_FIFO_CNT_ADDR (HW_REG_BASE + REG_FIFO_CNT_OFFSET) -#define reg_PXI_FIFO_CNT (*(REGType16v *)REG_FIFO_CNT_ADDR) - -#define REG_PXI_INTF_I_SHIFT 14 -#define REG_PXI_INTF_I_SIZE 1 -#define REG_PXI_INTF_I_MASK 0x4000 - -#define REG_PXI_INTF_IREQ_SHIFT 13 -#define REG_PXI_INTF_IREQ_SIZE 1 -#define REG_PXI_INTF_IREQ_MASK 0x2000 - -#define REG_PXI_INTF_A7STATUS_SHIFT 8 -#define REG_PXI_INTF_A7STATUS_SIZE 4 -#define REG_PXI_INTF_A7STATUS_MASK 0x0f00 - -#define REG_PXI_INTF_A9STATUS_SHIFT 0 -#define REG_PXI_INTF_A9STATUS_SIZE 4 -#define REG_PXI_INTF_A9STATUS_MASK 0x000f - -#ifndef SDK_ASM -#define REG_PXI_INTF_FIELD( i, ireq, a7status, a9status ) \ - (u16)( \ - ((u32)(i) << REG_PXI_INTF_I_SHIFT) | \ - ((u32)(ireq) << REG_PXI_INTF_IREQ_SHIFT) | \ - ((u32)(a7status) << REG_PXI_INTF_A7STATUS_SHIFT) | \ - ((u32)(a9status) << REG_PXI_INTF_A9STATUS_SHIFT)) -#endif - -#define REG_PXI_FIFO_CNT_E_SHIFT 15 -#define REG_PXI_FIFO_CNT_E_SIZE 1 -#define REG_PXI_FIFO_CNT_E_MASK 0x8000 - -#define REG_PXI_FIFO_CNT_ERR_SHIFT 14 -#define REG_PXI_FIFO_CNT_ERR_SIZE 1 -#define REG_PXI_FIFO_CNT_ERR_MASK 0x4000 - -#define REG_PXI_FIFO_CNT_RECV_RI_SHIFT 10 -#define REG_PXI_FIFO_CNT_RECV_RI_SIZE 1 -#define REG_PXI_FIFO_CNT_RECV_RI_MASK 0x0400 - -#define REG_PXI_FIFO_CNT_RECV_FULL_SHIFT 9 -#define REG_PXI_FIFO_CNT_RECV_FULL_SIZE 1 -#define REG_PXI_FIFO_CNT_RECV_FULL_MASK 0x0200 - -#define REG_PXI_FIFO_CNT_RECV_EMP_SHIFT 8 -#define REG_PXI_FIFO_CNT_RECV_EMP_SIZE 1 -#define REG_PXI_FIFO_CNT_RECV_EMP_MASK 0x0100 - -#define REG_PXI_FIFO_CNT_SEND_CL_SHIFT 3 -#define REG_PXI_FIFO_CNT_SEND_CL_SIZE 1 -#define REG_PXI_FIFO_CNT_SEND_CL_MASK 0x0008 - -#define REG_PXI_FIFO_CNT_SEND_TI_SHIFT 2 -#define REG_PXI_FIFO_CNT_SEND_TI_SIZE 1 -#define REG_PXI_FIFO_CNT_SEND_TI_MASK 0x0004 - -#define REG_PXI_FIFO_CNT_SEND_FULL_SHIFT 1 -#define REG_PXI_FIFO_CNT_SEND_FULL_SIZE 1 -#define REG_PXI_FIFO_CNT_SEND_FULL_MASK 0x0002 - -#define REG_PXI_FIFO_CNT_SEND_EMP_SHIFT 0 -#define REG_PXI_FIFO_CNT_SEND_EMP_SIZE 1 -#define REG_PXI_FIFO_CNT_SEND_EMP_MASK 0x0001 - -#ifndef SDK_ASM -#define REG_PXI_FIFO_CNT_FIELD( e, err, recv_ri, recv_full, recv_emp, send_cl, send_ti, send_full, send_emp ) \ - (u16)( \ - ((u32)(e) << REG_PXI_FIFO_CNT_E_SHIFT) | \ - ((u32)(err) << REG_PXI_FIFO_CNT_ERR_SHIFT) | \ - ((u32)(recv_ri) << REG_PXI_FIFO_CNT_RECV_RI_SHIFT) | \ - ((u32)(recv_full) << REG_PXI_FIFO_CNT_RECV_FULL_SHIFT) | \ - ((u32)(recv_emp) << REG_PXI_FIFO_CNT_RECV_EMP_SHIFT) | \ - ((u32)(send_cl) << REG_PXI_FIFO_CNT_SEND_CL_SHIFT) | \ - ((u32)(send_ti) << REG_PXI_FIFO_CNT_SEND_TI_SHIFT) | \ - ((u32)(send_full) << REG_PXI_FIFO_CNT_SEND_FULL_SHIFT) | \ - ((u32)(send_emp) << REG_PXI_FIFO_CNT_SEND_EMP_SHIFT)) -#endif - -#define REG_G3_SWAP_BUFFERS_DP_SHIFT 1 -#define REG_G3_SWAP_BUFFERS_DP_SIZE 1 -#define REG_G3_SWAP_BUFFERS_DP_MASK 0x00000002 - -#define REG_G3_SWAP_BUFFERS_XS_SHIFT 0 -#define REG_G3_SWAP_BUFFERS_XS_SIZE 1 -#define REG_G3_SWAP_BUFFERS_XS_MASK 0x00000001 -#define REG_G3_SWAP_BUFFERS_DP_SHIFT 1 -#define REG_G3_SWAP_BUFFERS_DP_SIZE 1 -#define REG_G3_SWAP_BUFFERS_DP_MASK 0x00000002 - -#define REG_G3_SWAP_BUFFERS_XS_SHIFT 0 -#define REG_G3_SWAP_BUFFERS_XS_SIZE 1 -#define REG_G3_SWAP_BUFFERS_XS_MASK 0x00000001 - -#ifndef SDK_ASM -#define REG_G3_SWAP_BUFFERS_FIELD( dp, xs ) \ - (u32)( \ - ((u32)(dp) << REG_G3_SWAP_BUFFERS_DP_SHIFT) | \ - ((u32)(xs) << REG_G3_SWAP_BUFFERS_XS_SHIFT)) -#endif - -#endif //NITRO_IO_REG_H_ diff --git a/lib/include/nitro/hw/mmap.h b/lib/include/nitro/hw/mmap.h deleted file mode 100644 index 8fe32548..00000000 --- a/lib/include/nitro/hw/mmap.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NITRO_HW_MMAP_H_ -#define NITRO_HW_MMAP_H_ - -#include -#include - -#ifdef SDK_ARM7 -#include -#else //ARM9 -#include -#endif - -#endif //NITRO_HW_MMAP_H_ diff --git a/lib/include/nitro/hw/mmap_shared.h b/lib/include/nitro/hw/mmap_shared.h deleted file mode 100644 index 693dd317..00000000 --- a/lib/include/nitro/hw/mmap_shared.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include mmap.h from the specific proc's lib - */ - -#ifndef NITRO_HW_MMAP_SHARED_H_ -#define NITRO_HW_MMAP_SHARED_H_ - -#define HW_MAIN_MEM 0x02000000 -#define HW_MAIN_MEM_SIZE 0x00400000 -#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000 -#define HW_MAIN_MEM_SHARED_SIZE 0x00001000 - -#define HW_WRAM 0x037F8000 - -#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM + 0x007ffc00) -#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40) -#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) -#define HW_CTRDG_LOCK_BUF (HW_MAIN_MEM + 0x007fffe8) -#define HW_INIT_LOCK_BUF (HW_MAIN_MEM + 0x007ffff0) -#define HW_MAIN_MEM_MAIN (HW_MAIN_MEM) -#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE) - -#define HW_SVC_STACK_SIZE 0x00000040 - -#define HW_BUTTON_XY_BUF (HW_MAIN_MEM + 0x007FFFA8) - -#define HW_PXI_SIGNAL_PARAM_ARM9 (HW_MAIN_MEM + 0x007fff80) -#define HW_PXI_SIGNAL_PARAM_ARM7 (HW_MAIN_MEM + 0x007fff84) -#define HW_PXI_HANDLE_CHECKER_ARM9 (HW_MAIN_MEM + 0x007fff88) -#define HW_PXI_HANDLE_CHECKER_ARM7 (HW_MAIN_MEM + 0x007fff8c) - -#endif //NITRO_HW_MMAP_SHARED_H_ diff --git a/lib/include/nitro/itcm_begin.h b/lib/include/nitro/itcm_begin.h deleted file mode 100644 index 582c8bcf..00000000 --- a/lib/include/nitro/itcm_begin.h +++ /dev/null @@ -1,4 +0,0 @@ -#include -#ifdef SDK_ARM9 -#pragma section ITCM begin -#endif diff --git a/lib/include/nitro/itcm_end.h b/lib/include/nitro/itcm_end.h deleted file mode 100644 index ad3474e0..00000000 --- a/lib/include/nitro/itcm_end.h +++ /dev/null @@ -1,4 +0,0 @@ -#include -#ifdef SDK_ARM9 -#pragma section ITCM end -#endif diff --git a/lib/include/nitro/math.h b/lib/include/nitro/math.h deleted file mode 100644 index 72ac0f43..00000000 --- a/lib/include/nitro/math.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_MATH_H_ -#define NITRO_MATH_H_ - -#include -#include - -#endif //NITRO_MATH_H_ diff --git a/lib/include/nitro/math/crc.h b/lib/include/nitro/math/crc.h deleted file mode 100644 index 60abf72c..00000000 --- a/lib/include/nitro/math/crc.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef NITRO_MATH_CRC_H_ -#define NITRO_MATH_CRC_H_ - -#define MATH_CRC8_STANDARD_POLY 0x07 -#define MATH_CRC8_STANDARD_INIT 0 - -#define MATH_CRC16_STANDARD_POLY 0xa001 -#define MATH_CRC16_STANDARD_INIT 0 -#define MATH_CRC16_CCITT_POLY 0x1021 -#define MATH_CRC16_CCITT_INIT 0xffff - -#define MATH_CRC32_STANDARD_POLY 0xedb88320 -#define MATH_CRC32_STANDARD_INIT 0xffffffff -#define MATH_CRC32_POSIX_POLY 0x04c11db7 -#define MATH_CRC32_POSIX_INIT 0 - -typedef u8 MATHCRC8Context; -typedef u16 MATHCRC16Context; -typedef u32 MATHCRC32Context; - -typedef struct MATHCRC8Table { - u8 table[256]; -} MATHCRC8Table; - -typedef struct MATHCRC16Table { - u16 table[256]; -} MATHCRC16Table; - -typedef struct MATHCRC32Table { - u32 table[256]; -} MATHCRC32Table; - -void MATHi_CRC8InitTable(MATHCRC8Table *table, u8 poly); -void MATHi_CRC8InitTableRev(MATHCRC8Table *table, u8 poly); - -static inline void MATHi_CRC8Init(MATHCRC8Context *context, u8 init) { - *context = init; -} - -void MATHi_CRC8Update(const MATHCRC8Table *table, MATHCRC8Context *context, const void *input, u32 length); -static inline void MATHi_CRC8UpdateRev(const MATHCRC8Table *table, MATHCRC8Context *context, const void *input, u32 length) { - MATHi_CRC8Update(table, context, input, length); -} - -static inline u8 MATHi_CRC8GetHash(MATHCRC8Context *context) { - return *context; -} - -static inline void MATH_CRC8InitTable(MATHCRC8Table *table) { - MATHi_CRC8InitTable(table, MATH_CRC8_STANDARD_POLY); -} - -static inline void MATH_CRC8Init(MATHCRC8Context *context) { - MATHi_CRC8Init(context, MATH_CRC8_STANDARD_INIT); -} - -static inline void MATH_CRC8Update(const MATHCRC8Table *table, MATHCRC8Context *context, const void *input, u32 length) { - MATHi_CRC8Update(table, context, input, length); -} - -static inline u8 MATH_CRC8GetHash(MATHCRC8Context *context) { - return MATHi_CRC8GetHash(context); -} - -void MATHi_CRC16InitTable(MATHCRC16Table *table, u16 poly); -void MATHi_CRC16InitTableRev(MATHCRC16Table *table, u16 poly); - -static inline void MATHi_CRC16Init(MATHCRC16Context *context, u16 init) { - *context = init; -} - -void MATHi_CRC16Update(const MATHCRC16Table *table, MATHCRC16Context *context, const void *input, u32 length); -void MATHi_CRC16UpdateRev(const MATHCRC16Table *table, MATHCRC16Context *context, const void *input, u32 length); - -static inline u16 MATHi_CRC16GetHash(MATHCRC16Context *context) { - return *context; -} - -static inline void MATH_CRC16InitTable(MATHCRC16Table *table) { - MATHi_CRC16InitTable(table, MATH_CRC16_CCITT_POLY); -} - -static inline void MATH_CRC16Init(MATHCRC16Context *context) { - MATHi_CRC16Init(context, MATH_CRC16_CCITT_INIT); -} - -static inline void MATH_CRC16Update(const MATHCRC16Table *table, MATHCRC16Context *context, const void *input, u32 length) { - MATHi_CRC16Update(table, context, input, length); -} - -static inline u16 MATH_CRC16GetHash(MATHCRC16Context *context) { - return MATHi_CRC16GetHash(context); -} - -u16 MATH_CalcCRC16CCITT(const MATHCRC16Table *table, const void *input, u32 length); - -#endif //NITRO_MATH_CRC_H_ diff --git a/lib/include/nitro/math/dgt.h b/lib/include/nitro/math/dgt.h deleted file mode 100644 index 54dfcbb1..00000000 --- a/lib/include/nitro/math/dgt.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NITRO_MATH_DGT_H_ -#define NITRO_MATH_DGT_H_ - -#include - -#define MATH_MD5_DIGEST_SIZE DGT_HASH1_DIGEST_SIZE -#define MATH_SHA1_DIGEST_SIZE DGT_HASH2_DIGEST_SIZE -#define MATH_MD5_BLOCK_SIZE DGT_HASH_BLOCK_SIZE -#define MATH_SHA1_BLOCK_SIZE DGT_HASH_BLOCK_SIZE - -void MATH_CalcMD5(void *digest, const void *data, u32 dataLength); -void MATH_CalcSHA1(void *digest, const void *data, u32 dataLength); - -#endif //NITRO_MATH_DGT_H_ diff --git a/lib/include/nitro/mb.h b/lib/include/nitro/mb.h deleted file mode 100644 index 1eff81b8..00000000 --- a/lib/include/nitro/mb.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef NITRO_MB_H_ -#define NITRO_MB_H_ - -#define MB_TYPE_ILLEGAL 0 -#define MB_TYPE_NORMAL 1 -#define MB_TYPE_MULTIBOOT 2 - -typedef struct { - u16 length; - u16 rssi; - u16 bssid[3]; - u16 ssidLength; - u8 ssid[32]; - u16 capaInfo; - struct { - u16 basic; - u16 support; - } rateSet; - u16 beaconPeriod; - u16 dtimPeriod; - u16 channel; - u16 cfpPeriod; - u16 cfpMaxDuration; -} -MBParentBssDesc; - -typedef struct { - u16 boot_type; - MBParentBssDesc parent_bss_desc; -} MBParam; - -static inline const MBParam *MB_GetMultiBootParam(void) -{ - return (const MBParam *)HW_WM_BOOT_BUF; -} - -static inline BOOL MB_IsMultiBootChild(void) -{ - return MB_GetMultiBootParam()->boot_type == MB_TYPE_MULTIBOOT; -} - -#endif //NITRO_MB_H_ diff --git a/lib/include/nitro/mi.h b/lib/include/nitro/mi.h deleted file mode 100644 index 31e16bcd..00000000 --- a/lib/include/nitro/mi.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NITRO_MI_H_ -#define NITRO_MI_H_ - -#include -#include -#include -#include -#include - -void MI_Init(void); - -#endif //NITRO_MI_H_ diff --git a/lib/include/nitro/mi/dma.h b/lib/include/nitro/mi/dma.h deleted file mode 100644 index 283a85ff..00000000 --- a/lib/include/nitro/mi/dma.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef NITRO_MI_DMA_H_ -#define NITRO_MI_DMA_H_ - -#include -#include -#include - -typedef void (*MIDmaCallback)(void *); - -#define MI_DMA_MAX_NUM 3 - -#define REG_ADDR_DMA0CNT 0x40000b8 -#define REG_ADDR_DMA0_CLR_DATA 0x40000e0 - -#define MI_CNT_CLEAR32(size) (0x85000000 | ((size)/4)) -#define MI_CNT_CLEAR32_IF(size) (0xc5000000 | ((size)/4)) -#define MI_CNT_COPY32(size) (0x84000000 | ((size)/4)) -#define MI_CNT_COPY32_IF(size) (0xc4000000 | ((size)/4)) -#define MI_CNT_COPY16(size) (0x80000000 | ((size)/2)) - -#define MI_DMA_SRC_FIX (2UL << 23) -#define MI_DMA_SRC_INC (0UL << 23) - -#define MI_DMA_16BIT_BUS (0UL << 26) -#define MI_DMA_32BIT_BUS (1UL << 26) - -#define MIi_DMA_TIMING_ANY (u32)(~0) -#define MI_DMA_TIMING_H_BLANK (2UL << 27) - -typedef union -{ - u32 b32; - u16 b16; -} MIiDmaClearSrc; - -void MI_DmaFill32(u32 dmaNo, void *dest, u32 data, u32 size); -void MI_DmaCopy32(u32 dmaNo, const void *src, void *dest, u32 size); -void MI_DmaCopy16(u32 dmaNo, const void *src, void *dest, u32 size); -void MI_DmaFill32Async(u32 dmaNo, void *dest, u32 data, u32 size, MIDmaCallback callback, void *arg); -void MI_DmaCopy32Async(u32 dmaNo, const void *src, void *dest, u32 size, MIDmaCallback callback, void *arg); -void MI_WaitDma(u32 dmaNo); -void MI_StopDma(u32 dmaNo); -void MIi_CheckAnotherAutoDMA(u32 dmaNo, u32 dmaType); -void MIi_CheckDma0SourceAddress(u32 dmaNo, u32 src, u32 size, u32 dir); -void MIi_DmaSetParams(u32 dmaNo, u32 src, u32 dest, u32 ctrl); -void MIi_DmaSetParams_wait(u32 dmaNo, u32 src, u32 dest, u32 ctrl); -void MIi_DmaSetParams_noInt(u32 dmaNo, u32 src, u32 dest, u32 ctrl); -void MIi_DmaSetParams_wait_noInt(u32 dmaNo, u32 src, u32 dest, u32 ctrl); - -static inline void MIi_DmaSetParams_wait_src32(u32 dmaNo, u32 data, u32 dest, u32 ctrl) -{ - OSIntrMode lastIntrMode = OS_DisableInterrupts(); - - MIiDmaClearSrc *scrp = (MIiDmaClearSrc *) ((u32)REG_ADDR_DMA0_CLR_DATA + dmaNo * 4); - scrp->b32 = data; - MIi_DmaSetParams_wait_noInt(dmaNo, (u32)scrp, dest, ctrl); - - (void)OS_RestoreInterrupts(lastIntrMode); -} - -static inline void MIi_DmaSetParams_src32(u32 dmaNo, u32 data, u32 dest, u32 ctrl) -{ - OSIntrMode lastIntrMode = OS_DisableInterrupts(); - - MIiDmaClearSrc *srcp = (MIiDmaClearSrc *) ((u32)REG_ADDR_DMA0_CLR_DATA + dmaNo * 4); - srcp->b32 = data; - MIi_DmaSetParams_noInt(dmaNo, (u32)srcp, dest, ctrl); - - (void)OS_RestoreInterrupts(lastIntrMode); -} - -static inline void MIi_CallCallback(MIDmaCallback callback, void *arg) -{ - if (callback) - { - (callback) (arg); - } -} - -#endif //NITRO_MI_DMA_H_ diff --git a/lib/include/nitro/mi/dma_shared.h b/lib/include/nitro/mi/dma_shared.h deleted file mode 100644 index e839417a..00000000 --- a/lib/include/nitro/mi/dma_shared.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include MI_dma.h from the specific proc's lib - */ - -#ifndef GUARD_DMA_SHARED_H -#define GUARD_DMA_SHARED_H - -#define REG_ADDR_DMA0SAD 0x040000b0 - -#define DMA_DEST_INC 0x0000 -#define DMA_DEST_DEC 0x0020 -#define DMA_DEST_FIXED 0x0040 -#define DMA_DEST_RELOAD 0x0060 -#define DMA_SRC_INC 0x0000 -#define DMA_SRC_DEC 0x0080 -#define DMA_SRC_FIXED 0x0100 -#define DMA_REPEAT 0x0200 -#define DMA_16BIT 0x0000 -#define DMA_32BIT 0x0400 -#define DMA_DREQ_ON 0x0800 -#define DMA_START_NOW 0x0000 -#define DMA_START_VBLANK 0x1000 -#define DMA_START_HBLANK 0x2000 -#define DMA_START_SPECIAL 0x3000 -#define DMA_START_MASK 0x3000 -#define DMA_INTR_ENABLE 0x4000 -#define DMA_ENABLE 0x8000 - -#endif diff --git a/lib/include/nitro/mi/exMemory.h b/lib/include/nitro/mi/exMemory.h deleted file mode 100644 index 47c0a331..00000000 --- a/lib/include/nitro/mi/exMemory.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef NITRO_MI_EXMEMORY_H_ -#define NITRO_MI_EXMEMORY_H_ - -#include - -typedef enum { - MI_PROCESSOR_ARM9 = 0, - MI_PROCESSOR_ARM7 = 1 -} MIProcessor; - -typedef enum -{ - MI_CTRDG_ROMCYCLE1_10 = 0, - MI_CTRDG_ROMCYCLE1_8 = 1, - MI_CTRDG_ROMCYCLE1_6 = 2, - MI_CTRDG_ROMCYCLE1_18 = 3 -} MICartridgeRomCycle1st; - -typedef enum -{ - MI_CTRDG_ROMCYCLE2_6 = 0, - MI_CTRDG_ROMCYCLE2_4 = 1 -} MICartridgeRomCycle2nd; - -typedef enum -{ - MI_CTRDG_RAMCYCLE_10 = 0, - MI_CTRDG_RAMCYCLE_8 = 1, - MI_CTRDG_RAMCYCLE_6 = 2, - MI_CTRDG_RAMCYCLE_18 = 3 -} MICartridgeRamCycle; - -static inline void MIi_SetCardProcessor(MIProcessor proc) -{ - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~0x0800) | (proc << 11)); -} - -static inline void MIi_SetCartridgeProcessor(MIProcessor proc) -{ - reg_MI_EXMEMCNT = - (u16)((reg_MI_EXMEMCNT & ~0x0080) | (proc << 7)); -} - -static inline MICartridgeRomCycle1st MI_GetCartridgeRomCycle1st(void) -{ - return (MICartridgeRomCycle1st)((reg_MI_EXMEMCNT & 0xc) >> 2); -} - -static inline MICartridgeRomCycle2nd MI_GetCartridgeRomCycle2nd(void) -{ - return (MICartridgeRomCycle2nd)((reg_MI_EXMEMCNT & 0x10) >> 4); -} - -static inline void MI_SetCartridgeRomCycle1st(MICartridgeRomCycle1st c1) -{ - reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0xc) | (c1 << 2)); -} - -static inline void MI_SetCartridgeRomCycle2nd(MICartridgeRomCycle2nd c2) -{ - reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~0x10) | (c2 << 4)); -} - -static inline void MI_SetCartridgeRamCycle(MICartridgeRamCycle c) -{ - reg_MI_EXMEMCNT = (u16)((reg_MI_EXMEMCNT & ~3) | (c << 0)); -} - -static inline MICartridgeRamCycle MI_GetCartridgeRamCycle(void) -{ - return (MICartridgeRamCycle)((reg_MI_EXMEMCNT & 3) >> 0); -} - -#endif //NITRO_MI_EXMEMORY_H_ diff --git a/lib/include/nitro/mi/memory.h b/lib/include/nitro/mi/memory.h deleted file mode 100644 index bd53141e..00000000 --- a/lib/include/nitro/mi/memory.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef NITRO_MI_MEMORY_H -#define NITRO_MI_MEMORY_H - -#include - -void MIi_CpuClear16(register u16 value, register u16 * dst, register u32 size); -void MIi_CpuCopy16(const register u16 * src, register u16 * dst, register u32 size); -void MIi_CpuClear32(register u32 value, register u32 * dst, register u32 size); -void MIi_CpuCopy32(const register u32 * src, register u32 * dst, register u32 size); -void MIi_CpuClearFast(register u32 value, register u32 * dst, register u32 size); -void MIi_CpuCopyFast(const register u32 * src, register u32 * dst, register u32 size); -void MI_CpuFill8(void *dest, u8 data, u32 size); -void MI_CpuCopy8(const void * src, void * dst, u32 size); - -static inline void MI_CpuCopy16(const void *src, void *dst, u32 size) { - MIi_CpuCopy16(src, dst, size); -} - -static inline void MI_CpuClear16(void *dest, u32 size) { - MIi_CpuClear16(0, dest, size); -} - -static inline void MI_CpuFill16(void *dest, u16 data, u32 size) { - MIi_CpuClear16(data, dest, size); -} - -static inline void MI_CpuFill32(void *dest, u32 data, u32 size) { - MIi_CpuClear32(data, dest, size); -} - -static inline void MI_CpuClear32(void *dest, u32 size) { - MI_CpuFill32(dest, 0, size); -} - -static inline void MI_CpuCopy32(const void *src, void *dst, u32 size) { - MIi_CpuCopy32((u32 *)src, (u32 *)dst, size); -} - -static inline void MI_CpuClearFast(void *dst, u32 size) { - MIi_CpuClearFast(0, dst, size); -} - -static inline void MI_CpuCopyFast(const void *src, void *dst, u32 size) { - MIi_CpuCopyFast(src, dst, size); -} - -static inline void MI_CpuFillFast(void *dst, int data, u32 size) { - MIi_CpuClearFast(data, dst, size); -} - -static inline void MI_CpuClear8(void *dst, u32 size) { - MI_CpuFill8(dst, 0, size); -} - -void MI_Copy36B(const void *pSrc, void *pDst); - -#endif //NITRO_MI_MEMORY_H diff --git a/lib/include/nitro/mi/swap.h b/lib/include/nitro/mi/swap.h deleted file mode 100644 index 51c44d0b..00000000 --- a/lib/include/nitro/mi/swap.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_SWAP_H_ -#define NITRO_SWAP_H_ - -u32 MI_SwapWord(u32 setData, vu32 *destp); -u8 MI_SwapByte(u32 setData, vu8 *destp); - -#endif //NITRO_SWAP_H_ diff --git a/lib/include/nitro/mi/uncompress.h b/lib/include/nitro/mi/uncompress.h deleted file mode 100644 index 0ad7aa70..00000000 --- a/lib/include/nitro/mi/uncompress.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NITRO_MI_UNCOMPRESS_H_ -#define NITRO_MI_UNCOMPRESS_H_ - -void MI_UncompressLZ8(const void *srcp, void *destp); - -static inline u32 MI_GetUncompressedSize(const void *srcp) { - return (*(u32 *)srcp >> 8); -} - -#endif //NITRO_MI_UNCOMPRESS_H_ diff --git a/lib/include/nitro/os.h b/lib/include/nitro/os.h deleted file mode 100644 index 96a89a80..00000000 --- a/lib/include/nitro/os.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef NITRO_OS_H_ -#define NITRO_OS_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef SDK_ARM9 -#include -#include -#include -#include -#include -#endif //SDK_ARM9 - -#endif //NITRO_OS_H_ diff --git a/lib/include/nitro/os/ARM7/alarm.h b/lib/include/nitro/os/ARM7/alarm.h deleted file mode 100644 index 05a2cfe1..00000000 --- a/lib/include/nitro/os/ARM7/alarm.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * NOTE: - * This file is specific to ARM7 - * DO NOT PUT SHARED/ARM9 CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include instead! - */ - -#ifndef NITRO_OS_ARM7_ALARM_H -#define NITRO_OS_ARM7_ALARM_H - -#endif //NITRO_OS_ARM7_ALARM_H diff --git a/lib/include/nitro/os/ARM7/interrupt.h b/lib/include/nitro/os/ARM7/interrupt.h deleted file mode 100644 index 81bd0b34..00000000 --- a/lib/include/nitro/os/ARM7/interrupt.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * NOTE: - * This file is specific to ARM7 - * DO NOT PUT SHARED/ARM9 CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include instead! - */ - -#ifndef NITRO_OS_ARM7_INTERRUPT_H -#define NITRO_OS_ARM7_INTERRUPT_H - -#include - -extern OSIrqFunction OS_IRQTable[]; -extern OSIrqCallbackInfo OSi_IrqCallbackInfo[9]; - -#define OS_IE_FIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT) - -static inline void OSi_SetVBlankCount(u32 count) -{ - *(u32 *)HW_VBLANK_COUNT_BUF = count; -} - -#endif //NITRO_OS_ARM7_INTERRUPT_H diff --git a/lib/include/nitro/os/ARM7/system.h b/lib/include/nitro/os/ARM7/system.h deleted file mode 100644 index 0d333e12..00000000 --- a/lib/include/nitro/os/ARM7/system.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NITRO_OS_ARM7_SYSTEM_H -#define NITRO_OS_ARM7_SYSTEM_H - -#include - -static inline void OS_Halt(void) { - SVC_Halt(); -} - -#endif //NITRO_OS_ARM7_SYSTEM_H diff --git a/lib/include/nitro/os/ARM9/system.h b/lib/include/nitro/os/ARM9/system.h deleted file mode 100644 index 2a716fc6..00000000 --- a/lib/include/nitro/os/ARM9/system.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_OS_ARM9_SYSTEM_H -#define NITRO_OS_ARM9_SYSTEM_H - -extern void OS_Halt(void); - -#endif //NITRO_OS_ARM9_SYSTEM_H diff --git a/lib/include/nitro/os/ARM9/vramExclusive.h b/lib/include/nitro/os/ARM9/vramExclusive.h deleted file mode 100644 index 6284fec5..00000000 --- a/lib/include/nitro/os/ARM9/vramExclusive.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef NITRO_OS_VRAMEXCLUSIVE_H_ -#define NITRO_OS_VRAMEXCLUSIVE_H_ - -#define OS_VRAM_BANK_ID_A 0x0001 -#define OS_VRAM_BANK_ID_B 0x0002 -#define OS_VRAM_BANK_ID_C 0x0004 -#define OS_VRAM_BANK_ID_D 0x0008 -#define OS_VRAM_BANK_ID_E 0x0010 -#define OS_VRAM_BANK_ID_F 0x0020 -#define OS_VRAM_BANK_ID_G 0x0040 -#define OS_VRAM_BANK_ID_H 0x0080 -#define OS_VRAM_BANK_ID_I 0x0100 -#define OS_VRAM_BANK_ID_ALL 0x01ff - -#define OS_VRAM_BANK_KINDS 9 - -u32 OsCountZeroBits(u32 bitmap); -void OSi_InitVramExclusive(void); -BOOL OSi_TryLockVram(u16 bank, u16 lockId); -void OSi_UnlockVram(u16 bank, u16 lockId); - -#endif //NITRO_OS_VRAMEXCLUSIVE_H_ diff --git a/lib/include/nitro/os/alarm.h b/lib/include/nitro/os/alarm.h deleted file mode 100644 index bd9a326d..00000000 --- a/lib/include/nitro/os/alarm.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef NITRO_OS_ALARM_H -#define NITRO_OS_ALARM_H - -#include -#include - -#ifdef SDK_ARM7 -#include -#endif - -struct OSiAlarmQueue -{ - OSAlarm *head; - OSAlarm *tail; -}; -struct OSiAlarmQueue *OSi_GetAlarmQueue(void); - -void OSi_SetTimer(OSAlarm *alarm); -void OS_InitAlarm(void); -void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire); - -#endif //NITRO_OS_ALARM_H diff --git a/lib/include/nitro/os/alloc.h b/lib/include/nitro/os/alloc.h deleted file mode 100644 index eb0ecb92..00000000 --- a/lib/include/nitro/os/alloc.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_OS_ALLOC_H -#define NITRO_OS_ALLOC_H - -#include -#include - -Cell *DLExtract(Cell *list, Cell *cell); -Cell *DLInsert(Cell *list, Cell *cell); -void* OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size); -void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void* ptr); -OSHeapHandle OS_SetCurrentHeap(OSArenaId id, OSHeapHandle heap); -void *OS_InitAlloc(OSArenaId id, void *arenaStart, void *arenaEnd, s32 maxHeaps); -void OS_ClearAlloc(OSArenaId id); -OSHeapHandle OS_CreateHeap(OSArenaId id, void *start, void *end); -s32 OS_CheckHeap(OSArenaId id, OSHeapHandle heap); - -#endif //NITRO_OS_ALLOC_H diff --git a/lib/include/nitro/os/arena.h b/lib/include/nitro/os/arena.h deleted file mode 100644 index a67f642e..00000000 --- a/lib/include/nitro/os/arena.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_OS_ARENA_H -#define NITRO_OS_ARENA_H - -#include - -void OS_InitArena(void); -void OS_InitArenaHiAndLo(OSArenaId id); -void* OS_GetArenaHi(OSArenaId id); -void* OS_GetArenaLo(OSArenaId id); -void* OS_GetInitArenaHi(OSArenaId id); -void* OS_GetInitArenaLo(OSArenaId id); -void OS_SetArenaHi(OSArenaId id, void* newHi); -void OS_SetArenaLo(OSArenaId id, void* newLo); -void *OS_AllocFromArenaHi(OSArenaId arena, u32 size, u32 align); -void *OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align); - -#endif //NITRO_OS_ARENA_H diff --git a/lib/include/nitro/os/cache.h b/lib/include/nitro/os/cache.h deleted file mode 100644 index a6a62cd2..00000000 --- a/lib/include/nitro/os/cache.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NITRO_OS_CACHE_H_ -#define NITRO_OS_CACHE_H_ - -void DC_FlushAll(void); -void DC_InvalidateRange(register void * startAddr, register u32 nBytes); -void DC_StoreRange(register void * startAddr, register u32 nBytes); -void DC_InvalidateAll(void); -void DC_StoreAll(void); -void IC_InvalidateAll(void); -void IC_InvalidateRange(register void *startAddr, register u32 nBytes); -void DC_WaitWriteBufferEmpty(void); -void DC_FlushRange(const void *data, u32 size); - -#endif //NITRO_OS_CACHE_H_ diff --git a/lib/include/nitro/os/common/alarm_shared.h b/lib/include/nitro/os/common/alarm_shared.h deleted file mode 100644 index d7836ed2..00000000 --- a/lib/include/nitro/os/common/alarm_shared.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_alarm.h from the specific proc's lib - */ - -#ifndef NITRO_OS_ALARM_SHARED_H -#define NITRO_OS_ALARM_SHARED_H - -#include -#include -#include - -typedef void (*OSAlarmHandler) (void *); - -struct OSiAlarm -{ - OSAlarmHandler handler; - void *arg; - - u32 tag; - OSTick fire; - OSAlarm *prev; - OSAlarm *next; - - OSTick period; - OSTick start; -}; - -void OS_CreateAlarm(OSAlarm *alarm); -void OS_CancelAlarm(OSAlarm *alarm); -BOOL OS_IsAlarmAvailable(void); -void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg); -void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, void *arg); - -#endif //NITRO_OS_ALARM_SHARED_H diff --git a/lib/include/nitro/os/common/alloc_shared.h b/lib/include/nitro/os/common/alloc_shared.h deleted file mode 100644 index 875ed3fe..00000000 --- a/lib/include/nitro/os/common/alloc_shared.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_alloc.h from the specific proc's lib - */ - -#ifndef NITRO_OS_ALLOC_SHARED_H -#define NITRO_OS_ALLOC_SHARED_H - -#include - -typedef s32 OSHeapHandle; - -typedef struct Cell Cell; - -struct Cell { - Cell* prev; - Cell* next; - long size; -}; - -typedef struct { - long size; - Cell *free; - Cell *allocated; -} HeapDesc; - -typedef struct { - volatile OSHeapHandle currentHeap; - int numHeaps; - void* arenaStart; - void* arenaEnd; - HeapDesc* heapArray; -} OSHeapInfo; - -#endif //NITRO_OS_ALLOC_SHARED_H diff --git a/lib/include/nitro/os/common/arena_shared.h b/lib/include/nitro/os/common/arena_shared.h deleted file mode 100644 index a9a1d04a..00000000 --- a/lib/include/nitro/os/common/arena_shared.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_arena.h from the specific proc's lib - */ - -#ifndef NITRO_OS_ARENA_SHARED_H -#define NITRO_OS_ARENA_SHARED_H - -#include -#include - -typedef enum { - OS_ARENA_MAIN = 0, - OS_ARENA_MAIN_SUBPRIV = 1, - OS_ARENA_MAINEX = 2, - OS_ARENA_ITCM = 3, - OS_ARENA_DTCM = 4, - OS_ARENA_SHARED = 5, - OS_ARENA_WRAM_MAIN = 6, - OS_ARENA_WRAM_SUB = 7, - OS_ARENA_WRAM_SUBPRIV = 8, - OS_ARENA_MAX = 9 -} OSArenaId; - -typedef struct { - void* lo[OS_ARENA_MAX]; - void* hi[OS_ARENA_MAX]; - u16 initialized; - u8 padding[2]; -} OSArenaInfo; - -#endif //NITRO_OS_ARENA_SHARED_H diff --git a/lib/include/nitro/os/common/armArch.h b/lib/include/nitro/os/common/armArch.h deleted file mode 100644 index c831af44..00000000 --- a/lib/include/nitro/os/common/armArch.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef NITRO_OS_COMMON_ARMARCH_H_ -#define NITRO_OS_COMMON_ARMARCH_H_ - -#define HW_PSR_CPU_MODE_MASK 0x1f - -#define HW_PSR_USER_MODE 0x10 -#define HW_PSR_FIQ_MODE 0x11 -#define HW_PSR_IRQ_MODE 0x12 -#define HW_PSR_SVC_MODE 0x13 -#define HW_PSR_ABORT_MODE 0x17 -#define HW_PSR_UNDEF_MODE 0x1b -#define HW_PSR_SYS_MODE 0x1f - -#define HW_PSR_ARM_STATE 0x0 -#define HW_PSR_THUMB_STATE 0x20 - -#define HW_PSR_FIQ_DISABLE 0x40 -#define HW_PSR_IRQ_DISABLE 0x80 -#define HW_PSR_IRQ_FIQ_DISABLE 0xc0 - -#define HW_PSR_Q_FLAG 0x08000000 -#define HW_PSR_V_FLAG 0x10000000 -#define HW_PSR_C_FLAG 0x20000000 -#define HW_PSR_Z_FLAG 0x40000000 -#define HW_PSR_N_FLAG 0x80000000 - -#define HW_C7_ICACHE_INDEX_MASK 0x00000fe0 -#define HW_C7_DCACHE_INDEX_MASK 0x000003e0 -#define HW_C7_CACHE_SET_NO_MASK 0xc0000000 - -#define HW_C7_CACHE_INDEX_SHIFT 5 -#define HW_C7_CACHE_SET_NO_SHIFT 30 - -#define HW_CPU_CLOCK_ARM7 33513982 -#define HW_CPU_CLOCK_ARM9 67027964 - -#endif //NITRO_OS_COMMON_ARMARCH_H_ diff --git a/lib/include/nitro/os/common/entropy.h b/lib/include/nitro/os/common/entropy.h deleted file mode 100644 index 47d81fe7..00000000 --- a/lib/include/nitro/os/common/entropy.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_OS_COMMON_ENTROPY_H_ -#define NITRO_OS_COMMON_ENTROPY_H_ - -#define OS_LOW_ENTROPY_DATA_SIZE 32 -void OS_GetLowEntropyData(u32 buffer[OS_LOW_ENTROPY_DATA_SIZE / sizeof(u32)]); - -#endif //NITRO_OS_COMMON_ENTROPY_H_ diff --git a/lib/include/nitro/os/common/interrupt_shared.h b/lib/include/nitro/os/common/interrupt_shared.h deleted file mode 100644 index c5b6093d..00000000 --- a/lib/include/nitro/os/common/interrupt_shared.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_interrupt.h from the specific proc's lib - */ - -#ifndef NITRO_OS_INTERRUPT_SHARED_H -#define NITRO_OS_INTERRUPT_SHARED_H - -#include - -typedef u32 OSIrqMask; - -typedef void (*OSIrqFunction) (void); - -#define OS_IE_VBLANK (1UL << REG_OS_IE_VB_SHIFT) -#define OS_IE_HBLANK (1UL << REG_OS_IE_HB_SHIFT) -#define OS_IE_V_COUNT (1UL << REG_OS_IE_VE_SHIFT) -#define OS_IE_TIMER0 (1UL << REG_OS_IE_T0_SHIFT) -#define OS_IE_TIMER1 (1UL << REG_OS_IE_T1_SHIFT) -#define OS_IE_TIMER2 (1UL << REG_OS_IE_T2_SHIFT) -#define OS_IE_TIMER3 (1UL << REG_OS_IE_T3_SHIFT) -#define OS_IE_SIO (1UL << 7 ) -#define OS_IE_DMA0 (1UL << REG_OS_IE_D0_SHIFT) -#define OS_IE_DMA1 (1UL << REG_OS_IE_D1_SHIFT) -#define OS_IE_DMA2 (1UL << REG_OS_IE_D2_SHIFT) -#define OS_IE_DMA3 (1UL << REG_OS_IE_D3_SHIFT) -#define OS_IE_KEY (1UL << REG_OS_IE_K_SHIFT) -#define OS_IE_CARTRIDGE (1UL << REG_OS_IE_I_D_SHIFT) -#define OS_IE_SUBP (1UL << REG_OS_IE_A7_SHIFT) -#define OS_IE_SPFIFO_SEND (1UL << REG_OS_IE_IFE_SHIFT) -#define OS_IE_SPFIFO_RECV (1UL << REG_OS_IE_IFN_SHIFT) -#define OS_IE_CARD_DATA (1UL << REG_OS_IE_MC_SHIFT) -#define OS_IE_CARD_IREQ (1UL << REG_OS_IE_MI_SHIFT) - -typedef struct -{ - void (*func) (void *); - u32 enable; - void* arg; -} OSIrqCallbackInfo; - -#endif //NITRO_OS_INTERRUPT_SHARED_H diff --git a/lib/include/nitro/os/common/message_shared.h b/lib/include/nitro/os/common/message_shared.h deleted file mode 100644 index 87167916..00000000 --- a/lib/include/nitro/os/common/message_shared.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_message.h from the specific proc's lib - */ - -#ifndef NITRO_OS_MESSAGE_SHARED_H -#define NITRO_OS_MESSAGE_SHARED_H - -#include -#include - -typedef void *OSMessage; - -#define OS_MESSAGE_NOBLOCK 0 -#define OS_MESSAGE_BLOCK 1 - -typedef struct OSMessageQueue -{ - OSThreadQueue queueSend; - OSThreadQueue queueReceive; - OSMessage *msgArray; - s32 msgCount; - s32 firstIndex; - s32 usedCount; -} OSMessageQueue; - -#endif //NITRO_OS_MESSAGE_SHARED_H diff --git a/lib/include/nitro/os/common/mutex_shared.h b/lib/include/nitro/os/common/mutex_shared.h deleted file mode 100644 index 3cbabefc..00000000 --- a/lib/include/nitro/os/common/mutex_shared.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_mutex.h from the specific proc's lib - */ - -#ifndef NITRO_OS_MUTEX_SHARED_H -#define NITRO_OS_MUTEX_SHARED_H - -#include -#include - -struct OSMutex { - OSThreadQueue queue; - OSThread *thread; - s32 count; - OSMutexLink link; -}; - -#endif //NITRO_OS_MUTEX_SHARED_H diff --git a/lib/include/nitro/os/common/reset_shared.h b/lib/include/nitro/os/common/reset_shared.h deleted file mode 100644 index 414e51e4..00000000 --- a/lib/include/nitro/os/common/reset_shared.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_reset.h from the specific proc's lib - */ - -#ifndef NITRO_OS_RESET_SHARED_H -#define NITRO_OS_RESET_SHARED_H - -#define OS_PXI_COMMAND_MASK 0x7f00 -#define OS_PXI_COMMAND_SHIFT 8 -#define OS_PXI_COMMAND_RESET 0x10 - -#define OS_PXI_DATA_MASK 0xFF -#define OS_PXI_DATA_SHIFT 0 - -#endif //NITRO_OS_RESET_SHARED_H diff --git a/lib/include/nitro/os/common/spinLock_shared.h b/lib/include/nitro/os/common/spinLock_shared.h deleted file mode 100644 index 3f8d7663..00000000 --- a/lib/include/nitro/os/common/spinLock_shared.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_spinLock.h from the specific proc's lib - */ - -#ifndef NITRO_OS_SPINLOCK_SHARED_H_ -#define NITRO_OS_SPINLOCK_SHARED_H_ - -#include - -typedef volatile struct OSLockWord { - u32 lockFlag; - u16 ownerID; - u16 extension; -} OSLockWord; - -#endif //NITRO_OS_SPINLOCK_SHARED_H_ diff --git a/lib/include/nitro/os/common/systemWork_shared.h b/lib/include/nitro/os/common/systemWork_shared.h deleted file mode 100644 index 8ab3f57f..00000000 --- a/lib/include/nitro/os/common/systemWork_shared.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include consts.h from the specific proc's lib - */ - -#ifndef NITRO_OS_SYSTEMWORK_SHARED_H_ -#define NITRO_OS_SYSTEMWORK_SHARED_H_ - -#include -#include -#include - -typedef struct { - u8 bootCheckInfo[0x20]; // 000-01f: 32byte boot check info - u32 resetParameter; // 020-023: 4byte reset parameter - u8 padding5[0x8]; // 024-02c: (8byte) - u32 romBaseOffset; // 02c-02f: 4byte ROM offset of own program - u8 cartridgeModuleInfo[12]; // 030-03b: 12byte cartridge module info - u32 vblankCount; // 03c-03f: 4byte V-Blank Count - u8 wmBootBuf[0x40]; // 040-07f: 64byte WM multiboot buffer - u8 nvramUserInfo[0x100]; // 080-17f: 256bytes NVRAM user info - u8 isd_reserved1[0x20]; // 180-19f: 32bytes ISDebugger reserved - u8 arenaInfo[0x48]; // 1a0-1e7: 72byte Arena information - u8 real_time_clock[8]; // 1e8-1ef: 8bytes RTC - u32 dmaClearBuf[4]; // 1f0-1ff: 16bytes DMA clear information buffer (for ARM9-TEG) - u8 rom_header[0x160]; // 200-35f: 352bytes ROM registration area info storage buffer - u8 isd_reserved2[32]; // 360-37f: 32bytes ISDebugger reserved - u32 pxiSignalParam[2]; // 380-387: 8bytes Param for PXI Signal - u32 pxiHandleChecker[2]; // 388-38f: 8bytes Flag for PXI Command Handler Installed - u32 mic_last_address; // 390-393: 4bytes MIC latest sampling result storage address - u16 mic_sampling_data; // 394-395: 2bytes MIC sampling result - u16 wm_callback_control; // 396-397: 2bytes Parameter for WM callback synchronization - u16 wm_rssi_pool; // 398-399: 2bytes Random number source depends on WM received signal intensity - u8 padding3[2]; // 39a-39b: (2bytes) - u32 component_param; // 39c-39f: 4bytes Parameter for Component synchronization - OSThreadInfo *threadinfo_mainp; // 3a0-3a3: 4bytes Verify that the pointer to ARM9 thread information is initial value 0 - OSThreadInfo *threadinfo_subp; // 3a4-3a7: 4bytes Verify that the pointer to ARM7 thread information is initial value 0 - u16 button_XY; // 3a8-3a9: 2bytes XY button information storage location - u8 touch_panel[4]; // 3aa-3ad: 4bytes Touch Screen information storage location - u16 autoloadSync; // 3ae-3af: 2bytes autoload sync between processors - u32 lockIDFlag_mainp[2]; // 3b0-3b7: 8bytes lockID management flag (ARM9) - u32 lockIDFlag_subp[2]; // 3b8-3bf: 8bytes lockID management flag (ARM7) - struct OSLockWord lock_VRAM_C; // 3c0-3c7: 8bytes C - lock buffer - struct OSLockWord lock_VRAM_D; // 3c8-3cf: 8bytes VRAM-D - lock buffer - struct OSLockWord lock_WRAM_BLOCK0; // 3d0-3d7: 8bytes Block0 - lock buffer - struct OSLockWord lock_WRAM_BLOCK1; // 3d8-3df: 8bytes CPU internal work RAM - Block1 - lock buffer - struct OSLockWord lock_CARD; // 3e0-3e7: 8bytes Game Card - lock buffer - struct OSLockWord lock_CARTRIDGE; // 3e8-3ef: 8bytes DS Pak - lock buffer - struct OSLockWord lock_INIT; // 3f0-3f7: 8bytes Initialization lock buffer - u16 mmem_checker_mainp; // 3f8-3f9: 2bytes MainMomory Size Checker for System processor - u16 mmem_checker_subp; // 3fa-3fb: 2bytes MainMomory Size Checker for Sub processor - u8 padding4[2]; // 3fc-3fd: (2bytes) - u16 command_area; // 3fe-3ff: 2bytes Command Area -} OSSystemWork; //0x027FFC00 - -#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM) - -#endif //NITRO_OS_SYSTEMWORK_SHARED_H_ diff --git a/lib/include/nitro/os/common/system_shared.h b/lib/include/nitro/os/common/system_shared.h deleted file mode 100644 index 2352a3b9..00000000 --- a/lib/include/nitro/os/common/system_shared.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_system.h from the specific proc's lib - */ - -#ifndef NITRO_OS_SYSTEM_SHARED_H_ -#define NITRO_OS_SYSTEM_SHARED_H_ - -#include - -typedef enum { - OS_PROCMODE_USER=16, - OS_PROCMODE_FIQ=17, - OS_PROCMODE_IRQ=18, - OS_PROCMODE_SVC=19, - OS_PROCMODE_ABORT=23, - OS_PROCMODE_UNDEF=27, - OS_PROCMODE_SYS=31 -} OSProcMode; - -typedef enum { - OS_INTRMODE_DISABLE_IRQ = HW_PSR_DISABLE_IRQ, - OS_INTRMODE_DISABLE_FIQ = HW_PSR_DISABLE_FIQ, - OS_INTRMODE_ENABLE = 0 -} OSIntrMode; - -typedef enum { - OS_INTRMODE_IRQ_DISABLE = HW_PSR_DISABLE_IRQ, - OS_INTRMODE_IRQ_ENABLE = 0 -} OSIntrMode_Irq; - -#endif //NITRO_OS_SYSTEM_SHARED_H_ diff --git a/lib/include/nitro/os/common/thread_shared.h b/lib/include/nitro/os/common/thread_shared.h deleted file mode 100644 index c6f39766..00000000 --- a/lib/include/nitro/os/common/thread_shared.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_thread.h from the specific proc's lib - */ - -#ifndef NITRO_OS_THREAD_SHARED_H_ -#define NITRO_OS_THREAD_SHARED_H_ - -typedef struct OSiAlarm OSAlarm; - -typedef struct _OSThread OSThread; - -typedef struct _OSThreadQueue OSThreadQueue; -typedef struct _OSThreadLink OSThreadLink; -typedef struct _OSMutexQueue OSMutexQueue; -typedef struct _OSMutexLink OSMutexLink; -typedef struct OSMutex OSMutex; - -struct _OSThreadQueue -{ - OSThread *head; - OSThread *tail; -}; - -struct _OSThreadLink -{ - OSThread *prev; - OSThread *next; -}; - -struct _OSMutexQueue -{ - OSMutex *head; - OSMutex *tail; -}; - -struct _OSMutexLink -{ - OSMutex *next; - OSMutex *prev; -}; - -typedef struct OSThreadInfo { - u16 isNeedRescheduling; - u16 irqDepth; - OSThread* current; - OSThread* list; - void* switchCallback; // type: OSSwitchThreadCallback -} OSThreadInfo; - -typedef enum { - OS_THREAD_STATE_WAITING = 0, - OS_THREAD_STATE_READY = 1, - OS_THREAD_STATE_TERMINATED = 2 -} OSThreadState; - -typedef void (*OSSwitchThreadCallback) (OSThread *from, OSThread *to); - -typedef void (*OSThreadDestructor) (void *); - -struct _OSThread -{ - OSContext context; - OSThreadState state; - OSThread *next; - u32 id; - u32 priority; - void *profiler; - - OSThreadQueue *queue; - OSThreadLink link; - - OSMutex *mutex; - OSMutexQueue mutexQueue; - - u32 stackTop; - u32 stackBottom; - u32 stackWarningOffset; - - OSThreadQueue joinQueue; - - void *specific[3]; - OSAlarm *alarmForSleep; - OSThreadDestructor destructor; - void *userParameter; - - u32 systemErrno; -}; - -extern OSThreadInfo OSi_ThreadInfo; - -static inline OSThreadInfo *OS_GetThreadInfo(void) -{ - return &OSi_ThreadInfo; -} - -static inline BOOL OS_IsThreadRunnable(const OSThread *thread) -{ - return thread->state == OS_THREAD_STATE_READY; -} - -static inline void OS_InitThreadQueue(OSThreadQueue * queue) -{ - queue->head = queue->tail = NULL; -} - -static inline OSThread *OS_GetCurrentThread(void) -{ - return OS_GetThreadInfo()->current; -} - -static inline void OS_SetCurrentThread(OSThread *thread) -{ - OS_GetThreadInfo()->current = thread; -} - -#define OSi_GetCurrentThread() (*OSi_CurrentThreadPtr) - -#endif //NITRO_OS_THREAD_SHARED_H_ diff --git a/lib/include/nitro/os/common/tick_shared.h b/lib/include/nitro/os/common/tick_shared.h deleted file mode 100644 index 8135c728..00000000 --- a/lib/include/nitro/os/common/tick_shared.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include OS_tick.h from the specific proc's lib - */ - -#ifndef NITRO_OS_TICK_SHARED_H -#define NITRO_OS_TICK_SHARED_H - -#include - -typedef u64 OSTick; - -#define OS_SYSTEM_CLOCK HW_SYSTEM_CLOCK - -#define OS_MilliSecondsToTicks(msec) ((OSTick)(((OS_SYSTEM_CLOCK/1000) * (u64)(msec)) / 64)) - -#endif //NITRO_OS_TICK_SHARED_H diff --git a/lib/include/nitro/os/common/timer_shared.h b/lib/include/nitro/os/common/timer_shared.h deleted file mode 100644 index 48d5485f..00000000 --- a/lib/include/nitro/os/common/timer_shared.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef NITRO_OS_TIMER_SHARED_H -#define NITRO_OS_TIMER_SHARED_H - -#include - -typedef enum -{ - OS_TIMER_PRESCALER_1 = (0UL << REG_OS_TM0CNT_H_PS_SHIFT), - OS_TIMER_PRESCALER_64 = (1UL << REG_OS_TM0CNT_H_PS_SHIFT), - OS_TIMER_PRESCALER_256 = (2UL << REG_OS_TM0CNT_H_PS_SHIFT), - OS_TIMER_PRESCALER_1024 = (3UL << REG_OS_TM0CNT_H_PS_SHIFT) -} OSTimerPrescaler; - -typedef enum -{ - OS_TIMER_0 = 0, - OS_TIMER_1 = 1, - OS_TIMER_2 = 2, - OS_TIMER_3 = 3 -} OSTimer; - -static inline void OS_SetTimerCount(OSTimer id, u16 count) -{ - *((REGType16 *)((u32)®_OS_TM0CNT_L + id * 4)) = count; -} - -static inline void OS_SetTimerControl(OSTimer id, u16 control) -{ - *((REGType16 *)((u32)®_OS_TM0CNT_H + id * 4)) = control; -} - -#endif //NITRO_OS_TIMER_SHARED_H diff --git a/lib/include/nitro/os/context.h b/lib/include/nitro/os/context.h deleted file mode 100644 index d9e79024..00000000 --- a/lib/include/nitro/os/context.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef NITRO_OS_CONTEXT_H_ -#define NITRO_OS_CONTEXT_H_ - -#include - -#ifdef SDK_ARM9 -#include -#endif - -#define SDK_CONTEXT_HAS_SP_SVC - -// All the context functions are plain ASM, -// so these offsets are defined for readibility. -#define OS_CONTEXT_CPSR 0 -#define OS_CONTEXT_R0 4 -#define OS_CONTEXT_R1 8 -#define OS_CONTEXT_R2 12 -#define OS_CONTEXT_R3 16 -#define OS_CONTEXT_R4 20 -#define OS_CONTEXT_R5 24 -#define OS_CONTEXT_R6 28 -#define OS_CONTEXT_R7 32 -#define OS_CONTEXT_R8 36 -#define OS_CONTEXT_R9 40 -#define OS_CONTEXT_R10 44 -#define OS_CONTEXT_R11 48 -#define OS_CONTEXT_R12 52 -#define OS_CONTEXT_R13 56 -#define OS_CONTEXT_R14 60 -#define OS_CONTEXT_PC_PLUS4 64 - -#define OS_CONTEXT_SP OS_CONTEXT_R13 -#define OS_CONTEXT_LR OS_CONTEXT_R14 - -#ifdef SDK_CONTEXT_HAS_SP_SVC -#define OS_CONTEXT_R13_SVC 68 -#define OS_CONTEXT_SP_SVC OS_CONTEXT_R13_SVC -#endif - -#ifdef SDK_ARM9 -#ifdef SDK_CONTEXT_HAS_SP_SVC -#define OS_CONTEXT_CP_CONTEXT 72 -#else -#define OS_CONTEXT_CP_CONTEXT 68 -#endif -#endif - -typedef struct OSContext -{ - u32 cpsr; - u32 r[13]; - u32 sp; - u32 lr; - u32 pc_plus4; -#ifdef SDK_CONTEXT_HAS_SP_SVC - u32 sp_svc; -#endif -#ifdef SDK_ARM9 - CPContext cp_context; -#endif -} OSContext; - -void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp); -BOOL OS_SaveContext(register OSContext *context); -void OS_LoadContext(register OSContext *context); - -#endif //NITRO_OS_CONTEXT_H_ diff --git a/lib/include/nitro/os/emulator.h b/lib/include/nitro/os/emulator.h deleted file mode 100644 index de01fdd5..00000000 --- a/lib/include/nitro/os/emulator.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_OS_EMULATOR_H_ -#define NITRO_OS_EMULATOR_H_ - -BOOL OS_IsRunOnEmulator(void); -u32 OS_GetConsoleType(void); - -#endif //NITRO_OS_EMULATOR_H_ diff --git a/lib/include/nitro/os/exception.h b/lib/include/nitro/os/exception.h deleted file mode 100644 index a211e3c8..00000000 --- a/lib/include/nitro/os/exception.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NITRO_OS_EXCEPTION_H_ -#define NITRO_OS_EXCEPTION_H_ - -typedef void (*OSExceptionHandler) (u32, void *); - -void OS_InitException(void); - -#endif //NITRO_OS_EXCEPTION_H_ diff --git a/lib/include/nitro/os/init.h b/lib/include/nitro/os/init.h deleted file mode 100644 index f3a02d01..00000000 --- a/lib/include/nitro/os/init.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef NITRO_SUB_OS_INIT_H -#define NITRO_SUB_OS_INIT_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void OSi_WaitVCount0(void); -void OS_Init(void); -void OS_InitArenaEx(void); - -#endif //NITRO_SUB_OS_INIT_H diff --git a/lib/include/nitro/os/interrupt.h b/lib/include/nitro/os/interrupt.h deleted file mode 100644 index d5101e2d..00000000 --- a/lib/include/nitro/os/interrupt.h +++ /dev/null @@ -1,88 +0,0 @@ -#ifndef NITRO_SUB_OS_INTERRUPT_H -#define NITRO_SUB_OS_INTERRUPT_H - -#include -#include - -#define OS_IME_DISABLE (0UL << REG_OS_IME_IME_SHIFT) -#define OS_IME_ENABLE (1UL << REG_OS_IME_IME_SHIFT) - -#ifdef SDK_ARM7 -#include -#define OS_IRQ_TABLE_MAX 25 -#else // SDK_ARM9 -//#include -#define OS_IRQ_TABLE_MAX 22 -#endif //SDK_ARM7 SDK_ARM9 - -#define OSi_IRQCALLBACK_NO_DMA0 0 -#define OSi_IRQCALLBACK_NO_DMA1 1 -#define OSi_IRQCALLBACK_NO_DMA2 2 -#define OSi_IRQCALLBACK_NO_DMA3 3 -#define OSi_IRQCALLBACK_NO_TIMER0 4 -#define OSi_IRQCALLBACK_NO_TIMER1 5 -#define OSi_IRQCALLBACK_NO_TIMER2 6 -#define OSi_IRQCALLBACK_NO_TIMER3 7 -#ifdef SDK_ARM7 -#define OSi_IRQCALLBACK_NO_VBLANK 8 -#endif //SDK_ARM7 -#ifdef SDK_ARM9 -#define OSi_IRQCALLBACK_NUM (7+1) -#else // SDK_ARM7 -#define OSi_IRQCALLBACK_NUM (8+1) -#endif // SDK_ARM9 SDK_ARM7 - -extern OSIrqFunction OS_IRQTable[]; -extern OSIrqCallbackInfo OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NUM]; - -static inline void OS_ClearIrqCheckFlag(OSIrqMask intr) { - *(vu32 *)HW_INTR_CHECK_BUF &= (u32)~intr; -} - -static inline u32 OS_GetIrqCheckFlag(void) { - return *(vu32 *)HW_INTR_CHECK_BUF; -} - -static inline void OS_SetIrqCheckFlag(OSIrqMask intr) { - *(vu32 *)HW_INTR_CHECK_BUF |= (u32)intr; -} - -static inline BOOL OS_EnableIrq(void) { - u16 prep = reg_OS_IME; - reg_OS_IME = OS_IME_ENABLE; - return (BOOL)prep; -} - -#ifdef SDK_ARM9 -static inline BOOL OS_DisableIrq(void) { - BOOL ime = reg_OS_IME; - reg_OS_IME = OS_IME_DISABLE; - return ime; -} -#else -BOOL OS_DisableIrq(void); -#endif - -static inline BOOL OS_RestoreIrq(BOOL enable) { - BOOL ime = reg_OS_IME; - reg_OS_IME = enable; - return ime; -} - -static inline OSIrqMask OS_GetIrqMask(void) { - return reg_OS_IE; -} - -void OS_InitIrqTable(void); -void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function); -void OSi_EnterTimerCallback(u32 timerNo, void (*callback) (void *), void *arg); -OSIrqMask OS_SetIrqMask(OSIrqMask mask); -OSIrqMask OS_EnableIrqMask(OSIrqMask mask); -OSIrqMask OS_DisableIrqMask(OSIrqMask mask); -OSIrqMask OS_ResetRequestIrqMask(OSIrqMask mask); -void OS_SetIrqStackChecker(void); -void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags); -OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit); -void OSi_EnterDmaCallback(u32 dmaNo, void (*callback)(void * arg), void * arg); - -#endif //NITRO_SUB_OS_INTERRUPT_H diff --git a/lib/include/nitro/os/irqHandler.h b/lib/include/nitro/os/irqHandler.h deleted file mode 100644 index 9dc0823e..00000000 --- a/lib/include/nitro/os/irqHandler.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NITRO_OS_IRQHANDLER_H -#define NITRO_OS_IRQHANDLER_H - -#include - -void OS_IrqHandler(register OSIrqMask irq); -void OS_IrqHandler_ThreadSwitch(void); - -#endif //NITRO_OS_IRQHANDLER_H diff --git a/lib/include/nitro/os/irqTable.h b/lib/include/nitro/os/irqTable.h deleted file mode 100644 index 0a7bff89..00000000 --- a/lib/include/nitro/os/irqTable.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NITRO_OS_IRQTABLE_H -#define NITRO_OS_IRQTABLE_H - -#include -#include - -void OS_IrqDummy(void); -void OSi_IrqCallback(s32 index); -void OSi_IrqDma0(void); -void OSi_IrqDma1(void); -void OSi_IrqDma2(void); -void OSi_IrqDma3(void); -void OSi_IrqTimer0(void); -void OSi_IrqTimer1(void); -void OSi_IrqTimer2(void); -void OSi_IrqTimer3(void); -void OSi_IrqVBlank(void); - -#endif //NITRO_OS_IRQTABLE_H diff --git a/lib/include/nitro/os/message.h b/lib/include/nitro/os/message.h deleted file mode 100644 index 96dcaf7f..00000000 --- a/lib/include/nitro/os/message.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NITRO_OS_MESSAGE_H -#define NITRO_OS_MESSAGE_H - -#include -#include -#include -#include - -void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount); -BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags); -BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags); -BOOL OS_JamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags); -BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags); - -#endif //NITRO_OS_MESSAGE_H diff --git a/lib/include/nitro/os/mutex.h b/lib/include/nitro/os/mutex.h deleted file mode 100644 index b432014e..00000000 --- a/lib/include/nitro/os/mutex.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NITRO_OS_MUTEX_H -#define NITRO_OS_MUTEX_H - -#include -#include - -void OSi_DequeueItem(OSThread * thread, OSMutex * mutex); -void OSi_EnqueueTail(OSThread * thread, OSMutex * mutex); -void OS_InitMutex(OSMutex* mutex); -void OS_LockMutex(OSMutex* mutex); -void OS_UnlockMutex(OSMutex* mutex); -void OSi_UnlockAllMutex(OSThread * thread); -BOOL OS_TryLockMutex(OSMutex *mtx); - -#endif //NITRO_OS_MUTEX_H diff --git a/lib/include/nitro/os/ownerInfo.h b/lib/include/nitro/os/ownerInfo.h deleted file mode 100644 index 44a00407..00000000 --- a/lib/include/nitro/os/ownerInfo.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef NITRO_OS_OWNERINFO_H_ -#define NITRO_OS_OWNERINFO_H_ - -typedef struct OSBirthday { - u8 month; - u8 day; -} OSBirthday; - -typedef struct OSOwnerInfo { - u8 language; - u8 favoriteColor; - OSBirthday birthday; - u16 nickName[11]; - u16 nickNameLength; - u16 comment[27]; - u16 commentLength; -} OSOwnerInfo; - -void OS_GetMacAddress(u8 *macAddr); -void OS_GetOwnerInfo(OSOwnerInfo *info); -s64 OS_GetOwnerRtcOffset(void); - -#endif //NITRO_OS_OWNERINFO_H_ diff --git a/lib/include/nitro/os/printf.h b/lib/include/nitro/os/printf.h deleted file mode 100644 index 49bc43f9..00000000 --- a/lib/include/nitro/os/printf.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef NITRO_OS_PRINTF_H_ -#define NITRO_OS_PRINTF_H_ - -#include -#include - -int OS_SPrintf(char * dest, const char * format, ...); -int OS_SNPrintf(char * dest, u32 len, const char * format, ...); -int OS_VSPrintf(char * dest, const char * format, va_list va); -int OS_VSNPrintf(char * dest, u32 len, const char * format, va_list va); - -void OS_Terminate(); - -#define OS_Panic(...) OS_Terminate() -#define OS_Printf(...) - -#endif //NITRO_OS_PRINTF_H_ diff --git a/lib/include/nitro/os/protectionRegion.h b/lib/include/nitro/os/protectionRegion.h deleted file mode 100644 index 9e0c758a..00000000 --- a/lib/include/nitro/os/protectionRegion.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef NITRO_OS_PROTECTIONREGION_H_ -#define NITRO_OS_PROTECTIONREGION_H_ - -typedef enum -{ - OSi_PR_BASE_MASK_4KB = 0xfffff000, - OSi_PR_BASE_MASK_8KB = 0xffffe000, - OSi_PR_BASE_MASK_16KB = 0xffffc000, - OSi_PR_BASE_MASK_32KB = 0xffff8000, - OSi_PR_BASE_MASK_64KB = 0xffff0000, - OSi_PR_BASE_MASK_128KB = 0xfffe0000, - OSi_PR_BASE_MASK_256KB = 0xfffc0000, - OSi_PR_BASE_MASK_512KB = 0xfff80000, - OSi_PR_BASE_MASK_1MB = 0xfff00000, - OSi_PR_BASE_MASK_2MB = 0xffe00000, - OSi_PR_BASE_MASK_4MB = 0xffc00000, - OSi_PR_BASE_MASK_8MB = 0xff800000, - OSi_PR_BASE_MASK_16MB = 0xff000000, - OSi_PR_BASE_MASK_32MB = 0xfe000000, - OSi_PR_BASE_MASK_64MB = 0xfc000000, - OSi_PR_BASE_MASK_128MB = 0xf8000000, - OSi_PR_BASE_MASK_256MB = 0xf0000000, - OSi_PR_BASE_MASK_512MB = 0xe0000000, - OSi_PR_BASE_MASK_1GB = 0xc0000000, - OSi_PR_BASE_MASK_2GB = 0x80000000, - OSi_PR_BASE_MASK_4GB = 0x00000000 -} -OSiProtectionRegionBaseMask; - -static inline u32 OSi_CalcPRParam(u32 address, u32 size, OSiProtectionRegionBaseMask mask) -{ - return ((address & mask) | size); -} - -void OS_SetDPermissionsForProtectionRegion(register u32 setMask, register u32 flags); -void OS_SetProtectionRegion0(u32 param); -void OS_SetProtectionRegion1(u32 param); -void OS_SetProtectionRegion2(u32 param); -void OS_SetProtectionRegion3(u32 param); -void OS_SetProtectionRegion4(u32 param); -void OS_SetProtectionRegion5(u32 param); -void OS_SetProtectionRegion6(u32 param); -void OS_SetProtectionRegion7(u32 param); - -#define OS_SetProtectionRegionParam( regionNo, param ) OSi_SetPR##regionNo##_param( param ) - -#define OSi_SetPR0_param( param ) OS_SetProtectionRegion0( param ) -#define OSi_SetPR1_param( param ) OS_SetProtectionRegion1( param ) -#define OSi_SetPR2_param( param ) OS_SetProtectionRegion2( param ) -#define OSi_SetPR3_param( param ) OS_SetProtectionRegion3( param ) -#define OSi_SetPR4_param( param ) OS_SetProtectionRegion4( param ) -#define OSi_SetPR5_param( param ) OS_SetProtectionRegion5( param ) -#define OSi_SetPR6_param( param ) OS_SetProtectionRegion6( param ) -#define OSi_SetPR7_param( param ) OS_SetProtectionRegion7( param ) - - -#define OS_SetProtectionRegion( regionNo, address, sizeStr ) \ - OSi_SetPR##regionNo##_param( OSi_CalcPRParam( address, HW_C6_PR_##sizeStr, OSi_PR_BASE_MASK_##sizeStr ) \ - | HW_C6_PR_ENABLE ) - -#endif //NITRO_OS_PROTECTIONREGION_H_ diff --git a/lib/include/nitro/os/protectionUnit.h b/lib/include/nitro/os/protectionUnit.h deleted file mode 100644 index eef7af8b..00000000 --- a/lib/include/nitro/os/protectionUnit.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_OS_PROTECTIONUNIT_H_ -#define NITRO_OS_PROTECTIONUNIT_H_ - -void OS_DisableProtectionUnit(void); -void OS_EnableProtectionUnit(void); - -#endif //NITRO_OS_PROTECTIONUNIT_H_ diff --git a/lib/include/nitro/os/reset.h b/lib/include/nitro/os/reset.h deleted file mode 100644 index a6db1d91..00000000 --- a/lib/include/nitro/os/reset.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef NITRO_OS_RESET_H -#define NITRO_OS_RESET_H - -#include -#include -#include - -void OS_InitReset(void); -BOOL OS_IsResetOccurred(void); -void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err); -void OSi_SendToPxi(u16 data); - -#ifdef SDK_ARM9 -void OS_ResetSystem(u32 parameter); - -static inline u32 OS_GetResetParameter(void) { - return *(u32 *)HW_RESET_PARAMETER_BUF; -} -#else -void OS_ResetSystem(void); -#endif - -#endif //NITRO_OS_RESET_H diff --git a/lib/include/nitro/os/spinLock.h b/lib/include/nitro/os/spinLock.h deleted file mode 100644 index 8fcdf2f2..00000000 --- a/lib/include/nitro/os/spinLock.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NITRO_OS_SPINLOCK_H -#define NITRO_OS_SPINLOCK_H - -#include -#include - -#define OS_MAINP_SYSTEM_LOCK_ID 0x7F -#define OS_SUBP_SYSTEM_LOCK_ID 0xBF - -#define OS_MAINP_LOCK_ID_START 0x40 -#define OS_SUBP_LOCK_ID_START 0x80 - -#define OS_LOCK_ID_ERROR (-3) - -void OS_InitLock(void); -void FUN_037F8CB4(s32 ct); -s32 OSi_DoLockByWord(u16 lockId, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq); -s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ); -s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), BOOL disableFiq); -s32 OS_LockCartridge(u16 lockID); -s32 OS_UnlockCartridge(u16 lockID); -s32 OS_TryLockCartridge(u16 lockID); -void OSi_AllocateCartridgeBus(void); -void OSi_FreeCartridgeBus(void); -s32 OS_LockCard(u16 lockID); -s32 OS_UnlockCard(u16 lockID); -s32 OS_UnLockCard(u16 lockID); -BOOL OS_TryLockCard(u16 lockID); -u16 OS_ReadOwnerOfLockWord(OSLockWord * lock); -s32 OS_UnLockCartridge(u16 lockID); -s32 OS_GetLockID(void); -void OS_ReleaseLockID(register u16 lockID); -s32 OS_LockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); -s32 OS_UnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); - -#endif //NITRO_OS_SPINLOCK_H diff --git a/lib/include/nitro/os/system.h b/lib/include/nitro/os/system.h deleted file mode 100644 index 5ebeda92..00000000 --- a/lib/include/nitro/os/system.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NITRO_OS_SYSTEM_H_ -#define NITRO_OS_SYSTEM_H_ - -#include -#include -#include -#include - -#ifdef SDK_ARM9 -#include -#else -#include -#endif //SDK_ARM9 - -OSIntrMode OS_EnableInterrupts(void); -OSIntrMode OS_DisableInterrupts(void); -OSIntrMode OS_RestoreInterrupts(OSIntrMode state); -OSIntrMode OS_DisableInterrupts_IrqAndFiq(void); -OSIntrMode OS_RestoreInterrupts_IrqAndFiq(OSIntrMode state); -OSIntrMode_Irq OS_GetCpsrIrq(void); -OSProcMode OS_GetProcMode(void); -void OS_SpinWait(u32 cycles); -void OS_WaitVBlankIntr(void); - -#endif //NITRO_OS_SYSTEM_H_ diff --git a/lib/include/nitro/os/systemCall.h b/lib/include/nitro/os/systemCall.h deleted file mode 100644 index 3920984b..00000000 --- a/lib/include/nitro/os/systemCall.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_OS_SYSTEMCALL_H_ -#define NITRO_OS_SYSTEMCALL_H_ - -void SVC_Halt(void); -void SVC_WaitByLoop(s32 count); - -#endif //NITRO_OS_SYSTEMCALL_H_ diff --git a/lib/include/nitro/os/systemWork.h b/lib/include/nitro/os/systemWork.h deleted file mode 100644 index 7d40d257..00000000 --- a/lib/include/nitro/os/systemWork.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_OS_SYSTEMWORK_H_ -#define NITRO_OS_SYSTEMWORK_H_ - -#include -#include - -#endif //NITRO_OS_SYSTEMWORK_H_ diff --git a/lib/include/nitro/os/tcm.h b/lib/include/nitro/os/tcm.h deleted file mode 100644 index be3c91b6..00000000 --- a/lib/include/nitro/os/tcm.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// Created by red031000 on 2020-05-05. -// - -#ifndef NITRO_OS_TCM_H -#define NITRO_OS_TCM_H - -#include - -u32 OS_GetDTCMAddress(void); - -#endif //NITRO_OS_TCM_H diff --git a/lib/include/nitro/os/terminate_proc.h b/lib/include/nitro/os/terminate_proc.h deleted file mode 100644 index 5d331024..00000000 --- a/lib/include/nitro/os/terminate_proc.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_OS_TERMINATE_PROC_H -#define NITRO_OS_TERMINATE_PROC_H - -void OS_Terminate(void); - -#endif //NITRO_OS_TERMINATE_PROC_H diff --git a/lib/include/nitro/os/thread.h b/lib/include/nitro/os/thread.h deleted file mode 100644 index 85b5c648..00000000 --- a/lib/include/nitro/os/thread.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef NITRO_OS_THREAD_H_ -#define NITRO_OS_THREAD_H_ - -#include -#include - -#define SDK_THREAD_INFINITY - -s32 OSi_GetUnusedThreadId(void); -OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue); -OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread); -OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue); -void OSi_InsertThreadToList(OSThread *thread); -void OSi_RemoveThreadFromList(OSThread *thread); -void OSi_RescheduleThread(void); -void OS_InitThread(void); -BOOL OS_IsThreadAvailable(void); -void OS_CreateThread(OSThread *thread, void (*func) (void *), void *arg, void *stack, u32 stackSize, u32 prio); -void OS_ExitThread(void); -void OS_DestroyThread(OSThread *thread); -void OS_KillThread(OSThread *thread, void *arg); -void OS_KillThreadWithPriority(OSThread *thread, void *arg, u32 prio); -void OSi_CancelThreadAlarmForSleep(OSThread *thread); -void OS_JoinThread(OSThread *thread); -BOOL OS_IsThreadTerminated(const OSThread *thread); -void OS_SleepThread(OSThreadQueue *queue); -void OS_WakeupThread(OSThreadQueue *queue); -void OS_WakeupThreadDirect(OSThread *thread); -OSThread *OS_SelectThread(void); -void OS_RescheduleThread(void); -void OS_YieldThread(void); -BOOL OS_SetThreadPriority(OSThread *thread, u32 prio); -u32 OS_GetThreadPriority(const OSThread *thread); -void OS_Sleep(u32 msec); -OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback); -u32 OS_DisableScheduler(void); -u32 OS_EnableScheduler(void); -void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor); -void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread); - -#endif //NITRO_OS_THREAD_H_ diff --git a/lib/include/nitro/os/tick.h b/lib/include/nitro/os/tick.h deleted file mode 100644 index 66f1968e..00000000 --- a/lib/include/nitro/os/tick.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NITRO_OS_TICK_H -#define NITRO_OS_TICK_H - -#include - -void OS_InitTick(void); -BOOL OS_IsTickAvailable(void); -void OSi_CountUpTick(void); -OSTick OS_GetTick(void); -u16 OS_GetTickLo(void); -void OS_SetTick(OSTick tick); - -extern vu64 OSi_TickCounter; - -#endif //NITRO_OS_TICK_H diff --git a/lib/include/nitro/os/timer.h b/lib/include/nitro/os/timer.h deleted file mode 100644 index 456f32ec..00000000 --- a/lib/include/nitro/os/timer.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NITRO_OS_TIMER_H -#define NITRO_OS_TIMER_H - -#include -#include - -void OSi_SetTimerReserved(s32 timerNum); - -#endif //NITRO_OS_TIMER_H diff --git a/lib/include/nitro/os/valarm.h b/lib/include/nitro/os/valarm.h deleted file mode 100644 index 2b7b8e3a..00000000 --- a/lib/include/nitro/os/valarm.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef NITRO_OS_VALARM_H_ -#define NITRO_OS_VALARM_H_ - -typedef void (*OSVAlarmHandler)(void *); - -typedef struct OSiVAlarm OSVAlarm; - -struct OSiVAlarm { - OSVAlarmHandler handler; - void *arg; - u32 tag; - u32 frame; - s16 fire; - s16 delay; - OSVAlarm *prev; - OSVAlarm *next; - BOOL period; - BOOL finish; - BOOL canceled; -}; - -void OS_InitVAlarm(void); -BOOL OS_IsVAlarmAvailable(void); -void OSi_InsertVAlarm(OSVAlarm *alarm); -void OSi_DetachVAlarm(OSVAlarm *alarm); -void OS_CreateVAlarm(OSVAlarm *alarm); -void OS_SetVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg); -void OS_SetPeriodicVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg); -void OS_SetVAlarmTag(OSVAlarm *alarm, u32 tag); -void OS_CancelVAlarm(OSVAlarm *alarm); -void OS_CancelVAlarms(u32 tag); - -#endif //NITRO_OS_VALARM_H_ diff --git a/lib/include/nitro/pad.h b/lib/include/nitro/pad.h deleted file mode 100644 index af110259..00000000 --- a/lib/include/nitro/pad.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NITRO_PAD_H_ -#define NITRO_PAD_H_ - -#include -#ifdef SDK_ARM7 -#include -#endif - -#endif //NITRO_PAD_H_ diff --git a/lib/include/nitro/pad/ARM7/xyButton.h b/lib/include/nitro/pad/ARM7/xyButton.h deleted file mode 100644 index 9bd59a55..00000000 --- a/lib/include/nitro/pad/ARM7/xyButton.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NITRO_PAD_XYBUTTON_H_ -#define NITRO_PAD_XYBUTTON_H_ - -extern BOOL PADi_XYButtonAvailable; -BOOL PAD_InitXYButton(void); - -#endif //NITRO_PAD_XYBUTTON_H_ diff --git a/lib/include/nitro/pad/common/pad.h b/lib/include/nitro/pad/common/pad.h deleted file mode 100644 index e375be9a..00000000 --- a/lib/include/nitro/pad/common/pad.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef NITRO_PAD_PAD_H_ -#define NITRO_PAD_PAD_H_ - -#include - -#define PAD_PLUS_KEY_MASK 0x00f0 -#define PAD_BUTTON_MASK 0x2f0f -#define PAD_DEBUG_BUTTON_MASK 0x2000 -#define PAD_ALL_MASK 0x2fff -#define PAD_RCNTPORT_MASK 0x2c00 -#define PAD_KEYPORT_MASK 0x03ff - -#define PAD_DETECT_FOLD_MASK 0x8000 - -#define PAD_BUTTON_A 0x0001 -#define PAD_BUTTON_B 0x0002 -#define PAD_BUTTON_SELECT 0x0004 -#define PAD_BUTTON_START 0x0008 -#define PAD_KEY_RIGHT 0x0010 -#define PAD_KEY_LEFT 0x0020 -#define PAD_KEY_UP 0x0040 -#define PAD_KEY_DOWN 0x0080 -#define PAD_BUTTON_R 0x0100 -#define PAD_BUTTON_L 0x0200 -#define PAD_BUTTON_X 0x0400 -#define PAD_BUTTON_Y 0x0800 -#define PAD_BUTTON_DEBUG 0x2000 - -static inline u16 PAD_Read(void) { - return (u16)(((reg_PAD_KEYINPUT | *(vu16 *)HW_BUTTON_XY_BUF) ^ - (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK)) & (PAD_PLUS_KEY_MASK | PAD_BUTTON_MASK)); -} - -static inline BOOL PAD_DetectFold(void) { - return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15); -} - -#endif //NITRO_PAD_PAD_H_ diff --git a/lib/include/nitro/pxi.h b/lib/include/nitro/pxi.h deleted file mode 100644 index 8c494087..00000000 --- a/lib/include/nitro/pxi.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_PXI_H_ -#define NITRO_PXI_H_ - -void PXI_Init(void); - -#endif //NITRO_PXI_H_ diff --git a/lib/include/nitro/pxi/fifo.h b/lib/include/nitro/pxi/fifo.h deleted file mode 100644 index e8e35ea9..00000000 --- a/lib/include/nitro/pxi/fifo.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef NITRO_PXI_FIFO_H_ -#define NITRO_PXI_FIFO_H_ - -#include - -typedef enum -{ - PXI_FIFO_SUCCESS = 0, - PXI_FIFO_FAIL_SEND_ERR = -1, - PXI_FIFO_FAIL_SEND_FULL = -2, - PXI_FIFO_FAIL_RECV_ERR = -3, - PXI_FIFO_FAIL_RECV_EMPTY = -4, - PXI_FIFO_NO_CALLBACK_ENTRY = -5 -} PXIFifoStatus; - -typedef void (*PXIFifoCallback) (PXIFifoTag tag, u32 data, BOOL err); - -typedef union -{ - struct - { - u32 tag:5; - u32 err:1; - u32 data:26; - } e; - u32 raw; -} PXIFifoMessage; - -void PXI_InitFifo(void); -void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback); -BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc); -s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err); -void PXIi_HandlerRecvFifoNotEmpty(void); - -#endif //NITRO_PXI_FIFO_H_ diff --git a/lib/include/nitro/pxi/fifo_shared.h b/lib/include/nitro/pxi/fifo_shared.h deleted file mode 100644 index b8e457b2..00000000 --- a/lib/include/nitro/pxi/fifo_shared.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * NOTE: - * This file is shared between ARM9 and ARM7 - * DO NOT PUT PROC SPECIFIC CODE IN HERE - * Thank You! - */ - -/* - * DO NOT INCLUDE THIS FILE DIRECTLY - * Include PXI_fifo.h from the specific proc's lib - */ - -#ifndef NITRO_PXI_FIFO_SHARED_H_ -#define NITRO_PXI_FIFO_SHARED_H_ - -typedef enum -{ - PXI_PROC_ARM9 = 0, - PXI_PROC_ARM7 = 1 -} PXIProc; - -typedef enum { - PXI_FIFO_TAG_EX = 0, // Extension format - PXI_FIFO_TAG_USER_0, // for application programmer, use it in free - PXI_FIFO_TAG_USER_1, // for application programmer, use it in free - PXI_FIFO_TAG_SYSTEM, // SDK inner usage - PXI_FIFO_TAG_NVRAM, // NVRAM - PXI_FIFO_TAG_RTC, // RTC - PXI_FIFO_TAG_TOUCHPANEL, // Touch Panel - PXI_FIFO_TAG_SOUND, // Sound - PXI_FIFO_TAG_PM, // Power Management - PXI_FIFO_TAG_MIC, // Microphone - PXI_FIFO_TAG_WM, // Wireless Manager - PXI_FIFO_TAG_FS, // File System - PXI_FIFO_TAG_OS, // OS - PXI_FIFO_TAG_CTRDG, // Cartridge - PXI_FIFO_TAG_CARD, // Card - PXI_FIFO_TAG_WVR, // Control driving wireless library - PXI_FIFO_TAG_CTRDG_Ex, // Cartridge Ex - PXI_MAX_FIFO_TAG = 32 // MAX FIFO TAG -} PXIFifoTag; - -#endif //NITRO_PXI_FIFO_SHARED_H_ diff --git a/lib/include/nitro/rtc.h b/lib/include/nitro/rtc.h deleted file mode 100644 index 0a90f41a..00000000 --- a/lib/include/nitro/rtc.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NITRO_RTC_H_ -#define NITRO_RTC_H_ - -#ifdef SDK_ARM9 -#include -#include -#endif //SDK_ARM9 - -#endif //NITRO_RTC_H_ diff --git a/lib/include/nitro/rtc/ARM9/api.h b/lib/include/nitro/rtc/ARM9/api.h deleted file mode 100644 index 4dd074ed..00000000 --- a/lib/include/nitro/rtc/ARM9/api.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef NITRO_RTC_API_H_ -#define NITRO_RTC_API_H_ - -typedef enum RTCWeek { - RTC_WEEK_SUNDAY = 0, - RTC_WEEK_MONDAY, - RTC_WEEK_TUESDAY, - RTC_WEEK_WEDNESDAY, - RTC_WEEK_THURSDAY, - RTC_WEEK_FRIDAY, - RTC_WEEK_SATURDAY, - RTC_WEEK_MAX -} RTCWeek; - -typedef enum RTCResult -{ - RTC_RESULT_SUCCESS = 0, - RTC_RESULT_BUSY, - RTC_RESULT_ILLEGAL_PARAMETER, - RTC_RESULT_SEND_ERROR, - RTC_RESULT_INVALID_COMMAND, - RTC_RESULT_ILLEGAL_STATUS, - RTC_RESULT_FATAL_ERROR, - RTC_RESULT_MAX -} RTCResult; - -typedef struct RTCDate { - u32 year; - u32 month; - u32 day; - RTCWeek week; -} RTCDate; - -typedef struct RTCTime { - u32 hour; - u32 minute; - u32 second; -} RTCTime; - -typedef void (*RTCCallback)(RTCResult result, void *arg); - -void RTC_Init(void); -RTCResult RTC_GetDateTimeAsync(RTCDate *date, RTCTime *time, RTCCallback callback, void *arg); - -#endif //NITRO_RTC_API_H_ diff --git a/lib/include/nitro/rtc/ARM9/convert.h b/lib/include/nitro/rtc/ARM9/convert.h deleted file mode 100644 index 55a4cb7b..00000000 --- a/lib/include/nitro/rtc/ARM9/convert.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NITRO_RTC_CONVERT_H_ -#define NITRO_RTC_CONVERT_H_ - -s64 RTC_ConvertDateTimeToSecond(const RTCDate *date, const RTCTime *time); -s32 RTC_ConvertDateToDay(const RTCDate *date); -void RTC_ConvertSecondToDateTime(RTCDate *date, RTCTime *time, s64 sec); - -#endif //NITRO_RTC_CONVERT_H_ diff --git a/lib/include/nitro/section.h b/lib/include/nitro/section.h deleted file mode 100644 index d3318a46..00000000 --- a/lib/include/nitro/section.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NITRO_SECTION_H_ -#define NITRO_SECTION_H_ - -#ifdef SDK_ARM9 -#pragma define_section ITCM ".itcm" ".itcm.bss" abs32 RWX -#pragma define_section DTCM ".dtcm" ".dtcm.bss" abs32 RWX -#else -#pragma define_section WRAM ".wram" ".wram.bss" abs32 RWX -#endif - -#pragma define_section PARENT ".parent" abs32 RWX -#pragma define_section VERSION ".version" abs32 RWX - -#endif //NITRO_SECTION_H_ diff --git a/lib/include/nitro/snd.h b/lib/include/nitro/snd.h deleted file mode 100644 index cc7bdb1a..00000000 --- a/lib/include/nitro/snd.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NITRO_SND_H_ -#define NITRO_SND_H_ - -#include -#include -#include -#include -#include - -#endif //NITRO_SND_H_ diff --git a/lib/include/nitro/snd/common/channel.h b/lib/include/nitro/snd/common/channel.h deleted file mode 100644 index c7987fd8..00000000 --- a/lib/include/nitro/snd/common/channel.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_SND_CHANNEL_H_ -#define NITRO_SND_CHANNEL_H_ - -#define SND_CHANNEL_NUM 16 - -#endif //NITRO_SND_CHANNEL_H_ diff --git a/lib/include/nitro/snd/common/data.h b/lib/include/nitro/snd/common/data.h deleted file mode 100644 index 60404fc7..00000000 --- a/lib/include/nitro/snd/common/data.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NITRO_SND_DATA_H_ -#define NITRO_SND_DATA_H_ - -typedef struct SNDBinaryFileHeader { - char signature[4]; - u16 byteOrder; - u16 version; - u32 fileSize; - u16 headerSize; - u16 dataBlocks; -} SNDBinaryFileHeader; - -typedef struct SNDBinaryBlockHeader { - u32 kind; - u32 size; -} SNDBinaryBlockHeader; - -#endif //NITRO_SND_DATA_H_ diff --git a/lib/include/nitro/snd/common/exchannel.h b/lib/include/nitro/snd/common/exchannel.h deleted file mode 100644 index 3c8ee664..00000000 --- a/lib/include/nitro/snd/common/exchannel.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NITRO_SND_EXCHANNEL_H_ -#define NITRO_SND_EXCHANNEL_H_ - -typedef enum SNDEnvStatus { - SND_ENV_ATTACK, - SND_ENV_DECAY, - SND_ENV_SUSTAIN, - SND_ENV_RELEASE -} SNDEnvStatus; - -#endif //NITRO_SND_EXCHANNEL_H_ diff --git a/lib/include/nitro/snd/common/global.h b/lib/include/nitro/snd/common/global.h deleted file mode 100644 index 97959750..00000000 --- a/lib/include/nitro/snd/common/global.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_SND_GLOBAL_H_ -#define NITRO_SND_GLOBAL_H_ - -void SND_Shutdown(void); - -#endif //NITRO_SND_GLOBAL_H_ diff --git a/lib/include/nitro/snd/common/work.h b/lib/include/nitro/snd/common/work.h deleted file mode 100644 index 462ddb13..00000000 --- a/lib/include/nitro/snd/common/work.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NITRO_SND_WORK_H_ -#define NITRO_SND_WORK_H_ - -typedef struct SNDChannelInfo { - BOOL activeFlag: 1; - BOOL lockFlag: 1; - u16 volume; - u8 pan; - u8 pad_; - SNDEnvStatus envStatus; -} SNDChannelInfo; - -typedef struct SNDTrackInfo { - u16 prgNo; - u8 volume; - u8 volume2; - s8 pitchBend; - u8 bendRange; - u8 pan; - s8 transpose; - u8 pad_; - u8 chCount; - u8 channel[SND_CHANNEL_NUM]; -} SNDTrackInfo; - -#endif //NITRO_SND_WORK_H_ diff --git a/lib/include/nitro/spi.h b/lib/include/nitro/spi.h deleted file mode 100644 index 3dfa4712..00000000 --- a/lib/include/nitro/spi.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NITRO_SPI_H_ -#define NITRO_SPI_H_ - -#include -#include -#ifdef SDK_ARM9 -#include -#include -#include -#endif //SDK_ARM9 - -#endif //NITRO_SPI_H_ diff --git a/lib/include/nitro/spi/ARM9/mic.h b/lib/include/nitro/spi/ARM9/mic.h deleted file mode 100644 index d9977b39..00000000 --- a/lib/include/nitro/spi/ARM9/mic.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef NITRO_SPI_ARM9_MIC_H_ -#define NITRO_SPI_ARM9_MIC_H_ - -#include - -typedef enum MICResult { - MIC_RESULT_SUCCESS = 0, - MIC_RESULT_BUSY, - MIC_RESULT_ILLEGAL_PARAMETER, - MIC_RESULT_SEND_ERROR, - MIC_RESULT_INVALID_COMMAND, - MIC_RESULT_ILLEGAL_STATUS, - MIC_RESULT_FATAL_ERROR, - MIC_RESULT_MAX -} MICResult; - -typedef enum MICSamplingType { - MIC_SAMPLING_TYPE_8BIT = 0, - MIC_SAMPLING_TYPE_12BIT, - MIC_SAMPLING_TYPE_SIGNED_8BIT, - MIC_SAMPLING_TYPE_SIGNED_12BIT, - MIC_SAMPLING_TYPE_12BIT_FILTER_OFF, - MIC_SAMPLING_TYPE_SIGNED_12BIT_FILTER_OFF, - MIC_SAMPLING_TYPE_MAX -} MICSamplingType; - -typedef enum MICSamplingRate { - MIC_SAMPLING_RATE_8K = (HW_CPU_CLOCK_ARM7 / 8000), - MIC_SAMPLING_RATE_11K = (HW_CPU_CLOCK_ARM7 / 11025), - MIC_SAMPLING_RATE_16K = (HW_CPU_CLOCK_ARM7 / 16000), - MIC_SAMPLING_RATE_22K = (HW_CPU_CLOCK_ARM7 / 22050), - MIC_SAMPLING_RATE_32K = (HW_CPU_CLOCK_ARM7 / 32000), - MIC_SAMPLING_RATE_LIMIT = 1024 -} MICSamplingRate; - -typedef void (*MICCallback)(MICResult result, void *arg); - -typedef struct MICAutoParam { - MICSamplingType type; - void *buffer; - u32 size; - u32 rate; - BOOL loop_enable; - MICCallback full_callback; - void *full_arg; -} MICAutoParam; - -void MIC_Init(void); - -#endif //NITRO_SPI_ARM9_MIC_H_ diff --git a/lib/include/nitro/spi/ARM9/pm.h b/lib/include/nitro/spi/ARM9/pm.h deleted file mode 100644 index f58914d2..00000000 --- a/lib/include/nitro/spi/ARM9/pm.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef NITRO_SPI_ARM9_PM_H_ -#define NITRO_SPI_ARM9_PM_H_ - -typedef enum { - PM_BACKLIGHT_OFF = 0, - PM_BACKLIGHT_ON = 1 -} PMBackLightSwitch; - -typedef enum { - PM_AMP_OFF = 0, - PM_AMP_ON = 1 -} PMAmpSwitch; - -typedef enum { - PM_AMPGAIN_20 = 0, - PM_AMPGAIN_40 = 1, - PM_AMPGAIN_80 = 2, - PM_AMPGAIN_160 = 3, - PM_AMPGAIN_DEFAULT = PM_AMPGAIN_40 -} PMAmpGain; - -typedef enum { - PM_LCD_TOP = 0, - PM_LCD_BOTTOM = 1, - PM_LCD_ALL = 2 -} PMLCDTarget; - - -void PM_Init(void); -u32 PM_SetAmp(PMAmpSwitch sw); -u32 PM_SetAmpGain(PMAmpGain gain); -void PM_GetBackLight(PMBackLightSwitch *top, PMBackLightSwitch *bottom); -void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern); -u32 PM_ForceToPowerOff(void); -u32 PM_SetBackLight(PMLCDTarget target, PMBackLightSwitch status); - -#endif //NITRO_SPI_ARM9_PM_H_ diff --git a/lib/include/nitro/spi/ARM9/tp.h b/lib/include/nitro/spi/ARM9/tp.h deleted file mode 100644 index 4b475394..00000000 --- a/lib/include/nitro/spi/ARM9/tp.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef NITRO_SPI_ARM9_TP_H -#define NITRO_SPI_ARM9_TP_H - -#define TP_TOUCH_OFF 0 -#define TP_TOUCH_ON 1 - -#define TP_VALIDITY_VALID 0 -#define TP_VALIDITY_INVALID_X 1 -#define TP_VALIDITY_INVALID_Y 2 -#define TP_VALIDITY_INVALID_XY (TP_VALIDITY_INVALID_X | TP_VALIDITY_INVALID_Y) - -typedef struct { - u16 x; - u16 y; - u16 touch; - u16 validity; -} TPData; - -typedef struct NvTpData { - s16 x0; - s16 y0; - s16 xDotSize; - s16 yDotSize; -} TPCalibrateParam; - -void TP_Init(void); -void TP_SetCalibrateParam(const TPCalibrateParam *param); -BOOL TP_GetUserInfo(TPCalibrateParam *param); -void TP_RequestSamplingAsync(void); -u32 TP_WaitRawResult(TPData *result); -void TP_GetLatestRawPointInAuto(TPData *result); -void TP_GetCalibratedPoint(TPData *calib, const TPData *raw); - -static inline u32 TP_RequestRawSampling(TPData *result) { - TP_RequestSamplingAsync(); - return TP_WaitRawResult(result); -} - -#endif //NITRO_SPI_ARM9_TP_H diff --git a/lib/include/nitro/spi/common/pm_common.h b/lib/include/nitro/spi/common/pm_common.h deleted file mode 100644 index b328e2e8..00000000 --- a/lib/include/nitro/spi/common/pm_common.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NITRO_SPI_COMMON_PM_COMMON_H_ -#define NITRO_SPI_COMMON_PM_COMMON_H_ - -#define PM_TRIGGER_KEY (1 << 0) -#define PM_TRIGGER_RTC_ALARM (1 << 1) -#define PM_TRIGGER_COVER_OPEN (1 << 2) -#define PM_TRIGGER_CARD (1 << 3) -#define PM_TRIGGER_CARTRIDGE (1 << 4) -typedef u32 PMWakeUpTrigger; - -#define PM_PAD_LOGIC_OR (0 << REG_PAD_KEYCNT_LOGIC_SHIFT) -#define PM_PAD_LOGIC_AND (1 << REG_PAD_KEYCNT_LOGIC_SHIFT) -typedef u32 PMLogic; - -#endif //NITRO_SPI_COMMON_PM_COMMON_H_ diff --git a/lib/include/nitro/spi/userInfo.h b/lib/include/nitro/spi/userInfo.h deleted file mode 100644 index 3319ce27..00000000 --- a/lib/include/nitro/spi/userInfo.h +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef NITRO_SPI_USERINFO_H_ -#define NITRO_SPI_USERINFO_H_ - -typedef struct NVRAMConfigDate -{ - u8 month; //0x00 - u8 day; //0x01 -} NVRAMConfigDate; //0x02 - -typedef struct NVRAMConfigNickname -{ - u16 str[10]; //0x00 - u8 length; //0x14 - u8 rsv; //0x15 -} NVRAMConfigNickname; //0x16 - -typedef struct NVRAMConfigComment -{ - u16 str[26]; //0x00 - u8 length; //0x34 - u8 rsv; //0x35 -} NVRAMConfigComment; //0x36 - -typedef struct NVRAMConfigOwnerInfo -{ - u8 favouriteColour:4; //0x00 (0-3) - u8 rsv:4; //0x00 (4-7) - NVRAMConfigDate birthday; //0x01 - u8 pad; //0x03 - NVRAMConfigNickname nickname; //0x04 - NVRAMConfigComment comment; //0x1a -} NVRAMConfigOwnerInfo; //0x50 - -typedef struct NVRAMConfigAlarm -{ - u8 hour; //0x00 - u8 minute; //0x01 - u8 second; //0x02 - u8 pad; //0x03 - u16 enableWeek:7; //0x04 (0-6) - u16 alarmOn:1; //0x04 (7) - u16 rsv:8; //0x04 (8-15) -} NVRAMConfigAlarm; //0x06 - -typedef struct NVRAMConfigTpCalibData -{ - u16 raw_x1; //0x00 - u16 raw_y1; //0x02 - u8 dx1; //0x04 - u8 dy1; //0x05 - u16 raw_x2; //0x06 - u16 raw_y2; //0x08 - u8 dx2; //0x0a - u8 dy2; //0x0b -} NVRAMConfigTpCalibData; //0x0c - -typedef struct NVRAMConfigOption -{ - u16 language:3; //0x00 (0-2) - u16 agbLcd:1; //0x00 (3) - u16 detectPullOutCardFlag:1; //0x00 (4) - u16 detectPullOutCtrdgFlag:1; //0x00 (5) - u16 autoBootFlag:1; //0x00 (6) - u16 rsv:4; //0x00 (7-10) - u16 input_favouriteColour:1; //0x00 (11) - u16 input_tp:1; //0x00 (12) - u16 input_language:1; //0x00 (13) - u16 input_rtc:1; //0x00 (14) - u16 input_nickname:1; //0x00 (15) - u8 timeZone; //0x02 - u8 rtcClockAdjust; //0x03 - s64 rtcOffset; //0x04 -} NVRAMConfigOption; //0x0c - -typedef struct NVRAMConfigData -{ - u8 version; //0x00 - u8 pad; //0x01 - NVRAMConfigOwnerInfo owner; //0x02 - NVRAMConfigAlarm alarm; //0x52 - NVRAMConfigTpCalibData tp; //0x58 - NVRAMConfigOption option; //0x64 -} NVRAMConfigData; //0x70 - -typedef struct NVRAMConfig -{ - NVRAMConfigData ncd; //0x00 - u16 saveCount; //0x70 - u16 crc16; //0x72 -} NVRAMConfig; //0x74 - -#endif //NITRO_SPI_USERINFO_H_ diff --git a/lib/include/nitro/std.h b/lib/include/nitro/std.h deleted file mode 100644 index 4ad59b0e..00000000 --- a/lib/include/nitro/std.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NITRO_STD_H_ -#define NITRO_STD_H_ - -#include - -#endif //NITRO_STD_H_ diff --git a/lib/include/nitro/std/string.h b/lib/include/nitro/std/string.h deleted file mode 100644 index b7db894f..00000000 --- a/lib/include/nitro/std/string.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef NITRO_STD_STRING_H_ -#define NITRO_STD_STRING_H_ - -#include - -int STD_TVSNPrintf(char * dest, u32 len, const char * format, va_list va); - -#endif //NITRO_STD_STRING_H_ diff --git a/lib/include/nitro/types.h b/lib/include/nitro/types.h deleted file mode 100644 index a8211470..00000000 --- a/lib/include/nitro/types.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef NITRO_TYPES_H_ -#define NITRO_TYPES_H_ - -#ifndef SDK_ASM -typedef unsigned char u8; -typedef unsigned short int u16; -typedef unsigned long u32; - -typedef signed char s8; -typedef signed short int s16; -typedef signed long s32; - -typedef unsigned long long int u64; -typedef signed long long int s64; - -typedef volatile u8 vu8; -typedef volatile u16 vu16; -typedef volatile u32 vu32; -typedef volatile u64 vu64; - -typedef volatile s8 vs8; -typedef volatile s16 vs16; -typedef volatile s32 vs32; -typedef volatile s64 vs64; - -typedef float f32; -typedef volatile f32 vf32; - -typedef u8 REGType8; -typedef u16 REGType16; -typedef u32 REGType32; -typedef u64 REGType64; - -typedef vu8 REGType8v; -typedef vu16 REGType16v; -typedef vu32 REGType32v; -typedef vu64 REGType64v; - -typedef int BOOL; -#endif - -#define TRUE 1 -#define FALSE 0 - -#ifndef SDK_ASM -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else // __cplusplus -#define NULL ((void *)0) -#endif // __cplusplus -#endif - -#define SDK_FORCE_EXPORT __declspec(force_export) -#endif //SDK_ASM -#endif //NITRO_TYPES_H_ diff --git a/lib/include/nitro/wram_begin.h b/lib/include/nitro/wram_begin.h deleted file mode 100644 index 175389d8..00000000 --- a/lib/include/nitro/wram_begin.h +++ /dev/null @@ -1,4 +0,0 @@ -#include -#ifdef SDK_ARM7 -#pragma section WRAM begin -#endif //SDK_ARM7 diff --git a/lib/include/nitro/wram_end.h b/lib/include/nitro/wram_end.h deleted file mode 100644 index 6a95467a..00000000 --- a/lib/include/nitro/wram_end.h +++ /dev/null @@ -1,4 +0,0 @@ -#include -#ifdef SDK_ARM7 -#pragma section WRAM end -#endif //SDK_ARM7 diff --git a/lib/include/nnsys.h b/lib/include/nnsys.h deleted file mode 100644 index ee210c14..00000000 --- a/lib/include/nnsys.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NNSYS_H_ -#define NNSYS_H_ - -#include -#include -#include -#include -#include - -#endif //NNSYS_H_ diff --git a/lib/include/nnsys/fnd.h b/lib/include/nnsys/fnd.h deleted file mode 100644 index e0190779..00000000 --- a/lib/include/nnsys/fnd.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NNSYS_FND_H_ -#define NNSYS_FND_H_ - -#include -#include -#include -#include - -#endif //NNSYS_FND_H_ diff --git a/lib/include/nnsys/fnd/allocator.h b/lib/include/nnsys/fnd/allocator.h deleted file mode 100644 index d9143b57..00000000 --- a/lib/include/nnsys/fnd/allocator.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSYS_FND_ALLOCATOR_H_ -#define NNSYS_FND_ALLOCATOR_H_ - -#include - -typedef struct NNSFndAllocator NNSFndAllocator; - -typedef void *(*NNSFndFuncAllocatorAlloc)(NNSFndAllocator *pAllocator, u32 size); -typedef void (*NNSFndFuncAllocatorFree)(NNSFndAllocator *pAllocator,void *memBlock); - -typedef struct NNSFndAllocatorFunc NNSFndAllocatorFunc; - -struct NNSFndAllocatorFunc { - NNSFndFuncAllocatorAlloc pfAlloc; - NNSFndFuncAllocatorFree pfFree; -}; - -struct NNSFndAllocator { - NNSFndAllocatorFunc const * pFunc; - void *pHeap; - u32 heapParam1; - u32 heapParam2; -}; - -void NNS_FndInitAllocatorForExpHeap(NNSFndAllocator *pAllocator, NNSFndHeapHandle heap, int alignment); - -#endif //NNSYS_FND_ALLOCATOR_H_ diff --git a/lib/include/nnsys/fnd/expheap.h b/lib/include/nnsys/fnd/expheap.h deleted file mode 100644 index a223bebc..00000000 --- a/lib/include/nnsys/fnd/expheap.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NNSYS_FND_EXPHEAP_H_ -#define NNSYS_FND_EXPHEAP_H_ - -#include - -#define NNS_FndCreateExpHeap(startAddress, size) NNS_FndCreateExpHeapEx(startAddress, size, 0) - -NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u16 optFlag); -void *NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle heap, u32 size, int alignment); -void NNS_FndDestroyExpHeap(NNSFndHeapHandle heap); -void NNS_FndFreeToExpHeap(NNSFndHeapHandle heap, void *memBlock); -u32 NNS_FndGetTotalFreeSizeForExpHeap(NNSFndHeapHandle heap); -u32 NNS_FndGetSizeForMBlockExpHeap(const void *memBlock); -u32 NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size); - -#endif //NNSYS_FND_EXPHEAP_H_ diff --git a/lib/include/nnsys/fnd/heapcommon.h b/lib/include/nnsys/fnd/heapcommon.h deleted file mode 100644 index 232b40b6..00000000 --- a/lib/include/nnsys/fnd/heapcommon.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef NNSYS_FND_HEAPCOMMON_H_ -#define NNSYS_FND_HEAPCOMMON_H_ - -#include - -typedef struct NNSiFndHeapHead NNSiFndHeapHead; - -struct NNSiFndHeapHead -{ - u32 signature; - - NNSFndLink link; - NNSFndList childList; - - void *heapStart; - void *heapEnd; - - u32 attribute; -}; - -typedef NNSiFndHeapHead* NNSFndHeapHandle; - -#endif //NNSYS_FND_HEAPCOMMON_H_ diff --git a/lib/include/nnsys/fnd/list.h b/lib/include/nnsys/fnd/list.h deleted file mode 100644 index bb7c9d3c..00000000 --- a/lib/include/nnsys/fnd/list.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NNSYS_FND_LIST_H_ -#define NNSYS_FND_LIST_H_ - -typedef struct { - void *prevObject; - void *nextObject; - -} NNSFndLink; - -typedef struct { - void *headObject; - void *tailObject; - u16 numObjects; - u16 offset; - -} NNSFndList; - -#endif //NNSYS_FND_LIST_H_ diff --git a/lib/include/nnsys/g2d.h b/lib/include/nnsys/g2d.h deleted file mode 100644 index e027283c..00000000 --- a/lib/include/nnsys/g2d.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef NNSYS_G2D_H_ -#define NNSYS_G2D_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif //NNSYS_G2D_H_ diff --git a/lib/include/nnsys/g2d/fmt/g2d_Anim_data.h b/lib/include/nnsys/g2d/fmt/g2d_Anim_data.h deleted file mode 100644 index 60d8d6e7..00000000 --- a/lib/include/nnsys/g2d/fmt/g2d_Anim_data.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef NNSYS_G2D_FMT_G2D_ANIM_DATA_H_ -#define NNSYS_G2D_FMT_G2D_ANIM_DATA_H_ - -typedef enum NNSG2dAnimationPlayMode { - NNS_G2D_ANIMATIONPLAYMODE_INVALID = 0x0, - NNS_G2D_ANIMATIONPLAYMODE_FORWARD, - NNS_G2D_ANIMATIONPLAYMODE_FORWARD_LOOP, - NNS_G2D_ANIMATIONPLAYMODE_REVERSE, - NNS_G2D_ANIMATIONPLAYMODE_REVERSE_LOOP, - NNS_G2D_ANIMATIONPLAYMODE_MAX -} NNSG2dAnimationPlayMode; - -typedef struct NNSG2dAnimFrameData { - void* pContent; - u16 frames; - u16 pad16; - -} NNSG2dAnimFrameData; - -typedef struct NNSG2dAnimSequenceData { - u16 numFrames; - u16 loopStartFrameIdx; - u32 animType; - NNSG2dAnimationPlayMode playMode; - NNSG2dAnimFrameData *pAnmFrameArray; - -} NNSG2dAnimSequenceData; - -typedef struct NNSG2dAnimBankData { - u16 numSequences; - u16 numTotalFrames; - NNSG2dAnimSequenceData* pSequenceArrayHead; - NNSG2dAnimFrameData* pFrameArrayHead; - void* pAnimContents; - void* pStringBank; - void* pExtendedData; -} NNSG2dAnimBankData; - -#endif //NNSYS_G2D_FMT_G2D_ANIM_DATA_H_ diff --git a/lib/include/nnsys/g2d/fmt/g2d_Cell_data.h b/lib/include/nnsys/g2d/fmt/g2d_Cell_data.h deleted file mode 100644 index 0cdff439..00000000 --- a/lib/include/nnsys/g2d/fmt/g2d_Cell_data.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef NNSYS_G2D_FMT_G2D_CELL_DATA_H_ -#define NNSYS_G2D_FMT_G2D_CELL_DATA_H_ - -typedef struct NNSG2dCellOAMAttrData { - u16 attr0; - u16 attr1; - u16 attr2; - -} NNSG2dCellOAMAttrData; - -typedef struct NNSG2dCellData { - u16 numOAMAttrs; - u16 cellAttr; - NNSG2dCellOAMAttrData* pOamAttrArray; -} NNSG2dCellData; - -typedef struct NNSG2dCellVramTransferData { - u32 srcDataOffset; - u32 szByte; - -} NNSG2dCellVramTransferData; - -typedef struct NNSG2dVramTransferData { - u32 szByteMax; - NNSG2dCellVramTransferData* pCellTransferDataArray; - -} NNSG2dVramTransferData; - -typedef struct NNSG2dCellDataBank { - u16 numCells; - u16 cellBankAttr; - NNSG2dCellData* pCellDataArrayHead; - NNSG2dCharacterDataMapingType mappingMode; - NNSG2dVramTransferData* pVramTransferData; - void* pStringBank; - void* pExtendedData; -} NNSG2dCellDataBank; - -#endif //NNSYS_G2D_FMT_G2D_CELL_DATA_H_ diff --git a/lib/include/nnsys/g2d/fmt/g2d_Character_data.h b/lib/include/nnsys/g2d/fmt/g2d_Character_data.h deleted file mode 100644 index 33bc315d..00000000 --- a/lib/include/nnsys/g2d/fmt/g2d_Character_data.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef NNSYS_G2D_FMT_G2D_CHARACTER_DATA_H_ -#define NNSYS_G2D_FMT_G2D_CHARACTER_DATA_H_ - -typedef enum NNSG2dCharacterDataMapingType { - NNS_G2D_CHARACTERMAPING_1D_32, - NNS_G2D_CHARACTERMAPING_1D_64, - NNS_G2D_CHARACTERMAPING_1D_128, - NNS_G2D_CHARACTERMAPING_1D_256, - NNS_G2D_CHARACTERMAPING_2D, - NNS_G2D_CHARACTERMAPING_MAX -} NNSG2dCharacterDataMapingType; - -typedef struct NNSG2dCharacterData { - u16 H; - u16 W; - GXTexFmt pixelFmt; - GXOBJVRamModeChar mapingType; - u32 characterFmt; - u32 szByte; - void* pRawData; -} NNSG2dCharacterData; - -typedef struct NNSG2dPaletteCompressInfo { - u16 numPalette; - u16 pad16; - void* pPlttIdxTbl; -} NNSG2dPaletteCompressInfo; - -typedef struct NNSG2dPaletteData { - GXTexFmt fmt; - BOOL bExtendedPlt; - u32 szByte; - void* pRawData; -} NNSG2dPaletteData; - -#endif //NNSYS_G2D_FMT_G2D_CHARACTER_DATA_H_ diff --git a/lib/include/nnsys/g2d/fmt/g2d_MultiCell_data.h b/lib/include/nnsys/g2d/fmt/g2d_MultiCell_data.h deleted file mode 100644 index 18d8f607..00000000 --- a/lib/include/nnsys/g2d/fmt/g2d_MultiCell_data.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef NNSYS_G2D_FMT_G2D_MULTICELL_DATA_H_ -#define NNSYS_G2D_FMT_G2D_MULTICELL_DATA_H_ - -typedef struct NNSG2dMultiCellHierarchyData { - u16 animSequenceIdx; - s16 posX; - s16 posY; - u16 nodeAttr; -} NNSG2dMultiCellHierarchyData; - -typedef struct NNSG2dMultiCellData { - u16 numNodes; - u16 numCellAnim; - NNSG2dMultiCellHierarchyData* pHierDataArray; -} NNSG2dMultiCellData; - -typedef struct NNSG2dMultiCellDataBank { - u16 numMultiCellData; - u16 pad16; - NNSG2dMultiCellData* pMultiCellDataArray; - NNSG2dMultiCellHierarchyData* pHierarchyDataArray; - void* pStringBank; - void* pExtendedData; -} NNSG2dMultiCellDataBank; - -#endif //NNSYS_G2D_FMT_G2D_MULTICELL_DATA_H_ diff --git a/lib/include/nnsys/g2d/fmt/g2d_Screen_data.h b/lib/include/nnsys/g2d/fmt/g2d_Screen_data.h deleted file mode 100644 index b4aa2c71..00000000 --- a/lib/include/nnsys/g2d/fmt/g2d_Screen_data.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NNSYS_G2D_FMT_G2D_SCREEN_DATA_H_ -#define NNSYS_G2D_FMT_G2D_SCREEN_DATA_H_ - -typedef struct NNSG2dScreenData { - u16 screenWidth; - u16 screenHeight; - u16 colorMode; - u16 screenFormat; - u32 szByte; - u32 rawData[1]; -} NNSG2dScreenData; - -#endif //NNSYS_G2D_FMT_G2D_SCREEN_DATA_H_ diff --git a/lib/include/nnsys/g2d/g2d_CellAnimation.h b/lib/include/nnsys/g2d/g2d_CellAnimation.h deleted file mode 100644 index 3ffbcdab..00000000 --- a/lib/include/nnsys/g2d/g2d_CellAnimation.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_G2D_CELLANIMATION_H_ -#define NNSYS_G2D_G2D_CELLANIMATION_H_ - -typedef NNSG2dAnimBankData NNSG2dCellAnimBankData; - -#endif //NNSYS_G2D_G2D_CELLANIMATION_H_ diff --git a/lib/include/nnsys/g2d/g2d_Image.h b/lib/include/nnsys/g2d/g2d_Image.h deleted file mode 100644 index 71b0226c..00000000 --- a/lib/include/nnsys/g2d/g2d_Image.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef NNSYS_G2D_G2D_IMAGE_H_ -#define NNSYS_G2D_G2D_IMAGE_H_ - -typedef enum NNS_G2D_VRAM_TYPE { - NNS_G2D_VRAM_TYPE_3DMAIN = 0, - NNS_G2D_VRAM_TYPE_2DMAIN = 1, - NNS_G2D_VRAM_TYPE_2DSUB = 2, - NNS_G2D_VRAM_TYPE_MAX = 3 -} NNS_G2D_VRAM_TYPE; - -typedef struct NNSG2dVRamLocation { - u32 baseAddrOfVram[ NNS_G2D_VRAM_TYPE_MAX ]; -} NNSG2dVRamLocation; - -typedef struct NNSG2dImageAttr { - GXTexSizeS sizeS; - GXTexSizeT sizeT; - GXTexFmt fmt; - BOOL bExtendedPlt; - GXTexPlttColor0 plttUse; - GXOBJVRamModeChar mappingType; -} NNSG2dImageAttr; - -typedef struct NNSG2dImageProxy { - NNSG2dVRamLocation vramLocation; - NNSG2dImageAttr attr; -} NNSG2dImageProxy; - -typedef struct NNSG2dImagePaletteProxy { - GXTexFmt fmt; - BOOL bExtendedPlt; - NNSG2dVRamLocation vramLocation; -} NNSG2dImagePaletteProxy; - -void NNS_G2dLoadPaletteEx(const NNSG2dPaletteData* pSrcData, const NNSG2dPaletteCompressInfo* pCmpInfo, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy* pPltProxy); -void NNS_G2dLoadPalette(const NNSG2dPaletteData* pSrcData, u32 addr, NNS_G2D_VRAM_TYPE type, NNSG2dImagePaletteProxy* pPltProxy); -void NNS_G2dLoadImage1DMapping(const NNSG2dCharacterData* pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy* pImgProxy); -void NNS_G2dLoadImage2DMapping(const NNSG2dCharacterData* pSrcData, u32 baseAddr, NNS_G2D_VRAM_TYPE type, NNSG2dImageProxy* pImgProxy); -u32 NNS_G2dGetImageLocation (const NNSG2dImageProxy* pImg, NNS_G2D_VRAM_TYPE type); -u32 NNS_G2dGetImagePaletteLocation(const NNSG2dImagePaletteProxy* pImg, NNS_G2D_VRAM_TYPE type); - -#endif //NNSYS_G2D_G2D_IMAGE_H_ diff --git a/lib/include/nnsys/g2d/g2d_MultiCellAnimation.h b/lib/include/nnsys/g2d/g2d_MultiCellAnimation.h deleted file mode 100644 index c4779a32..00000000 --- a/lib/include/nnsys/g2d/g2d_MultiCellAnimation.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_G2D_MULTICELLANIMATION_H_ -#define NNSYS_G2D_G2D_MULTICELLANIMATION_H_ - -typedef NNSG2dAnimBankData NNSG2dMultiCellAnimBankData; - -#endif //NNSYS_G2D_G2D_MULTICELLANIMATION_H_ diff --git a/lib/include/nnsys/g2d/g2d_OAM.h b/lib/include/nnsys/g2d/g2d_OAM.h deleted file mode 100644 index 35242de6..00000000 --- a/lib/include/nnsys/g2d/g2d_OAM.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_G2D_OAM_H_ -#define NNSYS_G2D_G2D_OAM_H_ - -void NNS_G2dInitOamManagerModule(); - -#endif //NNSYS_G2D_G2D_OAM_H_ diff --git a/lib/include/nnsys/g2d/g2d_PaletteTable.h b/lib/include/nnsys/g2d/g2d_PaletteTable.h deleted file mode 100644 index c69b6117..00000000 --- a/lib/include/nnsys/g2d/g2d_PaletteTable.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NNSYS_G2D_G2D_PALETTE_TABLE_H_ -#define NNSYS_G2D_G2D_PALETTE_TABLE_H_ - -#define NNS_G2D_NUM_COLOR_PALETTE 16 - -typedef struct NNSG2dPaletteSwapTable { - u16 paletteIndex[NNS_G2D_NUM_COLOR_PALETTE]; -} NNSG2dPaletteSwapTable; - -#endif //NNSYS_G2D_G2D_PALETTE_TABLE_H_ diff --git a/lib/include/nnsys/g2d/g2d_Renderer.h b/lib/include/nnsys/g2d/g2d_Renderer.h deleted file mode 100644 index ca74c7d5..00000000 --- a/lib/include/nnsys/g2d/g2d_Renderer.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef NNSYS_G2D_G2D_RENDERER_H_ -#define NNSYS_G2D_G2D_RENDERER_H_ - -struct NNSG2dRendererInstance; -struct NNSG2dRenderSurface; - -typedef BOOL(*NNSG2dRndCellCullingFunction)(const NNSG2dCellData* pCell, const MtxFx32* pMtx, const NNSG2dViewRect* pViewRec); - -typedef void(*NNSG2dRndDrawCellCallBack)(struct NNSG2dRendererInstance* pRend, struct NNSG2dRenderSurface* pSurface, const NNSG2dCellData* pCell, const MtxFx32* pMtx); - -typedef void(*NNSG2dRndDrawOamCallBack)(struct NNSG2dRendererInstance* pRend, struct NNSG2dRenderSurface* pSurface, const NNSG2dCellData* pCell, u16 oamIdx, const MtxFx32* pMtx); - -typedef struct NNSG2dRenderSurface { - union { - NNSG2dRndCoreSurface coreSurface; - struct { - NNSG2dViewRect viewRect; - BOOL bActive; - NNSG2dSurfaceType type; - NNSG2dRndCoreDrawCellCallBack pBeforeCoreDrawCellBack; - NNSG2dRndCoreDrawCellCallBack pAfterCoreDrawCellBack; - NNSG2dRndCoreDrawOamCallBack pBeforeCoreDrawOamBack; - NNSG2dRndCoreDrawOamCallBack pAfterCoreDrawOamBack; - }; - }; - NNSG2dOamRegisterFunction pFuncOamRegister; - NNSG2dAffineRegisterFunction pFuncOamAffineRegister; - void* pNextSurface; - NNSG2dRndCellCullingFunction pFuncVisibilityCulling; - NNSG2dRndDrawCellCallBack pBeforeDrawCellBackFunc; - NNSG2dRndDrawCellCallBack pAfterDrawCellBackFunc; - NNSG2dRndDrawOamCallBack pBeforeDrawOamBackFunc; - NNSG2dRndDrawOamCallBack pAfterDrawOamBackFunc; -} NNSG2dRenderSurface; - -typedef struct NNSG2dRendererInstance { - NNSG2dRndCoreInstance rendererCore; - NNSG2dRenderSurface* pTargetSurfaceList; - NNSG2dRenderSurface* pCurrentSurface; - const NNSG2dPaletteSwapTable* pPaletteSwapTbl; - u32 opzHint; - fx32 spriteZoffsetStep; - u32 overwriteEnableFlag; - u16 overwritePriority; - u16 overwritePlttNo; - GXOamMode overwriteObjMode; - BOOL overwriteMosaicFlag; - u16 overwritePlttNoOffset; - u16 pad16_; -} NNSG2dRendererInstance; - -#endif //NNSYS_G2D_G2D_RENDERER_H_ diff --git a/lib/include/nnsys/g2d/g2d_RendererCore.h b/lib/include/nnsys/g2d/g2d_RendererCore.h deleted file mode 100644 index 45e8c38d..00000000 --- a/lib/include/nnsys/g2d/g2d_RendererCore.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef NNSYS_G2D_G2D_RENDERERCORE_H_ -#define NNSYS_G2D_G2D_RENDERERCORE_H_ - -#define MtxCache_NOT_AVAILABLE 0xFFFF -#define MtxCache_NOT_AVAILABLE_ForMemFill 0xFFFFFFFF -#define NNS_G2D_NUMBER_OF_2DGRAPHICS_ENGINE 2 -#define NNS_G2D_RNDCORE_INTERNAL_OAMBUFFER_SIZE 128 -#define NNS_G2D_OAMFLIP_PATTERN_NUM 0x04 - -struct NNSG2dRndCoreInstance; - -typedef struct NNSG2dRndCore2DMtxCache { - MtxFx22 m22; - u16 affineIndex[NNS_G2D_OAMFLIP_PATTERN_NUM][NNS_G2D_NUMBER_OF_2DGRAPHICS_ENGINE]; -} NNSG2dRndCore2DMtxCache; - -typedef struct NNSG2dViewRect { - NNSG2dFVec2 posTopLeft; - NNSG2dFVec2 sizeView; -} NNSG2dViewRect; - -typedef enum NNSG2dSurfaceType { - NNS_G2D_SURFACETYPE_MAIN3D = 0x00, - NNS_G2D_SURFACETYPE_MAIN2D = 0x01, - NNS_G2D_SURFACETYPE_SUB2D = 0x02, - NNS_G2D_SURFACETYPE_MAX = 0x03 -} NNSG2dSurfaceType; - -typedef enum NNSG2dRendererAffineTypeOverwiteMode { - NNS_G2D_RND_AFFINE_OVERWRITE_NONE, - NNS_G2D_RND_AFFINE_OVERWRITE_NORMAL, - NNS_G2D_RND_AFFINE_OVERWRITE_DOUBLE -} NNSG2dRendererAffineTypeOverwiteMode; - -typedef void(*NNSG2dRndCoreDrawCellCallBack)(struct NNSG2dRndCoreInstance* pRend, const NNSG2dCellData* pCell); - -typedef void(*NNSG2dRndCoreDrawOamCallBack)(struct NNSG2dRndCoreInstance* pRend, const NNSG2dCellData* pCell, u16 oamIdx); - -typedef BOOL (*NNSG2dOamRegisterFunction) (const GXOamAttr* pOam, u16 affineIndex, BOOL bDoubleAffine); - -typedef u16 (*NNSG2dAffineRegisterFunction) (const MtxFx22* mtx); - -typedef struct NNSG2dRndCoreSurface { - NNSG2dViewRect viewRect; - BOOL bActive; - NNSG2dSurfaceType type; - NNSG2dRndCoreDrawCellCallBack pBeforeDrawCellBackFunc; - NNSG2dRndCoreDrawCellCallBack pAfterDrawCellBackFunc; - NNSG2dRndCoreDrawOamCallBack pBeforeDrawOamBackFunc; - NNSG2dRndCoreDrawOamCallBack pAfterDrawOamBackFunc; -} NNSG2dRndCoreSurface; - -typedef struct NNSG2dRndCoreInstance { - NNSG2dRndCoreSurface* pCurrentTargetSurface; - NNSG2dRendererAffineTypeOverwiteMode affineOverwriteMode; - const struct NNSG2dImageProxy* pImgProxy; - const struct NNSG2dImagePaletteProxy* pPltProxy; - u32 base2DCharOffset; - u32 baseTexAddr3D; - u32 basePltAddr3D; - NNSG2dOamRegisterFunction pFuncOamRegister; - NNSG2dAffineRegisterFunction pFuncOamAffineRegister; - u32 flipFlag; - NNSG2dRndCore2DMtxCache* pCurrentMtxCacheFor2D; - const MtxFx32* pCurrentMxt; - BOOL bDrawEnable; - fx32 zFor3DSoftwareSprite; - GXOamAttr currentOam; - MtxFx43 mtxFor3DGE; -} NNSG2dRndCoreInstance; - -#endif //NNSYS_G2D_G2D_RENDERERCORE_H_ diff --git a/lib/include/nnsys/g2d/g2d_Sprite.h b/lib/include/nnsys/g2d/g2d_Sprite.h deleted file mode 100644 index 1b150146..00000000 --- a/lib/include/nnsys/g2d/g2d_Sprite.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_G2D_SPRITE_H -#define NNSYS_G2D_G2D_SPRITE_H - -void NNS_G2dSetupSoftwareSpriteCamera(void); - -#endif diff --git a/lib/include/nnsys/g2d/g2d_Vec_data.h b/lib/include/nnsys/g2d/g2d_Vec_data.h deleted file mode 100644 index 0109afe9..00000000 --- a/lib/include/nnsys/g2d/g2d_Vec_data.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef NNSYS_G2D_G2D_VEC_DATA_H_ -#define NNSYS_G2D_G2D_VEC_DATA_H_ - -typedef struct NNSG2dFVec2 { - fx32 x; - fx32 y; -} NNSG2dFVec2; - -typedef union { - struct { - fx32 _00, _01; - fx32 _10, _11; - fx32 _20, _21; - }; - fx32 m[3][2]; - fx32 a[6]; -} MtxFx32; - -#endif //NNSYS_G2D_G2D_VEC_DATA_H_ diff --git a/lib/include/nnsys/g2d/load/g2d_NAN_load.h b/lib/include/nnsys/g2d/load/g2d_NAN_load.h deleted file mode 100644 index f59b57da..00000000 --- a/lib/include/nnsys/g2d/load/g2d_NAN_load.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_G2D_LOAD_G2D_NAN_LOAD_H_ -#define NNSYS_G2D_LOAD_G2D_NAN_LOAD_H_ - -BOOL NNS_G2dGetUnpackedAnimBank(void *pNanrFile, NNSG2dAnimBankData **ppAnimBank); -BOOL NNS_G2dGetUnpackedMCAnimBank(void* pNanrFile, NNSG2dAnimBankData** ppAnimBank); - -#endif //NNSYS_G2D_LOAD_G2D_NAN_LOAD_H_ diff --git a/lib/include/nnsys/g2d/load/g2d_NCE_load.h b/lib/include/nnsys/g2d/load/g2d_NCE_load.h deleted file mode 100644 index 05d566cf..00000000 --- a/lib/include/nnsys/g2d/load/g2d_NCE_load.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_LOAD_G2D_NCE_LOAD_H_ -#define NNSYS_G2D_LOAD_G2D_NCE_LOAD_H_ - -BOOL NNS_G2dGetUnpackedCellBank(void *pNcerFile, NNSG2dCellDataBank **ppCellBank); - -#endif //NNSYS_G2D_LOAD_G2D_NCE_LOAD_H_ diff --git a/lib/include/nnsys/g2d/load/g2d_NCG_load.h b/lib/include/nnsys/g2d/load/g2d_NCG_load.h deleted file mode 100644 index a8089ed8..00000000 --- a/lib/include/nnsys/g2d/load/g2d_NCG_load.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_G2D_LOAD_G2D_NCG_LOAD_H_ -#define NNSYS_G2D_LOAD_G2D_NCG_LOAD_H_ - -BOOL NNS_G2dGetUnpackedBGCharacterData(void *pNcgrFile, NNSG2dCharacterData **ppCharData); -BOOL NNS_G2dGetUnpackedCharacterData(void *pNcgrFile, NNSG2dCharacterData **ppCharData); - -#endif //NNSYS_G2D_LOAD_G2D_NCG_LOAD_H_ diff --git a/lib/include/nnsys/g2d/load/g2d_NCL_load.h b/lib/include/nnsys/g2d/load/g2d_NCL_load.h deleted file mode 100644 index 471ae04f..00000000 --- a/lib/include/nnsys/g2d/load/g2d_NCL_load.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_G2D_LOAD_G2D_NCL_LOAD_H_ -#define NNSYS_G2D_LOAD_G2D_NCL_LOAD_H_ - -BOOL NNS_G2dGetUnpackedPaletteData(void *pNclrFile, NNSG2dPaletteData** ppPlttData); -BOOL NNS_G2dGetUnpackedPaletteCompressInfo(void *pNclrFile, NNSG2dPaletteCompressInfo** ppPltCmpInfo); - -#endif //NNSYS_G2D_LOAD_G2D_NCL_LOAD_H_ diff --git a/lib/include/nnsys/g2d/load/g2d_NMC_load.h b/lib/include/nnsys/g2d/load/g2d_NMC_load.h deleted file mode 100644 index 65873703..00000000 --- a/lib/include/nnsys/g2d/load/g2d_NMC_load.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_LOAD_G2D_NMC_LOAD_H_ -#define NNSYS_G2D_LOAD_G2D_NMC_LOAD_H_ - -BOOL NNS_G2dGetUnpackedMultiCellBank (void* pNmcrFile, NNSG2dMultiCellDataBank** ppMCBank); - -#endif //NNSYS_G2D_LOAD_G2D_NMC_LOAD_H_ diff --git a/lib/include/nnsys/g2d/load/g2d_NSC_load.h b/lib/include/nnsys/g2d/load/g2d_NSC_load.h deleted file mode 100644 index 00739f79..00000000 --- a/lib/include/nnsys/g2d/load/g2d_NSC_load.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G2D_LOAD_G2D_NSC_LOAD_H_ -#define NNSYS_G2D_LOAD_G2D_NSC_LOAD_H_ - -BOOL NNS_G2dGetUnpackedScreenData(void* pNscrFile, NNSG2dScreenData** ppScrData); - -#endif //NNSYS_G2D_LOAD_G2D_NSC_LOAD_H_ diff --git a/lib/include/nnsys/g3d.h b/lib/include/nnsys/g3d.h deleted file mode 100644 index 2ed7c5df..00000000 --- a/lib/include/nnsys/g3d.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef NNSYS_G3D_H_ -#define NNSYS_G3D_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif //NNSYS_G3D_H_ diff --git a/lib/include/nnsys/g3d/binres/res_struct.h b/lib/include/nnsys/g3d/binres/res_struct.h deleted file mode 100644 index bd6b2fc4..00000000 --- a/lib/include/nnsys/g3d/binres/res_struct.h +++ /dev/null @@ -1,146 +0,0 @@ -#ifndef NNSYS_G3D_BINRES_RES_STRUCT_H_ -#define NNSYS_G3D_BINRES_RES_STRUCT_H_ - -typedef struct NNSG3dResDataBlockHeader_ { - union { - u32 kind; - char chr[4]; - }; - u32 size; -} NNSG3dResDataBlockHeader; - -typedef struct NNSG3dResTexInfo_ { - NNSGfdTexKey vramKey; - u16 sizeTex; - u16 ofsDict; - u16 flag; - u16 dummy_; - u32 ofsTex; -} NNSG3dResTexInfo; - -typedef struct NNSG3dResTex4x4Info_ { - NNSGfdTexKey vramKey; - u16 sizeTex; - u16 ofsDict; - u16 flag; - u16 dummy_; - u32 ofsTex; - u32 ofsTexPlttIdx; -} NNSG3dResTex4x4Info; - -typedef struct NNSG3dResPlttInfo_ { - NNSGfdTexKey vramKey; - u16 sizePltt; - u16 flag; - u16 ofsDict; - u16 dummy_; - u32 ofsPlttData; -} NNSG3dResPlttInfo; - -typedef struct NNSG3dResMdlInfo_ { - u8 sbcType; - u8 scalingRule; - u8 texMtxMode; - u8 numNode; - u8 numMat; - u8 numShp; - u8 firstUnusedMtxStackID; - u8 dummy_; - fx32 posScale; - fx32 invPosScale; - u16 numVertex; - u16 numPolygon; - u16 numTriangle; - u16 numQuad; - fx16 boxX, boxY, boxZ; - fx16 boxW, boxH, boxD; - fx32 boxPosScale; - fx32 boxInvPosScale; -} NNSG3dResMdlInfo; - -typedef struct NNSG3dResDictTreeNode_ { - u8 refBit; - u8 idxLeft; - u8 idxRight; - u8 idxEntry; -} NNSG3dResDictTreeNode; - -typedef struct NNSG3dResDict_ { - u8 revision; - u8 numEntry; - u16 sizeDictBlk; - u16 dummy_; - u16 ofsEntry; - NNSG3dResDictTreeNode node[1]; -} NNSG3dResDict; - - -#define NNS_G3D_RESNAME_SIZE (16) -#define NNS_G3D_RESNAME_VALSIZE (NNS_G3D_RESNAME_SIZE / sizeof(u32)) -typedef union NNSG3dResName_ { - char name[NNS_G3D_RESNAME_SIZE]; - u32 val[NNS_G3D_RESNAME_VALSIZE]; -} NNSG3dResName; - -typedef struct NNSG3dResNodeInfo_ { - NNSG3dResDict dict; -} NNSG3dResNodeInfo; - -typedef struct NNSG3dResTex_ { - NNSG3dResDataBlockHeader header; - NNSG3dResTexInfo texInfo; - NNSG3dResTex4x4Info tex4x4Info; - NNSG3dResPlttInfo plttInfo; - NNSG3dResDict dict; -} NNSG3dResTex; - -typedef struct NNSG3dResMdl_ { - u32 size; - u32 ofsSbc; - u32 ofsMat; - u32 ofsShp; - u32 ofsEvpMtx; - NNSG3dResMdlInfo info; - NNSG3dResNodeInfo nodeInfo; -} NNSG3dResMdl; - -typedef struct NNSG3dResFileHeader_ { - union { - char signature[4]; - u32 sigVal; - }; - u16 byteOrder; - u16 version; - u32 fileSize; - u16 headerSize; - u16 dataBlocks; -} NNSG3dResFileHeader; - -typedef struct NNSG3dResMdlSet_ { - NNSG3dResDataBlockHeader header; - NNSG3dResDict dict; -} NNSG3dResMdlSet; - -typedef struct NNSG3dResAnmHeader_ { - u8 category0; - u8 revision; - u16 category1; -} NNSG3dResAnmHeader; - -typedef struct { - NNSG3dResAnmHeader anmHeader; - u16 numFrame; - u16 dummy_; -} NNSG3dResAnmCommon; - -typedef struct NNSG3dResDictEntryHeader_ { - u16 sizeUnit; - u16 ofsName; - u8 data[4]; -} NNSG3dResDictEntryHeader; - -typedef struct NNSG3dResDictMdlSetData_ { - u32 offset; -} NNSG3dResDictMdlSetData; - -#endif //NNSYS_G3D_BINRES_RES_STRUCT_H_ diff --git a/lib/include/nnsys/g3d/binres/res_struct_accessor.h b/lib/include/nnsys/g3d/binres/res_struct_accessor.h deleted file mode 100644 index 9bb4f276..00000000 --- a/lib/include/nnsys/g3d/binres/res_struct_accessor.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_G3D_BINRES_RES_STRUCT_ACCESSOR_H -#define NNSYS_G3D_BINRES_RES_STRUCT_ACCESSOR_H - -NNSG3dResMdlSet* NNS_G3dGetMdlSet(const NNSG3dResFileHeader* header); -NNSG3dResTex* NNS_G3dGetTex(const NNSG3dResFileHeader* header); - -#endif //NNSYS_G3D_BINRES_RES_STRUCT_ACCESSOR_H diff --git a/lib/include/nnsys/g3d/binres/res_struct_accessor_anm.h b/lib/include/nnsys/g3d/binres/res_struct_accessor_anm.h deleted file mode 100644 index 44bd6cd9..00000000 --- a/lib/include/nnsys/g3d/binres/res_struct_accessor_anm.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G3D_RES_STRUCT_ACCESSOR_ANM_H_ -#define NNSYS_G3D_RES_STRUCT_ACCESSOR_ANM_H_ - -void* NNS_G3dGetAnmByIdx(const void* pRes, u32 idx); - -#endif //NNSYS_G3D_RES_STRUCT_ACCESSOR_ANM_H_ diff --git a/lib/include/nnsys/g3d/binres/res_struct_accessor_inline.h b/lib/include/nnsys/g3d/binres/res_struct_accessor_inline.h deleted file mode 100644 index 06d9c11a..00000000 --- a/lib/include/nnsys/g3d/binres/res_struct_accessor_inline.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef NNSYS_G3D_BINRES_RES_STRUCT_ACCESSOR_INLINE_H_ -#define NNSYS_G3D_BINRES_RES_STRUCT_ACCESSOR_INLINE_H_ - -static inline void* NNS_G3dGetResDataByIdx(const NNSG3dResDict* dict, u32 idx) { - NNSG3dResDictEntryHeader* hdr; - - if (dict != NULL && idx < dict->numEntry) { - hdr = (NNSG3dResDictEntryHeader*)((u8*)dict + dict->ofsEntry); - return (void*)(&hdr->data[0] + hdr->sizeUnit * idx); - } else { - return NULL; - } -} - -static inline NNSG3dResMdl* NNS_G3dGetMdlByIdx(const NNSG3dResMdlSet* mdlSet, u32 idx) { - NNSG3dResDictMdlSetData* data; - - if (mdlSet) { - data = (NNSG3dResDictMdlSetData*)NNS_G3dGetResDataByIdx(&mdlSet->dict, idx); - if (data) { - return (NNSG3dResMdl*)((u8*)mdlSet + data->offset); - } - } - return NULL; -} - -#endif //NNSYS_G3D_BINRES_RES_STRUCT_ACCESSOR_INLINE_H_ diff --git a/lib/include/nnsys/g3d/config.h b/lib/include/nnsys/g3d/config.h deleted file mode 100644 index 5e9b2291..00000000 --- a/lib/include/nnsys/g3d/config.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef NNSYS_G3D_CONFIG_H_ -#define NNSYS_G3D_CONFIG_H_ - -#ifndef NNS_G3D_SIZE_JNT_MAX -#define NNS_G3D_SIZE_JNT_MAX 64 -#endif - -#ifndef NNS_G3D_SIZE_MAT_MAX -#define NNS_G3D_SIZE_MAT_MAX 64 -#endif - -#ifndef NNS_G3D_SIZE_SHP_MAX -#define NNS_G3D_SIZE_SHP_MAX 64 -#endif - -#endif //NNSYS_G3D_CONFIG_H_ diff --git a/lib/include/nnsys/g3d/gecom.h b/lib/include/nnsys/g3d/gecom.h deleted file mode 100644 index 5edf2db2..00000000 --- a/lib/include/nnsys/g3d/gecom.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_G3D_GECOM_H_ -#define NNSYS_G3D_GECOM_H_ - -void NNS_G3dGeBufferOP_N(u32 op, const u32* args, u32 num); - -#endif //NNSYS_G3D_GECOM_H_ diff --git a/lib/include/nnsys/g3d/gecom_inline.h b/lib/include/nnsys/g3d/gecom_inline.h deleted file mode 100644 index 69c44845..00000000 --- a/lib/include/nnsys/g3d/gecom_inline.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NNSYS_G3D_GECOM_INLINE_H_ -#define NNSYS_G3D_GECOM_INLINE_H_ - -static inline void NNS_G3dGeMtxMode(GXMtxMode mode) { - NNS_G3dGeBufferOP_N(G3OP_MTX_MODE, (u32*)&mode, G3OP_MTX_MODE_NPARAMS); -} - -static inline void NNS_G3dGePushMtx(void) { - NNS_G3dGeBufferOP_N(G3OP_MTX_PUSH, NULL, G3OP_MTX_PUSH_NPARAMS); -} - -static inline void NNS_G3dGePopMtx(int num) { - NNS_G3dGeBufferOP_N(G3OP_MTX_POP, (u32*)&num, G3OP_MTX_POP_NPARAMS); -} - -static inline void NNS_G3dGeMultMtx43(const MtxFx43* m) { - NNS_G3dGeBufferOP_N(G3OP_MTX_MULT_4x3, (u32*) m, G3OP_MTX_MULT_4x3_NPARAMS); -} - -#endif //NNSYS_G3D_GECOM_INLINE_H_ diff --git a/lib/include/nnsys/g3d/glbstate.h b/lib/include/nnsys/g3d/glbstate.h deleted file mode 100644 index b4684901..00000000 --- a/lib/include/nnsys/g3d/glbstate.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef NNSYS_G3D_GLBSTATE_H_ -#define NNSYS_G3D_GLBSTATE_H_ - -typedef enum { - NNS_G3D_GLB_FLAG_FLUSH_WVP = 0x00000001, - NNS_G3D_GLB_FLAG_FLUSH_VP = 0x00000002, - NNS_G3D_GLB_FLAG_INVBASE_UPTODATE = 0x00000004, - NNS_G3D_GLB_FLAG_INVCAMERA_UPTODATE = 0x00000008, - NNS_G3D_GLB_FLAG_INVPROJ_UPTODATE = 0x00000010, - NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE = 0x00000020, - NNS_G3D_GLB_FLAG_INVCAMERAPROJ_UPTODATE = 0x00000040, - - NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE = 0x00000080, - - NNS_G3D_GLB_FLAG_SRTCAMERA_UPTODATE = NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE, - NNS_G3D_GLB_FLAG_FLUSH_ALT = NNS_G3D_GLB_FLAG_FLUSH_WVP -} NNSG3dGlbFlag; - -typedef struct { - u32 cmd0; - u32 mtxmode_proj; - MtxFx44 projMtx; - u32 mtxmode_posvec; - MtxFx43 cameraMtx; - u32 cmd1; - u32 lightVec[4]; - u32 cmd2; - u32 prmMatColor0; - u32 prmMatColor1; - u32 prmPolygonAttr; - u32 prmViewPort; - u32 cmd3; - u32 lightColor[4]; - u32 cmd4; - MtxFx33 prmBaseRot; - VecFx32 prmBaseTrans; - VecFx32 prmBaseScale; - u32 prmTexImageParam; - u32 flag; - MtxFx43 invCameraMtx; - MtxFx43 srtCameraMtx; - MtxFx43 invSrtCameraMtx; - MtxFx43 invBaseMtx; - MtxFx44 invProjMtx; - MtxFx44 invCameraProjMtx; - VecFx32 camPos; - VecFx32 camUp; - VecFx32 camTarget; -} NNSG3dGlb; - -extern NNSG3dGlb NNS_G3dGlb; - -void NNS_G3dGlbSetBaseTrans(const VecFx32 *pTrans); - -void NNS_G3dGlbSetBaseScale(const VecFx32 *pScale); -void NNS_G3dGlbFlushP(void); -void NNS_G3dDraw(NNSG3dRenderObj *pRenderObj); -void NNS_G3dGlbLightVector(GXLightId lightID, fx16 x, fx16 y, fx16 z); -void NNS_G3dGlbLightColor(GXLightId lightID, GXRgb rgb); -void NNS_G3dGlbMaterialColorDiffAmb(GXRgb diffuse, GXRgb ambient, BOOL IsSetVtxColor); -void NNS_G3dGlbMaterialColorSpecEmi(GXRgb specular, GXRgb emission, BOOL IsShininess); - -#endif //NNSYS_G3D_GLBSTATE_H_ diff --git a/lib/include/nnsys/g3d/glbstate_inline.h b/lib/include/nnsys/g3d/glbstate_inline.h deleted file mode 100644 index 0c568cd3..00000000 --- a/lib/include/nnsys/g3d/glbstate_inline.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NNSYS_G3D_GLBSTATE_INLINE_H_ -#define NNSYS_G3D_GLBSTATE_INLINE_H_ - -static inline void NNS_G3dGlbSetBaseRot(const MtxFx33 *pRot) { - MI_Copy36B(pRot, &NNS_G3dGlb.prmBaseRot); - NNS_G3dGlb.flag &= ~(NNS_G3D_GLB_FLAG_BASECAMERA_UPTODATE | NNS_G3D_GLB_FLAG_INVBASE_UPTODATE | NNS_G3D_GLB_FLAG_INVBASECAMERA_UPTODATE); -} - -static inline void NNS_G3dGlbFlush(void) { - NNS_G3dGlbFlushP(); -} - -#endif //NNSYS_G3D_GLBSTATE_INLINE_H_ diff --git a/lib/include/nnsys/g3d/kernel.h b/lib/include/nnsys/g3d/kernel.h deleted file mode 100644 index 9c16cfbb..00000000 --- a/lib/include/nnsys/g3d/kernel.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef NNSYS_G3D_KERNEL_H_ -#define NNSYS_G3D_KERNEL_H_ - -typedef struct NNSG3dAnmObj_ { - fx32 frame; - fx32 ratio; - void* resAnm; - void* funcAnm; - struct NNSG3dAnmObj_* next; - const NNSG3dResTex* resTex; - u8 priority; - u8 numMapData; - u16 mapData[1]; -} NNSG3dAnmObj; - -struct NNSG3dMatAnmResult_; -struct NNSG3dJntAnmResult_; -struct NNSG3dVisAnmResult_; - -typedef BOOL (*NNSG3dFuncAnmBlendMat)(struct NNSG3dMatAnmResult_*, const NNSG3dAnmObj*, u32); -typedef BOOL (*NNSG3dFuncAnmBlendJnt)(struct NNSG3dJntAnmResult_*, const NNSG3dAnmObj*, u32); -typedef BOOL (*NNSG3dFuncAnmBlendVis)(struct NNSG3dVisAnmResult_*, const NNSG3dAnmObj*, u32); - -struct NNSG3dRS_; -typedef void (*NNSG3dSbcCallBackFunc)(struct NNSG3dRS_*); - -typedef struct NNSG3dRenderObj_ { - u32 flag; - NNSG3dResMdl* resMdl; - NNSG3dAnmObj* anmMat; - NNSG3dFuncAnmBlendMat funcBlendMat; - NNSG3dAnmObj* anmJnt; // 10 - NNSG3dFuncAnmBlendJnt funcBlendJnt; - NNSG3dAnmObj* anmVis; - NNSG3dFuncAnmBlendVis funcBlendVis; - NNSG3dSbcCallBackFunc cbFunc; // 20 - u8 cbCmd; - u8 cbTiming; - u16 dummy_; - NNSG3dSbcCallBackFunc cbInitFunc; - void* ptrUser; - u8* ptrUserSbc; // 30 - struct NNSG3dJntAnmResult_* recJntAnm; - struct NNSG3dMatAnmResult_* recMatAnm; - u32 hintMatAnmExist[NNS_G3D_SIZE_MAT_MAX / 32]; - u32 hintJntAnmExist[NNS_G3D_SIZE_JNT_MAX / 32]; - u32 hintVisAnmExist[NNS_G3D_SIZE_JNT_MAX / 32]; -} NNSG3dRenderObj; // size=0x54 - -void NNS_G3dRenderObjAddAnmObj(NNSG3dRenderObj* pRenderObj, NNSG3dAnmObj* pAnmObj); -void NNS_G3dRenderObjRemoveAnmObj(NNSG3dRenderObj* pRenderObj, NNSG3dAnmObj* pAnmObj); -void NNS_G3dRenderObjInit(NNSG3dRenderObj* pRenderObj, NNSG3dResMdl* pResMdl); -void NNS_G3dAnmObjInit(NNSG3dAnmObj* pAnmObj, void* pResAnm, const NNSG3dResMdl* pResMdl, const NNSG3dResTex* pResTex); -#endif //NNSYS_G3D_KERNEL_H_ diff --git a/lib/include/nnsys/g3d/kernel_inline.h b/lib/include/nnsys/g3d/kernel_inline.h deleted file mode 100644 index 0361a588..00000000 --- a/lib/include/nnsys/g3d/kernel_inline.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef NNSYS_G3D_KERNEL_INLINE_H_ -#define NNSYS_G3D_KERNEL_INLINE_H_ - -static inline void NNS_G3dAnmObjSetFrame(NNSG3dAnmObj* pAnmObj, fx32 frame) { - pAnmObj->frame = frame; -} - -static inline fx32 NNS_G3dAnmObjGetNumFrame(const NNSG3dAnmObj* pAnmObj) { - const NNSG3dResAnmCommon* p; - p = (const NNSG3dResAnmCommon*) pAnmObj->resAnm; - return p->numFrame * FX32_ONE; -} - -#endif //NNSYS_G3D_KERNEL_INLINE_H_ diff --git a/lib/include/nnsys/g3d/mem.h b/lib/include/nnsys/g3d/mem.h deleted file mode 100644 index 08ed6f38..00000000 --- a/lib/include/nnsys/g3d/mem.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_G3D_MEM_H_ -#define NNSYS_G3D_MEM_H_ - -NNSG3dAnmObj* NNS_G3dAllocAnmObj(NNSFndAllocator* pAlloc, const void* pAnm, const NNSG3dResMdl* pMdl); -void NNS_G3dFreeAnmObj(NNSFndAllocator* pAlloc, NNSG3dAnmObj* pAnmObj); - -#endif //NNSYS_G3D_MEM_H_ diff --git a/lib/include/nnsys/g3d/util.h b/lib/include/nnsys/g3d/util.h deleted file mode 100644 index 93ad5987..00000000 --- a/lib/include/nnsys/g3d/util.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNS_G3D_UTIL_H_ -#define NNS_G3D_UTIL_H_ - -void NNS_G3dInit(void); -int NNS_G3dScrPosToWorldLine(int px, int py, VecFx32* pNear, VecFx32* pFar); - -#endif //NNS_G3D_UTIL_H_ diff --git a/lib/include/nnsys/gfd.h b/lib/include/nnsys/gfd.h deleted file mode 100644 index 48aed99c..00000000 --- a/lib/include/nnsys/gfd.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NNSYS_GFD_H -#define NNSYS_GFD_H - -#include -#include -#include -#include -#include -#include -#include - -#endif //NNSYS_GFD_H diff --git a/lib/include/nnsys/gfd/VramManager/gfd_FramePlttVramMan.h b/lib/include/nnsys/gfd/VramManager/gfd_FramePlttVramMan.h deleted file mode 100644 index cb8de059..00000000 --- a/lib/include/nnsys/gfd/VramManager/gfd_FramePlttVramMan.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_GFD_VRAMMANAGER_GFD_FRAMEPLTTVRAMMAN_H_ -#define NNSYS_GFD_VRAMMANAGER_GFD_FRAMEPLTTVRAMMAN_H_ - -void NNS_GfdInitFrmPlttVramManager(u32 szByte, BOOL useAsDefault); - -#endif //NNSYS_GFD_VRAMMANAGER_GFD_FRAMEPLTTVRAMMAN_H_ diff --git a/lib/include/nnsys/gfd/VramManager/gfd_FrameTexVramMan.h b/lib/include/nnsys/gfd/VramManager/gfd_FrameTexVramMan.h deleted file mode 100644 index de7ad093..00000000 --- a/lib/include/nnsys/gfd/VramManager/gfd_FrameTexVramMan.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef NNSYS_GFD_VRAMMANAGER_GFD_FRAMETEXVRAMMANAGER_H_ -#define NNSYS_GFD_VRAMMANAGER_GFD_FRAMETEXVRAMMANAGER_H_ - -void NNS_GfdInitFrmTexVramManager(u16 numSlot, BOOL useAsDefault); - -#endif //NNSYS_GFD_VRAMMANAGER_GFD_FRAMETEXVRAMMANAGER_H_ diff --git a/lib/include/nnsys/gfd/VramManager/gfd_LinkedListPlttVramMan.h b/lib/include/nnsys/gfd/VramManager/gfd_LinkedListPlttVramMan.h deleted file mode 100644 index 8654468b..00000000 --- a/lib/include/nnsys/gfd/VramManager/gfd_LinkedListPlttVramMan.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_GFD_VRAMMANAGER_GFD_LINKEDLISTPLTTVRAMMAN_H_ -#define NNSYS_GFD_VRAMMANAGER_GFD_LINKEDLISTPLTTVRAMMAN_H_ - -u32 NNS_GfdGetLnkPlttVramManagerWorkSize(u32 numMemBlk); -void NNS_GfdInitLnkPlttVramManager(u32 szByte, void *pManagementWork, u32 szByteManagementWork, BOOL useAsDefault); - -#endif //NNSYS_GFD_VRAMMANAGER_GFD_LINKEDLISTPLTTVRAMMAN_H_ diff --git a/lib/include/nnsys/gfd/VramManager/gfd_LinkedListTexVramMan.h b/lib/include/nnsys/gfd/VramManager/gfd_LinkedListTexVramMan.h deleted file mode 100644 index 16bd257b..00000000 --- a/lib/include/nnsys/gfd/VramManager/gfd_LinkedListTexVramMan.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef NNSYS_GFD_VRAMMANAGER_GFD_LINKEDLISTTEXVRAMMAN_H_ -#define NNSYS_GFD_VRAMMANAGER_GFD_LINKEDLISTTEXVRAMMAN_H_ - -u32 NNS_GfdGetLnkTexVramManagerWorkSize( u32 numMemBlk ); -void NNS_GfdInitLnkTexVramManager(u32 szByte, u32 szByteFor4x4, void *pManagementWork, u32 szByteManagementWork, BOOL useAsDefault); - -#endif //NNSYS_GFD_VRAMMANAGER_GFD_LINKEDLISTTEXVRAMMAN_H_ diff --git a/lib/include/nnsys/gfd/VramManager/gfd_PlttVramMan_Types.h b/lib/include/nnsys/gfd/VramManager/gfd_PlttVramMan_Types.h deleted file mode 100644 index 8cdc6b20..00000000 --- a/lib/include/nnsys/gfd/VramManager/gfd_PlttVramMan_Types.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NNSYS_GFD_VRAMMANAGER_GFD_PLTTVRAMMAN_TYPES_H_ -#define NNSYS_GFD_VRAMMANAGER_GFD_PLTTVRAMMAN_TYPES_H_ - -typedef u32 NNSGfdPlttKey; - -#define NNS_GFD_ALLOC_ERROR_PLTTKEY (u32)0x0 - -#define NNS_GFD_PLTTKEY_ADDR_SHIFT 3 - -typedef NNSGfdPlttKey (*NNSGfdFuncAllocPlttVram)(u32 szByte, BOOL is4pltt, u32 opt); -typedef int (*NNSGfdFuncFreePlttVram)(NNSGfdPlttKey plttKey); - -extern NNSGfdFuncAllocPlttVram NNS_GfdDefaultFuncAllocPlttVram; -extern NNSGfdFuncFreePlttVram NNS_GfdDefaultFuncFreePlttVram; - -static inline u32 NNS_GfdGetPlttKeyAddr(NNSGfdPlttKey plttKey) { - return (u32)((0x0000FFFF & plttKey) << NNS_GFD_PLTTKEY_ADDR_SHIFT); -} - -#endif //NNSYS_GFD_VRAMMANAGER_GFD_PLTTVRAMMAN_TYPES_H_ diff --git a/lib/include/nnsys/gfd/VramManager/gfd_TexVramMan_Types.h b/lib/include/nnsys/gfd/VramManager/gfd_TexVramMan_Types.h deleted file mode 100644 index 24d4a069..00000000 --- a/lib/include/nnsys/gfd/VramManager/gfd_TexVramMan_Types.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef NNSYS_GFD_VRAMMANAGER_GFD_TEXVRAMMAN_TYPES_H_ -#define NNSYS_GFD_VRAMMANAGER_GFD_TEXVRAMMAN_TYPES_H_ - -typedef u32 NNSGfdTexKey; - -#define NNS_GFD_ALLOC_ERROR_TEXKEY (u32)0x0 - -#define NNS_GFD_TEXKEY_ADDR_SHIFT 3 - -typedef NNSGfdTexKey (*NNSGfdFuncAllocTexVram)(u32 szByte, BOOL is4x4comp, u32 opt); -typedef int (*NNSGfdFuncFreeTexVram)(NNSGfdTexKey key); - -extern NNSGfdFuncAllocTexVram NNS_GfdDefaultFuncAllocTexVram; -extern NNSGfdFuncFreeTexVram NNS_GfdDefaultFuncFreeTexVram; - -static inline u32 NNS_GfdGetTexKeyAddr(NNSGfdTexKey memKey) { - return (u32)((0x0000FFFF & memKey) << NNS_GFD_TEXKEY_ADDR_SHIFT); -} - -#endif //NNSYS_GFD_VRAMMANAGER_GFD_TEXVRAMMAN_TYPES_H_ diff --git a/lib/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h b/lib/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h deleted file mode 100644 index cc17411e..00000000 --- a/lib/include/nnsys/gfd/VramTransferMan/gfd_VramTransferManager.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef NNSYS_GFD_VRAMTRANSFERMAN_GFD_VRAMTRANSFERMANAGER_H_ -#define NNSYS_GFD_VRAMTRANSFERMAN_GFD_VRAMTRANSFERMANAGER_H_ - -typedef enum NNS_GFD_DST_TYPE { - NNS_GFD_DST_3D_TEX_VRAM = 0, - NNS_GFD_DST_3D_TEX_PLTT, - NNS_GFD_DST_3D_CLRIMG_COLOR, - NNS_GFD_DST_3D_CLRIMG_DEPTH, - - NNS_GFD_DST_2D_BG0_CHAR_MAIN, - NNS_GFD_DST_2D_BG1_CHAR_MAIN, - NNS_GFD_DST_2D_BG2_CHAR_MAIN, - NNS_GFD_DST_2D_BG3_CHAR_MAIN, - NNS_GFD_DST_2D_BG0_SCR_MAIN, - NNS_GFD_DST_2D_BG1_SCR_MAIN, - NNS_GFD_DST_2D_BG2_SCR_MAIN, - NNS_GFD_DST_2D_BG3_SCR_MAIN, - NNS_GFD_DST_2D_BG2_BMP_MAIN, - NNS_GFD_DST_2D_BG3_BMP_MAIN, - NNS_GFD_DST_2D_OBJ_PLTT_MAIN, - NNS_GFD_DST_2D_BG_PLTT_MAIN, - NNS_GFD_DST_2D_OBJ_EXTPLTT_MAIN, - NNS_GFD_DST_2D_BG_EXTPLTT_MAIN, - NNS_GFD_DST_2D_OBJ_OAM_MAIN, - NNS_GFD_DST_2D_OBJ_CHAR_MAIN, - - NNS_GFD_DST_2D_BG0_CHAR_SUB, - NNS_GFD_DST_2D_BG1_CHAR_SUB, - NNS_GFD_DST_2D_BG2_CHAR_SUB, - NNS_GFD_DST_2D_BG3_CHAR_SUB, - NNS_GFD_DST_2D_BG0_SCR_SUB, - NNS_GFD_DST_2D_BG1_SCR_SUB, - NNS_GFD_DST_2D_BG2_SCR_SUB, - NNS_GFD_DST_2D_BG3_SCR_SUB, - NNS_GFD_DST_2D_BG2_BMP_SUB, - NNS_GFD_DST_2D_BG3_BMP_SUB, - NNS_GFD_DST_2D_OBJ_PLTT_SUB, - NNS_GFD_DST_2D_BG_PLTT_SUB, - NNS_GFD_DST_2D_OBJ_EXTPLTT_SUB, - NNS_GFD_DST_2D_BG_EXTPLTT_SUB, - NNS_GFD_DST_2D_OBJ_OAM_SUB, - NNS_GFD_DST_2D_OBJ_CHAR_SUB, - - NNS_GFD_DST_MAX -} NNS_GFD_DST_TYPE; - -typedef struct NNSGfdVramTransferTask { - NNS_GFD_DST_TYPE type; - void* pSrc; - u32 dstAddr; - u32 szByte; -} NNSGfdVramTransferTask; - -void NNS_GfdInitVramTransferManager (NNSGfdVramTransferTask* pTaskArray, u32 lengthOfArray); -BOOL NNS_GfdRegisterNewVramTransferTask (NNS_GFD_DST_TYPE type, u32 dstAddr, void* pSrc, u32 szByte); -void NNS_GfdDoVramTransfer(void); - -#endif //NNSYS_GFD_VRAMTRANSFERMAN_GFD_VRAMTRANSFERMANAGER_H_ diff --git a/lib/include/nnsys/snd.h b/lib/include/nnsys/snd.h deleted file mode 100644 index 154cd51f..00000000 --- a/lib/include/nnsys/snd.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NNSYS_SND_H_ -#define NNSYS_SND_H_ - -#include -#include -#include -#include -#include -#include -#include -#include - -#endif //NNSYS_SND_H_ diff --git a/lib/include/nnsys/snd/heap.h b/lib/include/nnsys/snd/heap.h deleted file mode 100644 index af3edf8c..00000000 --- a/lib/include/nnsys/snd/heap.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef NNSYS_SND_HEAP_H_ -#define NNSYS_SND_HEAP_H_ - -struct NNSSndHeap; -typedef struct NNSSndHeap* NNSSndHeapHandle; - -NNSSndHeapHandle NNS_SndHeapCreate(void *buf, u32 maxsize); -int NNS_SndHeapSaveState(NNSSndHeapHandle heap); -int NNS_SndHeapLoadState(NNSSndHeapHandle heap, int level); -u32 NNS_SndHeapGetSize(NNSSndHeapHandle heap); -u32 NNS_SndHeapGetFreeSize(NNSSndHeapHandle heap); - -#endif //NNSYS_SND_HEAP_H_ diff --git a/lib/include/nnsys/snd/main.h b/lib/include/nnsys/snd/main.h deleted file mode 100644 index 65342413..00000000 --- a/lib/include/nnsys/snd/main.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NNSYS_SND_MAIN_H_ -#define NNSYS_SND_MAIN_H_ - -void NNS_SndInit(void); -void NNS_SndMain(void); -BOOL NNS_SndUpdateDriverInfo(void); -BOOL NNS_SndReadDriverChannelInfo(int chNo, SNDChannelInfo* info); -BOOL NNS_SndPlayerReadDriverTrackInfo(NNSSndHandle* handle, int trackNo, struct SNDTrackInfo* info); - -#endif //NNSYS_SND_MAIN_H_ diff --git a/lib/include/nnsys/snd/player.h b/lib/include/nnsys/snd/player.h deleted file mode 100644 index ad185ed9..00000000 --- a/lib/include/nnsys/snd/player.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef GUARD_PLAYER_H -#define GUARD_PLAYER_H - -typedef struct NNSSndHandle -{ - struct NNSSndSeqPlayer* player; -} NNSSndHandle; - -void NNS_SndHandleInit(NNSSndHandle *handle); -void NNS_SndHandleReleaseSeq(NNSSndHandle *handle); -void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame); -void NNS_SndPlayerSetAllocatableChannel(int playerNo, u32 chBitFlag); -void NNS_SndPlayerSetPlayableSeqCount(int playerNo, int seqCount); -BOOL NNS_SndPlayerCreateHeap(int playerNo, NNSSndHeapHandle heap, u32 size); -void NNS_SndPlayerPauseByPlayerNo(int playerNo, BOOL flag); -int NNS_SndPlayerCountPlayingSeqByPlayerNo(int playerNo); - -#endif //GUARD_PLAYER_H diff --git a/lib/include/nnsys/snd/seqdata.h b/lib/include/nnsys/snd/seqdata.h deleted file mode 100644 index 2f6b0418..00000000 --- a/lib/include/nnsys/snd/seqdata.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef GUARD_SEQDATA_H -#define GUARD_SEQDATA_H - -typedef struct NNSSndSeqParam { - u16 bankNo; - u8 volume; - u8 channelPrio; - u8 playerPrio; - u8 playerNo; - u16 reserved; -} NNSSndSeqParam; - -#endif //GUARD_SEQDATA_H diff --git a/lib/include/nnsys/snd/sndarc.h b/lib/include/nnsys/snd/sndarc.h deleted file mode 100644 index 041fd1ba..00000000 --- a/lib/include/nnsys/snd/sndarc.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef NNSYS_SND_SNDARC_H_ -#define NNSYS_SND_SNDARC_H_ - -typedef struct NNSSndArcFileInfo -{ - u32 offset; - u32 size; - void* mem; - u32 reserved; -} NNSSndArcFileInfo; - -typedef struct NNSSndArcFat -{ - struct SNDBinaryBlockHeader blockHeader; - - u32 count; - NNSSndArcFileInfo files[0]; -} NNSSndArcFat; - -typedef struct NNSSndArcInfo -{ - struct SNDBinaryBlockHeader blockHeader; - - u32 seqOffset; - u32 seqArcOffset; - u32 bankOffset; - u32 waveArcOffset; - u32 playerInfoOffset; - u32 groupInfoOffset; - u32 strmPlayerInfoOffset; - u32 strmOffset; -} NNSSndArcInfo; - -typedef struct NNSSndArcSymbol -{ - struct SNDBinaryBlockHeader blockHeader; - - u32 seqOffset; - u32 seqArcOffset; - u32 bankOffset; - u32 waveArcOffset; - u32 playerOffset; - u32 groupOffset; - u32 strmPlayerOffset; - u32 strmOffset; -} NNSSndArcSymbol; - -typedef struct NNSSndArcHeader -{ - struct SNDBinaryFileHeader fileHeader; - u32 symbolDataOffset; - u32 symbolDataSize; - u32 infoOffset; - u32 infoSize; - u32 fatOffset; - u32 fatSize; - u32 fileImageOffset; - u32 fileImageSize; -} NNSSndArcHeader; - -typedef struct NNSSndArc -{ - NNSSndArcHeader header; - BOOL file_open; -#ifndef NNS_FROM_TOOL - FSFile file; - FSFileID fileId; -#endif // NNS_FROM_TOOL - struct NNSSndArcFat* fat; - struct NNSSndArcSymbol* symbol; - struct NNSSndArcInfo* info; - s32 loadBlockSize; -} NNSSndArc; - -void NNS_SndArcInit(NNSSndArc *arc, const char *filePath, NNSSndHeapHandle heap, BOOL symbolLoadFlag); - -const NNSSndSeqParam* NNS_SndArcGetSeqParam(int seqNo); - -#endif //NNSYS_SND_SNDARC_H_ diff --git a/lib/include/nnsys/snd/sndarc_loader.h b/lib/include/nnsys/snd/sndarc_loader.h deleted file mode 100644 index 274bfb8f..00000000 --- a/lib/include/nnsys/snd/sndarc_loader.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef NNSYS_SND_SNDARC_LOADER_H_ -#define NNSYS_SND_SNDARC_LOADER_H_ - -BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle heap); -BOOL NNS_SndArcLoadBankEx(int bankNo, u32 loadFlag, NNSSndHeapHandle heap); - -#endif //NNSYS_SND_SNDARC_LOADER_H_ diff --git a/lib/include/nnsys/snd/sndarc_player.h b/lib/include/nnsys/snd/sndarc_player.h deleted file mode 100644 index 9ac5fd4e..00000000 --- a/lib/include/nnsys/snd/sndarc_player.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef NNSYS_SND_SNDARC_PLAYER_H_ -#define NNSYS_SND_SNDARC_PLAYER_H_ - -struct NNSSndHandle; - -BOOL NNS_SndArcPlayerSetup(NNSSndHeapHandle heap); -BOOL NNS_SndArcPlayerStartSeqEx(struct NNSSndHandle* handle, int playerNo, int bankNo, int playerPrio, int seqNo); - -#endif //NNSYS_SND_SNDARC_PLAYER_H_ diff --git a/lib/include/nnsys/snd/waveout.h b/lib/include/nnsys/snd/waveout.h deleted file mode 100644 index c2b8c205..00000000 --- a/lib/include/nnsys/snd/waveout.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef NNSYS_SND_WAVEOUT_H_ -#define NNSYS_SND_WAVEOUT_H_ - -typedef enum NNSSndWaveFormat { - NNS_SND_WAVE_FORMAT_PCM8, - NNS_SND_WAVE_FORMAT_PCM16 -} NNSSndWaveFormat; - -struct NNSSndWaveOut; -typedef struct NNSSndWaveOut* NNSSndWaveOutHandle; - -#endif //NNSYS_SND_WAVEOUT_H_ diff --git a/lib/include/size_t.h b/lib/include/size_t.h deleted file mode 100644 index 78277f50..00000000 --- a/lib/include/size_t.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _MSL_SIZE_T_H -#define _MSL_SIZE_T_H - -#include - -_MSL_BEGIN_NAMESPACE_STD -_MSL_BEGIN_EXTERN_C - -typedef __typeof__(sizeof(0)) size_t; - -_MSL_END_EXTERN_C -_MSL_END_NAMESPACE_STD - -#endif //_MSL_SIZE_T_H diff --git a/lib/include/stdarg.h b/lib/include/stdarg.h deleted file mode 100644 index bbdf0171..00000000 --- a/lib/include/stdarg.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef MSL_STDARG_H -#define MSL_STDARG_H - -#include - -_MSL_BEGIN_NAMESPACE_STD -_MSL_BEGIN_EXTERN_C - -#ifndef _MSL_VA_LIST_TYPE -#define _MSL_VA_LIST_TYPE char* -#endif //_MSL_VA_LIST_TYPE -#ifndef _MSL_VA_LIST_DEFINED -typedef _MSL_VA_LIST_TYPE va_list; -#define _MSL_VA_LIST_DEFINED -#endif - -#define va_start(list, arg) ({ list = (va_list)(((u32)&(arg) & ~3) + 4); }) -#define va_end(list) ((void)0) - -_MSL_END_EXTERN_C -_MSL_END_NAMESPACE_STD - -#endif //MSL_STDARG_H diff --git a/lib/include/stddef.h b/lib/include/stddef.h deleted file mode 100644 index a111ec5e..00000000 --- a/lib/include/stddef.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef MSL_STDDEF_H_ -#define MSL_STDDEF_H_ - -#include - -_MSL_BEGIN_NAMESPACE_STD -_MSL_BEGIN_EXTERN_C - -#define offsetof(type, field) ((size_t)&((type *)0)->field) - -_MSL_END_EXTERN_C -_MSL_END_NAMESPACE_STD - -#endif //MSL_STDDEF_H_ diff --git a/lib/include/string.h b/lib/include/string.h deleted file mode 100644 index e9222d2a..00000000 --- a/lib/include/string.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef MSL_STRING_H_ -#define MSL_STRING_H_ - -#include -#include - -_MSL_BEGIN_NAMESPACE_STD -_MSL_BEGIN_EXTERN_C - -void *memset(void *data, int value, size_t size); -void *memmove(void *dest, const void *src, size_t size); -void *memcpy(void *dest, const void *src, size_t size); -void *memchr(const void *arr, int value, size_t size); -int memcmp(const void *a, const void *b, size_t size); -char *strcpy(char *dest, const char *src); -unsigned strlen(const char *str); -char *strncpy(char *dest, const char *src, size_t n); -int strcmp(const char *a, const char *b); -char *strcat(char *dest, const char *src); -char *strncat(char *dest, const char *src, size_t n); -unsigned strspn(const char *a, const char *b); -char *strtok(char *str, const char *sep); -char *strstr(const char *haystack, const char *needle); - -_MSL_END_EXTERN_C -_MSL_END_NAMESPACE_STD - -#endif //MSL_STRING_H_ diff --git a/main.lsf b/main.lsf index 3bfa8169..840b4a29 100644 --- a/main.lsf +++ b/main.lsf @@ -10,94 +10,17 @@ Static main Address 0x02000000 StackSize 0 2048 Object asm/main.o - - ### Vendor libraries ### - Object asm/middleware.o - - ### NitroSDK ### - Object lib/NitroSDK/asm/fx_sincos.o - Object lib/NitroSDK/asm/fx_mtx22.o - Object lib/NitroSDK/asm/fx_mtx33.o - Object lib/NitroSDK/asm/fx_mtx43.o - Object lib/NitroSDK/asm/fx_mtx44.o - Object lib/NitroSDK/asm/fx_cp.o - Object lib/NitroSDK/asm/fx_vec.o - Object lib/NitroSDK/asm/fx_trig.o - Object lib/NitroSDK/asm/fx_atanidx.o - Object lib/NitroSDK/asm/fx.o - Object lib/NitroSDK/asm/gx.o - Object lib/NitroSDK/asm/gxstate.o - Object lib/NitroSDK/asm/gx_vramcnt.o - Object lib/NitroSDK/asm/gx_bgcnt.o - Object lib/NitroSDK/asm/g2.o - Object lib/NitroSDK/asm/g3b.o - Object lib/NitroSDK/asm/g3imm.o - Object lib/NitroSDK/asm/g3x.o - Object lib/NitroSDK/asm/g3_util.o - Object lib/NitroSDK/asm/gx_load2d.o - Object lib/NitroSDK/asm/gx_load3d.o - Object lib/NitroSDK/asm/g3.o - Object lib/NitroSDK/asm/gxasm.o - Object lib/NitroSDK/src/os/os_irqHandler.o - Object lib/NitroSDK/src/os/os_irqTable.o - Object lib/NitroSDK/src/os/os_interrupt.o - Object lib/NitroSDK/src/os/os_spinLock.o - Object lib/NitroSDK/src/os/os_printf.o - Object lib/NitroSDK/src/os/os_thread.o - Object lib/NitroSDK/src/os/os_context.o - Object lib/NitroSDK/src/os/os_emulator.o - Object lib/NitroSDK/src/os/os_message.o - Object lib/NitroSDK/src/os/os_mutex.o - Object lib/NitroSDK/src/os/os_cache.o - Object lib/NitroSDK/src/os/os_init.o - Object lib/NitroSDK/src/os/os_arena.o - Object lib/NitroSDK/src/os/os_alloc.o - Object lib/NitroSDK/src/os/os_tcm.o - Object lib/NitroSDK/src/os/os_protectionUnit.o - Object lib/NitroSDK/src/os/os_protectionRegion.o - Object lib/NitroSDK/src/os/os_exception.o - Object lib/NitroSDK/src/os/os_timer.o - Object lib/NitroSDK/src/os/os_tick.o - Object lib/NitroSDK/src/os/os_alarm.o - Object lib/NitroSDK/src/os/os_valarm.o - Object lib/NitroSDK/src/os/os_system.o - Object lib/NitroSDK/src/os/os_reset.o - Object lib/NitroSDK/src/os/os_ownerInfo.o - Object lib/NitroSDK/src/os/os_vramExclusive.o - Object lib/NitroSDK/src/os/os_entropy.o - Object lib/NitroSDK/src/os/os_terminate_proc.o - Object lib/NitroSDK/asm/mi_wram.o - Object lib/NitroSDK/asm/mi_dma.o - Object lib/NitroSDK/asm/mi_dma_hblank.o - Object lib/NitroSDK/asm/mi_dma_gxcommand.o - Object lib/NitroSDK/asm/mi_memory.o - Object lib/NitroSDK/asm/mi_swap.o - Object lib/NitroSDK/asm/mi_uncompress.o - Object lib/NitroSDK/asm/mi_dma_card.o - Object lib/NitroSDK/asm/mi_compress.o - Object lib/NitroSDK/asm/mi_init.o - Object lib/asm/nitro.o - Object lib/asm/msl.o } Autoload ITCM { Address 0x01FF8000 - Object lib/NitroSDK/src/os/os_irqHandler.o (.itcm) - Object lib/NitroSDK/src/os/os_reset.o (.itcm) - Object lib/NitroSDK/asm/mi_dma.o (.itcm) - Object lib/NitroSDK/asm/mi_dma_gxcommand.o (.itcm) - Object lib/asm/nitro.o (.itcm) Object asm/itcm.o (.itcm) } Autoload DTCM { Address 0x027E0000 - Object lib/NitroSDK/src/os/os_irqHandler.o (.dtcm) - Object lib/NitroSDK/src/os/os_irqTable.o (.dtcm) - Object lib/NitroSDK/src/os/os_irqHandler.o (.dtcm.bss) - Object lib/NitroSDK/src/os/os_irqTable.o (.dtcm.bss) } Overlay OVY_0 { diff --git a/output.txt b/output.txt new file mode 100644 index 00000000..f17a2687 --- /dev/null +++ b/output.txt @@ -0,0 +1,3 @@ +./tools/mwasmarm_patcher/mwasmarm_patcher -q tools/mwccarm/2.0/sp2p2/mwasmarm.exe +shasum --quiet -c ./pmdsky.us/filesystem.sha1 +/Applications/Xcode.app/Contents/Developer/usr/bin/make -C all install INSTALL_PREFIX=/Users/chenghanngan/Documents/Programs/ReverseEngineering/PRET/pmd-sky/build/pmdsky.us GAME_CODE=C2SE diff --git a/rom.rsf b/rom.rsf index 98593f7d..c605a1f0 100644 --- a/rom.rsf +++ b/rom.rsf @@ -8,9 +8,6 @@ Arm9 Arm7 { - Static sub/build/ichneumon_sub.sbin - OverlayDefs sub/build/ichneumon_sub_defs.sbin - Nef sub/build/ichneumon_sub.nef } Property diff --git a/src/main.c b/src/main.c deleted file mode 100644 index 82917341..00000000 --- a/src/main.c +++ /dev/null @@ -1,4 +0,0 @@ -#include "main.h" - -void NitroMain(void) { -} diff --git a/sub/Makefile b/sub/Makefile index 3a82e7f5..e73a8349 100644 --- a/sub/Makefile +++ b/sub/Makefile @@ -3,7 +3,6 @@ BUILD_DIR := build # all paths referring up from BUILD_DIR must be relative. BACK_REL := .. TOOLSDIR := ../tools -NEFNAME := ichneumon_sub MWCCVER := 2.0/sp2p3 PROC := arm7tdmi PROC_S := arm4t diff --git a/sub/asm/libsyscall.s b/sub/asm/libsyscall.s deleted file mode 100644 index e9acec1c..00000000 --- a/sub/asm/libsyscall.s +++ /dev/null @@ -1,165 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start SVC_SoftReset -SVC_SoftReset: ; 0x038008A4 - swi 0 - bx lr - thumb_func_end SVC_SoftReset - - thumb_func_start SVC_WaitByLoop -SVC_WaitByLoop: ; 0x038008A8 - swi 3 - bx lr - thumb_func_end SVC_WaitByLoop - - thumb_func_start SVC_WaitIntr -SVC_WaitIntr: ; 0x038008AC - ldr r2, _038008B8 ; =0x04000000 - mov ip, r2 - mov r2, #0 - swi 4 - bx lr - .align 2, 0 -_038008B8: .word 0x04000000 - thumb_func_end SVC_WaitIntr - - thumb_func_start SVC_WaitVBlankIntr -SVC_WaitVBlankIntr: ; 0x038008BC - mov r2, #0 - swi 5 - bx lr - thumb_func_end SVC_WaitVBlankIntr - - non_word_aligned_thumb_func_start SVC_Halt -SVC_Halt: ; 0x038008C2 - swi 6 - bx lr - thumb_func_end SVC_Halt - - non_word_aligned_thumb_func_start SVC_Sleep -SVC_Sleep: ; 0x038008C6 - swi 7 - bx lr - thumb_func_end SVC_Sleep - - non_word_aligned_thumb_func_start SVC_ChangeSoundBias -SVC_ChangeSoundBias: ; 0x038008CA - swi 8 - bx lr - thumb_func_end SVC_ChangeSoundBias - - non_word_aligned_thumb_func_start SVC_SetSoundBias -SVC_SetSoundBias: ; 0x038008CE - add r1, r0, #0 - mov r0, #1 - swi 8 - bx lr - thumb_func_end SVC_SetSoundBias - - non_word_aligned_thumb_func_start SVC_ResetSoundBias -SVC_ResetSoundBias: ; 0x038008D6 - add r1, r0, #0 - mov r0, #0 - swi 8 - bx lr - thumb_func_end SVC_ResetSoundBias - - non_word_aligned_thumb_func_start SVC_Div -SVC_Div: ; 0x038008DE - swi 9 - bx lr - thumb_func_end SVC_Div - - non_word_aligned_thumb_func_start SVC_DivRem -SVC_DivRem: ; 0x038008E2 - swi 9 - add r0, r1, #0 - bx lr - thumb_func_end SVC_DivRem - - thumb_func_start SVC_CpuSet -SVC_CpuSet: ; 0x038008E8 - swi 0xb - bx lr - thumb_func_end SVC_CpuSet - - thumb_func_start SVC_CpuSetFast -SVC_CpuSetFast: ; 0x038008EC - swi 0xc - bx lr - thumb_func_end SVC_CpuSetFast - - thumb_func_start SVC_Sqrt -SVC_Sqrt: ; 0x038008F0 - swi 0xd - bx lr - thumb_func_end SVC_Sqrt - - thumb_func_start SVC_GetCRC16 -SVC_GetCRC16: ; 0x038008F4 - swi 0xe - bx lr - thumb_func_end SVC_GetCRC16 - - thumb_func_start IsMmemExpanded -IsMmemExpanded: ; 0x038008F8 - swi 0xf - bx lr - thumb_func_end IsMmemExpanded - - thumb_func_start SVC_UnpackBits -SVC_UnpackBits: ; 0x038008FC - swi 0x10 - bx lr - thumb_func_end SVC_UnpackBits - - thumb_func_start SVC_UncompressLZ8 -SVC_UncompressLZ8: ; 0x03800900 - swi 0x11 - bx lr - thumb_func_end SVC_UncompressLZ8 - - thumb_func_start SVC_UncompressLZ16FromDevice -SVC_UncompressLZ16FromDevice: ; 0x03800904 - swi 0x12 - bx lr - thumb_func_end SVC_UncompressLZ16FromDevice - - thumb_func_start SVC_UncompressHuffmanFromDevice -SVC_UncompressHuffmanFromDevice: ; 0x03800908 - swi 0x13 - bx lr - thumb_func_end SVC_UncompressHuffmanFromDevice - - thumb_func_start SVC_UncompressRL8 -SVC_UncompressRL8: ; 0x0380090C - swi 0x14 - bx lr - thumb_func_end SVC_UncompressRL8 - - thumb_func_start SVC_UncompressRL16FromDevice -SVC_UncompressRL16FromDevice: ; 0x03800910 - swi 0x15 - bx lr - thumb_func_end SVC_UncompressRL16FromDevice - - thumb_func_start SVC_GetSinTable -SVC_GetSinTable: ; 0x03800914 - swi 0x1a - bx lr - thumb_func_end SVC_GetSinTable - - thumb_func_start SVC_GetPitchTable -SVC_GetPitchTable: ; 0x03800918 - swi 0x1b - bx lr - thumb_func_end SVC_GetPitchTable - - thumb_func_start SVC_GetVolumeTable -SVC_GetVolumeTable: ; 0x0380091C - swi 0x1c - bx lr - thumb_func_end SVC_GetVolumeTable diff --git a/sub/asm/macros.inc b/sub/asm/macros.inc deleted file mode 100644 index 156b2b09..00000000 --- a/sub/asm/macros.inc +++ /dev/null @@ -1 +0,0 @@ - .include "asm/macros/function.inc" diff --git a/sub/asm/macros/function.inc b/sub/asm/macros/function.inc deleted file mode 100644 index 6b9e5f40..00000000 --- a/sub/asm/macros/function.inc +++ /dev/null @@ -1,24 +0,0 @@ - .macro arm_func_start name - .balign 4, 0 - .global \name - .arm - .endm - - .macro arm_func_end name - .size \name, .-\name - .endm - - .macro thumb_func_start name - .balign 4, 0 - .global \name - .thumb - .endm - - .macro non_word_aligned_thumb_func_start name - .global \name - .thumb - .endm - - .macro thumb_func_end name - .size \name, .-\name - .endm diff --git a/sub/asm/sp_main.s b/sub/asm/sp_main.s deleted file mode 100644 index 76175ac6..00000000 --- a/sub/asm/sp_main.s +++ /dev/null @@ -1,339 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - .public GetRomValidLanguage - .public VBlankIntr - - arm_func_start NitroSpMain -NitroSpMain: ; 0x037F8000 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x210 - bl WVR_ShelterExtWram - bl OS_Init - bl OS_InitThread - add r2, sp, #4 - mov r0, #0x20 - mov r1, #2 - bl NVRAM_ReadDataBytes - ldr r0, [sp, #4] - add r2, sp, #0x10 - mov r0, r0, lsl #3 - str r0, [sp, #4] - mov r1, #0x100 - bl NVRAM_ReadDataBytes - ldr r0, [sp, #4] - mov r1, #0x100 - add r0, r0, #0x100 - add r2, sp, #0x110 - bl NVRAM_ReadDataBytes - mov r0, #0x1d - mov r1, #1 - add r2, sp, #0 - mov r6, #0 - bl NVRAM_ReadDataBytes - ldrb r0, [sp] - cmp r0, #0xff - moveq r0, r6 - beq _037F8080 - tst r0, #0x50 - movne r0, #1 - moveq r0, r6 -_037F8080: - cmp r0, #0 - beq _037F8154 - bl GetRomValidLanguage - mov r8, r0 - mov fp, #1 - and r7, r8, #0x40 - mov sl, #0 - add r5, sp, #0x10 - mov r4, fp - b _037F8148 -_037F80A8: - ldr r0, _037F8458 ; =0x0000FFFF - add sb, r5, sl, lsl #8 - mov r1, sb - mov r2, #0x70 - bl __Veneer_SVC_GetCRC16 - mov r2, sb - ldrh r1, [r2, #0x72] - cmp r0, r1 - bne _037F813C - ldrh r0, [r2, #0x70] - cmp r0, #0x80 - bhs _037F813C - ldr r0, _037F8458 ; =0x0000FFFF - mov r2, #0x8a - add r1, sb, #0x74 - bl __Veneer_SVC_GetCRC16 - mov r2, sb - ldrh r1, [r2, #0xfe] - cmp r0, r1 - bne _037F813C - ldrh r1, [r2, #0x76] - ldrb r0, [r2, #0x75] - tst r1, r4, lsl r0 - beq _037F813C - tst r8, r1 - ldrneh r1, [sb, #0x64] - andne r0, r0, #7 - bicne r1, r1, #7 - orrne r0, r1, r0 - strneh r0, [sb, #0x64] - add r0, r5, sl, lsl #8 - ldrh r0, [r0, #0x76] - mvn r0, r0 - tst r7, r0 - movne r6, #3 - bne _037F81F4 - orr r6, r6, fp, lsl sl -_037F813C: - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, lsr #0x10 -_037F8148: - cmp sl, #2 - blo _037F80A8 - b _037F81B8 -_037F8154: - bl GetRomValidLanguage - tst r0, #0x40 - movne r6, #3 - bne _037F81F4 - ldr r8, _037F8458 ; =0x0000FFFF - mov sb, #0 - add r7, sp, #0x10 - mov r4, #1 - mov r5, #0x70 -_037F8178: - mov r0, r8 - mov r2, r5 - add r1, r7, sb, lsl #8 - bl __Veneer_SVC_GetCRC16 - add r2, r7, sb, lsl #8 - ldrh r1, [r2, #0x72] - cmp r0, r1 - bne _037F81A4 - ldrh r0, [r2, #0x70] - cmp r0, #0x80 - orrlo r6, r6, r4, lsl sb -_037F81A4: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, lsr #0x10 - cmp sb, #2 - blo _037F8178 -_037F81B8: - cmp r6, #1 - cmpne r6, #2 - beq _037F81F4 - cmp r6, #3 - bne _037F81F0 - ldrh r1, [sp, #0x80] - add r0, sp, #0x100 - add r1, r1, #1 - ldrh r0, [r0, #0x80] - and r1, r1, #0x7f - cmp r1, r0 - moveq r6, #2 - movne r6, #1 - b _037F81F4 -_037F81F0: - mov r6, #0 -_037F81F4: - cmp r6, #3 - blt _037F8210 - ldr r1, _037F845C ; =0x027FFC80 - mvn r0, #0 - mov r2, #0x74 - bl MIi_CpuClear32 - b _037F82CC -_037F8210: - cmp r6, #0 - beq _037F82BC - ldr r0, _037F8460 ; =0xFFFFFF2A - mov r1, r6, lsl #8 - add r0, sp, r0 - ldrb r0, [r0, r6, lsl #8] - cmp r0, #0xa - bhs _037F825C - add r0, sp, #0x10 - mov r3, #0xa - mov r2, #0 - add r1, r0, r1 - b _037F8250 -_037F8244: - add r0, r1, r3, lsl #1 - strh r2, [r0, #-0xfc] - sub r3, r3, #1 -_037F8250: - ldrb r0, [r1, #-0xe6] - cmp r3, r0 - bgt _037F8244 -_037F825C: - ldr r0, _037F8464 ; =0xFFFFFF60 - mov r1, r6, lsl #8 - add r0, sp, r0 - ldrb r0, [r0, r6, lsl #8] - cmp r0, #0x1a - bhs _037F82A0 - add r0, sp, #0x10 - mov r3, #0x1a - mov r2, #0 - add r1, r0, r1 - b _037F8294 -_037F8288: - add r0, r1, r3, lsl #1 - strh r2, [r0, #-0xe6] - sub r3, r3, #1 -_037F8294: - ldrb r0, [r1, #-0xb0] - cmp r3, r0 - bgt _037F8288 -_037F82A0: - ldr r1, _037F845C ; =0x027FFC80 - add r2, sp, #0x10 - sub r0, r6, #1 - add r0, r2, r0, lsl #8 - mov r2, #0x74 - bl MIi_CpuCopy32 - b _037F82CC -_037F82BC: - ldr r1, _037F845C ; =0x027FFC80 - mov r0, #0 - mov r2, #0x74 - bl MIi_CpuClear32 -_037F82CC: - add r2, sp, #8 - mov r0, #0x36 - mov r1, #6 - bl NVRAM_ReadDataBytes - ldr r4, _037F845C ; =0x027FFC80 - add r0, sp, #8 - add r1, r4, #0x74 - mov r2, #6 - bl MI_CpuCopy8 - add r2, sp, #2 - mov r0, #0x3c - mov r1, #2 - bl NVRAM_ReadDataBytes - ldrh r0, [sp, #2] - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - bl WMSP_GetAllowedChannel - strh r0, [r4, #0x7a] - bl PXI_Init - mov r0, #8 - bl OS_GetArenaHi - mov r4, r0 - mov r0, #8 - bl OS_GetArenaLo - mov r1, r0 - mov r2, r4 - mov r0, #8 - mov r3, #1 - bl OS_InitAlloc - mov r4, r0 - mov r0, #8 - bl OS_GetArenaHi - sub r2, r0, r4 - mov r0, r4 - mov r1, #0 - bl MI_CpuFill8 - mov r1, r4 - mov r0, #8 - bl OS_SetArenaLo - mov r0, #8 - bl OS_GetArenaHi - mov r4, r0 - mov r0, #8 - bl OS_GetArenaLo - mov r1, r0 - mov r2, r4 - mov r0, #8 - bl OS_CreateHeap - movs r4, r0 - bpl _037F8398 - bl OS_Terminate -_037F8398: - mov r1, r4 - mov r0, #8 - bl OS_SetCurrentHeap - mov r1, r4 - mov r0, #8 - bl OS_CheckHeap - cmp r0, #0x2100 - bhs _037F83BC - bl OS_Terminate -_037F83BC: - mov r0, #6 - bl SND_Init - bl PAD_InitXYButton - ldr r1, _037F8468 ; =VBlankIntr - mov r0, #1 - bl OS_SetIrqFunction - mov r0, #1 - bl OS_EnableIrqMask - ldr r3, _037F846C ; =0x04000004 - mov r0, #1 - ldrh r1, [r3] - ldrh r1, [r3] - add r2, r3, #0x204 - orr r1, r1, #8 - strh r1, [r3] - ldrh r1, [r2] - strh r0, [r2] - bl OS_EnableInterrupts - mvn r0, #0 - bl FS_Init - mov r0, #0xf - bl CARD_SetThreadPriority - mov r0, #0xc - bl RTC_Init - mov r0, r4 - bl WVR_Init - mov r0, #2 - bl SPI_Init - mov r4, #0 -_037F8430: - bl SVC_Halt - bl OS_IsResetOccurred - cmp r0, #0 - beq _037F844C - mov r0, r4 - bl CTRDG_VibPulseEdgeUpdate - bl OS_ResetSystem - ; noreturn -_037F844C: - bl CTRDG_CheckPullOut_Polling - bl CARD_CheckPullOut_Polling - b _037F8430 - .align 2, 0 -_037F8458: .word 0x0000FFFF -_037F845C: .word 0x027FFC80 -_037F8460: .word 0xFFFFFF2A -_037F8464: .word 0xFFFFFF60 -_037F8468: .word VBlankIntr -_037F846C: .word 0x04000004 - arm_func_end NitroSpMain - - ; Routine generated by linktime interworking - ; Defined explicitly to force order in ASM - .arm - .balign 4, 0 -__Veneer_SVC_GetCRC16: ; 0x037F8470 - ldr ip, _037F8478 ; =SVC_GetCRC16 - bx ip - .align 2, 0 -_037F8478: .word SVC_GetCRC16 - arm_func_end __Veneer_SVC_GetCRC16 - -; ; Routine generated by linktime interworking -; arm_func_start SVC_Halt -; SVC_Halt: ; 0x037F847C -; ldr ip, _037F8484 ; =SVC_Halt -; bx ip -; .align 2, 0 -; _037F8484: .word SVC_Halt -; arm_func_end SVC_Halt diff --git a/sub/asm/sp_main_help.s b/sub/asm/sp_main_help.s deleted file mode 100644 index a481880a..00000000 --- a/sub/asm/sp_main_help.s +++ /dev/null @@ -1,42 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .public PMi_Initialized - - .text - - ; Merge into sp_main.c when decompiling - - arm_func_start GetRomValidLanguage -GetRomValidLanguage: ; 0x037F8488 - ldr r1, _037F84BC ; =0x027FFE1D - mov r0, #0 - ldrb r1, [r1] - cmp r1, #0x80 - orreq r0, r0, #0x40 - moveq r0, r0, lsl #0x10 - moveq r0, r0, lsr #0x10 - bxeq lr - cmp r1, #0x40 - orreq r0, r0, #0x80 - moveq r0, r0, lsl #0x10 - moveq r0, r0, lsr #0x10 - bx lr - .align 2, 0 -_037F84BC: .word 0x027FFE1D - arm_func_end GetRomValidLanguage - - arm_func_start VBlankIntr -VBlankIntr: ; 0x037F84C0 - stmdb sp!, {r3, lr} - ldr r0, _037F84E0 ; =PMi_Initialized - ldr r0, [r0] - cmp r0, #0 - beq _037F84D8 - bl PM_SelfBlinkProc -_037F84D8: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037F84E0: .word PMi_Initialized - arm_func_end VBlankIntr diff --git a/sub/asm/sub.ext.s b/sub/asm/sub.ext.s deleted file mode 100644 index f5d32d4f..00000000 --- a/sub/asm/sub.ext.s +++ /dev/null @@ -1,87 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .public SDK_AUTOLOAD_START - .public SDK_AUTOLOAD_LIST - .public SDK_AUTOLOAD_LIST_END - .public SDK_AUTOLOAD_WRAM_SIZE - .public SDK_AUTOLOAD_WRAM_BSS_SIZE - .public SDK_AUTOLOAD_MAIN_BSS_END - .public SDK_SUBPRIV_ARENA_LO - - ; Temporary until ARM7 bss is defined - .public WVR_BSS_START - .set o_wvrStatus, 0x0 - .set o_wvrVramImageBuf, 0x4 - .set o_wvrHeapHandle, 0x8 - .set o_wvrVramImageBufSize, 0xC - .set o_wvrThread, 0x10 - .set o_wvrWlStaElement, 0xB4 - .set o_wvrThreadStack, 0x274 - .set o_wvrWlStack, 0x674 - .set o_wvrWlWork, 0xC74 - - .text - - arm_func_start WVR_ShelterExtWram -WVR_ShelterExtWram: ; 0x027E0000 - stmdb sp!, {r4, r5, r6, lr} - ldr r6, _027E00A4 ; =SDK_AUTOLOAD_START - ldr r2, _027E00A8 ; =SDK_AUTOLOAD_LIST - ldr r0, _027E00AC ; =SDK_AUTOLOAD_LIST_END - b _027E0094 -_027E0014: - ldmia r2, {r1, r4, r5} - cmp r1, #0x6000000 - add r2, r2, #0xc - bne _027E0090 - ldr r1, _027E00B0 ; =SDK_AUTOLOAD_MAIN_BSS_END - ldr r0, _027E00B4 ; =WVR_BSS_START - add r3, r4, r5 - str r1, [r0, #o_wvrVramImageBuf] - ldr r2, _027E00B8 ; =SDK_SUBPRIV_ARENA_LO - add r1, r1, r3 - str r3, [r0, #o_wvrVramImageBufSize] - cmp r2, r1 - beq _027E004C - bl OS_Terminate -_027E004C: - ldr r0, _027E00B4 ; =WVR_BSS_START - mov r1, #0 - ldr r2, [r0, #o_wvrVramImageBuf] - b _027E0068 -_027E005C: - ldr r0, [r6], #4 - add r1, r1, #1 - str r0, [r2], #4 -_027E0068: - cmp r1, r4, lsr #2 - blo _027E005C - mov r1, #0 - mov r0, r1 - b _027E0084 -_027E007C: - str r0, [r2], #4 - add r1, r1, #1 -_027E0084: - cmp r1, r5, lsr #2 - blo _027E007C - b _027E009C -_027E0090: - add r6, r6, r4 -_027E0094: - cmp r2, r0 - bne _027E0014 -_027E009C: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_027E00A4: .word SDK_AUTOLOAD_START -_027E00A8: .word SDK_AUTOLOAD_LIST -_027E00AC: .word SDK_AUTOLOAD_LIST_END -_027E00B0: .word SDK_AUTOLOAD_MAIN_BSS_END -_027E00B4: .word WVR_BSS_START -_027E00B8: .word SDK_SUBPRIV_ARENA_LO - - .section .wram,4,1,5 - diff --git a/sub/asm/sub.ext_wram.s b/sub/asm/sub.ext_wram.s deleted file mode 100644 index c046ef88..00000000 --- a/sub/asm/sub.ext_wram.s +++ /dev/null @@ -1,29182 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .public wmspIndicateThread - .public wmspMPAckAlarm - .public wmspMPIntervalAlarm - .public wmspRequestThread - .public wmspVAlarm - - .text - - arm_func_start WMSP_Init -WMSP_Init: ; 0x06000000 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r1 - ldr r1, [r4] - ldr r3, _0600018C ; =wmspW + 0x1000 - mov r5, r0 - str r1, [r3, #0x540] - ldr r1, [r5, #0x24] - ldr r0, _06000190 ; =wmspW - str r1, [r3, #0x544] - ldr r2, [r5, #0x28] - ldr r1, _06000194 ; =wmspW + 0x20 - str r2, [r3, #0x548] - mov ip, #0 - str ip, [r3, #0x54c] - mov r2, #2 - str ip, [r3, #0x550] - bl __VENEER_OS_InitMessageQueue - ldr r0, _06000198 ; =wmspW + 0x28 - ldr r1, _0600019C ; =wmspW + 0x48 - mov r2, #4 - bl __VENEER_OS_InitMessageQueue - ldr r0, _060001A0 ; =wmspW + 0x58 - ldr r1, _060001A4 ; =wmspW + 0x78 - mov r2, #4 - bl __VENEER_OS_InitMessageQueue - ldr r0, _060001A8 ; =wmspW + 0x88 - ldr r1, _060001AC ; =wmspW + 0xA8 - mov r2, #0x20 - bl __VENEER_OS_InitMessageQueue - ldr r1, _06000190 ; =wmspW - ldr r0, _06000198 ; =wmspW + 0x28 - str r1, [r5, #0x10] - str r0, [r5, #0x14] - ldr r2, [r4, #8] - ldr r1, _0600018C ; =wmspW + 0x1000 - ldr r0, _060001B0 ; =wmspW + 0x1528 - str r2, [r1, #0x578] - ldr r2, [r4, #0x18] - str r2, [r1, #0x57c] - ldr r2, [r4, #0x10] - str r2, [r1, #0x580] - ldr r2, [r4, #4] - str r2, [r1, #0x584] - ldr r2, [r4, #0x14] - str r2, [r1, #0x588] - ldr r2, [r4, #0xc] - str r2, [r1, #0x58c] - bl __VENEER_OS_InitMutex - mov r0, #0x400 - str r0, [sp] - ldr r1, [r4, #4] - ldr r0, _060001B4 ; =wmspIndicateThread - str r1, [sp, #4] - ldr r1, _060001B8 ; =WMSP_IndicateThread - ldr r3, _060001B0 ; =wmspW + 0x1528 - mov r2, #0 - bl __VENEER_OS_CreateThread - ldr r0, _060001B4 ; =wmspIndicateThread - bl __VENEER_OS_WakeupThreadDirect - mov r0, #0x1000 - str r0, [sp] - ldr r1, [r4, #0xc] - ldr r0, _060001BC ; =wmspRequestThread - str r1, [sp, #4] - ldr r1, _060001C0 ; =WMSP_RequestThread - ldr r3, _060001C4 ; =wmspW + 0x1128 - mov r2, #0 - bl __VENEER_OS_CreateThread - ldr r0, _060001BC ; =wmspRequestThread - bl __VENEER_OS_WakeupThreadDirect - mov r3, #0 - ldr r1, _06000190 ; =wmspW - mov r2, r3 -_06000128: - add r0, r1, r3 - add r0, r0, #0x1000 - add r3, r3, #1 - strb r2, [r0, #0x554] - cmp r3, #0x20 - blt _06000128 - ldr r0, _0600018C ; =wmspW + 0x1000 - str r2, [r0, #0x574] - bl __VENEER_OS_IsVAlarmAvailable - cmp r0, #0 - bne _06000158 - bl __VENEER_OS_InitVAlarm -_06000158: - bl __VENEER_PXI_Init - ldr r1, _060001C8 ; =WmspPxiCallback - mov r0, #0xa - bl __VENEER_PXI_SetFifoRecvCallback - mov r0, #2 - str r0, [r5, #0x18] - ldr r1, [r4, #0x14] - mov r0, r5 - str r1, [r5, #0xc] - bl WL_InitDriver - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600018C: .word wmspW + 0x1000 -_06000190: .word wmspW -_06000194: .word wmspW + 0x20 -_06000198: .word wmspW + 0x28 -_0600019C: .word wmspW + 0x48 -_060001A0: .word wmspW + 0x58 -_060001A4: .word wmspW + 0x78 -_060001A8: .word wmspW + 0x88 -_060001AC: .word wmspW + 0xA8 -_060001B0: .word wmspW + 0x1528 -_060001B4: .word wmspIndicateThread -_060001B8: .word WMSP_IndicateThread -_060001BC: .word wmspRequestThread -_060001C0: .word WMSP_RequestThread -_060001C4: .word wmspW + 0x1128 -_060001C8: .word WmspPxiCallback - arm_func_end WMSP_Init - - arm_func_start __VENEER_OS_InitMessageQueue -__VENEER_OS_InitMessageQueue: ; 0x060001CC - ldr pc, _060001D0 ; =OS_InitMessageQueue - .align 2, 0 -_060001D0: .word OS_InitMessageQueue - arm_func_end __VENEER_OS_InitMessageQueue - - arm_func_start __VENEER_OS_InitMutex -__VENEER_OS_InitMutex: ; 0x060001D4 - ldr pc, _060001D8 ; =OS_InitMutex - .align 2, 0 -_060001D8: .word OS_InitMutex - arm_func_end __VENEER_OS_InitMutex - - arm_func_start __VENEER_OS_CreateThread -__VENEER_OS_CreateThread: ; 0x060001DC - ldr pc, _060001E0 ; =OS_CreateThread - .align 2, 0 -_060001E0: .word OS_CreateThread - arm_func_end __VENEER_OS_CreateThread - - arm_func_start __VENEER_OS_WakeupThreadDirect -__VENEER_OS_WakeupThreadDirect: ; 0x060001E4 - ldr pc, _060001E8 ; =OS_WakeupThreadDirect - .align 2, 0 -_060001E8: .word OS_WakeupThreadDirect - arm_func_end __VENEER_OS_WakeupThreadDirect - - arm_func_start __VENEER_OS_IsVAlarmAvailable -__VENEER_OS_IsVAlarmAvailable: ; 0x060001EC - ldr pc, _060001F0 ; =OS_IsVAlarmAvailable - .align 2, 0 -_060001F0: .word OS_IsVAlarmAvailable - arm_func_end __VENEER_OS_IsVAlarmAvailable - - arm_func_start __VENEER_OS_InitVAlarm -__VENEER_OS_InitVAlarm: ; 0x060001F4 - ldr pc, _060001F8 ; =OS_InitVAlarm - .align 2, 0 -_060001F8: .word OS_InitVAlarm - arm_func_end __VENEER_OS_InitVAlarm - - arm_func_start __VENEER_PXI_Init -__VENEER_PXI_Init: ; 0x060001FC - ldr pc, _06000200 ; =PXI_Init - .align 2, 0 -_06000200: .word PXI_Init - arm_func_end __VENEER_PXI_Init - - arm_func_start __VENEER_PXI_SetFifoRecvCallback -__VENEER_PXI_SetFifoRecvCallback: ; 0x06000204 - ldr pc, _06000208 ; =PXI_SetFifoRecvCallback - .align 2, 0 -_06000208: .word PXI_SetFifoRecvCallback - arm_func_end __VENEER_PXI_SetFifoRecvCallback - - arm_func_start WMSP_WlRequest -WMSP_WlRequest: ; 0x0600020C - stmdb sp!, {r3, lr} - mov r1, r0 - ldr r0, _0600027C ; =wmspW - mov r2, #1 - bl __VENEER_OS_SendMessage - ldr r0, _06000280 ; =wmspW + 0x58 - add r1, sp, #0 - mov r2, #1 - bl __VENEER_OS_ReceiveMessage - ldr r1, [sp] - ldrh r0, [r1, #0xe] - add r0, r1, r0, lsl #1 - ldrh r0, [r0, #0x14] - cmp r0, #0xe - bne _06000270 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #0x13 - strh r1, [r0, #2] - mov r1, #0x18 - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - bl __VENEER_SND_BeginSleep - bl __VENEER_OS_Terminate -_06000270: - ldr r0, [sp] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600027C: .word wmspW -_06000280: .word wmspW + 0x58 - arm_func_end WMSP_WlRequest - - arm_func_start __VENEER_OS_SendMessage -__VENEER_OS_SendMessage: ; 0x06000284 - ldr pc, _06000288 ; =OS_SendMessage - .align 2, 0 -_06000288: .word OS_SendMessage - arm_func_end __VENEER_OS_SendMessage - - arm_func_start __VENEER_OS_ReceiveMessage -__VENEER_OS_ReceiveMessage: ; 0x0600028C - ldr pc, _06000290 ; =OS_ReceiveMessage - .align 2, 0 -_06000290: .word OS_ReceiveMessage - arm_func_end __VENEER_OS_ReceiveMessage - - arm_func_start __VENEER_WMSP_GetBuffer4Callback2Wm9 -__VENEER_WMSP_GetBuffer4Callback2Wm9: ; 0x06000294 - ldr pc, _06000298 ; =WMSP_GetBuffer4Callback2Wm9 - .align 2, 0 -_06000298: .word WMSP_GetBuffer4Callback2Wm9 - arm_func_end __VENEER_WMSP_GetBuffer4Callback2Wm9 - - arm_func_start __VENEER_WMSP_ReturnResult2Wm9 -__VENEER_WMSP_ReturnResult2Wm9: ; 0x0600029C - ldr pc, _060002A0 ; =WMSP_ReturnResult2Wm9 - .align 2, 0 -_060002A0: .word WMSP_ReturnResult2Wm9 - arm_func_end __VENEER_WMSP_ReturnResult2Wm9 - - arm_func_start __VENEER_SND_BeginSleep -__VENEER_SND_BeginSleep: ; 0x060002A4 - ldr pc, _060002A8 ; =SND_BeginSleep - .align 2, 0 -_060002A8: .word SND_BeginSleep - arm_func_end __VENEER_SND_BeginSleep - - arm_func_start __VENEER_OS_Terminate -__VENEER_OS_Terminate: ; 0x060002AC - ldr pc, _060002B0 ; =OS_Terminate - .align 2, 0 -_060002B0: .word OS_Terminate - arm_func_end __VENEER_OS_Terminate - - arm_func_start WmspPxiCallback -WmspPxiCallback: ; 0x060002B4 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r2, #0 - bne _0600030C - ldr r0, _06000314 ; =wmspW + 0x88 - mov r2, #0 - bl __VENEER_OS_SendMessage - cmp r0, #0 - bne _0600030C - ldr r0, _06000318 ; =wmspW + 0x1000 - ldr r0, [r0, #0x54c] - cmp r0, #0 - beq _0600030C - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - ldrh r2, [r4] - mov r1, #8 - strh r2, [r0] - strh r1, [r0, #2] - mov r1, #0 - strh r1, [r0, #4] - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_0600030C: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06000314: .word wmspW + 0x88 -_06000318: .word wmspW + 0x1000 - arm_func_end WmspPxiCallback - - arm_func_start WMSP_CheckMacAddress -WMSP_CheckMacAddress: ; 0x0600031C - ldr r1, _06000378 ; =wmspW + 0x1000 - ldrb r2, [r0] - ldr r3, [r1, #0x550] - ldrb r1, [r3, #0xe0] - cmp r2, r1 - ldreqb r2, [r0, #1] - ldreqb r1, [r3, #0xe1] - cmpeq r2, r1 - ldreqb r2, [r0, #2] - ldreqb r1, [r3, #0xe2] - cmpeq r2, r1 - ldreqb r2, [r0, #3] - ldreqb r1, [r3, #0xe3] - cmpeq r2, r1 - ldreqb r2, [r0, #4] - ldreqb r1, [r3, #0xe4] - cmpeq r2, r1 - ldreqb r1, [r0, #5] - ldreqb r0, [r3, #0xe5] - cmpeq r1, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_06000378: .word wmspW + 0x1000 - arm_func_end WMSP_CheckMacAddress - - arm_func_start WMSP_CopyParentParam -WMSP_CopyParentParam: ; 0x0600037C - stmdb sp!, {r3, lr} - ldr r3, [r1, #8] - mov r2, r0 - str r3, [r2, #4] - ldrh r0, [r1, #0xc] - strh r0, [r2, #8] - ldrh r0, [r1, #0x12] - cmp r0, #0 - movne r3, #2 - ldrh r0, [r1, #0xe] - moveq r3, #0 - cmp r0, #0 - movne ip, #1 - ldrh r0, [r1, #0x14] - moveq ip, #0 - cmp r0, #0 - movne lr, #4 - moveq lr, #0 - orr r0, ip, r3 - orr r0, lr, r0 - strb r0, [r2, #0xb] - ldrh r3, [r1, #4] - mov r0, #1 - strb r3, [r2, #0xa] - strh r0, [r2] - strb r0, [r2, #2] - mov r0, #0 - strb r0, [r2, #3] - ldrh r0, [r1, #0x34] - strh r0, [r2, #0xc] - ldrh r0, [r1, #0x12] - cmp r0, #0 - beq _06000410 - ldrh r0, [r1, #0x36] - cmp r0, #8 - movhs r0, #8 - bhs _06000414 -_06000410: - ldrh r0, [r1, #0x36] -_06000414: - strh r0, [r2, #0xe] - ldrb r3, [r2, #0xa] - cmp r3, #0 - beq _06000438 - ldr r0, [r1] - add r3, r3, #1 - add r1, r2, #0x10 - bic r2, r3, #1 - bl __VENEER_MI_CpuCopy8 -_06000438: - ldmia sp!, {r3, lr} - bx lr - arm_func_end WMSP_CopyParentParam - - arm_func_start __VENEER_MI_CpuCopy8 -__VENEER_MI_CpuCopy8: ; 0x06000440 - ldr pc, _06000444 ; =MI_CpuCopy8 - .align 2, 0 -_06000444: .word MI_CpuCopy8 - arm_func_end __VENEER_MI_CpuCopy8 - - arm_func_start WMSP_SetAllParams -WMSP_SetAllParams: ; 0x06000448 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _06000590 ; =wmspW + 0x1000 - mov r5, r1 - ldr r4, [r2, #0x550] - mov r6, r0 - add r0, r4, #0xe0 - add r1, r5, #0x10 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - mov r0, #7 - strh r0, [r5, #0x16] - add r0, r4, #0x100 - ldrh r1, [r0, #0xf4] - strh r1, [r5, #0x18] - ldrh r1, [r0, #0xec] - strh r1, [r5, #0x1e] - ldrh r1, [r4, #0xe6] - strh r1, [r5, #0x1c] - ldr r1, [r4, #0x198] - cmp r1, #0 - bne _060004BC - mov r0, #0 - strh r0, [r5, #0x20] - add r1, r5, #0x24 - mov r2, #0x50 - strh r0, [r5, #0x22] - bl __VENEER_MIi_CpuClear16 - mov r0, #0 - b _060004E0 -_060004BC: - ldrh r1, [r0, #0x96] - add r0, r4, #0x19c - strh r1, [r5, #0x20] - ldrh r2, [r4, #0xc4] - add r1, r5, #0x24 - strh r2, [r5, #0x22] - mov r2, #0x50 - bl __VENEER_MI_CpuCopy8 - mov r0, #1 -_060004E0: - strh r0, [r5, #0x9e] - mov r0, #1 - strh r0, [r5, #0x74] - strh r0, [r5, #0x76] - ldrh r0, [r4, #0xe6] - add r1, r5, #0x7c - cmp r0, #1 - moveq r0, #0 - movne r0, #0x10 - strh r0, [r5, #0x78] - mov r0, #0xa - strh r0, [r5, #0x7a] - cmp r6, #0x26 - mov r0, #0 - bne _06000528 - mov r2, #0x20 - bl __VENEER_MIi_CpuClear16 - b _06000540 -_06000528: - mov r2, #8 - bl __VENEER_MIi_CpuClear16 - ldr r0, _06000594 ; =0x0000FFFF - add r1, r5, #0x84 - mov r2, #0x18 - bl __VENEER_MIi_CpuClear16 -_06000540: - add r0, r4, #0x100 - ldrh r1, [r0, #0xee] - mov r0, r5 - strh r1, [r5, #0x9c] - bl WMSP_WL_ParamSetAll - ldrh r4, [r0, #4] - cmp r4, #0 - moveq r0, #1 - beq _06000588 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - strh r6, [r0] - mov r1, #1 - strh r1, [r0, #2] - mov r1, #0x200 - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - mov r0, #0 -_06000588: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06000590: .word wmspW + 0x1000 -_06000594: .word 0x0000FFFF - arm_func_end WMSP_SetAllParams - - arm_func_start __VENEER_MIi_CpuClear16 -__VENEER_MIi_CpuClear16: ; 0x06000598 - ldr pc, _0600059C ; =MIi_CpuClear16 - .align 2, 0 -_0600059C: .word MIi_CpuClear16 - arm_func_end __VENEER_MIi_CpuClear16 - - arm_func_start WMSP_AddRssiToList -WMSP_AddRssiToList: ; 0x060005A0 - ldr r1, _060005D8 ; =wmspW + 0x1000 - ldr r3, _060005DC ; =wmspW + 0x1554 - ldr ip, [r1, #0x574] - ldr r2, _060005E0 ; =0x027FFF98 - strb r0, [r3, ip] - ldr r3, [r1, #0x574] - add r3, r3, #1 - and r3, r3, #0x1f - str r3, [r1, #0x574] - ldrh r1, [r2] - eor r0, r0, r1, lsl #1 - eor r0, r0, r0, lsr #16 - strh r0, [r2] - bx lr - .align 2, 0 -_060005D8: .word wmspW + 0x1000 -_060005DC: .word wmspW + 0x1554 -_060005E0: .word 0x027FFF98 - arm_func_end WMSP_AddRssiToList - - arm_func_start WMSP_FillRssiIntoList -WMSP_FillRssiIntoList: ; 0x060005E4 - ldr r2, _06000614 ; =wmspW - mov r3, #0 -_060005EC: - add r1, r2, r3 - add r1, r1, #0x1000 - add r3, r3, #1 - strb r0, [r1, #0x554] - cmp r3, #0x20 - blt _060005EC - ldr r0, _06000618 ; =wmspW + 0x1000 - mov r1, #0 - str r1, [r0, #0x574] - bx lr - .align 2, 0 -_06000614: .word wmspW -_06000618: .word wmspW + 0x1000 - arm_func_end WMSP_FillRssiIntoList - - arm_func_start WMSP_GetAverageLinkLevel -WMSP_GetAverageLinkLevel: ; 0x0600061C - ldr r1, _06000650 ; =wmspW - mov r3, #0 - mov r2, r3 -_06000628: - add r0, r1, r2 - add r0, r0, #0x1000 - ldrb r0, [r0, #0x554] - add r2, r2, #1 - cmp r2, #0x20 - add r3, r3, r0 - blt _06000628 - ldr ip, _06000654 ; =WMSP_GetLinkLevel - mov r0, r3, lsr #5 - bx ip - .align 2, 0 -_06000650: .word wmspW -_06000654: .word WMSP_GetLinkLevel - arm_func_end WMSP_GetAverageLinkLevel - - arm_func_start WMSP_GetLinkLevel -WMSP_GetLinkLevel: ; 0x06000658 - ldr r1, _060006BC ; =wmspW + 0x1000 - ldr r1, [r1, #0x54c] - ldrb r1, [r1, #0x53] - cmp r1, #8 - bne _06000694 - cmp r0, #0x16 - movlo r0, #0 - bxlo lr - cmp r0, #0x1c - movlo r0, #1 - bxlo lr - cmp r0, #0x22 - movlo r0, #2 - movhs r0, #3 - bx lr -_06000694: - cmp r0, #8 - movlo r0, #0 - bxlo lr - cmp r0, #0xe - movlo r0, #1 - bxlo lr - cmp r0, #0x14 - movlo r0, #2 - movhs r0, #3 - bx lr - .align 2, 0 -_060006BC: .word wmspW + 0x1000 - arm_func_end WMSP_GetLinkLevel - - arm_func_start WMSP_SetThreadPriorityLow -WMSP_SetThreadPriorityLow: ; 0x060006C0 - stmdb sp!, {r4, lr} - bl __VENEER_OS_DisableInterrupts - mov r4, r0 - bl __VENEER_OS_DisableScheduler - ldr r1, _06000714 ; =wmspW + 0x1000 - ldr r0, _06000718 ; =wmspRequestThread - ldr r1, [r1, #0x58c] - bl __VENEER_OS_SetThreadPriority - bl WL_GetThreadStruct - ldr r1, _06000714 ; =wmspW + 0x1000 - ldr r1, [r1, #0x588] - bl __VENEER_OS_SetThreadPriority - ldr r1, _06000714 ; =wmspW + 0x1000 - ldr r0, _0600071C ; =wmspIndicateThread - ldr r1, [r1, #0x584] - bl __VENEER_OS_SetThreadPriority - bl __VENEER_OS_EnableScheduler - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06000714: .word wmspW + 0x1000 -_06000718: .word wmspRequestThread -_0600071C: .word wmspIndicateThread - arm_func_end WMSP_SetThreadPriorityLow - - arm_func_start __VENEER_OS_DisableInterrupts -__VENEER_OS_DisableInterrupts: ; 0x06000720 - ldr pc, _06000724 ; =OS_DisableInterrupts - .align 2, 0 -_06000724: .word OS_DisableInterrupts - arm_func_end __VENEER_OS_DisableInterrupts - - arm_func_start __VENEER_OS_DisableScheduler -__VENEER_OS_DisableScheduler: ; 0x06000728 - ldr pc, _0600072C ; =OS_DisableScheduler - .align 2, 0 -_0600072C: .word OS_DisableScheduler - arm_func_end __VENEER_OS_DisableScheduler - - arm_func_start __VENEER_OS_SetThreadPriority -__VENEER_OS_SetThreadPriority: ; 0x06000730 - ldr pc, _06000734 ; =OS_SetThreadPriority - .align 2, 0 -_06000734: .word OS_SetThreadPriority - arm_func_end __VENEER_OS_SetThreadPriority - - arm_func_start __VENEER_OS_EnableScheduler -__VENEER_OS_EnableScheduler: ; 0x06000738 - ldr pc, _0600073C ; =OS_EnableScheduler - .align 2, 0 -_0600073C: .word OS_EnableScheduler - arm_func_end __VENEER_OS_EnableScheduler - - arm_func_start __VENEER_OS_RestoreInterrupts -__VENEER_OS_RestoreInterrupts: ; 0x06000740 - ldr pc, _06000744 ; =OS_RestoreInterrupts - .align 2, 0 -_06000744: .word OS_RestoreInterrupts - arm_func_end __VENEER_OS_RestoreInterrupts - - arm_func_start WMSP_SetThreadPriorityHigh -WMSP_SetThreadPriorityHigh: ; 0x06000748 - stmdb sp!, {r4, lr} - bl __VENEER_OS_DisableInterrupts - mov r4, r0 - bl __VENEER_OS_DisableScheduler - ldr r1, _0600079C ; =wmspW + 0x1000 - ldr r0, _060007A0 ; =wmspIndicateThread - ldr r1, [r1, #0x578] - bl __VENEER_OS_SetThreadPriority - bl WL_GetThreadStruct - ldr r1, _0600079C ; =wmspW + 0x1000 - ldr r1, [r1, #0x57c] - bl __VENEER_OS_SetThreadPriority - ldr r1, _0600079C ; =wmspW + 0x1000 - ldr r0, _060007A4 ; =wmspRequestThread - ldr r1, [r1, #0x580] - bl __VENEER_OS_SetThreadPriority - bl __VENEER_OS_EnableScheduler - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600079C: .word wmspW + 0x1000 -_060007A0: .word wmspIndicateThread -_060007A4: .word wmspRequestThread - arm_func_end WMSP_SetThreadPriorityHigh - - arm_func_start WMSP_GetRequestThread -WMSP_GetRequestThread: ; 0x060007A8 - ldr r0, _060007B0 ; =wmspRequestThread - bx lr - .align 2, 0 -_060007B0: .word wmspRequestThread - arm_func_end WMSP_GetRequestThread - - arm_func_start WMSP_GetIndicateThread -WMSP_GetIndicateThread: ; 0x060007B4 - ldr r0, _060007BC ; =wmspIndicateThread - bx lr - .align 2, 0 -_060007BC: .word wmspIndicateThread - arm_func_end WMSP_GetIndicateThread - - arm_func_start WMSP_GetInternalRequestBuf -WMSP_GetInternalRequestBuf: ; 0x060007C0 - stmdb sp!, {r4, lr} - mov r4, #0 - bl __VENEER_OS_DisableInterrupts - ldr r1, _06000828 ; =wmspW + 0x1000 - ldr r2, [r1, #0x54c] - cmp r2, #0 - beq _06000818 - mov r3, r4 - b _06000810 -_060007E4: - add r1, r2, r3, lsl #4 - ldr r1, [r1, #0xd0] - tst r1, #0x8000 - beq _0600080C - add r2, r2, #0xd0 - ldr r1, [r2, r3, lsl #4] - add r4, r2, r3, lsl #4 - bic r1, r1, #0x8000 - str r1, [r2, r3, lsl #4] - b _06000818 -_0600080C: - add r3, r3, #1 -_06000810: - cmp r3, #0x20 - blt _060007E4 -_06000818: - bl __VENEER_OS_RestoreInterrupts - mov r0, r4 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06000828: .word wmspW + 0x1000 - arm_func_end WMSP_GetInternalRequestBuf - - arm_func_start WMSP_ResetSizeVars -WMSP_ResetSizeVars: ; 0x0600082C - ldr r0, _0600085C ; =wmspW + 0x1000 - mov r1, #0 - ldr r0, [r0, #0x550] - strh r1, [r0, #0x38] - strh r1, [r0, #0x3a] - strh r1, [r0, #0x30] - strh r1, [r0, #0x32] - strh r1, [r0, #0x3c] - strh r1, [r0, #0x3e] - strh r1, [r0, #0x34] - strh r1, [r0, #0x36] - bx lr - .align 2, 0 -_0600085C: .word wmspW + 0x1000 - arm_func_end WMSP_ResetSizeVars - - arm_func_start WMSP_SetParentMaxSize -WMSP_SetParentMaxSize: ; 0x06000860 - ldr r1, _060008AC ; =wmspW + 0x1000 - cmp r0, #0x200 - ldr r2, [r1, #0x550] - movhi r0, #0x200 - strh r0, [r2, #0x30] - strh r0, [r2, #0x34] - add r1, r2, #0x100 - ldrh r1, [r1, #0x88] - add r0, r0, #4 - cmp r1, #0 - moveq r0, r0, lsl #0x10 - moveq r0, r0, lsr #0x10 - streqh r0, [r2, #0x3c] - streqh r0, [r2, #0x38] - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - strneh r0, [r2, #0x3e] - strneh r0, [r2, #0x3a] - bx lr - .align 2, 0 -_060008AC: .word wmspW + 0x1000 - arm_func_end WMSP_SetParentMaxSize - - arm_func_start WMSP_SetChildMaxSize -WMSP_SetChildMaxSize: ; 0x060008B0 - ldr r1, _060008FC ; =wmspW + 0x1000 - cmp r0, #0x200 - ldr r2, [r1, #0x550] - movhi r0, #0x200 - strh r0, [r2, #0x36] - strh r0, [r2, #0x32] - add r1, r2, #0x100 - ldrh r1, [r1, #0x88] - add r0, r0, #2 - cmp r1, #0 - moveq r0, r0, lsl #0x10 - moveq r0, r0, lsr #0x10 - streqh r0, [r2, #0x3e] - streqh r0, [r2, #0x3a] - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - strneh r0, [r2, #0x3c] - strneh r0, [r2, #0x38] - bx lr - .align 2, 0 -_060008FC: .word wmspW + 0x1000 - arm_func_end WMSP_SetChildMaxSize - - arm_func_start WMSP_SetParentSize -WMSP_SetParentSize: ; 0x06000900 - ldr r1, _06000928 ; =wmspW + 0x1000 - ldr r2, [r1, #0x550] - strh r0, [r2, #0x30] - add r1, r2, #0x100 - ldrh r1, [r1, #0x88] - add r0, r0, #4 - cmp r1, #0 - streqh r0, [r2, #0x38] - strneh r0, [r2, #0x3a] - bx lr - .align 2, 0 -_06000928: .word wmspW + 0x1000 - arm_func_end WMSP_SetParentSize - - arm_func_start WMSP_SetChildSize -WMSP_SetChildSize: ; 0x0600092C - ldr r1, _06000954 ; =wmspW + 0x1000 - ldr r2, [r1, #0x550] - strh r0, [r2, #0x32] - add r1, r2, #0x100 - ldrh r1, [r1, #0x88] - add r0, r0, #2 - cmp r1, #0 - streqh r0, [r2, #0x3a] - strneh r0, [r2, #0x38] - bx lr - .align 2, 0 -_06000954: .word wmspW + 0x1000 - arm_func_end WMSP_SetChildSize - - arm_func_start WMSP_IndicateThread -WMSP_IndicateThread: ; 0x06000958 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 -_06000960: - ldr r0, _060017D4 ; =wmspW - add r1, sp, #0x24 - add r0, r0, #0x28 - mov r2, #1 - bl __VENEER_OS_ReceiveMessage - ldr sb, [sp, #0x24] - cmp sb, #0 - bne _06000988 - bl __VENEER_OS_ExitThread - b _06001AD4 -_06000988: - ldrh r1, [sb, #0xc] - and r0, r1, #0xff00 - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - and r1, r1, #0xff - cmpne r0, #0x100 - bne _06001ABC - tst r1, #0x80 - beq _06001ABC - ldr r0, _060017D8 ; =wmspW + 0x1000 - ldr r1, [r0, #0x54c] - cmp r1, #0 - ldrne r8, [r0, #0x550] - ldrneh r3, [r8] - cmpne r3, #1 - beq _06000960 - ldrh r2, [sb, #0xc] - ldr r1, _060017DC ; =0x00000182 - cmp r2, r1 - bgt _06000A24 - bge _060010DC - cmp r2, #0x8d - bgt _06000A18 - subs r0, r2, #0x84 - addpl pc, pc, r0, lsl #2 - b _06001AB0 -_060009F0: ; jump table - b _06000A50 ; case 0 - b _06000A74 ; case 1 - b _06000D00 ; case 2 - b _06000E64 ; case 3 - b _06000E88 ; case 4 - b _06001AB0 ; case 5 - b _06001AB0 ; case 6 - b _06000EAC ; case 7 - b _06000EDC ; case 8 - b _06000F0C ; case 9 -_06000A18: - cmp r2, #0x180 - beq _06001024 - b _06001AB0 -_06000A24: - add r0, r1, #3 - cmp r2, r0 - bgt _06000A40 - bge _06001754 - cmp r2, #0x184 - beq _060013D4 - b _06001AB0 -_06000A40: - add r0, r1, #4 - cmp r2, r0 - beq _060019B8 - b _06001AB0 -_06000A50: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0x13 - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000A74: - cmp r3, #7 - cmpne r3, #9 - bne _06000BFC - add r1, sp, #0x1c - add r0, sb, #0x10 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - mov r6, #0 - mov r5, r6 - add r4, r8, #0x100 - mov sl, #1 - b _06000B74 -_06000AA4: - bl __VENEER_OS_DisableInterrupts - ldrh r2, [r4, #0x82] - add r1, r5, #1 - mov r7, r0 - tst r2, sl, lsl r1 - beq _06000B68 - mov r0, #6 - mul r2, r5, r0 - add r0, r8, r2 - ldrb fp, [sp, #0x1c] - ldrb r3, [r0, #0x128] - cmp fp, r3 - ldreqb fp, [sp, #0x1d] - ldreqb r3, [r0, #0x129] - cmpeq fp, r3 - ldreqb fp, [sp, #0x1e] - ldreqb r3, [r0, #0x12a] - cmpeq fp, r3 - ldreqb fp, [sp, #0x1f] - ldreqb r3, [r0, #0x12b] - cmpeq fp, r3 - ldreqb fp, [sp, #0x20] - ldreqb r3, [r0, #0x12c] - cmpeq fp, r3 - ldreqb r3, [sp, #0x21] - ldreqb r0, [r0, #0x12d] - cmpeq r3, r0 - bne _06000B68 - add r3, r8, #0x100 - mov r0, r1, lsl #0x10 - mov r6, r0, lsr #0x10 - ldrh r0, [r3, #0x82] - mvn r1, sl, lsl r6 - and r0, r0, r1 - strh r0, [r3, #0x82] - ldrh r0, [r8, #0x86] - add r3, r8, r6, lsl #3 - and r1, r0, r1 - add r0, r8, #0x128 - strh r1, [r8, #0x86] - mov r1, #0 - str r1, [r3, #0x738] - add r0, r0, r2 - mov r2, #6 - str r1, [r3, #0x73c] - bl __VENEER_MI_CpuFill8 - mov r0, r7 - bl __VENEER_OS_RestoreInterrupts - b _06000B7C -_06000B68: - mov r0, r7 - bl __VENEER_OS_RestoreInterrupts - add r5, r5, #1 -_06000B74: - cmp r5, #0xf - blt _06000AA4 -_06000B7C: - cmp r6, #0 - beq _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #8 - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #9 - strh r0, [r4, #8] - ldrh r1, [sb, #0x16] - add r0, sb, #0x10 - strh r1, [r4, #0x12] - strh r6, [r4, #0x10] - add r1, r4, #0xa - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r1, [r8, #0x30] - mov r0, r4 - strh r1, [r4, #0x2c] - ldrh r1, [r8, #0x32] - strh r1, [r4, #0x2e] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldr r0, [r8, #0xc] - cmp r0, #1 - bne _06001AB0 - mov r0, #1 - mov r0, r0, lsl r6 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_CleanSendQueue - b _06001AB0 -_06000BFC: - mov r5, #0 - bl __VENEER_OS_DisableInterrupts - add r1, r8, #0x100 - ldrh r1, [r1, #0x82] - mov r4, r0 - cmp r1, #0 - bne _06000C20 - bl __VENEER_OS_RestoreInterrupts - b _06001AB0 -_06000C20: - ldr r0, [r8, #0xc] - cmp r0, #1 - bne _06000C40 - mov r0, r5 - str r0, [r8, #0xc] - mov r5, #1 - bl WMSP_CancelVAlarm - bl WMSP_SetThreadPriorityLow -_06000C40: - add r0, r8, #0x100 - mov r1, #0 - strh r1, [r0, #0x82] - strh r1, [r8, #0x86] - str r1, [r8, #0x14] - str r1, [r8, #0x10] - str r1, [r8, #0x1c] - str r1, [r8, #0x198] - strh r1, [r0, #0x96] - add r0, r8, #0x19c - mov r2, #0x50 - bl __VENEER_MI_CpuFill8 - bl WMSP_ResetSizeVars - mov r0, #0 - strh r0, [r8, #0xc2] - mov r1, #3 - mov r0, r4 - strh r1, [r8] - bl __VENEER_OS_RestoreInterrupts - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0xc - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #9 - strh r0, [r4, #8] - ldrh r1, [sb, #0x16] - add r0, r8, #0x100 - strh r1, [r4, #0xc] - ldrh r1, [r0, #0x88] - add r0, r8, #0x8a - strh r1, [r4, #0xa] - add r0, r0, #0x100 - add r1, r4, #0x10 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r1, [r8, #0x30] - mov r0, r4 - strh r1, [r4, #0x16] - ldrh r1, [r8, #0x32] - strh r1, [r4, #0x18] - bl __VENEER_WMSP_ReturnResult2Wm9 - cmp r5, #0 - beq _06001AB0 - mov r0, #1 - bl WMSP_CleanSendQueue - b _06001AB0 -_06000D00: - ldrh r5, [sb, #0x16] - cmp r5, #0 - beq _06001AB0 - cmp r5, #0x10 - bhs _06001AB0 - ldrh r0, [r8, #0xf6] - cmp r0, #0 - bne _06000D8C - bl WMSP_GetInternalRequestBuf - movs r4, r0 - moveq r0, #0 - beq _06000D58 - mov r3, #0x22 - add r0, sb, #0x10 - add r1, r4, #4 - mov r2, #6 - str r3, [r4] - bl __VENEER_MI_CpuCopy8 - ldr r0, _060017E0 ; =wmspW + 0x88 - mov r1, r4 - mov r2, #0 - bl __VENEER_OS_SendMessage -_06000D58: - cmp r0, #0 - bne _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x22 - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000D8C: - bl __VENEER_OS_DisableInterrupts - add r1, r8, #0x100 - mov r4, #1 - ldrh r3, [r1, #0x82] - mvn r2, r4, lsl r5 - orr r3, r3, r4, lsl r5 - strh r3, [r1, #0x82] - ldrh r1, [r8, #0x86] - mov r4, r0 - and r0, r1, r2 - strh r0, [r8, #0x86] - bl __VENEER_OS_GetTick - orr r2, r0, #1 - add r0, r8, r5, lsl #3 - add r3, r8, #0x128 - str r2, [r0, #0x738] - orr r1, r1, #0 - str r1, [r0, #0x73c] - sub r0, r5, #1 - mov r2, #6 - mla r1, r0, r2, r3 - add r0, sb, #0x10 - bl __VENEER_MI_CpuCopy8 - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - mov r0, #1 - add r1, r8, #0x1f8 - add r1, r1, r5, lsl #4 - mov r2, #0x10 - bl __VENEER_MIi_CpuClear16 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #8 - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #7 - strh r0, [r4, #8] - add r0, sb, #0x10 - add r1, r4, #0xa - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - strh r5, [r4, #0x10] - add r0, sb, #0x22 - add r1, r4, #0x14 - mov r2, #0x18 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r8, #0x30] - mov r0, r4 - strh r1, [r4, #0x2c] - ldrh r1, [r8, #0x32] - strh r1, [r4, #0x2e] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000E64: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0x12 - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000E88: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0x11 - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000EAC: - ldrh r0, [r8, #0xc2] - cmp r0, #0 - beq _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #8 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000EDC: - ldrh r0, [r8, #0xc2] - cmp r0, #0 - beq _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #8 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #2 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000F0C: - ldrb r0, [sb, #0x1f] - bl WMSP_GetRssi8_06001B5C - ldr r2, _060017E4 ; =0x027FFF98 - ldrh r1, [r2] - eor r0, r0, r1, lsl #1 - eor r0, r0, r0, lsr #16 - strh r0, [r2] - ldrh r0, [r8] - cmp r0, #8 - cmpne r0, #0xa - bne _06001AB0 - ldrh r1, [r8, #0xba] - ldrh r0, [sb, #0x44] - cmp r1, r0 - beq _06000FB0 - bl WMSP_GetInternalRequestBuf - movs r1, r0 - moveq r0, #0 - beq _06000F7C - mov r0, #0x25 - str r0, [r1] - mov r0, #1 - ldr r3, _060017E8 ; =0x00008002 - str r0, [r1, #4] - ldr r0, _060017E0 ; =wmspW + 0x88 - mov r2, #0 - str r3, [r1, #8] - bl __VENEER_OS_SendMessage -_06000F7C: - cmp r0, #0 - bne _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x25 - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06000FB0: - ldr r0, _060017D8 ; =wmspW + 0x1000 - ldr r0, [r0, #0x550] - ldrh r0, [r0, #0xc2] - cmp r0, #0 - beq _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0x80 - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #0x10 - strh r0, [r4, #4] - ldrh r0, [sb, #0x44] - strh r0, [r4, #6] - ldrh r0, [r8] - strh r0, [r4, #8] - ldrh r0, [sb, #0x16] - strh r0, [r4, #0xa] - cmp r0, #0x80 - bhi _06001018 - add r2, r0, #1 - add r0, sb, #0x3c - add r1, r4, #0xc - bic r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_06001018: - mov r0, r4 - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06001024: - ldr r0, [r8, #0x10] - cmp r0, #0 - beq _06001AB0 - ldrb r0, [sb, #0x1f] - bl WMSP_GetRssi8_06001B5C - bl WMSP_AddRssiToList - bl WMSP_GetAverageLinkLevel - strh r0, [r8, #0xbc] - add r0, sb, #0x2e - bl WMSP_CheckMacAddress - cmp r0, #1 - beq _06001AB0 - ldrh r1, [sb, #0x16] - ldr r0, _060017EC ; =0x000005E4 - cmp r1, r0 - bhi _06001AB0 - ldrh r1, [r8, #0xae] - add r0, sb, #0x10 - eor r1, r1, #1 - strh r1, [r8, #0xae] - ldrh r2, [r8, #0xae] - ldrh r1, [sb, #0x16] - add r2, r8, r2, lsl #2 - ldr r4, [r2, #0xb0] - add r2, r1, #0x2d - mov r1, r4 - bic r2, r2, #1 - bl __VENEER_MI_CpuCopy8 - add r0, sb, #0x28 - add r1, r4, #0x18 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, sb, #0x2e - add r1, r4, #0x1e - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x11 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0xf - strh r1, [r0, #4] - str r4, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_060010DC: - ldrb r0, [sb, #0x1f] - bl WMSP_GetRssi8_06001B5C - ldrh r1, [r8, #0xbe] - cmp r1, r0 - strhih r0, [r8, #0xbe] - ldr r0, [r8, #0xc] - cmp r0, #0 - beq _06001AB0 - ldrh r0, [r8, #0x60] - cmp r0, #1 - moveq r0, #0 - streqh r0, [r8, #0x60] - ldrh r0, [r8, #0x70] - ldrh sl, [r8, #0x8e] - eor r0, r0, #1 - strh r0, [r8, #0x70] - ldrh r0, [r8, #0x70] - ldrh r1, [sb, #0x16] - add r3, r8, r0, lsl #2 - ldrh r0, [r8, #0x72] - add r2, r1, #0x30 - ldr r4, [r3, #0x74] - cmp r0, r2 - movlo r2, r0 - mov r1, r4 - add r0, sb, #0x10 - bl __VENEER_MI_CpuCopy8 - bl __VENEER_OS_DisableInterrupts - ldrh r1, [r8, #0x84] - mov fp, r0 - cmp r1, #1 - mov r5, #0 - bne _0600116C - ldr r0, _060017F0 ; =wmspMPAckAlarm - mov r5, #1 - bl __VENEER_OS_CancelAlarm -_0600116C: - mov r7, #1 - strh r7, [r8, #0x84] - ldrh r0, [r4, #0xa] - ldr r2, _060017F4 ; =0x000082EA - strh r0, [r8, #0x82] - ldrh r6, [sb, #0x18] - mov r0, #0 - tst r6, #0x2000 - moveq r7, #0 - strh r7, [r8, #0x90] - str r0, [sp] - ldrh r1, [r4, #0xa] - ldrh r0, [r4, #0xc] - sub r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add r0, r0, #0x80 - mov r3, r0, lsl #4 - umull r1, r0, r3, r2 - mov r3, r3, asr #0x1f - mla r0, r3, r2, r0 - mov r1, r1, lsr #6 - orr r1, r1, r0, lsl #26 - mov r3, r0, lsr #6 - mov r1, r1, lsr #0xa - ldr r0, _060017F0 ; =wmspMPAckAlarm - mov r2, r3, lsr #0xa - orr r1, r1, r3, lsl #22 - ldr r3, _060017F8 ; =WmspMaMultiPollAckAlarmCallback - bl __VENEER_OS_SetAlarm - and r0, r6, #0x2800 - cmp r0, #0x2800 - moveq r1, #1 - and r0, r6, #0x6000 - movne r1, #0 - cmp r0, #0x6000 - moveq r2, #1 - movne r2, #0 - cmp r2, #0 - movne r0, #0 - strneh r0, [r8, #0x8a] - cmp r1, #0 - movne r0, #1 - moveq r0, #0 - strh r0, [r8, #0x8e] - cmp r2, #0 - movne r0, #1 - moveq r0, #0 - strh r0, [r8, #0x8c] - cmp r7, #0 - beq _06001274 - ldrh r0, [r4, #0x2c] - sub r1, r0, #0x66 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - mov r0, r0, asr #2 - subs r1, r0, #0x20 - bmi _06001274 - ldrh r0, [r8, #0x32] - cmp r1, #0x200 - movgt r1, #0x200 - cmp r1, r0 - beq _06001274 - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_SetChildSize -_06001274: - mov r0, fp - bl __VENEER_OS_RestoreInterrupts - cmp r5, #0 - beq _060012C0 - cmp sl, #1 - bne _06001298 - mov r0, r5 - mov r1, #0 - bl WMSP_FlushSendQueue -_06001298: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - mov r1, #9 - strh r1, [r0, #2] - mov r1, #0xd - strh r1, [r0, #4] - mov r1, #0 - str r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060012C0: - cmp r7, #0 - bne _060012EC - ldrh r0, [r4, #6] - cmp r0, #2 - blo _06001AB0 - ldrh r0, [r4, #0x30] - tst r0, #0x8000 - movne r0, #1 - moveq r0, #0 - strh r0, [r8, #0x5e] - b _06001AB0 -_060012EC: - add r0, sb, #0x28 - add r1, r4, #0x18 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, sb, #0x2e - add r1, r4, #0x1e - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r0, [r4, #6] - cmp r0, #2 - blo _0600137C - sub r0, r0, #2 - strh r0, [r4, #6] - ldrh r0, [r4, #0x30] - tst r0, #0x8000 - movne r0, #1 - moveq r0, #0 - strh r0, [r8, #0x5e] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0xc - strh r1, [r0, #4] - str r4, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldrh r3, [r4, #6] - cmp r3, #0 - beq _060013A8 - str r4, [sp] - ldrh r1, [r4, #0x30] - add r2, r4, #0x32 - mov r0, #0 - bl WMSP_ParsePortPacket - b _060013A8 -_0600137C: - mov r0, #0 - strh r0, [r4, #6] - strh r0, [r8, #0x5e] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - strh r1, [r0, #2] - mov r1, #0xc - strh r1, [r0, #4] - str r4, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060013A8: - ldr r0, [r8, #0x7bc] - ldr r1, [r8, #0x7b8] - cmp r0, #0 - cmpeq r1, #0 - beq _06001AB0 - bl __VENEER_OS_GetTick - orr r0, r0, #1 - str r0, [r8, #0x738] - orr r0, r1, #0 - str r0, [r8, #0x73c] - b _06001AB0 -_060013D4: - ldr r1, [r8, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - cmp r1, #0 - beq _06001AB0 - ldrh r0, [sb, #0x12] - cmp r0, #0 - bne _0600140C - ldrh r1, [r8, #0x66] - cmp r1, #1 - bne _06001414 - ldrh r0, [sb, #0x10] - cmp r0, #0 - beq _06001414 -_0600140C: - bl WMSP_RequestResumeMP - b _06001AB0 -_06001414: - cmp r1, #0 - movne r0, #0 - strneh r0, [r8, #0x66] - ldrh r1, [sb, #0x16] - ldrh r0, [sb, #0x14] - ldrh r3, [r8, #0x70] - mul r2, r1, r0 - add r1, r8, r3, lsl #2 - ldr r6, [r1, #0x74] - ldrh r0, [r8, #0x72] - add r2, r2, #0xa - cmp r0, r2 - movlo r2, r0 - mov r1, r6 - add r0, sb, #0x10 - bl __VENEER_MI_CpuCopy8 - ldr r0, _060017D8 ; =wmspW + 0x1000 - ldrh r1, [r6] - ldr r7, [r0, #0x550] - cmp r1, #0 - ldrh r4, [r7, #0xbe] - bne _060014B0 - ldrh r0, [sb, #0x14] - cmp r0, #1 - blo _060014B0 - add sl, sb, #0x1a - mov r5, #0 - b _060014A0 -_06001484: - ldrh r1, [sb, #0x16] - mla r0, r1, r5, sl - ldrb r0, [r0, #3] - bl WMSP_GetRssi8_06001B5C - cmp r0, r4 - movlo r4, r0 - add r5, r5, #1 -_060014A0: - ldrh r0, [sb, #0x14] - cmp r5, r0 - blt _06001484 - strh r4, [r7, #0xbe] -_060014B0: - bl __VENEER_OS_GetTick - orr r0, r0, #1 - str r0, [sp, #8] - ldrh fp, [r6] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, _060017FC ; =0x00008001 - orr r1, r1, #0 - rsb r0, r0, #0x18000 - mov r4, #0 - str r1, [sp, #0xc] - add sl, r6, #0xa - str r0, [sp, #0x18] - mov r5, r4 - b _0600165C -_060014EC: - ldrh r7, [sl, #4] - ldrh r1, [sl] - cmp r7, #1 - blo _06001640 - cmp r7, #0xf - bhi _06001640 - cmp r1, #2 - blo _06001568 - ldr r0, [sp, #0x18] - cmp r1, r0 - beq _06001568 - sub r0, r1, #2 - mov r0, r0, lsl #0x10 - movs r3, r0, lsr #0x10 - strh r3, [sl] - ldrh r2, [r8, #0x86] - mov r1, #1 - orr r1, r2, r1, lsl r7 - strh r1, [r8, #0x86] - ldr r1, [sp, #8] - add r0, r8, r7, lsl #3 - str r1, [r0, #0x738] - ldr r1, [sp, #0xc] - str r1, [r0, #0x73c] - beq _06001640 - mov r0, r7 - str r6, [sp] - ldrh r1, [sl, #8] - add r2, sl, #0xa - bl WMSP_ParsePortPacket - b _06001640 -_06001568: - cmp r1, #0 - bne _06001640 - add r0, r8, r7, lsl #3 - ldr r2, [r0, #0x738] - ldr r1, [r0, #0x73c] - mov r0, #1 - mov r0, r0, lsl r7 - str r0, [sp, #4] - mov r0, #1 - orr fp, fp, r0, lsl r7 - ldr ip, [r8, #0x7bc] - ldr r0, [r8, #0x7b8] - cmp ip, #0 - mov r3, #0 - cmpeq r0, r5 - beq _06001640 - cmp r1, r3 - cmpeq r2, r4 - beq _06001640 - ldr r3, [sp, #8] - subs r3, r3, r2 - ldr r2, [sp, #0xc] - sbc r1, r2, r1 - cmp r1, ip - cmpeq r3, r0 - bls _06001640 - bl WMSP_GetInternalRequestBuf - movs r1, r0 - add r2, r8, r7, lsl #3 - mov r0, #0 - str r0, [r2, #0x738] - str r0, [r2, #0x73c] - beq _06001610 - mov r0, #0x25 - str r0, [r1] - ldr r0, [sp, #4] - mov r2, #0 - str r0, [r1, #4] - ldr r0, _060017FC ; =0x00008001 - str r0, [r1, #8] - ldr r0, _060017E0 ; =wmspW + 0x88 - bl __VENEER_OS_SendMessage -_06001610: - cmp r0, #0 - bne _06001640 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x25 - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06001640: - ldr r0, [sp, #0x14] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [sp, #0x14] - ldrh r0, [r6, #6] - add sl, sl, r0 -_0600165C: - ldrh r1, [r6, #4] - ldr r0, [sp, #0x14] - cmp r0, r1 - blo _060014EC - mov r0, fp, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, #0 - bl WMSP_FlushSendQueue - ldrh r0, [r6] - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x10] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0xb - strh r1, [r0, #4] - str r6, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldrh r0, [r8, #0x70] - eor r0, r0, #1 - strh r0, [r8, #0x70] - bl __VENEER_OS_DisableInterrupts - ldr r1, [sp, #0x10] - cmp r1, #0 - ldreqsh r1, [r8, #0x62] - subeq r1, r1, #1 - streqh r1, [r8, #0x62] - ldrsh r1, [r8, #0x64] - cmp r1, #0 - subgt r1, r1, #1 - strgth r1, [r8, #0x64] - ldrsh r1, [r8, #0x62] - cmp r1, #0 - ldrgtsh r1, [r8, #0x64] - cmpgt r1, #0 - movgt r4, #1 - movle r4, #0 - bl __VENEER_OS_RestoreInterrupts - cmp r4, #0 - beq _06001AB0 - ldr r0, [sp, #0x10] - cmp r0, #1 - ldreqh r4, [sb, #0x10] - ldrh r0, [r8, #0x44] - ldrne r4, _06001800 ; =0x0000FFFF - cmp r0, #0 - beq _06001748 - ldr r0, _06001804 ; =wmspMPIntervalAlarm - bl __VENEER_OS_CancelAlarm - str r4, [sp] - ldr r1, [r8, #0x48] - ldr r2, [r8, #0x4c] - ldr r0, _06001804 ; =wmspMPIntervalAlarm - ldr r3, _06001808 ; =WmspMPParentIntervalAlarmCallback - bl __VENEER_OS_SetAlarm - b _06001AB0 -_06001748: - mov r0, r4 - bl WmspKickMPParent - b _06001AB0 -_06001754: - ldr r0, [r8, #0xc] - mov r5, #0 - cmp r0, #0 - beq _06001AB0 - ldrh r0, [sb, #0xe] - cmp r0, #0 - bne _060017B4 - ldr r1, _0600180C ; =0x048080F8 - mov r4, #1 - ldrh r0, [r1] - ldrh r3, [r1, #2] - ldrh r2, [r1] - cmp r0, r2 - ldrhih r3, [r1, #2] - mov r0, r2, asr #4 - orr r0, r0, r3, lsl #12 - ldrh r1, [r8, #0x82] - mov r0, r0, lsl #0x10 - rsb r0, r1, r0, lsr #16 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #0 - ble _06001AB0 - b _060017B8 -_060017B4: - mov r4, r5 -_060017B8: - bl __VENEER_OS_DisableInterrupts - ldrh r1, [r8, #0x84] - mov r7, r0 - cmp r1, #0 - bne _06001810 - bl __VENEER_OS_RestoreInterrupts - b _06001AB0 - .align 2, 0 -_060017D4: .word wmspW -_060017D8: .word wmspW + 0x1000 -_060017DC: .word 0x00000182 -_060017E0: .word wmspW + 0x88 -_060017E4: .word 0x027FFF98 -_060017E8: .word 0x00008002 -_060017EC: .word 0x000005E4 -_060017F0: .word wmspMPAckAlarm -_060017F4: .word 0x000082EA -_060017F8: .word WmspMaMultiPollAckAlarmCallback -_060017FC: .word 0x00008001 -_06001800: .word 0x0000FFFF -_06001804: .word wmspMPIntervalAlarm -_06001808: .word WmspMPParentIntervalAlarmCallback -_0600180C: .word 0x048080F8 -_06001810: - ldr r0, _060017F0 ; =wmspMPAckAlarm - mov r1, #0 - strh r1, [r8, #0x84] - ldrh r6, [r8, #0x90] - bl __VENEER_OS_CancelAlarm - mov r0, r7 - bl __VENEER_OS_RestoreInterrupts - ldrh r3, [r8, #0x8c] - mov r2, #1 - cmp r3, #0 - beq _0600185C - cmp r4, #0 - bne _06001858 - add r0, r8, #0x100 - ldrh r1, [sb, #0x3e] - ldrh r0, [r0, #0x88] - tst r1, r2, lsl r0 - bne _0600185C -_06001858: - mov r2, #0 -_0600185C: - cmp r3, #0 - movne r0, #0 - strneh r0, [r8, #0x8c] - ldrh r0, [r8, #0x8e] - cmp r0, #0 - beq _06001898 - mov r0, #0 - strh r0, [r8, #0x8e] - cmp r2, #0 - movne r0, #1 - mov r1, r0, lsl #0x10 - mov r0, r4 - mov r1, r1, lsr #0x10 - bl WMSP_FlushSendQueue - mov r5, r0 -_06001898: - cmp r6, #0 - beq _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r7, r0 - mov r0, #0xe - strh r0, [r7] - cmp r4, #0 - movne r0, #9 - strneh r0, [r7, #2] - bne _060018E4 - add r0, r8, #0x100 - ldrh r2, [sb, #0x3e] - ldrh r0, [r0, #0x88] - mov r1, #1 - tst r2, r1, lsl r0 - movne r0, #0xf - strneh r0, [r7, #2] - moveq r0, #0 - streqh r0, [r7, #2] -_060018E4: - mov r0, #0xd - strh r0, [r7, #4] - mov r0, #0 - str r0, [r7, #8] - cmp r4, #0 - bne _06001944 - ldrh r1, [sb, #0x1c] - add r0, sb, #0x28 - strh r1, [r7, #0xc] - ldrh r2, [sb, #0x1e] - add r1, r7, #0x10 - strh r2, [r7, #0xe] - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, sb, #0x2e - add r1, r7, #0x16 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r0, [sb, #0x3a] - strh r0, [r7, #0x1c] - ldrh r0, [sb, #0x3c] - strh r0, [r7, #0x1e] - ldrh r0, [sb, #0x3e] - strh r0, [r7, #0x20] -_06001944: - mov r0, r7 - bl __VENEER_WMSP_ReturnResult2Wm9 - cmp r6, #0 - beq _06001AB0 - cmp r5, #1 - ldrneh r0, [r8, #0x5e] - cmpne r0, #0 - bne _060019A0 - ldrh r0, [r8, #0x46] - cmp r0, #0 - beq _06001998 - ldr r0, _06001804 ; =wmspMPIntervalAlarm - bl __VENEER_OS_CancelAlarm - mov r0, #0 - str r0, [sp] - ldr r1, [r8, #0x50] - ldr r2, [r8, #0x54] - ldr r0, _06001804 ; =wmspMPIntervalAlarm - ldr r3, _06001AE0 ; =WmspMPChildIntervalAlarmCallback - bl __VENEER_OS_SetAlarm - b _06001AB0 -_06001998: - bl WmspKickMPChild - b _06001AB0 -_060019A0: - mov r1, #0 - strh r1, [r8, #0x5e] - mov r0, #1 - strh r0, [r8, #0x60] - strh r1, [r8, #0x88] - b _06001AB0 -_060019B8: - add r0, r8, #0x700 - ldrh r0, [r0, #0xcc] - cmp r0, #1 - ldreqh r0, [sb, #0x10] - cmpeq r0, #0x20 - bne _06001A2C - bl __VENEER_OS_DisableInterrupts - mov r4, r0 - ldr r0, _060017F0 ; =wmspMPAckAlarm - bl __VENEER_OS_CancelAlarm - mov r1, #0 - mov r0, r4 - strh r1, [r8, #0x84] - bl __VENEER_OS_RestoreInterrupts - mov r1, #0 - strh r1, [r8, #0x8a] - mov r0, #1 - bl WMSP_FlushSendQueue - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0x17 - strh r1, [r0, #4] - mov r1, #1 - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06001AB0 -_06001A2C: - bl WMSP_GetInternalRequestBuf - movs r1, r0 - moveq r0, #0 - beq _06001A80 - ldr r0, _06001AE4 ; =0x00008003 - mov r2, #0x25 - str r2, [r1] - str r0, [r1, #8] - ldrh r0, [r8] - cmp r0, #9 - cmpne r0, #7 - ldreq r0, _06001AE8 ; =0x00007FFE - streq r0, [r1, #4] - beq _06001A74 - cmp r0, #0xa - cmpne r0, #8 - moveq r0, #1 - streq r0, [r1, #4] -_06001A74: - ldr r0, _060017E0 ; =wmspW + 0x88 - mov r2, #0 - bl __VENEER_OS_SendMessage -_06001A80: - cmp r0, #0 - bne _06001AB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x25 - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06001AB0: - mov r0, sb - bl WmspFreeBufOfWL - b _06000960 -_06001ABC: - ldr r0, _060017D4 ; =wmspW - mov r1, sb - add r0, r0, #0x58 - mov r2, #1 - bl __VENEER_OS_SendMessage - b _06000960 -_06001AD4: - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06001AE0: .word WmspMPChildIntervalAlarmCallback -_06001AE4: .word 0x00008003 -_06001AE8: .word 0x00007FFE - arm_func_end WMSP_IndicateThread - - arm_func_start __VENEER_OS_ExitThread -__VENEER_OS_ExitThread: ; 0x06001AEC - ldr pc, _06001AF0 ; =OS_ExitThread - .align 2, 0 -_06001AF0: .word OS_ExitThread - arm_func_end __VENEER_OS_ExitThread - - arm_func_start __VENEER_MI_CpuFill8 -__VENEER_MI_CpuFill8: ; 0x06001AF4 - ldr pc, _06001AF8 ; =MI_CpuFill8 - .align 2, 0 -_06001AF8: .word MI_CpuFill8 - arm_func_end __VENEER_MI_CpuFill8 - - arm_func_start __VENEER_OS_GetTick -__VENEER_OS_GetTick: ; 0x06001AFC - ldr pc, _06001B00 ; =OS_GetTick - .align 2, 0 -_06001B00: .word OS_GetTick - arm_func_end __VENEER_OS_GetTick - - arm_func_start __VENEER_MIi_CpuCopy16 -__VENEER_MIi_CpuCopy16: ; 0x06001B04 - ldr pc, _06001B08 ; =MIi_CpuCopy16 - .align 2, 0 -_06001B08: .word MIi_CpuCopy16 - arm_func_end __VENEER_MIi_CpuCopy16 - - arm_func_start __VENEER_OS_CancelAlarm -__VENEER_OS_CancelAlarm: ; 0x06001B0C - ldr pc, _06001B10 ; =OS_CancelAlarm - .align 2, 0 -_06001B10: .word OS_CancelAlarm - arm_func_end __VENEER_OS_CancelAlarm - - arm_func_start __VENEER_OS_SetAlarm -__VENEER_OS_SetAlarm: ; 0x06001B14 - ldr pc, _06001B18 ; =OS_SetAlarm - .align 2, 0 -_06001B18: .word OS_SetAlarm - arm_func_end __VENEER_OS_SetAlarm - - arm_func_start WmspFreeBufOfWL -WmspFreeBufOfWL: ; 0x06001B1C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl __VENEER_OS_DisableInterrupts - ldr r1, _06001B50 ; =wmspW + 0x1000 - mov r4, r0 - ldr r0, [r1, #0x544] - ldr r1, [r1, #0x548] - mov r2, r5 - bl __VENEER_OS_FreeToHeap - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06001B50: .word wmspW + 0x1000 - arm_func_end WmspFreeBufOfWL - - arm_func_start __VENEER_OS_FreeToHeap -__VENEER_OS_FreeToHeap: ; 0x06001B54 - ldr pc, _06001B58 ; =OS_FreeToHeap - .align 2, 0 -_06001B58: .word OS_FreeToHeap - arm_func_end __VENEER_OS_FreeToHeap - - arm_func_start WMSP_GetRssi8_06001B5C -WMSP_GetRssi8_06001B5C: ; 0x06001B5C - tst r0, #2 - mov r0, r0, asr #2 - addeq r0, r0, #0x19 - and r0, r0, #0xff - bx lr - arm_func_end WMSP_GetRssi8_06001B5C - - arm_func_start WMSP_RequestResumeMP -WMSP_RequestResumeMP: ; 0x06001B70 - stmdb sp!, {r4, lr} - ldr r0, _06001BE8 ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - bl WMSP_GetInternalRequestBuf - movs r1, r0 - moveq r0, #0 - beq _06001BA8 - mov r0, #0x2d - str r0, [r1] - ldrh r3, [r4, #0x68] - ldr r0, _06001BEC ; =wmspW + 0x88 - mov r2, #0 - str r3, [r1, #4] - bl __VENEER_OS_SendMessage -_06001BA8: - cmp r0, #0 - movne r0, #1 - strneh r0, [r4, #0x66] - bne _06001BE0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x2d - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06001BE0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06001BE8: .word wmspW + 0x1000 -_06001BEC: .word wmspW + 0x88 - arm_func_end WMSP_RequestResumeMP - - arm_func_start WmspMPParentIntervalAlarmCallback -WmspMPParentIntervalAlarmCallback: ; 0x06001BF0 - ldr ip, _06001C00 ; =WmspKickMPParent - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx ip - .align 2, 0 -_06001C00: .word WmspKickMPParent - arm_func_end WmspMPParentIntervalAlarmCallback - - arm_func_start WmspKickMPParent -WmspKickMPParent: ; 0x06001C04 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl WMSP_GetInternalRequestBuf - movs r1, r0 - ldr r4, _06001C80 ; =wmspW - moveq r0, #0 - beq _06001C38 - mov r0, #0x2b - str r0, [r1] - add r0, r4, #0x88 - mov r2, #0 - str r5, [r1, #4] - bl __VENEER_OS_SendMessage -_06001C38: - cmp r0, #0 - bne _06001C78 - add r0, r4, #0x1000 - ldr r0, [r0, #0x54c] - cmp r0, #0 - beq _06001C78 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x2b - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06001C78: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06001C80: .word wmspW - arm_func_end WmspKickMPParent - - arm_func_start WmspMaMultiPollAckAlarmCallback -WmspMaMultiPollAckAlarmCallback: ; 0x06001C84 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _06001D0C ; =wmspW + 0x1000 - mov r2, #0x40 - ldr r0, [r1, #0x544] - ldr r1, [r1, #0x548] - ldr r5, _06001D10 ; =wmspW - bl __VENEER_OS_AllocFromHeap - mov r4, r0 - ldr r1, _06001D14 ; =0x00000185 - ldr r0, _06001D18 ; =wmspW + 0x28 - strh r1, [r4, #0xc] - mov r2, #0 - mov r1, r4 - strh r2, [r4, #0xe] - bl __VENEER_OS_SendMessage - cmp r0, #0 - bne _06001D04 - mov r0, r4 - bl WmspFreeBufOfWL - add r0, r5, #0x1000 - ldr r0, [r0, #0x54c] - cmp r0, #0 - beq _06001D04 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0x80 - strh r2, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - strh r2, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06001D04: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06001D0C: .word wmspW + 0x1000 -_06001D10: .word wmspW -_06001D14: .word 0x00000185 -_06001D18: .word wmspW + 0x28 - arm_func_end WmspMaMultiPollAckAlarmCallback - - arm_func_start __VENEER_OS_AllocFromHeap -__VENEER_OS_AllocFromHeap: ; 0x06001D1C - ldr pc, _06001D20 ; =OS_AllocFromHeap - .align 2, 0 -_06001D20: .word OS_AllocFromHeap - arm_func_end __VENEER_OS_AllocFromHeap - - arm_func_start WmspMPChildIntervalAlarmCallback -WmspMPChildIntervalAlarmCallback: ; 0x06001D24 - ldr ip, _06001D2C ; =WmspKickMPChild - bx ip - .align 2, 0 -_06001D2C: .word WmspKickMPChild - arm_func_end WmspMPChildIntervalAlarmCallback - - arm_func_start WmspKickMPChild -WmspKickMPChild: ; 0x06001D30 - stmdb sp!, {r4, lr} - bl WMSP_GetInternalRequestBuf - ldr r2, _06001DB8 ; =wmspW + 0x1000 - movs r1, r0 - ldr r0, [r2, #0x550] - mov r2, #0 - strh r2, [r0, #0x5e] - strh r2, [r0, #0x60] - ldr r4, _06001DBC ; =wmspW - strh r2, [r0, #0x88] - beq _06001D70 - mov r3, #0x2c - add r0, r4, #0x88 - str r3, [r1] - bl __VENEER_OS_SendMessage - mov r2, r0 -_06001D70: - cmp r2, #0 - bne _06001DB0 - add r0, r4, #0x1000 - ldr r0, [r0, #0x54c] - cmp r0, #0 - beq _06001DB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x2c - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06001DB0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06001DB8: .word wmspW + 0x1000 -_06001DBC: .word wmspW - arm_func_end WmspKickMPChild - - arm_func_start WMSP_InitAlarm -WMSP_InitAlarm: ; 0x06001DC0 - stmdb sp!, {r3, lr} - ldr r0, _06001DDC ; =wmspMPIntervalAlarm - bl __VENEER_OS_CreateAlarm - ldr r0, _06001DE0 ; =wmspMPAckAlarm - bl __VENEER_OS_CreateAlarm - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06001DDC: .word wmspMPIntervalAlarm -_06001DE0: .word wmspMPAckAlarm - arm_func_end WMSP_InitAlarm - - arm_func_start __VENEER_OS_CreateAlarm -__VENEER_OS_CreateAlarm: ; 0x06001DE4 - ldr pc, _06001DE8 ; =OS_CreateAlarm - .align 2, 0 -_06001DE8: .word OS_CreateAlarm - arm_func_end __VENEER_OS_CreateAlarm - - arm_func_start WMSP_CancelAllAlarms -WMSP_CancelAllAlarms: ; 0x06001DEC - stmdb sp!, {r3, lr} - ldr r0, _06001E08 ; =wmspMPIntervalAlarm - bl __VENEER_OS_CancelAlarm - ldr r0, _06001E0C ; =wmspMPAckAlarm - bl __VENEER_OS_CancelAlarm - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06001E08: .word wmspMPIntervalAlarm -_06001E0C: .word wmspMPAckAlarm - arm_func_end WMSP_CancelAllAlarms - - arm_func_start WMSP_RequestThread -WMSP_RequestThread: ; 0x06001E10 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _06001EA8 ; =wmspW + 0x1000 - mov r6, #1 - ldr r8, _06001EAC ; =wmspW - ldr sb, [r0, #0x550] - ldr r5, _06001EB0 ; =WmspRequestFuncTable - add r7, sp, #0 - mov r4, #0 - mov fp, r6 -_06001E34: - mov r1, r7 - mov r2, fp - add r0, r8, #0x88 - bl __VENEER_OS_ReceiveMessage - ldr r0, [sp] - cmp r0, #0 - bne _06001E58 - bl __VENEER_OS_ExitThread - b _06001EA0 -_06001E58: - ldrh sl, [r0] - tst sl, #0x8000 - bicne r0, sl, #0x8000 - movne r0, r0, lsl #0x10 - movne sl, r0, lsr #0x10 - cmp sl, #0x2e - bhs _06001E90 - str r6, [sb, #4] - strh sl, [sb, #2] - ldr r0, [sp] - ldr r1, [r5, sl, lsl #2] - mov lr, pc - bx r1 - str r4, [sb, #4] -_06001E90: - ldr r0, [sp] - orr r1, sl, #0x8000 - strh r1, [r0] - b _06001E34 -_06001EA0: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06001EA8: .word wmspW + 0x1000 -_06001EAC: .word wmspW -_06001EB0: .word WmspRequestFuncTable - arm_func_end WMSP_RequestThread - - arm_func_start WmspRequestFuncDummy -WmspRequestFuncDummy: ; 0x06001EB4 - bx lr - arm_func_end WmspRequestFuncDummy - - arm_func_start WMSP_WL_MlmeReset -WMSP_WL_MlmeReset: ; 0x06001EB8 - stmdb sp!, {r4, lr} - mov r2, #0 - strh r2, [r0] - strh r2, [r0, #2] - strh r2, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - strh r2, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSP_WL_MlmeReset - - arm_func_start WMSP_WL_MlmePowerManagement -WMSP_WL_MlmePowerManagement: ; 0x06001F0C - stmdb sp!, {r4, lr} - mov r4, #0 - strh r4, [r0] - strh r4, [r0, #2] - strh r4, [r0, #4] - strh r4, [r0, #6] - strh r4, [r0, #8] - strh r4, [r0, #0xa] - mov ip, #1 - strh ip, [r0, #0xc] - mov r4, #3 - strh r4, [r0, #0xe] - strh r1, [r0, #0x10] - strh r2, [r0, #0x12] - strh r3, [r0, #0x14] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh ip, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSP_WL_MlmePowerManagement - - arm_func_start WMSP_WL_MlmeScan -WMSP_WL_MlmeScan: ; 0x06001F6C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - strh r0, [r4, #0xa] - mov r5, #2 - mov r7, r1 - mov r0, r2 - strh r5, [r4, #0xc] - mov r5, #0x1f - add r1, r4, #0x10 - mov r2, #6 - mov r6, r3 - strh r5, [r4, #0xe] - bl __VENEER_MIi_CpuCopy16 - ldr r0, [sp, #0x18] - add r1, r4, #0x18 - mov r2, #0x20 - strh r6, [r4, #0x16] - bl __VENEER_MIi_CpuCopy16 - ldrh r2, [sp, #0x1c] - ldr r0, [sp, #0x20] - add r1, r4, #0x3a - strh r2, [r4, #0x38] - mov r2, #0x10 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [sp, #0x24] - mov r0, r7, lsr #1 - strh r1, [r4, #0x4a] - mov r1, #0 - strh r1, [r4, #0x4c] - ldrh r2, [r4, #0xe] - ldrh r1, [r4, #0xc] - add r5, r4, r2, lsl #1 - strh r1, [r5, #0x10] - sub r1, r0, #0x2c - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end WMSP_WL_MlmeScan - - arm_func_start WMSP_WL_MlmeJoin -WMSP_WL_MlmeJoin: ; 0x06002024 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r3, #0 - strh r3, [r4] - strh r3, [r4, #2] - strh r3, [r4, #4] - strh r3, [r4, #6] - strh r3, [r4, #8] - strh r3, [r4, #0xa] - mov r0, #3 - strh r0, [r4, #0xc] - mov r0, #0x22 - strh r0, [r4, #0xe] - strh r1, [r4, #0x10] - mov r0, r2 - strh r3, [r4, #0x12] - add r1, r4, #0x14 - mov r2, #0x44 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #5 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WMSP_WL_MlmeJoin - - arm_func_start WMSP_WL_MlmeAuthenticate -WMSP_WL_MlmeAuthenticate: ; 0x0600209C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - strh r0, [r4, #0xa] - mov r0, #4 - strh r0, [r4, #0xc] - mov r5, #5 - mov r6, r2 - mov r0, r1 - strh r5, [r4, #0xe] - add r1, r4, #0x10 - mov r2, #6 - mov r5, r3 - bl __VENEER_MIi_CpuCopy16 - strh r6, [r4, #0x16] - strh r5, [r4, #0x18] - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #6 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end WMSP_WL_MlmeAuthenticate - - arm_func_start WMSP_WL_MlmeDeAuthenticate -WMSP_WL_MlmeDeAuthenticate: ; 0x0600211C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - strh r0, [r4, #0xa] - mov r0, #5 - strh r0, [r4, #0xc] - mov r3, #4 - mov r5, r2 - mov r0, r1 - strh r3, [r4, #0xe] - add r1, r4, #0x10 - mov r2, #6 - bl __VENEER_MIi_CpuCopy16 - strh r5, [r4, #0x16] - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #4 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WMSP_WL_MlmeDeAuthenticate - - arm_func_start WMSP_WL_MlmeAssociate -WMSP_WL_MlmeAssociate: ; 0x06002194 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - mov r6, r2 - strh r0, [r4, #0xa] - mov r2, #6 - mov r0, r1 - strh r2, [r4, #0xc] - mov r1, #5 - strh r1, [r4, #0xe] - add r1, r4, #0x10 - mov r5, r3 - bl __VENEER_MIi_CpuCopy16 - strh r6, [r4, #0x16] - strh r5, [r4, #0x18] - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #3 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end WMSP_WL_MlmeAssociate - - arm_func_start WMSP_WL_MlmeStart -WMSP_WL_MlmeStart: ; 0x06002210 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov ip, #0 - strh ip, [r4] - strh ip, [r4, #2] - strh ip, [r4, #4] - strh ip, [r4, #6] - ldrh r0, [sp, #0x20] - strh ip, [r4, #8] - add r0, r0, #1 - add r0, r0, r0, lsr #31 - mov r5, r0, asr #1 - mov r0, r2 - strh ip, [r4, #0xa] - mov r2, #9 - strh r2, [r4, #0xc] - add r2, r5, #0x17 - strh r2, [r4, #0xe] - strh r1, [r4, #0x10] - add r1, r4, #0x12 - mov r2, #0x20 - mov r5, r3 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [sp, #0x10] - strh r5, [r4, #0x32] - ldrh r0, [sp, #0x14] - strh r1, [r4, #0x34] - ldrh r1, [sp, #0x18] - strh r0, [r4, #0x36] - ldrh r0, [sp, #0x1c] - strh r1, [r4, #0x38] - ldrh r2, [sp, #0x20] - strh r0, [r4, #0x3a] - ldr r0, [sp, #0x24] - strh r2, [r4, #0x3c] - add r1, r4, #0x3e - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #1 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WMSP_WL_MlmeStart - - arm_func_start WMSP_WL_MlmeMeasureChannel -WMSP_WL_MlmeMeasureChannel: ; 0x060022D0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, #0 - strh r5, [r4] - strh r5, [r4, #2] - strh r5, [r4, #4] - strh r5, [r4, #6] - strh r5, [r4, #8] - strh r5, [r4, #0xa] - mov r0, #0xa - strh r0, [r4, #0xc] - mov r0, #0xc - strh r0, [r4, #0xe] - strh r5, [r4, #0x10] - strh r1, [r4, #0x12] - strh r2, [r4, #0x14] - ldr r0, [sp, #0x10] - strh r3, [r4, #0x16] - add r1, r4, #0x18 - mov r2, #0x10 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #0x12 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WMSP_WL_MlmeMeasureChannel - - arm_func_start WMSP_WL_MaData -WMSP_WL_MaData: ; 0x06002350 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - strh r0, [r4, #0xa] - mov r5, r1 - mov r0, #0x100 - strh r0, [r4, #0xc] - mov r1, #0x18 - mov r0, r5 - strh r1, [r4, #0xe] - add r1, r4, #0x10 - mov r2, #0x30 - bl __VENEER_MIi_CpuCopy16 - mov r0, #0 - strh r0, [r5, #2] - strh r0, [r5, #4] - strh r0, [r5, #8] - strh r0, [r5, #0xa] - strh r0, [r5, #0xc] - strh r0, [r5, #0x10] - strh r0, [r5, #0x12] - strh r0, [r5, #0x14] - strh r0, [r5, #0x16] - strh r0, [r5, #0x24] - strh r0, [r5, #0x26] - strh r0, [r5, #0x28] - strh r0, [r5, #0x2a] - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #2 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WMSP_WL_MaData - - arm_func_start WMSP_WL_MaKeyData -WMSP_WL_MaKeyData: ; 0x060023FC - stmdb sp!, {r4, lr} - mov ip, #0 - strh ip, [r0] - strh ip, [r0, #2] - strh ip, [r0, #4] - strh ip, [r0, #6] - strh ip, [r0, #8] - ldr r4, _06002460 ; =0x00000101 - strh ip, [r0, #0xa] - strh r4, [r0, #0xc] - mov r4, #4 - strh r4, [r0, #0xe] - strh r1, [r0, #0x10] - strh r2, [r0, #0x12] - str r3, [r0, #0x14] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - mov r1, #1 - strh r1, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06002460: .word 0x00000101 - arm_func_end WMSP_WL_MaKeyData - - arm_func_start WMSP_WL_MaMp -WMSP_WL_MaMp: ; 0x06002464 - stmdb sp!, {r4, lr} - mov ip, #0 - strh ip, [r0] - strh ip, [r0, #2] - strh ip, [r0, #4] - strh ip, [r0, #6] - strh ip, [r0, #8] - ldr r4, _060024F8 ; =0x00000102 - strh ip, [r0, #0xa] - strh r4, [r0, #0xc] - mov r4, #0xa - strh r4, [r0, #0xe] - strh r1, [r0, #0x10] - strh r2, [r0, #0x12] - ldrh r2, [sp, #8] - strh r3, [r0, #0x14] - ldrh r1, [sp, #0xc] - strh r2, [r0, #0x16] - ldrh r2, [sp, #0x10] - strh r1, [r0, #0x18] - ldrh r1, [sp, #0x14] - strh r2, [r0, #0x1a] - ldrh r2, [sp, #0x18] - strh r1, [r0, #0x1c] - ldr r1, [sp, #0x1c] - strh r2, [r0, #0x1e] - str r1, [r0, #0x20] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - mov r1, #1 - strh r1, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060024F8: .word 0x00000102 - arm_func_end WMSP_WL_MaMp - - arm_func_start WMSP_WL_MaClearData -WMSP_WL_MaClearData: ; 0x060024FC - stmdb sp!, {r4, lr} - mov r2, #0 - strh r2, [r0] - strh r2, [r0, #2] - strh r2, [r0, #4] - strh r2, [r0, #6] - strh r2, [r0, #8] - strh r2, [r0, #0xa] - mov r2, #0x104 - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSP_WL_MaClearData - - arm_func_start WMSP_WL_ParamSetAll -WMSP_WL_ParamSetAll: ; 0x06002554 - stmdb sp!, {r4, lr} - mov r1, #0 - strh r1, [r0] - strh r1, [r0, #2] - strh r1, [r0, #4] - strh r1, [r0, #6] - strh r1, [r0, #8] - strh r1, [r0, #0xa] - mov r1, #0x200 - mov r2, #0x48 - strh r1, [r0, #0xc] - strh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - mov r1, #1 - strh r1, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSP_WL_ParamSetAll - - arm_func_start WMSP_WL_ParamSetWepKeyId -WMSP_WL_ParamSetWepKeyId: ; 0x060025A8 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _06002600 ; =0x00000207 - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06002600: .word 0x00000207 - arm_func_end WMSP_WL_ParamSetWepKeyId - - arm_func_start WMSP_WL_ParamSetBeaconLostThreshold -WMSP_WL_ParamSetBeaconLostThreshold: ; 0x06002604 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _0600265C ; =0x0000020B - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600265C: .word 0x0000020B - arm_func_end WMSP_WL_ParamSetBeaconLostThreshold - - arm_func_start WMSP_WL_ParamSetSsidMask -WMSP_WL_ParamSetSsidMask: ; 0x06002660 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, #0 - strh r0, [r4] - strh r0, [r4, #2] - strh r0, [r4, #4] - strh r0, [r4, #6] - strh r0, [r4, #8] - ldr r2, _060026D0 ; =0x0000020D - strh r0, [r4, #0xa] - mov r0, r1 - strh r2, [r4, #0xc] - mov r1, #0x10 - strh r1, [r4, #0xe] - add r1, r4, #0x10 - mov r2, #0x20 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #1 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060026D0: .word 0x0000020D - arm_func_end WMSP_WL_ParamSetSsidMask - - arm_func_start WMSP_WL_ParamSetPreambleType -WMSP_WL_ParamSetPreambleType: ; 0x060026D4 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _0600272C ; =0x0000020E - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600272C: .word 0x0000020E - arm_func_end WMSP_WL_ParamSetPreambleType - - arm_func_start WMSP_WL_ParamSetLifeTime -WMSP_WL_ParamSetLifeTime: ; 0x06002730 - stmdb sp!, {r4, lr} - mov ip, #0 - strh ip, [r0] - strh ip, [r0, #2] - strh ip, [r0, #4] - strh ip, [r0, #6] - strh ip, [r0, #8] - ldr r4, _06002794 ; =0x00000211 - strh ip, [r0, #0xa] - strh r4, [r0, #0xc] - mov r4, #3 - strh r4, [r0, #0xe] - strh r1, [r0, #0x10] - strh r2, [r0, #0x12] - strh r3, [r0, #0x14] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - mov r1, #1 - strh r1, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06002794: .word 0x00000211 - arm_func_end WMSP_WL_ParamSetLifeTime - - arm_func_start WMSP_WL_ParamSetMaxConnectableChild -WMSP_WL_ParamSetMaxConnectableChild: ; 0x06002798 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _060027F0 ; =0x00000212 - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060027F0: .word 0x00000212 - arm_func_end WMSP_WL_ParamSetMaxConnectableChild - - arm_func_start WMSP_WL_ParamSetBeaconSendRecvInd -WMSP_WL_ParamSetBeaconSendRecvInd: ; 0x060027F4 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _0600284C ; =0x00000215 - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600284C: .word 0x00000215 - arm_func_end WMSP_WL_ParamSetBeaconSendRecvInd - - arm_func_start WMSP_WL_ParamSetNullKeyResponseMode -WMSP_WL_ParamSetNullKeyResponseMode: ; 0x06002850 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _060028A8 ; =0x00000216 - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060028A8: .word 0x00000216 - arm_func_end WMSP_WL_ParamSetNullKeyResponseMode - - arm_func_start WMSP_WL_ParamSetBeaconPeriod -WMSP_WL_ParamSetBeaconPeriod: ; 0x060028AC - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - ldr r2, _06002904 ; =0x00000242 - strh r3, [r0, #0xa] - strh r2, [r0, #0xc] - mov r3, #1 - strh r3, [r0, #0xe] - strh r1, [r0, #0x10] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - strh r3, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06002904: .word 0x00000242 - arm_func_end WMSP_WL_ParamSetBeaconPeriod - - arm_func_start WMSP_WL_ParamSetGameInfo -WMSP_WL_ParamSetGameInfo: ; 0x06002908 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov ip, #0 - strh ip, [r4] - strh ip, [r4, #2] - strh ip, [r4, #4] - strh ip, [r4, #6] - strh ip, [r4, #8] - add r0, r1, #1 - add r0, r0, r0, lsr #31 - mov r3, r0, asr #1 - mov r0, r2 - ldr r5, _06002988 ; =0x00000245 - strh ip, [r4, #0xa] - strh r5, [r4, #0xc] - add r2, r3, #1 - strh r2, [r4, #0xe] - strh r1, [r4, #0x10] - mov r2, r1 - add r1, r4, #0x12 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r5, r4, r1, lsl #1 - strh r0, [r5, #0x10] - mov r1, #1 - mov r0, r4 - strh r1, [r5, #0x12] - bl WMSP_WlRequest - add r0, r5, #0x10 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06002988: .word 0x00000245 - arm_func_end WMSP_WL_ParamSetGameInfo - - arm_func_start WMSP_WL_ParamGetMacAddress -WMSP_WL_ParamGetMacAddress: ; 0x0600298C - ldr ip, _0600299C ; =WMSPi_WL_NoArg - ldr r1, _060029A0 ; =0x00000281 - mov r2, #4 - bx ip - .align 2, 0 -_0600299C: .word WMSPi_WL_NoArg -_060029A0: .word 0x00000281 - arm_func_end WMSP_WL_ParamGetMacAddress - - arm_func_start WMSP_WL_ParamGetEnableChannel -WMSP_WL_ParamGetEnableChannel: ; 0x060029A4 - ldr ip, _060029B4 ; =WMSPi_WL_NoArg - ldr r1, _060029B8 ; =0x00000283 - mov r2, #3 - bx ip - .align 2, 0 -_060029B4: .word WMSPi_WL_NoArg -_060029B8: .word 0x00000283 - arm_func_end WMSP_WL_ParamGetEnableChannel - - arm_func_start WMSP_WL_ParamGetMode -WMSP_WL_ParamGetMode: ; 0x060029BC - ldr ip, _060029CC ; =WMSPi_WL_NoArg - mov r1, #0x284 - mov r2, #2 - bx ip - .align 2, 0 -_060029CC: .word WMSPi_WL_NoArg - arm_func_end WMSP_WL_ParamGetMode - - arm_func_start WMSP_WL_DevShutdown -WMSP_WL_DevShutdown: ; 0x060029D0 - ldr ip, _060029E0 ; =WMSPi_WL_NoArg - ldr r1, _060029E4 ; =0x00000301 - mov r2, #1 - bx ip - .align 2, 0 -_060029E0: .word WMSPi_WL_NoArg -_060029E4: .word 0x00000301 - arm_func_end WMSP_WL_DevShutdown - - arm_func_start WMSP_WL_DevIdle -WMSP_WL_DevIdle: ; 0x060029E8 - ldr ip, _060029F8 ; =WMSPi_WL_NoArg - ldr r1, _060029FC ; =0x00000302 - mov r2, #1 - bx ip - .align 2, 0 -_060029F8: .word WMSPi_WL_NoArg -_060029FC: .word 0x00000302 - arm_func_end WMSP_WL_DevIdle - - arm_func_start WMSP_WL_DevClass1 -WMSP_WL_DevClass1: ; 0x06002A00 - ldr ip, _06002A10 ; =WMSPi_WL_NoArg - ldr r1, _06002A14 ; =0x00000303 - mov r2, #1 - bx ip - .align 2, 0 -_06002A10: .word WMSPi_WL_NoArg -_06002A14: .word 0x00000303 - arm_func_end WMSP_WL_DevClass1 - - arm_func_start WMSP_WL_DevRestart -WMSP_WL_DevRestart: ; 0x06002A18 - ldr ip, _06002A28 ; =WMSPi_WL_NoArg - mov r1, #0x304 - mov r2, #1 - bx ip - .align 2, 0 -_06002A28: .word WMSPi_WL_NoArg - arm_func_end WMSP_WL_DevRestart - - arm_func_start WMSP_WL_DevSetInitializeWirelessCounter -WMSP_WL_DevSetInitializeWirelessCounter: ; 0x06002A2C - ldr ip, _06002A3C ; =WMSPi_WL_NoArg - ldr r1, _06002A40 ; =0x00000305 - mov r2, #1 - bx ip - .align 2, 0 -_06002A3C: .word WMSPi_WL_NoArg -_06002A40: .word 0x00000305 - arm_func_end WMSP_WL_DevSetInitializeWirelessCounter - - arm_func_start WMSP_WL_DevGetVersion -WMSP_WL_DevGetVersion: ; 0x06002A44 - ldr ip, _06002A54 ; =WMSPi_WL_NoArg - ldr r1, _06002A58 ; =0x00000306 - mov r2, #9 - bx ip - .align 2, 0 -_06002A54: .word WMSPi_WL_NoArg -_06002A58: .word 0x00000306 - arm_func_end WMSP_WL_DevGetVersion - - arm_func_start WMSP_WL_DevGetWirelessCounter -WMSP_WL_DevGetWirelessCounter: ; 0x06002A5C - ldr ip, _06002A6C ; =WMSPi_WL_NoArg - ldr r1, _06002A70 ; =0x00000307 - mov r2, #0x5c - bx ip - .align 2, 0 -_06002A6C: .word WMSPi_WL_NoArg -_06002A70: .word 0x00000307 - arm_func_end WMSP_WL_DevGetWirelessCounter - - arm_func_start WMSP_WL_DevGetStationState -WMSP_WL_DevGetStationState: ; 0x06002A74 - ldr ip, _06002A84 ; =WMSPi_WL_NoArg - mov r1, #0x308 - mov r2, #2 - bx ip - .align 2, 0 -_06002A84: .word WMSPi_WL_NoArg - arm_func_end WMSP_WL_DevGetStationState - - arm_func_start WMSP_WL_DevTestSignal -WMSP_WL_DevTestSignal: ; 0x06002A88 - stmdb sp!, {r4, lr} - mov ip, #0 - strh ip, [r0] - strh ip, [r0, #2] - strh ip, [r0, #4] - strh ip, [r0, #6] - strh ip, [r0, #8] - ldr r4, _06002AF4 ; =0x00000309 - strh ip, [r0, #0xa] - strh r4, [r0, #0xc] - mov r4, #4 - strh r4, [r0, #0xe] - strh r1, [r0, #0x10] - strh r2, [r0, #0x12] - ldrh r1, [sp, #8] - strh r3, [r0, #0x14] - strh r1, [r0, #0x16] - ldrh r2, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r2, lsl #1 - strh r1, [r4, #0x10] - mov r1, #1 - strh r1, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06002AF4: .word 0x00000309 - arm_func_end WMSP_WL_DevTestSignal - - arm_func_start WMSPi_WL_NoArg -WMSPi_WL_NoArg: ; 0x06002AF8 - stmdb sp!, {r4, lr} - mov r3, #0 - strh r3, [r0] - strh r3, [r0, #2] - strh r3, [r0, #4] - strh r3, [r0, #6] - strh r3, [r0, #8] - strh r3, [r0, #0xa] - strh r1, [r0, #0xc] - strh r3, [r0, #0xe] - ldrh r1, [r0, #0xc] - add r4, r0, r3, lsl #1 - strh r1, [r4, #0x10] - strh r2, [r4, #0x12] - bl WMSP_WlRequest - add r0, r4, #0x10 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSPi_WL_NoArg - - arm_func_start WMSP_Initialize -WMSP_Initialize: ; 0x06002B40 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r4, [r0, #4] - ldr r1, _06002BDC ; =wmspW + 0x1000 - str r4, [r1, #0x54c] - ldr r2, [r0, #8] - str r2, [r1, #0x550] - str r2, [r4] - ldr r1, [r0, #0xc] - str r1, [r4, #8] - ldr r0, [r0, #0x10] - bl WMSPi_CommonInit - add r0, sp, #2 - add r1, sp, #0 - bl WMSPi_CommonWlIdle - cmp r0, #0 - bne _06002BB0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - ldrh r1, [sp, #2] - strh r1, [r0, #4] - ldrh r1, [sp] - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06002BD0 -_06002BB0: - ldr r0, [r4] - mov r1, #2 - strh r1, [r0] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0 - strh r1, [r0] - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06002BD0: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_06002BDC: .word wmspW + 0x1000 - arm_func_end WMSP_Initialize - - arm_func_start WMSP_Reset -WMSP_Reset: ; 0x06002BE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x210 - ldr r0, _06002FAC ; =wmspW + 0x1000 - mov r4, #0 - ldr r8, [r0, #0x550] - bl __VENEER_OS_DisableInterrupts - ldr r1, [r8, #0xc] - mov r5, r0 - cmp r1, #1 - bne _06002C3C - mov r0, r4 - str r0, [r8, #0xc] - mov r4, #1 - bl WMSP_CancelVAlarm - bl WMSP_SetThreadPriorityLow - ldrh r0, [r8] - cmp r0, #0xa - moveq r0, #8 - streqh r0, [r8] - beq _06002C3C - cmp r0, #9 - moveq r0, #7 - streqh r0, [r8] -_06002C3C: - ldrh r1, [r8] - add r0, r1, #0xf9 - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _06002C70 - add r0, r8, #0x100 - cmp r1, #7 - moveq sl, #1 - ldrh sb, [r0, #0x82] - movne sl, #0 - b _06002C74 -_06002C70: - mov sb, #0 -_06002C74: - add r0, r8, #0x100 - mov r1, #0 - strh r1, [r0, #0x82] - strh r1, [r8, #0x86] - str r1, [r8, #0x14] - str r1, [r8, #0x10] - str r1, [r8, #0x1c] - mov r0, r5 - strh r1, [r8, #0xc2] - bl __VENEER_OS_RestoreInterrupts - cmp r4, #0 - beq _06002CAC - ldr r0, _06002FB0 ; =0x0000FFFF - bl WMSP_CleanSendQueue -_06002CAC: - cmp sl, #0 - movne r0, #0 - strneh r0, [r8, #0xf6] - cmp sb, #0 - beq _06002D08 - mov r7, #0 - add r5, r8, #0x128 - add r4, r8, #0x8a - mov r6, #1 - mov fp, #6 -_06002CD4: - tst sb, r6, lsl r7 - beq _06002CFC - cmp r7, #0 - addeq r2, r4, #0x100 - subne r0, r7, #1 - mlane r2, r0, fp, r5 - mov r1, r7, lsl #0x10 - mov r0, sl - mov r1, r1, lsr #0x10 - bl WMSP_IndicateDisconnectionFromMyself -_06002CFC: - add r7, r7, #1 - cmp r7, #0x10 - blt _06002CD4 -_06002D08: - add r0, r8, #0x128 - mov r1, #0 - mov r2, #0x5a - bl __VENEER_MI_CpuFill8 - add r0, sp, #0x10 - bl WMSP_WL_DevGetStationState - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002D38 - mov r0, #0x308 - bl WmspError_06002FC0 - b _06002FA0 -_06002D38: - ldrh r4, [r0, #6] - add r0, sp, #0x10 - bl WMSP_WL_ParamGetMode - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002D5C - mov r0, #0x284 - bl WmspError_06002FC0 - b _06002FA0 -_06002D5C: - ldrh r1, [r0, #6] - cmp r4, #0x20 - bgt _06002DA0 - bge _06002E74 - cmp r4, #0 - bgt _06002D7C - beq _06002E98 - b _06002F78 -_06002D7C: - cmp r4, #0x12 - bgt _06002F78 - cmp r4, #0x10 - blt _06002F78 - beq _06002EB8 - cmp r4, #0x11 - cmpne r4, #0x12 - beq _06002F10 - b _06002F78 -_06002DA0: - cmp r4, #0x30 - bgt _06002DB0 - beq _06002DB8 - b _06002F78 -_06002DB0: - cmp r4, #0x40 - bne _06002F78 -_06002DB8: - add r0, r1, #0xfe - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _06002E3C - add r0, r8, #0x8a - add r1, sp, #0xa - add r0, r0, #0x100 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - mov r6, #0 - add r5, sp, #0xa - mov r4, #3 - b _06002E30 -_06002DF4: - add r0, sp, #0x10 - mov r1, r5 - mov r2, r4 - bl WMSP_WL_MlmeDeAuthenticate - ldrh r0, [r0, #4] - cmp r0, #0 - beq _06002E20 - cmp r0, #7 - cmpne r0, #0xc - beq _06002E2C - b _06002E74 -_06002E20: - mov r0, #3 - strh r0, [r8] - b _06002E74 -_06002E2C: - add r6, r6, #1 -_06002E30: - cmp r6, #2 - blt _06002DF4 - b _06002E74 -_06002E3C: - cmp r1, #1 - bne _06002E74 - add r0, sp, #4 - mov r1, #0xff - mov r2, #6 - bl __VENEER_MI_CpuFill8 - add r1, sp, #4 - add r0, sp, #0x10 - mov r2, #3 - bl WMSP_WL_MlmeDeAuthenticate - ldrh r0, [r0, #4] - cmp r0, #0 - moveq r0, #3 - streqh r0, [r8] -_06002E74: - add r0, sp, #0x10 - mov r1, #1 - bl WMSP_WL_MlmeReset - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002E98 - mov r0, #0 - bl WmspError_06002FC0 - b _06002FA0 -_06002E98: - add r0, sp, #0x10 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002EB8 - ldr r0, _06002FB4 ; =0x00000302 - bl WmspError_06002FC0 - b _06002FA0 -_06002EB8: - add r0, r8, #0x100 - ldrh r0, [r0, #0xee] - cmp r0, #0 - bne _06002EF8 - add r0, sp, #0x10 - mov r1, #1 - bl WMSP_WL_ParamSetPreambleType - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002EEC - ldr r0, _06002FB8 ; =0x0000020E - bl WmspError_06002FC0 - b _06002FA0 -_06002EEC: - add r0, r8, #0x100 - mov r1, #1 - strh r1, [r0, #0xee] -_06002EF8: - mov r0, #2 - strh r0, [r8] - mov r0, #0 - str r0, [r8, #0x198] - bl WMSP_ResetSizeVars - b _06002F88 -_06002F10: - cmp r1, #0 - bne _06002F4C - mov r0, #1 - mov r1, #0 - str r0, [sp] - add r0, sp, #0x10 - mov r2, r1 - mov r3, #0x14 - bl WMSP_WL_DevTestSignal - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002F4C - ldr r0, _06002FBC ; =0x00000309 - bl WmspError_06002FC0 - b _06002FA0 -_06002F4C: - add r0, sp, #0x10 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06002F6C - ldr r0, _06002FB4 ; =0x00000302 - bl WmspError_06002FC0 - b _06002FA0 -_06002F6C: - mov r0, #2 - strh r0, [r8] - b _06002F88 -_06002F78: - mov r0, #0x308 - mov r1, #0 - bl WmspError_06002FC0 - b _06002FA0 -_06002F88: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #1 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06002FA0: - add sp, sp, #0x210 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06002FAC: .word wmspW + 0x1000 -_06002FB0: .word 0x0000FFFF -_06002FB4: .word 0x00000302 -_06002FB8: .word 0x0000020E -_06002FBC: .word 0x00000309 - arm_func_end WMSP_Reset - - arm_func_start WmspError_06002FC0 -WmspError_06002FC0: ; 0x06002FC0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #1 - strh r1, [r0] - strh r1, [r0, #2] - strh r5, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WmspError_06002FC0 - - arm_func_start WMSP_End -WMSP_End: ; 0x06002FF0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x200 - ldr r0, _0600309C ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - ldrh r0, [r4] - cmp r0, #2 - beq _06003028 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #2 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003090 -_06003028: - add r0, sp, #0 - bl WMSP_WL_DevShutdown - ldrh r5, [r0, #4] - cmp r5, #0 - beq _06003064 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #2 - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - add r1, r1, #0x300 - strh r1, [r0, #4] - strh r5, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003090 -_06003064: - mov r0, #1 - strh r0, [r4] - bl __VENEER_PM_SetLEDPattern - mov r0, #0 - strh r0, [r4] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #2 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06003090: - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600309C: .word wmspW + 0x1000 - arm_func_end WMSP_End - - arm_func_start __VENEER_PM_SetLEDPattern -__VENEER_PM_SetLEDPattern: ; 0x060030A0 - ldr pc, _060030A4 ; =PM_SetLEDPattern - .align 2, 0 -_060030A4: .word PM_SetLEDPattern - arm_func_end __VENEER_PM_SetLEDPattern - - arm_func_start WMSP_SetParentParam -WMSP_SetParentParam: ; 0x060030A8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x200 - ldr r1, _06003160 ; =wmspW + 0x1000 - ldr r0, [r0, #4] - ldr r4, [r1, #0x550] - mov r2, #0x40 - add r1, r4, #0xe8 - bl __VENEER_MI_CpuCopy8 - add r0, r4, #0x100 - ldrh r1, [r0, #0x1a] - ldrh r0, [r0, #0xf4] - mov r2, #1 - tst r0, r2, lsl r1 - bne _060030FC - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #7 - strh r1, [r0] - mov r1, #6 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003154 -_060030FC: - ldrh r1, [r4, #0xf8] - add r0, sp, #0 - bl WMSP_WL_ParamSetMaxConnectableChild - ldrh r4, [r0, #4] - cmp r4, #0 - beq _0600313C - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #7 - strh r1, [r0] - mov r2, #1 - ldr r1, _06003164 ; =0x00000212 - strh r2, [r0, #2] - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003154 -_0600313C: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #7 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06003154: - add sp, sp, #0x200 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06003160: .word wmspW + 0x1000 -_06003164: .word 0x00000212 - arm_func_end WMSP_SetParentParam - - arm_func_start WMSP_StartParent -WMSP_StartParent: ; 0x06003168 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x2b8 - ldr r1, _060033EC ; =wmspW + 0x1000 - add r5, sp, #0xb8 - ldr r4, [r1, #0x550] - ldrh r1, [r4] - cmp r1, #2 - bne _06003194 - ldr r1, [r4, #0xc8] - tst r1, #1 - beq _060031B8 -_06003194: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #8 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, #0 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060033E0 -_060031B8: - add r1, r4, #0x100 - ldrh r2, [r1, #0x1a] - mov r3, #1 - ldrh ip, [r1, #0xf6] - mov r2, r3, lsl r2 - ldr r6, [r0, #4] - tst ip, r2, asr #1 - bne _060031FC - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #8 - strh r1, [r0] - mov r1, #6 - strh r1, [r0, #2] - mov r1, #0 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060033E0 -_060031FC: - strh r3, [r4, #0xe6] - mov r0, #0 - strh r0, [r1, #0x88] - bl __VENEER_OS_DisableInterrupts - add r1, r4, #0x100 - mov r2, #0 - strh r2, [r1, #0x82] - strh r2, [r4, #0x86] - bl __VENEER_OS_RestoreInterrupts - mov r1, r5 - add r2, r4, #0x100 - mov r3, #1 - mov r0, #8 - strh r3, [r2, #0xee] - bl WMSP_SetAllParams - cmp r0, #0 - beq _060033E0 - mov r0, r5 - bl WMSP_WL_DevClass1 - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003260 - ldr r0, _060033F0 ; =0x00000303 - bl WmspError_060033F4 - b _060033E0 -_06003260: - cmp r6, #0 - movne r0, #1 - moveq r0, #0 - mov r0, r0, lsl #0x10 - mov r6, r0, lsr #0x10 - mov r0, r5 - mov r1, r6 - mov r2, #0 - mov r3, #1 - bl WMSP_WL_MlmePowerManagement - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060032A0 - mov r0, #1 - bl WmspError_060033F4 - b _060033E0 -_060032A0: - strh r6, [r4, #0xc6] - add r1, sp, #0x38 - mov r0, #0 - mov r2, #0x80 - add r6, r4, #0xe8 - bl __VENEER_MIi_CpuClear16 - add r0, sp, #0x38 - mov r1, r6 - bl WMSP_CopyParentParam - add r1, sp, #0x18 - mov r0, #0 - mov r2, #0x20 - bl __VENEER_MIi_CpuClear16 - ldr r1, [r6, #8] - mov r0, r5 - strh r1, [sp, #0x18] - ldr r2, [r6, #8] - mov r3, #0 - mov r2, r2, lsr #0x10 - strh r2, [sp, #0x1a] - ldrh r5, [r6, #0xc] - mov r2, #2 - strh r5, [sp, #0x1c] - strh r3, [sp, #0x1e] - str r2, [sp] - ldrh r3, [r6, #0x32] - mov r2, #3 - str r3, [sp, #4] - str r2, [sp, #8] - str r2, [sp, #0xc] - ldrh r2, [r6, #4] - add r3, sp, #0x38 - add r2, r2, #0x10 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - str r2, [sp, #0x10] - str r3, [sp, #0x14] - ldrh r3, [r6, #0x18] - mov r1, #0x20 - add r2, sp, #0x18 - bl WMSP_WL_MlmeStart - ldrh r1, [r0, #4] - cmp r1, #0 - beq _0600335C - mov r0, #9 - bl WmspError_060033F4 - b _060033E0 -_0600335C: - ldrh r0, [r6, #0x14] - cmp r0, #0 - ldrh r0, [r6, #0x34] - movne r1, #0x2a - moveq r1, #0 - add r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_SetParentMaxSize - ldrh r0, [r6, #0x14] - cmp r0, #0 - movne r1, #6 - ldrh r0, [r6, #0x36] - moveq r1, #0 - add r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_SetChildMaxSize - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #7 - strh r1, [r4] - mov r1, #8 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - strh r1, [r0, #8] - ldrh r1, [r4, #0x30] - strh r1, [r0, #0x2c] - ldrh r1, [r4, #0x32] - strh r1, [r0, #0x2e] - bl __VENEER_WMSP_ReturnResult2Wm9 - mov r0, #1 - strh r0, [r4, #0xc2] -_060033E0: - add sp, sp, #0x2b8 - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_060033EC: .word wmspW + 0x1000 -_060033F0: .word 0x00000303 - arm_func_end WMSP_StartParent - - arm_func_start WmspError_060033F4 -WmspError_060033F4: ; 0x060033F4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #8 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - mov r1, #0 - strh r1, [r0, #8] - strh r5, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WmspError_060033F4 - - arm_func_start WMSP_EndParent -WMSP_EndParent: ; 0x06003430 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x208 - ldr r0, _060035EC ; =wmspW + 0x1000 - ldr sl, [r0, #0x550] - ldrh r0, [sl] - cmp r0, #7 - beq _06003468 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #9 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060035E0 -_06003468: - mov r0, #0 - strh r0, [sl, #0xf6] - mov r8, #1 -_06003474: - add r0, sl, #0x100 - ldrh r0, [r0, #0x82] - mov r7, #1 - tst r0, r7, lsl r8 - beq _06003544 - add r0, sl, #0x128 - sub r1, r8, #1 - mov r2, #6 - mla r0, r1, r2, r0 - add r1, sp, #0 - bl __VENEER_MI_CpuCopy8 - mov sb, #0 - add r6, sp, #8 - add r5, sp, #0 - mov r4, #3 - b _060034E0 -_060034B4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl WMSP_WL_MlmeDeAuthenticate - ldrh r0, [r0, #4] - cmp r0, #0 - beq _060034E8 - cmp r0, #7 - cmpne r0, #0xc - bne _060034E8 - add sb, sb, #1 -_060034E0: - cmp sb, #2 - blt _060034B4 -_060034E8: - bl __VENEER_OS_DisableInterrupts - add r1, sl, #0x100 - ldrh r2, [r1, #0x82] - tst r2, r7, lsl r8 - beq _06003540 - mvn r3, r7, lsl r8 - and r2, r2, r3 - strh r2, [r1, #0x82] - ldrh r2, [sl, #0x86] - add r1, sl, r8, lsl #3 - and r2, r2, r3 - strh r2, [sl, #0x86] - mov r2, #0 - str r2, [r1, #0x738] - str r2, [r1, #0x73c] - bl __VENEER_OS_RestoreInterrupts - mov r0, r8, lsl #0x10 - mov r1, r0, lsr #0x10 - add r2, sp, #0 - mov r0, #1 - bl WMSP_IndicateDisconnectionFromMyself - b _06003544 -_06003540: - bl __VENEER_OS_RestoreInterrupts -_06003544: - add r8, r8, #1 - cmp r8, #0x10 - blt _06003474 - add r0, sp, #8 - mov r1, #1 - bl WMSP_WL_MlmeReset - ldrh r1, [r0, #4] - mov r0, #0 - cmp r1, #0 - beq _06003574 - bl WmspError_060035F4 - b _060035E0 -_06003574: - strh r0, [sl, #0xc2] - mov r1, #3 - strh r1, [sl] - add r0, sp, #8 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060035A0 - ldr r0, _060035F0 ; =0x00000302 - bl WmspError_060035F4 - b _060035E0 -_060035A0: - mov r0, #2 - strh r0, [sl] - mov r1, #0 - str r1, [sl, #0x198] - add r0, sl, #0x100 - strh r1, [r0, #0x96] - add r0, sl, #0x19c - mov r2, #0x50 - bl __VENEER_MI_CpuFill8 - bl WMSP_ResetSizeVars - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #9 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060035E0: - add sp, sp, #0x208 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_060035EC: .word wmspW + 0x1000 -_060035F0: .word 0x00000302 - arm_func_end WMSP_EndParent - - arm_func_start WmspError_060035F4 -WmspError_060035F4: ; 0x060035F4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #9 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r5, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WmspError_060035F4 - - arm_func_start WMSP_StartScan -WMSP_StartScan: ; 0x06003628 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x248 - ldr r1, _06003978 ; =wmspW + 0x1000 - add r4, sp, #0x48 - ldr r7, [r1, #0x550] - ldrh r1, [r7] - cmp r1, #2 - cmpne r1, #3 - cmpne r1, #5 - beq _06003674 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xa - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _0600396C -_06003674: - ldr r1, [r0, #4] - add r2, r7, #0x100 - str r1, [r7, #0x184] - ldrh r5, [r0, #2] - add r1, sp, #0x10 - strh r5, [r2, #0x90] - ldrh r6, [r0, #8] - add r0, r0, #0xa - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r1, [sp, #0x10] - ldr r0, _0600397C ; =0x0000FFFF - cmp r1, r0 - beq _060036B8 - tst r1, #1 - bicne r0, r1, #1 - strneh r0, [sp, #0x10] -_060036B8: - cmp r5, #0 - bne _060036E4 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xa - strh r1, [r0] - mov r1, #6 - strh r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _0600396C -_060036E4: - add r0, r7, #0x100 - ldrh r0, [r0, #0xf4] - mov r1, #1 - tst r0, r1, lsl r5 - bne _0600371C - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xa - strh r1, [r0] - mov r1, #6 - strh r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _0600396C -_0600371C: - mov r0, #2 - strh r0, [r7, #0xe6] - mov r0, r4 - bl WMSP_WL_DevGetStationState - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003748 - mov r0, #0x308 - mov r2, #0 - bl WmspError_06003ED4 - b _0600396C -_06003748: - ldrh r0, [r0, #6] - cmp r0, #0x10 - bne _060037C4 - mov r1, r4 - mov r0, #0xa - bl WMSP_SetAllParams - cmp r0, #0 - beq _0600396C - mov r0, r4 - bl WMSP_WL_DevClass1 - ldrh r1, [r0, #4] - mov r2, #0 - cmp r1, #0 - beq _0600378C - ldr r0, _06003980 ; =0x00000303 - bl WmspError_06003ED4 - b _0600396C -_0600378C: - mov r0, #3 - mov r1, #1 - strh r0, [r7] - mov r0, r4 - mov r3, r1 - bl WMSP_WL_MlmePowerManagement - ldrh r1, [r0, #4] - mov r0, #1 - cmp r1, #0 - beq _060037C0 - mov r2, #0 - bl WmspError_06003ED4 - b _0600396C -_060037C0: - strh r0, [r7, #0xc6] -_060037C4: - ldr r0, _0600397C ; =0x0000FFFF - mov r3, #5 - strh r3, [r7] - add r1, sp, #0x26 - mov r2, #0x20 - bl __VENEER_MIi_CpuClear16 - add r0, sp, #0x17 - mov r1, #0 - mov r2, #0xf - strb r5, [sp, #0x16] - bl __VENEER_MI_CpuFill8 - add r1, sp, #0x26 - str r1, [sp] - mov r1, #1 - str r1, [sp, #4] - add r0, sp, #0x16 - str r0, [sp, #8] - ldr r1, _06003984 ; =0x0000011E - add r2, sp, #0x10 - str r6, [sp, #0xc] - mov r0, r4 - mov r3, #0 - bl WMSP_WL_MlmeScan - mov r4, r0 - ldrh r1, [r4, #4] - cmp r1, #0 - beq _06003840 - mov r0, #2 - mov r2, #0 - bl WmspError_06003ED4 - b _0600396C -_06003840: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - ldrh r1, [r4, #8] - mov r6, r0 - cmp r1, #0 - bne _06003878 - mov r0, #0xa - strh r0, [r6] - mov r1, #0 - strh r1, [r6, #2] - mov r0, #4 - strh r0, [r6, #8] - strh r5, [r6, #0x10] - strh r1, [r6, #0x12] - b _06003964 -_06003878: - ldr r1, [r7, #0x184] - mov r0, #0 - add r1, r1, #0x40 - mov r2, #0x80 - bl __VENEER_MIi_CpuClear16 - ldrh r2, [r4, #0xa] - ldr r1, [r7, #0x184] - add r0, r4, #0xa - mov r2, r2, lsl #1 - bl __VENEER_MI_CpuCopy8 - mov r0, #0xa - strh r0, [r6] - mov r0, #0 - strh r0, [r6, #2] - mov r0, #5 - strh r0, [r6, #8] - ldrh r0, [r4, #0x40] - strh r0, [r6, #0x10] - ldrh r0, [r4, #0xc] - and r0, r0, #0xff - bl WMSP_GetRssi8_06003988 - mov r7, r0 - bl WMSP_GetLinkLevel - strh r0, [r6, #0x12] - mov r0, r7 - bl WMSP_AddRssiToRandomPool - ldrh r1, [r4, #0x14] - add r0, r4, #0xe - strh r1, [r6, #0x14] - add r1, r6, #0xa - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, r4, #0x16 - add r1, r6, #0x16 - mov r2, #0x20 - bl __VENEER_MIi_CpuCopy16 - ldrh r0, [r4, #0x46] - strh r0, [r6, #0x36] - cmp r0, #0x80 - bls _0600393C - mov r0, #0xa - strh r0, [r6] - mov r1, #0 - strh r1, [r6, #2] - mov r0, #4 - strh r0, [r6, #8] - strh r5, [r6, #0x10] - strh r1, [r6, #0x12] - b _06003964 -_0600393C: - add r1, r6, #0x38 - mov r0, #0 - mov r2, #0x80 - bl __VENEER_MIi_CpuClear16 - ldrh r1, [r6, #0x36] - add r0, r4, #0x4a - add r2, r1, #1 - add r1, r6, #0x38 - bic r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_06003964: - mov r0, r6 - bl __VENEER_WMSP_ReturnResult2Wm9 -_0600396C: - add sp, sp, #0x248 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06003978: .word wmspW + 0x1000 -_0600397C: .word 0x0000FFFF -_06003980: .word 0x00000303 -_06003984: .word 0x0000011E - arm_func_end WMSP_StartScan - - arm_func_start WMSP_GetRssi8_06003988 -WMSP_GetRssi8_06003988: ; 0x06003988 - tst r0, #2 - mov r0, r0, asr #2 - addeq r0, r0, #0x19 - and r0, r0, #0xff - bx lr - arm_func_end WMSP_GetRssi8_06003988 - - arm_func_start WMSP_AddRssiToRandomPool -WMSP_AddRssiToRandomPool: ; 0x0600399C - ldr r2, _060039B4 ; =0x027FFF98 - ldrh r1, [r2] - eor r0, r0, r1, lsl #1 - eor r0, r0, r0, lsr #16 - strh r0, [r2] - bx lr - .align 2, 0 -_060039B4: .word 0x027FFF98 - arm_func_end WMSP_AddRssiToRandomPool - - arm_func_start WMSP_StartScanEx -WMSP_StartScanEx: ; 0x060039B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc8 - sub sp, sp, #0x400 - ldr r1, _06003EB8 ; =wmspW + 0x1000 - mov sb, r0 - ldr r8, [r1, #0x550] - ldrh r0, [r8] - cmp r0, #2 - cmpne r0, #3 - cmpne r0, #5 - beq _06003A08 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x26 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003EA8 -_06003A08: - ldr r0, [sb, #4] - add r1, sp, #0x18 - str r0, [r8, #0x184] - ldrh sl, [sb, #2] - add r0, r8, #0x100 - strh sl, [r0, #0x90] - ldrh r3, [sb, #0xa] - add r0, sb, #0xc - str r3, [sp, #0x10] - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r5, [sb, #0x12] - ldrh fp, [sb, #0x36] - cmp r5, #2 - beq _06003A50 - cmp r5, #3 - beq _06003A5C - b _06003A68 -_06003A50: - mov r6, #1 - mov r5, #0 - b _06003A6C -_06003A5C: - mov r6, #1 - mov r5, r6 - b _06003A6C -_06003A68: - mov r6, #0 -_06003A6C: - add r1, sp, #0x4e - add r0, sb, #0x16 - mov r2, #0x20 - ldrh r4, [sb, #0x14] - bl __VENEER_MI_CpuCopy8 - ldrh r1, [sp, #0x18] - ldr r0, _06003EBC ; =0x0000FFFF - ldrh r7, [sb, #8] - cmp r1, r0 - beq _06003AA0 - tst r1, #1 - bicne r0, r1, #1 - strneh r0, [sp, #0x18] -_06003AA0: - add r0, r8, #0x100 - ldrh r1, [r0, #0xf4] - mov r0, sl, lsl #0x11 - ands sl, r1, r0, lsr #16 - beq _06003AE4 - ldr r0, [r8, #0xc8] - tst r0, #1 - cmpne r5, #1 - bne _06003AE4 - ldr r0, [sb, #4] - cmp r0, #0 - beq _06003AE4 - tst r0, #3 - bne _06003AE4 - ldrh r0, [sb, #8] - cmp r0, #0x40 - bhs _06003B08 -_06003AE4: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x26 - strh r1, [r0] - mov r1, #6 - strh r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003EA8 -_06003B08: - mov r0, #2 - strh r0, [r8, #0xe6] - add r0, sp, #0x70 - bl WMSP_WL_DevGetStationState - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003B34 - mov r0, #0x308 - mov r2, #1 - bl WmspError_06003ED4 - b _06003EA8 -_06003B34: - ldrh r0, [r0, #6] - cmp r0, #0x10 - bne _06003BB4 - add r1, sp, #0x70 - mov r0, #0x26 - bl WMSP_SetAllParams - cmp r0, #0 - beq _06003EA8 - add r0, sp, #0x70 - bl WMSP_WL_DevClass1 - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003B78 - ldr r0, _06003EC0 ; =0x00000303 - mov r2, #1 - bl WmspError_06003ED4 - b _06003EA8 -_06003B78: - mov r0, #3 - mov r1, #1 - strh r0, [r8] - add r0, sp, #0x70 - mov r3, r1 - mov r2, #0 - bl WMSP_WL_MlmePowerManagement - ldrh r1, [r0, #4] - mov r0, #1 - cmp r1, #0 - beq _06003BB0 - mov r2, r0 - bl WmspError_06003ED4 - b _06003EA8 -_06003BB0: - strh r0, [r8, #0xc6] -_06003BB4: - add r0, r8, #0x100 - ldrh r0, [r0, #0xee] - cmp r5, #0 - bne _06003C04 - cmp r0, #1 - bne _06003C40 - add r0, sp, #0x70 - mov r1, #0 - bl WMSP_WL_ParamSetPreambleType - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003BF4 - ldr r0, _06003EC4 ; =0x0000020E - mov r2, #1 - bl WmspError_06003ED4 - b _06003EA8 -_06003BF4: - add r0, r8, #0x100 - mov r1, #0 - strh r1, [r0, #0xee] - b _06003C40 -_06003C04: - cmp r0, #0 - bne _06003C40 - add r0, sp, #0x70 - mov r1, #1 - bl WMSP_WL_ParamSetPreambleType - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003C34 - ldr r0, _06003EC4 ; =0x0000020E - mov r2, #1 - bl WmspError_06003ED4 - b _06003EA8 -_06003C34: - add r0, r8, #0x100 - mov r1, #1 - strh r1, [r0, #0xee] -_06003C40: - cmp r6, #1 - bne _06003C98 - add r0, sp, #0x2e - mov r1, #0xff - mov r2, #0x20 - bl __VENEER_MI_CpuFill8 - cmp fp, #0x20 - bhi _06003C70 - add r0, sp, #0x2e - mov r2, fp - mov r1, #0 - bl __VENEER_MI_CpuFill8 -_06003C70: - add r1, sp, #0x2e - add r0, sp, #0x70 - bl WMSP_WL_ParamSetSsidMask - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003C98 - ldr r0, _06003EC8 ; =0x0000020D - mov r2, #1 - bl WmspError_06003ED4 - b _06003EA8 -_06003C98: - mov r6, #0 - mov r3, #5 - add r0, sp, #0x1e - mov r1, r6 - mov r2, #0x10 - strh r3, [r8] - bl __VENEER_MI_CpuFill8 - mov r3, #1 - add r1, sp, #0x1e - mov r2, r3 -_06003CC0: - tst sl, r2, lsl r3 - addne r0, r6, #1 - movne r0, r0, lsl #0x10 - strneb r3, [r1, r6] - movne r6, r0, lsr #0x10 - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - cmp r3, #0xf - blo _06003CC0 - sub r0, r7, #0x40 - mov r1, #0x42 - bl __VENEER__u32_div_f - add r2, sp, #0x4e - stmia sp, {r2, r5} - add r1, sp, #0x1e - str r1, [sp, #8] - ldr r1, [sp, #0x10] - sub r5, r7, r0, lsl #1 - str r1, [sp, #0xc] - add r2, sp, #0x18 - add r0, sp, #0x70 - mov r3, r4 - add r1, r5, #0x5e - bl WMSP_WL_MlmeScan - mov r5, r0 - ldrh r1, [r5, #4] - cmp r1, #0 - beq _06003D44 - mov r0, #2 - mov r2, #1 - bl WmspError_06003ED4 - b _06003EA8 -_06003D44: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - ldrh r1, [r5, #8] - mov r6, r0 - cmp r1, #0 - bne _06003D80 - mov r0, #0x26 - strh r0, [r6] - mov r1, #0 - strh r1, [r6, #2] - mov r0, #4 - strh r0, [r6, #8] - strh r1, [r6, #0xe] - mov r0, sl, asr #1 - strh r0, [r6, #0xa] - b _06003EA0 -_06003D80: - ldr sb, [r8, #0x184] - mov r2, r7 - mov r1, sb - mov r0, #0 - add r8, r5, #0xa - bl __VENEER_MIi_CpuClear16 - mov r7, #0 - b _06003E6C -_06003DA0: - ldrh r1, [r8] - mov r0, r8 - mov r1, r1, lsl #0x11 - mov fp, r1, lsr #0x10 - mov r1, sb - mov r2, fp - bl __VENEER_MI_CpuCopy8 - cmp r4, #0 - beq _06003E28 - ldrh r2, [sb, #0xa] - cmp r2, #0 - moveq r0, #0 - beq _06003E0C - cmp r2, #0x20 - movhi r0, #0 - bhi _06003E0C - mov r1, #0 - b _06003E00 -_06003DE8: - add r0, sb, r1 - ldrb r0, [r0, #0xc] - cmp r0, #0 - movne r0, #1 - bne _06003E0C - add r1, r1, #1 -_06003E00: - cmp r1, r2 - blt _06003DE8 - mov r0, #0 -_06003E0C: - cmp r0, #0 - bne _06003E28 - add r0, sp, #0x4e - add r1, sb, #0xc - mov r2, #0x20 - strh r4, [sb, #0xa] - bl __VENEER_MI_CpuCopy8 -_06003E28: - add r0, r6, r7, lsl #2 - str sb, [r0, #0x10] - ldrh r0, [r8, #2] - and r0, r0, #0xff - bl WMSP_GetRssi8_06003988 - str r0, [sp, #0x14] - bl WMSP_GetLinkLevel - add r1, r6, r7, lsl #1 - strh r0, [r1, #0x50] - ldr r0, [sp, #0x14] - bl WMSP_AddRssiToRandomPool - add sb, sb, fp - tst sb, #2 - addne r0, sb, #2 - add r8, r8, fp - bicne sb, r0, #3 - add r7, r7, #1 -_06003E6C: - ldrh r0, [r5, #8] - cmp r7, r0 - blt _06003DA0 - mov r0, #0x26 - strh r0, [r6] - mov r0, #0 - strh r0, [r6, #2] - mov r0, #5 - strh r0, [r6, #8] - ldrh r1, [r5, #8] - mov r0, sl, asr #1 - strh r1, [r6, #0xe] - strh r0, [r6, #0xa] -_06003EA0: - mov r0, r6 - bl __VENEER_WMSP_ReturnResult2Wm9 -_06003EA8: - add sp, sp, #0xc8 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06003EB8: .word wmspW + 0x1000 -_06003EBC: .word 0x0000FFFF -_06003EC0: .word 0x00000303 -_06003EC4: .word 0x0000020E -_06003EC8: .word 0x0000020D - arm_func_end WMSP_StartScanEx - - arm_func_start __VENEER__u32_div_f -__VENEER__u32_div_f: ; 0x06003ECC - ldr pc, _06003ED0 ; =_u32_div_f - .align 2, 0 -_06003ED0: .word _u32_div_f - arm_func_end __VENEER__u32_div_f - - arm_func_start WmspError_06003ED4 -WmspError_06003ED4: ; 0x06003ED4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r2 - mov r6, r0 - mov r5, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - cmp r4, #0 - movne r1, #0x26 - moveq r1, #0xa - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - mov r1, #4 - strh r1, [r0, #8] - strh r6, [r0, #4] - strh r5, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end WmspError_06003ED4 - - arm_func_start WMSP_EndScan -WMSP_EndScan: ; 0x06003F1C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x200 - ldr r0, _06003FE4 ; =wmspW + 0x1000 - add r4, sp, #0 - ldr r5, [r0, #0x550] - ldrh r0, [r5] - cmp r0, #5 - beq _06003F58 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xb - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06003FD8 -_06003F58: - mov r0, r4 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003F78 - ldr r0, _06003FE8 ; =0x00000302 - bl WmspError_06003FF0 - b _06003FD8 -_06003F78: - mov r0, #2 - strh r0, [r5] - add r0, r5, #0x100 - ldrh r0, [r0, #0xee] - cmp r0, #0 - bne _06003FC0 - mov r0, r4 - mov r1, #1 - bl WMSP_WL_ParamSetPreambleType - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06003FB4 - ldr r0, _06003FEC ; =0x0000020E - bl WmspError_06003FF0 - b _06003FD8 -_06003FB4: - add r0, r5, #0x100 - mov r1, #1 - strh r1, [r0, #0xee] -_06003FC0: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xb - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06003FD8: - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06003FE4: .word wmspW + 0x1000 -_06003FE8: .word 0x00000302 -_06003FEC: .word 0x0000020E - arm_func_end WMSP_EndScan - - arm_func_start WmspError_06003FF0 -WmspError_06003FF0: ; 0x06003FF0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xb - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r5, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WmspError_06003FF0 - - arm_func_start WMSP_StartConnectEx -WMSP_StartConnectEx: ; 0x06004024 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x250 - ldr r1, _060045B4 ; =wmspW + 0x1000 - add r4, sp, #0x50 - ldr r7, [r1, #0x550] - ldr r5, [r1, #0x54c] - ldrh r1, [r7] - mov r6, r0 - cmp r1, #2 - bne _06004058 - ldr r0, [r7, #0xc8] - tst r0, #1 - beq _0600407C -_06004058: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, #6 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060045A8 -_0600407C: - ldr r0, [r6, #4] - add r1, r5, #0x10 - mov r2, #0xc0 - bl __VENEER_MI_CpuCopy8 - ldrh r0, [r5, #0x4c] - cmp r0, #0x10 - blo _060040C8 - ldrb r0, [r5, #0x5b] - tst r0, #1 - bne _060040C8 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - mov r1, #0xb - strh r1, [r0, #2] - mov r1, #6 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060045A8 -_060040C8: - ldrh r1, [r5, #0x46] - add r0, r7, #0x100 - mov r2, #1 - ldrh r0, [r0, #0xf4] - mov r1, r2, lsl r1 - tst r1, r0 - beq _060040F0 - rsb r0, r2, #0x2000 - tst r0, r1, asr #1 - bne _06004110 -_060040F0: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - mov r1, #6 - strh r1, [r0, #2] - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060045A8 -_06004110: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #6 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - add r0, r7, #0x100 - ldrh r1, [r0, #0xec] - cmp r1, #1 - ldrh r1, [r5, #0x3e] - bne _06004158 - tst r1, #1 - movne r1, #1 - strneh r1, [r0, #0xec] - moveq r1, #2 - b _06004168 -_06004158: - tst r1, #2 - movne r1, #2 - strneh r1, [r0, #0xec] - moveq r1, #1 -_06004168: - streqh r1, [r0, #0xec] - ldrh r0, [r5, #0x3c] - tst r0, #0x20 - movne r1, #1 - add r0, r7, #0x100 - moveq r1, #0 - strh r1, [r0, #0xee] - ldrh r0, [r5, #0x4c] - mov r1, r4 - cmp r0, #0 - moveq r0, #3 - movne r0, #2 - strh r0, [r7, #0xe6] - mov r0, #0xc - bl WMSP_SetAllParams - cmp r0, #0 - beq _060045A8 - mov r0, r4 - mov r1, #0 - bl WMSP_WL_ParamSetNullKeyResponseMode - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060041D4 - ldr r0, _060045B8 ; =0x00000216 - mov r2, #0 - bl WmspError_060045D0 - b _060045A8 -_060041D4: - ldrh r0, [r5, #0x4c] - cmp r0, #0x10 - bhs _06004230 - ldrh r1, [r5, #0x42] - cmp r1, #0 - moveq r0, #1 - beq _060041FC - ldr r0, _060045BC ; =0x00002710 - bl __VENEER__s32_div_f - add r0, r0, #1 -_060041FC: - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - cmp r1, #0xff - movhi r1, #0xff - mov r0, r4 - bl WMSP_WL_ParamSetBeaconLostThreshold - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06004230 - ldr r0, _060045C0 ; =0x0000020B - mov r2, #0 - bl WmspError_060045D0 - b _060045A8 -_06004230: - mov r0, r4 - bl WMSP_WL_DevClass1 - ldrh r1, [r0, #4] - mov r2, #0 - cmp r1, #0 - beq _06004254 - ldr r0, _060045C4 ; =0x00000303 - bl WmspError_060045D0 - b _060045A8 -_06004254: - mov r0, #3 - strh r0, [r7] - ldr r0, [r6, #0x20] - mov r3, #1 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - mov r0, r0, lsl #0x10 - mov r8, r0, lsr #0x10 - mov r0, r4 - mov r1, r8 - bl WMSP_WL_MlmePowerManagement - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060042A0 - mov r0, #1 - mov r2, #0 - bl WmspError_060045D0 - b _060045A8 -_060042A0: - strh r8, [r7, #0xc6] - add r1, sp, #0xc - add r0, r5, #0x10 - mov r2, #0x40 - bl __VENEER_MI_CpuCopy8 - ldrh r0, [r7, #0xe6] - cmp r0, #2 - bne _060042FC - mov r0, #0x20 - strh r0, [sp, #0x16] - ldr r0, [r5, #0x54] - add r1, sp, #0x20 - strh r0, [sp, #0x18] - ldr r2, [r5, #0x54] - add r0, r6, #8 - mov r2, r2, lsr #0x10 - strh r2, [sp, #0x1a] - ldrh ip, [r5, #0x58] - mov r3, #0 - mov r2, #0x18 - strh ip, [sp, #0x1c] - strh r3, [sp, #0x1e] - bl __VENEER_MI_CpuCopy8 -_060042FC: - add r2, sp, #0xc - mov r0, r4 - mov r1, #0x7d0 - bl WMSP_WL_MlmeJoin - ldrh r1, [r0, #4] - cmp r1, #0 - ldreqh r2, [r0, #6] - cmpeq r2, #0 - beq _06004330 - ldrh r2, [r0, #6] - mov r0, #3 - bl WmspError_060045D0 - b _060045A8 -_06004330: - add r1, r7, #0x8a - add r0, r0, #8 - add r1, r1, #0x100 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, r7, #0x8a - add r1, sp, #6 - add r0, r0, #0x100 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r2, [r6, #0x26] - add r1, sp, #6 - mov r0, r4 - mov r3, #0x7d0 - bl WMSP_WL_MlmeAuthenticate - ldrh r1, [r0, #4] - cmp r1, #0xc - ldreqh r2, [r0, #6] - cmpeq r2, #0x13 - bne _060043A0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - strh r1, [r0, #2] - mov r1, #6 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060045A8 -_060043A0: - cmp r1, #0 - ldreqh r2, [r0, #6] - cmpeq r2, #0 - beq _060043C0 - ldrh r2, [r0, #6] - mov r0, #4 - bl WmspError_060045D0 - b _060045A8 -_060043C0: - add r0, r7, #0x8a - add r1, sp, #0 - add r0, r0, #0x100 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r1, sp, #0 - mov r0, r4 - mov r2, #1 - mov r3, #0x7d0 - bl WMSP_WL_MlmeAssociate - mov r4, r0 - bl __VENEER_OS_DisableInterrupts - ldrh r2, [r4, #4] - mov r6, r0 - cmp r2, #0xc - ldreqh r1, [r4, #6] - cmpeq r1, #0x13 - bne _0600442C - bl __VENEER_OS_RestoreInterrupts - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - strh r1, [r0, #2] - mov r1, #6 - strh r1, [r0, #8] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060045A8 -_0600442C: - cmp r2, #0 - ldreqh r0, [r4, #6] - cmpeq r0, #0 - beq _06004458 - mov r0, r6 - bl __VENEER_OS_RestoreInterrupts - ldrh r1, [r4, #4] - ldrh r2, [r4, #6] - mov r0, #6 - bl WmspError_060045D0 - b _060045A8 -_06004458: - ldrh r1, [r4, #8] - add r0, r7, #0x100 - strh r1, [r0, #0x88] - ldrh r0, [r5, #0x58] - add r1, r7, #0x1f8 - strh r0, [r7, #0xba] - mov r0, #1 - mov r2, #0x10 - bl __VENEER_MIi_CpuClear16 - ldrh r0, [r5, #0x12] - and r0, r0, #0xff - tst r0, #2 - mov r0, r0, asr #2 - addeq r0, r0, #0x19 - and r4, r0, #0xff - mov r0, r4 - bl WMSP_GetLinkLevel - strh r0, [r7, #0xbc] - mov r0, r4 - bl WMSP_FillRssiIntoList - bl __VENEER_OS_DisableInterrupts - add r1, r7, #0x100 - mov r2, #1 - strh r2, [r1, #0x82] - strh r2, [r7, #0x86] - ldr r1, [r7, #0x7bc] - ldr r2, [r7, #0x7b8] - cmp r1, #0 - mov r4, r0 - cmpeq r2, #0 - beq _060044E8 - bl __VENEER_OS_GetTick - orr r0, r0, #1 - str r0, [r7, #0x738] - orr r0, r1, #0 - str r0, [r7, #0x73c] -_060044E8: - mov r0, #8 - strh r0, [r7] - ldrb r0, [r5, #0x5b] - tst r0, #4 - movne r1, #0x2a - ldrh r0, [r5, #0x5c] - moveq r1, #0 - add r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_SetParentMaxSize - ldrb r0, [r5, #0x5b] - tst r0, #4 - movne r1, #6 - ldrh r0, [r5, #0x5e] - moveq r1, #0 - add r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_SetChildMaxSize - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - mov r0, #1 - strh r0, [r7, #0xc2] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0xc - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #7 - strh r0, [r4, #8] - add r0, r7, #0x100 - ldrh r2, [r0, #0x88] - add r1, r7, #0x8a - strh r2, [r4, #0xa] - add r0, r1, #0x100 - add r1, r4, #0x10 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldrh r1, [r7, #0x30] - mov r0, r4 - strh r1, [r4, #0x16] - ldrh r1, [r7, #0x32] - strh r1, [r4, #0x18] - bl __VENEER_WMSP_ReturnResult2Wm9 - mov r0, r6 - bl __VENEER_OS_RestoreInterrupts -_060045A8: - add sp, sp, #0x250 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_060045B4: .word wmspW + 0x1000 -_060045B8: .word 0x00000216 -_060045BC: .word 0x00002710 -_060045C0: .word 0x0000020B -_060045C4: .word 0x00000303 - arm_func_end WMSP_StartConnectEx - - arm_func_start __VENEER__s32_div_f -__VENEER__s32_div_f: ; 0x060045C8 - ldr pc, _060045CC ; =_s32_div_f - .align 2, 0 -_060045CC: .word _s32_div_f - arm_func_end __VENEER__s32_div_f - - arm_func_start WmspError_060045D0 -WmspError_060045D0: ; 0x060045D0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xc - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r6, [r0, #4] - strh r5, [r0, #6] - strh r4, [r0, #0xe] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end WmspError_060045D0 - - arm_func_start WMSP_Disconnect -WMSP_Disconnect: ; 0x0600460C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, [r0, #4] - add r2, sp, #0 - mov r3, r1, lsl #0x10 - mov r1, #0 - mov r4, r3, lsr #0x10 - bl WMSP_DisconnectCore - cmp r0, #1 - bne _06004658 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xd - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - strh r4, [r0, #8] - ldrh r1, [sp] - strh r1, [r0, #0xa] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06004658: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end WMSP_Disconnect - - arm_func_start WMSP_DisconnectCore -WMSP_DisconnectCore: ; 0x06004664 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x220 - ldr r3, _06004BE8 ; =wmspW + 0x1000 - ldr r4, [r0, #4] - movs sl, r1 - ldrne r0, [r0, #8] - mov r1, r4, lsl #0x10 - moveq r0, #0 - mov r0, r0, lsl #0x10 - mov fp, #0 - ldr r7, [r3, #0x550] - mov r8, r1, lsr #0x10 - ldrh r1, [r7] - mov r0, r0, lsr #0x10 - cmp r1, #9 - str r2, [sp] - mov r5, fp - str r0, [sp, #8] - cmpne r1, #7 - bne _060046C4 - ldr r0, [r7, #0xc] - cmp r0, #1 - moveq r5, #1 - b _060047BC -_060046C4: - cmp r1, #0xa - cmpne r1, #8 - bne _06004780 - bl __VENEER_OS_DisableInterrupts - add r1, r7, #0x100 - ldrh r1, [r1, #0x82] - mov r4, r0 - cmp r1, #0 - bne _06004728 - bl __VENEER_OS_RestoreInterrupts - cmp sl, #0 - bne _06004720 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xd - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, #0 - strh r1, [r0, #4] - strh r1, [r0, #6] - strh r8, [r0, #8] - strh r1, [r0, #0xa] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06004720: - mov r0, #0 - b _06004BDC -_06004728: - ldr r0, [r7, #0xc] - cmp r0, #1 - bne _06004758 - mov r0, #0 - str r0, [r7, #0xc] - mov r5, #1 - bl WMSP_CancelVAlarm - bl WMSP_SetThreadPriorityLow - ldrh r0, [r7] - cmp r0, #0xa - moveq r0, #8 - streqh r0, [r7] -_06004758: - add r0, r7, #0x100 - mov r1, #0 - strh r1, [r0, #0x82] - strh r1, [r7, #0x86] - str r1, [r7, #0x14] - str r1, [r7, #0x10] - mov r0, r4 - str r1, [r7, #0x1c] - bl __VENEER_OS_RestoreInterrupts - b _060047BC -_06004780: - cmp sl, #0 - bne _060047B4 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xd - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, fp - strh r1, [r0, #4] - strh r1, [r0, #6] - strh r8, [r0, #8] - strh r1, [r0, #0xa] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060047B4: - mov r0, #0 - b _06004BDC -_060047BC: - ldrh r0, [r7] - cmp r0, #0xa - cmpne r0, #8 - bne _060049E4 - add r0, r7, #0x8a - add r1, sp, #0x1a - add r0, r0, #0x100 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - mov sb, #0 - add r6, sp, #0x1a - mov r4, #3 - b _06004874 -_060047F0: - add r0, sp, #0x20 - mov r1, r6 - mov r2, r4 - bl WMSP_WL_MlmeDeAuthenticate - ldrh r1, [r0, #4] - cmp r1, #7 - bgt _0600482C - bge _06004834 - cmp r1, #1 - bgt _0600483C - cmp r1, #0 - blt _0600483C - cmpne r1, #1 - beq _0600487C - b _0600483C -_0600482C: - cmp r1, #0xc - bne _0600483C -_06004834: - add sb, sb, #1 - b _06004874 -_0600483C: - cmp sl, #0 - mov r2, r8 - mov r0, #5 - mov r3, #0 - beq _06004858 - bl WmspIndError - b _0600485C -_06004858: - bl WmspError_06004CB4 -_0600485C: - cmp r5, #0 - beq _0600486C - mov r0, #1 - bl WMSP_CleanSendQueue -_0600486C: - mov r0, #0 - b _06004BDC -_06004874: - cmp sb, #2 - blt _060047F0 -_0600487C: - mov r0, #0 - strh r0, [r7, #0xc2] - mov r0, #3 - mov fp, #1 - strh r0, [r7] - add r0, sp, #0x20 - mov r1, fp - bl WMSP_WL_MlmeReset - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060048E0 - cmp sl, #0 - mov r2, r8 - mov r0, #0 - mov r3, fp - beq _060048C4 - bl WmspIndError - b _060048C8 -_060048C4: - bl WmspError_06004CB4 -_060048C8: - cmp r5, #0 - beq _060048D8 - mov r0, #1 - bl WMSP_CleanSendQueue -_060048D8: - mov r0, #0 - b _06004BDC -_060048E0: - add r0, sp, #0x20 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06004930 - ldr r0, _06004BEC ; =0x00000302 - cmp sl, #0 - mov r2, r8 - beq _06004910 - mov r3, fp - bl WmspIndError - b _06004918 -_06004910: - mov r3, fp - bl WmspError_06004CB4 -_06004918: - cmp r5, #0 - beq _06004928 - mov r0, #1 - bl WMSP_CleanSendQueue -_06004928: - mov r0, #0 - b _06004BDC -_06004930: - mov r0, #2 - strh r0, [r7] - mov r1, #0 - str r1, [r7, #0x198] - add r3, r7, #0x100 - add r0, r7, #0x19c - mov r2, #0x50 - strh r1, [r3, #0x96] - bl __VENEER_MI_CpuFill8 - bl WMSP_ResetSizeVars - cmp sl, #1 - bne _060049C0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0xc - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #9 - strh r0, [r4, #8] - ldr r0, [sp, #8] - mov r2, #6 - strh r0, [r4, #0xc] - add r0, r7, #0x100 - ldrh r1, [r0, #0x88] - add r0, sp, #0x1a - strh r1, [r4, #0xa] - add r1, r4, #0x10 - bl __VENEER_MI_CpuCopy8 - ldrh r1, [r7, #0x30] - mov r0, r4 - strh r1, [r4, #0x16] - ldrh r1, [r7, #0x32] - strh r1, [r4, #0x18] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060049D0 -_060049C0: - mov r0, #0 - add r2, sp, #0x1a - mov r1, r0 - bl WMSP_IndicateDisconnectionFromMyself -_060049D0: - cmp r5, #0 - beq _06004BCC - mov r0, #1 - bl WMSP_CleanSendQueue - b _06004BCC -_060049E4: - mov r6, #1 - b _06004BC4 -_060049EC: - add r0, r7, #0x100 - ldrh r0, [r0, #0x82] - mov r1, #1 - mov sb, r1, lsl r6 - and r0, r0, r8 - tst sb, r0 - beq _06004BC0 - sub r1, r6, #1 - mov r2, #6 - mul r0, r1, r2 - str r0, [sp, #0x10] - add r0, r7, #0x128 - str r0, [sp, #0xc] - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [sp, #4] - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x10] - add r0, r1, r0 - add r1, sp, #0x14 - bl __VENEER_MI_CpuCopy8 - mov r4, #0 - b _06004AB0 -_06004A48: - add r0, sp, #0x20 - add r1, sp, #0x14 - mov r2, #3 - bl WMSP_WL_MlmeDeAuthenticate - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06004AB8 - cmp r1, #7 - cmpne r1, #0xc - bne _06004A78 - add r4, r4, #1 - b _06004AB0 -_06004A78: - cmp sl, #0 - mov r2, r8 - mov r0, #5 - mov r3, fp - beq _06004A94 - bl WmspIndError - b _06004A98 -_06004A94: - bl WmspError_06004CB4 -_06004A98: - cmp r5, #0 - beq _06004AA8 - mov r0, #1 - bl WMSP_CleanSendQueue -_06004AA8: - mov r0, #0 - b _06004BDC -_06004AB0: - cmp r4, #2 - blt _06004A48 -_06004AB8: - bl __VENEER_OS_DisableInterrupts - mov r4, r0 - add r1, r7, #0x100 - ldrh r3, [r1, #0x82] - tst r3, sb - beq _06004BBC - ldr r2, [sp, #0xc] - ldr r0, [sp, #0x10] - mov ip, #1 - add r0, r2, r0 - ldr r2, [sp, #4] - orr r2, fp, ip, lsl r2 - mov r2, r2, lsl #0x10 - mov fp, r2, lsr #0x10 - mvn r2, sb - and r3, r3, r2 - strh r3, [r1, #0x82] - ldrh r3, [r7, #0x86] - mov r1, #0 - and r2, r3, r2 - strh r2, [r7, #0x86] - ldr r2, [sp, #4] - add r2, r7, r2, lsl #3 - str r1, [r2, #0x738] - str r1, [r2, #0x73c] - mov r2, #6 - bl __VENEER_MI_CpuFill8 - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - cmp sl, #1 - bne _06004B90 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #8 - strh r0, [r4] - mov r0, #0 - strh r0, [r4, #2] - mov r0, #9 - strh r0, [r4, #8] - ldr r0, [sp, #8] - add r1, r4, #0xa - strh r0, [r4, #0x12] - ldr r0, [sp, #4] - mov r2, #6 - strh r0, [r4, #0x10] - add r0, sp, #0x14 - bl __VENEER_MI_CpuCopy8 - ldrh r1, [r7, #0x30] - mov r0, r4 - strh r1, [r4, #0x2c] - ldrh r1, [r7, #0x32] - strh r1, [r4, #0x2e] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06004BA4 -_06004B90: - mov r0, r6, lsl #0x10 - mov r1, r0, lsr #0x10 - add r2, sp, #0x14 - mov r0, #1 - bl WMSP_IndicateDisconnectionFromMyself -_06004BA4: - cmp r5, #0 - beq _06004BC0 - mov r0, sb, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_CleanSendQueue - b _06004BC0 -_06004BBC: - bl __VENEER_OS_RestoreInterrupts -_06004BC0: - add r6, r6, #1 -_06004BC4: - cmp r6, #0x10 - blt _060049EC -_06004BCC: - ldr r0, [sp] - cmp r0, #0 - strneh fp, [r0] - mov r0, #1 -_06004BDC: - add sp, sp, #0x220 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06004BE8: .word wmspW + 0x1000 -_06004BEC: .word 0x00000302 - arm_func_end WMSP_DisconnectCore - - arm_func_start WMSP_IndicateDisconnectionFromMyself -WMSP_IndicateDisconnectionFromMyself: ; 0x06004BF0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r3, _06004CAC ; =wmspW + 0x1000 - mov r8, r0 - ldr r5, [r3, #0x550] - mov r7, r1 - mov r6, r2 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0 - strh r0, [r4, #2] - cmp r8, #0 - mov r1, #0x1a - mov r2, #6 - beq _06004C60 - mov r0, #8 - strh r0, [r4] - strh r1, [r4, #8] - ldr r0, _06004CB0 ; =0x0000F001 - add r1, r4, #0xa - strh r0, [r4, #0x12] - strh r7, [r4, #0x10] - mov r0, r6 - bl __VENEER_MI_CpuCopy8 - ldrh r0, [r5, #0x30] - strh r0, [r4, #0x2c] - ldrh r0, [r5, #0x32] - strh r0, [r4, #0x2e] - b _06004C9C -_06004C60: - mov r0, #0xc - strh r0, [r4] - ldr r0, _06004CB0 ; =0x0000F001 - strh r1, [r4, #8] - strh r0, [r4, #0xc] - add r0, r5, #0x100 - ldrh r1, [r0, #0x88] - mov r0, r6 - strh r1, [r4, #0xa] - add r1, r4, #0x10 - bl __VENEER_MI_CpuCopy8 - ldrh r0, [r5, #0x30] - strh r0, [r4, #0x16] - ldrh r0, [r5, #0x32] - strh r0, [r4, #0x18] -_06004C9C: - mov r0, r4 - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_06004CAC: .word wmspW + 0x1000 -_06004CB0: .word 0x0000F001 - arm_func_end WMSP_IndicateDisconnectionFromMyself - - arm_func_start WmspError_06004CB4 -WmspError_06004CB4: ; 0x06004CB4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xd - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r7, [r0, #4] - strh r6, [r0, #6] - strh r5, [r0, #8] - strh r4, [r0, #0xa] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end WmspError_06004CB4 - - arm_func_start WmspIndError -WmspIndError: ; 0x06004CF8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x25 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r7, [r0, #4] - strh r6, [r0, #6] - strh r5, [r0, #8] - strh r4, [r0, #0xa] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end WmspIndError - - arm_func_start WMSP_StartMP -WMSP_StartMP: ; 0x06004D3C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x204 - ldr r1, _060050C4 ; =wmspW + 0x1000 - mov sl, r0 - ldr r8, [r1, #0x550] - ldr fp, [sl, #4] - ldrh r1, [r8, #0x9c] - ldr r4, [sl, #8] - ldr r5, [sl, #0xc] - ldr r6, [sl, #0x10] - ldr r0, _060050C8 ; =wmspW - cmp r1, #0 - mov r7, #0 - bne _06004DC0 - ldrh r1, [r8, #0x3c] - add r1, r1, #0x1f - bic r1, r1, #0x1f - cmp r6, r1 - add r1, r8, #0x100 - ldrh r1, [r1, #0x88] - movlo r7, #6 - cmp r1, #0 - ldrneh r1, [r8, #0x3e] - addne r1, r1, #0x51 - bne _06004DB4 - ldrh r2, [r8, #0x3e] - ldrh r1, [r8, #0xf8] - add r2, r2, #0xc - mul r1, r2, r1 - add r1, r1, #0x29 -_06004DB4: - bic r1, r1, #0x1f - cmp r4, r1 - movlo r7, #6 -_06004DC0: - ldrh r1, [r8, #0xe6] - cmp r1, #2 - bne _06004DF0 - add r0, r0, #0x1000 - ldr r1, [r0, #0x54c] - add r0, r8, #0x100 - ldrh r1, [r1, #0x46] - ldrh r3, [r0, #0xf6] - mov r2, #1 - mov r0, r2, lsl r1 - tst r3, r0, asr #1 - moveq r7, #6 -_06004DF0: - cmp r7, #0 - beq _06004E18 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - strh r7, [r0, #2] - mov r1, #0xa - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060050B8 -_06004E18: - ldr r0, [r8, #0xc] - mov r1, #0 - cmp r0, #0 - strne r1, [r8, #0xc] - movne r1, #1 - cmp r1, #0 - beq _06004E3C - ldr r0, _060050CC ; =0x0000FFFF - bl WMSP_CleanSendQueue -_06004E3C: - bl WMSP_InitSendQueue - bl __VENEER_OS_DisableInterrupts - str r0, [sp] - add r0, sl, #0x14 - mov r1, #0 - bl WMSP_SetMPParameterCore - ldr r0, _060050C4 ; =wmspW + 0x1000 - ldr r7, [sl, #0x30] - ldr sb, [r0, #0x550] - ldrh r0, [sb] - cmp r0, #9 - cmpne r0, #0xa - beq _06004F30 - bl __VENEER_OS_DisableInterrupts - tst r7, #4 - ldrneh r2, [sl, #0x38] - add r1, sb, #0x700 - ldreqh r2, [sb, #0x5c] - cmp r2, #0 - moveq r2, #0x10 - tst r7, #1 - ldrneh r3, [sl, #0x34] - ldreqh r3, [sb, #0x58] - cmp r3, #0 - moveq r3, #0x10 - cmp r3, r2 - movhi r3, r2 - tst r7, #2 - ldrneh ip, [sl, #0x36] - ldreqh ip, [sb, #0x5a] - strh r2, [r1, #0xc4] - cmp ip, #0 - moveq ip, #0x10 - cmp ip, r2 - strh r3, [r1, #0xc0] - movhi ip, r2 - strh ip, [r1, #0xc2] - ldrsh r1, [sb, #0x62] - cmp r1, r2 - strgth r2, [sb, #0x62] - tst r7, #0x200 - ldrneh r2, [sl, #0x3a] - add r1, sb, #0x700 - ldreqh r2, [sb, #0x98] - tst r7, #0x400 - strh r2, [r1, #0xca] - ldrneb r2, [sl, #0x3c] - add r1, sb, #0x700 - ldreqh r2, [sb, #0x92] - tst r7, #0x800 - strh r2, [r1, #0xc6] - ldrneb r2, [sl, #0x3d] - add r1, sb, #0x700 - ldreqh r2, [sb, #0x94] - tst r7, #0x1000 - strh r2, [r1, #0xc8] - ldrneb r2, [sl, #0x3e] - add r1, sb, #0x700 - ldreqh r2, [sb, #0x9a] - strh r2, [r1, #0xcc] - bl __VENEER_OS_RestoreInterrupts -_06004F30: - ldrh r0, [r8] - add r0, r0, #0xf9 - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _06005090 - mov r2, #0 - strh r2, [r8, #0x84] - strh r2, [r8, #0x5e] - mov r1, #1 - strh r1, [r8, #0x60] - strh r2, [r8, #0x88] - strh r2, [r8, #0x9e] - mov r0, #0x3c - strh r0, [r8, #0xa0] - str r2, [r8, #0x734] - strh r2, [r8, #0x8a] - strh r2, [r8, #0x8c] - strh r2, [r8, #0x8e] - strh r2, [r8, #0x90] - strh r2, [r8, #0x66] - str fp, [r8, #0x74] - strh r4, [r8, #0x72] - add r0, fp, r4 - str r0, [r8, #0x78] - strh r2, [r8, #0x70] - str r5, [r8, #0x7c] - strh r6, [r8, #0x80] - strh r2, [r8, #0x62] - strh r2, [r8, #0x64] - strh r2, [r8, #0x68] - strh r2, [r8, #0x6a] - rsb r0, r1, #0x10000 - strh r0, [r8, #0xbe] - strh r1, [r8, #0xc0] - bl __VENEER_OS_GetTick - orr r1, r1, #0 - orr r2, r0, #1 - mov r3, #0 -_06004FD0: - add r0, r8, r3, lsl #3 - str r2, [r0, #0x738] - add r3, r3, #1 - str r1, [r0, #0x73c] - cmp r3, #0x10 - blt _06004FD0 - bl WMSP_SetThreadPriorityHigh - mov r0, #0 - strh r0, [r8, #0xce] - bl WMSP_SetVAlarm - ldrh r0, [r8] - cmp r0, #8 - moveq r0, #0xa - streqh r0, [r8] - beq _06005018 - cmp r0, #7 - moveq r0, #9 - streqh r0, [r8] -_06005018: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0xa - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - mov r1, #1 - ldr r0, [sp] - str r1, [r8, #0xc] - bl __VENEER_OS_RestoreInterrupts - add r0, sp, #4 - mov r1, #1 - bl WMSP_WL_ParamSetNullKeyResponseMode - mov r4, r0 - ldrh r0, [r4, #4] - cmp r0, #0 - beq _060050B8 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0xe - strh r2, [r0] - mov r1, #1 - strh r1, [r0, #2] - add r1, r2, #0x208 - strh r1, [r0, #4] - ldrh r1, [r4, #4] - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060050B8 -_06005090: - ldr r0, [sp] - bl __VENEER_OS_RestoreInterrupts - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0xe - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - mov r1, #0xa - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060050B8: - add sp, sp, #0x204 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_060050C4: .word wmspW + 0x1000 -_060050C8: .word wmspW -_060050CC: .word 0x0000FFFF - arm_func_end WMSP_StartMP - - arm_func_start WMSP_SetMPData -WMSP_SetMPData: ; 0x060050D0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r1, _06005204 ; =wmspW + 0x1000 - ldr r2, [r0, #0x10] - ldr sl, [r1, #0x550] - ldr r5, [r0, #8] - add r4, sl, #0x100 - ldr r3, [r0, #0x14] - ldrh r8, [r4, #0x88] - mov r1, r5, lsl #0x10 - ldrh sb, [r4, #0x82] - ldr fp, [r0, #4] - ldr r5, [r0, #0xc] - cmp r8, #0 - ldr r6, [r0, #0x18] - ldr r7, [r0, #0x1c] - mov r2, r2, lsl #0x10 - mov r0, r2, lsr #0x10 - str r0, [sp, #0x10] - ldr r0, [sl, #0xc] - movne r5, #1 - cmp r0, #0 - mov r3, r3, lsl #0x10 - mov r4, r1, lsr #0x10 - mov r1, r3, lsr #0x10 - moveq r8, #3 - beq _06005164 - tst r5, sb - moveq r8, #0 - beq _06005164 - str fp, [sp] - stmib sp, {r4, r6, r7} - ldr r2, [sp, #0x10] - mov r0, sb - mov r3, r5 - bl WMSP_PutSendQueue - mov r8, r0 -_06005164: - cmp r8, #2 - beq _060051F8 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x81 - strh r1, [r0] - strh r8, [r0, #2] - mov r1, #0x14 - strh r1, [r0, #8] - ldr r1, [sp, #0x10] - cmp r8, #0xa - strh r1, [r0, #0xa] - andeq r1, r5, sb - strh r5, [r0, #0xc] - movne r1, #0 - strh r1, [r0, #0xe] - mov r1, #0 - strh r1, [r0, #0x10] - strh r4, [r0, #0x18] - str fp, [r0, #0x14] - str r6, [r0, #0x1c] - ldr r1, _06005208 ; =0x0000FFFF - str r7, [r0, #0x20] - strh r1, [r0, #0x1a] - add r1, sl, #0x100 - ldrh r1, [r1, #0x88] - ldrh r2, [sl, #0x30] - cmp r1, #0 - ldrh r3, [sl, #0x32] - moveq r1, r2 - movne r1, r3 - strh r1, [r0, #0x24] - add r1, sl, #0x100 - ldrh r1, [r1, #0x88] - cmp r1, #0 - movne r3, r2 - strh r3, [r0, #0x26] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060051F8: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06005204: .word wmspW + 0x1000 -_06005208: .word 0x0000FFFF - arm_func_end WMSP_SetMPData - - arm_func_start WMSP_EndMP -WMSP_EndMP: ; 0x0600520C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x200 - ldr r0, _0600531C ; =wmspW + 0x1000 - mov r4, #0 - ldr r6, [r0, #0x550] - ldrh r0, [r6] - cmp r0, #9 - cmpne r0, #0xa - beq _0600524C - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x10 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06005310 -_0600524C: - bl __VENEER_OS_DisableInterrupts - ldr r1, [r6, #0xc] - mov r5, r0 - mov r0, #0 - cmp r1, #1 - str r0, [r6, #0xc] - moveq r4, #1 - bl WMSP_CancelVAlarm - bl WMSP_SetThreadPriorityLow - ldrh r0, [r6] - cmp r0, #0xa - moveq r0, #8 - streqh r0, [r6] - beq _06005290 - cmp r0, #9 - moveq r0, #7 - streqh r0, [r6] -_06005290: - mov r0, r5 - bl __VENEER_OS_RestoreInterrupts - add r0, sp, #0 - mov r1, #0 - bl WMSP_WL_ParamSetNullKeyResponseMode - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060052BC - ldr r0, _06005320 ; =0x00000216 - bl WmspError_06005328 - b _06005310 -_060052BC: - add r0, sp, #0 - mov r1, #7 - bl WMSP_WL_MaClearData - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060052E0 - mov r0, #0x104 - bl WmspError_06005328 - b _06005310 -_060052E0: - mov r0, #0 - strh r0, [r6, #0x8a] - cmp r4, #0 - beq _060052F8 - ldr r0, _06005324 ; =0x0000FFFF - bl WMSP_CleanSendQueue -_060052F8: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x10 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06005310: - add sp, sp, #0x200 - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600531C: .word wmspW + 0x1000 -_06005320: .word 0x00000216 -_06005324: .word 0x0000FFFF - arm_func_end WMSP_EndMP - - arm_func_start WmspError_06005328 -WmspError_06005328: ; 0x06005328 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x10 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r5, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WmspError_06005328 - - arm_func_start WMSP_StartDCF -WMSP_StartDCF: ; 0x0600535C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _060053E4 ; =wmspW + 0x1000 - ldr r2, [r0, #8] - ldr r4, [r1, #0x550] - mov r5, r2, lsl #0x10 - ldr r6, [r0, #4] - mov r7, r5, lsr #0x10 - bl __VENEER_OS_DisableInterrupts - str r6, [r4, #0xb0] - strh r7, [r4, #0xb8] - add r1, r6, r5, lsr #16 - str r1, [r4, #0xb4] - mov r1, #0 - strh r1, [r4, #0xae] - str r1, [r4, #0xa8] - strh r1, [r4, #0xac] - str r1, [r4, #0x18] - mov r1, #0xb - strh r1, [r4] - mov r5, r0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x11 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0xe - strh r1, [r0, #4] - bl __VENEER_WMSP_ReturnResult2Wm9 - mov r1, #1 - mov r0, r5 - str r1, [r4, #0x10] - bl __VENEER_OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_060053E4: .word wmspW + 0x1000 - arm_func_end WMSP_StartDCF - - arm_func_start WMSP_SetDCFData -WMSP_SetDCFData: ; 0x060053E8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x230 - ldr r1, _060054DC ; =wmspW + 0x1000 - mov r5, r0 - ldr r4, [r1, #0x550] - add r0, r5, #4 - add r1, r4, #0xa2 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldr r0, [r5, #0xc] - add r1, sp, #0 - str r0, [r4, #0xa8] - ldr r2, [r5, #0x10] - mov r0, #1 - strh r2, [r4, #0xac] - str r0, [r4, #0x18] - mov r0, #0 - mov r2, #0x30 - bl __VENEER_MIi_CpuClear16 - mov r0, #0 - strh r0, [sp] - ldr r1, [r5, #0x10] - add r0, r4, #0x100 - strh r1, [sp, #6] - ldrh r0, [r0, #0xec] - add r1, sp, #0x18 - cmp r0, #2 - moveq r3, #0x14 - movne r3, #0xa - add r0, r5, #4 - mov r2, #6 - strb r3, [sp, #0xe] - bl __VENEER_MI_CpuCopy8 - add r1, sp, #0x1e - add r0, r4, #0xe0 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - ldr r2, [r5, #0xc] - add r0, sp, #0x30 - add r1, sp, #0 - str r2, [sp, #0x2c] - bl WMSP_WL_MaData - mov r4, r0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x12 - strh r1, [r0] - ldrh r1, [r4, #4] - cmp r1, #0 - moveq r1, #0 - movne r1, #1 - strh r1, [r0, #2] - ldrh r1, [r4, #4] - cmp r1, #0 - movne r1, #0x100 - strneh r1, [r0, #4] - ldrneh r1, [r4, #4] - strneh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - add sp, sp, #0x230 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060054DC: .word wmspW + 0x1000 - arm_func_end WMSP_SetDCFData - - arm_func_start WMSP_EndDCF -WMSP_EndDCF: ; 0x060054E0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x200 - ldr r0, _06005598 ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - bl __VENEER_OS_DisableInterrupts - ldrh r1, [r4] - cmp r1, #0xb - beq _06005520 - bl __VENEER_OS_RestoreInterrupts - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x13 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _0600558C -_06005520: - mov r1, #0 - str r1, [r4, #0x10] - mov r1, #8 - strh r1, [r4] - bl __VENEER_OS_RestoreInterrupts - add r0, sp, #0 - mov r1, #7 - bl WMSP_WL_MaClearData - ldrh r4, [r0, #4] - cmp r4, #0 - beq _06005574 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x13 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - mov r1, #0x104 - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _0600558C -_06005574: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x13 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_0600558C: - add sp, sp, #0x200 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06005598: .word wmspW + 0x1000 - arm_func_end WMSP_EndDCF - - arm_func_start WMSP_SetWEPKey -WMSP_SetWEPKey: ; 0x0600559C - stmdb sp!, {r3, lr} - ldr r1, _06005640 ; =wmspW + 0x1000 - ldr r2, [r0, #4] - ldr r3, [r1, #0x550] - add r1, r3, #0x100 - strh r2, [r1, #0x96] - ldrh r1, [r1, #0x96] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _060055EC -_060055C4: ; jump table - b _060055D4 ; case 0 - b _060055E0 ; case 1 - b _060055E0 ; case 2 - b _060055E0 ; case 3 -_060055D4: - mov r1, #0 - str r1, [r3, #0x198] - b _060055F4 -_060055E0: - mov r1, #1 - str r1, [r3, #0x198] - b _060055F4 -_060055EC: - mov r1, #0 - str r1, [r3, #0x198] -_060055F4: - ldr r1, [r3, #0x198] - mov r2, #0x50 - cmp r1, #1 - bne _06005614 - ldr r0, [r0, #8] - add r1, r3, #0x19c - bl __VENEER_MI_CpuCopy8 - b _06005620 -_06005614: - add r0, r3, #0x19c - mov r1, #0 - bl __VENEER_MI_CpuFill8 -_06005620: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x14 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06005640: .word wmspW + 0x1000 - arm_func_end WMSP_SetWEPKey - - arm_func_start WMSP_SetWEPKeyEx -WMSP_SetWEPKeyEx: ; 0x06005644 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x200 - ldr r1, _06005738 ; =wmspW + 0x1000 - mov r5, r0 - ldr r4, [r1, #0x550] - ldr r1, [r5, #4] - add r0, r4, #0x100 - strh r1, [r0, #0x96] - ldrh r0, [r0, #0x96] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0600569C -_06005674: ; jump table - b _06005684 ; case 0 - b _06005690 ; case 1 - b _06005690 ; case 2 - b _06005690 ; case 3 -_06005684: - mov r0, #0 - str r0, [r4, #0x198] - b _060056A4 -_06005690: - mov r0, #1 - str r0, [r4, #0x198] - b _060056A4 -_0600569C: - mov r0, #0 - str r0, [r4, #0x198] -_060056A4: - ldr r0, [r4, #0x198] - mov r2, #0x50 - cmp r0, #1 - bne _060056C4 - ldr r0, [r5, #8] - add r1, r4, #0x19c - bl __VENEER_MI_CpuCopy8 - b _060056D0 -_060056C4: - add r0, r4, #0x19c - mov r1, #0 - bl __VENEER_MI_CpuFill8 -_060056D0: - ldr r1, [r5, #0xc] - add r0, sp, #0 - strh r1, [r4, #0xc4] - ldrh r1, [r4, #0xc4] - bl WMSP_WL_ParamSetWepKeyId - ldrh r4, [r0, #4] - cmp r4, #0 - beq _06005714 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0x14 - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - rsb r1, r1, #0x208 - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06005714: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x27 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06005738: .word wmspW + 0x1000 - arm_func_end WMSP_SetWEPKeyEx - - arm_func_start WMSP_SetGameInfo -WMSP_SetGameInfo: ; 0x0600573C - stmdb sp!, {r4, lr} - sub sp, sp, #0x280 - ldr r1, _06005828 ; =wmspW + 0x1000 - ldr r2, [r0, #4] - ldr r4, [r1, #0x550] - str r2, [r4, #0xe8] - ldr r1, [r0, #8] - strh r1, [r4, #0xec] - ldr r1, [r0, #0xc] - str r1, [r4, #0xf0] - ldr r1, [r0, #0x10] - strh r1, [r4, #0xf4] - ldr r0, [r0, #0x14] - and r0, r0, #0xff - tst r0, #1 - movne r1, #1 - moveq r1, #0 - strh r1, [r4, #0xf6] - tst r0, #2 - movne r1, #1 - moveq r1, #0 - strh r1, [r4, #0xfa] - tst r0, #4 - movne r1, #1 - moveq r1, #0 - tst r0, #8 - strh r1, [r4, #0xfc] - movne r1, #1 - moveq r1, #0 - strh r1, [r4, #0xfe] - add r0, sp, #0 - add r1, r4, #0xe8 - bl WMSP_CopyParentParam - ldrh r1, [r4, #0xec] - add r0, sp, #0x80 - add r1, r1, #0x10 - mov r1, r1, lsl #0x10 - add r2, sp, #0 - mov r1, r1, lsr #0x10 - bl WMSP_WL_ParamSetGameInfo - mov r4, r0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x18 - strh r1, [r0] - ldrh r1, [r4, #4] - cmp r1, #0 - moveq r1, #0 - movne r1, #1 - strh r1, [r0, #2] - ldrh r1, [r4, #4] - cmp r1, #0 - ldrne r1, _0600582C ; =0x00000245 - strneh r1, [r0, #4] - ldrneh r1, [r4, #4] - strneh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - add sp, sp, #0x280 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06005828: .word wmspW + 0x1000 -_0600582C: .word 0x00000245 - arm_func_end WMSP_SetGameInfo - - arm_func_start WMSP_SetBeaconTxRxInd -WMSP_SetBeaconTxRxInd: ; 0x06005830 - stmdb sp!, {r4, lr} - sub sp, sp, #0x200 - ldr r1, [r0, #4] - add r0, sp, #0 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl WMSP_WL_ParamSetBeaconSendRecvInd - ldrh r4, [r0, #4] - cmp r4, #0 - beq _06005880 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0x19 - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - add r1, r1, #0x214 - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06005898 -_06005880: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x19 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06005898: - add sp, sp, #0x200 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSP_SetBeaconTxRxInd - - arm_func_start WMSP_StartTestMode -WMSP_StartTestMode: ; 0x060058A4 - stmdb sp!, {r3, lr} - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1a - strh r1, [r0] - mov r1, #4 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, lr} - bx lr - arm_func_end WMSP_StartTestMode - - arm_func_start WMSP_StopTestMode -WMSP_StopTestMode: ; 0x060058C8 - stmdb sp!, {r3, lr} - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1b - strh r1, [r0] - mov r1, #4 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, lr} - bx lr - arm_func_end WMSP_StopTestMode - - arm_func_start WMSP_SetLifeTime -WMSP_SetLifeTime: ; 0x060058EC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x200 - ldmib r0, {r1, r2, r3} - ldr r0, [r0, #0x10] - mov r1, r1, lsl #0x10 - mov r4, r0, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - ldr ip, _06005A04 ; =wmspW + 0x1000 - mov r5, r4, lsr #0x10 - add r0, sp, #0 - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - mov r3, r3, lsr #0x10 - ldr r4, [ip, #0x550] - bl WMSP_WL_ParamSetLifeTime - ldrh r6, [r0, #4] - cmp r6, #0 - beq _06005960 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0x1d - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - add r1, r1, #0x210 - strh r1, [r0, #4] - strh r6, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060059F8 -_06005960: - ldr r0, _06005A08 ; =0x0000FFFF - cmp r5, r0 - beq _060059AC - cmp r5, #0 - moveq r1, #1 - moveq r0, #0 - beq _060059A0 - mov r0, #0x64 - mul r2, r5, r0 - ldr r0, _06005A0C ; =0x000082EA - mov r1, r2, asr #0x1f - umull ip, r3, r2, r0 - mla r3, r1, r0, r3 - mov r1, ip, lsr #6 - mov r0, r3, lsr #6 - orr r1, r1, r3, lsl #26 -_060059A0: - str r1, [r4, #0x7b8] - str r0, [r4, #0x7bc] - b _060059B8 -_060059AC: - mov r0, #0 - str r0, [r4, #0x7b8] - str r0, [r4, #0x7bc] -_060059B8: - bl __VENEER_OS_GetTick - orr r1, r1, #0 - orr r2, r0, #1 - mov r3, #0 -_060059C8: - add r0, r4, r3, lsl #3 - str r2, [r0, #0x738] - add r3, r3, #1 - str r1, [r0, #0x73c] - cmp r3, #0x10 - blt _060059C8 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1d - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060059F8: - add sp, sp, #0x200 - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06005A04: .word wmspW + 0x1000 -_06005A08: .word 0x0000FFFF -_06005A0C: .word 0x000082EA - arm_func_end WMSP_SetLifeTime - - arm_func_start WMSP_MeasureChannel -WMSP_MeasureChannel: ; 0x06005A10 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x214 - ldr r1, _06005BAC ; =wmspW + 0x1000 - mov r7, r0 - ldr r6, [r1, #0x550] - add r4, sp, #0x14 - ldrh r0, [r6] - cmp r0, #2 - beq _06005A50 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1e - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06005BA0 -_06005A50: - mov r0, r4 - bl WMSP_WL_DevGetStationState - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06005A70 - mov r0, #0x308 - bl WmspError_06005BB8 - b _06005BA0 -_06005A70: - ldrh r1, [r0, #6] - mov r0, #2 - strh r0, [r6, #0xe6] - cmp r1, #0x10 - bne _06005AF0 - mov r1, r4 - mov r0, #0xa - bl WMSP_SetAllParams - cmp r0, #0 - beq _06005BA0 - mov r0, r4 - bl WMSP_WL_DevClass1 - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06005AB8 - ldr r0, _06005BB0 ; =0x00000303 - bl WmspError_06005BB8 - b _06005BA0 -_06005AB8: - mov r0, #3 - mov r1, #1 - strh r0, [r6] - mov r0, r4 - mov r3, r1 - mov r2, #0 - bl WMSP_WL_MlmePowerManagement - ldrh r1, [r0, #4] - mov r0, #1 - cmp r1, #0 - beq _06005AEC - bl WmspError_06005BB8 - b _06005BA0 -_06005AEC: - strh r0, [r6, #0xc6] -_06005AF0: - ldrh r8, [r7, #2] - ldrh sb, [r7, #4] - ldrh r5, [r7, #6] - ldrh r7, [r7, #8] - add r0, sp, #4 - mov r1, #0 - mov r2, #0x10 - bl __VENEER_MI_CpuFill8 - strb r5, [sp, #4] - add r0, sp, #4 - str r0, [sp] - mov r0, r4 - mov r1, r8 - mov r2, sb - mov r3, r7 - bl WMSP_WL_MlmeMeasureChannel - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06005B48 - mov r0, #0xa - bl WmspError_06005BB8 - b _06005BA0 -_06005B48: - ldrh r1, [r0, #8] - mov r0, r4 - and r4, r1, #0xff - mov r1, r1, lsl #8 - mov r5, r1, lsr #0x10 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06005B78 - ldr r0, _06005BB4 ; =0x00000302 - bl WmspError_06005BB8 - b _06005BA0 -_06005B78: - mov r0, #2 - strh r0, [r6] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1e - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - strh r4, [r0, #8] - strh r5, [r0, #0xa] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06005BA0: - add sp, sp, #0x214 - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_06005BAC: .word wmspW + 0x1000 -_06005BB0: .word 0x00000303 -_06005BB4: .word 0x00000302 - arm_func_end WMSP_MeasureChannel - - arm_func_start WmspError_06005BB8 -WmspError_06005BB8: ; 0x06005BB8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1e - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - strh r5, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WmspError_06005BB8 - - arm_func_start WMSP_InitWirelessCounter -WMSP_InitWirelessCounter: ; 0x06005BEC - stmdb sp!, {r4, lr} - sub sp, sp, #0x200 - add r0, sp, #0 - bl WMSP_WL_DevSetInitializeWirelessCounter - ldrh r4, [r0, #4] - cmp r4, #0 - beq _06005C30 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0x1f - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - add r1, r1, #0x304 - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06005C48 -_06005C30: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x1f - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06005C48: - add sp, sp, #0x200 - ldmia sp!, {r4, lr} - bx lr - arm_func_end WMSP_InitWirelessCounter - - arm_func_start WMSP_GetWirelessCounter -WMSP_GetWirelessCounter: ; 0x06005C54 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x200 - add r0, sp, #0 - bl WMSP_WL_DevGetWirelessCounter - mov r5, r0 - ldrh r4, [r5, #4] - cmp r4, #0 - beq _06005C9C - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #0x20 - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - rsb r1, r1, #0x308 - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06005CCC -_06005C9C: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0x20 - strh r0, [r4] - mov r3, #0 - add r0, r5, #8 - add r1, r4, #8 - mov r2, #0xb4 - strh r3, [r4, #2] - bl __VENEER_MIi_CpuCopy16 - mov r0, r4 - bl __VENEER_WMSP_ReturnResult2Wm9 -_06005CCC: - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end WMSP_GetWirelessCounter - - arm_func_start WMSP_InitVAlarm -WMSP_InitVAlarm: ; 0x06005CD8 - ldr ip, _06005CE4 ; =OS_CreateVAlarm - ldr r0, _06005CE8 ; =wmspVAlarm - bx ip - .align 2, 0 -_06005CE4: .word OS_CreateVAlarm -_06005CE8: .word wmspVAlarm - arm_func_end WMSP_InitVAlarm - - arm_func_start WMSP_CancelVAlarm -WMSP_CancelVAlarm: ; 0x06005CEC - ldr ip, _06005CF8 ; =OS_CancelVAlarm - ldr r0, _06005CFC ; =wmspVAlarm - bx ip - .align 2, 0 -_06005CF8: .word OS_CancelVAlarm -_06005CFC: .word wmspVAlarm - arm_func_end WMSP_CancelVAlarm - - arm_func_start WMSP_SetVAlarm -WMSP_SetVAlarm: ; 0x06005D00 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _06005DA0 ; =wmspW + 0x1000 - ldr r0, _06005DA4 ; =wmspVAlarm - ldr r4, [r1, #0x550] - ldrh r1, [r4, #0xe6] - cmp r1, #1 - bne _06005D50 - ldr r1, [r0] - cmp r1, #0 - beq _06005D30 - bl __VENEER_OS_CancelVAlarm -_06005D30: - ldr r0, _06005DA4 ; =wmspVAlarm - mov r1, #0xcb - mov ip, #3 - ldr r3, _06005DA8 ; =WmspParentAdjustVSync - add r2, r1, #0x3c - str ip, [sp] - bl __VENEER_OS_SetVAlarm - b _06005D94 -_06005D50: - cmp r1, #2 - bne _06005D94 - mov r1, #0 - str r1, [r4, #0x1c] - ldr r1, [r0] - cmp r1, #0 - beq _06005D70 - bl __VENEER_OS_CancelVAlarm -_06005D70: - ldr r0, _06005DA4 ; =wmspVAlarm - mov r2, #1 - mov r1, #0xc8 - ldr r3, _06005DAC ; =WmspChildAdjustVSync1 - str r2, [sp] - add r2, r1, #0x3f - bl __VENEER_OS_SetVAlarm - mov r0, #0 - str r0, [r4, #0xd8] -_06005D94: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_06005DA0: .word wmspW + 0x1000 -_06005DA4: .word wmspVAlarm -_06005DA8: .word WmspParentAdjustVSync -_06005DAC: .word WmspChildAdjustVSync1 - arm_func_end WMSP_SetVAlarm - - arm_func_start __VENEER_OS_CancelVAlarm -__VENEER_OS_CancelVAlarm: ; 0x06005DB0 - ldr pc, _06005DB4 ; =OS_CancelVAlarm - .align 2, 0 -_06005DB4: .word OS_CancelVAlarm - arm_func_end __VENEER_OS_CancelVAlarm - - arm_func_start __VENEER_OS_SetVAlarm -__VENEER_OS_SetVAlarm: ; 0x06005DB8 - ldr pc, _06005DBC ; =OS_SetVAlarm - .align 2, 0 -_06005DBC: .word OS_SetVAlarm - arm_func_end __VENEER_OS_SetVAlarm - - arm_func_start WmspChildAdjustVSync1 -WmspChildAdjustVSync1: ; 0x06005DC0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _06005EFC ; =wmspW + 0x1000 - ldr r2, _06005F00 ; =0x0380FFF0 - ldr r0, [r1, #0x550] - ldrh r3, [r2] - str r3, [r0, #0xd0] - ldr r2, [r0, #0xd4] - cmp r2, r3 - beq _06005EA0 - str r3, [r0, #0xd4] - ldr r1, [r1, #0x550] - ldr r3, _06005F04 ; =0x048080F8 - ldr r2, [r1, #0xd0] - mov r2, r2, lsl #6 - str r2, [r1, #0xd0] - ldrh r2, [r3] - ldrh lr, [r3, #2] - ldrh r4, [r3] - cmp r2, r4 - ldrhih lr, [r3, #2] - ldr r3, _06005F08 ; =0x04000006 - ldr r2, _06005F0C ; =0x00000107 - ldrh ip, [r3] - ldr r3, _06005F10 ; =0x003FFFC0 - sub ip, r2, ip - orr lr, r4, lr, lsl #16 - ldr r2, [r1, #0xd0] - and lr, lr, r3 - rsb ip, ip, ip, lsl #7 - add ip, ip, lr, lsl #1 - and lr, r3, ip, lsr #1 - cmp r2, lr - movhi r2, #0 - strhi r2, [r1, #0xd8] - bhi _06005EA0 - mov ip, #1 - b _06005E90 -_06005E58: - ldr r2, [r1, #0xd0] - add r2, r2, #0x4b - add r3, r2, #0x4100 - str r3, [r1, #0xd0] - cmp r3, lr - bls _06005E8C - ldr r2, _06005F14 ; =0x0000400E - sub r3, r3, lr - cmp r3, r2 - str r3, [r1, #0xd8] - movhi r2, #0 - strhi r2, [r1, #0xd8] - b _06005EA0 -_06005E8C: - add ip, ip, #1 -_06005E90: - cmp ip, #0x1e - blt _06005E58 - mov r2, #0 - str r2, [r1, #0xd8] -_06005EA0: - ldr r1, [r0, #0xd8] - cmp r1, #0x7f - bls _06005ECC - ldr r0, _06005F18 ; =wmspVAlarm - mov r1, #0xd0 - mov ip, #2 - ldr r3, _06005F1C ; =WmspChildAdjustVSync2 - add r2, r1, #0x37 - str ip, [sp] - bl __VENEER_OS_SetVAlarm - b _06005EF0 -_06005ECC: - mov r2, #1 - str r2, [r0, #0x1c] - mov r1, #4 - str r1, [sp] - ldrsh r1, [r0, #0x42] - ldr r0, _06005F18 ; =wmspVAlarm - ldr r3, _06005F20 ; =WmspChildVAlarmMP - rsb r2, r2, #0x108 - bl __VENEER_OS_SetVAlarm -_06005EF0: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_06005EFC: .word wmspW + 0x1000 -_06005F00: .word 0x0380FFF0 -_06005F04: .word 0x048080F8 -_06005F08: .word 0x04000006 -_06005F0C: .word 0x00000107 -_06005F10: .word 0x003FFFC0 -_06005F14: .word 0x0000400E -_06005F18: .word wmspVAlarm -_06005F1C: .word WmspChildAdjustVSync2 -_06005F20: .word WmspChildVAlarmMP - arm_func_end WmspChildAdjustVSync1 - - arm_func_start WmspChildAdjustVSync2 -WmspChildAdjustVSync2: ; 0x06005F24 - stmdb sp!, {r3, lr} - ldr r1, _06005FD0 ; =0x04000006 - ldr r0, _06005FD4 ; =wmspW + 0x1000 - ldrh ip, [r1] - ldr r0, [r0, #0x550] - cmp ip, #0xd0 - blt _06005F9C - cmp ip, #0xd2 - bge _06005F9C - ldr r1, [r0, #0xd8] - cmp r1, #0x7f - blo _06005F9C - mov r3, #1 - b _06005F74 -_06005F5C: - ldr r2, [r0, #0xd8] - rsb r1, r3, r3, lsl #6 - add r1, r1, #0x7f - cmp r2, r1 - blo _06005F7C - add r3, r3, #1 -_06005F74: - cmp r3, #7 - blt _06005F5C -_06005F7C: - ldr r1, _06005FD0 ; =0x04000006 - rsb r2, r3, #1 - add r2, ip, r2 - strh r2, [r1] - ldr r2, [r0, #0xd8] - rsb r1, r3, r3, lsl #6 - sub r1, r2, r1 - str r1, [r0, #0xd8] -_06005F9C: - ldr r1, [r0, #0xd8] - ldr r2, _06005FD8 ; =0x00000107 - cmp r1, #0x7f - movhs r1, #0 - strhs r1, [r0, #0x1c] - mov r1, #4 - str r1, [sp] - ldrsh r1, [r0, #0x42] - ldr r0, _06005FDC ; =wmspVAlarm - ldr r3, _06005FE0 ; =WmspChildVAlarmMP - bl __VENEER_OS_SetVAlarm - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06005FD0: .word 0x04000006 -_06005FD4: .word wmspW + 0x1000 -_06005FD8: .word 0x00000107 -_06005FDC: .word wmspVAlarm -_06005FE0: .word WmspChildVAlarmMP - arm_func_end WmspChildAdjustVSync2 - - arm_func_start WmspChildVAlarmMP -WmspChildVAlarmMP: ; 0x06005FE4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _060060E8 ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - ldr r0, [r4, #0xc] - cmp r0, #1 - bne _060060DC - ldr r0, _060060EC ; =wmspVAlarm - mov r2, #1 - mov r1, #0xc8 - ldr r3, _060060F0 ; =WmspChildAdjustVSync1 - str r2, [sp] - add r2, r1, #0x3f - bl __VENEER_OS_SetVAlarm - ldr r0, [r4, #0x7bc] - ldr r1, [r4, #0x7b8] - cmp r0, #0 - cmpeq r1, #0 - beq _060060D8 - bl __VENEER_OS_GetTick - ldr r3, [r4, #0x73c] - ldr ip, [r4, #0x738] - cmp r3, #0 - cmpeq ip, #0 - orr lr, r1, #0 - orr r1, r0, #1 - mov r0, #0 - beq _060060D8 - ldr r2, [r4, #0x7b8] - subs ip, r1, ip - ldr r1, [r4, #0x7bc] - sbc r3, lr, r3 - cmp r3, r1 - cmpeq ip, r2 - bls _060060D8 - str r0, [r4, #0x738] - str r0, [r4, #0x73c] - bl WMSP_GetInternalRequestBuf - movs r1, r0 - moveq r0, #0 - beq _060060A4 - mov r0, #0x25 - str r0, [r1] - ldr r3, _060060F4 ; =0x00008001 - mov r2, #0 - ldr r0, _060060F8 ; =wmspW + 0x88 - stmib r1, {r2, r3} - bl __VENEER_OS_SendMessage -_060060A4: - cmp r0, #0 - bne _060060DC - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x25 - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060060DC -_060060D8: - bl WmspFromVAlarmToWmspThread -_060060DC: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_060060E8: .word wmspW + 0x1000 -_060060EC: .word wmspVAlarm -_060060F0: .word WmspChildAdjustVSync1 -_060060F4: .word 0x00008001 -_060060F8: .word wmspW + 0x88 - arm_func_end WmspChildVAlarmMP - - arm_func_start WmspParentAdjustVSync -WmspParentAdjustVSync: ; 0x060060FC - stmdb sp!, {r3, lr} - ldr r0, _0600619C ; =wmspW + 0x1000 - ldr r0, [r0, #0x550] - ldrh r1, [r0, #0xdc] - cmp r1, #0x3c - blo _06006138 - ldr r2, _060061A0 ; =0x04000006 - ldrh r1, [r2] - cmp r1, #0xcb - blt _06006140 - cmp r1, #0xd2 - strlth r1, [r2] - movlt r1, #0 - strlth r1, [r0, #0xdc] - b _06006140 -_06006138: - add r1, r1, #1 - strh r1, [r0, #0xdc] -_06006140: - ldr r1, _060061A0 ; =0x04000006 - ldr r2, _060061A4 ; =0x048080F8 - ldrh lr, [r1] - ldrh r1, [r2] - ldrh r3, [r2, #2] - ldrh ip, [r2] - cmp r1, ip - ldrhih r3, [r2, #2] - ldr r1, _060061A8 ; =0x0380FFF0 - orr r3, ip, r3, lsl #16 - rsb r2, lr, lr, lsl #7 - rsb r2, r2, r3, lsl #1 - mov r3, r2, lsr #7 - strh r3, [r1] - mov r2, #5 - str r2, [sp] - ldrsh r1, [r0, #0x40] - ldr r0, _060061AC ; =wmspVAlarm - ldr r3, _060061B0 ; =WmspParentVAlarmMP - rsb r2, r2, #0x10c - bl __VENEER_OS_SetVAlarm - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600619C: .word wmspW + 0x1000 -_060061A0: .word 0x04000006 -_060061A4: .word 0x048080F8 -_060061A8: .word 0x0380FFF0 -_060061AC: .word wmspVAlarm -_060061B0: .word WmspParentVAlarmMP - arm_func_end WmspParentAdjustVSync - - arm_func_start WmspParentVAlarmMP -WmspParentVAlarmMP: ; 0x060061B4 - stmdb sp!, {r3, lr} - ldr r0, _060061F4 ; =wmspW + 0x1000 - ldr r0, [r0, #0x550] - ldr r0, [r0, #0xc] - cmp r0, #1 - bne _060061EC - ldr r0, _060061F8 ; =wmspVAlarm - mov r1, #0xcb - mov ip, #3 - ldr r3, _060061FC ; =WmspParentAdjustVSync - add r2, r1, #0x3c - str ip, [sp] - bl __VENEER_OS_SetVAlarm - bl WmspFromVAlarmToWmspThread -_060061EC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060061F4: .word wmspW + 0x1000 -_060061F8: .word wmspVAlarm -_060061FC: .word WmspParentAdjustVSync - arm_func_end WmspParentVAlarmMP - - arm_func_start WmspFromVAlarmToWmspThread -WmspFromVAlarmToWmspThread: ; 0x06006200 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _060062A8 ; =wmspW + 0x1000 - ldr r4, _060062AC ; =wmspW - ldr r5, [r0, #0x550] - bl __VENEER_OS_DisableInterrupts - ldrh r1, [r5, #0xce] - cmp r1, #1 - bne _06006228 - bl __VENEER_OS_RestoreInterrupts - b _060062A0 -_06006228: - mov r1, #1 - strh r1, [r5, #0xce] - bl __VENEER_OS_RestoreInterrupts - bl WMSP_GetInternalRequestBuf - movs r1, r0 - moveq r0, #0 - beq _06006258 - mov r3, #0x1c - add r0, r4, #0x88 - mov r2, #0 - str r3, [r1] - bl __VENEER_OS_SendMessage -_06006258: - cmp r0, #0 - bne _060062A0 - mov r0, #0 - strh r0, [r5, #0xce] - add r0, r4, #0x1000 - ldr r0, [r0, #0x54c] - cmp r0, #0 - beq _060062A0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x80 - strh r1, [r0] - mov r1, #8 - strh r1, [r0, #2] - mov r1, #0x16 - strh r1, [r0, #4] - mov r1, #0x1c - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060062A0: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060062A8: .word wmspW + 0x1000 -_060062AC: .word wmspW - arm_func_end WmspFromVAlarmToWmspThread - - arm_func_start WMSP_VAlarmSetMPData -WMSP_VAlarmSetMPData: ; 0x060062B0 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _06006448 ; =wmspW + 0x1000 - mov r1, #0 - ldr r4, [r0, #0x550] - mov r2, #1 - strh r1, [r4, #0xce] - strh r2, [r4, #0x88] - ldrh r0, [r4, #0xc0] - sub r0, r0, #1 - strh r0, [r4, #0xc0] - ldrh r0, [r4, #0xc0] - cmp r0, #0 - bne _0600631C - ldrh r1, [r4, #0xbe] - rsb r0, r2, #0x10000 - cmp r1, r0 - moveq r0, #4 - streqh r0, [r4, #0xbe] - ldrh r0, [r4, #0xbe] - and r0, r0, #0xff - bl WMSP_AddRssiToList - bl WMSP_GetAverageLinkLevel - strh r0, [r4, #0xbc] - ldr r1, _0600644C ; =0x0000FFFF - mov r0, #1 - strh r1, [r4, #0xbe] - strh r0, [r4, #0xc0] -_0600631C: - ldrh r0, [r4] - cmp r0, #9 - bne _0600640C - bl __VENEER_OS_DisableInterrupts - add r1, r4, #0x100 - ldrh r1, [r1, #0x82] - cmp r1, #0 - bne _0600634C - mov r1, #0 - strh r1, [r4, #0x62] - bl __VENEER_OS_RestoreInterrupts - b _06006440 -_0600634C: - ldrsh r2, [r4, #0x62] - mov r3, #1 - cmp r2, #0 - ldrgtsh r1, [r4, #0x64] - cmpgt r1, #0 - movgt r3, #0 - cmp r2, #0 - movlt r1, #0 - strlth r1, [r4, #0x62] - add r1, r4, #0x700 - ldrsh r2, [r4, #0x62] - ldrsh r1, [r1, #0xc2] - add r1, r2, r1 - strh r1, [r4, #0x62] - ldrsh r1, [r4, #0x62] - cmp r1, #0x100 - movgt r1, #0x100 - strgth r1, [r4, #0x62] - add r1, r4, #0x700 - ldrh r1, [r1, #0xc4] - cmp r3, #0 - strh r1, [r4, #0x64] - beq _060063C0 - ldrsh r1, [r4, #0x62] - cmp r1, #0 - ldrgtsh r1, [r4, #0x64] - cmpgt r1, #0 - movgt r5, #1 - bgt _060063C4 -_060063C0: - mov r5, #0 -_060063C4: - bl __VENEER_OS_RestoreInterrupts - cmp r5, #0 - beq _060063D8 - ldr r0, _0600644C ; =0x0000FFFF - bl WMSP_SendMaMP -_060063D8: - add r0, r4, #0x700 - ldrh r0, [r0, #0xc6] - cmp r0, #1 - ldreqh r0, [r4, #0xa0] - subeq r0, r0, #1 - streqh r0, [r4, #0xa0] - ldreqh r0, [r4, #0xa0] - cmpeq r0, #0 - moveq r0, #1 - streqh r0, [r4, #0x9e] - moveq r0, #0x3c - streqh r0, [r4, #0xa0] - b _06006440 -_0600640C: - cmp r0, #0xa - bne _06006440 - mov r5, #0 - bl __VENEER_OS_DisableInterrupts - ldr r1, [r4, #0x734] - cmp r1, #1 - movne r1, r5 - movne r5, #1 - strneh r1, [r4, #0x60] - bl __VENEER_OS_RestoreInterrupts - cmp r5, #1 - bne _06006440 - bl WMSP_SendMaKeyData -_06006440: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06006448: .word wmspW + 0x1000 -_0600644C: .word 0x0000FFFF - arm_func_end WMSP_VAlarmSetMPData - - arm_func_start WMSP_KickNextMP_Parent -WMSP_KickNextMP_Parent: ; 0x06006450 - stmdb sp!, {r3, lr} - ldr r1, _06006480 ; =wmspW + 0x1000 - ldr r1, [r1, #0x550] - ldrh r1, [r1] - cmp r1, #9 - bne _06006478 - ldr r0, [r0, #4] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_SendMaMP -_06006478: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06006480: .word wmspW + 0x1000 - arm_func_end WMSP_KickNextMP_Parent - - arm_func_start WMSP_KickNextMP_Child -WMSP_KickNextMP_Child: ; 0x06006484 - stmdb sp!, {r3, lr} - ldr r0, _060064A8 ; =wmspW + 0x1000 - ldr r0, [r0, #0x550] - ldrh r0, [r0] - cmp r0, #0xa - bne _060064A0 - bl WMSP_SendMaKeyData -_060064A0: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060064A8: .word wmspW + 0x1000 - arm_func_end WMSP_KickNextMP_Child - - arm_func_start WMSP_KickNextMP_Resume -WMSP_KickNextMP_Resume: ; 0x060064AC - stmdb sp!, {r3, lr} - ldr r1, _060064DC ; =wmspW + 0x1000 - ldr r1, [r1, #0x550] - ldrh r1, [r1] - cmp r1, #9 - bne _060064D4 - ldr r0, [r0, #4] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WMSP_ResumeMaMP -_060064D4: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060064DC: .word wmspW + 0x1000 - arm_func_end WMSP_KickNextMP_Resume - - arm_func_start WMSP_InitSendQueue -WMSP_InitSendQueue: ; 0x060064E0 - stmdb sp!, {r4, lr} - ldr r0, _06006590 ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - add r0, r4, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_LockMutex - add r1, r4, #0x2f8 - mov r0, #0 - mov r2, #0x400 - bl __VENEER_MIi_CpuClear16 - mov r3, #0 -_0600650C: - add r0, r3, #1 - mov r0, r0, lsl #0x10 - add r1, r4, r3, lsl #5 - mov r3, r0, lsr #0x10 - add r0, r1, #0x200 - strh r3, [r0, #0xf8] - cmp r3, #0x1f - blo _0600650C - ldr r2, _06006594 ; =0x0000FFFF - add r0, r4, r3, lsl #5 - add r0, r0, #0x200 - strh r2, [r0, #0xf8] - add r0, r4, #0x600 - mov ip, #0 - strh ip, [r0, #0xf8] - strh r3, [r0, #0xfa] -_0600654C: - add r1, r4, ip, lsl #2 - add r0, r1, #0x700 - strh r2, [r0, #0xc] - strh r2, [r0, #0xe] - add r0, r1, #0x600 - add r1, ip, #1 - strh r2, [r0, #0xfc] - mov r1, r1, lsl #0x10 - mov ip, r1, lsr #0x10 - strh r2, [r0, #0xfe] - cmp ip, #4 - blo _0600654C - add r0, r4, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06006590: .word wmspW + 0x1000 -_06006594: .word 0x0000FFFF - arm_func_end WMSP_InitSendQueue - - arm_func_start __VENEER_OS_LockMutex -__VENEER_OS_LockMutex: ; 0x06006598 - ldr pc, _0600659C ; =OS_LockMutex - .align 2, 0 -_0600659C: .word OS_LockMutex - arm_func_end __VENEER_OS_LockMutex - - arm_func_start __VENEER_OS_UnlockMutex -__VENEER_OS_UnlockMutex: ; 0x060065A0 - ldr pc, _060065A4 ; =OS_UnlockMutex - .align 2, 0 -_060065A4: .word OS_UnlockMutex - arm_func_end __VENEER_OS_UnlockMutex - - arm_func_start WMSP_SendMaKeyData -WMSP_SendMaKeyData: ; 0x060065A8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x260 - ldr r1, _06006A98 ; =wmspW + 0x1000 - ldr fp, [r1, #0x550] - add r0, fp, #0x100 - ldrh r0, [r0, #0x82] - cmp r0, #0 - beq _06006A8C - mov r0, #1 - strh r0, [fp, #0x8a] - str r0, [sp, #0x14] - mov r0, #0 - strh r0, [sp, #0x5c] - ldr r8, [r1, #0x550] - add r1, sp, #0x5c - ldrh sb, [r8, #0x38] - str r1, [sp, #0x34] - add r1, sb, #0x1f - ldrh r2, [r8, #0x80] - bic r1, r1, #0x1f - ldr r7, [r8, #0x7c] - cmp r2, r1 - blt _06006A38 - add r1, r8, #0x100 - ldrh r1, [r1, #0x88] - cmp r1, #0x10 - bhs _06006A38 - ldrh r1, [r8] - cmp r1, #9 - beq _0600662C - cmp r1, #0xa - streq r0, [sp, #0x14] - bne _06006A38 -_0600662C: - ldr r0, [sp, #0x34] - mov r6, #0 - strh r6, [r0] - mov r0, #1 - cmp sb, #0 - strlt r0, [sp, #0x14] - blt _06006A38 - str r0, [sp, #0x18] - ldr r0, [sp, #0x14] - cmp r0, #0 - beq _0600666C - add r0, r8, #0x700 - ldrh r0, [r0, #0xc6] - cmp r0, #0 - strne r6, [sp, #0x18] - b _06006670 -_0600666C: - str r6, [sp, #0x18] -_06006670: - add r0, r8, #0x31c - mov r1, #0 - str r1, [sp, #0xc] - mov r1, #1 - add r0, r0, #0x400 - str r1, [sp, #0x10] - bl __VENEER_OS_LockMutex - ldr r0, [r8, #0x734] - cmp r0, #1 - bne _060066B0 - add r0, r8, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - mov r0, #1 - str r0, [sp, #0x14] - b _06006A38 -_060066B0: - mov r0, #1 - str r0, [r8, #0x734] - add r0, r8, #0x2f8 - str r0, [sp, #0x1c] - mov r5, #0 - b _06006A14 -_060066C8: - add r0, r8, #0x30c - add r0, r0, #0x400 - mov r1, r5, lsl #2 - ldrh sl, [r0, r1] - add r0, r0, r5, lsl #2 - str r0, [sp, #0x20] - add r0, r8, #0x2fc - add r0, r0, #0x400 - add r0, r0, r5, lsl #2 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - str r0, [sp, #0x28] - ldr r0, _06006A9C ; =0x0000FFFF - str r0, [sp, #0x2c] - str r0, [sp, #0x38] - str r0, [sp, #0x3c] - add r0, r8, #0x100 - str r0, [sp, #0x40] - ldr r0, [sp, #0x2c] - sub r0, r0, #0x8000 - str r0, [sp, #0x44] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x48] - add r0, r8, #0x700 - str r0, [sp, #0x4c] - ldr r0, [sp, #0x2c] - str r0, [sp, #0x50] - str r0, [sp, #0x54] - str r0, [sp, #0x58] - b _060069FC -_06006740: - ldr r0, [sp, #0x1c] - ldr r2, [sp, #0xc] - add r4, r0, sl, lsl #5 - ldrh r0, [r4, #2] - mov r1, #1 - str r0, [sp, #8] - tst r2, r1, lsl r0 - bne _060069C0 - ldr r0, [sp, #0x18] - cmp r0, #0 - ldr r0, [sp, #8] - orr r0, r2, r1, lsl r0 - str r0, [sp, #0xc] - ldrh r0, [r4, #6] - and r1, r0, r1 - str r1, [sp, #0x30] - beq _0600678C - bics r1, r1, #1 - bne _060069C0 -_0600678C: - ldr r1, [sp, #8] - tst r1, #8 - movne r1, #1 - strne r1, [sp, #4] - moveq r1, #0 - streq r1, [sp, #4] - ldr r1, [sp, #0x14] - cmp r1, #0 - orrne r1, r0, #1 - ldrne r0, [sp, #0x3c] - cmpne r1, r0 - movne r0, #1 - strne r0, [sp] - moveq r0, #0 - streq r0, [sp] - ldrh r0, [r4, #0xe] - and r1, r0, #1 - cmp r1, #1 - addeq r0, r0, #1 - streqh r0, [r4, #0xe] - ldr r0, [sp, #4] - ldr r1, [sp, #0x10] - cmp r0, #0 - movne r0, #2 - moveq r0, #0 - cmp r1, #0 - movne r3, #0 - ldr r1, [sp] - moveq r3, #2 - ldrh r2, [r4, #0xe] - cmp r1, #0 - movne r1, #2 - add r2, r2, r3 - moveq r1, #0 - add r0, r2, r0 - add r0, r1, r0 - cmp r0, sb - bgt _060069C0 - ldr r0, [sp, #0x10] - cmp r0, #0 - streq r7, [sp, #0x34] - moveq r0, #0 - streqh r0, [r7], #2 - ldr r0, [sp, #0x34] - ldrh r2, [r4, #2] - ldrh r1, [r4, #0xe] - mov r2, r2, lsl #8 - mov r1, r1, lsr #1 - ldrh r0, [r0] - and r2, r2, #0xf00 - and r1, r1, #0xff - orr r1, r2, r1 - orr r1, r0, r1 - ldr r0, [sp, #0x34] - addeq r6, r6, #2 - strh r1, [r0] - ldr r0, [r4, #0x14] - ldrh r2, [r4, #0xe] - mov r1, r7 - subeq sb, sb, #2 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldr r0, [sp, #4] - add r6, r6, r1 - cmp r0, #1 - bic r0, r1, #1 - add r7, r7, r0 - sub sb, sb, r1 - bne _060068F4 - ldrh r0, [r4, #0x10] - tst r0, #1 - moveq r2, r0, asr #1 - beq _060068E0 - ldr r0, [sp, #0x40] - ldrh r1, [r4, #2] - ldrh r0, [r0, #0x88] - mov r1, r1, lsl #0x1d - add r0, r8, r0, lsl #4 - add r0, r0, r1, lsr #28 - add r0, r0, #0x100 - ldrh r2, [r0, #0xf8] - add r1, r2, #1 - strh r1, [r0, #0xf8] - mov r0, r2, lsl #1 - strh r0, [r4, #0x10] -_060068E0: - ldr r0, [sp, #0x44] - add r6, r6, #2 - and r0, r2, r0 - strh r0, [r7], #2 - sub sb, sb, #2 -_060068F4: - ldr r0, [sp] - cmp r0, #1 - bne _06006924 - ldr r0, [sp, #0x34] - add r6, r6, #2 - ldrh r0, [r0] - sub sb, sb, #2 - orr r1, r0, #0x1000 - ldr r0, [sp, #0x34] - strh r1, [r0] - ldrh r0, [r4, #6] - strh r0, [r7], #2 -_06006924: - ldr r0, [sp, #0x10] - cmp r0, #1 - moveq r0, #0 - streq r0, [sp, #0x10] - ldr r0, [sp, #0x20] - ldrh r0, [r0, #2] - cmp r0, sl - ldreq r1, [sp, #0x2c] - ldreq r0, [sp, #0x20] - streqh r1, [r0, #2] - ldrh r1, [r4] - ldr r0, [sp, #0x28] - strh r1, [r0] - ldr r0, [sp, #0x38] - strh r0, [r4] - ldr r0, [sp, #0x24] - ldrh r1, [r0, #2] - ldr r0, [sp, #0x48] - cmp r1, r0 - ldreq r0, [sp, #0x24] - movne r1, r1, lsl #5 - streqh sl, [r0] - ldrne r0, [sp, #0x1c] - strneh sl, [r0, r1] - ldr r0, [sp, #8] - mov r1, #1 - mvn r1, r1, lsl r0 - ldr r0, [sp, #0xc] - and r0, r0, r1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x24] - strh sl, [r0, #2] - ldr r0, [sp, #0x30] - ldr sl, [sp, #0x2c] - strh r0, [r4, #0xa] - ldr r0, [sp, #0x4c] - ldrh r0, [r0, #0xc8] - cmp r0, #1 - beq _06006A24 -_060069C0: - ldr r0, [sp, #0x50] - str sl, [sp, #0x2c] - cmp sl, r0 - ldrne r0, [sp, #0x1c] - addne r0, r0, sl, lsl #5 - strne r0, [sp, #0x28] - ldreq r0, [sp, #0x20] - streq r0, [sp, #0x28] - ldr r0, [sp, #0x54] - cmp sl, r0 - ldrne r0, [sp, #0x1c] - movne r1, sl, lsl #5 - ldrneh sl, [r0, r1] - ldreq r0, [sp, #0x20] - ldreqh sl, [r0] -_060069FC: - ldr r0, [sp, #0x58] - cmp sl, r0 - beq _06006A10 - cmp sb, #2 - bgt _06006740 -_06006A10: - add r5, r5, #1 -_06006A14: - cmp r5, #4 - bhs _06006A24 - cmp sb, #2 - bgt _060066C8 -_06006A24: - add r0, r8, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - mov r0, #0 - str r0, [sp, #0x14] -_06006A38: - ldr r0, [sp, #0x14] - cmp r0, #1 - moveq r0, #0 - streqh r0, [fp, #0x8a] - beq _06006A8C - ldr r0, [fp, #0x1c] - mov r1, r6, lsl #0x10 - cmp r0, #1 - ldreqh r0, [sp, #0x5c] - mov r1, r1, lsr #0x10 - orreq r0, r0, #0x8000 - streqh r0, [sp, #0x5c] - ldrh r2, [sp, #0x5c] - ldr r3, [fp, #0x7c] - add r0, sp, #0x60 - bl WMSP_WL_MaKeyData - ldrh r0, [r0, #4] - cmp r0, #0 - cmpne r0, #8 - movne r0, #0 - strneh r0, [fp, #0x8a] -_06006A8C: - add sp, sp, #0x260 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06006A98: .word wmspW + 0x1000 -_06006A9C: .word 0x0000FFFF - arm_func_end WMSP_SendMaKeyData - - arm_func_start WMSP_SendMaMP -WMSP_SendMaMP: ; 0x06006AA0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c8 - ldr r1, _06007438 ; =wmspW + 0x1000 - str r0, [sp, #0x18] - ldr r7, [r1, #0x550] - bl __VENEER_OS_DisableInterrupts - add r1, r7, #0x100 - ldrh r1, [r1, #0x82] - ldrh r4, [r7, #0x86] - str r1, [sp, #0x74] - bl __VENEER_OS_RestoreInterrupts - mov r1, #0 - strh r1, [sp, #0xc4] - ldrh r0, [r7, #0x88] - cmp r0, #1 - ldreq r0, _0600743C ; =0x0000FFFF - streq r0, [sp, #0x18] - streqh r1, [r7, #0x88] - ldrh r0, [r7, #0x9e] - cmp r0, #0 - bne _06007388 - ldr r1, _06007438 ; =wmspW + 0x1000 - ldrh r0, [r7, #0x3a] - ldr r8, [r1, #0x550] - str r0, [sp, #0x24] - add r0, sp, #0xc4 - ldrh sb, [r8, #0x38] - str r0, [sp, #0x70] - add r0, sb, #0x1f - ldrh r1, [r8, #0x80] - bic r0, r0, #0x1f - cmp r1, r0 - ldr r6, [r8, #0x7c] - movlt r0, #1 - blt _06006FC8 - add r0, r8, #0x100 - ldrh r0, [r0, #0x88] - cmp r0, #0x10 - movhs r0, #1 - bhs _06006FC8 - ldrh r0, [r8] - cmp r0, #9 - moveq r0, #1 - streq r0, [sp, #0x48] - beq _06006B6C - cmp r0, #0xa - moveq r0, #0 - streq r0, [sp, #0x48] - beq _06006B6C - mov r0, #1 - b _06006FC8 -_06006B6C: - ldr r0, [sp, #0x70] - mov r5, #0 - mov sl, r5 - mov fp, r5 - strh r5, [r0] - cmp sb, #0 - movlt r0, #1 - blt _06006FC8 - ldr r0, [sp, #0x48] - str r4, [sp, #0x50] - cmp r0, #0 - mov r0, #1 - str r0, [sp, #0x4c] - beq _06006BC0 - add r0, r8, #0x700 - ldrh r0, [r0, #0xc6] - cmp r0, #0 - ldrne r0, [sp, #0x74] - strne r5, [sp, #0x4c] - strne r0, [sp, #0x50] - b _06006BC4 -_06006BC0: - str r5, [sp, #0x4c] -_06006BC4: - ldr r0, [sp, #0x18] - and r4, r4, r0 - mov r0, #0 - str r0, [sp, #0x40] - mov r0, #1 - str r0, [sp, #0x44] - add r0, r8, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_LockMutex - ldr r0, [r8, #0x734] - cmp r0, #1 - bne _06006C08 - add r0, r8, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - mov r0, #1 - b _06006FC8 -_06006C08: - mvn r0, r4 - str r0, [sp, #0x2c] - mov r0, #1 - str r0, [r8, #0x734] - add r0, r8, #0x2f8 - str r0, [sp, #0x54] - mov r0, #0 - str r0, [sp, #0x58] - b _06006FA0 -_06006C2C: - ldr r0, [sp, #0x58] - mov r2, r0, lsl #2 - add r0, r8, #0x30c - add r1, r0, #0x400 - ldr r0, [sp, #0x58] - ldrh sl, [r1, r2] - add r0, r1, r0, lsl #2 - str r0, [sp, #0x5c] - add r0, r8, #0x2fc - add r1, r0, #0x400 - ldr r0, [sp, #0x58] - add r0, r1, r0, lsl #2 - str r0, [sp, #0x60] - ldr r0, [sp, #0x5c] - str r0, [sp, #0x64] - ldr r0, _0600743C ; =0x0000FFFF - str r0, [sp, #0x68] - str r0, [sp, #0x78] - str r0, [sp, #0x8c] - add r0, r8, #0x100 - str r0, [sp, #0x90] - ldr r0, [sp, #0x68] - sub r0, r0, #0x8000 - str r0, [sp, #0x94] - ldr r0, [sp, #0x68] - str r0, [sp, #0x98] - add r0, r8, #0x700 - str r0, [sp, #0x9c] - ldr r0, [sp, #0x68] - str r0, [sp, #0xa0] - str r0, [sp, #0xa4] - str r0, [sp, #0xa8] - b _06006F80 -_06006CB0: - ldr r0, [sp, #0x54] - ldr r2, [sp, #0x40] - add r4, r0, sl, lsl #5 - ldrh r0, [r4, #2] - mov r1, #1 - str r0, [sp, #0x28] - tst r2, r1, lsl r0 - bne _06006F44 - ldr r0, [sp, #0x4c] - cmp r0, #0 - ldr r0, [sp, #0x28] - orr r0, r2, r1, lsl r0 - str r0, [sp, #0x40] - ldrh r0, [r4, #6] - ldr r1, [sp, #0x50] - and r1, r0, r1 - str r1, [sp, #0x6c] - beq _06006D08 - mov r2, r1 - ldr r1, [sp, #0x2c] - tst r2, r1 - bne _06006F44 -_06006D08: - ldr r1, [sp, #0x28] - tst r1, #8 - movne r1, #1 - strne r1, [sp, #0x20] - moveq r1, #0 - streq r1, [sp, #0x20] - ldr r1, [sp, #0x48] - cmp r1, #0 - orrne r1, r0, #1 - ldrne r0, [sp, #0x8c] - cmpne r1, r0 - movne r0, #1 - strne r0, [sp, #0x1c] - moveq r0, #0 - streq r0, [sp, #0x1c] - ldrh r0, [r4, #0xe] - and r1, r0, #1 - cmp r1, #1 - addeq r0, r0, #1 - streqh r0, [r4, #0xe] - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x44] - cmp r0, #0 - movne r0, #2 - moveq r0, #0 - cmp r1, #0 - movne r3, #0 - ldr r1, [sp, #0x1c] - moveq r3, #2 - ldrh r2, [r4, #0xe] - cmp r1, #0 - movne r1, #2 - add r2, r2, r3 - moveq r1, #0 - add r0, r2, r0 - add r0, r1, r0 - cmp r0, sb - bgt _06006F44 - ldr r0, [sp, #0x44] - cmp r0, #0 - streq r6, [sp, #0x70] - moveq r0, #0 - streqh r0, [r6], #2 - ldr r0, [sp, #0x70] - ldrh r2, [r4, #2] - ldrh r1, [r4, #0xe] - mov r2, r2, lsl #8 - mov r1, r1, lsr #1 - ldrh r0, [r0] - and r2, r2, #0xf00 - and r1, r1, #0xff - orr r1, r2, r1 - orr r1, r0, r1 - ldr r0, [sp, #0x70] - addeq fp, fp, #2 - strh r1, [r0] - ldr r0, [r4, #0x14] - ldrh r2, [r4, #0xe] - mov r1, r6 - subeq sb, sb, #2 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - ldr r0, [sp, #0x20] - add fp, fp, r1 - cmp r0, #1 - bic r0, r1, #1 - add r6, r6, r0 - sub sb, sb, r1 - bne _06006E70 - ldrh r0, [r4, #0x10] - tst r0, #1 - moveq r2, r0, asr #1 - beq _06006E5C - ldr r0, [sp, #0x90] - ldrh r1, [r4, #2] - ldrh r0, [r0, #0x88] - mov r1, r1, lsl #0x1d - add r0, r8, r0, lsl #4 - add r0, r0, r1, lsr #28 - add r0, r0, #0x100 - ldrh r2, [r0, #0xf8] - add r1, r2, #1 - strh r1, [r0, #0xf8] - mov r0, r2, lsl #1 - strh r0, [r4, #0x10] -_06006E5C: - ldr r0, [sp, #0x94] - add fp, fp, #2 - and r0, r2, r0 - strh r0, [r6], #2 - sub sb, sb, #2 -_06006E70: - ldr r0, [sp, #0x1c] - cmp r0, #1 - bne _06006EA0 - ldr r0, [sp, #0x70] - add fp, fp, #2 - ldrh r0, [r0] - sub sb, sb, #2 - orr r1, r0, #0x1000 - ldr r0, [sp, #0x70] - strh r1, [r0] - ldrh r0, [r4, #6] - strh r0, [r6], #2 -_06006EA0: - ldr r0, [sp, #0x44] - cmp r0, #1 - moveq r0, #0 - streq r0, [sp, #0x44] - ldr r0, [sp, #0x5c] - ldrh r0, [r0, #2] - cmp r0, sl - ldreq r1, [sp, #0x68] - ldreq r0, [sp, #0x5c] - streqh r1, [r0, #2] - ldrh r1, [r4] - ldr r0, [sp, #0x64] - strh r1, [r0] - ldr r0, [sp, #0x78] - strh r0, [r4] - ldr r0, [sp, #0x60] - ldrh r1, [r0, #2] - ldr r0, [sp, #0x98] - cmp r1, r0 - ldreq r0, [sp, #0x60] - movne r1, r1, lsl #5 - streqh sl, [r0] - ldrne r0, [sp, #0x54] - strneh sl, [r0, r1] - ldr r0, [sp, #0x28] - mov r1, #1 - mvn r1, r1, lsl r0 - ldr r0, [sp, #0x40] - and r0, r0, r1 - str r0, [sp, #0x40] - ldr r0, [sp, #0x60] - strh sl, [r0, #2] - ldr r0, [sp, #0x6c] - ldr sl, [sp, #0x68] - strh r0, [r4, #0xa] - ldrh r0, [r4, #4] - orr r5, r5, r0 - ldr r0, [sp, #0x9c] - ldrh r0, [r0, #0xc8] - cmp r0, #1 - beq _06006FB4 -_06006F44: - ldr r0, [sp, #0xa0] - str sl, [sp, #0x68] - cmp sl, r0 - ldrne r0, [sp, #0x54] - addne r0, r0, sl, lsl #5 - strne r0, [sp, #0x64] - ldreq r0, [sp, #0x5c] - streq r0, [sp, #0x64] - ldr r0, [sp, #0xa4] - cmp sl, r0 - ldrne r0, [sp, #0x54] - movne r1, sl, lsl #5 - ldrneh sl, [r0, r1] - ldreq r0, [sp, #0x5c] - ldreqh sl, [r0] -_06006F80: - ldr r0, [sp, #0xa8] - cmp sl, r0 - beq _06006F94 - cmp sb, #2 - bgt _06006CB0 -_06006F94: - ldr r0, [sp, #0x58] - add r0, r0, #1 - str r0, [sp, #0x58] -_06006FA0: - ldr r0, [sp, #0x58] - cmp r0, #4 - bhs _06006FB4 - cmp sb, #2 - bgt _06006C2C -_06006FB4: - add r0, r8, #0x31c - add r0, r0, #0x400 - mov sl, fp - bl __VENEER_OS_UnlockMutex - mov r0, #0 -_06006FC8: - cmp r0, #1 - moveq r0, #0 - streqh r0, [r7, #0x62] - streqh r0, [r7, #0x64] - beq _0600742C - add r0, r7, #0x700 - ldrh r1, [r0, #0xc6] - ldr r0, [sp, #0x24] - cmp r1, #1 - add r4, r0, #2 - ldrne r5, [sp, #0x18] - ldr r0, [sp, #0x74] - and r5, r5, r0 - mov r0, r5 - bl __VENEER_MATH_CountPopulation - ldr r1, [sp, #0x24] - add r1, r1, #0xc - mul r0, r1, r0 - add r0, r0, #0x29 - ldrh r1, [r7, #0x72] - bic r0, r0, #0x1f - cmp r1, r0 - bge _06007348 - ldr r0, _06007438 ; =wmspW + 0x1000 - ldr sb, [r0, #0x550] - ldrh r0, [sb] - add r8, sb, #0x2f8 - cmp r0, #9 - moveq r4, #1 - beq _0600704C - cmp r0, #0xa - bne _06007338 - mov r4, #0 -_0600704C: - add r0, sb, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_LockMutex - ldr r0, [sb, #0x734] - cmp r0, #0 - bne _06007074 - add r0, sb, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - b _06007338 -_06007074: - cmp r4, #0 - moveq r0, #1 - streq r0, [sp, #0x3c] - beq _06007098 - bl __VENEER_OS_DisableInterrupts - add r1, sb, #0x100 - ldrh r1, [r1, #0x82] - str r1, [sp, #0x3c] - bl __VENEER_OS_RestoreInterrupts -_06007098: - mov r0, r5, lsl #0x10 - mvn r0, r0, lsr #16 - str r0, [sp, #0x30] - mov sl, #0 -_060070A8: - ldr r0, _0600743C ; =0x0000FFFF - add fp, sb, #0x600 - str r0, [sp, #0x38] - add r0, sb, #0x2fc - add r1, r0, #0x400 - mov r0, sl, lsl #2 - ldrh r5, [r1, r0] - ldr r0, [sp, #0x38] - add r6, r1, sl, lsl #2 - str r0, [sp, #0x34] - ldr r0, [sp, #0x38] - str r0, [sp, #0x7c] - str r0, [sp, #0x80] - str r0, [sp, #0x84] - str r0, [sp, #0x88] - str r0, [sp, #0xac] - str r0, [sp, #0xb0] - add r0, sb, #0x100 - str r0, [sp, #0xb4] - ldr r0, [sp, #0x38] - str r0, [sp, #0xb8] - str r0, [sp, #0xbc] - str r0, [sp, #0xc0] - b _060072C4 -_06007108: - add r4, r8, r5, lsl #5 - ldrh r1, [r4, #0xa] - ldr r0, [sp, #0x30] - ldrh r2, [r4, #8] - and r0, r1, r0 - orr r0, r2, r0 - strh r0, [r4, #8] - ldrh r0, [r4, #8] - ldrh r1, [r4, #6] - mvn r0, r0 - and r0, r1, r0 - strh r0, [r4, #6] - ldrh r1, [r4, #6] - ldr r0, [sp, #0x3c] - and r0, r1, r0 - strh r0, [r4, #6] - mov r0, #0 - strh r0, [r4, #0xa] - ldrh r0, [r4, #6] - cmp r0, #0 - beq _060071D8 - ldrh r0, [r4, #2] - tst r0, #8 - ldreqh r0, [r4, #0x12] - cmpeq r0, #0 - beq _060071D8 - ldrh r0, [r4, #0x12] - cmp r0, #0 - subne r0, r0, #1 - strneh r0, [r4, #0x12] - ldrh r1, [r4] - ldr r0, [sp, #0xac] - cmp r1, r0 - ldreq r0, [sp, #0x7c] - streqh r0, [r6, #2] - ldr r1, [sp, #0x38] - ldr r0, [sp, #0xb0] - cmp r1, r0 - ldrh r0, [r4] - strh r0, [r6] - ldr r0, [sp, #0x80] - strh r0, [r4] - moveq r0, r5, lsl #0x10 - moveq r0, r0, lsr #0x10 - streq r0, [sp, #0x34] - ldrne r0, [sp, #0x38] - movne r0, r0, lsl #5 - strneh r5, [r8, r0] - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [sp, #0x38] - b _060072C0 -_060071D8: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x81 - strh r1, [r0] - ldrh r1, [r4, #6] - ldr r3, [sp, #0xb4] - cmp r1, #0 - moveq r1, #0 - movne r1, #0xf - strh r1, [r0, #2] - mov r1, #0x14 - strh r1, [r0, #8] - ldrh r1, [r4, #2] - strh r1, [r0, #0xa] - ldrh r1, [r4, #4] - strh r1, [r0, #0xc] - ldrh r1, [r4, #6] - strh r1, [r0, #0xe] - ldrh r1, [r4, #8] - strh r1, [r0, #0x10] - ldrh r1, [r4, #0xe] - strh r1, [r0, #0x18] - ldr r1, [r4, #0x14] - str r1, [r0, #0x14] - ldr r1, [r4, #0x18] - str r1, [r0, #0x1c] - ldr r1, [r4, #0x1c] - str r1, [r0, #0x20] - ldrh r1, [r4, #0x10] - strh r1, [r0, #0x1a] - ldrh r3, [r3, #0x88] - ldrh r1, [sb, #0x30] - cmp r3, #0 - ldrh r2, [sb, #0x32] - moveq r3, r1 - movne r3, r2 - strh r3, [r0, #0x24] - ldr r3, [sp, #0xb4] - ldrh r3, [r3, #0x88] - cmp r3, #0 - movne r2, r1 - strh r2, [r0, #0x26] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldrh r1, [r4] - ldr r0, [sp, #0xb8] - cmp r1, r0 - ldreq r0, [sp, #0x84] - streqh r0, [r6, #2] - ldrh r0, [r4] - strh r0, [r6] - ldr r0, [sp, #0x88] - strh r0, [r4] - ldrh r1, [fp, #0xfa] - ldr r0, [sp, #0xbc] - cmp r1, r0 - streqh r5, [fp, #0xf8] - movne r0, r1, lsl #5 - strneh r5, [r8, r0] - strh r5, [fp, #0xfa] -_060072C0: - ldrh r5, [r6] -_060072C4: - ldr r0, [sp, #0xc0] - cmp r5, r0 - bne _06007108 - ldr r2, _0600743C ; =0x0000FFFF - ldr r0, [sp, #0x38] - cmp r0, r2 - beq _06007318 - add r0, sb, sl, lsl #2 - add r1, r0, #0x700 - ldr r0, [sp, #0x38] - ldrh r3, [r1, #0xc] - mov r0, r0, lsl #5 - strh r3, [r8, r0] - ldrh r0, [r1, #0xe] - cmp r0, r2 - ldreq r0, [sp, #0x38] - streqh r0, [r1, #0xe] - add r0, sb, sl, lsl #2 - add r1, r0, #0x700 - ldr r0, [sp, #0x34] - strh r0, [r1, #0xc] -_06007318: - add sl, sl, #1 - cmp sl, #4 - blt _060070A8 - add r0, sb, #0x31c - mov r1, #0 - add r0, r0, #0x400 - str r1, [sb, #0x734] - bl __VENEER_OS_UnlockMutex -_06007338: - mov r0, #0 - strh r0, [r7, #0x62] - strh r0, [r7, #0x64] - b _0600742C -_06007348: - ldrsh r0, [r7, #0x62] - cmp r0, #1 - ldrnesh r0, [r7, #0x64] - cmpne r0, #1 - movne r6, #0 - bne _060073C8 - ldrh r3, [r7, #0x40] - mov r0, sl - mov r1, r4 - mov r2, r5 - bl WmspGetTmptt - ldrh r1, [sp, #0xc4] - mov r6, r0 - orr r0, r1, #0x8000 - strh r0, [sp, #0xc4] - b _060073C8 -_06007388: - mov r6, #0 - strh r6, [r7, #0x9e] - ldrh r0, [sp, #0xc4] - ldr r5, [sp, #0x74] - bic r0, r0, #0x8000 - strh r0, [sp, #0xc4] - mov sl, r6 - ldr r4, _06007440 ; =0x000080D6 - bl __VENEER_OS_DisableInterrupts - ldrsh r1, [r7, #0x62] - add r1, r1, #1 - strh r1, [r7, #0x62] - ldrsh r1, [r7, #0x64] - add r1, r1, #1 - strh r1, [r7, #0x64] - bl __VENEER_OS_RestoreInterrupts -_060073C8: - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - str r0, [sp] - ldr r0, _06007444 ; =0x048080F8 - str r6, [sp, #4] - ldrh r1, [r0] - mov r0, sl, lsl #0x10 - str r1, [sp, #8] - mov r0, r0, lsr #0x10 - str r0, [sp, #0xc] - ldrh r0, [sp, #0xc4] - mov r3, r4, lsl #0x10 - str r0, [sp, #0x10] - ldr r2, [r7, #0x7c] - mov r1, #0 - str r2, [sp, #0x14] - add r0, sp, #0xc8 - mov r2, r1 - mov r3, r3, lsr #0x10 - bl WMSP_WL_MaMp - strh r5, [r7, #0x68] - ldrh r0, [sp, #0xc4] - strh r0, [r7, #0x6a] - strh r4, [r7, #0x6c] - strh sl, [r7, #0x6e] -_0600742C: - add sp, sp, #0x2c8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06007438: .word wmspW + 0x1000 -_0600743C: .word 0x0000FFFF -_06007440: .word 0x000080D6 -_06007444: .word 0x048080F8 - arm_func_end WMSP_SendMaMP - - arm_func_start __VENEER_MATH_CountPopulation -__VENEER_MATH_CountPopulation: ; 0x06007448 - ldr pc, _0600744C ; =MATH_CountPopulation - .align 2, 0 -_0600744C: .word MATH_CountPopulation - arm_func_end __VENEER_MATH_CountPopulation - - arm_func_start WMSP_ResumeMaMP -WMSP_ResumeMaMP: ; 0x06007450 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x218 - ldr r1, _06007534 ; =wmspW + 0x1000 - mov r4, r0 - ldr r7, [r1, #0x550] - bl __VENEER_OS_DisableInterrupts - bl __VENEER_OS_RestoreInterrupts - add r0, r7, #0x100 - ldrh r0, [r0, #0x82] - ldr r1, _06007538 ; =0x048080F8 - and r4, r4, r0 - ldrh r8, [r7, #0x3a] - mov r0, r4 - ldrh r5, [r1] - ldrh r6, [r7, #0x6a] - bl __VENEER_MATH_CountPopulation - add r1, r8, #0xc - mul r0, r1, r0 - add r0, r0, #0x29 - ldrh r1, [r7, #0x72] - bic r0, r0, #0x1f - cmp r1, r0 - bge _060074BC - mov r0, #2 - bl __VENEER_OS_Sleep - bl WMSP_RequestResumeMP - b _06007528 -_060074BC: - ldrsh r0, [r7, #0x62] - cmp r0, #1 - ldrnesh r0, [r7, #0x64] - cmpne r0, #1 - bicne r6, r6, #0x8000 - movne r0, #0 - bne _060074F0 - ldrh r0, [r7, #0x6e] - ldrh r1, [r7, #0x6c] - ldrh r3, [r7, #0x40] - mov r2, r4 - bl WmspGetTmptt - orr r6, r6, #0x8000 -_060074F0: - mov r1, r4, lsl #0x10 - mov r1, r1, lsr #0x10 - str r1, [sp] - stmib sp, {r0, r5} - mov r2, #0 - mov r0, r6, lsl #0x10 - str r2, [sp, #0xc] - mov r0, r0, lsr #0x10 - str r0, [sp, #0x10] - ldr r1, _0600753C ; =0x0000800C - add r0, sp, #0x18 - mov r3, r2 - str r2, [sp, #0x14] - bl WMSP_WL_MaMp -_06007528: - add sp, sp, #0x218 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_06007534: .word wmspW + 0x1000 -_06007538: .word 0x048080F8 -_0600753C: .word 0x0000800C - arm_func_end WMSP_ResumeMaMP - - arm_func_start __VENEER_OS_Sleep -__VENEER_OS_Sleep: ; 0x06007540 - ldr pc, _06007544 ; =OS_Sleep - .align 2, 0 -_06007544: .word OS_Sleep - arm_func_end __VENEER_OS_Sleep - - arm_func_start WMSP_PutSendQueue -WMSP_PutSendQueue: ; 0x06007548 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _06007674 ; =wmspW + 0x1000 - ldrh r8, [sp, #0x24] - ldr r4, [r4, #0x550] - mov r7, r0 - add r0, r4, #0x30c - add r0, r0, #0x400 - cmp r8, #0 - add sb, r0, r1, lsl #2 - mov r6, r2 - mov r5, r3 - add r8, r4, #0x2f8 - moveq r0, #6 - beq _0600766C - ldrh r0, [sp, #0x24] - tst r6, #8 - movne r1, #2 - moveq r1, #0 - add r0, r0, r1 - cmp r0, #0x204 - movgt r0, #6 - bgt _0600766C - add r0, r4, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_LockMutex - add r2, r4, #0x600 - ldrh r1, [r2, #0xf8] - ldr r3, _06007678 ; =0x0000FFFF - cmp r1, r3 - bne _060075D4 - add r0, r4, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - mov r0, #0xa - b _0600766C -_060075D4: - mov r0, r1, lsl #5 - ldrh ip, [r8, r0] - add r0, r8, r1, lsl #5 - strh ip, [r2, #0xf8] - ldrh ip, [r2, #0xfa] - cmp ip, r1 - streqh r3, [r2, #0xfa] - strh r6, [r0, #2] - strh r5, [r0, #4] - and r2, r5, r7 - strh r2, [r0, #6] - mov r2, #0 - strh r2, [r0, #8] - strh r2, [r0, #0xa] - ldr r3, [sp, #0x20] - ldrh r2, [sp, #0x24] - str r3, [r0, #0x14] - strh r2, [r0, #0xe] - ldr r3, [sp, #0x28] - ldr r2, [sp, #0x2c] - str r3, [r0, #0x18] - str r2, [r0, #0x1c] - ldr r3, _06007678 ; =0x0000FFFF - add r2, r4, #0x700 - strh r3, [r0] - strh r3, [r0, #0x10] - ldrh r2, [r2, #0xca] - strh r2, [r0, #0x12] - ldrh r0, [sb, #2] - cmp r0, r3 - streqh r1, [sb] - movne r0, r0, lsl #5 - strneh r1, [r8, r0] - add r0, r4, #0x31c - add r0, r0, #0x400 - strh r1, [sb, #2] - bl __VENEER_OS_UnlockMutex - mov r0, #2 -_0600766C: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_06007674: .word wmspW + 0x1000 -_06007678: .word 0x0000FFFF - arm_func_end WMSP_PutSendQueue - - arm_func_start WMSP_FlushSendQueue -WMSP_FlushSendQueue: ; 0x0600767C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3c - ldr r2, _060079A4 ; =wmspW + 0x1000 - str r0, [sp] - ldr r8, [r2, #0x550] - mov r5, r1 - ldrh r1, [r8] - mov r0, #0 - cmp r1, #9 - add r4, r8, #0x2f8 - str r0, [sp, #0xc] - moveq r6, #1 - beq _060076BC - cmp r1, #0xa - moveq r6, r0 - bne _06007998 -_060076BC: - add r0, r8, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_LockMutex - ldr r0, [r8, #0x734] - cmp r0, #0 - bne _060076E8 - add r0, r8, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - mov r0, #0 - b _06007998 -_060076E8: - cmp r6, #0 - moveq r0, #1 - streq r0, [sp, #0x10] - beq _0600770C - bl __VENEER_OS_DisableInterrupts - add r1, r8, #0x100 - ldrh r1, [r1, #0x82] - str r1, [sp, #0x10] - bl __VENEER_OS_RestoreInterrupts -_0600770C: - mvn r0, r5 - str r0, [sp, #4] - mov sl, #0 -_06007718: - add r0, r8, #0x2fc - add r1, r0, #0x400 - ldr sb, _060079A8 ; =0x0000FFFF - mov r0, sl, lsl #2 - ldrh r5, [r1, r0] - add r0, r8, #0x100 - str sb, [sp, #8] - add r6, r1, sl, lsl #2 - str sb, [sp, #0x14] - str sb, [sp, #0x18] - str sb, [sp, #0x1c] - str sb, [sp, #0x20] - str sb, [sp, #0x24] - str sb, [sp, #0x28] - str r0, [sp, #0x2c] - str sb, [sp, #0x30] - add fp, r8, #0x600 - str sb, [sp, #0x34] - str sb, [sp, #0x38] - b _0600792C -_06007768: - ldr r0, [sp] - add r7, r4, r5, lsl #5 - cmp r0, #0 - bne _060077A4 - ldrh r1, [r7, #0xa] - ldr r0, [sp, #4] - ldrh r2, [r7, #8] - and r0, r1, r0 - orr r0, r2, r0 - strh r0, [r7, #8] - ldrh r0, [r7, #8] - ldrh r1, [r7, #6] - mvn r0, r0 - and r0, r1, r0 - strh r0, [r7, #6] -_060077A4: - ldrh r1, [r7, #6] - ldr r0, [sp, #0x10] - and r0, r1, r0 - strh r0, [r7, #6] - mov r0, #0 - strh r0, [r7, #0xa] - ldrh r0, [r7, #6] - cmp r0, #0 - beq _06007840 - ldrh r0, [r7, #2] - tst r0, #8 - ldreqh r0, [r7, #0x12] - cmpeq r0, #0 - beq _06007840 - mov r0, #1 - str r0, [sp, #0xc] - ldrh r0, [r7, #0x12] - cmp r0, #0 - subne r0, r0, #1 - strneh r0, [r7, #0x12] - ldrh r1, [r7] - ldr r0, [sp, #0x24] - cmp r1, r0 - ldreq r0, [sp, #0x14] - streqh r0, [r6, #2] - ldr r0, [sp, #0x28] - cmp sb, r0 - ldrh r0, [r7] - strh r0, [r6] - ldr r0, [sp, #0x18] - strh r0, [r7] - moveq r0, r5, lsl #0x10 - moveq r0, r0, lsr #0x10 - streq r0, [sp, #8] - movne r0, sb, lsl #5 - strneh r5, [r4, r0] - mov r0, r5, lsl #0x10 - mov sb, r0, lsr #0x10 - b _06007928 -_06007840: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x81 - strh r1, [r0] - ldrh r1, [r7, #6] - ldr r3, [sp, #0x2c] - cmp r1, #0 - moveq r1, #0 - movne r1, #0xf - strh r1, [r0, #2] - mov r1, #0x14 - strh r1, [r0, #8] - ldrh r1, [r7, #2] - strh r1, [r0, #0xa] - ldrh r1, [r7, #4] - strh r1, [r0, #0xc] - ldrh r1, [r7, #6] - strh r1, [r0, #0xe] - ldrh r1, [r7, #8] - strh r1, [r0, #0x10] - ldrh r1, [r7, #0xe] - strh r1, [r0, #0x18] - ldr r1, [r7, #0x14] - str r1, [r0, #0x14] - ldr r1, [r7, #0x18] - str r1, [r0, #0x1c] - ldr r1, [r7, #0x1c] - str r1, [r0, #0x20] - ldrh r1, [r7, #0x10] - strh r1, [r0, #0x1a] - ldrh r3, [r3, #0x88] - ldrh r1, [r8, #0x30] - cmp r3, #0 - ldrh r2, [r8, #0x32] - moveq r3, r1 - movne r3, r2 - strh r3, [r0, #0x24] - ldr r3, [sp, #0x2c] - ldrh r3, [r3, #0x88] - cmp r3, #0 - movne r2, r1 - strh r2, [r0, #0x26] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldrh r1, [r7] - ldr r0, [sp, #0x30] - cmp r1, r0 - ldreq r0, [sp, #0x1c] - streqh r0, [r6, #2] - ldrh r0, [r7] - strh r0, [r6] - ldr r0, [sp, #0x20] - strh r0, [r7] - ldrh r1, [fp, #0xfa] - ldr r0, [sp, #0x34] - cmp r1, r0 - streqh r5, [fp, #0xf8] - movne r0, r1, lsl #5 - strneh r5, [r4, r0] - strh r5, [fp, #0xfa] -_06007928: - ldrh r5, [r6] -_0600792C: - ldr r0, [sp, #0x38] - cmp r5, r0 - bne _06007768 - ldr r1, _060079A8 ; =0x0000FFFF - cmp sb, r1 - beq _06007974 - add r0, r8, sl, lsl #2 - add r0, r0, #0x700 - ldrh r3, [r0, #0xc] - mov r2, sb, lsl #5 - strh r3, [r4, r2] - ldrh r2, [r0, #0xe] - cmp r2, r1 - streqh sb, [r0, #0xe] - add r0, r8, sl, lsl #2 - add r1, r0, #0x700 - ldr r0, [sp, #8] - strh r0, [r1, #0xc] -_06007974: - add sl, sl, #1 - cmp sl, #4 - blt _06007718 - add r0, r8, #0x31c - mov r1, #0 - add r0, r0, #0x400 - str r1, [r8, #0x734] - bl __VENEER_OS_UnlockMutex - ldr r0, [sp, #0xc] -_06007998: - add sp, sp, #0x3c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_060079A4: .word wmspW + 0x1000 -_060079A8: .word 0x0000FFFF - arm_func_end WMSP_FlushSendQueue - - arm_func_start WMSP_CleanSendQueue -WMSP_CleanSendQueue: ; 0x060079AC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r1, _06007B98 ; =wmspW + 0x1000 - mvn r2, r0 - ldr sb, [r1, #0x550] - add r0, sb, #0x100 - ldrh r1, [r0, #0x82] - add r0, sb, #0x31c - add r0, r0, #0x400 - add r5, sb, #0x2f8 - and fp, r2, r1 - bl __VENEER_OS_LockMutex - add r0, sb, #0x30c - add r0, r0, #0x400 - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] -_060079F0: - add r0, sb, #0x100 - str r0, [sp, #0x10] - mov r6, #0 - add r4, sb, #0x600 -_06007A00: - ldr r0, [sp, #8] - mov r1, r6, lsl #2 - add r7, r0, r6, lsl #2 - ldrh sl, [r0, r1] - ldr r0, _06007B9C ; =0x0000FFFF - str r7, [sp, #4] - str r0, [sp] - b _06007B54 -_06007A20: - add r8, r5, sl, lsl #5 - ldrh r0, [r8, #6] - and r0, r0, fp - strh r0, [r8, #6] - ldrh r0, [r8, #0xa] - and r0, r0, fp - strh r0, [r8, #0xa] - ldrh r0, [r8, #6] - cmp r0, #0 - bne _06007B28 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x81 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0x14 - strh r1, [r0, #8] - ldrh r1, [r8, #2] - ldr r3, [sp, #0x10] - strh r1, [r0, #0xa] - ldrh r1, [r8, #4] - strh r1, [r0, #0xc] - ldrh r1, [r8, #6] - strh r1, [r0, #0xe] - ldrh r1, [r8, #8] - strh r1, [r0, #0x10] - ldrh r1, [r8, #0xe] - strh r1, [r0, #0x18] - ldr r1, [r8, #0x14] - str r1, [r0, #0x14] - ldr r1, [r8, #0x18] - str r1, [r0, #0x1c] - ldr r1, [r8, #0x1c] - str r1, [r0, #0x20] - ldrh r1, [r8, #0x10] - strh r1, [r0, #0x1a] - ldrh r3, [r3, #0x88] - ldrh r1, [sb, #0x30] - cmp r3, #0 - ldrh r2, [sb, #0x32] - moveq r3, r1 - movne r3, r2 - strh r3, [r0, #0x24] - ldr r3, [sp, #0x10] - ldrh r3, [r3, #0x88] - cmp r3, #0 - movne r2, r1 - strh r2, [r0, #0x26] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldrh r1, [r8] - ldr r0, _06007B9C ; =0x0000FFFF - cmp r1, r0 - ldreq r0, [sp] - streqh r0, [r7, #2] - ldrh r1, [r8] - ldr r0, [sp, #4] - strh r1, [r0] - ldr r0, _06007B9C ; =0x0000FFFF - strh r0, [r8] - ldrh r1, [r4, #0xfa] - cmp r1, r0 - streqh sl, [r4, #0xf8] - movne r0, r1, lsl #5 - strneh sl, [r5, r0] - strh sl, [r4, #0xfa] - ldr sl, [sp] -_06007B28: - ldr r0, _06007B9C ; =0x0000FFFF - str sl, [sp] - cmp sl, r0 - addne r0, r5, sl, lsl #5 - strne r0, [sp, #4] - ldr r0, _06007B9C ; =0x0000FFFF - streq r7, [sp, #4] - cmp sl, r0 - movne r0, sl, lsl #5 - ldrneh sl, [r5, r0] - ldreqh sl, [r7] -_06007B54: - ldr r0, _06007B9C ; =0x0000FFFF - cmp sl, r0 - bne _06007A20 - add r6, r6, #1 - cmp r6, #4 - blt _06007A00 - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #2 - blt _060079F0 - add r0, sb, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_UnlockMutex - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06007B98: .word wmspW + 0x1000 -_06007B9C: .word 0x0000FFFF - arm_func_end WMSP_CleanSendQueue - - arm_func_start WMSP_ParsePortPacket -WMSP_ParsePortPacket: ; 0x06007BA0 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, _06007D9C ; =wmspW + 0x1000 - ldr r1, [sp, #0x40] - ldr r5, [r4, #0x550] - movs sb, r3 - str r1, [sp, #0x40] - mov sl, r0 - str r2, [sp] - beq _06007D8C - cmp sb, #0x204 - bhi _06007D8C - add r4, r5, #0x100 - ldrh r0, [r4, #0x88] - cmp sl, r0 - beq _06007D8C - cmp sl, #0x10 - bhs _06007D8C - tst sb, #1 - bne _06007D8C - add r0, r5, #0x1f8 - add r8, r0, sl, lsl #4 - mov r0, #1 - str r0, [sp, #8] - b _06007D84 -_06007C08: - ldr r0, [sp, #8] - ldr r7, _06007DA0 ; =0x0000FFFF - cmp r0, #1 - addeq r1, sp, #0x34 - moveq r0, #0 - ldrne r1, [sp] - streq r0, [sp, #8] - movne r0, r1 - addne r0, r0, #2 - ldrh r1, [r1] - strne r0, [sp] - mov r0, r1, lsl #0x18 - subne sb, sb, #2 - movs r6, r0, lsr #0x17 - moveq r6, #0x200 - tst r1, #0x1000 - movne r2, #1 - moveq r2, #0 - tst r1, #0x800 - movne r3, #1 - moveq r3, #0 - cmp r2, #0 - movne fp, #2 - moveq fp, #0 - cmp r3, #0 - movne r0, #2 - moveq r0, #0 - add r0, r6, r0 - add r0, r0, fp - subs sb, sb, r0 - bmi _06007D8C - and r1, r1, #0xf00 - cmp r3, #1 - mov r1, r1, lsl #8 - ldr r3, [sp] - mov fp, r1, lsr #0x10 - ldr r1, [sp] - add r0, r3, r0 - str r1, [sp, #4] - add r1, r1, r6 - str r0, [sp] - bne _06007CEC - mov r0, fp, lsl #0x1d - mov r0, r0, lsr #0x1c - ldrh r3, [r8, r0] - ldrh r7, [r1], #2 - tst r3, #1 - movne r3, r7, lsl #1 - strneh r3, [r8, r0] - bne _06007CEC - mov r7, r7, lsl #1 - sub r3, r3, r7 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - cmp r3, #0x100 - blo _06007D84 - strh r7, [r8, r0] -_06007CEC: - cmp r2, #1 - bne _06007D08 - ldrh r2, [r1] - ldrh r1, [r4, #0x88] - mov r0, #1 - tst r2, r0, lsl r1 - beq _06007D84 -_06007D08: - cmp r6, #0 - ble _06007D84 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x82 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - mov r1, #0x15 - strh r1, [r0, #4] - ldr r1, [sp, #0x40] - strh fp, [r0, #6] - str r1, [r0, #8] - ldr r1, [sp, #4] - str r1, [r0, #0xc] - strh r6, [r0, #0x10] - strh sl, [r0, #0x12] - ldrh r1, [r4, #0x88] - strh r1, [r0, #0x20] - strh r7, [r0, #0x1a] - ldrh r1, [r4, #0x88] - ldrh r2, [r5, #0x30] - cmp r1, #0 - ldrh r3, [r5, #0x32] - moveq r1, r2 - movne r1, r3 - strh r1, [r0, #0x40] - ldrh r1, [r4, #0x88] - cmp r1, #0 - movne r3, r2 - strh r3, [r0, #0x42] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06007D84: - cmp sb, #0 - bgt _06007C08 -_06007D8C: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_06007D9C: .word wmspW + 0x1000 -_06007DA0: .word 0x0000FFFF - arm_func_end WMSP_ParsePortPacket - - arm_func_start WmspGetTmptt -WmspGetTmptt: ; 0x06007DA4 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r5, r0 - tst r6, #0x8000 - ldrne r0, _06007E40 ; =0x00007FFF - mov r4, r3 - andne r6, r6, r0 - addeq r0, r6, #0x1c - moveq r0, r0, lsl #2 - addeq r6, r0, #0x66 - mov r0, r2 - bl __VENEER_MATH_CountPopulation - mul r2, r6, r0 - ldr r1, _06007E44 ; =0x04000006 - add r0, r5, #0x22 - mov r3, r0, lsl #2 - ldrh r1, [r1] - sub r0, r4, #2 - add r3, r3, #0x60 - add r2, r2, #0x388 - add r4, r3, r2 - subs r3, r0, r1 - bpl _06007E0C -_06007E00: - add r0, r3, #7 - adds r3, r0, #0x100 - bmi _06007E00 -_06007E0C: - ldr r2, _06007E48 ; =0x66666667 - rsb r1, r3, r3, lsl #7 - mov r0, r1, lsr #0x1f - smull r1, r3, r2, r1 - add r3, r0, r3, asr #3 - mov r0, #0xa - mul r0, r3, r0 - cmp r0, r4 - movlo r3, #0 - mov r0, r3, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06007E40: .word 0x00007FFF -_06007E44: .word 0x04000006 -_06007E48: .word 0x66666667 - arm_func_end WmspGetTmptt - - arm_func_start WMSP_SetEntry -WMSP_SetEntry: ; 0x06007E4C - stmdb sp!, {r4, lr} - sub sp, sp, #0x280 - ldr r1, _06007ED8 ; =wmspW + 0x1000 - ldr r2, [r0, #4] - ldr r4, [r1, #0x550] - add r0, sp, #0 - strh r2, [r4, #0xf6] - add r1, r4, #0xe8 - bl WMSP_CopyParentParam - ldrh r1, [r4, #0xec] - add r0, sp, #0x80 - add r1, r1, #0x10 - mov r1, r1, lsl #0x10 - add r2, sp, #0 - mov r1, r1, lsr #0x10 - bl WMSP_WL_ParamSetGameInfo - mov r4, r0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x21 - strh r1, [r0] - ldrh r1, [r4, #4] - cmp r1, #0 - moveq r1, #0 - streqh r1, [r0, #2] - beq _06007EC8 - mov r1, #1 - strh r1, [r0, #2] - add r1, r1, #0x244 - strh r1, [r0, #4] - ldrh r1, [r4, #4] - strh r1, [r0, #6] -_06007EC8: - bl __VENEER_WMSP_ReturnResult2Wm9 - add sp, sp, #0x280 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06007ED8: .word wmspW + 0x1000 - arm_func_end WMSP_SetEntry - - arm_func_start WMSP_AutoDeAuth -WMSP_AutoDeAuth: ; 0x06007EDC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x208 - add r1, sp, #0 - add r0, r0, #4 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - mov r8, #0 - add r7, sp, #8 - add r6, sp, #0 - mov r5, #0x13 - b _06007F38 -_06007F08: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl WMSP_WL_MlmeDeAuthenticate - mov r4, r0 - ldrh r0, [r4, #4] - cmp r0, #0 - beq _06007F40 - cmp r0, #7 - cmpne r0, #0xc - bne _06007F40 - add r8, r8, #1 -_06007F38: - cmp r8, #2 - blt _06007F08 -_06007F40: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x22 - strh r1, [r0] - ldrh r1, [r4, #4] - cmp r1, #0 - moveq r1, #0 - streqh r1, [r0, #2] - beq _06007F78 - mov r1, #1 - strh r1, [r0, #2] - mov r1, #5 - strh r1, [r0, #4] - ldrh r1, [r4, #4] - strh r1, [r0, #6] -_06007F78: - bl __VENEER_WMSP_ReturnResult2Wm9 - add sp, sp, #0x208 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - arm_func_end WMSP_AutoDeAuth - - arm_func_start WMSP_Enable -WMSP_Enable: ; 0x06007F88 - stmdb sp!, {r3, lr} - ldr r3, [r0, #4] - ldr r1, _06007FD4 ; =wmspW + 0x1000 - str r3, [r1, #0x54c] - ldr r2, [r0, #8] - str r2, [r1, #0x550] - str r2, [r3] - ldr r1, [r0, #0xc] - str r1, [r3, #8] - ldr r0, [r0, #0x10] - bl WMSPi_CommonInit - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #3 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06007FD4: .word wmspW + 0x1000 - arm_func_end WMSP_Enable - - arm_func_start WMSPi_CommonInit -WMSPi_CommonInit: ; 0x06007FD8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _06008178 ; =wmspW + 0x1000 - mov r8, r0 - ldr r7, [r1, #0x550] - ldr r4, [r1, #0x54c] - mov r5, #0 - bl __VENEER_OS_DisableInterrupts - ldr r1, [r7, #0xc] - mov r6, r0 - cmp r1, #1 - bne _06008018 - mov r0, r5 - str r0, [r7, #0xc] - mov r5, #1 - bl WMSP_CancelVAlarm - bl WMSP_SetThreadPriorityLow -_06008018: - add ip, r7, #0x100 - mov r1, #0 - strh r1, [ip, #0x82] - strh r1, [r7, #0x86] - str r1, [r7, #0x14] - str r1, [r7, #0x10] - str r1, [r7, #0x1c] - strh r1, [r7, #0xce] - strh r1, [r7, #0xc2] - mov r0, #1 - strh r0, [r7, #0x58] - strh r0, [r7, #0x5a] - mov r0, #6 - strh r0, [r7, #0x5c] - strh r1, [r7, #0x98] - strh r1, [r7, #0x92] - strh r1, [r7, #0x94] - strh r1, [r7, #0x9a] - strh r1, [r7, #0x9c] - ldrh r0, [r7, #0x58] - add r3, r7, #0x700 - strh r0, [r3, #0xc0] - ldrh r2, [r7, #0x5a] - add r0, r7, #0x19c - strh r2, [r3, #0xc2] - ldrh lr, [r7, #0x5c] - mov r2, #0x50 - strh lr, [r3, #0xc4] - ldrh lr, [r7, #0x98] - strh lr, [r3, #0xca] - ldrh lr, [r7, #0x92] - strh lr, [r3, #0xc6] - ldrh lr, [r7, #0x94] - strh lr, [r3, #0xc8] - ldrh lr, [r7, #0x9a] - strh lr, [r3, #0xcc] - str r1, [r7, #0x198] - strh r1, [ip, #0x96] - bl __VENEER_MI_CpuFill8 - bl WMSP_ResetSizeVars - mov r0, #0x104 - strh r0, [r7, #0x40] - mov r0, #0xf0 - strh r0, [r7, #0x42] - mov r0, #0x3e8 - strh r0, [r7, #0x44] - mov r1, #0 - ldr r0, _0600817C ; =0x0000020B - strh r1, [r7, #0x46] - str r0, [r7, #0x48] - str r1, [r7, #0x4c] - str r1, [r7, #0x50] - str r1, [r7, #0x54] - strh r1, [r7, #0xc6] - add r0, r7, #0x100 - mov r1, #1 - strh r1, [r0, #0xee] - mov r0, r6 - str r8, [r7, #0xc8] - bl __VENEER_OS_RestoreInterrupts - cmp r5, #0 - beq _06008118 - ldr r0, _06008180 ; =0x0000FFFF - bl WMSP_CleanSendQueue -_06008118: - mov r2, #0 - mov r1, #0x8000 -_06008120: - add r0, r4, r2, lsl #4 - add r2, r2, #1 - str r1, [r0, #0xd0] - cmp r2, #0x20 - blt _06008120 - add r1, r7, #0x1f8 - mov r0, #1 - mov r2, #0x100 - bl __VENEER_MIi_CpuClear16 - bl WMSP_InitAlarm - add r0, r7, #0x31c - add r0, r0, #0x400 - bl __VENEER_OS_InitMutex - bl WMSP_InitVAlarm - tst r8, #2 - bne _06008168 - mov r0, #0xf - bl __VENEER_PM_SetLEDPattern -_06008168: - mov r0, #1 - strh r0, [r7] - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_06008178: .word wmspW + 0x1000 -_0600817C: .word 0x0000020B -_06008180: .word 0x0000FFFF - arm_func_end WMSPi_CommonInit - - arm_func_start WMSP_Disable -WMSP_Disable: ; 0x06008184 - stmdb sp!, {r4, lr} - ldr r0, _060081E8 ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - ldrh r0, [r4] - cmp r0, #1 - beq _060081B8 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #4 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _060081E0 -_060081B8: - mov r0, #1 - bl __VENEER_PM_SetLEDPattern - mov r0, #0 - strh r0, [r4] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #4 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_060081E0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060081E8: .word wmspW + 0x1000 - arm_func_end WMSP_Disable - - arm_func_start WMSP_PowerOn -WMSP_PowerOn: ; 0x060081EC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r0, _06008290 ; =wmspW + 0x1000 - ldr r4, [r0, #0x550] - ldrh r0, [r4] - cmp r0, #1 - beq _06008224 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #5 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008284 -_06008224: - add r0, sp, #2 - add r1, sp, #0 - bl WMSPi_CommonWlIdle - cmp r0, #0 - bne _06008264 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #5 - strh r1, [r0] - mov r1, #1 - strh r1, [r0, #2] - ldrh r1, [sp, #2] - strh r1, [r0, #4] - ldrh r1, [sp] - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008284 -_06008264: - mov r0, #2 - strh r0, [r4] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #5 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06008284: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_06008290: .word wmspW + 0x1000 - arm_func_end WMSP_PowerOn - - arm_func_start WMSPi_CommonWlIdle -WMSPi_CommonWlIdle: ; 0x06008294 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x200 - ldr r2, _0600847C ; =wmspW + 0x1000 - mov r7, r0 - add r0, sp, #0 - mov r6, r1 - ldr r5, [r2, #0x550] - bl WMSP_WL_DevRestart - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060082D8 - mov r1, #0x304 - strh r1, [r7] - ldrh r1, [r0, #4] - mov r0, #0 - strh r1, [r6] - b _06008470 -_060082D8: - add r0, sp, #0 - bl WMSP_WL_DevIdle - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06008304 - ldr r1, _06008480 ; =0x00000302 - strh r1, [r7] - ldrh r1, [r0, #4] - mov r0, #0 - strh r1, [r6] - b _06008470 -_06008304: - ldr r2, _06008484 ; =0x04808124 - mov r0, #0xc8 - strh r0, [r2] - mov r0, #0x7d0 - strh r0, [r2, #4] - ldr r1, _06008488 ; =0x00000202 - add r0, sp, #0 - strh r1, [r2, #0x2c] - bl WMSP_WL_ParamGetEnableChannel - ldrh r1, [r0, #4] - cmp r1, #0 - beq _0600834C - ldr r1, _0600848C ; =0x00000283 - strh r1, [r7] - ldrh r1, [r0, #4] - mov r0, #0 - strh r1, [r6] - b _06008470 -_0600834C: - ldrh r2, [r0, #6] - add r0, r5, #0x100 - mov r1, r2, lsl #0xf - strh r2, [r0, #0xf4] - mov r0, r1, lsr #0x10 - bl __VENEER_WMSP_GetAllowedChannel - add r1, r5, #0x100 - strh r0, [r1, #0xf6] - ldr r1, _06008490 ; =0x0000FFFF - add r0, sp, #0 - mov r2, #0x28 - mov r3, #5 - bl WMSP_WL_ParamSetLifeTime - ldr r1, _06008494 ; =0x001FF621 - mov r0, #0 - str r1, [r5, #0x7b8] - str r0, [r5, #0x7bc] - add r1, r5, #0x100 - mov r2, #2 - strh r2, [r1, #0xec] - mov r2, #1 - add r0, sp, #0 - strh r2, [r1, #0xee] - bl WMSP_WL_DevGetVersion - mov r4, r0 - ldrh r0, [r4, #4] - cmp r0, #0 - beq _060083D4 - ldr r1, _06008498 ; =0x00000306 - mov r0, #0 - strh r1, [r7] - ldrh r1, [r4, #4] - strh r1, [r6] - b _06008470 -_060083D4: - add r0, r4, #6 - add r1, r5, #0x20 - mov r2, #8 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0xe] - add r0, sp, #0 - strh r1, [r5, #0x28] - ldrh r1, [r4, #0x10] - strh r1, [r5, #0x2c] - ldrh r1, [r4, #0x12] - strh r1, [r5, #0x2e] - ldrh r1, [r4, #0x14] - strh r1, [r5, #0x2a] - bl WMSP_WL_ParamGetMacAddress - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06008430 - ldr r1, _0600849C ; =0x00000281 - strh r1, [r7] - ldrh r1, [r0, #4] - mov r0, #0 - strh r1, [r6] - b _06008470 -_06008430: - add r0, r0, #6 - add r1, r5, #0xe0 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, sp, #0 - mov r1, #1 - bl WMSP_WL_ParamSetBeaconSendRecvInd - ldrh r1, [r0, #4] - cmp r1, #0 - moveq r0, #1 - beq _06008470 - ldr r1, _060084A0 ; =0x00000215 - strh r1, [r7] - ldrh r1, [r0, #4] - mov r0, #0 - strh r1, [r6] -_06008470: - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600847C: .word wmspW + 0x1000 -_06008480: .word 0x00000302 -_06008484: .word 0x04808124 -_06008488: .word 0x00000202 -_0600848C: .word 0x00000283 -_06008490: .word 0x0000FFFF -_06008494: .word 0x001FF621 -_06008498: .word 0x00000306 -_0600849C: .word 0x00000281 -_060084A0: .word 0x00000215 - arm_func_end WMSPi_CommonWlIdle - - arm_func_start __VENEER_WMSP_GetAllowedChannel -__VENEER_WMSP_GetAllowedChannel: ; 0x060084A4 - ldr pc, _060084A8 ; =WMSP_GetAllowedChannel - .align 2, 0 -_060084A8: .word WMSP_GetAllowedChannel - arm_func_end __VENEER_WMSP_GetAllowedChannel - - arm_func_start WMSP_PowerOff -WMSP_PowerOff: ; 0x060084AC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x200 - ldr r0, _06008554 ; =wmspW + 0x1000 - ldr r5, [r0, #0x550] - ldrh r0, [r5] - cmp r0, #2 - beq _060084E4 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #6 - strh r1, [r0] - mov r1, #3 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008548 -_060084E4: - add r0, sp, #0 - bl WMSP_WL_DevShutdown - mov r4, r0 - ldrh r0, [r4, #4] - cmp r0, #0 - beq _06008528 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r2, #6 - mov r1, #1 - strh r2, [r0] - strh r1, [r0, #2] - add r1, r1, #0x300 - strh r1, [r0, #4] - ldrh r1, [r4, #4] - strh r1, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008548 -_06008528: - mov r0, #1 - strh r0, [r5] - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #6 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06008548: - add sp, sp, #0x200 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06008554: .word wmspW + 0x1000 - arm_func_end WMSP_PowerOff - - arm_func_start WMSP_SetMPParameter -WMSP_SetMPParameter: ; 0x06008558 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x1c - mov r6, r0 - add r1, sp, #0 - add r0, r6, #4 - bl WMSP_SetMPParameterCore - mov r5, r0 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r0, #0x23 - strh r0, [r4] - strh r5, [r4, #2] - ldr r3, [r6, #4] - add r0, sp, #0 - add r1, r4, #8 - mov r2, #0x1c - str r3, [r4, #4] - bl __VENEER_MI_CpuCopy8 - mov r0, r4 - bl __VENEER_WMSP_ReturnResult2Wm9 - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, lr} - bx lr - arm_func_end WMSP_SetMPParameter - - arm_func_start WMSP_SetMPParameterCore -WMSP_SetMPParameterCore: ; 0x060085B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _060088AC ; =wmspW + 0x1000 - mov sb, r0 - ldr r7, [r2, #0x550] - ldr r6, [sb] - ldrh r0, [r7] - mov r8, r1 - add r0, r0, #0xf7 - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov r5, #0 - bhi _060085F8 - tst r6, #0x2c00 - bicne r6, r6, #0x2c00 - movne r5, #3 -_060085F8: - bl __VENEER_OS_DisableInterrupts - mov r4, r0 - cmp r8, #0 - beq _06008680 - ldr r0, _060088B0 ; =0x00003FFF - str r0, [r8] - ldrh r0, [r7, #0x58] - strh r0, [r8, #4] - ldrh r0, [r7, #0x5a] - strh r0, [r8, #6] - ldrh r0, [r7, #0x5c] - strh r0, [r8, #8] - ldrh r0, [r7, #0x30] - strh r0, [r8, #0xa] - ldrh r0, [r7, #0x32] - strh r0, [r8, #0xc] - ldrh r0, [r7, #0x44] - strh r0, [r8, #0xe] - ldrh r0, [r7, #0x46] - strh r0, [r8, #0x10] - ldrh r0, [r7, #0x40] - strh r0, [r8, #0x12] - ldrh r0, [r7, #0x42] - strh r0, [r8, #0x14] - ldrh r0, [r7, #0x98] - strh r0, [r8, #0x16] - ldrh r0, [r7, #0x92] - strb r0, [r8, #0x18] - ldrh r0, [r7, #0x94] - strb r0, [r8, #0x19] - ldrh r0, [r7, #0x9a] - strb r0, [r8, #0x1a] - ldrh r0, [r7, #0x9c] - strb r0, [r8, #0x1b] -_06008680: - tst r6, #1 - beq _060086A0 - ldrh r1, [sb, #4] - add r0, r7, #0x700 - cmp r1, #0 - moveq r1, #0x10 - strh r1, [r7, #0x58] - strh r1, [r0, #0xc0] -_060086A0: - tst r6, #2 - beq _060086CC - ldrh r1, [sb, #6] - add r0, r7, #0x700 - cmp r1, #0 - moveq r1, #0x10 - strh r1, [r7, #0x5a] - strh r1, [r0, #0xc2] - ldrsh r0, [r7, #0x62] - cmp r0, r1 - strgth r1, [r7, #0x62] -_060086CC: - tst r6, #4 - beq _060086F8 - ldrh r1, [sb, #8] - add r0, r7, #0x700 - cmp r1, #0 - moveq r1, #0x10 - strh r1, [r7, #0x5c] - strh r1, [r0, #0xc4] - ldrsh r0, [r7, #0x62] - cmp r0, r1 - strgth r1, [r7, #0x62] -_060086F8: - tst r6, #8 - beq _06008724 - ldrh r0, [sb, #0xa] - ldrh r2, [r7, #0x34] - add r1, r0, #1 - bic r1, r1, #1 - mov r1, r1, lsl #0x10 - cmp r2, r1, lsr #16 - movlo r5, #6 - blo _06008724 - bl WMSP_SetParentSize -_06008724: - tst r6, #0x10 - beq _06008750 - ldrh r0, [sb, #0xc] - add r1, r0, #1 - bic r1, r1, #1 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #0x200 - movhi r5, #6 - bhi _06008750 - bl WMSP_SetChildSize -_06008750: - tst r6, #0x20 - beq _06008798 - ldrh r2, [sb, #0xe] - ldr r0, _060088B4 ; =0x00002710 - cmp r2, r0 - movhi r5, #6 - bhi _06008798 - ldr r0, _060088B8 ; =0x000082EA - strh r2, [r7, #0x44] - umull r1, r0, r2, r0 - mov r1, r1, lsr #6 - orr r1, r1, r0, lsl #26 - mov r0, r0, lsr #6 - mov r1, r1, lsr #0xa - orr r1, r1, r0, lsl #22 - str r1, [r7, #0x48] - mov r0, r0, lsr #0xa - str r0, [r7, #0x4c] -_06008798: - tst r6, #0x40 - beq _060087E0 - ldrh r2, [sb, #0x10] - ldr r0, _060088B4 ; =0x00002710 - cmp r2, r0 - movhi r5, #6 - bhi _060087E0 - ldr r0, _060088B8 ; =0x000082EA - strh r2, [r7, #0x46] - umull r1, r0, r2, r0 - mov r1, r1, lsr #6 - orr r1, r1, r0, lsl #26 - mov r0, r0, lsr #6 - mov r1, r1, lsr #0xa - orr r1, r1, r0, lsl #22 - str r1, [r7, #0x50] - mov r0, r0, lsr #0xa - str r0, [r7, #0x54] -_060087E0: - tst r6, #0x80 - beq _06008814 - ldrh r1, [sb, #0x12] - cmp r1, #0xbe - bls _06008808 - cmp r1, #0xdc - blo _06008810 - ldr r0, _060088BC ; =0x00000106 - cmp r1, r0 - bhi _06008810 -_06008808: - strh r1, [r7, #0x40] - b _06008814 -_06008810: - mov r5, #6 -_06008814: - tst r6, #0x100 - beq _06008848 - ldrh r1, [sb, #0x14] - cmp r1, #0xbe - bls _0600883C - cmp r1, #0xdc - blo _06008844 - ldr r0, _060088BC ; =0x00000106 - cmp r1, r0 - bhi _06008844 -_0600883C: - strh r1, [r7, #0x42] - b _06008848 -_06008844: - mov r5, #6 -_06008848: - tst r6, #0x200 - ldrneh r1, [sb, #0x16] - addne r0, r7, #0x700 - strneh r1, [r7, #0x98] - strneh r1, [r0, #0xca] - tst r6, #0x400 - ldrneb r0, [sb, #0x18] - strneh r0, [r7, #0x92] - tst r6, #0x800 - ldrneb r0, [sb, #0x19] - strneh r0, [r7, #0x94] - tst r6, #0x1000 - ldrneb r1, [sb, #0x1a] - addne r0, r7, #0x700 - strneh r1, [r7, #0x9a] - ldrneh r1, [r7, #0x9a] - strneh r1, [r0, #0xcc] - tst r6, #0x2000 - ldrneb r0, [sb, #0x1b] - strneh r0, [r7, #0x9c] - mov r0, r4 - bl __VENEER_OS_RestoreInterrupts - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_060088AC: .word wmspW + 0x1000 -_060088B0: .word 0x00003FFF -_060088B4: .word 0x00002710 -_060088B8: .word 0x000082EA -_060088BC: .word 0x00000106 - arm_func_end WMSP_SetMPParameterCore - - arm_func_start WMSP_SetBeaconPeriod -WMSP_SetBeaconPeriod: ; 0x060088C0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x200 - ldr r1, [r0, #4] - add r0, sp, #0 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl WMSP_WL_ParamSetBeaconPeriod - ldrh r4, [r0, #4] - cmp r4, #0 - beq _06008910 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x24 - strh r1, [r0] - mov r2, #1 - ldr r1, _06008934 ; =0x00000242 - strh r2, [r0, #2] - strh r1, [r0, #4] - strh r4, [r0, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008928 -_06008910: - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x24 - strh r1, [r0] - mov r1, #0 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06008928: - add sp, sp, #0x200 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06008934: .word 0x00000242 - arm_func_end WMSP_SetBeaconPeriod - - arm_func_start WMSP_AutoDisconnect -WMSP_AutoDisconnect: ; 0x06008938 - ldr ip, _06008948 ; =WMSP_DisconnectCore - mov r1, #1 - mov r2, #0 - bx ip - .align 2, 0 -_06008948: .word WMSP_DisconnectCore - arm_func_end WMSP_AutoDisconnect - - arm_func_start WMSP_SetPowerSaveMode -WMSP_SetPowerSaveMode: ; 0x0600894C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x230 - ldr r1, _06008AC8 ; =wmspW + 0x1000 - mov r7, r0 - ldr r6, [r1, #0x550] - add r5, sp, #0x30 - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r4, r0 - mov r1, #0x28 - strh r1, [r4] - ldrh r1, [r6] - cmp r1, #0xb - beq _06008990 - mov r1, #3 - strh r1, [r4, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008ABC -_06008990: - ldr r0, [r7, #4] - mov r2, #0 - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - mov r1, r0, lsl #0x10 - mov r0, r5 - mov r1, r1, lsr #0x10 - mov r3, #1 - bl WMSP_WL_MlmePowerManagement - ldrh r1, [r0, #4] - cmp r1, #0 - beq _060089E4 - mov r1, #1 - strh r1, [r4, #2] - strh r1, [r4, #4] - ldrh r1, [r0, #4] - mov r0, r4 - strh r1, [r4, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008ABC -_060089E4: - ldr r0, _06008AC8 ; =wmspW + 0x1000 - mov r2, #6 - ldr r5, [r0, #0x550] - add r0, r5, #0x8a - add r0, r0, #0x100 - add r1, r5, #0xa2 - bl __VENEER_MI_CpuCopy8 - add r1, sp, #0x30 - str r1, [r5, #0xa8] - mov r0, #0 - strh r0, [r5, #0xac] - mov r2, #1 - str r2, [r5, #0x18] - add r1, sp, #0 - mov r2, #0x30 - bl __VENEER_MIi_CpuClear16 - mov r0, #0 - strh r0, [sp] - strh r0, [sp, #6] - add r0, r5, #0x100 - ldrh r0, [r0, #0xec] - add r1, sp, #0x18 - cmp r0, #2 - moveq r3, #0x14 - add r0, r5, #0x8a - movne r3, #0xa - add r0, r0, #0x100 - mov r2, #6 - strb r3, [sp, #0xe] - bl __VENEER_MI_CpuCopy8 - add r1, sp, #0x1e - add r0, r5, #0xe0 - mov r2, #6 - bl __VENEER_MI_CpuCopy8 - add r0, sp, #0x30 - str r0, [sp, #0x2c] - add r1, sp, #0 - bl WMSP_WL_MaData - ldrh r1, [r0, #4] - cmp r1, #0 - beq _06008AAC - mov r1, #1 - strh r1, [r4, #2] - mov r1, #0x100 - strh r1, [r4, #4] - ldrh r1, [r0, #4] - mov r0, r4 - strh r1, [r4, #6] - bl __VENEER_WMSP_ReturnResult2Wm9 - b _06008ABC -_06008AAC: - mov r1, #0 - mov r0, r4 - strh r1, [r4, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 -_06008ABC: - add sp, sp, #0x230 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06008AC8: .word wmspW + 0x1000 - arm_func_end WMSP_SetPowerSaveMode - - arm_func_start WMSP_StartTestRxMode -WMSP_StartTestRxMode: ; 0x06008ACC - stmdb sp!, {r3, lr} - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x29 - strh r1, [r0] - mov r1, #4 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, lr} - bx lr - arm_func_end WMSP_StartTestRxMode - - arm_func_start WMSP_StopTestRxMode -WMSP_StopTestRxMode: ; 0x06008AF0 - stmdb sp!, {r3, lr} - bl __VENEER_WMSP_GetBuffer4Callback2Wm9 - mov r1, #0x2a - strh r1, [r0] - mov r1, #4 - strh r1, [r0, #2] - bl __VENEER_WMSP_ReturnResult2Wm9 - ldmia sp!, {r3, lr} - bx lr - arm_func_end WMSP_StopTestRxMode - - arm_func_start WlessLibReboot -WlessLibReboot: ; 0x06008B14 - stmdb sp!, {r3, lr} - bl ClearTimeOut - bl WShutdown - bl InitMac - bl ReleaseAllWlHeapBuf - bl InitializeTask - ldr r0, _06008B5C ; =0x0380FFF4 - ldr r0, [r0] - add r1, r0, #0x300 - ldr r0, [r0, #0x31c] - ldrh r1, [r1, #0x20] - bl InitializeParam - bl InitializeCmdIf - bl InitializeMLME - bl InitializeCAM - bl WSetDefaultParameters - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06008B5C: .word 0x0380FFF4 - arm_func_end WlessLibReboot - - arm_func_start WL_InitDriver -WL_InitDriver: ; 0x06008B60 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - mov r4, r0 - ldr r1, [r4] - ldr r3, _06008D20 ; =0x0380FFF4 - ldr r2, _06008D24 ; =0x00000694 - mov r0, #0 - str r1, [r3] - bl __VENEER_MIi_CpuClearFast - bl __VENEER_OS_GetLockID - ldr r2, _06008D20 ; =0x0380FFF4 - ldr r1, [r2] - str r0, [r1, #0x314] - ldr r1, [r4, #0x18] - ldr r0, [r2] - str r1, [r0, #0x30c] - ldr r1, [r4, #0x1c] - ldr r0, [r2] - mov r1, r1, lsr #1 - str r1, [r0, #0x310] - ldr r1, [r2] - ldr r0, [r1, #0x310] - cmp r0, #0 - mvneq r0, #0 - streq r0, [r1, #0x310] - add r0, r4, #0x20 - bl InitializeHeapBuf - bl FLASH_MakeImage - ldr r3, _06008D28 ; =0x04000304 - ldr r1, _06008D20 ; =0x0380FFF4 - ldrh r2, [r3] - mov r0, #0x30 - orr r2, r2, #2 - strh r2, [r3] - strh r0, [r3, #-0xfe] - ldr r0, [r1] - mov r2, #3 - str r2, [r0, #0x68c] - ldr r1, [r1] - mov r0, #0x3c - add r1, r1, #0x92 - add r2, r1, #0x600 - mov r1, #2 - bl FLASH_Read - ldr r1, _06008D20 ; =0x0380FFF4 - mov r0, #0x3e - ldr r2, [r1] - mov r1, #2 - add r2, r2, #0x690 - bl FLASH_Read - ldr r2, _06008D20 ; =0x0380FFF4 - ldr r3, [r4, #0x10] - ldr r0, [r2] - mov r1, #0x1c - str r3, [r0, #0x308] - ldr r0, [r2] - ldr r2, [r4, #0x14] - str r2, [r0, #0x304] - ldr r0, [r4, #0x30] - bl __VENEER__u32_div_f - mov r1, r0 - ldr r0, [r4, #0x2c] - bl InitializeParam - bl InitializeTask - bl InitializeCmdIf - bl InitializeMLME - bl InitializeCAM - bl InitializeAlarm - add r0, sp, #8 - bl FLASH_VerifyCheckSum - cmp r0, #0 - beq _06008C9C - ldr r0, _06008D20 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x3e] - orr r1, r1, #0x80 - strh r1, [r0, #0x3e] - b _06008CC4 -_06008C9C: - bl WConfigDevice - bl DiagMacRegister - bl WWakeUp - bl InitMac - bl InitRF - bl DiagMacMemory - bl DiagBaseBand - bl InitBaseBand - bl WSetDefaultParameters - bl WShutdown -_06008CC4: - ldr r1, [r4, #8] - ldr r0, _06008D20 ; =0x0380FFF4 - str r1, [sp] - ldr r2, [r4, #0xc] - ldr r1, _06008D2C ; =MainTaskRoutine - str r2, [sp, #4] - ldr r0, [r0] - ldr r3, [r4, #4] - add r0, r0, #0x18 - mov r2, #0 - bl __VENEER_OS_CreateThread - ldr r0, _06008D20 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x18 - bl __VENEER_OS_WakeupThreadDirect - bl InitializeIntr - ldr r0, _06008D20 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x3e] - add sp, sp, #0xc - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_06008D20: .word 0x0380FFF4 -_06008D24: .word 0x00000694 -_06008D28: .word 0x04000304 -_06008D2C: .word MainTaskRoutine - arm_func_end WL_InitDriver - - arm_func_start __VENEER_MIi_CpuClearFast -__VENEER_MIi_CpuClearFast: ; 0x06008D30 - ldr pc, _06008D34 ; =MIi_CpuClearFast - .align 2, 0 -_06008D34: .word MIi_CpuClearFast - arm_func_end __VENEER_MIi_CpuClearFast - - arm_func_start __VENEER_OS_GetLockID -__VENEER_OS_GetLockID: ; 0x06008D38 - ldr pc, _06008D3C ; =OS_GetLockID - .align 2, 0 -_06008D3C: .word OS_GetLockID - arm_func_end __VENEER_OS_GetLockID - - arm_func_start WL_GetThreadStruct -WL_GetThreadStruct: ; 0x06008D40 - ldr r0, _06008D50 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x18 - bx lr - .align 2, 0 -_06008D50: .word 0x0380FFF4 - arm_func_end WL_GetThreadStruct - - arm_func_start WL_Terminate -WL_Terminate: ; 0x06008D54 - stmdb sp!, {r4, lr} - ldr r0, _06008D9C ; =0x0380FFF4 - ldr r4, [r0] - add r0, r4, #0x18 - bl __VENEER_OS_IsThreadTerminated - cmp r0, #1 - beq _06008D94 - mov r0, #2 - mov r1, #0x16 - bl AddTask - add r0, r4, #0x18 - bl __VENEER_OS_JoinThread -_06008D84: - add r0, r4, #0x18 - bl __VENEER_OS_IsThreadTerminated - cmp r0, #0 - beq _06008D84 -_06008D94: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06008D9C: .word 0x0380FFF4 - arm_func_end WL_Terminate - - arm_func_start __VENEER_OS_IsThreadTerminated -__VENEER_OS_IsThreadTerminated: ; 0x06008DA0 - ldr pc, _06008DA4 ; =OS_IsThreadTerminated - .align 2, 0 -_06008DA4: .word OS_IsThreadTerminated - arm_func_end __VENEER_OS_IsThreadTerminated - - arm_func_start __VENEER_OS_JoinThread -__VENEER_OS_JoinThread: ; 0x06008DA8 - ldr pc, _06008DAC ; =OS_JoinThread - .align 2, 0 -_06008DAC: .word OS_JoinThread - arm_func_end __VENEER_OS_JoinThread - - arm_func_start InitializeTask -InitializeTask: ; 0x06008DB0 - stmdb sp!, {r4, lr} - ldr r0, _06008E30 ; =0x0380FFF4 - mov r3, #0 - ldr lr, [r0] - ldr r2, _06008E34 ; =0x0000FFFF - strh r3, [lr, #0x10] - strh r3, [lr, #0x12] -_06008DCC: - add r0, lr, r3, lsl #1 - strh r2, [r0, #8] - ldrh r0, [r0, #8] - mov r1, r3, lsl #1 - add r3, r3, #1 - strh r0, [lr, r1] - cmp r3, #4 - blo _06008DCC - ldr ip, _06008E34 ; =0x0000FFFF - mov r4, #0 - ldr r1, _06008E38 ; =pTaskFunc - mov r2, r4 -_06008DFC: - add r3, lr, r4, lsl #3 - strh ip, [r3, #0xbc] - ldr r0, [r1, r4, lsl #2] - strh r2, [r3, #0xbe] - add r4, r4, #1 - str r0, [r3, #0xc0] - cmp r4, #0x18 - blo _06008DFC - mov r0, #3 - mov r1, #0xc - bl AddTask - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06008E30: .word 0x0380FFF4 -_06008E34: .word 0x0000FFFF -_06008E38: .word pTaskFunc - arm_func_end InitializeTask - - arm_func_start MainTaskRoutine -MainTaskRoutine: ; 0x06008E3C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r7, _06008EE8 ; =0x0380FFF4 - mov r0, #0 - ldr r8, [r7] - ldr r4, _06008EEC ; =0x01000010 - strh r0, [r8, #0x10] - ldr sb, _06008EF0 ; =0x0000FFFF - strh r0, [r8, #0x14] - add r6, sp, #0 - mov r5, r0 -_06008E64: - ldr r0, [r7] - mov r1, r6 - ldr r0, [r0, #0x308] - mov r2, r5 - bl __VENEER_OS_ReceiveMessage - cmp r0, #0 - beq _06008E88 - mov r0, r6 - bl ExecuteMessage -_06008E88: - mov r0, r4 - bl __VENEER_OS_DisableIrqMask - ldrh r1, [r8, #0x10] - strh r1, [r8, #0x12] - mov r1, r1, lsl #1 - ldrh r1, [r8, r1] - cmp r1, sb - bne _06008EBC - ldrh r1, [r8, #0x10] - add r1, r1, #1 - strh r1, [r8, #0x10] - bl __VENEER_OS_EnableIrqMask - b _06008E64 -_06008EBC: - bl __VENEER_OS_EnableIrqMask - ldrh r0, [r8, #0x12] - bl DeleteTask - strh r0, [r8, #0x14] - ldrh r0, [r8, #0x14] - add r0, r8, r0, lsl #3 - ldr r0, [r0, #0xc0] - mov lr, pc - bx r0 - strh sb, [r8, #0x14] - b _06008E64 - .align 2, 0 -_06008EE8: .word 0x0380FFF4 -_06008EEC: .word 0x01000010 -_06008EF0: .word 0x0000FFFF - arm_func_end MainTaskRoutine - - arm_func_start __VENEER_OS_DisableIrqMask -__VENEER_OS_DisableIrqMask: ; 0x06008EF4 - ldr pc, _06008EF8 ; =OS_DisableIrqMask - .align 2, 0 -_06008EF8: .word OS_DisableIrqMask - arm_func_end __VENEER_OS_DisableIrqMask - - arm_func_start __VENEER_OS_EnableIrqMask -__VENEER_OS_EnableIrqMask: ; 0x06008EFC - ldr pc, _06008F00 ; =OS_EnableIrqMask - .align 2, 0 -_06008F00: .word OS_EnableIrqMask - arm_func_end __VENEER_OS_EnableIrqMask - - arm_func_start AddTask -AddTask: ; 0x06008F04 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _06008FB4 ; =0x0380FFF4 - mov r7, r0 - ldr r4, [r2] - ldr r0, _06008FB8 ; =0x01000010 - mov r6, r1 - add r5, r4, #0xbc - bl __VENEER_OS_DisableIrqMask - add r2, r5, r6, lsl #3 - ldrh r1, [r2, #2] - mov ip, r6, lsl #3 - cmp r1, #0 - bne _06008F7C - mov r3, #1 - strh r3, [r2, #2] - rsb r1, r3, #0x10000 - strh r1, [r5, ip] - add r1, r4, r7, lsl #1 - ldrh r2, [r1, #8] - rsb r1, r3, #0x10000 - cmp r2, r1 - mov r1, r7, lsl #1 - streqh r6, [r4, r1] - addne r1, r4, r2, lsl #3 - strneh r6, [r1, #0xbc] - add r1, r4, r7, lsl #1 - strh r6, [r1, #8] - ldrh r1, [r4, #0x10] - cmp r7, r1 - strlth r7, [r4, #0x10] -_06008F7C: - bl __VENEER_OS_EnableIrqMask - cmp r7, #3 - beq _06008FAC - ldrh r0, [r4, #0x12] - cmp r0, #3 - bne _06008FAC - ldr r0, _06008FB4 ; =0x0380FFF4 - mov r1, #0 - ldr r0, [r0] - mov r2, r1 - ldr r0, [r0, #0x308] - bl __VENEER_OS_SendMessage -_06008FAC: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06008FB4: .word 0x0380FFF4 -_06008FB8: .word 0x01000010 - arm_func_end AddTask - - arm_func_start DeleteTask -DeleteTask: ; 0x06008FBC - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _06009028 ; =0x0380FFF4 - mov r5, r0 - ldr r0, _0600902C ; =0x01000010 - ldr r4, [r1] - bl __VENEER_OS_DisableIrqMask - mov lr, r5, lsl #1 - ldrh r5, [r4, lr] - ldr r2, _06009030 ; =0x0000FFFF - cmp r5, r2 - beq _06009018 - add ip, r4, #0xbc - add r1, ip, r5, lsl #3 - mov r3, #0 - strh r3, [r1, #2] - mov r3, r5, lsl #3 - ldrh r1, [ip, r3] - cmp r1, r2 - streqh r2, [r4, lr] - addeq r1, r4, lr - streqh r2, [r1, #8] - strneh r1, [r4, lr] - strneh r2, [ip, r3] -_06009018: - bl __VENEER_OS_EnableIrqMask - mov r0, r5 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06009028: .word 0x0380FFF4 -_0600902C: .word 0x01000010 -_06009030: .word 0x0000FFFF - arm_func_end DeleteTask - - arm_func_start LowestIdleTask -LowestIdleTask: ; 0x06009034 - stmdb sp!, {r3, lr} - ldr r0, _0600906C ; =0x0380FFF4 - add r1, sp, #0 - ldr r0, [r0] - mov r2, #1 - ldr r0, [r0, #0x308] - bl __VENEER_OS_ReceiveMessage - add r0, sp, #0 - bl ExecuteMessage - mov r0, #3 - mov r1, #0xc - bl AddTask - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600906C: .word 0x0380FFF4 - arm_func_end LowestIdleTask - - arm_func_start ExecuteMessage -ExecuteMessage: ; 0x06009070 - stmdb sp!, {r3, lr} - ldr r1, [r0] - cmp r1, #0 - beq _0600909C - ldr r0, _060090A4 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x200 - bl NewHeapBuf - mov r0, #2 - mov r1, #0xb - bl AddTask -_0600909C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060090A4: .word 0x0380FFF4 - arm_func_end ExecuteMessage - - arm_func_start AllocateHeapBuf -AllocateHeapBuf: ; 0x060090A8 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0600913C ; =0x0380FFF4 - movs r3, r1 - ldr r1, [r2] - mov r5, r0 - moveq r0, #0 - beq _06009134 - ldr r0, [r1, #0x17c] - cmp r0, #0 - beq _060090DC - cmp r0, #1 - beq _060090F4 - b _06009108 -_060090DC: - ldr r0, [r1, #0x180] - ldr r1, [r1, #0x184] - add r2, r3, #0xc - bl __VENEER_OS_AllocFromHeap - mov r4, r0 - b _06009108 -_060090F4: - ldr r1, [r1, #0x180] - add r0, r3, #0xc - mov lr, pc - bx r1 - mov r4, r0 -_06009108: - cmp r4, #0 - moveq r0, #0 - beq _06009134 - ldr r1, _06009140 ; =0x0000BF1D - mov r0, r5 - strh r1, [r4, #0xa] - mov r2, #0 - mov r1, r4 - strh r2, [r4, #8] - bl AddHeapBuf - mov r0, r4 -_06009134: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600913C: .word 0x0380FFF4 -_06009140: .word 0x0000BF1D - arm_func_end AllocateHeapBuf - - arm_func_start ReleaseHeapBuf -ReleaseHeapBuf: ; 0x06009144 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r1 - ldr r5, _060091BC ; =0x0380FFF4 - ldrh r3, [r4, #0xa] - ldr r2, _060091C0 ; =0x0000BF1D - ldr r5, [r5] - cmp r3, r2 - movne r0, #1 - bne _060091B4 - bl DeleteHeapBuf - movs r6, r0 - bne _060091B0 - ldr r0, [r5, #0x17c] - cmp r0, #0 - beq _0600918C - cmp r0, #1 - beq _060091A0 - b _060091B0 -_0600918C: - ldr r0, [r5, #0x180] - ldr r1, [r5, #0x184] - mov r2, r4 - bl __VENEER_OS_FreeToHeap - b _060091B0 -_060091A0: - ldr r1, [r5, #0x184] - mov r0, r4 - mov lr, pc - bx r1 -_060091B0: - mov r0, r6 -_060091B4: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_060091BC: .word 0x0380FFF4 -_060091C0: .word 0x0000BF1D - arm_func_end ReleaseHeapBuf - - arm_func_start MoveHeapBuf -MoveHeapBuf: ; 0x060091C4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r2 - ldrh r3, [r6, #0xa] - ldr r2, _0600922C ; =0x0000BF1D - mov r4, r0 - cmp r3, r2 - mov r7, r1 - movne r0, #1 - bne _06009224 - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - mov r5, r0 - mov r0, r4 - mov r1, r6 - bl DeleteHeapBuf - movs r4, r0 - bne _06009218 - mov r0, r7 - mov r1, r6 - bl AddHeapBuf - mov r4, r0 -_06009218: - mov r0, r5 - bl __VENEER_OS_EnableIrqMask - mov r0, r4 -_06009224: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600922C: .word 0x0000BF1D - arm_func_end MoveHeapBuf - - arm_func_start NewHeapBuf -NewHeapBuf: ; 0x06009230 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0x1000000 - mov r4, r1 - bl __VENEER_OS_DisableIrqMask - ldrh r1, [r5, #8] - cmp r1, #0 - mvneq r1, #0 - streq r1, [r4] - streq r4, [r5] - ldrne r1, [r5, #4] - strne r1, [r4] - strne r4, [r1, #4] - mvn r1, #0 - str r1, [r4, #4] - ldrh r2, [r5, #0xa] - ldr r1, _0600929C ; =0x0000BF1D - strh r2, [r4, #8] - strh r1, [r4, #0xa] - str r4, [r5, #4] - ldrh r1, [r5, #8] - add r1, r1, #1 - strh r1, [r5, #8] - bl __VENEER_OS_EnableIrqMask - mov r0, #0 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600929C: .word 0x0000BF1D - arm_func_end NewHeapBuf - - arm_func_start AddHeapBuf -AddHeapBuf: ; 0x060092A0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrh r2, [r4, #0xa] - ldr r1, _06009328 ; =0x0000BF1D - mov r5, r0 - cmp r2, r1 - movne r0, #1 - bne _06009320 - ldrh r0, [r4, #8] - cmp r0, #0 - movne r0, #2 - bne _06009320 - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - ldrh r1, [r5, #8] - cmp r1, #0 - mvneq r1, #0 - streq r1, [r4] - streq r4, [r5] - ldrne r1, [r5, #4] - strne r1, [r4] - strne r4, [r1, #4] - mvn r1, #0 - str r1, [r4, #4] - ldrh r1, [r5, #0xa] - strh r1, [r4, #8] - str r4, [r5, #4] - ldrh r1, [r5, #8] - add r1, r1, #1 - strh r1, [r5, #8] - bl __VENEER_OS_EnableIrqMask - mov r0, #0 -_06009320: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06009328: .word 0x0000BF1D - arm_func_end AddHeapBuf - - arm_func_start DeleteHeapBuf -DeleteHeapBuf: ; 0x0600932C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrh r2, [r4, #0xa] - ldr r1, _060093E8 ; =0x0000BF1D - mov r5, r0 - cmp r2, r1 - movne r0, #1 - bne _060093E0 - ldrh r1, [r4, #8] - ldrh r0, [r5, #0xa] - cmp r1, r0 - movne r0, #2 - bne _060093E0 - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - ldrh r1, [r5, #8] - sub r1, r1, #1 - strh r1, [r5, #8] - ldrh r1, [r5, #8] - cmp r1, #0 - mvneq r1, #0 - streq r1, [r5] - streq r1, [r5, #4] - beq _060093D0 - ldr r1, [r5] - cmp r4, r1 - ldreq r2, [r4, #4] - mvneq r1, #0 - streq r2, [r5] - streq r1, [r2] - beq _060093D0 - ldr r1, [r5, #4] - ldr r2, [r4] - cmp r4, r1 - streq r2, [r5, #4] - mvneq r1, #0 - streq r1, [r2, #4] - ldrne r1, [r4, #4] - strne r2, [r1] - ldmneia r4, {r1, r2} - strne r2, [r1, #4] -_060093D0: - mov r1, #0 - strh r1, [r4, #8] - bl __VENEER_OS_EnableIrqMask - mov r0, #0 -_060093E0: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060093E8: .word 0x0000BF1D - arm_func_end DeleteHeapBuf - - arm_func_start GetHeapBufNextAdrs -GetHeapBufNextAdrs: ; 0x060093EC - ldr r0, [r0, #4] - bx lr - arm_func_end GetHeapBufNextAdrs - - arm_func_start InitHeapBufMan -InitHeapBufMan: ; 0x060093F4 - mvn r2, #0 - str r2, [r0] - str r2, [r0, #4] - mov r2, #0 - strh r2, [r0, #8] - strh r1, [r0, #0xa] - bx lr - arm_func_end InitHeapBufMan - - arm_func_start InitializeHeapBuf -InitializeHeapBuf: ; 0x06009410 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _060094E4 ; =0x0380FFF4 - ldr r2, [r0] - ldr r4, [r1] - mov r1, #2 - str r2, [r4, #0x17c] - ldr r2, [r0, #4] - add r5, r4, #0x344 - str r2, [r4, #0x180] - ldr r2, [r0, #8] - add r0, r4, #0x188 - str r2, [r4, #0x184] - bl InitHeapBufMan - add r0, r4, #0x194 - mov r1, #3 - bl InitHeapBufMan - add r0, r4, #0x1a0 - mov r1, #4 - bl InitHeapBufMan - add r0, r4, #0x1ac - mov r1, #5 - bl InitHeapBufMan - add r0, r4, #0x1b8 - mov r1, #6 - bl InitHeapBufMan - add r0, r4, #0x1c4 - mov r1, #7 - bl InitHeapBufMan - add r0, r4, #0x1d0 - mov r1, #8 - bl InitHeapBufMan - add r0, r4, #0x1dc - mov r1, #9 - bl InitHeapBufMan - add r0, r4, #0x1e8 - mov r1, #0xa - bl InitHeapBufMan - add r0, r4, #0x1f4 - mov r1, #0xb - bl InitHeapBufMan - add r0, r4, #0x200 - mov r1, #0xc - bl InitHeapBufMan - add r0, r4, #0x188 - mov r1, #0x81 - bl AllocateHeapBuf - add r0, r0, #0xc - str r0, [r5, #0x9c] - mov r0, #0 - strh r0, [r5, #0xa0] - strh r0, [r5, #0xa4] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060094E4: .word 0x0380FFF4 - arm_func_end InitializeHeapBuf - - arm_func_start ReleaseAllWlHeapBuf -ReleaseAllWlHeapBuf: ; 0x060094E8 - stmdb sp!, {r4, lr} - ldr r0, _0600953C ; =0x0380FFF4 - ldr r4, [r0] - add r0, r4, #0x194 - bl ReleaseAllHeapBuf - add r0, r4, #0x1a0 - bl ReleaseAllHeapBuf - add r0, r4, #0x1ac - bl ReleaseAllHeapBuf - add r0, r4, #0x1b8 - bl ReleaseAllHeapBuf - add r0, r4, #0x1c4 - bl ReleaseAllHeapBuf - add r0, r4, #0x1d0 - bl ReleaseAllHeapBuf - add r0, r4, #0x1dc - bl ReleaseAllHeapBuf - add r0, r4, #0x1e8 - bl ReleaseAllHeapBuf - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600953C: .word 0x0380FFF4 - arm_func_end ReleaseAllWlHeapBuf - - arm_func_start ReleaseAllHeapBuf -ReleaseAllHeapBuf: ; 0x06009540 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrh r0, [r6, #8] - ldr r1, [r6] - cmp r0, #0 - beq _06009578 - mvn r4, #0 - b _06009570 -_06009560: - ldr r5, [r1, #4] - mov r0, r6 - bl ReleaseHeapBuf - mov r1, r5 -_06009570: - cmp r1, r4 - bne _06009560 -_06009578: - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end ReleaseAllHeapBuf - - arm_func_start InitializeParam -InitializeParam: ; 0x06009580 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _060095FC ; =0x0380FFF4 - mov r5, r0 - ldr r3, [r2] - mov r6, r1 - add r1, r3, #0x31c - mov r0, #0 - mov r2, #0x28 - ldr r4, [r3, #0x3e0] - bl __VENEER_MIi_CpuClear16 - ldr r1, _060095FC ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r1] - mov r2, #0xc0 - add r1, r1, #0x344 - bl __VENEER_MIi_CpuClear16 - ldr r3, _060095FC ; =0x0380FFF4 - mov r0, r6, lsl #0x10 - ldr r2, [r3] - mov r1, r0, lsr #0x10 - str r5, [r2, #0x31c] - ldr r0, [r3] - add r0, r0, #0x300 - strh r1, [r0, #0x20] - ldr r0, [r3] - add r0, r0, #0x300 - strh r1, [r0, #0x22] - ldr r0, [r3] - str r4, [r0, #0x3e0] - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_060095FC: .word 0x0380FFF4 - arm_func_end InitializeParam - - arm_func_start WSetMacAdrs -WSetMacAdrs: ; 0x06009600 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrh r0, [r4] - tst r0, #1 - movne r0, #5 - bne _06009650 - ldr r0, _06009658 ; =0x0380FFF4 - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x324 - bl WSetMacAdrs1 - ldr r0, _0600965C ; =0x04808018 - mov r1, r4 - bl WSetMacAdrs1 - ldr r1, _06009658 ; =0x0380FFF4 - mov r0, #0 - ldr r2, [r1] - ldr r1, [r2, #0x340] - orr r1, r1, #2 - str r1, [r2, #0x340] -_06009650: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06009658: .word 0x0380FFF4 -_0600965C: .word 0x04808018 - arm_func_end WSetMacAdrs - - arm_func_start WSetRetryLimit -WSetRetryLimit: ; 0x06009660 - cmp r0, #0xff - movhi r0, #5 - bxhi lr - ldr r1, _0600968C ; =0x0380FFF4 - ldr r2, _06009690 ; =0x0480802C - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0x2a] - strh r0, [r2] - mov r0, #0 - bx lr - .align 2, 0 -_0600968C: .word 0x0380FFF4 -_06009690: .word 0x0480802C - arm_func_end WSetRetryLimit - - arm_func_start WSetEnableChannel -WSetEnableChannel: ; 0x06009694 - ldr r1, _060096CC ; =0x00007FFE - tst r0, r1 - moveq r0, #5 - bxeq lr - ldr r2, _060096D0 ; =0x0380FFF4 - ldr r1, [r2] - add r1, r1, #0x300 - strh r0, [r1, #0x2c] - ldr r2, [r2] - mov r0, #0 - ldr r1, [r2, #0x340] - orr r1, r1, #4 - str r1, [r2, #0x340] - bx lr - .align 2, 0 -_060096CC: .word 0x00007FFE -_060096D0: .word 0x0380FFF4 - arm_func_end WSetEnableChannel - - arm_func_start WSetMode -WSetMode: ; 0x060096D4 - stmdb sp!, {r3, lr} - cmp r0, #3 - movhi r0, #5 - bhi _06009740 - ldr ip, _06009748 ; =0x0380FFF4 - ldr r3, _0600974C ; =0x04808006 - ldr r1, [ip] - ldr r2, _06009750 ; =0x0000FFF8 - add r1, r1, #0x300 - strh r0, [r1, #0x2e] - ldr r1, [ip] - add r1, r1, #0x300 - strh r0, [r1, #0x50] - ldrh r1, [r3] - and r1, r1, r2 - orr r0, r1, r0 - strh r0, [r3] - ldr r0, [ip] - add r0, r0, #0x300 - ldrh r0, [r0, #0x52] - bl WSetPowerMgtMode - ldr r1, _06009748 ; =0x0380FFF4 - mov r0, #0 - ldr r2, [r1] - ldr r1, [r2, #0x340] - orr r1, r1, #8 - str r1, [r2, #0x340] -_06009740: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06009748: .word 0x0380FFF4 -_0600974C: .word 0x04808006 -_06009750: .word 0x0000FFF8 - arm_func_end WSetMode - - arm_func_start WSetRate -WSetRate: ; 0x06009754 - stmdb sp!, {r3, lr} - cmp r0, #2 - movhi r0, #5 - bhi _0600977C - ldr r1, _06009784 ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0x30] - bl WSetTxTimeStampOffset - mov r0, #0 -_0600977C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06009784: .word 0x0380FFF4 - arm_func_end WSetRate - - arm_func_start WSetWepMode -WSetWepMode: ; 0x06009788 - ldr r1, _0600981C ; =0x0380FFF4 - cmp r0, #3 - ldr r1, [r1] - movhi r0, #5 - add r2, r1, #0x344 - bxhi lr - add r1, r1, #0x300 - strh r0, [r1, #0x34] - ldrh r1, [r2, #0x7c] - cmp r0, #0 - biceq r1, r1, #0x10 - streqh r1, [r2, #0x7c] - ldreqh r1, [r2, #0x8a] - ldr r3, _06009820 ; =0x04808006 - biceq r1, r1, #0x4000 - orrne r1, r1, #0x10 - strneh r1, [r2, #0x7c] - ldrneh r1, [r2, #0x8a] - orrne r1, r1, #0x4000 - strh r1, [r2, #0x8a] - ldrh r1, [r2, #8] - cmp r1, #0x40 - cmpeq r0, #1 - ldreq r1, _0600981C ; =0x0380FFF4 - ldreqh r2, [r2, #0x7c] - ldreq r1, [r1] - ldreq r1, [r1, #0x4ac] - streqh r2, [r1, #0x2e] - cmp r0, #0 - ldr r1, _06009824 ; =0x0000FFC7 - ldrh r2, [r3] - moveq r0, #1 - and r1, r2, r1 - orr r0, r1, r0, lsl #3 - strh r0, [r3] - mov r0, #0 - bx lr - .align 2, 0 -_0600981C: .word 0x0380FFF4 -_06009820: .word 0x04808006 -_06009824: .word 0x0000FFC7 - arm_func_end WSetWepMode - - arm_func_start WSetWepKeyId -WSetWepKeyId: ; 0x06009828 - cmp r0, #3 - ldrls r1, _06009848 ; =0x0380FFF4 - movhi r0, #5 - ldrls r1, [r1] - addls r1, r1, #0x300 - strlsh r0, [r1, #0x36] - movls r0, #0 - bx lr - .align 2, 0 -_06009848: .word 0x0380FFF4 - arm_func_end WSetWepKeyId - - arm_func_start WSetWepKey -WSetWepKey: ; 0x0600984C - stmdb sp!, {r4, lr} - ldr r1, _0600989C ; =0x04805F80 - mov r2, #0x14 - mov r4, r0 - bl __VENEER_MIi_CpuCopy16 - ldr r1, _060098A0 ; =0x04805FA0 - add r0, r4, #0x14 - mov r2, #0x14 - bl __VENEER_MIi_CpuCopy16 - ldr r1, _060098A4 ; =0x04805FC0 - add r0, r4, #0x28 - mov r2, #0x14 - bl __VENEER_MIi_CpuCopy16 - ldr r1, _060098A8 ; =0x04805FE0 - add r0, r4, #0x3c - mov r2, #0x14 - bl __VENEER_MIi_CpuCopy16 - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600989C: .word 0x04805F80 -_060098A0: .word 0x04805FA0 -_060098A4: .word 0x04805FC0 -_060098A8: .word 0x04805FE0 - arm_func_end WSetWepKey - - arm_func_start WSetBeaconType -WSetBeaconType: ; 0x060098AC - cmp r0, #1 - movhi r0, #5 - bxhi lr - ldr r1, _060098E0 ; =0x0380FFF4 - and r2, r0, #1 - ldr r1, [r1] - mov r0, #0 - add r1, r1, #0x300 - ldrh r3, [r1, #0x3a] - bic r3, r3, #1 - orr r2, r3, r2 - strh r2, [r1, #0x3a] - bx lr - .align 2, 0 -_060098E0: .word 0x0380FFF4 - arm_func_end WSetBeaconType - - arm_func_start WSetBcSsidResponse -WSetBcSsidResponse: ; 0x060098E4 - cmp r0, #1 - movhi r0, #5 - bxhi lr - ldr r1, _06009918 ; =0x0380FFF4 - mov r2, r0, lsl #0x1f - ldr r1, [r1] - mov r0, #0 - add r1, r1, #0x300 - ldrh r3, [r1, #0x3a] - bic r3, r3, #2 - orr r2, r3, r2, lsr #30 - strh r2, [r1, #0x3a] - bx lr - .align 2, 0 -_06009918: .word 0x0380FFF4 - arm_func_end WSetBcSsidResponse - - arm_func_start WSetBeaconLostThreshold -WSetBeaconLostThreshold: ; 0x0600991C - cmp r0, #0xff - movhi r0, #5 - bxhi lr - ldr r2, _06009950 ; =0x0380FFF4 - mov r3, #0 - ldr r1, [r2] - add r1, r1, #0x300 - strh r3, [r1, #0xc4] - ldr r1, [r2] - add r1, r1, #0x300 - strh r0, [r1, #0xc2] - mov r0, r3 - bx lr - .align 2, 0 -_06009950: .word 0x0380FFF4 - arm_func_end WSetBeaconLostThreshold - - arm_func_start WSetActiveZoneTime -WSetActiveZoneTime: ; 0x06009954 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - cmp r4, #0xa - movlo r0, #5 - blo _060099F4 - ldr r0, _060099FC ; =0x0380FFF4 - cmp r1, #0 - ldr r0, [r0] - add r0, r0, #0x300 - strh r4, [r0, #0x3c] - ldrne r0, _06009A00 ; =0x04808134 - strneh r4, [r0] - ldr r0, _060099FC ; =0x0380FFF4 - ldr r1, [r0] - add r0, r1, #0x400 - ldrh r0, [r0, #0xa4] - cmp r0, #0 - beq _060099F0 - ldr r2, [r1, #0x4ac] - add r0, r1, #0x300 - ldrh r1, [r0, #0x52] - ldrh r0, [r0, #0xda] - add r2, r2, #0x24 - add r5, r2, r0 - cmp r1, #1 - add r0, r5, #6 - bne _060099DC - and r1, r4, #0xff - bl WL_WriteByte - mov r1, r4, asr #8 - add r0, r5, #7 - and r1, r1, #0xff - bl WL_WriteByte - b _060099F0 -_060099DC: - mov r1, #0xff - bl WL_WriteByte - add r0, r5, #7 - mov r1, #0xff - bl WL_WriteByte -_060099F0: - mov r0, #0 -_060099F4: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060099FC: .word 0x0380FFF4 -_06009A00: .word 0x04808134 - arm_func_end WSetActiveZoneTime - - arm_func_start WSetSsidMask -WSetSsidMask: ; 0x06009A04 - ldr r1, _06009A30 ; =0x0380FFF4 - mov r2, #0 - ldr r1, [r1] - add r3, r1, #0x384 -_06009A14: - ldrh r1, [r0], #2 - add r2, r2, #1 - cmp r2, #0x10 - strh r1, [r3], #2 - blo _06009A14 - mov r0, #0 - bx lr - .align 2, 0 -_06009A30: .word 0x0380FFF4 - arm_func_end WSetSsidMask - - arm_func_start WSetPreambleType -WSetPreambleType: ; 0x06009A34 - stmdb sp!, {r3, lr} - ldr r1, _06009AD4 ; =0x0380FFF4 - cmp r0, #1 - ldr r2, [r1] - movhi r0, #5 - add r1, r2, #0x344 - bhi _06009ACC - add r2, r2, #0x300 - ldrh ip, [r2, #0x3a] - mov r3, r0, lsl #0x1f - bic ip, ip, #4 - orr r3, ip, r3, lsr #29 - strh r3, [r2, #0x3a] - ldrh r2, [r1, #0x7c] - cmp r0, #0 - biceq r2, r2, #0x20 - orrne r2, r2, #0x20 - strh r2, [r1, #0x7c] - ldrh r2, [r1, #8] - cmp r2, #0x40 - ldreq r2, _06009AD4 ; =0x0380FFF4 - ldreq r3, [r2] - addeq r2, r3, #0x300 - ldreqh r2, [r2, #0x2e] - cmpeq r2, #1 - ldreqh r2, [r1, #0x7c] - ldreq r1, [r3, #0x4ac] - streqh r2, [r1, #0x2e] - ldr r1, _06009AD8 ; =0x048080BC - cmp r0, #0 - ldreqh r0, [r1] - biceq r0, r0, #6 - streqh r0, [r1] - ldrneh r0, [r1] - orrne r0, r0, #6 - strneh r0, [r1] - bl WSetTxTimeStampOffset - mov r0, #0 -_06009ACC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06009AD4: .word 0x0380FFF4 -_06009AD8: .word 0x048080BC - arm_func_end WSetPreambleType - - arm_func_start WSetAuthAlgo -WSetAuthAlgo: ; 0x06009ADC - cmp r0, #1 - ldrls r1, _06009AFC ; =0x0380FFF4 - movhi r0, #5 - ldrls r1, [r1] - addls r1, r1, #0x300 - strlsh r0, [r1, #0x32] - movls r0, #0 - bx lr - .align 2, 0 -_06009AFC: .word 0x0380FFF4 - arm_func_end WSetAuthAlgo - - arm_func_start WSetCCA_ED -WSetCCA_ED: ; 0x06009B00 - stmdb sp!, {r4, lr} - cmp r0, #3 - mov r4, r1 - movhi r0, #5 - bhi _06009B3C - cmp r4, #0x3f - movhi r0, #5 - bhi _06009B3C - mov r1, r0 - mov r0, #0x13 - bl BBP_Write - mov r1, r4 - mov r0, #0x35 - bl BBP_Write - mov r0, #0 -_06009B3C: - ldmia sp!, {r4, lr} - bx lr - arm_func_end WSetCCA_ED - - arm_func_start WSetMainAntenna -WSetMainAntenna: ; 0x06009B44 - cmp r0, #1 - movhi r0, #5 - bxhi lr - ldr r3, _06009BA4 ; =0x0380FFF4 - mov r0, r0, lsl #0x10 - ldr r2, [r3] - mov r1, r0, lsr #0x10 - add r0, r2, #0x300 - ldrh r2, [r0, #0x3a] - mov r1, r1, lsl #0x1f - bic r2, r2, #8 - orr r1, r2, r1, lsr #28 - strh r1, [r0, #0x3a] - ldr r0, [r3] - ldr r1, _06009BA8 ; =0x04808290 - add r0, r0, #0x300 - ldrh r3, [r0, #0x3a] - mov r0, #0 - mov r2, r3, lsl #0x1c - mov r3, r3, lsl #0x1a - mov r2, r2, lsr #0x1f - eor r2, r2, r3, lsr #31 - strh r2, [r1] - bx lr - .align 2, 0 -_06009BA4: .word 0x0380FFF4 -_06009BA8: .word 0x04808290 - arm_func_end WSetMainAntenna - - arm_func_start WSetDiversity -WSetDiversity: ; 0x06009BAC - cmp r0, #1 - cmpls r1, #1 - movhi r0, #5 - bxhi lr - cmp r0, #0 - beq _06009BD0 - cmp r0, #1 - beq _06009BFC - b _06009C24 -_06009BD0: - ldr r2, _06009C78 ; =0x0380FFF4 - mov r1, r1, lsl #0x10 - ldr r3, [r2] - mov r2, r1, lsr #0x10 - add r1, r3, #0x300 - ldrh r3, [r1, #0x3a] - mov r2, r2, lsl #0x1f - bic r3, r3, #0x20 - orr r2, r3, r2, lsr #26 - strh r2, [r1, #0x3a] - b _06009C24 -_06009BFC: - ldr r1, _06009C78 ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x300 - ldrh r2, [r1, #0x2e] - cmp r2, #1 - movne r0, #0xb - bxne lr - ldrh r2, [r1, #0x3a] - bic r2, r2, #0x20 - strh r2, [r1, #0x3a] -_06009C24: - ldr r3, _06009C78 ; =0x0380FFF4 - mov r0, r0, lsl #0x10 - ldr r2, [r3] - mov r1, r0, lsr #0x10 - add r0, r2, #0x300 - ldrh r2, [r0, #0x3a] - mov r1, r1, lsl #0x1f - bic r2, r2, #0x10 - orr r1, r2, r1, lsr #27 - strh r1, [r0, #0x3a] - ldr r0, [r3] - ldr r1, _06009C7C ; =0x04808290 - add r0, r0, #0x300 - ldrh r3, [r0, #0x3a] - mov r0, #0 - mov r2, r3, lsl #0x1c - mov r3, r3, lsl #0x1a - mov r2, r2, lsr #0x1f - eor r2, r2, r3, lsr #31 - strh r2, [r1] - bx lr - .align 2, 0 -_06009C78: .word 0x0380FFF4 -_06009C7C: .word 0x04808290 - arm_func_end WSetDiversity - - arm_func_start WSetBeaconSendRecvIndicate -WSetBeaconSendRecvIndicate: ; 0x06009C80 - cmp r0, #1 - movhi r0, #5 - bxhi lr - ldr r1, _06009CBC ; =0x0380FFF4 - mov r0, r0, lsl #0x10 - ldr r2, [r1] - mov r1, r0, lsr #0x10 - add r0, r2, #0x300 - ldrh r2, [r0, #0x3a] - mov r1, r1, lsl #0x1f - bic r2, r2, #0x40 - orr r1, r2, r1, lsr #25 - strh r1, [r0, #0x3a] - mov r0, #0 - bx lr - .align 2, 0 -_06009CBC: .word 0x0380FFF4 - arm_func_end WSetBeaconSendRecvIndicate - - arm_func_start WSetNullKeyMode -WSetNullKeyMode: ; 0x06009CC0 - cmp r0, #1 - movhi r0, #5 - bxhi lr - ldr r2, _06009D08 ; =0x0380FFF4 - mov r1, r0, lsl #0x10 - ldr r3, [r2] - mov r2, r1, lsr #0x10 - add r1, r3, #0x300 - ldrh r3, [r1, #0x3a] - mov r2, r2, lsl #0x1f - bic r3, r3, #0x80 - orr r2, r3, r2, lsr #24 - strh r2, [r1, #0x3a] - ldreq r1, _06009D0C ; =0x0480802A - ldreqh r0, [r1] - streqh r0, [r1, #-2] - mov r0, #0 - bx lr - .align 2, 0 -_06009D08: .word 0x0380FFF4 -_06009D0C: .word 0x0480802A - arm_func_end WSetNullKeyMode - - arm_func_start WSetBssid -WSetBssid: ; 0x06009D10 - stmdb sp!, {r4, lr} - ldr r1, _06009D68 ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - mov r1, r4 - add r0, r0, #0x3a8 - bl WSetMacAdrs1 - ldr r0, _06009D6C ; =0x04808020 - mov r1, r4 - bl WSetMacAdrs1 - ldrh r0, [r4] - ldr r1, _06009D70 ; =0x048080D0 - tst r0, #1 - ldrneh r0, [r1] - bicne r0, r0, #0x400 - strneh r0, [r1] - ldreqh r0, [r1] - orreq r0, r0, #0x400 - streqh r0, [r1] - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06009D68: .word 0x0380FFF4 -_06009D6C: .word 0x04808020 -_06009D70: .word 0x048080D0 - arm_func_end WSetBssid - - arm_func_start WSetSsid -WSetSsid: ; 0x06009D74 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _06009E80 ; =0x0380FFF4 - mov r8, r0 - ldr r2, [r2] - cmp r8, #0x20 - mov r7, r1 - add r4, r2, #0x344 - mov r6, #0 - movhi r0, #5 - bhi _06009E78 - ldrh r0, [r4, #8] - cmp r0, #0x40 - addeq r0, r2, #0x300 - ldreqh r0, [r0, #0x2e] - cmpeq r0, #1 - bne _06009DD0 - ldrh r0, [r4, #0x1e] - cmp r0, r8 - movne r0, #6 - bne _06009E78 - ldrh r0, [r4, #0x92] - cmp r0, #0 - movne r6, #1 -_06009DD0: - mov r5, #0 - add sb, r4, #0x20 - b _06009DF8 -_06009DDC: - mov r0, r7 - bl WL_ReadByte - mov r1, r0 - add r0, sb, r5 - bl WL_WriteByte - add r7, r7, #1 - add r5, r5, #1 -_06009DF8: - cmp r5, r8 - blo _06009DDC - add sb, r4, #0x20 - mov r7, #0 - b _06009E1C -_06009E0C: - mov r1, r7 - add r0, sb, r5 - bl WL_WriteByte - add r5, r5, #1 -_06009E1C: - cmp r5, #0x20 - blo _06009E0C - strh r8, [r4, #0x1e] - cmp r6, #0 - beq _06009E74 - ldr r1, _06009E80 ; =0x0380FFF4 - ldrh r0, [r4, #0x92] - ldr r1, [r1] - mov r5, #0 - ldr r1, [r1, #0x4ac] - add r4, r4, #0x20 - add r1, r1, #0x26 - add r6, r1, r0 - b _06009E6C -_06009E54: - add r0, r4, r5 - bl WL_ReadByte - mov r1, r0 - add r0, r6, r5 - bl WL_WriteByte - add r5, r5, #1 -_06009E6C: - cmp r5, r8 - blo _06009E54 -_06009E74: - mov r0, #0 -_06009E78: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_06009E80: .word 0x0380FFF4 - arm_func_end WSetSsid - - arm_func_start WSetBeaconPeriod -WSetBeaconPeriod: ; 0x06009E84 - stmdb sp!, {r3, lr} - cmp r0, #0xa - blo _06009E98 - cmp r0, #0x3e8 - bls _06009EA0 -_06009E98: - mov r0, #5 - b _06009ECC -_06009EA0: - ldr r3, _06009ED4 ; =0x0380FFF4 - ldr r2, _06009ED8 ; =0x0480808C - ldr r1, [r3] - add r1, r1, #0x300 - strh r0, [r1, #0xb2] - strh r0, [r2] - ldr r0, [r3] - add r0, r0, #0x300 - ldrh r0, [r0, #0x38] - bl WSetFrameLifeTime - mov r0, #0 -_06009ECC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06009ED4: .word 0x0380FFF4 -_06009ED8: .word 0x0480808C - arm_func_end WSetBeaconPeriod - - arm_func_start WSetDTIMPeriod -WSetDTIMPeriod: ; 0x06009EDC - cmp r0, #1 - blo _06009EEC - cmp r0, #0xff - bls _06009EF4 -_06009EEC: - mov r0, #5 - bx lr -_06009EF4: - ldr r1, _06009F18 ; =0x0380FFF4 - ldr r2, _06009F1C ; =0x0480808E - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0xb8] - strh r0, [r2] - mov r0, #0 - strh r0, [r2, #-6] - bx lr - .align 2, 0 -_06009F18: .word 0x0380FFF4 -_06009F1C: .word 0x0480808E - arm_func_end WSetDTIMPeriod - - arm_func_start WSetListenInterval -WSetListenInterval: ; 0x06009F20 - cmp r0, #1 - blo _06009F30 - cmp r0, #0xff - bls _06009F38 -_06009F30: - mov r0, #5 - bx lr -_06009F38: - ldr r1, _06009F50 ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0xb4] - mov r0, #0 - bx lr - .align 2, 0 -_06009F50: .word 0x0380FFF4 - arm_func_end WSetListenInterval - - arm_func_start WSetDefaultParameters -WSetDefaultParameters: ; 0x06009F54 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r2, sp, #2 - mov r0, #0x36 - mov r1, #6 - bl FLASH_Read - add r2, sp, #0 - mov r0, #0x3c - mov r1, #2 - bl FLASH_Read - add r0, sp, #2 - bl WSetMacAdrs - mov r0, #7 - bl WSetRetryLimit - ldrh r1, [sp] - ldr r0, _0600A088 ; =0x00007FFE - and r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WSetEnableChannel - mov r0, #2 - bl WSetMode - mov r0, #0 - bl WSetRate - mov r0, #0 - bl WSetWepMode - mov r0, #0 - bl WSetWepKeyId - ldr r0, _0600A08C ; =def_WepKey - bl WSetWepKey - mov r0, #0x1f4 - bl WSetBeaconPeriod - mov r0, #0 - bl WSetBeaconType - mov r0, #0 - bl WSetBcSsidResponse - mov r0, #0x10 - bl WSetBeaconLostThreshold - ldr r0, _0600A090 ; =0x0000FFFF - mov r1, #0 - bl WSetActiveZoneTime - ldr r0, _0600A094 ; =def_SsidMask - bl WSetSsidMask - mov r0, #1 - bl WSetPreambleType - mov r0, #0 - bl WSetAuthAlgo - ldr r0, _0600A098 ; =c_RateSet$4351 - bl WSetRateSet - mov r0, #0 - mov r1, #0x1f - bl WSetCCA_ED - mov r0, #5 - bl WSetFrameLifeTime - mov r0, #0 - mov r1, r0 - bl WSetDiversity - mov r0, #0 - bl WSetMainAntenna - mov r0, #0 - bl WSetBeaconSendRecvIndicate - mov r0, #0 - bl WSetNullKeyMode - ldr r1, _0600A09C ; =0x04808044 - ldrh r2, [r1] - ldrh r0, [r1] - ldrh r1, [r1] - add r0, r2, r0, lsl #8 - bl RND_Init - ldr r0, _0600A0A0 ; =0x0380FFF4 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x300 - strh r1, [r0, #0x58] - add sp, sp, #8 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A088: .word 0x00007FFE -_0600A08C: .word def_WepKey -_0600A090: .word 0x0000FFFF -_0600A094: .word def_SsidMask -_0600A098: .word c_RateSet$4351 -_0600A09C: .word 0x04808044 -_0600A0A0: .word 0x0380FFF4 - arm_func_end WSetDefaultParameters - - arm_func_start WSetChannel -WSetChannel: ; 0x0600A0A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - ldr r0, _0600A320 ; =0x0380FFF4 - cmp r1, #0 - ldr r0, [r0] - ldrne sb, _0600A324 ; =FLASH_DirectRead - add r0, r0, #0x300 - ldrh r0, [r0, #0x2c] - ldreq sb, _0600A328 ; =FLASH_Read - mov r2, #1 - tst r0, r2, lsl sl - moveq r0, #5 - beq _0600A314 - ldr r1, _0600A32C ; =0x04808040 - add r0, r2, #0x8000 - ldrh r6, [r1] - strh r0, [r1] - sub r3, r1, #4 - add r1, r1, #0x1d4 -_0600A0F4: - ldrh r2, [r3] - ldrh r0, [r1] - mov r2, r2, asr #8 - cmp r2, #2 - bne _0600A0F4 - cmp r0, #0 - cmpne r0, #9 - bne _0600A0F4 - ldr r5, _0600A320 ; =0x0380FFF4 - ldr r0, [r5] - add r0, r0, #0x300 - strh sl, [r0, #0xbe] - ldr r0, [r5] - add r0, r0, #0x500 - ldrh r1, [r0, #0xf8] - cmp r1, #2 - beq _0600A148 - cmp r1, #3 - beq _0600A218 - cmp r1, #5 - bne _0600A300 -_0600A148: - sub r4, sl, #1 - mov r0, #6 - mul r5, r4, r0 - mov r0, #0 - str r0, [sp, #4] - add r2, sp, #4 - add r0, r5, #0xf2 - mov r1, #3 - mov lr, pc - bx sb - ldr r0, [sp, #4] - bl RF_Write - add r2, sp, #4 - add r0, r5, #0xf5 - mov r1, #3 - mov lr, pc - bx sb - ldr r0, [sp, #4] - bl RF_Write - mov r1, #0 - ldr r0, _0600A320 ; =0x0380FFF4 - str r1, [sp, #4] - ldr r0, [r0] - ldr r0, [r0, #0x604] - tst r0, #0x10000 - beq _0600A1F0 - tst r0, #0x8000 - bne _0600A300 - add r2, sp, #4 - add r0, r4, #0x154 - mov r1, #1 - mov lr, pc - bx sb - ldr r1, _0600A320 ; =0x0380FFF4 - ldr r0, [sp, #4] - ldr r1, [r1] - mov r0, r0, lsl #0x1b - ldr r1, [r1, #0x604] - orr r0, r1, r0, lsr #17 - str r0, [sp, #4] - bl RF_Write - b _0600A300 -_0600A1F0: - add r0, r4, #0x46 - add r2, sp, #4 - add r0, r0, #0x100 - mov r1, #1 - mov lr, pc - bx sb - ldr r1, [sp, #4] - mov r0, #0x1e - bl BBP_Write - b _0600A300 -_0600A218: - ldrh r0, [r0, #0xfc] - mov r8, #0 - add r7, r0, #0xcf - mov r4, r8 - mov fp, #1 - b _0600A274 -_0600A230: - mov r0, r7 - mov r1, fp - add r2, sp, #0 - str r4, [sp, #4] - str r4, [sp] - mov lr, pc - bx sb - add r0, r7, sl - mov r1, #1 - add r2, sp, #4 - mov lr, pc - bx sb - ldr r0, [sp] - ldr r1, [sp, #4] - bl BBP_Write - add r7, r7, #0xf - add r8, r8, #1 -_0600A274: - ldr r0, [r5] - add r0, r0, #0x600 - ldrh r0, [r0] - cmp r8, r0 - blo _0600A230 - mov r8, #0 - ldr r4, _0600A320 ; =0x0380FFF4 - mov r5, r8 - mov fp, #1 - b _0600A2EC -_0600A29C: - str r5, [sp, #4] - mov r0, r7 - mov r1, fp - add r2, sp, #4 - mov lr, pc - bx sb - ldr r1, [sp, #4] - add r0, r7, sl - mov r1, r1, lsl #8 - str r1, [sp, #4] - mov r1, #1 - add r2, sp, #4 - mov lr, pc - bx sb - ldr r0, [sp, #4] - orr r0, r0, #0x50000 - str r0, [sp, #4] - bl RF_Write - add r7, r7, #0xf - add r8, r8, #1 -_0600A2EC: - ldr r0, [r4] - add r0, r0, #0x500 - ldrh r0, [r0, #0xfe] - cmp r8, r0 - blo _0600A29C -_0600A300: - ldr r1, _0600A32C ; =0x04808040 - mov r0, #3 - strh r6, [r1] - strh r0, [r1, #8] - mov r0, #0 -_0600A314: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0600A320: .word 0x0380FFF4 -_0600A324: .word FLASH_DirectRead -_0600A328: .word FLASH_Read -_0600A32C: .word 0x04808040 - arm_func_end WSetChannel - - arm_func_start WSetRateSet -WSetRateSet: ; 0x0600A330 - stmdb sp!, {r3, lr} - ldr r1, _0600A36C ; =0x0380FFF4 - ldrh r2, [r0] - ldr r3, [r1] - add r1, r3, #0x300 - strh r2, [r1, #0xa4] - ldrh r1, [r0, #2] - ldrh r0, [r0] - add r2, r3, #0x3a4 - orr r0, r1, r0 - strh r0, [r2, #2] - bl WSetTxTimeStampOffset - mov r0, #0 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A36C: .word 0x0380FFF4 - arm_func_end WSetRateSet - - arm_func_start WSetTxTimeStampOffset -WSetTxTimeStampOffset: ; 0x0600A370 - stmdb sp!, {r3, lr} - ldr r0, _0600A3E4 ; =0x0000E2E2 - add r2, sp, #0 - str r0, [sp] - mov r0, #0x58 - mov r1, #2 - bl FLASH_Read - ldr r0, [sp] - add r0, r0, #2 - add r0, r0, #0x200 - str r0, [sp] - bl WCalcManRate - cmp r0, #0x14 - bne _0600A3D0 - ldr r1, [sp] - ldr r0, _0600A3E8 ; =0x048080BC - sub r1, r1, #0x61 - sub r1, r1, #0x6100 - str r1, [sp] - ldrh r0, [r0] - tst r0, #2 - subne r0, r1, #0x60 - subne r0, r0, #0x6000 - strne r0, [sp] -_0600A3D0: - ldr r1, [sp] - ldr r0, _0600A3EC ; =0x04808140 - strh r1, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A3E4: .word 0x0000E2E2 -_0600A3E8: .word 0x048080BC -_0600A3EC: .word 0x04808140 - arm_func_end WSetTxTimeStampOffset - - arm_func_start WSetPowerMgtMode -WSetPowerMgtMode: ; 0x0600A3F0 - stmdb sp!, {r3, lr} - ldr r1, _0600A450 ; =0x0380FFF4 - cmp r0, #0 - ldr r2, [r1] - add r1, r2, #0x300 - add r3, r2, #0x31c - strh r0, [r1, #0x52] - ldrneh r0, [r3, #0x12] - cmpne r0, #1 - ldrne r1, _0600A454 ; =0x04808006 - ldrneh r0, [r1] - orrne r0, r0, #0x40 - strneh r0, [r1] - bne _0600A444 - ldr r2, _0600A454 ; =0x04808006 - mov r1, #0 - ldrh r0, [r2] - bic r0, r0, #0x40 - strh r0, [r2] - ldrh r0, [r3, #0x20] - bl WSetActiveZoneTime -_0600A444: - mov r0, #0 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A450: .word 0x0380FFF4 -_0600A454: .word 0x04808006 - arm_func_end WSetPowerMgtMode - - arm_func_start WSetPowerState -WSetPowerState: ; 0x0600A458 - ldr r1, _0600A47C ; =0x0380FFF4 - ldr r2, _0600A480 ; =0x0480803C - ldr r1, [r1] - mov r3, r0, lsr #1 - add r1, r1, #0x300 - strh r3, [r1, #0x54] - strh r0, [r2] - mov r0, #0 - bx lr - .align 2, 0 -_0600A47C: .word 0x0380FFF4 -_0600A480: .word 0x0480803C - arm_func_end WSetPowerState - - arm_func_start WSetForcePowerState -WSetForcePowerState: ; 0x0600A484 - ldr r1, _0600A494 ; =0x04808040 - strh r0, [r1] - mov r0, #0 - bx lr - .align 2, 0 -_0600A494: .word 0x04808040 - arm_func_end WSetForcePowerState - - arm_func_start WShutdown -WShutdown: ; 0x0600A498 - stmdb sp!, {r3, lr} - ldr r0, _0600A500 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r0, [r0, #0xf8] - cmp r0, #2 - bne _0600A4BC - ldr r0, _0600A504 ; =0x0000C008 - bl RF_Write -_0600A4BC: - ldr r1, _0600A508 ; =0x0000601E - ldr r0, _0600A50C ; =0x04808158 - strh r1, [r0] - bl WaitLoop_BbpAccess - ldr r1, _0600A510 ; =0x0480815C - mov r0, #0x1e - ldrh r1, [r1] - orr r1, r1, #0x3f - bl BBP_Write - ldr r2, _0600A514 ; =0x0000800D - ldr r1, _0600A518 ; =0x04808168 - ldr r0, _0600A51C ; =0x04808036 - strh r2, [r1] - mov r1, #1 - strh r1, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A500: .word 0x0380FFF4 -_0600A504: .word 0x0000C008 -_0600A508: .word 0x0000601E -_0600A50C: .word 0x04808158 -_0600A510: .word 0x0480815C -_0600A514: .word 0x0000800D -_0600A518: .word 0x04808168 -_0600A51C: .word 0x04808036 - arm_func_end WShutdown - - arm_func_start WWakeUp -WWakeUp: ; 0x0600A520 - stmdb sp!, {r4, lr} - ldr r2, _0600A5B8 ; =0x04808036 - mov r3, #0 - ldr r1, _0600A5BC ; =TimeoutDummy - mov r0, #0x1f40 - strh r3, [r2] - bl WaitLoop_Waitus - ldr r1, _0600A5C0 ; =0x04808168 - mov r2, #0 - ldr r0, _0600A5C4 ; =0x0380FFF4 - strh r2, [r1] - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r0, [r0, #0xf8] - cmp r0, #2 - beq _0600A56C - cmp r0, #3 - beq _0600A5AC - b _0600A5B0 -_0600A56C: - ldr r0, _0600A5C8 ; =0x00006001 - strh r0, [r1, #-0x10] - bl WaitLoop_BbpAccess - ldr r1, _0600A5CC ; =0x0480815C - mov r0, #1 - ldrh r4, [r1] - and r1, r4, #0x7f - bl BBP_Write - mov r1, r4 - mov r0, #1 - bl BBP_Write - ldr r0, _0600A5D0 ; =0x00009C40 - ldr r1, _0600A5BC ; =TimeoutDummy - bl WaitLoop_Waitus - bl InitRF - b _0600A5B0 -_0600A5AC: - bl InitRF -_0600A5B0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600A5B8: .word 0x04808036 -_0600A5BC: .word TimeoutDummy -_0600A5C0: .word 0x04808168 -_0600A5C4: .word 0x0380FFF4 -_0600A5C8: .word 0x00006001 -_0600A5CC: .word 0x0480815C -_0600A5D0: .word 0x00009C40 - arm_func_end WWakeUp - - arm_func_start WSetFrameLifeTime -WSetFrameLifeTime: ; 0x0600A5D4 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _0600A630 ; =0x0380FFF4 - ldr r1, _0600A634 ; =0x0000FFFF - ldr r2, [r2] - mov r6, r0 - add r5, r2, #0x31c - cmp r6, r1 - streqh r1, [r5, #0x1c] - add r4, r2, #0x344 - streqh r1, [r4, #0x8c] - beq _0600A624 - ldrh r0, [r4, #0x6e] - mov r1, #0x64 - mul r0, r6, r0 - bl __VENEER__u32_div_f - cmp r0, #0x10000 - movhi r0, #5 - bhi _0600A628 - strh r6, [r5, #0x1c] - strh r0, [r4, #0x8c] -_0600A624: - mov r0, #0 -_0600A628: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600A630: .word 0x0380FFF4 -_0600A634: .word 0x0000FFFF - arm_func_end WSetFrameLifeTime - - arm_func_start WDisableTmpttPowerSave -WDisableTmpttPowerSave: ; 0x0600A638 - ldr r1, _0600A67C ; =0x0380FFF4 - mov r2, #1 - ldr r0, [r1] - add r0, r0, #0x300 - strh r2, [r0, #0xea] - ldr r0, [r1] - add r0, r0, #0x400 - ldrh r0, [r0, #0x68] - cmp r0, #0 - bxne lr - ldr r2, _0600A680 ; =0x04808038 - mov r0, #0 - ldrh r1, [r2] - bic r1, r1, #2 - strh r1, [r2] - strh r0, [r2, #0x10] - bx lr - .align 2, 0 -_0600A67C: .word 0x0380FFF4 -_0600A680: .word 0x04808038 - arm_func_end WDisableTmpttPowerSave - - arm_func_start WEnableTmpttPowerSave -WEnableTmpttPowerSave: ; 0x0600A684 - ldr r0, _0600A6AC ; =0x0380FFF4 - ldr r1, _0600A6B0 ; =0x04808038 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x300 - strh r2, [r0, #0xea] - ldrh r0, [r1] - orr r0, r0, #2 - strh r0, [r1] - bx lr - .align 2, 0 -_0600A6AC: .word 0x0380FFF4 -_0600A6B0: .word 0x04808038 - arm_func_end WEnableTmpttPowerSave - - arm_func_start WInitGameInfo -WInitGameInfo: ; 0x0600A6B4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0600A6F4 ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r2] - cmp r5, #0x80 - add r4, r0, #0x344 - movhi r0, #4 - bhi _0600A6EC - mov r0, r1 - ldr r1, [r4, #0x9c] - add r2, r5, #1 - bl __VENEER_MIi_CpuCopy16 - strh r5, [r4, #0xa0] - mov r0, #0 -_0600A6EC: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600A6F4: .word 0x0380FFF4 - arm_func_end WInitGameInfo - - arm_func_start WSetGameInfo -WSetGameInfo: ; 0x0600A6F8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r2, _0600A7A0 ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r2] - mov r8, r1 - cmp r4, #0x80 - add r5, r0, #0x344 - movhi r0, #4 - bhi _0600A798 - cmp r4, #0 - beq _0600A788 - ldrh r0, [r5, #0xa2] - tst r0, #1 - beq _0600A778 - ldr r6, [r5, #0x9c] - mov r1, #0xff - mov r0, r6 - bl WL_WriteByte - add r6, r6, #1 - mov r7, #0 - b _0600A76C -_0600A74C: - mov r0, r8 - bl WL_ReadByte - mov r1, r0 - mov r0, r6 - bl WL_WriteByte - add r6, r6, #1 - add r8, r8, #1 - add r7, r7, #1 -_0600A76C: - cmp r7, r4 - blo _0600A74C - b _0600A788 -_0600A778: - ldr r1, [r5, #0x9c] - mov r0, r8 - add r2, r4, #1 - bl __VENEER_MIi_CpuCopy16 -_0600A788: - strh r4, [r5, #0xa0] - mov r0, #1 - strh r0, [r5, #0xa4] - mov r0, #0 -_0600A798: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_0600A7A0: .word 0x0380FFF4 - arm_func_end WSetGameInfo - - arm_func_start WSetAids -WSetAids: ; 0x0600A7A4 - ldr r3, _0600A7D8 ; =0x0380FFF4 - ldr r2, _0600A7DC ; =0x0480802A - ldr r1, [r3] - add r1, r1, #0x300 - strh r0, [r1, #0xae] - strh r0, [r2] - ldr r1, [r3] - add r1, r1, #0x300 - ldrh r1, [r1, #0x3a] - mov r1, r1, lsl #0x18 - movs r1, r1, lsr #0x1f - strneh r0, [r2, #-2] - bx lr - .align 2, 0 -_0600A7D8: .word 0x0380FFF4 -_0600A7DC: .word 0x0480802A - arm_func_end WSetAids - - arm_func_start WClearAids -WClearAids: ; 0x0600A7E0 - stmdb sp!, {r4, lr} - ldr r1, _0600A834 ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r1] - add r4, r1, #0x344 - strh r0, [r4, #0x6a] - bl WaitLoop_ClrAid - ldr r0, _0600A838 ; =0x0480802A - mov r1, #0 - strh r1, [r0] - ldrh r0, [r4, #0x88] - cmp r0, #0 - beq _0600A82C - bl DeleteTxFrames - ldrh r0, [r4, #0x88] - mov r1, #0x20 - bl CAM_SetStaState - mov r0, #0 - strh r0, [r4, #0x88] -_0600A82C: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600A834: .word 0x0380FFF4 -_0600A838: .word 0x0480802A - arm_func_end WClearAids - - arm_func_start WSetKSID -WSetKSID: ; 0x0600A83C - ldr r0, _0600A858 ; =0x0380FFF4 - ldr r1, _0600A85C ; =0x04808028 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0xae] - strh r0, [r1] - bx lr - .align 2, 0 -_0600A858: .word 0x0380FFF4 -_0600A85C: .word 0x04808028 - arm_func_end WSetKSID - - arm_func_start WClearKSID -WClearKSID: ; 0x0600A860 - stmdb sp!, {r3, lr} - ldr r0, _0600A880 ; =0x04808094 - ldrh r0, [r0] - tst r0, #0x8000 - bne _0600A878 - bl WaitLoop_ClrAid -_0600A878: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A880: .word 0x04808094 - arm_func_end WClearKSID - - arm_func_start WSetStaState -WSetStaState: ; 0x0600A884 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0600A91C ; =0x0380FFF4 - mov r5, r0 - ldr r1, [r1] - add r4, r1, #0x344 - ldrh r0, [r4, #8] - cmp r0, r5 - beq _0600A914 - cmp r0, #0x40 - bne _0600A8B8 - add r0, r1, #0x234 - add r0, r0, #0x400 - bl __VENEER_OS_CancelAlarm -_0600A8B8: - cmp r5, #0 - beq _0600A8D4 - cmp r5, #0x10 - beq _0600A8DC - cmp r5, #0x40 - beq _0600A8F4 - b _0600A910 -_0600A8D4: - bl WShutdown - b _0600A910 -_0600A8DC: - ldr r0, _0600A920 ; =0x04808040 - mov r1, #0 - strh r1, [r0] - bl WStop - bl WWakeUp - b _0600A910 -_0600A8F4: - ldrh r0, [r4, #0xc] - cmp r0, #2 - bne _0600A904 - bl WEnableTmpttPowerSave -_0600A904: - ldr r1, _0600A924 ; =WIntervalTimer - mov r0, #0x64 - bl SetupPeriodicTimeOut -_0600A910: - strh r5, [r4, #8] -_0600A914: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600A91C: .word 0x0380FFF4 -_0600A920: .word 0x04808040 -_0600A924: .word WIntervalTimer - arm_func_end WSetStaState - - arm_func_start WSetMacAdrs1 -WSetMacAdrs1: ; 0x0600A928 - ldrh r2, [r1] - strh r2, [r0] - ldrh r2, [r1, #2] - strh r2, [r0, #2] - ldrh r1, [r1, #4] - strh r1, [r0, #4] - bx lr - arm_func_end WSetMacAdrs1 - - arm_func_start WSetMacAdrs2 -WSetMacAdrs2: ; 0x0600A944 - ldrh r3, [r1] - strh r3, [r0] - ldrh r3, [r1, #2] - strh r3, [r0, #2] - ldrh r1, [r1, #4] - strh r1, [r0, #4] - ldrh r1, [r2] - strh r1, [r0, #6] - ldrh r1, [r2, #2] - strh r1, [r0, #8] - ldrh r1, [r2, #4] - strh r1, [r0, #0xa] - bx lr - arm_func_end WSetMacAdrs2 - - arm_func_start WSetMacAdrs3 -WSetMacAdrs3: ; 0x0600A978 - ldrh ip, [r1] - strh ip, [r0] - ldrh ip, [r1, #2] - strh ip, [r0, #2] - ldrh r1, [r1, #4] - strh r1, [r0, #4] - ldrh r1, [r2] - strh r1, [r0, #6] - ldrh r1, [r2, #2] - strh r1, [r0, #8] - ldrh r1, [r2, #4] - strh r1, [r0, #0xa] - ldrh r1, [r3] - strh r1, [r0, #0xc] - ldrh r1, [r3, #2] - strh r1, [r0, #0xe] - ldrh r1, [r3, #4] - strh r1, [r0, #0x10] - bx lr - arm_func_end WSetMacAdrs3 - - arm_func_start WInitCounter -WInitCounter: ; 0x0600A9C4 - stmdb sp!, {r3, lr} - bl WUpdateCounter - ldr r1, _0600A9F0 ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r1] - mov r2, #0xb4 - add r1, r1, #0x13c - add r1, r1, #0x400 - bl __VENEER_MIi_CpuClear32 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600A9F0: .word 0x0380FFF4 - arm_func_end WInitCounter - - arm_func_start __VENEER_MIi_CpuClear32 -__VENEER_MIi_CpuClear32: ; 0x0600A9F4 - ldr pc, _0600A9F8 ; =MIi_CpuClear32 - .align 2, 0 -_0600A9F8: .word MIi_CpuClear32 - arm_func_end __VENEER_MIi_CpuClear32 - - arm_func_start WUpdateCounter -WUpdateCounter: ; 0x0600A9FC - ldr r1, _0600ABEC ; =0x0380FFF4 - ldr r0, _0600ABF0 ; =0x048081B0 - ldr r1, [r1] - ldrh r2, [r0] - ldr r3, [r1, #0x58c] - and r2, r2, #0xff - add r2, r3, r2 - str r2, [r1, #0x58c] - ldrh ip, [r0, #2] - ldr r3, [r1, #0x588] - and r2, ip, #0xff - add r3, r3, ip, asr #8 - str r3, [r1, #0x588] - ldr r3, [r1, #0x598] - add r2, r3, r2 - str r2, [r1, #0x598] - ldrh ip, [r0, #4] - ldr r3, [r1, #0x594] - and r2, ip, #0xff - add r3, r3, ip, asr #8 - str r3, [r1, #0x594] - ldr r3, [r1, #0x590] - add r2, r3, r2 - str r2, [r1, #0x590] - ldrh ip, [r0, #6] - ldr r3, [r1, #0x59c] - and r2, ip, #0xff - add r3, r3, ip, asr #8 - str r3, [r1, #0x59c] - ldr r3, [r1, #0x574] - add r2, r3, r2 - str r2, [r1, #0x574] - ldrh r2, [r0, #8] - ldr r3, [r1, #0x584] - and r2, r2, #0xff - add r2, r3, r2 - str r2, [r1, #0x584] - ldrh r2, [r0, #0xa] - ldr r3, [r1, #0x55c] - and r2, r2, #0xff - add r2, r3, r2 - str r2, [r1, #0x55c] - ldrh ip, [r0, #0xc] - ldr r3, [r1, #0x56c] - and r2, ip, #0xff - add r3, r3, ip, asr #8 - str r3, [r1, #0x56c] - ldr r3, [r1, #0x580] - add r2, r3, r2 - str r2, [r1, #0x580] - ldrh ip, [r0, #0xe] - ldr r3, [r1, #0x578] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x578] - ldr r2, [r1, #0x57c] - add r2, r2, ip, asr #8 - str r2, [r1, #0x57c] - ldrh r2, [r0, #0x10] - ldr r3, [r1, #0x548] - and r2, r2, #0xff - add r2, r3, r2 - str r2, [r1, #0x548] - ldrh r3, [r0, #0x20] - ldr r2, [r1, #0x5b4] - add r2, r2, r3, asr #8 - str r2, [r1, #0x5b4] - ldrh ip, [r0, #0x22] - ldr r3, [r1, #0x5b8] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x5b8] - ldr r2, [r1, #0x5bc] - add r2, r2, ip, asr #8 - str r2, [r1, #0x5bc] - ldrh ip, [r0, #0x24] - ldr r3, [r1, #0x5c0] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x5c0] - ldr r2, [r1, #0x5c4] - add r2, r2, ip, asr #8 - str r2, [r1, #0x5c4] - ldrh ip, [r0, #0x26] - ldr r3, [r1, #0x5c8] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x5c8] - ldr r2, [r1, #0x5cc] - add r2, r2, ip, asr #8 - str r2, [r1, #0x5cc] - ldrh ip, [r0, #0x28] - ldr r3, [r1, #0x5d0] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x5d0] - ldr r2, [r1, #0x5d4] - add r2, r2, ip, asr #8 - str r2, [r1, #0x5d4] - ldrh ip, [r0, #0x2a] - ldr r3, [r1, #0x5d8] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x5d8] - ldr r2, [r1, #0x5dc] - add r2, r2, ip, asr #8 - str r2, [r1, #0x5dc] - ldrh ip, [r0, #0x2c] - ldr r3, [r1, #0x5e0] - and r2, ip, #0xff - add r2, r3, r2 - str r2, [r1, #0x5e0] - ldr r2, [r1, #0x5e4] - add r2, r2, ip, asr #8 - str r2, [r1, #0x5e4] - ldrh r3, [r0, #0x2e] - ldr r2, [r1, #0x5e8] - and r0, r3, #0xff - add r0, r2, r0 - str r0, [r1, #0x5e8] - ldr r0, [r1, #0x5ec] - add r0, r0, r3, asr #8 - str r0, [r1, #0x5ec] - bx lr - .align 2, 0 -_0600ABEC: .word 0x0380FFF4 -_0600ABF0: .word 0x048081B0 - arm_func_end WUpdateCounter - - arm_func_start WCheckSSID -WCheckSSID: ; 0x0600ABF4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r2, _0600ACC0 ; =0x0380FFF4 - mov sb, r0 - ldr r0, [r2] - mov r8, r1 - cmp sb, #0x20 - add r2, r0, #0x344 - movhi r0, #0 - bhi _0600ACB8 - ldrh r1, [r2, #0x1e] - cmp r1, #0 - moveq r0, #1 - beq _0600ACB8 - add r0, r0, #0x400 - ldrh r0, [r0, #4] - cmp r0, #0x13 - bne _0600AC4C - cmp sb, r1 - movlo r0, #0 - blo _0600ACB8 - mov sb, r1 - b _0600AC58 -_0600AC4C: - cmp sb, r1 - movne r0, #0 - bne _0600ACB8 -_0600AC58: - add r5, r2, #0x20 - add r6, r2, #0x40 - mov r7, #0 - b _0600ACAC -_0600AC68: - mov r0, r6 - bl WL_ReadByte - mov r4, r0 - mov r0, r8 - add r6, r6, #1 - bl WL_ReadByte - mov sl, r0 - mov r0, r5 - add r8, r8, #1 - bl WL_ReadByte - orr r1, sl, r4 - orr r0, r0, r4 - cmp r1, r0 - add r5, r5, #1 - movne r0, #0 - bne _0600ACB8 - add r7, r7, #1 -_0600ACAC: - cmp r7, sb - blo _0600AC68 - mov r0, #1 -_0600ACB8: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_0600ACC0: .word 0x0380FFF4 - arm_func_end WCheckSSID - - arm_func_start MatchMacAdrs -MatchMacAdrs: ; 0x0600ACC4 - ldrh r3, [r0, #4] - ldrh r2, [r1, #4] - cmp r3, r2 - ldreqh r3, [r0, #2] - ldreqh r2, [r1, #2] - cmpeq r3, r2 - ldreqh r2, [r0] - ldreqh r0, [r1] - cmpeq r2, r0 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end MatchMacAdrs - - arm_func_start CheckEnableChannel -CheckEnableChannel: ; 0x0600ACF4 - ldr r1, _0600AD10 ; =0x0380FFF4 - mov r2, #1 - ldr r1, [r1] - add r1, r1, #0x300 - ldrh r1, [r1, #0x2c] - and r0, r1, r2, lsl r0 - bx lr - .align 2, 0 -_0600AD10: .word 0x0380FFF4 - arm_func_end CheckEnableChannel - - arm_func_start WElement2RateSet -WElement2RateSet: ; 0x0600AD14 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r1 - mov r1, #0 - mov r4, r0 - strh r1, [sb] - add r0, r4, #1 - strh r1, [sb, #2] - bl WL_ReadByte - add r6, r4, #2 - ldr r5, _0600ADC4 ; =RateElement2Bit - mov r8, r0 - mov r7, #0 - mov r4, #1 - b _0600ADB4 -_0600AD4C: - add r0, r6, r7 - bl WL_ReadByte - and r1, r0, #0x7f - sub r1, r1, #1 - cmp r1, #0x78 - bhs _0600AD94 - mov r1, r1, lsl #1 - ldrh r2, [r5, r1] - cmp r2, #0xff - beq _0600AD94 - ldrh r1, [sb, #2] - tst r0, #0x80 - orr r0, r1, r4, lsl r2 - strh r0, [sb, #2] - ldrneh r0, [sb] - orrne r0, r0, r4, lsl r2 - strneh r0, [sb] - b _0600ADB0 -_0600AD94: - ldrh r1, [sb, #2] - tst r0, #0x80 - orr r0, r1, #0x8000 - strh r0, [sb, #2] - ldrneh r0, [sb] - orrne r0, r0, #0x8000 - strneh r0, [sb] -_0600ADB0: - add r7, r7, #1 -_0600ADB4: - cmp r7, r8 - blo _0600AD4C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_0600ADC4: .word RateElement2Bit - arm_func_end WElement2RateSet - - arm_func_start WCalcManRate -WCalcManRate: ; 0x0600ADC8 - ldr r0, _0600AE10 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x30] - cmp r1, #0 - beq _0600ADEC - cmp r1, #1 - beq _0600AE00 - b _0600AE08 -_0600ADEC: - ldrh r0, [r0, #0xa4] - tst r0, #1 - beq _0600AE08 - mov r0, #0xa - bx lr -_0600AE00: - mov r0, #0xa - bx lr -_0600AE08: - mov r0, #0x14 - bx lr - .align 2, 0 -_0600AE10: .word 0x0380FFF4 - arm_func_end WCalcManRate - - arm_func_start WStart -WStart: ; 0x0600AE14 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r0, _0600B180 ; =0x0380FFF4 - ldr r0, [r0] - add r6, r0, #0x344 - add r4, r0, #0x31c - bl WStop - ldr r1, _0600B184 ; =0x04808044 - ldrh r2, [r1] - ldrh r0, [r1] - ldrh r1, [r1] - add r0, r2, r0, lsl #8 - bl RND_Init - mov r0, #1 - strh r0, [r6, #0x7c] - ldrh r0, [r4, #0x1e] - ldr r2, _0600B188 ; =0x04808032 - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1f - cmp r0, #1 - ldreqh r0, [r6, #0x7c] - ldr r1, _0600B18C ; =0x04808134 - orreq r0, r0, #0x20 - streqh r0, [r6, #0x7c] - ldrh r0, [r4, #0x18] - mov r4, #0 - cmp r0, #0 - ldrneh r0, [r6, #0x7c] - mov r3, #0x8000 - orrne r0, r0, #0x10 - strneh r0, [r6, #0x7c] - strh r4, [r6, #0x12] - ldr r0, _0600B190 ; =0x0000FFFF - strh r3, [r2] - strh r0, [r1] - strh r4, [r2, #-8] - sub r0, r1, #0x10c - strh r4, [r0] - mov r0, #0xf - strh r0, [r1, #-0xfc] - bl InitCAM - bl InitApList - bl InitTxCtrl - bl InitRxCtrl - ldr r2, _0600B194 ; =0x04808030 - mov r1, #0x8000 - strh r1, [r2] - ldr r0, _0600B190 ; =0x0000FFFF - ldr r1, _0600B198 ; =0x048081AE - strh r0, [r2, #-0x20] - sub r2, r0, #0xe000 - ldr r0, _0600B180 ; =0x0380FFF4 - strh r2, [r1] - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #8 - movne r0, #0x400 - strneh r0, [r1, #-4] - moveq r0, r4 - streqh r0, [r1, #-4] - ldr r2, _0600B19C ; =0x04808008 - mov r3, #0 - strh r3, [r2] - strh r3, [r2, #2] - ldrh r0, [r6, #0xc] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0600B144 -_0600AF28: ; jump table - b _0600AF3C ; case 0 - b _0600AF6C ; case 1 - b _0600B050 ; case 2 - b _0600B0D0 ; case 3 - b _0600B128 ; case 4 -_0600AF3C: - ldr r0, _0600B190 ; =0x0000FFFF - mov r1, #0x3f - strh r1, [r2, #0xa] - strh r0, [r2, #0xc8] - mov r0, #8 - strh r0, [r2, #0xd8] - strh r3, [r2] - strh r3, [r2, #2] - strh r3, [r2, #0xe0] - mov r0, #1 - strh r0, [r2, #-4] - b _0600B144 -_0600AF6C: - ldr r3, _0600B1A0 ; =0x0000703F - ldr r0, _0600B1A4 ; =0x00001FFF - ldr r1, _0600B198 ; =0x048081AE - strh r3, [r2, #0xa] - strh r0, [r1] - rsb r0, r0, #0x2300 - strh r0, [r1, #-0xde] - mov r0, #0xd - strh r0, [r1, #-0xce] - mov r0, #0xe000 - strh r0, [r2] - mov r0, #1 - strh r0, [r2, #-4] - ldrh r0, [r1, #-0xb6] - add r7, sp, #0 - strh r0, [r7] - ldrh r0, [r1, #-0xb4] - mov r4, #0 - strh r0, [r7, #2] - ldrh r2, [r1, #-0xb2] - ldr r0, [sp] - strh r2, [r7, #4] - ldrh r1, [r1, #-0xb0] - mov r3, r4 - strh r1, [r7, #6] - ldrh r2, [r6, #0x6e] - ldr r1, [sp, #4] - mov r5, r2, lsl #0xa - mov r2, r5 - bl __VENEER__ll_udiv - adds r3, r0, #1 - umull r2, r0, r3, r5 - mla r0, r3, r4, r0 - adc r1, r1, #0 - mla r0, r1, r5, r0 - str r0, [sp, #4] - ldrh r0, [r7, #6] - ldr r3, _0600B1A8 ; =0x048080F6 - str r2, [sp] - strh r0, [r3] - ldrh r0, [r7, #4] - mov r1, #1 - strh r0, [r3, #-2] - ldrh r2, [r7, #2] - mov r0, #0x40 - strh r2, [r3, #-4] - ldrh r2, [r7] - orr r2, r2, #1 - strh r2, [r3, #-6] - strh r1, [r3, #-0xe] - strh r1, [r3, #-0xc] - bl WSetStaState - bl StartBeaconFrame - ldr r0, _0600B1AC ; =0x048080AE - mov r1, #2 - strh r1, [r0] - b _0600B144 -_0600B050: - ldr r1, _0600B1B0 ; =0x0000E0BF - ldr r0, _0600B180 ; =0x0380FFF4 - strh r1, [r2, #0xa] - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #0x20 - beq _0600B08C - ldrh r0, [r2, #0xa] - ldr r1, _0600B1B4 ; =0x048081AA - orr r0, r0, #0x40 - strh r0, [r2, #0xa] - ldrh r0, [r1] - orr r0, r0, #0x68 - strh r0, [r1] -_0600B08C: - ldrh r0, [r6, #0x64] - tst r0, #1 - ldr r0, _0600B1B8 ; =0x048080D0 - ldrne r1, _0600B1BC ; =0x00000581 - strneh r1, [r0] - ldreq r1, _0600B1C0 ; =0x00000181 - streqh r1, [r0] - ldr r2, _0600B1C4 ; =0x048080E0 - mov r0, #0xb - strh r0, [r2] - mov r1, #1 - strh r1, [r2, #-0xdc] - strh r1, [r2, #8] - mov r0, #0x20 - strh r1, [r2, #0xa] - bl WSetStaState - b _0600B144 -_0600B0D0: - ldr r1, _0600B190 ; =0x0000FFFF - strh r1, [r2, #8] - sub r0, r1, #0x3fc0 - strh r0, [r2, #0xa] - ldrh r0, [r6, #0x64] - tst r0, #1 - rsbne r0, r1, #0x10400 - strneh r0, [r2, #0xc8] - moveq r0, #1 - streqh r0, [r2, #0xc8] - ldr r2, _0600B1C4 ; =0x048080E0 - mov r0, #0xb - strh r0, [r2] - mov r0, #1 - strh r0, [r2, #-0xdc] - strh r0, [r2, #8] - strh r0, [r2, #0xa] - mov r1, #0 - mov r0, #0x20 - strh r1, [r2, #-0x98] - bl WSetStaState - b _0600B144 -_0600B128: - ldr r0, _0600B198 ; =0x048081AE - strh r3, [r2, #0xa] - strh r3, [r0] - mov r1, #1 - mov r0, #0x20 - strh r1, [r2, #-4] - bl WSetStaState -_0600B144: - ldr r0, _0600B1C8 ; =0x04808048 - mov r1, #0 - strh r1, [r0] - bl WDisableTmpttPowerSave - ldr r1, _0600B1AC ; =0x048080AE - mov r0, #2 - strh r0, [r1] - ldrh r1, [r6, #0xe] - cmp r1, #1 - bne _0600B170 - bl WSetPowerState -_0600B170: - bl WaitLoop_Rxpe - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600B180: .word 0x0380FFF4 -_0600B184: .word 0x04808044 -_0600B188: .word 0x04808032 -_0600B18C: .word 0x04808134 -_0600B190: .word 0x0000FFFF -_0600B194: .word 0x04808030 -_0600B198: .word 0x048081AE -_0600B19C: .word 0x04808008 -_0600B1A0: .word 0x0000703F -_0600B1A4: .word 0x00001FFF -_0600B1A8: .word 0x048080F6 -_0600B1AC: .word 0x048080AE -_0600B1B0: .word 0x0000E0BF -_0600B1B4: .word 0x048081AA -_0600B1B8: .word 0x048080D0 -_0600B1BC: .word 0x00000581 -_0600B1C0: .word 0x00000181 -_0600B1C4: .word 0x048080E0 -_0600B1C8: .word 0x04808048 - arm_func_end WStart - - arm_func_start __VENEER__ll_udiv -__VENEER__ll_udiv: ; 0x0600B1CC - ldr pc, _0600B1D0 ; =_ll_udiv - .align 2, 0 -_0600B1D0: .word _ll_udiv - arm_func_end __VENEER__ll_udiv - - arm_func_start WStop -WStop: ; 0x0600B1D4 - stmdb sp!, {r4, lr} - ldr r0, _0600B264 ; =0x0380FFF4 - ldr r1, [r0] - add r0, r1, #0x208 - add r0, r0, #0x400 - add r4, r1, #0x344 - bl __VENEER_OS_CancelAlarm - ldr r0, _0600B264 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x234 - add r0, r0, #0x400 - bl __VENEER_OS_CancelAlarm - mov r0, #0x20 - bl WSetStaState - mov r1, #0 - strh r1, [r4, #0xa4] - ldr r0, _0600B268 ; =0x04808012 - strh r1, [r4, #0x12] - strh r1, [r0] - strh r1, [r0, #-0xe] - strh r1, [r0, #0xd8] - strh r1, [r0, #0xd6] - strh r1, [r0, #-0xa] - strh r1, [r0, #-8] - ldrh r0, [r4, #0xc] - cmp r0, #1 - bne _0600B244 - bl StopBeaconFrame -_0600B244: - ldr r1, _0600B26C ; =0x0000FFFF - ldr r0, _0600B270 ; =0x048080AC - strh r1, [r0] - strh r1, [r0, #8] - bl DeleteAllTxFrames - bl ReleaseAllWlHeapBuf - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600B264: .word 0x0380FFF4 -_0600B268: .word 0x04808012 -_0600B26C: .word 0x0000FFFF -_0600B270: .word 0x048080AC - arm_func_end WStop - - arm_func_start BBP_Read -BBP_Read: ; 0x0600B274 - stmdb sp!, {r3, lr} - ldr r1, _0600B298 ; =0x04808158 - orr r0, r0, #0x6000 - strh r0, [r1] - bl WaitLoop_BbpAccess - ldr r0, _0600B29C ; =0x0480815C - ldrh r0, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600B298: .word 0x04808158 -_0600B29C: .word 0x0480815C - arm_func_end BBP_Read - - arm_func_start BBP_Write -BBP_Write: ; 0x0600B2A0 - stmdb sp!, {r3, lr} - ldr r2, _0600B2CC ; =0x0480815A - orr r0, r0, #0x5000 - strh r1, [r2] - strh r0, [r2, #-2] - bl WaitLoop_BbpAccess - cmp r0, #0 - mvnne r0, #0 - moveq r0, #0 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600B2CC: .word 0x0480815A - arm_func_end BBP_Write - - arm_func_start RF_Write -RF_Write: ; 0x0600B2D0 - ldr r2, _0600B2E8 ; =0x0480817E - ldr ip, _0600B2EC ; =WaitLoop_RfAccess - strh r0, [r2] - mov r1, r0, lsr #0x10 - strh r1, [r2, #-2] - bx ip - .align 2, 0 -_0600B2E8: .word 0x0480817E -_0600B2EC: .word WaitLoop_RfAccess - arm_func_end RF_Write - - arm_func_start CalcBbpCRC -CalcBbpCRC: ; 0x0600B2F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, #0 - str r8, [sp] - mov r7, r8 - mov r6, #0x64 - add r4, sp, #0 - mov r5, #1 -_0600B310: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl FLASH_Read - cmp r7, #1 - ldreq r0, [sp] - mov r1, r8 - andeq r0, r0, #0x80 - streq r0, [sp] - ldr r0, [sp] - and r0, r0, #0xff - bl calc_NextCRC - add r7, r7, #1 - mov r8, r0 - cmp r7, #0x69 - add r6, r6, #1 - blo _0600B310 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, lr} - bx lr - arm_func_end CalcBbpCRC - - arm_func_start WConfigDevice -WConfigDevice: ; 0x0600B360 - stmdb sp!, {r4, lr} - ldr r1, _0600B3CC ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r1] - mov r2, #0x10 - add r1, r1, #0x1f8 - add r4, r1, #0x400 - mov r1, r4 - bl __VENEER_MIi_CpuClear16 - mov r2, r4 - mov r0, #0x40 - mov r1, #1 - bl FLASH_Read - add r2, r4, #2 - mov r0, #0x41 - mov r1, #1 - bl FLASH_Read - add r2, r4, #4 - mov r0, #0x42 - mov r1, #1 - bl FLASH_Read - add r2, r4, #6 - mov r0, #0x43 - mov r1, #1 - bl FLASH_Read - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600B3CC: .word 0x0380FFF4 - arm_func_end WConfigDevice - - arm_func_start InitMac -InitMac: ; 0x0600B3D0 - ldr r2, _0600B404 ; =macInitRegs - mov r3, #0 -_0600B3D8: - mov r0, r3, lsl #2 - ldrh r0, [r2, r0] - add r1, r2, r3, lsl #2 - add r0, r0, #0x4800000 - add r3, r3, #1 - ldrh r1, [r1, #2] - add r0, r0, #0x8000 - strh r1, [r0] - cmp r3, #0x19 - blo _0600B3D8 - bx lr - .align 2, 0 -_0600B404: .word macInitRegs - arm_func_end InitMac - - arm_func_start InitBaseBand -InitBaseBand: ; 0x0600B408 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _0600B46C ; =0x04808160 - mov r1, #0x100 - strh r1, [r0] - mov r6, #0 - str r6, [sp] - mov r7, #0x64 - add r4, sp, #0 - mov r5, #1 -_0600B42C: - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl FLASH_Read - ldr r1, [sp] - mov r0, r6 - bl BBP_Write - add r6, r6, #1 - cmp r6, #0x69 - add r7, r7, #1 - blo _0600B42C - mov r0, #0x5a - mov r1, #2 - bl BBP_Write - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600B46C: .word 0x04808160 - arm_func_end InitBaseBand - - arm_func_start InitRF -InitRF: ; 0x0600B470 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - ldr r0, _0600B5EC ; =0x0380FFF4 - ldr r5, _0600B5F0 ; =macTxRxRegAdrs - ldr r0, [r0] - mov r8, #0 - add r0, r0, #0x1f8 - str r8, [sp] - add r4, r0, #0x400 - add r6, sp, #0 - mov r7, #2 -_0600B49C: - mov r0, r8, lsl #1 - mov r1, r7 - mov r2, r6 - add r0, r0, #0x44 - bl FLASH_Read - mov r0, r8, lsl #1 - ldrh r0, [r5, r0] - add r8, r8, #1 - add r0, r0, #0x4800000 - ldr r1, [sp] - add r0, r0, #0x8000 - strh r1, [r0] - cmp r8, #0x10 - blo _0600B49C - ldrh r1, [r4, #2] - ldr r0, _0600B5F4 ; =0x04808184 - mov r2, r1, lsr #7 - mov r1, r2, lsl #8 - str r1, [sp, #4] - ldrh r1, [r4, #2] - mov r7, #0xce - and r1, r1, #0x7f - orr r1, r1, r2, lsl #8 - str r1, [sp, #4] - strh r1, [r0] - ldrh r0, [r4, #2] - ldrh r1, [r4] - and r0, r0, #0x7f - add r2, r0, #7 - mov r0, r2, asr #2 - add r0, r2, r0, lsr #29 - ldrh r8, [r4, #4] - cmp r1, #3 - mov r6, r0, asr #3 - bne _0600B58C - add r0, r8, #0xce - add r2, r4, #8 - mov r1, #1 - bl FLASH_Read - mov sb, #0 - add r4, sp, #4 - mov r6, sb - mov r5, #1 - b _0600B580 -_0600B54C: - str r6, [sp, #4] - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl FLASH_Read - mov r0, sb, lsl #8 - ldr r1, [sp, #4] - add r0, r0, #0x50000 - orr r0, r1, r0 - str r0, [sp, #4] - bl RF_Write - add sb, sb, #1 - add r7, r7, #1 -_0600B580: - cmp sb, r8 - blo _0600B54C - b _0600B5E0 -_0600B58C: - mov r0, #0 - str r0, [sp, #4] - add r5, sp, #4 - b _0600B5D8 -_0600B59C: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl FLASH_Read - ldr r0, [sp, #4] - bl RF_Write - ldrh r0, [r4] - sub r8, r8, #1 - cmp r0, #2 - ldreq r1, [sp, #4] - add r7, r7, r6 - moveq r0, r1, lsr #0x12 - cmpeq r0, #9 - biceq r0, r1, #0x7c00 - streq r0, [r4, #0xc] -_0600B5D8: - cmp r8, #0 - bne _0600B59C -_0600B5E0: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_0600B5EC: .word 0x0380FFF4 -_0600B5F0: .word macTxRxRegAdrs -_0600B5F4: .word 0x04808184 - arm_func_end InitRF - - arm_func_start InitializeAlarm -InitializeAlarm: ; 0x0600B5F8 - stmdb sp!, {r4, lr} - ldr r0, _0600B648 ; =0x0380FFF4 - ldr r4, [r0] - bl __VENEER_OS_IsAlarmAvailable - cmp r0, #0 - addeq r0, r4, #0x300 - ldreqh r1, [r0, #0x3e] - orreq r1, r1, #0x40 - streqh r1, [r0, #0x3e] - beq _0600B640 - add r0, r4, #0x208 - add r0, r0, #0x400 - bl __VENEER_OS_CreateAlarm - add r0, r4, #0x234 - add r0, r0, #0x400 - bl __VENEER_OS_CreateAlarm - add r0, r4, #0x660 - bl __VENEER_OS_CreateAlarm -_0600B640: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600B648: .word 0x0380FFF4 - arm_func_end InitializeAlarm - - arm_func_start __VENEER_OS_IsAlarmAvailable -__VENEER_OS_IsAlarmAvailable: ; 0x0600B64C - ldr pc, _0600B650 ; =OS_IsAlarmAvailable - .align 2, 0 -_0600B650: .word OS_IsAlarmAvailable - arm_func_end __VENEER_OS_IsAlarmAvailable - - arm_func_start TimeoutDummy -TimeoutDummy: ; 0x0600B654 - mov r1, #0 - str r1, [r0] - bx lr - arm_func_end TimeoutDummy - - arm_func_start WWaitus -WWaitus: ; 0x0600B660 - ldr ip, _0600B66C ; =WaitLoop_Waitus - ldr r1, _0600B670 ; =TimeoutDummy - bx ip - .align 2, 0 -_0600B66C: .word WaitLoop_Waitus -_0600B670: .word TimeoutDummy - arm_func_end WWaitus - - arm_func_start SetupPeriodicTimeOut -SetupPeriodicTimeOut: ; 0x0600B674 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr r2, _0600B6FC ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - add r0, r0, #0x208 - add r0, r0, #0x400 - bl __VENEER_OS_CancelAlarm - ldr r0, _0600B700 ; =0x000082EA - mov r1, #0 - umull r3, r2, r5, r0 - mla r2, r5, r1, r2 - mov r5, r1 - mla r2, r5, r0, r2 - mov r6, r3, lsr #6 - orr r6, r6, r2, lsl #26 - bl __VENEER_OS_GetTick - adds r0, r6, r0 - adc r2, r1, #0 - mov r1, r0 - str r4, [sp, #4] - mov r0, r5 - str r0, [sp, #8] - ldr r0, _0600B6FC ; =0x0380FFF4 - str r5, [sp] - ldr r0, [r0] - mov r3, r6 - add r0, r0, #0x208 - add r0, r0, #0x400 - bl __VENEER_OS_SetPeriodicAlarm - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600B6FC: .word 0x0380FFF4 -_0600B700: .word 0x000082EA - arm_func_end SetupPeriodicTimeOut - - arm_func_start __VENEER_OS_SetPeriodicAlarm -__VENEER_OS_SetPeriodicAlarm: ; 0x0600B704 - ldr pc, _0600B708 ; =OS_SetPeriodicAlarm - .align 2, 0 -_0600B708: .word OS_SetPeriodicAlarm - arm_func_end __VENEER_OS_SetPeriodicAlarm - - arm_func_start ClearPeriodicTimeOut -ClearPeriodicTimeOut: ; 0x0600B70C - ldr r0, _0600B724 ; =0x0380FFF4 - ldr ip, _0600B728 ; =OS_CancelAlarm - ldr r0, [r0] - add r0, r0, #0x208 - add r0, r0, #0x400 - bx ip - .align 2, 0 -_0600B724: .word 0x0380FFF4 -_0600B728: .word OS_CancelAlarm - arm_func_end ClearPeriodicTimeOut - - arm_func_start WIntervalTimer -WIntervalTimer: ; 0x0600B72C - stmdb sp!, {r4, lr} - ldr r1, _0600B7A8 ; =0x0380FFF4 - mov r0, #1 - ldr r4, [r1] - mov r1, #0xa - ldr r2, [r4, #0x3ec] - add r2, r2, #1 - str r2, [r4, #0x3ec] - bl AddTask - mov r0, #2 - mov r1, #0x12 - bl AddTask - mov r0, #1 - mov r1, #0x11 - bl AddTask - add r0, r4, #0x100 - ldrh r0, [r0, #0xfc] - cmp r0, #0 - beq _0600B784 - mov r0, #2 - mov r1, #0x13 - bl AddTask -_0600B784: - add r0, r4, #0x300 - ldrh r0, [r0, #0xf4] - cmp r0, #0 - beq _0600B7A0 - mov r0, #2 - mov r1, #0x15 - bl AddTask -_0600B7A0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600B7A8: .word 0x0380FFF4 - arm_func_end WIntervalTimer - - arm_func_start SetupTimeOut -SetupTimeOut: ; 0x0600B7AC - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0600B814 ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - add r0, r0, #0x234 - add r0, r0, #0x400 - bl __VENEER_OS_CancelAlarm - mov r3, #0 - ldr r0, _0600B818 ; =0x000082EA - mov r1, r3 - umull r2, ip, r5, r0 - mla ip, r5, r3, ip - mla ip, r1, r0, ip - mov r1, r2, lsr #6 - str r3, [sp] - ldr r0, _0600B814 ; =0x0380FFF4 - mov r3, r4 - ldr r0, [r0] - mov r2, ip, lsr #6 - add r0, r0, #0x234 - add r0, r0, #0x400 - orr r1, r1, ip, lsl #26 - bl __VENEER_OS_SetAlarm - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600B814: .word 0x0380FFF4 -_0600B818: .word 0x000082EA - arm_func_end SetupTimeOut - - arm_func_start SetupUsTimeOut -SetupUsTimeOut: ; 0x0600B81C - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0600B898 ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - add r0, r0, #0x234 - add r0, r0, #0x400 - bl __VENEER_OS_CancelAlarm - ldr r0, _0600B89C ; =0x000082EA - mov r3, #0 - umull ip, r2, r5, r0 - mla r2, r5, r3, r2 - mov r1, r3 - mla r2, r1, r0, r2 - mov r0, ip, lsr #6 - mov r1, r2, lsr #6 - orr r0, r0, r2, lsl #26 - mov r2, #0x3e8 - bl __VENEER__ll_udiv - mov r2, r1 - mov r1, r0 - mov r0, #0 - str r0, [sp] - ldr r0, _0600B898 ; =0x0380FFF4 - mov r3, r4 - ldr r0, [r0] - add r0, r0, #0x234 - add r0, r0, #0x400 - bl __VENEER_OS_SetAlarm - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600B898: .word 0x0380FFF4 -_0600B89C: .word 0x000082EA - arm_func_end SetupUsTimeOut - - arm_func_start ClearTimeOut -ClearTimeOut: ; 0x0600B8A0 - ldr r0, _0600B8B8 ; =0x0380FFF4 - ldr ip, _0600B8BC ; =OS_CancelAlarm - ldr r0, [r0] - add r0, r0, #0x234 - add r0, r0, #0x400 - bx ip - .align 2, 0 -_0600B8B8: .word 0x0380FFF4 -_0600B8BC: .word OS_CancelAlarm - arm_func_end ClearTimeOut - - arm_func_start DMA_Read -DMA_Read: ; 0x0600B8C0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _0600B934 ; =0x04805F60 - add r2, r2, #1 - mov r5, r1 - bic r2, r2, #1 - add r1, r5, r2 - cmp r1, r3 - mov r6, r0 - subhi r4, r3, r5 - subhi r7, r2, r4 - movls r4, r2 - movls r7, #0 - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl __VENEER_MIi_CpuCopy16 - cmp r7, #0 - beq _0600B92C - ldr r0, _0600B938 ; =0x0380FFF4 - add r3, r5, r4 - ldr r0, [r0] - mov r2, r7 - add r0, r0, #0x300 - ldrh r0, [r0, #0xde] - add r1, r6, r4 - sub r0, r3, r0 - bl __VENEER_MIi_CpuCopy16 -_0600B92C: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600B934: .word 0x04805F60 -_0600B938: .word 0x0380FFF4 - arm_func_end DMA_Read - - arm_func_start DMA_Write -DMA_Write: ; 0x0600B93C - ldr ip, _0600B958 ; =MIi_CpuCopy16 - mov r3, r0 - add r2, r2, #1 - mov r0, r1 - mov r1, r3 - bic r2, r2, #1 - bx ip - .align 2, 0 -_0600B958: .word MIi_CpuCopy16 - arm_func_end DMA_Write - - arm_func_start DMA_WriteHeaderData -DMA_WriteHeaderData: ; 0x0600B95C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r2 - mov r0, r1 - mov r4, r3 - mov r1, r6 - mov r2, #0x24 - bl __VENEER_MIi_CpuCopy16 - cmp r4, #0 - beq _0600B998 - add r2, r4, #1 - mov r0, r5 - add r1, r6, #0x24 - bic r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_0600B998: - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end DMA_WriteHeaderData - - arm_func_start DMA_WepWriteHeaderData -DMA_WepWriteHeaderData: ; 0x0600B9A0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r2 - mov r0, r1 - mov r4, r3 - mov r1, r6 - mov r2, #0x24 - bl __VENEER_MIi_CpuCopy16 - cmp r4, #0 - beq _0600B9DC - add r2, r4, #1 - mov r0, r5 - add r1, r6, #0x28 - bic r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_0600B9DC: - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end DMA_WepWriteHeaderData - - arm_func_start WL_WriteByte -WL_WriteByte: ; 0x0600B9E4 - tst r0, #1 - ldrneh r2, [r0, #-1] - andne r2, r2, #0xff - orrne r1, r2, r1, lsl #8 - strneh r1, [r0, #-1] - ldreqh r2, [r0] - andeq r1, r1, #0xff - andeq r2, r2, #0xff00 - orreq r1, r2, r1 - streqh r1, [r0] - bx lr - arm_func_end WL_WriteByte - - arm_func_start WL_ReadByte -WL_ReadByte: ; 0x0600BA10 - tst r0, #1 - ldrneh r0, [r0, #-1] - movne r0, r0, asr #8 - ldreqh r0, [r0] - and r0, r0, #0xff - and r0, r0, #0xff - bx lr - arm_func_end WL_ReadByte - - arm_func_start RND_Init -RND_Init: ; 0x0600BA2C - ldr r3, _0600BA58 ; =0x0380FFF4 - ldr r2, _0600BA5C ; =0x0000FFF8 - ldr r3, [r3] - and r0, r0, r2 - add r2, r0, #5 - add r0, r3, #0x500 - strh r2, [r0, #0xf0] - add r2, r3, #0x5f0 - orr r0, r1, #1 - strh r0, [r2, #2] - bx lr - .align 2, 0 -_0600BA58: .word 0x0380FFF4 -_0600BA5C: .word 0x0000FFF8 - arm_func_end RND_Init - - arm_func_start RND_seed -RND_seed: ; 0x0600BA60 - ldr r1, _0600BA74 ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x500 - strh r0, [r1, #0xf4] - bx lr - .align 2, 0 -_0600BA74: .word 0x0380FFF4 - arm_func_end RND_seed - - arm_func_start RND_rand -RND_rand: ; 0x0600BA78 - ldr r0, _0600BAA4 ; =0x0380FFF4 - ldr r0, [r0] - add r3, r0, #0x5f0 - add r0, r0, #0x500 - ldrh r2, [r3, #2] - ldrh r1, [r3, #4] - ldrh r0, [r0, #0xf0] - mla r0, r1, r0, r2 - strh r0, [r3, #4] - ldrh r0, [r3, #4] - bx lr - .align 2, 0 -_0600BAA4: .word 0x0380FFF4 - arm_func_end RND_rand - - arm_func_start calc_NextCRC -calc_NextCRC: ; 0x0600BAA8 - stmdb sp!, {r4, lr} - ldr r2, _0600BB20 ; =crc16_table - mov r4, r1, lsl #0x1c - ldr r3, _0600BB24 ; =0x00000FFF - mov r4, r4, lsr #0x1b - mov ip, r0, lsl #0x1c - mov lr, ip, lsr #0x1b - and r1, r3, r1, asr #4 - ldrh r4, [r2, r4] - mov r1, r1, lsl #0x10 - mov r0, r0, asr #4 - mov r0, r0, lsl #0x1c - mov ip, r0, lsr #0x1b - ldrh r0, [r2, lr] - eor r1, r4, r1, lsr #16 - eor r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r1, lsl #0x1c - mov r0, r0, lsr #0x1b - and r1, r3, r1, asr #4 - ldrh r3, [r2, r0] - mov r0, r1, lsl #0x10 - ldrh r1, [r2, ip] - eor r0, r3, r0, lsr #16 - eor r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600BB20: .word crc16_table -_0600BB24: .word 0x00000FFF - arm_func_end calc_NextCRC - - arm_func_start WCheckTxBufIdBeforeFrame -WCheckTxBufIdBeforeFrame: ; 0x0600BB28 - stmdb sp!, {r4, lr} - ldr r4, [r0, #8] - ldr r1, _0600BB9C ; =0x0000B6B8 - ldrh r2, [r4, #-4] - sub lr, r4, #4 - cmp r2, r1 - ldreqh r2, [lr, #2] - ldreq r1, _0600BBA0 ; =0x00001D46 - cmpeq r2, r1 - moveq r0, #0 - beq _0600BB94 - ldr r3, _0600BB9C ; =0x0000B6B8 - mov ip, #1 - strh ip, [r4, #0xa] - ldr r2, _0600BBA0 ; =0x00001D46 - strh r3, [lr] - strh r2, [lr, #2] - ldr r1, [r0, #8] - ldr r0, _0600BBA4 ; =0x0380FFF4 - strh r3, [r1, #0xc] - strh r2, [r1, #0xe] - ldr r1, [r0] - mov r0, ip - add r1, r1, #0x300 - ldrh r2, [r1, #0xfa] - add r2, r2, #1 - strh r2, [r1, #0xfa] -_0600BB94: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600BB9C: .word 0x0000B6B8 -_0600BBA0: .word 0x00001D46 -_0600BBA4: .word 0x0380FFF4 - arm_func_end WCheckTxBufIdBeforeFrame - - arm_func_start WaitMacStop -WaitMacStop: ; 0x0600BBA8 - ldr r0, _0600BBE0 ; =0x04808004 - mov r1, #0 - strh r1, [r0] - mov r2, #0x10 - add r1, r0, #0x210 - b _0600BBD4 -_0600BBC0: - ldrh r0, [r1] - cmp r0, #0 - cmpne r0, #9 - bxeq lr - sub r2, r2, #1 -_0600BBD4: - cmp r2, #0 - bne _0600BBC0 - bx lr - .align 2, 0 -_0600BBE0: .word 0x04808004 - arm_func_end WaitMacStop - - arm_func_start RestoreTxFrame -RestoreTxFrame: ; 0x0600BBE4 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrh r0, [r4] - cmp r0, #0 - beq _0600BC24 - bl WaitMacStop - ldr r1, [r4, #0xc] - ldr r0, [r4, #8] - sub r1, r1, #0x10 - bl CopyTxFrmToMacBuf - ldr r0, _0600BC2C ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0xfc] - add r1, r1, #1 - strh r1, [r0, #0xfc] -_0600BC24: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600BC2C: .word 0x0380FFF4 - arm_func_end RestoreTxFrame - - arm_func_start WCheckTxBuf -WCheckTxBuf: ; 0x0600BC30 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0600BD24 ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x300 - ldrh r1, [r0, #0x50] - add r0, r2, #0x2c - cmp r1, #1 - add r4, r2, #0x344 - add r5, r0, #0x400 - beq _0600BC68 - cmp r1, #2 - beq _0600BC9C - cmp r1, #3 - b _0600BCD8 -_0600BC68: - add r0, r5, #0x78 - bl WCheckTxBufIdBeforeFrame - cmp r0, #0 - beq _0600BC80 - bl WaitMacStop - bl MakeBeaconFrame -_0600BC80: - add r0, r5, #0x28 - bl WCheckTxBufIdBeforeFrame - cmp r0, #0 - beq _0600BCD8 - add r0, r5, #0x28 - bl RestoreTxFrame - b _0600BCD8 -_0600BC9C: - add r0, r5, #0x64 - bl WCheckTxBufIdBeforeFrame - add r0, r5, #0x28 - bl WCheckTxBufIdBeforeFrame - cmp r0, #0 - beq _0600BCD8 - ldrh r0, [r5, #0x28] - cmp r0, #0 - beq _0600BCC4 - bl WaitMacStop -_0600BCC4: - ldrh r0, [r4, #0x6a] - bl MakePsPollFrame - ldrh r0, [r4, #0xb8] - add r0, r0, #1 - strh r0, [r4, #0xb8] -_0600BCD8: - add r0, r5, #0x14 - bl WCheckTxBufIdBeforeFrame - cmp r0, #0 - beq _0600BCF0 - add r0, r5, #0x14 - bl RestoreTxFrame -_0600BCF0: - mov r0, r5 - bl WCheckTxBufIdBeforeFrame - cmp r0, #0 - beq _0600BD08 - mov r0, r5 - bl RestoreTxFrame -_0600BD08: - ldr r1, _0600BD28 ; =0x04808004 - ldrh r0, [r1] - cmp r0, #0 - moveq r0, #1 - streqh r0, [r1] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600BD24: .word 0x0380FFF4 -_0600BD28: .word 0x04808004 - arm_func_end WCheckTxBuf - - arm_func_start SetFatalErr -SetFatalErr: ; 0x0600BD2C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - ldr r1, _0600BD6C ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x300 - ldrh r2, [r1, #0xf4] - orr r2, r2, r4 - strh r2, [r1, #0xf4] - bl __VENEER_OS_EnableIrqMask - mov r0, #2 - mov r1, #0x15 - bl AddTask - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600BD6C: .word 0x0380FFF4 - arm_func_end SetFatalErr - - arm_func_start SendFatalErrMsgTask -SendFatalErrMsgTask: ; 0x0600BD70 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0600BDE8 ; =0x0380FFF4 - ldr r1, [r0] - add r4, r1, #0x344 - ldrh r0, [r4, #0xb0] - cmp r0, #0 - beq _0600BDE0 - add r0, r1, #0x188 - mov r1, #0x12 - bl AllocateHeapBuf - movs r5, r0 - beq _0600BDE0 - ldr r1, _0600BDEC ; =0x00000186 - mov r0, #1 - strh r1, [r5, #0xc] - strh r0, [r5, #0xe] - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - ldrh r2, [r4, #0xb0] - mov r1, #0 - strh r2, [r5, #0x10] - strh r1, [r4, #0xb0] - bl __VENEER_OS_EnableIrqMask - ldr r0, _0600BDE8 ; =0x0380FFF4 - mov r1, r5 - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect -_0600BDE0: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600BDE8: .word 0x0380FFF4 -_0600BDEC: .word 0x00000186 - arm_func_end SendFatalErrMsgTask - - arm_func_start TerminateWlTask -TerminateWlTask: ; 0x0600BDF0 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0600BE88 ; =0x0380FFF4 - ldr r0, [r2] - add r0, r0, #0x300 - ldrh r1, [r0, #0x3e] - orr r1, r1, #0x8000 - strh r1, [r0, #0x3e] - ldr r0, [r2] - add r0, r0, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0 - beq _0600BE5C - bl WStop - ldr r2, _0600BE88 ; =0x0380FFF4 - ldr r0, [r2] - add r0, r0, #0x400 - ldrh r1, [r0, #4] - cmp r1, #0 - beq _0600BE58 - mov r1, #0 - strh r1, [r0, #4] - ldr r0, [r2] - mov r1, #6 - ldr r0, [r0, #0x420] - strh r1, [r0, #4] - bl IssueMlmeConfirm -_0600BE58: - bl WShutdown -_0600BE5C: - ldr r4, _0600BE8C ; =0x0000FFFF - mov r5, #3 -_0600BE64: - mov r0, r5 - bl DeleteTask - cmp r0, r4 - bne _0600BE64 - mov r0, #3 - mov r1, #0x17 - bl AddTask - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600BE88: .word 0x0380FFF4 -_0600BE8C: .word 0x0000FFFF - arm_func_end TerminateWlTask - - arm_func_start ReleaseWlTask -ReleaseWlTask: ; 0x0600BE90 - stmdb sp!, {r4, lr} - ldr r0, _0600BEDC ; =0x0380FFF4 - ldr r4, [r0] - bl ReleaseIntr - ldr r1, _0600BEDC ; =0x0380FFF4 - add r0, r4, #0x188 - ldr r1, [r1] - ldr r1, [r1, #0x318] - sub r1, r1, #0xc - bl ReleaseHeapBuf - ldr r1, _0600BEDC ; =0x0380FFF4 - add r0, r4, #0x188 - ldr r1, [r1] - ldr r1, [r1, #0x3e0] - sub r1, r1, #0xc - bl ReleaseHeapBuf - bl __VENEER_OS_ExitThread - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600BEDC: .word 0x0380FFF4 - arm_func_end ReleaseWlTask - - arm_func_start DiagMacRegister -DiagMacRegister: ; 0x0600BEE0 - stmdb sp!, {r4, r5, r6, lr} - mov ip, #0 - ldr r0, _0600C074 ; =test_reg - ldr r6, _0600C078 ; =test_pattern - mov r3, ip - mov r1, ip - b _0600BF54 -_0600BEFC: - mov r4, r3, lsl #1 - ldrh r5, [r6, r4] - mov r2, r1 - b _0600BF48 -_0600BF0C: - mov lr, r2, lsl #2 - add r4, r0, r2, lsl #2 - ldrh lr, [r0, lr] - ldrh r4, [r4, #2] - add lr, lr, #0x4800000 - and r4, r5, r4 - add lr, lr, #0x8000 - strh r4, [lr] - ldrh lr, [lr] - cmp lr, r4 - beq _0600BF44 - cmp ip, #0x20 - add ip, ip, #1 - bhi _0600C04C -_0600BF44: - add r2, r2, #1 -_0600BF48: - cmp r2, #0x1b - blo _0600BF0C - add r3, r3, #1 -_0600BF54: - cmp r3, #3 - blo _0600BEFC - ldr r4, _0600C07C ; =0x00001234 - ldr r3, _0600C074 ; =test_reg - mov r5, #0 -_0600BF68: - mov r0, r5, lsl #2 - add r1, r3, r5, lsl #2 - ldrh r0, [r3, r0] - ldrh r2, [r1, #2] - add r1, r4, #0x234 - add r0, r0, #0x4800000 - add r1, r1, #0x1000 - add r5, r5, #1 - and r2, r4, r2 - add r0, r0, #0x8000 - mov r1, r1, lsl #0x10 - strh r2, [r0] - cmp r5, #0x1b - mov r4, r1, lsr #0x10 - blo _0600BF68 - ldr r5, _0600C07C ; =0x00001234 - ldr r3, _0600C074 ; =test_reg - mov r4, #0 - b _0600BFFC -_0600BFB4: - mov r0, r4, lsl #2 - ldrh r0, [r3, r0] - add r1, r3, r4, lsl #2 - add r0, r0, #0x4800000 - add r0, r0, #0x8000 - ldrh r1, [r1, #2] - ldrh r2, [r0] - and r0, r5, r1 - cmp r2, r0 - beq _0600BFE8 - cmp ip, #0x20 - add ip, ip, #1 - bhi _0600C04C -_0600BFE8: - add r0, r5, #0x234 - add r0, r0, #0x1000 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - add r4, r4, #1 -_0600BFFC: - cmp r4, #0x1b - blo _0600BFB4 - mov r3, #0 - ldr r2, _0600C074 ; =test_reg - mov r1, r3 - b _0600C044 -_0600C014: - mov r0, r3, lsl #2 - ldrh r0, [r2, r0] - add r0, r0, #0x4800000 - add r0, r0, #0x8000 - strh r1, [r0] - ldrh r0, [r0] - cmp r0, #0 - beq _0600C040 - cmp ip, #0x20 - add ip, ip, #1 - bhi _0600C04C -_0600C040: - add r3, r3, #1 -_0600C044: - cmp r3, #0x1b - blo _0600C014 -_0600C04C: - cmp ip, #0 - beq _0600C06C - ldr r0, _0600C080 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x3e] - orr r1, r1, #1 - strh r1, [r0, #0x3e] -_0600C06C: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600C074: .word test_reg -_0600C078: .word test_pattern -_0600C07C: .word 0x00001234 -_0600C080: .word 0x0380FFF4 - arm_func_end DiagMacRegister - - arm_func_start DiagMacMemory -DiagMacMemory: ; 0x0600C084 - stmdb sp!, {r3, lr} - ldr lr, _0600C1FC ; =0x04804000 - mov r0, #0 - ldr r3, _0600C200 ; =0x0000FFFF - mov r2, r0 -_0600C098: - sub r1, r3, #1 - mov ip, r3 - mov r1, r1, lsl #0x10 - add r2, r2, #2 - cmp r2, #0x2000 - mov r3, r1, lsr #0x10 - strh ip, [lr], #2 - blo _0600C098 - ldr r2, _0600C1FC ; =0x04804000 - ldr r3, _0600C200 ; =0x0000FFFF - mov ip, #0 - b _0600C0F4 -_0600C0C8: - ldrh r1, [r2] - cmp r1, r3 - beq _0600C0E0 - cmp r0, #0x20 - add r0, r0, #1 - bhi _0600C1D4 -_0600C0E0: - sub r1, r3, #1 - mov r1, r1, lsl #0x10 - add ip, ip, #2 - add r2, r2, #2 - mov r3, r1, lsr #0x10 -_0600C0F4: - cmp ip, #0x2000 - blo _0600C0C8 - ldr r2, _0600C1FC ; =0x04804000 - ldr r3, _0600C204 ; =0x00005A5A - mov ip, #0 -_0600C108: - mvn r1, r3 - add ip, ip, #2 - mov r1, r1, lsl #0x10 - strh r3, [r2], #2 - cmp ip, #0x2000 - mov r3, r1, lsr #0x10 - blo _0600C108 - ldr r2, _0600C1FC ; =0x04804000 - ldr r3, _0600C204 ; =0x00005A5A - mov ip, #0 - b _0600C160 -_0600C134: - ldrh r1, [r2] - cmp r1, r3 - beq _0600C14C - cmp r0, #0x20 - add r0, r0, #1 - bhi _0600C1D4 -_0600C14C: - mvn r1, r3 - mov r1, r1, lsl #0x10 - add ip, ip, #2 - add r2, r2, #2 - mov r3, r1, lsr #0x10 -_0600C160: - cmp ip, #0x2000 - blo _0600C134 - ldr r2, _0600C1FC ; =0x04804000 - ldr r3, _0600C208 ; =0x0000A5A5 - mov ip, #0 -_0600C174: - mvn r1, r3 - add ip, ip, #2 - mov r1, r1, lsl #0x10 - strh r3, [r2], #2 - cmp ip, #0x2000 - mov r3, r1, lsr #0x10 - blo _0600C174 - ldr r2, _0600C1FC ; =0x04804000 - ldr r3, _0600C208 ; =0x0000A5A5 - mov ip, #0 - b _0600C1CC -_0600C1A0: - ldrh r1, [r2] - cmp r1, r3 - beq _0600C1B8 - cmp r0, #0x20 - add r0, r0, #1 - bhi _0600C1D4 -_0600C1B8: - mvn r1, r3 - mov r1, r1, lsl #0x10 - add ip, ip, #2 - add r2, r2, #2 - mov r3, r1, lsr #0x10 -_0600C1CC: - cmp ip, #0x2000 - blo _0600C1A0 -_0600C1D4: - cmp r0, #0 - beq _0600C1F4 - ldr r0, _0600C20C ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x3e] - orr r1, r1, #2 - strh r1, [r0, #0x3e] -_0600C1F4: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600C1FC: .word 0x04804000 -_0600C200: .word 0x0000FFFF -_0600C204: .word 0x00005A5A -_0600C208: .word 0x0000A5A5 -_0600C20C: .word 0x0380FFF4 - arm_func_end DiagMacMemory - - arm_func_start DiagBaseBand -DiagBaseBand: ; 0x0600C210 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _0600C4E4 ; =0x0380FFF4 - mov r7, #0 - ldr r0, [r0] - mov r6, #0 - add r0, r0, #0x500 - ldrh r0, [r0, #0xf8] - mov r5, #0xff - cmp r0, #5 - ldreq sl, _0600C4E8 ; =BBPDiagSkipAdrsES1 - mvn r4, #0 - ldrne sl, _0600C4EC ; =BBPDiagSkipAdrsRelease - b _0600C260 -_0600C244: - mov r0, r6 - mov r1, r5 - bl BBP_Write - cmp r0, r4 - moveq r7, #1 - beq _0600C4BC - add r6, r6, #1 -_0600C260: - cmp r6, #0x69 - blo _0600C244 - mov r5, #0 - mov r4, r5 - b _0600C2B0 -_0600C274: - mov r0, r4, lsl #1 - ldrh r0, [sl, r0] - cmp r5, r0 - addeq r4, r4, #1 - beq _0600C2AC - mov r0, r5 - bl BBP_Read - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #0xff - beq _0600C2AC - cmp r7, #0x20 - add r7, r7, #1 - bhi _0600C4BC -_0600C2AC: - add r5, r5, #1 -_0600C2B0: - cmp r5, #0x69 - blo _0600C274 - mov r5, #0 - mov r4, r5 -_0600C2C0: - mov r0, r5 - mov r1, r4 - bl BBP_Write - add r5, r5, #1 - cmp r5, #0x69 - blo _0600C2C0 - mov r4, #0 - mov r5, r4 - b _0600C31C -_0600C2E4: - mov r0, r5, lsl #1 - ldrh r0, [sl, r0] - cmp r4, r0 - addeq r5, r5, #1 - beq _0600C318 - mov r0, r4 - bl BBP_Read - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - beq _0600C318 - cmp r7, #0x20 - add r7, r7, #1 - bhi _0600C4BC -_0600C318: - add r4, r4, #1 -_0600C31C: - cmp r4, #0x69 - blo _0600C2E4 - mov r4, #0x55 - mov r5, #0 -_0600C32C: - mov r0, r5 - mov r1, r4 - bl BBP_Write - mvn r0, r4 - add r5, r5, #1 - mov r0, r0, lsl #0x10 - cmp r5, #0x69 - mov r4, r0, lsr #0x10 - blo _0600C32C - mov r4, #0 - mov r6, r4 - mov r5, #0x55 - b _0600C3A4 -_0600C360: - mov r0, r6, lsl #1 - ldrh r0, [sl, r0] - cmp r4, r0 - addeq r6, r6, #1 - beq _0600C398 - mov r0, r4 - bl BBP_Read - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r5 - beq _0600C398 - cmp r7, #0x20 - add r7, r7, #1 - bhi _0600C4BC -_0600C398: - mvn r0, r5 - and r5, r0, #0xff - add r4, r4, #1 -_0600C3A4: - cmp r4, #0x69 - blo _0600C360 - mov r5, #0xff - mov r4, #0 -_0600C3B4: - mov r0, r4 - mov r1, r5 - bl BBP_Write - sub r0, r5, #1 - add r4, r4, #1 - mov r0, r0, lsl #0x10 - cmp r4, #0x69 - mov r5, r0, lsr #0x10 - blo _0600C3B4 - mov r4, #0 - mov r6, r4 - mov r5, #0xff - b _0600C430 -_0600C3E8: - mov r0, r6, lsl #1 - ldrh r0, [sl, r0] - cmp r4, r0 - addeq r6, r6, #1 - beq _0600C420 - mov r0, r4 - bl BBP_Read - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r5 - beq _0600C420 - cmp r7, #0x20 - add r7, r7, #1 - bhi _0600C4BC -_0600C420: - sub r0, r5, #1 - mov r0, r0, lsl #0x10 - add r4, r4, #1 - mov r5, r0, lsr #0x10 -_0600C430: - cmp r4, #0x69 - blo _0600C3E8 - mov r8, #0 - mov sb, r8 - mov r4, #1 - mov fp, r8 - b _0600C4B4 -_0600C44C: - mov r0, sb, lsl #1 - ldrh r0, [sl, r0] - cmp r8, r0 - addeq sb, sb, #1 - beq _0600C4B0 - mov r6, r4 - mov r5, fp - b _0600C4A8 -_0600C46C: - mov r0, r8 - mov r1, r6 - bl BBP_Write - mov r0, r8 - bl BBP_Read - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, r6 - beq _0600C49C - cmp r7, #0x20 - add r7, r7, #1 - bhi _0600C4BC -_0600C49C: - mov r0, r6, lsl #1 - and r6, r0, #0xff - add r5, r5, #1 -_0600C4A8: - cmp r5, #9 - blo _0600C46C -_0600C4B0: - add r8, r8, #1 -_0600C4B4: - cmp r8, #0x69 - blo _0600C44C -_0600C4BC: - cmp r7, #0 - beq _0600C4DC - ldr r0, _0600C4E4 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x3e] - orr r1, r1, #8 - strh r1, [r0, #0x3e] -_0600C4DC: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0600C4E4: .word 0x0380FFF4 -_0600C4E8: .word BBPDiagSkipAdrsES1 -_0600C4EC: .word BBPDiagSkipAdrsRelease - arm_func_end DiagBaseBand - - arm_func_start WlIntr -WlIntr: ; 0x0600C4F0 - stmdb sp!, {r4, r5, r6, lr} - ldr r5, _0600C5BC ; =0x04808010 - mov r4, #1 -_0600C4FC: - ldrh r1, [r5] - ldrh r0, [r5, #2] - ands r6, r1, r0 - beq _0600C5A4 - tst r6, #0x80 - beq _0600C518 - bl WlIntrStartTx -_0600C518: - tst r6, #0x40 - beq _0600C524 - bl WlIntrStartRx -_0600C524: - tst r6, #0x8000 - beq _0600C530 - bl WlIntrPreTbtt -_0600C530: - tst r6, #0x4000 - beq _0600C53C - bl WlIntrTbtt -_0600C53C: - tst r6, #0x2000 - beq _0600C548 - bl WlIntrActEnd -_0600C548: - tst r6, #0x800 - beq _0600C554 - bl WlIntrRfWakeup -_0600C554: - tst r6, #8 - beq _0600C560 - bl WlIntrTxErr -_0600C560: - tst r6, #4 - beq _0600C56C - bl WlIntrRxCntup -_0600C56C: - tst r6, #1 - beq _0600C578 - bl WlIntrRxEnd -_0600C578: - tst r6, #0x30 - beq _0600C584 - bl WlIntrCntOvf -_0600C584: - tst r6, #2 - beq _0600C590 - bl WlIntrTxEnd -_0600C590: - tst r6, #0x1000 - beq _0600C4FC - mov r0, r4 - bl WlIntrMpEnd - b _0600C4FC -_0600C5A4: - ldr r1, _0600C5C0 ; =0x0380FFF8 - ldr r0, [r1] - orr r0, r0, #0x1000000 - str r0, [r1] - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600C5BC: .word 0x04808010 -_0600C5C0: .word 0x0380FFF8 - arm_func_end WlIntr - - arm_func_start WlIntrPreTbtt -WlIntrPreTbtt: ; 0x0600C5C4 - stmdb sp!, {r4, lr} - ldr r1, _0600C648 ; =0x0380FFF4 - ldr r0, _0600C64C ; =0x04808010 - ldr r2, [r1] - mov r1, #0x8000 - strh r1, [r0] - add r4, r2, #0x344 - ldrh r0, [r4, #8] - cmp r0, #0x40 - bne _0600C638 - ldrh r0, [r4, #0x7e] - cmp r0, #0 - beq _0600C638 - ldrh r1, [r4, #0x72] - ldrh r0, [r4, #0x70] - cmp r1, r0 - bne _0600C638 - ldrh r0, [r4, #0x80] - add r0, r0, #1 - strh r0, [r4, #0x80] - ldrh r1, [r4, #0x80] - ldrh r0, [r4, #0x7e] - cmp r1, r0 - bls _0600C638 - mov r2, #0 - mov r0, #1 - mov r1, #0xd - strh r2, [r4, #0x80] - bl AddTask -_0600C638: - mov r0, #1 - strh r0, [r4, #0x10] - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600C648: .word 0x0380FFF4 -_0600C64C: .word 0x04808010 - arm_func_end WlIntrPreTbtt - - arm_func_start WlIntrTbtt -WlIntrTbtt: ; 0x0600C650 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r6, _0600C8D4 ; =0x0380FFF4 - ldr r2, _0600C8D8 ; =0x04808010 - ldr r3, [r6] - mov r0, #0x4000 - strh r0, [r2] - add r4, r3, #0x344 - ldrh r1, [r4, #0xc] - add r0, r3, #0x2c - cmp r1, #1 - add r5, r3, #0x31c - add r7, r0, #0x400 - beq _0600C698 - cmp r1, #2 - beq _0600C74C - cmp r1, #3 - beq _0600C790 - b _0600C8CC -_0600C698: - ldr r1, [r7, #0x80] - ldrh r6, [r6, #-4] - ldrh r0, [r4, #0x96] - add r1, r1, #0x24 - add r8, r1, r0 - add r0, r8, #8 - and r1, r6, #0xff - bl WL_WriteByte - mov r1, r6, lsr #8 - add r0, r8, #9 - and r1, r1, #0xff - bl WL_WriteByte - ldrh r0, [r4, #0xe] - cmp r0, #1 - bne _0600C6EC - ldr r1, _0600C8DC ; =0x04808134 - ldrh r2, [r5, #0x20] - ldrh r0, [r1] - add r0, r2, r0 - add r0, r0, #1 - strh r0, [r1] -_0600C6EC: - ldr r0, _0600C8D4 ; =0x0380FFF4 - ldr r1, _0600C8E0 ; =0x048080B6 - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r3, [r0, #0x2e] - ldrh r2, [r0, #0x32] - mvn r3, r3 - orr r2, r3, r2 - strh r2, [r0, #0x30] - ldrh r0, [r1] - tst r0, #0x18 - bne _0600C728 - and r0, r0, #6 - cmp r0, #2 - bne _0600C73C -_0600C728: - ldr r0, [r7, #0x8c] - bic r0, r0, #2 - str r0, [r7, #0x8c] - bl SetParentTbttTxq - b _0600C8CC -_0600C73C: - ldr r0, [r7, #0x8c] - orr r0, r0, #2 - str r0, [r7, #0x8c] - b _0600C8CC -_0600C74C: - ldrh r0, [r4, #0x12] - cmp r0, #0 - ldreq r1, _0600C8E4 ; =0x0000FFFF - addeq r0, r2, #0x124 - streqh r1, [r0] - beq _0600C77C - add r1, r2, #0x124 - ldrh r2, [r5, #0x20] - ldrh r0, [r1] - add r0, r2, r0 - add r0, r0, #1 - strh r0, [r1] -_0600C77C: - ldrh r0, [r4, #0x1a] - cmp r0, #2 - bne _0600C790 - mov r0, #2 - bl WSetPowerState -_0600C790: - ldrh r0, [r4, #8] - cmp r0, #0x40 - movne r1, #1 - bne _0600C7DC - ldrh r0, [r4, #0x72] - mov r1, #0 - cmp r0, #1 - ldrh r0, [r4, #0x14] - moveq r1, #1 - cmp r0, #0 - beq _0600C7DC - ldrh r0, [r4, #0x76] - cmp r0, #1 - beq _0600C7D8 - cmp r0, #0 - ldreqh r0, [r4, #0x74] - cmpeq r0, #1 - bne _0600C7DC -_0600C7D8: - mov r1, #1 -_0600C7DC: - cmp r1, #0 - ldr r1, _0600C8E8 ; =0x04808038 - ldrneh r0, [r1] - orrne r0, r0, #1 - strneh r0, [r1] - ldreqh r0, [r1] - biceq r0, r0, #1 - streqh r0, [r1] - ldr r1, _0600C8EC ; =0x04808118 - mov r8, #0 - ldrh r0, [r1] - mov r6, #2 - cmp r0, #0xa - movhi r0, #0 - strhih r0, [r1, #-0xd0] - ldrh r0, [r4, #0x72] - mov r5, r8 - sub r0, r0, #1 - strh r0, [r4, #0x72] - ldrh r0, [r4, #0x72] - mov sl, #0x14 - cmp r0, #0 - ldreqh r0, [r4, #0x70] - streqh r0, [r4, #0x72] - ldrh r1, [r4, #0x76] - sub r0, r1, #1 - strh r0, [r4, #0x76] - cmp r1, #0 - ldreqh r0, [r4, #0x74] - subeq r0, r0, #1 - streqh r0, [r4, #0x76] - mov r4, #0xe -_0600C85C: - mul r1, r8, sl - ldrh r0, [r7, r1] - add sb, r7, r1 - cmp r0, #0 - beq _0600C8B4 - ldr r0, [sb, #0xc] - ldrh r1, [r0, #8] - cmp r1, #0 - bne _0600C8B4 - bl CheckFrameTimeout - cmp r0, #0 - beq _0600C8B4 - mov r0, r8 - bl ResetTxqPri - ldr r1, [sb, #8] - mov r0, r5 - strh r6, [r1] - mov r1, r4 - bl AddTask - ldrh r0, [r7, #0xae] - add r0, r0, #1 - strh r0, [r7, #0xae] -_0600C8B4: - add r8, r8, #1 - cmp r8, #2 - blo _0600C85C - ldr r0, _0600C8F0 ; =0x048080AE - mov r1, #0xd - strh r1, [r0] -_0600C8CC: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_0600C8D4: .word 0x0380FFF4 -_0600C8D8: .word 0x04808010 -_0600C8DC: .word 0x04808134 -_0600C8E0: .word 0x048080B6 -_0600C8E4: .word 0x0000FFFF -_0600C8E8: .word 0x04808038 -_0600C8EC: .word 0x04808118 -_0600C8F0: .word 0x048080AE - arm_func_end WlIntrTbtt - - arm_func_start WlIntrActEnd -WlIntrActEnd: ; 0x0600C8F4 - ldr r0, _0600C958 ; =0x0380FFF4 - ldr r1, _0600C95C ; =0x04808010 - ldr r2, [r0] - mov r0, #0x2000 - strh r0, [r1] - mov r0, #0xd - add r2, r2, #0x344 - strh r0, [r1, #0x9c] - ldrh r0, [r2, #0x1a] - cmp r0, #1 - moveq r0, #2 - streqh r0, [r2, #0x1a] - bxeq lr - cmp r0, #2 - moveq r0, #0 - streqh r0, [r2, #0x1a] - bxeq lr - ldrh r0, [r2, #0xc] - cmp r0, #2 - bxne lr - ldrh r0, [r2, #8] - cmp r0, #0x40 - movne r0, #0 - strneh r0, [r1, #0x38] - bx lr - .align 2, 0 -_0600C958: .word 0x0380FFF4 -_0600C95C: .word 0x04808010 - arm_func_end WlIntrActEnd - - arm_func_start WlIntrRfWakeup -WlIntrRfWakeup: ; 0x0600C960 - ldr r0, _0600C970 ; =0x04808010 - mov r1, #0x800 - strh r1, [r0] - bx lr - .align 2, 0 -_0600C970: .word 0x04808010 - arm_func_end WlIntrRfWakeup - - arm_func_start WlIntrCntOvf -WlIntrCntOvf: ; 0x0600C974 - stmdb sp!, {r3, lr} - bl WUpdateCounter - ldr r1, _0600C99C ; =0x048081AC - ldr r2, _0600C9A0 ; =0x0000FFFF - sub r0, r1, #0x19c - strh r2, [r1] - mov r1, #0x30 - strh r1, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600C99C: .word 0x048081AC -_0600C9A0: .word 0x0000FFFF - arm_func_end WlIntrCntOvf - - arm_func_start WlIntrTxErr -WlIntrTxErr: ; 0x0600C9A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _0600CAA8 ; =0x04808010 - mov r2, #8 - ldr r0, _0600CAAC ; =0x0380FFF4 - strh r2, [r1] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x3a] - mov r0, r0, lsl #0x1b - movs r0, r0, lsr #0x1f - beq _0600C9EC - add r0, r1, #0x18c - ldrh r0, [r0] - tst r0, #1 - addeq r1, r1, #0x280 - ldreqh r0, [r1] - eoreq r0, r0, #1 - streqh r0, [r1] -_0600C9EC: - ldr r0, _0600CAAC ; =0x0380FFF4 - ldr r1, [r0] - add r0, r1, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #8 - beq _0600CAA0 - ldr r4, _0600CAB0 ; =0x04808032 - add r0, r1, #0x2c - mov r2, #0 - add r1, r1, #0x344 - add r3, r0, #0x400 - mov r5, r2 - mov lr, #0x8000 - mov ip, #0x14 -_0600CA24: - mul r6, r2, ip - ldrh r0, [r3, r6] - add r6, r3, r6 - cmp r0, #0 - beq _0600CA94 - ldr r0, [r6, #8] - ldrh r6, [r0, #0xc] - tst r6, #0x4000 - beq _0600CA94 - ldrh r6, [r0, #4] - tst r6, #0xff - beq _0600CA94 - ldrh r6, [r0, #0xa] - add r7, r0, #0xc - add r6, r7, r6 - sub r6, r6, #7 - bic r7, r6, #1 - ldrh r6, [r7] - cmp r6, #0 - ldreqh r6, [r7, #2] - cmpeq r6, #0 - bne _0600CA94 - strh r5, [r0, #4] - strh r5, [r4] - strh lr, [r4] - ldrh r0, [r1, #0xba] - add r0, r0, #1 - strh r0, [r1, #0xba] -_0600CA94: - add r2, r2, #1 - cmp r2, #3 - blo _0600CA24 -_0600CAA0: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600CAA8: .word 0x04808010 -_0600CAAC: .word 0x0380FFF4 -_0600CAB0: .word 0x04808032 - arm_func_end WlIntrTxErr - - arm_func_start WlIntrRxCntup -WlIntrRxCntup: ; 0x0600CAB4 - stmdb sp!, {r3, lr} - ldr r1, _0600CC14 ; =0x0380FFF4 - ldr ip, _0600CC18 ; =0x04808010 - ldr r2, [r1] - mov r0, #4 - strh r0, [ip] - ldr r0, [r1] - add r1, ip, #0x198 - add r0, r0, #0x600 - ldrh r3, [r0, #0x90] - add r0, r2, #0xdc - add r2, r2, #0x2c - ldrh r1, [r1] - tst r3, #8 - add r0, r0, #0x400 - add r3, r2, #0x400 - beq _0600CBA4 - tst r1, #0x400 - beq _0600CBA4 - ldrh ip, [ip, #0xa0] - tst ip, #1 - ldrneh r2, [r3] - cmpne r2, #0 - bne _0600CB60 - tst ip, #4 - ldrneh r2, [r3, #0x14] - cmpne r2, #0 - bne _0600CB60 - tst ip, #8 - ldrneh r2, [r3, #0x28] - cmpne r2, #0 - bne _0600CB60 - ldr r2, _0600CC1C ; =0x0480819C - ldrh r2, [r2] - tst r2, #1 - bne _0600CB60 - ldr r3, _0600CC20 ; =0x04808032 - mov ip, #0 - strh ip, [r3] - mov r2, #0x8000 - strh r2, [r3] - strh ip, [r0, #2] - b _0600CBA4 -_0600CB60: - ldrh r3, [r0, #2] - add r2, r3, #1 - strh r2, [r0, #2] - cmp r3, #0xc - bls _0600CBA4 - ldr r3, _0600CC20 ; =0x04808032 - mov r2, #0 - strh r2, [r0, #2] - strh r2, [r3] - mov r2, #0x8000 - ldr r0, _0600CC14 ; =0x0380FFF4 - strh r2, [r3] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r2, [r0, #0xfe] - add r2, r2, #1 - strh r2, [r0, #0xfe] -_0600CBA4: - ldr r0, _0600CC14 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #1 - beq _0600CC0C - tst r1, #0x60 - beq _0600CC0C - ldr r2, _0600CC24 ; =0x04808054 - ldrh r1, [r2] - ldrh r0, [r2, #-2] - sub r0, r0, #0x4000 - add r0, r0, r0, lsr #31 - cmp r1, r0, asr #1 - bge _0600CBF4 - ldrh r0, [r2, #-4] - sub r0, r0, #0x4000 - add r0, r0, r0, lsr #31 - cmp r1, r0, asr #1 - bge _0600CC08 -_0600CBF4: - ldr r2, _0600CC28 ; =0x0480805A - ldr r0, _0600CC2C ; =0x00008001 - ldrh r1, [r2] - strh r1, [r2, #-4] - strh r0, [r2, #-0x2a] -_0600CC08: - bl WCheckTxBuf -_0600CC0C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600CC14: .word 0x0380FFF4 -_0600CC18: .word 0x04808010 -_0600CC1C: .word 0x0480819C -_0600CC20: .word 0x04808032 -_0600CC24: .word 0x04808054 -_0600CC28: .word 0x0480805A -_0600CC2C: .word 0x00008001 - arm_func_end WlIntrRxCntup - - arm_func_start WlIntrTxEnd -WlIntrTxEnd: ; 0x0600CC30 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _0600CE78 ; =0x0380FFF4 - ldr r0, _0600CE7C ; =0x04808010 - ldr r2, [r3] - mov r1, #2 - strh r1, [r0] - ldr r3, [r3] - add r2, r2, #0x2c - add r3, r3, #0x300 - ldrh r3, [r3, #0x4c] - add r4, r2, #0x400 - cmp r3, #0x12 - bne _0600CC6C - bl IntrCarrierSuppresionSignal - b _0600CE70 -_0600CC6C: - ldrh r2, [r0, #0xa8] - and r5, r2, #0xf00 - cmp r5, #0x300 - beq _0600CC90 - cmp r5, #0x800 - beq _0600CCC4 - cmp r5, #0xb00 - beq _0600CD00 - b _0600CDFC -_0600CC90: - ldr r0, [r4, #0x8c] - tst r0, #2 - beq _0600CCA0 - bl SetParentTbttTxq -_0600CCA0: - ldr r1, _0600CE78 ; =0x0380FFF4 - mov r0, #0 - ldr r3, [r1] - mov r1, #8 - ldr r2, [r3, #0x558] - add r2, r2, #1 - str r2, [r3, #0x558] - bl AddTask - b _0600CDFC -_0600CCC4: - ldr r2, [r4, #0x44] - ldrh r3, [r4, #0x9e] - ldrh r2, [r2, #4] - and r2, r2, #0xff - mov r2, r2, lsl #0x10 - cmp r3, r2, lsr #16 - strlsh r1, [r0, #0x9c] - ldrlsh r0, [r4, #0xa8] - addls r0, r0, #1 - strlsh r0, [r4, #0xa8] - ldr r1, [r4, #0x90] - ldrh r0, [r1, #0x18] - add r0, r0, #1 - strh r0, [r1, #0x18] - b _0600CDFC -_0600CD00: - ldr r3, _0600CE80 ; =0x0000FFFF - ldr r2, _0600CE84 ; =0x04805F70 - ldr r1, _0600CE88 ; =0x0480824E - strh r3, [r2] - strh r3, [r2, #2] - add r0, r0, #0x23c - strh r3, [r0] - strh r3, [r1] - ldrh r0, [r4, #0x3c] - cmp r0, #0 - beq _0600CD58 - ldr r1, [r4, #0x44] - ldrh r0, [r1, #0x22] - cmp r0, r3 - bne _0600CD58 - ldrh r0, [r1, #4] - cmp r0, #0 - movne r0, #0 - strneh r0, [r1, #4] - ldrneh r1, [r4, #0x98] - ldrne r0, [r4, #0x44] - strneh r1, [r0, #2] -_0600CD58: - ldr r0, [r4, #0x44] - ldr r2, [r4, #0x90] - ldrh r1, [r0, #2] - ldrh r0, [r4, #0x98] - cmp r1, #1 - add r2, r2, #0x1a - bls _0600CDA8 - ldr r3, _0600CE78 ; =0x0380FFF4 - ldr r3, [r3] - add r3, r3, #0x300 - ldrh r3, [r3, #0x3a] - mov r3, r3, lsl #0x1b - movs r3, r3, lsr #0x1f - beq _0600CDA8 - ldr ip, _0600CE8C ; =0x0480819C - ldrh r3, [ip] - tst r3, #1 - ldreqh r3, [ip, #0xf4] - eoreq r3, r3, #1 - streqh r3, [ip, #0xf4] -_0600CDA8: - ldr r3, _0600CE78 ; =0x0380FFF4 - ldr r3, [r3] - add r3, r3, #0x600 - ldrh r3, [r3, #0x90] - tst r3, #0x40 - beq _0600CDFC - b _0600CDF4 -_0600CDC4: - mov r1, r1, lsl #0xf - mov r1, r1, lsr #0x10 - tst r1, #1 - ldrneh r3, [r2, #6] - mov r0, r0, lsl #0xf - addne r3, r3, #1 - mov r0, r0, lsr #0x10 - strneh r3, [r2, #6] - tst r0, #1 - ldrne r3, [r4, #0x90] - ldrneh r3, [r3, #0x16] - addne r2, r2, r3 -_0600CDF4: - cmp r1, #1 - bhi _0600CDC4 -_0600CDFC: - cmp r5, #0x800 - beq _0600CE64 - ldr r2, _0600CE90 ; =0x048080B0 - ldrh r0, [r2] - tst r0, #2 - bne _0600CE64 - ldrh r0, [r4, #0x3c] - cmp r0, #0 - beq _0600CE58 - mov r0, #2 - strh r0, [r2, #4] - mov r1, #0 - strh r1, [r2, #-0x68] - ldrh r1, [r2, #-0xa0] - tst r1, #0x1000 - ldrneh r0, [r4, #0xac] - addne r0, r0, #1 - strneh r0, [r4, #0xac] - bne _0600CE4C - bl WlIntrMpEnd -_0600CE4C: - ldrh r0, [r4, #0xaa] - add r0, r0, #1 - strh r0, [r4, #0xaa] -_0600CE58: - ldr r0, _0600CE94 ; =0x048080AE - mov r1, #2 - strh r1, [r0] -_0600CE64: - mov r0, #0 - mov r1, #0xe - bl AddTask -_0600CE70: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600CE78: .word 0x0380FFF4 -_0600CE7C: .word 0x04808010 -_0600CE80: .word 0x0000FFFF -_0600CE84: .word 0x04805F70 -_0600CE88: .word 0x0480824E -_0600CE8C: .word 0x0480819C -_0600CE90: .word 0x048080B0 -_0600CE94: .word 0x048080AE - arm_func_end WlIntrTxEnd - - arm_func_start WlIntrRxEnd -WlIntrRxEnd: ; 0x0600CE98 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x38 - ldr r0, _0600D328 ; =0x0380FFF4 - ldr r2, _0600D32C ; =0x04808010 - ldr r3, [r0] - mov r1, #1 - add r0, r3, #0x600 - ldrh r4, [r0, #0x90] - add r6, r3, #0x344 - strh r1, [r2] - ldrh r1, [r6, #0xc] - add r0, r3, #0xdc - cmp r1, #0 - add r7, r0, #0x400 - ldreqh r0, [r2, #0x44] - and r4, r4, #1 - streqh r0, [r2, #0x4a] - ldr r0, _0600D330 ; =0x04808098 - sub fp, r0, #0x70 - add r0, r0, #0x1b4 - str r0, [sp, #0x24] - ldr r0, _0600D334 ; =0x0480824E - sub r0, r0, #0x154 - str r0, [sp, #0x14] - ldr r0, _0600D330 ; =0x04808098 - sub r0, r0, #0x44 - str r0, [sp, #0x10] - ldr r0, _0600D338 ; =0x000008EF - sub r0, r0, #0x29 - str r0, [sp, #0x28] - ldr r0, _0600D338 ; =0x000008EF - add r0, r0, #0x3d - str r0, [sp, #0x2c] - ldr r0, _0600D33C ; =0x04805F7E - sub r0, r0, #0x24 - str r0, [sp, #0x30] - ldr r0, _0600D338 ; =0x000008EF - add r0, r0, #0x710 - str r0, [sp, #0x34] -_0600CF34: - ldr r0, [sp, #0x10] - ldrh sb, [r7, #4] - ldrh sl, [r0] - cmp sb, sl - beq _0600D2A8 - ldr r0, _0600D330 ; =0x04808098 - ldr r1, [sp, #0x14] - ldrh r0, [r0, #0x60] - ldrh r3, [r1] - ldr r1, _0600D330 ; =0x04808098 - ldrh r2, [r1, #0x60] - ldr r1, [sp, #0x14] - cmp r0, r2 - ldrh r1, [r1] - movhi r0, r1, lsl #0xc - orrhi r0, r0, r2, lsr #4 - strhi r0, [sp, #4] - movls r1, r3, lsl #0xc - orrls r0, r1, r0, lsr #4 - strls r0, [sp, #4] - ldr r0, [sp, #0x28] - cmp sb, r0 - blo _0600CFA0 - ldr r0, _0600D338 ; =0x000008EF - cmp sb, r0 - bhi _0600CFA0 - bl WUpdateCounter -_0600CFA0: - mov r0, sb, lsl #1 - str r0, [sp, #0x18] - add r0, r0, #0x4000 - add r8, r0, #0x4800000 - add r0, r8, #2 - bl AdjustRingPointer - mov r5, r0 - add r0, r5, #2 - bl AdjustRingPointer - str r0, [sp, #0x1c] - add r0, r0, #4 - bl AdjustRingPointer - str r0, [sp, #0x20] - add r0, r8, #0xe - bl AdjustRingPointer - str r0, [sp, #0xc] - ldr r0, [sp, #0x18] - ldrh r1, [r5] - add r0, r0, #0x4800000 - add r0, r0, #0x4000 - mov r1, r1, lsl #1 - ldrh r2, [r0] - and r1, r1, #0x400 - orr r1, r2, r1 - strh r1, [r0] - ldr r1, [sp, #4] - ldr r0, [sp, #0x1c] - strh r1, [r0] - ldr r0, [sp, #0x20] - ldrh r1, [r0] - add r0, r1, sb, lsl #1 - add r0, r0, #0xf - mov r0, r0, lsr #2 - mov sb, r0, lsl #1 - cmp sb, #0xfb0 - ldrhsh r0, [r6, #0x9a] - subhs sb, sb, r0, lsr #1 - ldr r0, [sp, #0x2c] - cmp r1, r0 - bls _0600D05C - ldr r0, _0600D340 ; =0x0000FFFF - mov sb, sl - strh r0, [r8] - ldrh r0, [r6, #0xb4] - add r0, r0, #1 - strh r0, [r6, #0xb4] - b _0600D0E4 -_0600D05C: - cmp r4, #0 - cmpne sb, sl - beq _0600D0E4 - ldr r3, [sp, #0x30] - mov r2, sb, lsl #1 - add r0, r2, #0x4000 - add r0, r0, #0x4800000 - cmp r0, r3 - ldrloh r0, [r0, #6] - add r2, r2, #0x4800000 - add r2, r2, #0x4000 - ldrhsh r3, [r6, #0x9a] - andlo r0, r0, #0xff - subhs r0, r0, r3 - ldrh r2, [r2] - ldrhsh r0, [r0, #6] - tst r2, #0x7c00 - bne _0600D0BC - cmp r0, #0xa - cmpne r0, #0x14 - bne _0600D0BC - ldr r0, [sp, #0x34] - cmp r1, r0 - bls _0600D0E4 -_0600D0BC: - ldrh r0, [r6, #0xb4] - ldr r1, _0600D340 ; =0x0000FFFF - add r0, r0, #1 - strh r0, [r6, #0xb4] - mov r0, sl, lsl #0x10 - strh r1, [r8] - mov r0, r0, lsr #0x10 - strh r0, [r7, #4] - strh r0, [r5] - b _0600D2A8 -_0600D0E4: - ldrh r0, [r8] - and r0, r0, #0xf - cmp r0, #0xc - bne _0600D244 - add r0, r8, #0xc - bl AdjustRingPointer - ldrh r0, [r0] - str r0, [sp, #8] - add r0, r8, #0x22 - bl AdjustRingPointer - ldrh sl, [r0] - ldrh r0, [r7] - cmp r0, sl - bne _0600D148 - ldr r0, [sp, #8] - tst r0, #0x800 - beq _0600D148 - ldr r0, _0600D328 ; =0x0380FFF4 - ldr r1, [r0] - ldr r0, [r1, #0x57c] - add r0, r0, #1 - str r0, [r1, #0x57c] - ldr r0, _0600D340 ; =0x0000FFFF - strh r0, [r8] - b _0600D21C -_0600D148: - ldr r0, _0600D328 ; =0x0380FFF4 - ldr r0, [r0] - add r1, r0, #0x300 - ldrh r2, [r1, #0x3a] - mov r2, r2, lsl #0x18 - movs r2, r2, lsr #0x1f - ldreqh r1, [r1, #0x4c] - cmpeq r1, #0x40 - bne _0600D21C - ldrh r1, [fp] - cmp r1, #0 - beq _0600D1F4 - ldr r1, _0600D330 ; =0x04808098 - ldrh r1, [r1] - tst r1, #0x8000 - beq _0600D1F4 - add r0, r0, #0x660 - bl __VENEER_OS_CancelAlarm - ldr r0, [sp, #0xc] - mov r3, #0 - ldrh r1, [r0] - ldr r0, _0600D344 ; =0x000082EA - mov r2, #0x3e8 - umull ip, r8, r1, r0 - mov r0, r3 - mla r8, r1, r0, r8 - mov r0, ip, lsr #6 - ldr r1, _0600D344 ; =0x000082EA - mov ip, r3 - mla r8, ip, r1, r8 - mov r1, r8, lsr #6 - orr r0, r0, r8, lsl #26 - bl __VENEER__ll_udiv - mov r2, #0 - str r2, [sp] - mov r2, r1 - mov r1, r0 - ldr r0, _0600D328 ; =0x0380FFF4 - ldr r3, _0600D348 ; =WClearKSID - ldr r0, [r0] - add r0, r0, #0x660 - bl __VENEER_OS_SetAlarm - b _0600D21C -_0600D1F4: - ldr r1, _0600D340 ; =0x0000FFFF - ldr r0, _0600D33C ; =0x04805F7E - mov sl, r1 - strh r1, [r0] - ldr r0, [sp, #0x24] - strh r1, [r0] - ldr r0, _0600D334 ; =0x0480824E - strh r1, [r0] - mov r0, r1 - strh r0, [r8] -_0600D21C: - strh sl, [r7] - bl CheckKeyTxEnd - tst r0, #1 - beq _0600D294 - ldr r0, _0600D328 ; =0x0380FFF4 - ldr r1, [r0] - ldr r0, [r1, #0x5a8] - add r0, r0, #1 - str r0, [r1, #0x5a8] - b _0600D294 -_0600D244: - cmp r0, #0xd - bne _0600D294 - ldr r0, _0600D328 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x3a] - mov r1, r1, lsl #0x18 - movs r1, r1, lsr #0x1f - ldreqh r0, [r0, #0x4c] - cmpeq r0, #0x40 - bne _0600D294 - ldrh r0, [fp] - cmp r0, #0 - beq _0600D28C - ldr r0, _0600D330 ; =0x04808098 - ldrh r0, [r0] - tst r0, #0x8000 - bne _0600D294 -_0600D28C: - ldr r0, _0600D340 ; =0x0000FFFF - strh r0, [r8] -_0600D294: - mov r0, sb, lsl #0x10 - mov r0, r0, lsr #0x10 - strh r0, [r7, #4] - strh r0, [r5] - b _0600CF34 -_0600D2A8: - cmp r4, #0 - beq _0600D2FC - ldr r0, _0600D34C ; =0x04808054 - ldrh r4, [r0] - bl CheckKeyTxEnd - mov r0, r0, lsl #0x10 - movs r1, r0, lsr #0x10 - beq _0600D2FC - ldr r0, _0600D34C ; =0x04808054 - ldrh r0, [r0] - cmp r4, r0 - bne _0600D2FC - tst r1, #2 - beq _0600D2EC - mov r0, #0x80 - bl SetFatalErr - b _0600D2FC -_0600D2EC: - tst r1, #1 - beq _0600D2FC - mov r0, #0x100 - bl SetFatalErr -_0600D2FC: - ldr r0, _0600D350 ; =0x0480805A - ldrh r1, [r0] - ldrh r0, [r0, #-6] - cmp r1, r0 - beq _0600D31C - mov r0, #0 - mov r1, #0xf - bl AddTask -_0600D31C: - add sp, sp, #0x38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0600D328: .word 0x0380FFF4 -_0600D32C: .word 0x04808010 -_0600D330: .word 0x04808098 -_0600D334: .word 0x0480824E -_0600D338: .word 0x000008EF -_0600D33C: .word 0x04805F7E -_0600D340: .word 0x0000FFFF -_0600D344: .word 0x000082EA -_0600D348: .word WClearKSID -_0600D34C: .word 0x04808054 -_0600D350: .word 0x0480805A - arm_func_end WlIntrRxEnd - - arm_func_start WlIntrMpEnd -WlIntrMpEnd: ; 0x0600D354 - stmdb sp!, {r3, lr} - ldr ip, _0600D438 ; =0x0380FFF4 - ldr r2, _0600D43C ; =0x04808010 - ldr r1, [ip] - mov r3, #0x1000 - add r1, r1, #0x2c - strh r3, [r2] - add r3, r1, #0x400 - ldrh r1, [r3, #0x3c] - cmp r1, #0 - beq _0600D430 - ldr r1, [ip] - add r1, r1, #0x600 - ldrh r1, [r1, #0x90] - tst r1, #0x10 - cmpne r0, #0 - beq _0600D424 - add r0, r2, #0x204 - ldrh r1, [r2, #0xa6] - ldrh r0, [r0] - cmp r0, #3 - cmpne r0, #5 - bne _0600D424 - cmp r1, #0 - bne _0600D424 - ldr r3, [r3, #0x44] - mov r2, #0 - ldrh r0, [r3, #2] - b _0600D3D8 -_0600D3C8: - and r1, r0, #1 - mov r0, r0, lsl #0xf - add r2, r2, r1 - mov r0, r0, lsr #0x10 -_0600D3D8: - cmp r0, #0 - bne _0600D3C8 - ldrh r0, [r3, #0x24] - ldrh r1, [r3, #0xa] - add r0, r0, #0xa - mul r0, r2, r0 - add r0, r0, #0xc0 - add r0, r0, r1, lsl #2 - mov r0, r0, lsl #0x10 - ldr r1, _0600D440 ; =MacBugTxMp - mov r0, r0, lsr #0x10 - bl SetupUsTimeOut - ldr r0, _0600D438 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x400 - ldrh r1, [r0] - add r1, r1, #1 - strh r1, [r0] - b _0600D430 -_0600D424: - mov r0, #0 - mov r1, #0x10 - bl AddTask -_0600D430: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600D438: .word 0x0380FFF4 -_0600D43C: .word 0x04808010 -_0600D440: .word MacBugTxMp - arm_func_end WlIntrMpEnd - - arm_func_start WlIntrStartTx -WlIntrStartTx: ; 0x0600D444 - stmdb sp!, {r3, lr} - ldr r3, _0600D540 ; =0x0380FFF4 - ldr r0, _0600D544 ; =0x04808010 - ldr r2, [r3] - mov r1, #0x80 - strh r1, [r0] - ldr r1, [r3] - add r2, r2, #0x2c - add r1, r1, #0x600 - ldrh r1, [r1, #0x90] - tst r1, #0x20 - beq _0600D4D8 - add r1, r0, #0x204 - ldrh r3, [r1] - add r1, r0, #0x258 - and r3, r3, #0xff - ldrh ip, [r1] - cmp r3, #3 - blo _0600D4D8 - cmp r3, #5 - bhi _0600D4D8 - ldr r3, [r2, #0x458] - ldr r1, _0600D548 ; =0x00000FFF - and r3, r1, r3, lsr #1 - cmp ip, r3 - blo _0600D4D8 - ldr r2, [r2, #0x430] - and r1, r1, r2, lsr #1 - cmp ip, r1 - bhi _0600D4D8 - add r1, r0, #0x234 - ldrh r0, [r1] - orr r0, r0, #0x80 - strh r0, [r1] - ldrh r0, [r1] - bic r0, r0, #0x80 - strh r0, [r1] -_0600D4D8: - ldr r1, _0600D54C ; =0x04808000 - ldrh r0, [r1] - cmp r0, #0x1440 - beq _0600D538 - add r0, r1, #0x19c - ldrh r0, [r0] - and r0, r0, #0x42 - cmp r0, #0x42 - bne _0600D538 - add r1, r1, #0x2b8 - ldrh r2, [r1] - cmp r2, #0 - beq _0600D538 - mov r3, #0 - b _0600D52C -_0600D514: - cmp r3, #0x3e8 - add r3, r3, #1 - bls _0600D52C - mov r0, #0x40 - bl SetFatalErr - b _0600D538 -_0600D52C: - ldrh r0, [r1] - cmp r2, r0 - beq _0600D514 -_0600D538: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600D540: .word 0x0380FFF4 -_0600D544: .word 0x04808010 -_0600D548: .word 0x00000FFF -_0600D54C: .word 0x04808000 - arm_func_end WlIntrStartTx - - arm_func_start WlIntrStartRx -WlIntrStartRx: ; 0x0600D550 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r2, _0600D7A4 ; =0x0380FFF4 - ldr r0, _0600D7A8 ; =0x04808010 - ldr r3, [r2] - mov r1, #0x40 - strh r1, [r0] - ldr r2, [r2] - add r1, r3, #0x2c - add r2, r2, #0x600 - ldrh r2, [r2, #0x90] - add r4, r3, #0x344 - tst r2, #0x20 - add r5, r1, #0x400 - beq _0600D79C - ldrh r2, [r5, #0xa4] - ldr r1, _0600D7AC ; =0x0000FFFF - cmp r2, r1 - addeq r2, r0, #0x18c - ldreqh r2, [r2] - andeq r2, r2, #3 - cmpeq r2, #3 - bne _0600D79C - add r2, r0, #0x258 - ldrh r3, [r2] - ldrh r2, [r0, #0x40] - sub r1, r1, #0xf000 - and r1, r1, r2, lsr #1 - cmp r3, r1 - blt _0600D79C - ldrh r7, [r0, #0x44] - mov r0, r7, lsl #1 - add r0, r0, #0x4000 - add r0, r0, #0x4800000 - add r0, r0, #8 - bl AdjustRingPointer - add r0, r0, #4 - bl AdjustRingPointer - ldrh r2, [r0] - ldr r1, _0600D7B0 ; =0x0000E7FF - and r1, r2, r1 - cmp r1, #0x228 - bne _0600D79C - add r0, r0, #2 - bl AdjustRingPointer - ldr r2, _0600D7B4 ; =0x048080F8 - ldrh r1, [r2] - sub r6, r1, #0x10000 - add r1, r2, #0x170 -_0600D610: - ldrh r3, [r1] - sub r3, r3, r7 - mov r3, r3, lsl #0x10 - mov r8, r3, lsr #0x10 - tst r8, #0x8000 - ldrneh r3, [r4, #0x9a] - addne r3, r8, r3, lsr #1 - movne r3, r3, lsl #0x10 - movne r8, r3, lsr #0x10 - cmp r8, #0xe - bhi _0600D658 - ldrh r3, [r2] - sub r3, r3, r6 - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - cmp r3, #0x40 - bhi _0600D79C - b _0600D610 -_0600D658: - add r0, r0, #8 - mov r8, #0 - b _0600D680 -_0600D664: - bl AdjustRingPointer - add r1, r4, r8, lsl #1 - ldrh r2, [r0], #2 - ldrh r1, [r1, #0x64] - cmp r2, r1 - bne _0600D79C - add r8, r8, #1 -_0600D680: - cmp r8, #3 - blo _0600D664 - add r0, r0, #0xa - bl AdjustRingPointer - ldr r3, _0600D7B4 ; =0x048080F8 - add r1, r3, #0x170 -_0600D698: - ldrh r2, [r1] - sub r2, r2, r7 - mov r2, r2, lsl #0x10 - mov r8, r2, lsr #0x10 - tst r8, #0x8000 - ldrneh r2, [r4, #0x9a] - addne r2, r8, r2, lsr #1 - movne r2, r2, lsl #0x10 - movne r8, r2, lsr #0x10 - cmp r8, #0x14 - bhi _0600D6E0 - ldrh r2, [r3] - sub r2, r2, r6 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - cmp r2, #0x70 - bhi _0600D79C - b _0600D698 -_0600D6E0: - ldr r2, _0600D7B8 ; =0x04808028 - ldrh r3, [r0] - ldrh r0, [r2] - mov r1, #1 - tst r3, r1, lsl r0 - bne _0600D79C - ldrh r1, [r2, #0x70] - mov r0, #0x40 - strh r1, [r5, #0xa4] - strh r0, [r2, #0x8c] - ldrh r0, [r4, #0xbe] - add r1, r2, #0x174 - add r0, r0, #1 - strh r0, [r4, #0xbe] -_0600D718: - ldrh r0, [r1] - and r0, r0, #3 - cmp r0, #3 - beq _0600D718 - ldr r0, _0600D7BC ; =0x04808244 - mov r2, #8 - ldrh r1, [r0] - sub r3, r0, #0x1c - orr r1, r1, #0x40 - strh r1, [r0] - ldrh r4, [r0] - ldr r1, _0600D7A4 ; =0x0380FFF4 - bic r4, r4, #0x40 - strh r4, [r0] - strh r2, [r3] - mov r2, #0 - strh r2, [r3] - ldr r1, [r1] - ldr r2, _0600D7AC ; =0x0000FFFF - add r1, r1, #0x2c - add r6, r1, #0x400 - ldrh r5, [r6, #0xa4] - cmp r5, r2 - beq _0600D79C - sub r4, r0, #0x1b0 - ldrh r3, [r4] - sub r1, r0, #0x214 - strh r5, [r4] - ldrh r0, [r1] - orr r0, r0, #0x80 - strh r0, [r1] - strh r3, [r4] - strh r2, [r6, #0xa4] -_0600D79C: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_0600D7A4: .word 0x0380FFF4 -_0600D7A8: .word 0x04808010 -_0600D7AC: .word 0x0000FFFF -_0600D7B0: .word 0x0000E7FF -_0600D7B4: .word 0x048080F8 -_0600D7B8: .word 0x04808028 -_0600D7BC: .word 0x04808244 - arm_func_end WlIntrStartRx - - arm_func_start SetParentTbttTxq -SetParentTbttTxq: ; 0x0600D7C0 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0600D884 ; =0x0380FFF4 - mov r0, #2 - ldr r1, [r1] - mov r5, #0 - add r1, r1, #0x2c - add r4, r1, #0x400 - bl ResetTxqPri - mov r0, #1 - bl ResetTxqPri - mov r0, r5 - bl ResetTxqPri - ldrh r0, [r4, #0x28] - cmp r0, #0 - beq _0600D814 - ldr r0, [r4, #0x30] - ldrh r0, [r0] - cmp r0, #0 - movne r5, #1 - moveq r0, r5 - streqh r0, [r4, #0x28] -_0600D814: - ldrh r0, [r4, #0x14] - cmp r0, #0 - beq _0600D838 - ldr r0, [r4, #0x1c] - ldrh r0, [r0] - cmp r0, #0 - moveq r0, #0 - streqh r0, [r4, #0x14] - movne r5, #1 -_0600D838: - ldrh r0, [r4] - cmp r0, #0 - beq _0600D85C - ldr r0, [r4, #8] - ldrh r0, [r0] - cmp r0, #0 - moveq r0, #0 - streqh r0, [r4] - movne r5, #1 -_0600D85C: - cmp r5, #0 - beq _0600D870 - mov r0, #0 - mov r1, #0xe - bl AddTask -_0600D870: - mov r0, #0 - mov r1, #0x14 - bl AddTask - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600D884: .word 0x0380FFF4 - arm_func_end SetParentTbttTxq - - arm_func_start MacBugTxMp -MacBugTxMp: ; 0x0600D888 - stmdb sp!, {r4, lr} - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - ldr r2, _0600D8E8 ; =0x04808210 - mov r1, #0x1000 - ldrh r3, [r2] - mov r4, r0 - strh r1, [r2, #0x34] - mov r1, #0x64 - b _0600D8C0 -_0600D8B0: - ldrh r0, [r2] - cmp r3, r0 - bne _0600D8C8 - sub r1, r1, #1 -_0600D8C0: - cmp r1, #0 - bne _0600D8B0 -_0600D8C8: - ldr r1, _0600D8EC ; =0x04808244 - mov r0, #0 - strh r0, [r1] - bl WlIntrMpEnd - mov r0, r4 - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600D8E8: .word 0x04808210 -_0600D8EC: .word 0x04808244 - arm_func_end MacBugTxMp - - arm_func_start AdjustRingPointer -AdjustRingPointer: ; 0x0600D8F0 - ldr r1, _0600D910 ; =0x04805F60 - cmp r0, r1 - ldrhs r1, _0600D914 ; =0x0380FFF4 - ldrhs r1, [r1] - addhs r1, r1, #0x300 - ldrhsh r1, [r1, #0xde] - subhs r0, r0, r1 - bx lr - .align 2, 0 -_0600D910: .word 0x04805F60 -_0600D914: .word 0x0380FFF4 - arm_func_end AdjustRingPointer - - arm_func_start CheckKeyTxEnd -CheckKeyTxEnd: ; 0x0600D918 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0600D94C ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x2c - add r5, r0, #0x400 - add r0, r5, #0x50 - bl CheckKeyTxEndMain - mov r4, r0 - add r0, r5, #0x64 - bl CheckKeyTxEndMain - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600D94C: .word 0x0380FFF4 - arm_func_end CheckKeyTxEnd - - arm_func_start CheckKeyTxEndMain -CheckKeyTxEndMain: ; 0x0600D950 - stmdb sp!, {r4, lr} - ldrh r1, [r0] - mov r4, #0 - cmp r1, #2 - bne _0600D990 - ldr r2, _0600D9C0 ; =0x04808094 - ldr r3, [r0, #8] - ldr r1, _0600D9C4 ; =0x00003FFF - ldrh r2, [r2] - and r1, r3, r1 - mov r1, r1, lsr #1 - orr r1, r1, #0x8000 - cmp r1, r2 - movne r1, #1 - strneh r1, [r0] - orrne r4, r4, #1 -_0600D990: - ldrh r1, [r0] - cmp r1, #1 - bne _0600D9B4 - ldr r1, [r0, #8] - ldrh r1, [r1] - tst r1, #1 - beq _0600D9B4 - bl TxEndKeyData - orr r4, r4, #2 -_0600D9B4: - mov r0, r4 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600D9C0: .word 0x04808094 -_0600D9C4: .word 0x00003FFF - arm_func_end CheckKeyTxEndMain - - arm_func_start InitializeIntr -InitializeIntr: ; 0x0600D9C8 - stmdb sp!, {r3, lr} - ldr r1, _0600D9E8 ; =WlIntr - mov r0, #0x1000000 - bl __VENEER_OS_SetIrqFunction - mov r0, #0x1000000 - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600D9E8: .word WlIntr - arm_func_end InitializeIntr - - arm_func_start __VENEER_OS_SetIrqFunction -__VENEER_OS_SetIrqFunction: ; 0x0600D9EC - ldr pc, _0600D9F0 ; =OS_SetIrqFunction - .align 2, 0 -_0600D9F0: .word OS_SetIrqFunction - arm_func_end __VENEER_OS_SetIrqFunction - - arm_func_start ReleaseIntr -ReleaseIntr: ; 0x0600D9F4 - stmdb sp!, {r3, lr} - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - mov r0, #0x1000000 - mov r1, #0 - bl __VENEER_OS_SetIrqFunction - ldmia sp!, {r3, lr} - bx lr - arm_func_end ReleaseIntr - - arm_func_start WlIntrTxBeaconTask -WlIntrTxBeaconTask: ; 0x0600DA14 - stmdb sp!, {r3, lr} - ldr r0, _0600DA5C ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0xe8] - cmp r0, #0 - beq _0600DA34 - bl UpdateGameInfoElement -_0600DA34: - ldr r0, _0600DA5C ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x3a] - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1f - beq _0600DA54 - bl MLME_IssueBeaconSendIndication -_0600DA54: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600DA5C: .word 0x0380FFF4 - arm_func_end WlIntrTxBeaconTask - - arm_func_start WlIntrTxEndTask -WlIntrTxEndTask: ; 0x0600DA60 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r7, _0600DC2C ; =0x0380FFF4 - mov sl, #2 - ldr r1, [r7] - mov fp, #0 - add r0, r1, #0x2c - add r8, r0, #0x400 - ldr r0, _0600DC30 ; =0x04808032 - add r6, r1, #0x344 - add r4, r0, #0x6e -_0600DA88: - mov r0, #0x14 - mov r5, sl, lsl #2 - mla sb, sl, r0, r8 - add r0, r5, #0x4800000 - add r0, r0, #0x8000 - ldrh r0, [r0, #0xa0] - tst r0, #0x8000 - bne _0600DC1C - ldrh r0, [sb] - cmp r0, #0 - beq _0600DC1C - ldr r1, [sb, #0xc] - cmp r1, #0 - beq _0600DBFC - ldr r0, [sb, #8] - ldrh r0, [r0] - strh r0, [r1, #8] - ldr r1, [sb, #8] - ldr r0, [sb, #0xc] - ldrh r1, [r1, #0xc] - strh r1, [r0, #0x14] - ldr r0, [sb, #8] - ldrh r1, [r0, #0xc] - tst r1, #0x4000 - beq _0600DBC8 - ldr r1, [r7] - add r1, r1, #0x600 - ldrh r1, [r1, #0x90] - tst r1, #8 - beq _0600DBAC - ldrh r1, [r0, #0xa] - add r2, r0, #0xc - add r1, r2, r1 - sub r1, r1, #7 - bic r2, r1, #1 - ldrh r1, [r2] - cmp r1, #0 - ldreqh r1, [r2, #2] - cmpeq r1, #0 - bne _0600DBAC - ldr r0, _0600DC30 ; =0x04808032 - mov r1, #0x8000 - strh fp, [r0] - strh r1, [r0] - ldrh r0, [r6, #0xba] - add r0, r0, #1 - strh r0, [r6, #0xba] - ldr r0, [sb, #0xc] - bl CheckFrameTimeout - cmp r0, #0 - beq _0600DB90 - ldr r2, [sb, #0xc] - mov r0, #2 - strh r0, [r2, #8] - ldrh r0, [sb, #4] - mov r1, #1 - add r0, r0, #1 - strh r0, [sb, #4] - ldrh r0, [r8, #0xae] - add r0, r0, #1 - strh r0, [r8, #0xae] - ldr r0, [sb, #0xc] - ldr r2, [sb, #0x10] - mov lr, pc - bx r2 - b _0600DC1C -_0600DB90: - ldr r1, [sb, #0xc] - mov r0, #0 - strh r0, [r1, #0xc] - ldrh r0, [r5, r4] - orr r0, r0, #0x8000 - strh r0, [r5, r4] - b _0600DC1C -_0600DBAC: - ldrh r0, [r0, #4] - ldr r2, [sb, #0xc] - and r0, r0, #0xff - ldrh r1, [r2, #0xc] - add r0, r1, r0 - strh r0, [r2, #0xc] - b _0600DBD8 -_0600DBC8: - ldrh r1, [r0, #4] - ldr r0, [sb, #0xc] - and r1, r1, #0xff - strh r1, [r0, #0xc] -_0600DBD8: - ldrh r0, [sb, #4] - mov r1, #2 - add r0, r0, #1 - strh r0, [sb, #4] - ldr r0, [sb, #0xc] - ldr r2, [sb, #0x10] - mov lr, pc - bx r2 - b _0600DC1C -_0600DBFC: - ldrh r0, [sb, #4] - mov r1, #3 - add r0, r0, #1 - strh r0, [sb, #4] - ldr r0, [sb, #8] - ldr r2, [sb, #0x10] - mov lr, pc - bx r2 -_0600DC1C: - subs sl, sl, #1 - bpl _0600DA88 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0600DC2C: .word 0x0380FFF4 -_0600DC30: .word 0x04808032 - arm_func_end WlIntrTxEndTask - - arm_func_start WlIntrRxEndTask -WlIntrRxEndTask: ; 0x0600DC34 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, _0600DF84 ; =0x0380FFF4 - ldr r4, [r0] - add r0, r4, #0xdc - add r5, r0, #0x400 -_0600DC48: - ldr r1, _0600DF88 ; =0x0480805A - ldrh r0, [r5, #4] - ldrh r6, [r1] - cmp r6, r0 - beq _0600DF7C - ldr r0, _0600DF8C ; =0x000008C6 - cmp r6, r0 - blo _0600DC6C - bl WUpdateCounter -_0600DC6C: - mov r6, r6, lsl #1 - add r0, r6, #0x4000 - add r7, r0, #0x4800000 - add r0, r7, #2 - bl AdjustRingPointer - add r1, r6, #0x4800000 - add r1, r1, #0x4000 - ldrh r2, [r1] - ldr r1, _0600DF90 ; =0x0000FFFF - ldrh r6, [r0] - cmp r2, r1 - ldreq r0, _0600DF88 ; =0x0480805A - streqh r6, [r0] - beq _0600DC48 - add r0, r7, #8 - bl AdjustRingPointer - ldrh r1, [r0] - mov r0, r7 - bl TakeoutRxFrame - ldr r1, _0600DF88 ; =0x0480805A - movs r8, r0 - strh r6, [r1] - bne _0600DCF0 - ldrh r0, [r7] - and r0, r0, #0xf - cmp r0, #0xc - bne _0600DCE4 - mov r0, #0x10 - bl SetFatalErr - b _0600DC48 -_0600DCE4: - mov r0, #8 - bl SetFatalErr - b _0600DC48 -_0600DCF0: - ldr r0, _0600DF84 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #8 - beq _0600DD18 - ldrh r0, [r8, #0x14] - tst r0, #0x4000 - movne r0, #0 - strneh r0, [r5, #2] -_0600DD18: - ldrh r0, [r8, #8] - mov r6, #1 - tst r0, #0x200 - beq _0600DD70 - ldrh r0, [r8, #0x14] - mov r0, r0, lsl #0x15 - mov r0, r0, lsr #0x1f - cmp r0, #1 - beq _0600DD4C - ldrh r0, [r8, #0x2a] - mov r0, r0, lsl #0x1c - movs r0, r0, lsr #0x1c - beq _0600DF1C -_0600DD4C: - add r0, r4, #0x188 - add r1, r4, #0x1e8 - sub r2, r8, #0x10 - mov r6, #0 - bl MoveHeapBuf - mov r0, #2 - mov r1, #9 - bl AddTask - b _0600DF1C -_0600DD70: - and r0, r0, #0xf - cmp r0, #0xf - addls pc, pc, r0, lsl #2 - b _0600DF1C -_0600DD80: ; jump table - b _0600DE0C ; case 0 - b _0600DDF4 ; case 1 - b _0600DF1C ; case 2 - b _0600DF1C ; case 3 - b _0600DF1C ; case 4 - b _0600DE3C ; case 5 - b _0600DF1C ; case 6 - b _0600DF1C ; case 7 - b _0600DDC0 ; case 8 - b _0600DF1C ; case 9 - b _0600DF1C ; case 10 - b _0600DF1C ; case 11 - b _0600DE94 ; case 12 - b _0600DEE8 ; case 13 - b _0600DE74 ; case 14 - b _0600DE74 ; case 15 -_0600DDC0: - ldrh r0, [r8, #0x14] - and r0, r0, #0xf - cmp r0, #8 - bne _0600DF1C - add r0, r4, #0x188 - add r1, r4, #0x1c4 - sub r2, r8, #0x10 - mov r6, #0 - bl MoveHeapBuf - mov r0, #2 - mov r1, #6 - bl AddTask - b _0600DF1C -_0600DDF4: - ldrh r0, [r8, #0x14] - cmp r0, #0x80 - bne _0600DF1C - mov r0, r8 - bl RxBeaconFrame - b _0600DF1C -_0600DE0C: - ldrh r0, [r8, #0x14] - tst r0, #0xf - bne _0600DF1C - add r0, r4, #0x188 - add r1, r4, #0x1dc - sub r2, r8, #0x10 - mov r6, #0 - bl MoveHeapBuf - mov r0, #1 - mov r1, #7 - bl AddTask - b _0600DF1C -_0600DE3C: - ldrh r1, [r8, #0x14] - rsb r0, r6, #0xe800 - and r0, r1, r0 - cmp r0, #0xa4 - bne _0600DF1C - add r0, r4, #0x188 - add r1, r4, #0x1dc - sub r2, r8, #0x10 - mov r6, #0 - bl MoveHeapBuf - mov r0, #1 - mov r1, #7 - bl AddTask - b _0600DF1C -_0600DE74: - ldrh r1, [r8, #0x14] - ldr r0, _0600DF94 ; =0x0000E7BF - and r0, r1, r0 - cmp r0, #0x118 - bne _0600DF1C - mov r0, r8 - bl RxKeyDataFrame - b _0600DF1C -_0600DE94: - ldrh r1, [r8, #0x14] - rsb r0, r6, #0xe800 - and r0, r1, r0 - cmp r0, #0x228 - bne _0600DF1C - ldr r0, _0600DF84 ; =0x0380FFF4 - ldr r1, _0600DF84 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x54] - cmp r0, #0 - ldreq r0, _0600DF98 ; =0x0480803C - streqh r6, [r0] - ldr r2, [r1] - mov r0, r8 - ldr r1, [r2, #0x5ac] - add r1, r1, #1 - str r1, [r2, #0x5ac] - bl RxMpFrame - mov r6, r0 - b _0600DF1C -_0600DEE8: - ldrh r1, [r8, #0x14] - rsb r0, r6, #0xe800 - and r0, r1, r0 - cmp r0, #0x218 - bne _0600DF1C - ldr r1, _0600DF84 ; =0x0380FFF4 - mov r0, r8 - ldr r2, [r1] - ldr r1, [r2, #0x5b0] - add r1, r1, #1 - str r1, [r2, #0x5b0] - bl RxMpAckFrame - mov r6, r0 -_0600DF1C: - cmp r6, #0 - beq _0600DF30 - add r0, r4, #0x188 - sub r1, r8, #0x10 - bl ReleaseHeapBuf -_0600DF30: - ldr r3, _0600DF84 ; =0x0380FFF4 - ldr r0, [r3] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #1 - beq _0600DC48 - ldr r2, _0600DF90 ; =0x0000FFFF - ldr r1, _0600DF9C ; =0x04805F60 - mov r6, #0 -_0600DF54: - cmp r7, r1 - ldrhs r0, [r3] - add r6, r6, #1 - addhs r0, r0, #0x300 - ldrhsh r0, [r0, #0xde] - subhs r7, r7, r0 - cmp r6, #7 - strh r2, [r7], #2 - blo _0600DF54 - b _0600DC48 -_0600DF7C: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_0600DF84: .word 0x0380FFF4 -_0600DF88: .word 0x0480805A -_0600DF8C: .word 0x000008C6 -_0600DF90: .word 0x0000FFFF -_0600DF94: .word 0x0000E7BF -_0600DF98: .word 0x0480803C -_0600DF9C: .word 0x04805F60 - arm_func_end WlIntrRxEndTask - - arm_func_start WlIntrMpEndTask -WlIntrMpEndTask: ; 0x0600DFA0 - stmdb sp!, {r4, lr} - ldr r0, _0600E078 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x2c - add r4, r0, #0x400 - ldrh r0, [r4, #0x3c] - cmp r0, #0 - beq _0600E070 - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x44] - ldrh r1, [r1, #0x10] - ldrh r0, [r0, #2] - cmp r1, r0 - beq _0600DFDC - bl WlIntrRxEndTask -_0600DFDC: - ldr r0, [r4, #0x44] - ldrh r0, [r0, #4] - ands r2, r0, #0xff - ldr r0, _0600E078 ; =0x0380FFF4 - ldrne r1, [r0] - ldrne r0, [r1, #0x5a0] - addne r0, r0, r2 - ldreq r1, [r0] - ldreq r0, [r1, #0x5a0] - addeq r0, r0, #1 - str r0, [r1, #0x5a0] - ldrh r1, [r4, #0x40] - ldr r0, _0600E078 ; =0x0380FFF4 - add r1, r1, #1 - strh r1, [r4, #0x40] - ldr ip, [r4, #0x90] - ldr r1, [r4, #0x44] - ldrh r3, [ip, #0x10] - ldrh r2, [r1, #2] - mov r1, #0 - eor r2, r3, r2 - strh r2, [ip, #0x12] - ldr r2, [r4, #0x90] - ldrh r2, [r2, #0x10] - strh r2, [r4, #0xa0] - strh r1, [r4, #0x3c] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0xea] - cmp r0, #0 - beq _0600E05C - bl WDisableTmpttPowerSave -_0600E05C: - ldr r0, _0600E078 ; =0x0380FFF4 - ldr r1, [r4, #0x90] - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect -_0600E070: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600E078: .word 0x0380FFF4 - arm_func_end WlIntrMpEndTask - - arm_func_start SetParentTbttTxqTask -SetParentTbttTxqTask: ; 0x0600E07C - stmdb sp!, {r4, lr} - ldr r0, _0600E130 ; =0x0380FFF4 - ldr r2, _0600E134 ; =0x04808088 - ldr r1, [r0] - ldrh r0, [r2] - add r4, r1, #0x17c - cmp r0, #0 - bne _0600E0BC - ldrh r0, [r4, #0x38] - cmp r0, #0 - beq _0600E0BC - mov r1, #8 - mov r0, #2 - strh r1, [r2, #0x26] - bl TxqPri - b _0600E128 -_0600E0BC: - add r0, r1, #0x500 - ldrh r1, [r0, #0x32] - ldrh r2, [r0, #0x2e] - mvn r0, r1 - tst r2, r0 - bne _0600E0F4 - ldr r0, _0600E138 ; =0x048080AE - mov r1, #8 - strh r1, [r0] - ldrh r0, [r4, #0x38] - cmp r0, #0 - beq _0600E0F4 - mov r0, #2 - bl TxqPri -_0600E0F4: - ldr r0, _0600E138 ; =0x048080AE - mov r1, #5 - strh r1, [r0] - ldrh r0, [r4, #0x2c] - cmp r0, #0 - beq _0600E114 - mov r0, #1 - bl TxqPri -_0600E114: - ldrh r0, [r4, #0x20] - cmp r0, #0 - beq _0600E128 - mov r0, #0 - bl TxqPri -_0600E128: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600E130: .word 0x0380FFF4 -_0600E134: .word 0x04808088 -_0600E138: .word 0x048080AE - arm_func_end SetParentTbttTxqTask - - arm_func_start TakeoutRxFrame -TakeoutRxFrame: ; 0x0600E13C - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _0600E1A8 ; =0x0380FFF4 - mov r5, r1 - ldr r1, [r2] - mov r6, r0 - add r0, r1, #0x188 - add r1, r5, #0x22 - bl AllocateHeapBuf - movs r4, r0 - moveq r0, #0 - beq _0600E1A0 - mov r1, r6 - add r0, r4, #0x18 - add r2, r5, #0xc - bl DMA_Read - sub r0, r5, #0x18 - strh r0, [r4, #0x16] - ldrh r0, [r4, #0x22] - ldrh r1, [r4, #0x1e] - and r0, r0, #0xff - and r1, r1, #0xff - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #8 - strh r0, [r4, #0x1e] - add r0, r4, #0x10 -_0600E1A0: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600E1A8: .word 0x0380FFF4 - arm_func_end TakeoutRxFrame - - arm_func_start CAM_Search -CAM_Search: ; 0x0600E1AC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldrh r0, [r8] - tst r0, #1 - movne r0, #0 - bne _0600E248 - ldr r4, _0600E250 ; =0x0380FFF4 - ldr r0, [r4] - add r1, r0, #0x500 - ldrh r1, [r1, #0x2c] - cmp r1, #1 - bls _0600E244 - ldr r1, [r0, #0x31c] - mov r7, #0 - add r5, r1, #0x1c - mov r6, #1 - b _0600E234 -_0600E1F0: - ldrh r1, [r5] - cmp r1, #0 - beq _0600E22C - mov r1, r8 - add r0, r5, #4 - bl MatchMacAdrs - cmp r0, #0 - movne r0, r6 - bne _0600E248 - ldr r0, [r4] - add r7, r7, #1 - add r1, r0, #0x500 - ldrh r1, [r1, #0x2c] - cmp r7, r1 - bhs _0600E244 -_0600E22C: - add r6, r6, #1 - add r5, r5, #0x1c -_0600E234: - add r1, r0, #0x300 - ldrh r1, [r1, #0x22] - cmp r6, r1 - blo _0600E1F0 -_0600E244: - mov r0, #0xff -_0600E248: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_0600E250: .word 0x0380FFF4 - arm_func_end CAM_Search - - arm_func_start CAM_SearchAdd -CAM_SearchAdd: ; 0x0600E254 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r5, _0600E390 ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r5] - ldrh r1, [r4] - add r6, r0, #0x31c - tst r1, #1 - movne r0, #0 - bne _0600E388 - add r1, r0, #0x500 - ldrh r1, [r1, #0x2c] - mov r8, #1 - cmp r1, #1 - bls _0600E304 - ldr r1, [r6] - mov sl, #0 - mov sb, sl - add r7, r1, #0x1c - b _0600E2F0 -_0600E2A0: - ldrh r1, [r7] - cmp r1, #0 - beq _0600E2E0 - mov r1, r4 - add r0, r7, #4 - bl MatchMacAdrs - cmp r0, #0 - movne r0, r8 - bne _0600E388 - ldr r0, [r5] - add sb, sb, #1 - add r1, r0, #0x500 - ldrh r1, [r1, #0x2c] - cmp sb, r1 - bhs _0600E2FC - b _0600E2E8 -_0600E2E0: - cmp sl, #0 - moveq sl, r8 -_0600E2E8: - add r8, r8, #1 - add r7, r7, #0x1c -_0600E2F0: - ldrh r1, [r6, #6] - cmp r8, r1 - blo _0600E2A0 -_0600E2FC: - cmp sl, #0 - movne r8, sl -_0600E304: - add r0, r0, #0x300 - ldrh r0, [r0, #0x22] - cmp r8, r0 - blo _0600E378 - ldr r7, [r6] - ldrh r5, [r6, #6] - mov r3, #0x10000 - mov r6, #1 - mov r8, #0 - mov r0, #0x1c - b _0600E364 -_0600E330: - mul r2, r6, r0 - ldrh r1, [r7, r2] - add r2, r7, r2 - cmp r1, #0x30 - bhs _0600E360 - ldrh r1, [r2, #0x16] - cmp r1, #0 - bne _0600E360 - ldrh r1, [r2, #0x18] - cmp r3, r1 - movhi r3, r1 - movhi r8, r6 -_0600E360: - add r6, r6, #1 -_0600E364: - cmp r6, r5 - blo _0600E330 - cmp r8, #0 - moveq r0, #0xff - beq _0600E388 -_0600E378: - mov r0, r8 - mov r1, r4 - bl CAM_InitElement - mov r0, r8 -_0600E388: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_0600E390: .word 0x0380FFF4 - arm_func_end CAM_SearchAdd - - arm_func_start CAM_AddBcFrame -CAM_AddBcFrame: ; 0x0600E394 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _0600E3EC ; =0x0380FFF4 - mov r7, r0 - ldr r2, [r2] - mov r0, #0x1000000 - add r4, r2, #0x1ac - mov r6, r1 - bl __VENEER_OS_DisableIrqMask - ldrh r1, [r4, #8] - mov r5, r0 - cmp r1, #0 - bne _0600E3CC - mov r0, #0 - bl CAM_SetTIMElementBitmap -_0600E3CC: - mov r0, r7 - mov r1, r4 - mov r2, r6 - bl MoveHeapBuf - mov r0, r5 - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600E3EC: .word 0x0380FFF4 - arm_func_end CAM_AddBcFrame - - arm_func_start CAM_IncFrameCount -CAM_IncFrameCount: ; 0x0600E3F0 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _0600E47C ; =0x0380FFF4 - ldrh r5, [r0, #2] - ldr r0, [r1] - mov r1, #0x1c - ldr r2, [r0, #0x31c] - mov r0, #0x1000000 - mla r6, r5, r1, r2 - bl __VENEER_OS_DisableIrqMask - ldr r1, _0600E47C ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #1 - ldreqh r0, [r6, #0x16] - cmpeq r0, #0 - bne _0600E440 - mov r0, r5 - bl CAM_SetTIMElementBitmap -_0600E440: - ldrh r1, [r6, #0x16] - mov r0, r4 - add r1, r1, #1 - strh r1, [r6, #0x16] - bl __VENEER_OS_EnableIrqMask - ldr r0, _0600E47C ; =0x0380FFF4 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r0, [r0, #0x34] - tst r0, r1, lsl r5 - ldreqh r0, [r6, #0x1a] - streqh r0, [r6, #0x18] - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600E47C: .word 0x0380FFF4 - arm_func_end CAM_IncFrameCount - - arm_func_start CAM_DecFrameCount -CAM_DecFrameCount: ; 0x0600E480 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _0600E4EC ; =0x0380FFF4 - ldrh r5, [r0, #2] - ldr r0, [r1] - mov r1, #0x1c - ldr r2, [r0, #0x31c] - mov r0, #0x1000000 - mla r6, r5, r1, r2 - bl __VENEER_OS_DisableIrqMask - ldr r1, _0600E4EC ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #1 - ldreqh r0, [r6, #0x16] - cmpeq r0, #1 - bne _0600E4D0 - mov r0, r5 - bl CAM_ClrTIMElementBitmap -_0600E4D0: - ldrh r1, [r6, #0x16] - mov r0, r4 - sub r1, r1, #1 - strh r1, [r6, #0x16] - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600E4EC: .word 0x0380FFF4 - arm_func_end CAM_DecFrameCount - - arm_func_start CAM_SetStaState -CAM_SetStaState: ; 0x0600E4F0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #0x1000000 - mov r5, r1 - bl __VENEER_OS_DisableIrqMask - ldr r3, _0600E5D4 ; =0x0380FFF4 - mov r4, r0 - cmp r5, #0x40 - bhs _0600E570 - ldr r0, [r3] - mov r2, #1 - add r0, r0, #0x500 - ldrh r1, [r0, #0x30] - orr r1, r1, r2, lsl r6 - strh r1, [r0, #0x30] - ldr r0, [r3] - add r0, r0, #0x500 - ldrh r1, [r0, #0x32] - orr r1, r1, r2, lsl r6 - strh r1, [r0, #0x32] - ldr r0, [r3] - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #1 - bne _0600E5AC - mov r0, r6 - bl CAM_GetAID - cmp r0, #0 - beq _0600E5AC - mov r0, r6 - bl CAM_ReleaseAID - b _0600E5AC -_0600E570: - ldr r2, [r3] - mov r0, #1 - mvn r1, r0, lsl r6 - add r0, r2, #0x500 - ldrh r2, [r0, #0x32] - and r1, r2, r1 - strh r1, [r0, #0x32] - ldr r0, [r3] - add r0, r0, #0x500 - ldrh r0, [r0, #0x2e] - mov r0, r0, asr r6 - tst r0, #1 - beq _0600E5AC - mov r0, r6 - bl CAM_SetDoze -_0600E5AC: - ldr r1, _0600E5D4 ; =0x0380FFF4 - mov r0, #0x1c - ldr r2, [r1] - mul r1, r6, r0 - ldr r2, [r2, #0x31c] - mov r0, r4 - strh r5, [r2, r1] - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600E5D4: .word 0x0380FFF4 - arm_func_end CAM_SetStaState - - arm_func_start CAM_SetRSSI -CAM_SetRSSI: ; 0x0600E5D8 - ldr r3, _0600E5F4 ; =0x0380FFF4 - mov r2, #0x1c - ldr r3, [r3] - ldr r3, [r3, #0x31c] - mla r2, r0, r2, r3 - strh r1, [r2, #0xa] - bx lr - .align 2, 0 -_0600E5F4: .word 0x0380FFF4 - arm_func_end CAM_SetRSSI - - arm_func_start CAM_SetPowerMgtMode -CAM_SetPowerMgtMode: ; 0x0600E5F8 - ldr r3, _0600E648 ; =0x0380FFF4 - mov r2, #1 - ldr ip, [r3] - mvn r3, r2, lsl r0 - add r2, ip, #0x12c - add ip, r2, #0x400 - ldrh r2, [ip, #2] - and r2, r2, r3 - orr r0, r2, r1, lsl r0 - strh r0, [ip, #2] - ldrh r0, [ip, #6] - ldrh r1, [ip, #2] - mvn r0, r0 - tst r1, r0 - ldrne r0, _0600E64C ; =0x048080AC - mov r1, #8 - strneh r1, [r0] - ldreq r0, _0600E650 ; =0x048080AE - streqh r1, [r0] - bx lr - .align 2, 0 -_0600E648: .word 0x0380FFF4 -_0600E64C: .word 0x048080AC -_0600E650: .word 0x048080AE - arm_func_end CAM_SetPowerMgtMode - - arm_func_start CAM_SetDoze -CAM_SetDoze: ; 0x0600E654 - stmdb sp!, {r4, lr} - mov r4, r0 - bl CAM_GetStaState - cmp r0, #0x40 - bne _0600E688 - ldr r1, _0600E690 ; =0x0380FFF4 - mov r0, #1 - ldr r2, [r1] - mvn r1, r0, lsl r4 - add r0, r2, #0x500 - ldrh r2, [r0, #0x30] - and r1, r2, r1 - strh r1, [r0, #0x30] -_0600E688: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600E690: .word 0x0380FFF4 - arm_func_end CAM_SetDoze - - arm_func_start CAM_SetAwake -CAM_SetAwake: ; 0x0600E694 - ldr r1, _0600E6B4 ; =0x0380FFF4 - mov r2, #1 - ldr r1, [r1] - add r1, r1, #0x500 - ldrh r3, [r1, #0x30] - orr r0, r3, r2, lsl r0 - strh r0, [r1, #0x30] - bx lr - .align 2, 0 -_0600E6B4: .word 0x0380FFF4 - arm_func_end CAM_SetAwake - - arm_func_start CAM_SetCapaInfo -CAM_SetCapaInfo: ; 0x0600E6B8 - ldr r3, _0600E6D4 ; =0x0380FFF4 - mov r2, #0x1c - ldr r3, [r3] - ldr r3, [r3, #0x31c] - mla r2, r0, r2, r3 - strh r1, [r2, #0xc] - bx lr - .align 2, 0 -_0600E6D4: .word 0x0380FFF4 - arm_func_end CAM_SetCapaInfo - - arm_func_start CAM_SetSupRate -CAM_SetSupRate: ; 0x0600E6D8 - ldr r3, _0600E6F4 ; =0x0380FFF4 - mov r2, #0x1c - ldr r3, [r3] - ldr r3, [r3, #0x31c] - mla r2, r0, r2, r3 - strh r1, [r2, #0x10] - bx lr - .align 2, 0 -_0600E6F4: .word 0x0380FFF4 - arm_func_end CAM_SetSupRate - - arm_func_start CAM_SetLastSeqCtrl -CAM_SetLastSeqCtrl: ; 0x0600E6F8 - ldr r3, _0600E714 ; =0x0380FFF4 - mov r2, #0x1c - ldr r3, [r3] - ldr r3, [r3, #0x31c] - mla r2, r0, r2, r3 - strh r1, [r2, #0x14] - bx lr - .align 2, 0 -_0600E714: .word 0x0380FFF4 - arm_func_end CAM_SetLastSeqCtrl - - arm_func_start CAM_SetAuthSeed -CAM_SetAuthSeed: ; 0x0600E718 - ldr r3, _0600E734 ; =0x0380FFF4 - mov r2, #0x1c - ldr r3, [r3] - ldr r3, [r3, #0x31c] - mla r2, r0, r2, r3 - strh r1, [r2, #0xe] - bx lr - .align 2, 0 -_0600E734: .word 0x0380FFF4 - arm_func_end CAM_SetAuthSeed - - arm_func_start CAM_UpdateLifeTime -CAM_UpdateLifeTime: ; 0x0600E738 - ldr r2, _0600E758 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - ldrh r0, [r1, #0x1a] - strh r0, [r1, #0x18] - bx lr - .align 2, 0 -_0600E758: .word 0x0380FFF4 - arm_func_end CAM_UpdateLifeTime - - arm_func_start CAM_AllocateAID -CAM_AllocateAID: ; 0x0600E75C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _0600E808 ; =0x0380FFF4 - mov r7, r0 - ldr r1, [r1] - mov r0, #0x1000000 - add r1, r1, #0x12c - add r4, r1, #0x400 - bl __VENEER_OS_DisableIrqMask - mov r6, r0 - mov r5, #1 - mov r1, #2 - b _0600E7EC -_0600E78C: - ldrh r0, [r4, #0xe] - tst r0, r1 - bne _0600E7E4 - orr r0, r0, r1 - strh r0, [r4, #0xe] - ldrh r0, [r4, #0xc] - add r0, r0, #1 - strh r0, [r4, #0xc] - ldrh r0, [r4, #0xc] - cmp r0, #1 - bne _0600E7BC - bl WEnableTmpttPowerSave -_0600E7BC: - ldr r0, _0600E808 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r0] - mov r0, r6 - ldr r2, [r2, #0x31c] - mla r1, r7, r1, r2 - strh r5, [r1, #2] - bl __VENEER_OS_EnableIrqMask - mov r0, r5 - b _0600E800 -_0600E7E4: - add r5, r5, #1 - mov r1, r1, lsl #1 -_0600E7EC: - cmp r5, #0x10 - blo _0600E78C - mov r0, r6 - bl __VENEER_OS_EnableIrqMask - mov r0, #0 -_0600E800: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600E808: .word 0x0380FFF4 - arm_func_end CAM_AllocateAID - - arm_func_start CAM_ReleaseAID -CAM_ReleaseAID: ; 0x0600E80C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0600E888 ; =0x0380FFF4 - mov r5, r0 - ldr r4, [r1] - bl CAM_ClrTIMElementBitmap - mov r0, r5 - bl CAM_GetAID - cmp r0, #0 - beq _0600E880 - ldr r1, _0600E888 ; =0x0380FFF4 - mov r2, #1 - ldr r3, [r1] - mov r1, #0x1c - ldr r3, [r3, #0x31c] - mov ip, #0 - mla r1, r5, r1, r3 - strh ip, [r1, #2] - add r1, r4, #0x500 - ldrh r3, [r1, #0x3a] - mvn r0, r2, lsl r0 - and r0, r3, r0 - strh r0, [r1, #0x3a] - ldrh r0, [r1, #0x38] - sub r0, r0, #1 - strh r0, [r1, #0x38] - ldrh r0, [r1, #0x38] - cmp r0, #0 - bne _0600E880 - bl WDisableTmpttPowerSave -_0600E880: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600E888: .word 0x0380FFF4 - arm_func_end CAM_ReleaseAID - - arm_func_start CAM_GetStaState -CAM_GetStaState: ; 0x0600E88C - ldr r2, _0600E8A8 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - mul r1, r0, r1 - ldr r0, [r2, #0x31c] - ldrh r0, [r0, r1] - bx lr - .align 2, 0 -_0600E8A8: .word 0x0380FFF4 - arm_func_end CAM_GetStaState - - arm_func_start CAM_IsActive -CAM_IsActive: ; 0x0600E8AC - ldr r1, _0600E8C8 ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x500 - ldrh r1, [r1, #0x30] - mov r0, r1, asr r0 - and r0, r0, #1 - bx lr - .align 2, 0 -_0600E8C8: .word 0x0380FFF4 - arm_func_end CAM_IsActive - - arm_func_start CAM_GetPowerMgtMode -CAM_GetPowerMgtMode: ; 0x0600E8CC - ldr r1, _0600E8E8 ; =0x0380FFF4 - ldr r1, [r1] - add r1, r1, #0x500 - ldrh r1, [r1, #0x2e] - mov r0, r1, asr r0 - and r0, r0, #1 - bx lr - .align 2, 0 -_0600E8E8: .word 0x0380FFF4 - arm_func_end CAM_GetPowerMgtMode - - arm_func_start CAM_GetMacAdrs -CAM_GetMacAdrs: ; 0x0600E8EC - ldr r2, _0600E908 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - add r0, r1, #4 - bx lr - .align 2, 0 -_0600E908: .word 0x0380FFF4 - arm_func_end CAM_GetMacAdrs - - arm_func_start CAM_GetAuthSeed -CAM_GetAuthSeed: ; 0x0600E90C - ldr r2, _0600E928 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - ldrh r0, [r1, #0xe] - bx lr - .align 2, 0 -_0600E928: .word 0x0380FFF4 - arm_func_end CAM_GetAuthSeed - - arm_func_start CAM_GetLastSeqCtrl -CAM_GetLastSeqCtrl: ; 0x0600E92C - ldr r2, _0600E948 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - ldrh r0, [r1, #0x14] - bx lr - .align 2, 0 -_0600E948: .word 0x0380FFF4 - arm_func_end CAM_GetLastSeqCtrl - - arm_func_start CAM_GetTxRate -CAM_GetTxRate: ; 0x0600E94C - ldr r2, _0600E974 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - ldrh r0, [r1, #0x10] - tst r0, #2 - movne r0, #0x14 - moveq r0, #0xa - bx lr - .align 2, 0 -_0600E974: .word 0x0380FFF4 - arm_func_end CAM_GetTxRate - - arm_func_start CAM_GetAID -CAM_GetAID: ; 0x0600E978 - ldr r2, _0600E994 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - ldrh r0, [r1, #2] - bx lr - .align 2, 0 -_0600E994: .word 0x0380FFF4 - arm_func_end CAM_GetAID - - arm_func_start CAM_GetFrameCount -CAM_GetFrameCount: ; 0x0600E998 - ldr r2, _0600E9B4 ; =0x0380FFF4 - mov r1, #0x1c - ldr r2, [r2] - ldr r2, [r2, #0x31c] - mla r1, r0, r1, r2 - ldrh r0, [r1, #0x16] - bx lr - .align 2, 0 -_0600E9B4: .word 0x0380FFF4 - arm_func_end CAM_GetFrameCount - - arm_func_start CAM_SetTIMElementBitmap -CAM_SetTIMElementBitmap: ; 0x0600E9B8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl CAM_GetStaState - cmp r0, #0x40 - bne _0600EA64 - ldr r0, _0600EA6C ; =0x0380FFF4 - mov r1, #1 - ldr r2, [r0] - add r0, r2, #0x500 - ldrh r0, [r0, #0x34] - tst r0, r1, lsl r5 - bne _0600EA64 - add r0, r2, #0x300 - ldrh r2, [r0, #0xd8] - ldr r1, _0600EA70 ; =0x0480425C - mov r0, #0x1000000 - add r6, r2, r1 - bl __VENEER_OS_DisableIrqMask - mov r4, r0 - cmp r5, #0 - bne _0600EA28 - add r0, r6, #4 - bl WL_ReadByte - orr r1, r0, #1 - add r0, r6, #4 - and r1, r1, #0xff - bl WL_WriteByte - b _0600EA5C -_0600EA28: - mov r0, r5 - bl CAM_GetAID - mov r5, r0 - add r0, r6, #5 - add r6, r0, r5, lsr #3 - mov r0, r6 - bl WL_ReadByte - and r1, r5, #7 - mov r2, #1 - orr r1, r0, r2, lsl r1 - mov r0, r6 - and r1, r1, #0xff - bl WL_WriteByte -_0600EA5C: - mov r0, r4 - bl __VENEER_OS_EnableIrqMask -_0600EA64: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600EA6C: .word 0x0380FFF4 -_0600EA70: .word 0x0480425C - arm_func_end CAM_SetTIMElementBitmap - - arm_func_start CAM_ClrTIMElementBitmap -CAM_ClrTIMElementBitmap: ; 0x0600EA74 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl CAM_GetStaState - cmp r0, #0x40 - bne _0600EB10 - ldr r0, _0600EB18 ; =0x0380FFF4 - ldr r2, _0600EB1C ; =0x0480425C - ldr r1, [r0] - mov r0, #0x1000000 - add r1, r1, #0x300 - ldrh r1, [r1, #0xd8] - add r6, r1, r2 - bl __VENEER_OS_DisableIrqMask - mov r4, r0 - cmp r5, #0 - bne _0600EAD0 - add r0, r6, #4 - bl WL_ReadByte - and r1, r0, #0xfe - add r0, r6, #4 - and r1, r1, #0xff - bl WL_WriteByte - b _0600EB08 -_0600EAD0: - mov r0, r5 - bl CAM_GetAID - mov r5, r0 - add r0, r6, #5 - add r6, r0, r5, lsr #3 - mov r0, r6 - bl WL_ReadByte - and r1, r5, #7 - mov r2, #1 - mvn r1, r2, lsl r1 - and r1, r1, r0 - mov r0, r6 - and r1, r1, #0xff - bl WL_WriteByte -_0600EB08: - mov r0, r4 - bl __VENEER_OS_EnableIrqMask -_0600EB10: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600EB18: .word 0x0380FFF4 -_0600EB1C: .word 0x0480425C - arm_func_end CAM_ClrTIMElementBitmap - - arm_func_start CAM_TimerTask -CAM_TimerTask: ; 0x0600EB20 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr fp, _0600ECD0 ; =0x0380FFF4 - mov sb, #0 - ldr r2, [fp] - mov r8, #1 - ldr r1, [r2, #0x31c] - add r0, r2, #0x500 - ldrh sl, [r0, #0x2c] - add r0, r2, #0x12c - add r7, r1, #0x1c - add r5, r0, #0x400 - add r4, r2, #0x300 - b _0600ECBC -_0600EB54: - ldrh r0, [r7] - cmp r0, #0 - beq _0600ECAC - ldrh r1, [r7, #0x18] - cmp r1, #0 - ldrne r0, _0600ECD4 ; =0x0000FFFF - cmpne r1, r0 - beq _0600ECA8 - sub r0, r1, #1 - strh r0, [r7, #0x18] - ldrh r0, [r7, #0x18] - cmp r0, #0 - bne _0600ECA8 - ldrh r0, [r7] - cmp r0, #0x20 - blo _0600EC94 - mov r0, r8 - bl CAM_GetStaState - mov r6, r0 - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x20 - bl CAM_SetStaState - mov r0, r8 - bl DeleteTxFrames - ldrh r0, [r4, #0x50] - cmp r0, #1 - bne _0600EC44 - cmp r6, #0x20 - bls _0600EC94 - ldr r1, [fp] - mov r0, r8, lsl #0x10 - add r3, r1, #0x500 - ldrh r6, [r3, #0x34] - mov r2, #1 - orr r2, r6, r2, lsl r8 - strh r2, [r3, #0x34] - mov r0, r0, lsr #0x10 - mov r1, #0 - bl CAM_SetPowerMgtMode - ldr r1, [fp] - add r0, r7, #4 - add r3, r1, #0x500 - mov r1, #1 - ldrh r6, [r3, #0x30] - mov r2, r1 - orr r2, r6, r2, lsl r8 - strh r2, [r3, #0x30] - mov r2, #0 - bl MakeDeAuthFrame - cmp r0, #0 - mov r1, #1 - beq _0600EC38 - strh r1, [r0] - bl TxManCtrlFrame - add sb, sb, #1 - b _0600ECB4 -_0600EC38: - add r0, r7, #4 - bl MLME_IssueDeAuthIndication - b _0600EC94 -_0600EC44: - ldrh r0, [r4, #0xcc] - cmp r8, r0 - bne _0600EC94 - add r0, r7, #4 - mov r1, #1 - mov r2, #0 - bl MakeDeAuthFrame - cmp r0, #0 - beq _0600EC7C - mov r1, #1 - strh r1, [r0] - bl TxManCtrlFrame - add sb, sb, #1 - b _0600ECB4 -_0600EC7C: - mov r0, #0x20 - bl WSetStaState - bl WClearAids - add r0, r7, #4 - mov r1, #1 - bl MLME_IssueDeAuthIndication -_0600EC94: - mov r0, #0 - strh r0, [r7] - ldrh r0, [r5] - sub r0, r0, #1 - strh r0, [r5] -_0600ECA8: - add sb, sb, #1 -_0600ECAC: - cmp sb, sl - bhs _0600ECC8 -_0600ECB4: - add r8, r8, #1 - add r7, r7, #0x1c -_0600ECBC: - ldrh r0, [r4, #0x22] - cmp r8, r0 - blo _0600EB54 -_0600ECC8: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0600ECD0: .word 0x0380FFF4 -_0600ECD4: .word 0x0000FFFF - arm_func_end CAM_TimerTask - - arm_func_start CAM_Delete -CAM_Delete: ; 0x0600ECD8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl DeleteTxFrames - ldr r2, _0600ED1C ; =0x0380FFF4 - mov r0, #0x1c - ldr r1, [r2] - mul r0, r4, r0 - ldr r1, [r1, #0x31c] - mov r3, #0 - strh r3, [r1, r0] - ldr r0, [r2] - add r0, r0, #0x500 - ldrh r1, [r0, #0x2c] - sub r1, r1, #1 - strh r1, [r0, #0x2c] - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600ED1C: .word 0x0380FFF4 - arm_func_end CAM_Delete - - arm_func_start InitializeCAM -InitializeCAM: ; 0x0600ED20 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0600EDB0 ; =0x0380FFF4 - mov r2, #0x1c - ldr r3, [r0] - mov r0, #0 - add r1, r3, #0x300 - ldrh r5, [r1, #0x22] - ldr r4, [r3, #0x31c] - mul r2, r5, r2 - mov r1, r4 - bl __VENEER_MIi_CpuClear16 - ldr r1, _0600EDB0 ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r1] - mov r2, #0x10 - add r1, r1, #0x12c - add r1, r1, #0x400 - bl __VENEER_MIi_CpuClear16 - ldr r2, _0600EDB4 ; =0x0000FFFF - mov r3, #1 - strh r2, [r4, #0x1a] - mov r0, #0x1c - b _0600ED88 -_0600ED7C: - mla r1, r3, r0, r4 - strh r2, [r1, #0x1a] - add r3, r3, #1 -_0600ED88: - cmp r3, r5 - blo _0600ED7C - ldr r1, _0600EDB8 ; =BC_ADRS - mov r0, #0 - bl CAM_InitElement - mov r0, #0 - mov r1, #0x40 - bl CAM_SetStaState - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600EDB0: .word 0x0380FFF4 -_0600EDB4: .word 0x0000FFFF -_0600EDB8: .word BC_ADRS - arm_func_end InitializeCAM - - arm_func_start InitCAM -InitCAM: ; 0x0600EDBC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _0600EE3C ; =0x0380FFF4 - mov r6, #1 - ldr r2, [r0] - mov sl, #0 - add r1, r2, #0x300 - add r0, r2, #0x12c - ldr r4, [r2, #0x31c] - ldrh r7, [r1, #0x22] - add r5, r0, #0x400 - mov sb, #0x1a - mov r8, #0x1c - b _0600EE04 -_0600EDF0: - mla r1, r6, r8, r4 - mov r0, sl - mov r2, sb - bl __VENEER_MIi_CpuClear16 - add r6, r6, #1 -_0600EE04: - cmp r6, r7 - blo _0600EDF0 - mov r2, #1 - strh r2, [r5] - mov r1, #0 - strh r1, [r5, #2] - ldr r0, _0600EE40 ; =0x0000FFFE - strh r2, [r5, #4] - strh r0, [r5, #6] - strh r1, [r5, #0xc] - strh r1, [r5, #8] - strh r2, [r5, #0xe] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_0600EE3C: .word 0x0380FFF4 -_0600EE40: .word 0x0000FFFE - arm_func_end InitCAM - - arm_func_start CAM_InitElement -CAM_InitElement: ; 0x0600EE44 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _0600EF20 ; =0x0380FFF4 - mov r7, r0 - ldr r4, [r2] - mov r0, #0x1c - mul r2, r7, r0 - ldr r3, [r4, #0x31c] - mov r6, r1 - ldrh r0, [r3, r2] - add r5, r3, r2 - cmp r0, #0 - addeq r0, r4, #0x500 - ldreqh r1, [r0, #0x2c] - mov r2, #0x1a - addeq r1, r1, #1 - streqh r1, [r0, #0x2c] - mov r1, r5 - mov r0, #0 - bl __VENEER_MIi_CpuClear16 - ldr r0, _0600EF20 ; =0x0380FFF4 - mov r4, #1 - ldr r1, [r0] - mov r0, r7, lsl #0x10 - add r2, r1, #0x500 - ldrh r3, [r2, #0x34] - mvn r1, r4, lsl r7 - and r3, r3, r1 - mov r0, r0, lsr #0x10 - mov r1, #0 - strh r3, [r2, #0x34] - bl CAM_SetPowerMgtMode - ldr r0, _0600EF20 ; =0x0380FFF4 - mov r1, r6 - ldr r2, [r0] - add r0, r5, #4 - add r2, r2, #0x500 - ldrh r3, [r2, #0x30] - orr r3, r3, r4, lsl r7 - strh r3, [r2, #0x30] - bl WSetMacAdrs1 - ldr r2, _0600EF24 ; =0x0000FFFF - mov r0, r7, lsl #0x10 - ldr r1, _0600EF20 ; =0x0380FFF4 - strh r2, [r5, #0x14] - ldr r1, [r1] - mov r0, r0, lsr #0x10 - add r1, r1, #0x300 - ldrh r2, [r1, #0xa6] - mov r1, #0x20 - strh r2, [r5, #0x10] - ldrh r2, [r5, #0x1a] - strh r2, [r5, #0x18] - bl CAM_SetStaState - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600EF20: .word 0x0380FFF4 -_0600EF24: .word 0x0000FFFF - arm_func_end CAM_InitElement - - arm_func_start WaitLoop_Rxpe -WaitLoop_Rxpe: ; 0x0600EF28 - ldr r1, _0600EF50 ; =0x0480819C - mov r2, #0xfa0 - b _0600EF44 -_0600EF34: - ldrh r0, [r1] - tst r0, #0x80 - bxne lr - sub r2, r2, #1 -_0600EF44: - cmp r2, #0 - bne _0600EF34 - bx lr - .align 2, 0 -_0600EF50: .word 0x0480819C - arm_func_end WaitLoop_Rxpe - - arm_func_start WaitLoop_Waitus -WaitLoop_Waitus: ; 0x0600EF54 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r2, _0600EFD4 ; =0x000082EA - mov r3, #0 - umull lr, ip, r0, r2 - mla ip, r0, r3, ip - mov r0, r3 - mla ip, r0, r2, ip - mov r0, lr, lsr #6 - mov r4, #1 - mov r5, r1 - mov r1, ip, lsr #6 - orr r0, r0, ip, lsl #26 - mov r2, #0x3e8 - str r4, [sp, #4] - bl __VENEER__ll_udiv - add r3, sp, #4 - str r3, [sp] - ldr r2, _0600EFD8 ; =0x0380FFF4 - mov r3, r5 - ldr r2, [r2] - add ip, r2, #0x234 - mov r2, r1 - mov r1, r0 - add r0, ip, #0x400 - bl __VENEER_OS_SetAlarm -_0600EFBC: - ldr r0, [sp, #4] - cmp r0, #0 - bne _0600EFBC - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600EFD4: .word 0x000082EA -_0600EFD8: .word 0x0380FFF4 - arm_func_end WaitLoop_Waitus - - arm_func_start WaitLoop_ClrAid -WaitLoop_ClrAid: ; 0x0600EFDC - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0600F040 ; =0x04808028 - ldr lr, _0600F044 ; =0x04000208 - mov r5, #1 - add r2, r1, #0x1ec - add r3, r1, #0x174 - mov ip, #0 - b _0600F030 -_0600EFFC: - ldrh r4, [lr] - strh ip, [lr] - ldrh r0, [r3] - and r0, r0, #3 - cmp r0, #3 - ldrneh r0, [r2] - cmpne r0, #5 - cmpne r0, #7 - cmpne r0, #8 - strneh ip, [r1] - ldrh r0, [lr] - movne r5, ip - strh r4, [lr] -_0600F030: - cmp r5, #0 - bne _0600EFFC - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600F040: .word 0x04808028 -_0600F044: .word 0x04000208 - arm_func_end WaitLoop_ClrAid - - arm_func_start WaitLoop_BbpAccess -WaitLoop_BbpAccess: ; 0x0600F048 - ldr r1, _0600F078 ; =0x0480815E - mov r2, #0 - b _0600F068 -_0600F054: - ldrh r0, [r1] - tst r0, #1 - moveq r0, #0 - bxeq lr - add r2, r2, #1 -_0600F068: - cmp r2, #0x2800 - blo _0600F054 - mov r0, #1 - bx lr - .align 2, 0 -_0600F078: .word 0x0480815E - arm_func_end WaitLoop_BbpAccess - - arm_func_start WaitLoop_RfAccess -WaitLoop_RfAccess: ; 0x0600F07C - ldr r1, _0600F0AC ; =0x04808180 - mov r2, #0 - b _0600F09C -_0600F088: - ldrh r0, [r1] - tst r0, #1 - moveq r0, #0 - bxeq lr - add r2, r2, #1 -_0600F09C: - cmp r2, #0x2800 - blo _0600F088 - mov r0, #1 - bx lr - .align 2, 0 -_0600F0AC: .word 0x04808180 - arm_func_end WaitLoop_RfAccess - - arm_func_start RequestCmdTask -RequestCmdTask: ; 0x0600F0B0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _0600F360 ; =0x0380FFF4 - mov r3, #0 - ldr r2, [r4] - mov r6, r3 - add r0, r2, #0x24 - add r5, r0, #0x400 - ldrh r0, [r5, #4] - cmp r0, #0 - bne _0600F358 - ldr r0, [r2, #0x200] - sub r2, r3, #1 - str r0, [r5] - cmp r0, r2 - beq _0600F358 - ldr r2, [r4] - ldrh r4, [r0, #0xe] - add ip, r2, #0x300 - ldrh r2, [ip, #0x3e] - add r4, r0, r4, lsl #1 - cmp r2, #0 - movne r0, #1 - strneh r0, [r4, #0x12] - movne r0, #6 - strneh r0, [r4, #0x14] - bne _0600F310 - ldrh r7, [r0, #0xc] - ldrh r2, [r4, #0x10] - cmp r7, r2 - movne r0, #0xd - strneh r0, [r4, #0x14] - bne _0600F310 - and r2, r7, #0xff00 - cmp r2, #0x100 - bgt _0600F14C - bge _0600F198 - cmp r2, #0 - beq _0600F168 - b _0600F278 -_0600F14C: - cmp r2, #0x200 - bgt _0600F15C - beq _0600F1B8 - b _0600F278 -_0600F15C: - cmp r2, #0x300 - beq _0600F264 - b _0600F278 -_0600F168: - ldrh r6, [r5, #4] - ldr r1, _0600F364 ; =WlibCmdTbl_MLME - tst r6, #1 - and r2, r7, #0xff - mov r6, #1 - mov lr, #0xb - movne r3, #2 - bne _0600F280 - ldrh r7, [ip, #0x4c] - cmp r7, #0x20 - movlo r3, r6 - b _0600F280 -_0600F198: - ldrh r6, [ip, #0x4c] - ldr r1, _0600F368 ; =WlibCmdTbl_MA - cmp r6, #0x40 - and r2, r7, #0xff - mov r6, #2 - mov lr, #5 - movne r3, #1 - b _0600F280 -_0600F1B8: - and r2, r7, #0xff - cmp r2, #0x40 - bhs _0600F1E0 - ldrh r1, [ip, #0x4c] - mov r6, #4 - cmp r1, #0x10 - ldr r1, _0600F36C ; =WlibCmdTbl_PARAMSET - movlo r3, #1 - mov lr, #0x17 - b _0600F280 -_0600F1E0: - cmp r2, #0x80 - bhs _0600F210 - ldrh r1, [ip, #0x4c] - mov r6, #8 - cmp r1, #0x40 - sub r1, r2, #0x40 - mov r2, r1, lsl #0x10 - ldr r1, _0600F370 ; =WlibCmdTbl_PARAMSET2 - movne r3, #1 - mov r2, r2, lsr #0x10 - mov lr, #6 - b _0600F280 -_0600F210: - ldrh r1, [ip, #0x4c] - cmp r2, #0xc0 - bhs _0600F240 - cmp r1, #0x10 - sub r1, r2, #0x80 - mov r2, r1, lsl #0x10 - ldr r1, _0600F374 ; =WlibCmdTbl_PARAMGET - movlo r3, #1 - mov r2, r2, lsr #0x10 - mov r6, #0x10 - mov lr, #0x17 - b _0600F280 -_0600F240: - cmp r1, #0x10 - sub r1, r2, #0xc0 - mov r2, r1, lsl #0x10 - ldr r1, _0600F378 ; =WlibCmdTbl_PARAMGET2 - movlo r3, #1 - mov r2, r2, lsr #0x10 - mov r6, #0x20 - mov lr, #6 - b _0600F280 -_0600F264: - ldr r1, _0600F37C ; =WlibCmdTbl_DEV - and r2, r7, #0xff - mov r6, #0x40 - mov lr, #0xb - b _0600F280 -_0600F278: - mov r2, #1 - mov lr, #0 -_0600F280: - cmp r2, lr - movhi r3, #3 - bhi _0600F2B0 - mov lr, r2, lsl #3 - ldrh r7, [r0, #0xe] - ldrh ip, [r1, lr] - cmp r7, ip - addhs ip, r1, lr - ldrhsh lr, [r4, #0x12] - ldrhsh ip, [ip, #2] - cmphs lr, ip - movlo r3, #4 -_0600F2B0: - cmp r3, #0 - movne r0, #1 - strneh r0, [r4, #0x12] - strneh r3, [r4, #0x14] - bne _0600F310 - ldrh r3, [r5, #4] - add r1, r1, r2, lsl #3 - orr r2, r3, r6 - strh r2, [r5, #4] - ldr r2, [r1, #4] - add r1, r4, #0x10 - mov lr, pc - bx r2 - strh r0, [r4, #0x14] - ldrh r0, [r4, #0x14] - cmp r0, #0x80 - beq _0600F358 - cmp r0, #0x81 - bne _0600F310 - ldrh r1, [r5, #4] - mvn r0, r6 - and r0, r1, r0 - strh r0, [r5, #4] - b _0600F334 -_0600F310: - ldrh r1, [r5, #4] - mvn r0, r6 - and r0, r1, r0 - strh r0, [r5, #4] - ldr r0, _0600F360 ; =0x0380FFF4 - ldr r1, [r5] - ldr r0, [r0] - add r0, r0, #0x200 - bl SendMessageToWmDirect -_0600F334: - ldr r0, _0600F360 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x200 - ldrh r0, [r0, #8] - cmp r0, #0 - beq _0600F358 - mov r0, #2 - mov r1, #0xb - bl AddTask -_0600F358: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600F360: .word 0x0380FFF4 -_0600F364: .word WlibCmdTbl_MLME -_0600F368: .word WlibCmdTbl_MA -_0600F36C: .word WlibCmdTbl_PARAMSET -_0600F370: .word WlibCmdTbl_PARAMSET2 -_0600F374: .word WlibCmdTbl_PARAMGET -_0600F378: .word WlibCmdTbl_PARAMGET2 -_0600F37C: .word WlibCmdTbl_DEV - arm_func_end RequestCmdTask - - arm_func_start CMD_ReservedReqCmd -CMD_ReservedReqCmd: ; 0x0600F380 - mov r0, #3 - bx lr - arm_func_end CMD_ReservedReqCmd - - arm_func_start SendMessageToWmDirect -SendMessageToWmDirect: ; 0x0600F388 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0600F40C ; =0x0380FFF4 - mov r5, r0 - ldr r3, [r2] - mov r4, r1 - add r2, r3, #0x100 - ldrh r2, [r2, #0xfc] - cmp r2, #0 - beq _0600F3C8 - mov r2, r4 - add r1, r3, #0x1f4 - bl MoveHeapBuf - mov r0, #2 - mov r1, #0x13 - bl AddTask - b _0600F404 -_0600F3C8: - ldr r0, [r3, #0x304] - mov r2, #0 - bl __VENEER_OS_SendMessage - cmp r0, #0 - beq _0600F3EC - mov r0, r5 - mov r1, r4 - bl DeleteHeapBuf - b _0600F404 -_0600F3EC: - ldr r1, _0600F40C ; =0x0380FFF4 - mov r0, r5 - ldr r1, [r1] - mov r2, r4 - add r1, r1, #0x1f4 - bl MoveHeapBuf -_0600F404: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0600F40C: .word 0x0380FFF4 - arm_func_end SendMessageToWmDirect - - arm_func_start SendMessageToWmTask -SendMessageToWmTask: ; 0x0600F410 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r6, _0600F46C ; =0x0380FFF4 - mov r5, #0 - ldr r0, [r6] - mvn r4, #0 - ldr r7, [r0, #0x1f4] - b _0600F45C -_0600F42C: - ldr r0, [r0, #0x304] - mov r1, r7 - mov r2, r5 - bl __VENEER_OS_SendMessage - cmp r0, #0 - beq _0600F464 - ldr r0, [r6] - mov r1, r7 - add r0, r0, #0x1f4 - bl DeleteHeapBuf - ldr r0, [r6] - ldr r7, [r0, #0x1f4] -_0600F45C: - cmp r7, r4 - bne _0600F42C -_0600F464: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600F46C: .word 0x0380FFF4 - arm_func_end SendMessageToWmTask - - arm_func_start InitializeCmdIf -InitializeCmdIf: ; 0x0600F470 - ldr r0, _0600F488 ; =0x0380FFF4 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x400 - strh r1, [r0, #0x28] - bx lr - .align 2, 0 -_0600F488: .word 0x0380FFF4 - arm_func_end InitializeCmdIf - - arm_func_start MLME_ResetReqCmd -MLME_ResetReqCmd: ; 0x0600F48C - stmdb sp!, {r4, lr} - mov r2, #1 - strh r2, [r1, #2] - mov r4, r0 - ldrh r0, [r4, #0x10] - cmp r0, #1 - movhi r0, #5 - bhi _0600F4C4 - bl WStop - ldrh r0, [r4, #0x10] - cmp r0, #1 - bne _0600F4C0 - bl WInitCounter -_0600F4C0: - mov r0, #0 -_0600F4C4: - ldmia sp!, {r4, lr} - bx lr - arm_func_end MLME_ResetReqCmd - - arm_func_start MLME_PwrMgtReqCmd -MLME_PwrMgtReqCmd: ; 0x0600F4CC - stmdb sp!, {r4, lr} - mov r2, #9 - strh r2, [r1, #2] - mov r4, r0 - ldrh r0, [r4, #0x10] - cmp r0, #1 - movhi r0, #5 - bhi _0600F568 - ldrh r1, [r4, #0x12] - cmp r1, #1 - movhi r0, #5 - bhi _0600F568 - ldrh r1, [r4, #0x14] - cmp r1, #1 - movhi r0, #5 - bhi _0600F568 - bl WSetPowerMgtMode - ldrh r0, [r4, #0x10] - cmp r0, #1 - bne _0600F554 - ldrh r0, [r4, #0x12] - cmp r0, #1 - bne _0600F534 - ldr r0, _0600F570 ; =0x00008001 - bl WSetForcePowerState - b _0600F53C -_0600F534: - mov r0, #0 - bl WSetForcePowerState -_0600F53C: - ldr r0, _0600F574 ; =0x0380FFF4 - ldrh r1, [r4, #0x14] - ldr r0, [r0] - add r0, r0, #0x300 - strh r1, [r0, #0x58] - b _0600F564 -_0600F554: - mov r0, #0x8000 - bl WSetForcePowerState - mov r0, #2 - bl WSetPowerState -_0600F564: - mov r0, #0 -_0600F568: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0600F570: .word 0x00008001 -_0600F574: .word 0x0380FFF4 - arm_func_end MLME_PwrMgtReqCmd - - arm_func_start MLME_ScanReqCmd -MLME_ScanReqCmd: ; 0x0600F578 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r2, _0600F6B4 ; =0x0380FFF4 - mov r5, r1 - ldr r3, [r2] - ldrh r2, [r5, #2] - add r1, r3, #4 - add r4, r1, #0x400 - sub r1, r2, #3 - strh r1, [r4, #4] - mov r1, #3 - strh r1, [r5, #2] - add r1, r3, #0x300 - ldrh r1, [r1, #0x2e] - mov r6, r0 - cmp r1, #1 - cmpne r1, #3 - cmpne r1, #2 - movne r0, #0xb - bne _0600F6AC - ldr r0, _0600F6B4 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0x20 - movlo r0, #1 - blo _0600F6AC - ldrh r0, [r6, #0x16] - cmp r0, #0x20 - movhi r0, #5 - bhi _0600F6AC - ldrh r0, [r6, #0x38] - cmp r0, #1 - movhi r0, #5 - bhi _0600F6AC - add r0, r6, #0x3a - bl WL_ReadByte - cmp r0, #0 - moveq r0, #5 - beq _0600F6AC - ldrh r0, [r6, #0x4a] - cmp r0, #0x3e8 - movhi r0, #5 - bhi _0600F6AC - cmp r0, #0xa - movlo r0, #5 - blo _0600F6AC - ldrh r0, [r6, #0x4c] - cmp r0, #0x10 - movhi r0, #5 - bhi _0600F6AC - mov r8, #0 - add r7, r6, #0x3a - b _0600F670 -_0600F64C: - add r0, r7, r8 - bl WL_ReadByte - cmp r0, #0 - beq _0600F678 - bl CheckEnableChannel - cmp r0, #0 - moveq r0, #5 - beq _0600F6AC - add r8, r8, #1 -_0600F670: - cmp r8, #0x10 - blo _0600F64C -_0600F678: - add r0, r6, #0x10 - bl WSetBssid - ldrh r0, [r6, #0x16] - add r1, r6, #0x18 - bl WSetSsid - str r6, [r4, #0x18] - str r5, [r4, #0x1c] - mov r2, #0x10 - mov r0, #2 - mov r1, #0 - strh r2, [r4] - bl AddTask - mov r0, #0x80 -_0600F6AC: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_0600F6B4: .word 0x0380FFF4 - arm_func_end MLME_ScanReqCmd - - arm_func_start MLME_JoinReqCmd -MLME_JoinReqCmd: ; 0x0600F6B8 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _0600F868 ; =0x0380FFF4 - mov r5, r1 - ldr r3, [r2] - mov r1, #5 - strh r1, [r5, #2] - add r1, r3, #0x300 - ldrh r2, [r1, #0x2e] - add r1, r3, #4 - mov r6, r0 - cmp r2, #3 - add r0, r3, #0x344 - cmpne r2, #2 - add r4, r1, #0x400 - movne r0, #0xb - bne _0600F860 - ldrh r0, [r0, #8] - cmp r0, #0x20 - movlo r0, #1 - blo _0600F860 - mov r0, #0x20 - bl WSetStaState - ldrh r0, [r6, #0x18] - tst r0, #1 - movne r0, #5 - bne _0600F860 - ldrh r0, [r6, #0x1e] - cmp r0, #0 - moveq r0, #5 - beq _0600F860 - cmp r0, #0x20 - movhi r0, #5 - bhi _0600F860 - ldrh r0, [r6, #0x46] - cmp r0, #0xa - movlo r0, #5 - blo _0600F860 - cmp r0, #0x3e8 - movhi r0, #5 - bhi _0600F860 - ldrh r0, [r6, #0x48] - cmp r0, #0xff - movhi r0, #5 - bhi _0600F860 - ldrh r0, [r6, #0x4a] - ldr r1, _0600F86C ; =0x0000FFF0 - tst r0, r1 - movne r0, #5 - bne _0600F860 - bl CheckEnableChannel - cmp r0, #0 - moveq r0, #5 - beq _0600F860 - ldrh r2, [r6, #0x42] - mov r0, #0x1000 - rsb r0, r0, #0 - tst r2, r0 - movne r0, #5 - bne _0600F860 - ldrh r1, [r6, #0x44] - tst r1, r0 - movne r0, #5 - bne _0600F860 - cmp r2, #0 - moveq r0, #5 - beq _0600F860 - orrs r0, r1, r2 - moveq r0, #5 - beq _0600F860 - ldrh r0, [r6, #0x10] - cmp r0, #0x7d0 - movhi r0, #5 - bhi _0600F860 - mov r0, #0 - bl FLASH_VerifyCheckSum - cmp r0, #0 - movne r0, #0xe - bne _0600F860 - ldrh r0, [r6, #0x40] - tst r0, #0x20 - beq _0600F808 - mov r0, #1 - bl WSetPreambleType - b _0600F810 -_0600F808: - mov r0, #0 - bl WSetPreambleType -_0600F810: - add r0, r6, #0x18 - bl WSetBssid - ldrh r0, [r6, #0x1e] - add r1, r6, #0x20 - bl WSetSsid - ldrh r0, [r6, #0x46] - bl WSetBeaconPeriod - ldrh r0, [r6, #0x4a] - mov r1, #0 - bl WSetChannel - add r0, r6, #0x42 - bl WSetRateSet - str r6, [r4, #0x18] - str r5, [r4, #0x1c] - mov r2, #0x20 - mov r0, #2 - mov r1, #1 - strh r2, [r4] - bl AddTask - mov r0, #0x80 -_0600F860: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600F868: .word 0x0380FFF4 -_0600F86C: .word 0x0000FFF0 - arm_func_end MLME_JoinReqCmd - - arm_func_start MLME_AuthReqCmd -MLME_AuthReqCmd: ; 0x0600F870 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _0600F940 ; =0x0380FFF4 - mov r5, r1 - ldr r3, [r2] - mov r1, #6 - strh r1, [r5, #2] - add r1, r3, #0x300 - ldrh r2, [r1, #0x2e] - add r1, r3, #4 - mov r6, r0 - cmp r2, #3 - add r0, r3, #0x344 - cmpne r2, #2 - add r4, r1, #0x400 - movne r0, #0xb - bne _0600F938 - ldrh r0, [r0, #8] - cmp r0, #0x20 - movlo r0, #1 - blo _0600F938 - ldrh r0, [r6, #0x10] - tst r0, #1 - movne r0, #5 - bne _0600F938 - ldrh r0, [r6, #0x16] - cmp r0, #1 - movhi r0, #5 - bhi _0600F938 - ldrh r0, [r6, #0x18] - cmp r0, #0x7d0 - movhi r0, #5 - bhi _0600F938 - cmp r0, #0xa - movlo r0, #5 - blo _0600F938 - mov r0, #0x20 - bl WSetStaState - str r6, [r4, #0x18] - str r5, [r4, #0x1c] - mov r0, #0x30 - strh r0, [r4] - ldr r1, [r4, #0x18] - add r0, r5, #8 - ldrh r1, [r1, #0x16] - strh r1, [r5, #0xe] - ldr r1, [r4, #0x18] - add r1, r1, #0x10 - bl WSetMacAdrs1 - bl MLME_AuthTask - mov r0, #0x80 -_0600F938: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600F940: .word 0x0380FFF4 - arm_func_end MLME_AuthReqCmd - - arm_func_start MLME_DeAuthReqCmd -MLME_DeAuthReqCmd: ; 0x0600F944 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _0600FA74 ; =0x0380FFF4 - mov r6, r1 - ldr r2, [r3] - mov r1, #4 - strh r1, [r6, #2] - ldr r3, [r3] - add r1, r2, #4 - add r2, r3, #0x300 - ldrh r2, [r2, #0x2e] - mov r7, r0 - cmp r2, #3 - cmpne r2, #2 - cmpne r2, #1 - add r5, r1, #0x400 - movne r0, #0xb - bne _0600FA6C - add r0, r3, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0x30 - movlo r0, #1 - blo _0600FA6C - add r0, r2, #0xfe - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _0600F9C4 - ldrh r0, [r7, #0x10] - tst r0, #1 - movne r0, #5 - bne _0600FA6C -_0600F9C4: - add r0, r6, #6 - add r1, r7, #0x10 - bl WSetMacAdrs1 - ldrh r1, [r7, #0x16] - add r0, r6, #6 - mov r2, #0 - bl MakeDeAuthFrame - movs r4, r0 - moveq r0, #8 - beq _0600FA6C - str r7, [r5, #0x18] - str r6, [r5, #0x1c] - str r4, [r5, #4] - mov r0, #0x41 - strh r0, [r5] - ldrh r0, [r7, #0x10] - tst r0, #1 - beq _0600FA58 - ldr r2, _0600FA74 ; =0x0380FFF4 - sub r1, r4, #0x10 - ldr r0, [r2] - ldr r0, [r0, #0x3ec] - strh r0, [r4, #4] - ldr r0, [r2] - add r0, r0, #0x188 - bl CAM_AddBcFrame - ldr r0, _0600FA74 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r1, [r0, #0x32] - ldrh r2, [r0, #0x2e] - mvn r0, r1 - tst r2, r0 - bne _0600FA68 - mov r0, #2 - bl TxqPri - b _0600FA68 -_0600FA58: - add r0, r7, #0x10 - bl DeleteTxFrameByAdrs - mov r0, r4 - bl TxManCtrlFrame -_0600FA68: - mov r0, #0x80 -_0600FA6C: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600FA74: .word 0x0380FFF4 - arm_func_end MLME_DeAuthReqCmd - - arm_func_start MLME_AssReqCmd -MLME_AssReqCmd: ; 0x0600FA78 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _0600FB4C ; =0x0380FFF4 - mov r6, r1 - ldr r3, [r2] - mov r1, #3 - strh r1, [r6, #2] - add r1, r3, #0x300 - ldrh r2, [r1, #0x2e] - add r1, r3, #4 - cmp r2, #3 - mov r7, r0 - cmpne r2, #2 - add r4, r3, #0x344 - add r5, r1, #0x400 - movne r0, #0xb - bne _0600FB44 - ldrh r0, [r4, #8] - cmp r0, #0x30 - movlo r0, #1 - blo _0600FB44 - ldrh r0, [r7, #0x10] - tst r0, #1 - movne r0, #5 - bne _0600FB44 - ldrh r0, [r7, #0x16] - cmp r0, #0 - moveq r0, #5 - beq _0600FB44 - cmp r0, #0xff - movhi r0, #5 - bhi _0600FB44 - ldrh r0, [r7, #0x18] - cmp r0, #0x7d0 - movhi r0, #5 - bhi _0600FB44 - cmp r0, #0xa - movlo r0, #5 - blo _0600FB44 - mov r0, #0x30 - bl WSetStaState - bl WClearAids - ldrh r1, [r7, #0x16] - mov r0, #0x50 - strh r1, [r4, #0x70] - ldrh r1, [r7, #0x16] - strh r1, [r4, #0x72] - str r7, [r5, #0x18] - str r6, [r5, #0x1c] - strh r0, [r5] - bl MLME_AssTask - mov r0, #0x80 -_0600FB44: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600FB4C: .word 0x0380FFF4 - arm_func_end MLME_AssReqCmd - - arm_func_start MLME_ReAssReqCmd -MLME_ReAssReqCmd: ; 0x0600FB50 - stmdb sp!, {r3, lr} - ldr r3, _0600FC0C ; =0x0380FFF4 - mov r2, #3 - ldr ip, [r3] - strh r2, [r1, #2] - add r2, ip, #0x300 - ldrh r3, [r2, #0x2e] - add r2, ip, #4 - cmp r3, #3 - cmpne r3, #2 - add ip, ip, #0x344 - add lr, r2, #0x400 - movne r0, #0xb - bne _0600FC04 - ldrh r2, [ip, #8] - cmp r2, #0x30 - movlo r0, #1 - blo _0600FC04 - ldrh r2, [r0, #0x10] - tst r2, #1 - movne r0, #5 - bne _0600FC04 - ldrh r3, [r0, #0x16] - cmp r3, #1 - movlo r0, #5 - blo _0600FC04 - cmp r3, #0xff - movhi r0, #5 - bhi _0600FC04 - ldrh r2, [r0, #0x18] - cmp r2, #0x7d0 - movhi r0, #5 - bhi _0600FC04 - cmp r2, #0xa - movlo r0, #5 - blo _0600FC04 - strh r3, [ip, #0x70] - ldrh r3, [r0, #0x16] - mov r2, #0x60 - strh r3, [ip, #0x72] - str r0, [lr, #0x18] - str r1, [lr, #0x1c] - strh r2, [lr] - bl MLME_ReAssTask - mov r0, #0x80 -_0600FC04: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_0600FC0C: .word 0x0380FFF4 - arm_func_end MLME_ReAssReqCmd - - arm_func_start MLME_DisAssReqCmd -MLME_DisAssReqCmd: ; 0x0600FC10 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _0600FD18 ; =0x0380FFF4 - mov r6, r1 - ldr r2, [r3] - mov r1, #1 - strh r1, [r6, #2] - ldr r3, [r3] - add r1, r2, #4 - add r2, r3, #0x300 - ldrh r2, [r2, #0x2e] - mov r7, r0 - cmp r2, #0 - add r5, r1, #0x400 - moveq r0, #0xb - beq _0600FD10 - cmp r2, #1 - beq _0600FC64 - ldrh r0, [r7, #0x10] - tst r0, #1 - movne r0, #5 - bne _0600FD10 -_0600FC64: - add r0, r3, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0x40 - movne r0, #1 - bne _0600FD10 - ldrh r1, [r7, #0x16] - add r0, r7, #0x10 - bl MakeDisAssFrame - movs r4, r0 - moveq r0, #8 - beq _0600FD10 - str r7, [r5, #0x18] - str r6, [r5, #0x1c] - str r4, [r5, #4] - mov r0, #0x71 - strh r0, [r5] - ldrh r0, [r7, #0x10] - tst r0, #1 - beq _0600FCFC - ldr r2, _0600FD18 ; =0x0380FFF4 - sub r1, r4, #0x10 - ldr r0, [r2] - ldr r0, [r0, #0x3ec] - strh r0, [r4, #4] - ldr r0, [r2] - add r0, r0, #0x188 - bl CAM_AddBcFrame - ldr r0, _0600FD18 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r1, [r0, #0x32] - ldrh r2, [r0, #0x2e] - mvn r0, r1 - tst r2, r0 - bne _0600FD0C - mov r0, #2 - bl TxqPri - b _0600FD0C -_0600FCFC: - add r0, r7, #0x10 - bl DeleteTxFrameByAdrs - mov r0, r4 - bl TxManCtrlFrame -_0600FD0C: - mov r0, #0x80 -_0600FD10: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0600FD18: .word 0x0380FFF4 - arm_func_end MLME_DisAssReqCmd - - arm_func_start MLME_StartReqCmd -MLME_StartReqCmd: ; 0x0600FD1C - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _0600FEB0 ; =0x0380FFF4 - mov r2, #1 - ldr r3, [r3] - mov r6, r0 - strh r2, [r1, #2] - add r5, r3, #0x31c - ldrh r0, [r5, #0x12] - add r4, r3, #0x344 - cmp r0, #1 - cmpne r0, #0 - movne r0, #0xb - bne _0600FEA8 - ldrh r0, [r4, #8] - cmp r0, #0x20 - movne r0, #1 - bne _0600FEA8 - ldrh r0, [r6, #0x10] - cmp r0, #0x20 - movhi r0, #5 - bhi _0600FEA8 - cmp r0, #0 - moveq r0, #5 - beq _0600FEA8 - ldrh r0, [r6, #0x32] - cmp r0, #0xa - movlo r0, #5 - blo _0600FEA8 - cmp r0, #0x3e8 - movhi r0, #5 - bhi _0600FEA8 - ldrh r0, [r6, #0x34] - cmp r0, #0 - moveq r0, #5 - beq _0600FEA8 - cmp r0, #0xff - movhi r0, #5 - bhi _0600FEA8 - ldrh r0, [r6, #0x36] - ldr r1, _0600FEB4 ; =0x0000FFF0 - tst r0, r1 - movne r0, #5 - bne _0600FEA8 - bl CheckEnableChannel - cmp r0, #0 - moveq r0, #5 - beq _0600FEA8 - ldrh r1, [r6, #0x38] - cmp r1, #0 - moveq r0, #5 - beq _0600FEA8 - mov r0, #0x1000 - rsb r0, r0, #0 - tst r1, r0 - movne r0, #5 - bne _0600FEA8 - ldrh r1, [r6, #0x3a] - cmp r1, #0 - moveq r0, #5 - beq _0600FEA8 - tst r1, r0 - movne r0, #5 - bne _0600FEA8 - ldrh r0, [r6, #0x3c] - cmp r0, #0x80 - movhi r0, #5 - bhi _0600FEA8 - mov r0, #0 - bl FLASH_VerifyCheckSum - cmp r0, #0 - movne r0, #0xe - bne _0600FEA8 - ldrh r0, [r5, #0x12] - cmp r0, #0 - bne _0600FE54 - ldr r0, _0600FEB8 ; =BC_ADRS - bl WSetBssid - b _0600FE5C -_0600FE54: - add r0, r5, #8 - bl WSetBssid -_0600FE5C: - ldrh r0, [r6, #0x10] - add r1, r6, #0x12 - bl WSetSsid - ldrh r0, [r6, #0x32] - bl WSetBeaconPeriod - ldrh r0, [r6, #0x34] - bl WSetDTIMPeriod - ldrh r0, [r6, #0x36] - mov r1, #0 - bl WSetChannel - add r0, r6, #0x38 - bl WSetRateSet - ldrh r0, [r6, #0x3c] - add r1, r6, #0x3e - bl WInitGameInfo - mov r0, #0 - strh r0, [r4, #0xa4] - bl WStart - mov r0, #0 -_0600FEA8: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0600FEB0: .word 0x0380FFF4 -_0600FEB4: .word 0x0000FFF0 -_0600FEB8: .word BC_ADRS - arm_func_end MLME_StartReqCmd - - arm_func_start MLME_MeasChanReqCmd -MLME_MeasChanReqCmd: ; 0x0600FEBC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r2, _0600FF9C ; =0x0380FFF4 - mov r5, r1 - ldr r3, [r2] - mov r1, #0x12 - strh r1, [r5, #2] - ldr r2, [r2] - add r1, r3, #4 - add r2, r2, #0x300 - ldrh r2, [r2, #0x4c] - mov r6, r0 - cmp r2, #0x20 - add r4, r1, #0x400 - movne r0, #1 - bne _0600FF94 - ldrh r0, [r6, #0x12] - cmp r0, #3 - movhi r0, #5 - bhi _0600FF94 - ldrh r0, [r6, #0x14] - cmp r0, #0x3f - movhi r0, #5 - bhi _0600FF94 - ldrh r0, [r6, #0x16] - cmp r0, #0 - moveq r0, #5 - beq _0600FF94 - cmp r0, #0x3e8 - movhi r0, #5 - bhi _0600FF94 - mov r8, #0 - add r7, r6, #0x18 - b _0600FF64 -_0600FF40: - add r0, r7, r8 - bl WL_ReadByte - cmp r0, #0 - beq _0600FF6C - bl CheckEnableChannel - cmp r0, #0 - moveq r0, #5 - beq _0600FF94 - add r8, r8, #1 -_0600FF64: - cmp r8, #0x10 - blo _0600FF40 -_0600FF6C: - cmp r8, #0 - moveq r0, #5 - beq _0600FF94 - str r6, [r4, #0x18] - str r5, [r4, #0x1c] - mov r0, #0x80 - strh r0, [r4] - strh r0, [r5, #4] - bl MLME_MeasChannelTask - mov r0, #0x80 -_0600FF94: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_0600FF9C: .word 0x0380FFF4 - arm_func_end MLME_MeasChanReqCmd - - arm_func_start MLME_ScanTask -MLME_ScanTask: ; 0x0600FFA0 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _06010188 ; =0x0380FFF4 - mov r6, #0 - ldr r2, [r0] - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - sub r1, r1, #0x10 - cmp r1, #5 - add r4, r0, #0x400 - add r5, r2, #0x344 - addls pc, pc, r1, lsl #2 - b _0601016C -_0600FFD4: ; jump table - b _0600FFEC ; case 0 - b _06010064 ; case 1 - b _060100F4 ; case 2 - b _060100F4 ; case 3 - b _0601016C ; case 4 - b _0601014C ; case 5 -_0600FFEC: - mov r0, #0x20 - bl WSetStaState - mov r0, #2 - strh r0, [r5, #0xc] - ldr r0, [r4, #0x1c] - mov r1, r6 - strh r1, [r0, #8] - ldr r0, [r4, #0x1c] - strh r1, [r0, #6] - strh r1, [r4, #6] - strh r1, [r4, #8] - ldr r1, [r4, #0x18] - ldrh r0, [r1, #0x38] - cmp r0, #0 - ldrh r0, [r1, #0x4a] - bne _06010054 - add r1, r0, #3 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - mov r0, r0, asr #2 - strh r0, [r4, #0xc] - ldrh r0, [r4, #0xc] - cmp r0, #0xa - movlo r0, #0xa - strloh r0, [r4, #0xc] - b _06010058 -_06010054: - strh r0, [r4, #0xc] -_06010058: - ldr r0, [r4, #0x1c] - mov r1, #0 - strh r1, [r0, #4] -_06010064: - ldr r1, [r4, #0x18] - ldrh r0, [r4, #6] - add r1, r1, #0x3a - add r0, r1, r0 - bl WL_ReadByte - movs r5, r0 - moveq r0, #0x15 - streqh r0, [r4] - moveq r6, #1 - beq _0601016C - ldrh r1, [r4, #6] - mov r0, #0 - add r1, r1, #1 - strh r1, [r4, #6] - strh r0, [r4, #0xa] - bl FLASH_VerifyCheckSum - cmp r0, #0 - beq _060100C8 - ldr r0, [r4, #0x1c] - mov r1, #0xe - strh r1, [r0, #4] - mov r0, #0x15 - strh r0, [r4] - mov r6, #1 - b _0601016C -_060100C8: - ldrh r0, [r4] - mov r1, #0 - cmp r0, #0x10 - mov r0, r5 - bne _060100E8 - bl WSetChannel - bl WStart - b _060100EC -_060100E8: - bl WSetChannel -_060100EC: - mov r0, #0x12 - strh r0, [r4] -_060100F4: - mov r0, #0x13 - strh r0, [r4] - ldr r1, [r4, #0x18] - ldrh r0, [r1, #0x38] - cmp r0, #0 - bne _0601013C - add r0, r1, #0x10 - bl MakeProbeReqFrame - cmp r0, #0 - bne _06010138 - ldr r0, [r4, #0x1c] - mov r1, #8 - strh r1, [r0, #4] - mov r0, #0x15 - strh r0, [r4] - mov r6, #1 - b _0601016C -_06010138: - bl TxManCtrlFrame -_0601013C: - ldrh r0, [r4, #0xc] - ldr r1, _0601018C ; =MLME_ScanTimeOut - bl SetupTimeOut - b _0601016C -_0601014C: - strh r6, [r4] - bl WStop - ldr r0, _06010188 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x2e] - strh r0, [r5, #0xc] - bl IssueMlmeConfirm -_0601016C: - cmp r6, #0 - beq _06010180 - mov r0, #2 - mov r1, #0 - bl AddTask -_06010180: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06010188: .word 0x0380FFF4 -_0601018C: .word MLME_ScanTimeOut - arm_func_end MLME_ScanTask - - arm_func_start MLME_ScanTimeOut -MLME_ScanTimeOut: ; 0x06010190 - ldr r0, _060101EC ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #4 - add r2, r0, #0x400 - ldrh r1, [r2, #0xa] - ldrh r0, [r2, #0xc] - add r0, r1, r0 - strh r0, [r2, #0xa] - ldr r0, [r2, #0x18] - ldrh r1, [r2, #0xa] - ldrh r0, [r0, #0x4a] - cmp r1, r0 - blo _060101DC - ldrh r0, [r2, #6] - cmp r0, #0x10 - movlo r0, #0x11 - strloh r0, [r2] - movhs r0, #0x15 - strhsh r0, [r2] -_060101DC: - ldr ip, _060101F0 ; =AddTask - mov r0, #2 - mov r1, #0 - bx ip - .align 2, 0 -_060101EC: .word 0x0380FFF4 -_060101F0: .word AddTask - arm_func_end MLME_ScanTimeOut - - arm_func_start MLME_JoinTask -MLME_JoinTask: ; 0x060101F4 - stmdb sp!, {r4, lr} - ldr r0, _0601028C ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - cmp r1, #0x20 - add r4, r0, #0x400 - beq _06010224 - cmp r1, #0x25 - beq _06010250 - b _06010284 -_06010224: - bl WStart - mov r0, #0 - strh r0, [r4, #4] - strh r0, [r4, #6] - mov r0, #0x21 - strh r0, [r4] - ldr r0, [r4, #0x18] - ldr r1, _06010290 ; =MLME_JoinTimeOut - ldrh r0, [r0, #0x10] - bl SetupTimeOut - b _06010284 -_06010250: - ldrh r1, [r4, #4] - ldr r0, [r4, #0x1c] - strh r1, [r0, #4] - ldrh r1, [r4, #6] - ldr r0, [r4, #0x1c] - strh r1, [r0, #6] - ldrh r0, [r4, #4] - cmp r0, #0 - beq _06010278 - bl WStop -_06010278: - mov r0, #0 - strh r0, [r4] - bl IssueMlmeConfirm -_06010284: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0601028C: .word 0x0380FFF4 -_06010290: .word MLME_JoinTimeOut - arm_func_end MLME_JoinTask - - arm_func_start MLME_JoinTimeOut -MLME_JoinTimeOut: ; 0x06010294 - ldr r0, _060102C8 ; =0x0380FFF4 - ldr ip, _060102CC ; =AddTask - ldr r2, [r0] - mov r1, #7 - add r0, r2, #4 - add r0, r0, #0x400 - strh r1, [r0, #4] - mov r3, #0x25 - add r2, r2, #0x400 - mov r0, #2 - mov r1, #1 - strh r3, [r2, #4] - bx ip - .align 2, 0 -_060102C8: .word 0x0380FFF4 -_060102CC: .word AddTask - arm_func_end MLME_JoinTimeOut - - arm_func_start MLME_AuthTask -MLME_AuthTask: ; 0x060102D0 - stmdb sp!, {r4, lr} - ldr r0, _060103AC ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - cmp r1, #0x30 - add r4, r0, #0x400 - beq _06010300 - cmp r1, #0x35 - beq _0601037C - b _060103A4 -_06010300: - ldr r0, [r4, #0x18] - mov r1, #0 - mov r2, r1 - add r0, r0, #0x10 - bl MakeAuthFrame - cmp r0, #0 - bne _06010340 - ldr r1, [r4, #0x1c] - mov r2, #8 - mov r0, #2 - strh r2, [r1, #4] - mov r2, #0x35 - mov r1, r0 - strh r2, [r4] - bl AddTask - b _060103A4 -_06010340: - ldr r1, [r4, #0x18] - mov r2, #1 - ldrh r3, [r1, #0x16] - mov r1, #0 - strh r3, [r0, #0x2c] - strh r2, [r0, #0x2e] - strh r1, [r0, #0x30] - mov r1, #0x31 - strh r1, [r4] - bl TxManCtrlFrame - ldr r0, [r4, #0x18] - ldr r1, _060103B0 ; =MLME_AuthTimeOut - ldrh r0, [r0, #0x18] - bl SetupTimeOut - b _060103A4 -_0601037C: - mov r0, #1 - bl ResetTxqPri - mov r0, #1 - bl ClearQueuedPri - mov r0, #1 - mov r1, #0 - bl MessageDeleteTx - mov r0, #0 - strh r0, [r4] - bl IssueMlmeConfirm -_060103A4: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060103AC: .word 0x0380FFF4 -_060103B0: .word MLME_AuthTimeOut - arm_func_end MLME_AuthTask - - arm_func_start MLME_AuthTimeOut -MLME_AuthTimeOut: ; 0x060103B4 - stmdb sp!, {r3, lr} - ldr r1, _060103F0 ; =0x0380FFF4 - mov r0, #2 - ldr ip, [r1] - mov r3, #7 - add r1, ip, #4 - ldr r2, [r1, #0x41c] - mov r1, r0 - strh r3, [r2, #4] - add r2, ip, #0x400 - mov r3, #0x35 - strh r3, [r2, #4] - bl AddTask - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060103F0: .word 0x0380FFF4 - arm_func_end MLME_AuthTimeOut - - arm_func_start MLME_AssTask -MLME_AssTask: ; 0x060103F4 - stmdb sp!, {r4, lr} - ldr r0, _060104AC ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - cmp r1, #0x50 - add r4, r0, #0x400 - beq _06010424 - cmp r1, #0x53 - beq _0601047C - b _060104A4 -_06010424: - ldr r0, [r4, #0x18] - add r0, r0, #0x10 - bl MakeAssReqFrame - cmp r0, #0 - bne _0601045C - ldr r0, [r4, #0x1c] - mov r1, #8 - strh r1, [r0, #4] - mov r2, #0x53 - mov r0, #2 - mov r1, #3 - strh r2, [r4] - bl AddTask - b _060104A4 -_0601045C: - mov r1, #0x51 - strh r1, [r4] - bl TxManCtrlFrame - ldr r0, [r4, #0x18] - ldr r1, _060104B0 ; =MLME_AssTimeOut - ldrh r0, [r0, #0x18] - bl SetupTimeOut - b _060104A4 -_0601047C: - mov r0, #1 - bl ResetTxqPri - mov r0, #1 - bl ClearQueuedPri - mov r0, #1 - mov r1, #0 - bl MessageDeleteTx - mov r0, #0 - strh r0, [r4] - bl IssueMlmeConfirm -_060104A4: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060104AC: .word 0x0380FFF4 -_060104B0: .word MLME_AssTimeOut - arm_func_end MLME_AssTask - - arm_func_start MLME_AssTimeOut -MLME_AssTimeOut: ; 0x060104B4 - ldr r0, _060104E8 ; =0x0380FFF4 - ldr ip, _060104EC ; =AddTask - ldr r2, [r0] - mov r1, #7 - add r0, r2, #4 - ldr r0, [r0, #0x41c] - mov r3, #0x53 - strh r1, [r0, #4] - add r2, r2, #0x400 - mov r0, #2 - mov r1, #3 - strh r3, [r2, #4] - bx ip - .align 2, 0 -_060104E8: .word 0x0380FFF4 -_060104EC: .word AddTask - arm_func_end MLME_AssTimeOut - - arm_func_start MLME_ReAssTask -MLME_ReAssTask: ; 0x060104F0 - stmdb sp!, {r4, lr} - ldr r0, _060105A0 ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - cmp r1, #0x60 - add r4, r0, #0x400 - beq _06010520 - cmp r1, #0x63 - beq _06010578 - b _06010598 -_06010520: - ldr r0, [r4, #0x18] - add r0, r0, #0x10 - bl MakeReAssReqFrame - cmp r0, #0 - bne _06010558 - ldr r0, [r4, #0x1c] - mov r1, #8 - strh r1, [r0, #4] - mov r2, #0x63 - mov r0, #2 - mov r1, #4 - strh r2, [r4] - bl AddTask - b _06010598 -_06010558: - mov r1, #0x61 - strh r1, [r4] - bl TxManCtrlFrame - ldr r0, [r4, #0x18] - ldr r1, _060105A4 ; =MLME_ReAssTimeOut - ldrh r0, [r0, #0x18] - bl SetupTimeOut - b _06010598 -_06010578: - mov r0, #1 - bl ClearQueuedPri - mov r0, #1 - mov r1, #0 - bl MessageDeleteTx - mov r0, #0 - strh r0, [r4] - bl IssueMlmeConfirm -_06010598: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060105A0: .word 0x0380FFF4 -_060105A4: .word MLME_ReAssTimeOut - arm_func_end MLME_ReAssTask - - arm_func_start MLME_ReAssTimeOut -MLME_ReAssTimeOut: ; 0x060105A8 - ldr r0, _060105DC ; =0x0380FFF4 - ldr ip, _060105E0 ; =AddTask - ldr r2, [r0] - mov r1, #7 - add r0, r2, #4 - ldr r0, [r0, #0x41c] - mov r3, #0x63 - strh r1, [r0, #4] - add r2, r2, #0x400 - mov r0, #2 - mov r1, #4 - strh r3, [r2, #4] - bx ip - .align 2, 0 -_060105DC: .word 0x0380FFF4 -_060105E0: .word AddTask - arm_func_end MLME_ReAssTimeOut - - arm_func_start MLME_MeasChannelTask -MLME_MeasChannelTask: ; 0x060105E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _06010844 ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - sub r1, r1, #0x80 - cmp r1, #4 - add r4, r2, #0x344 - add r5, r0, #0x400 - addls pc, pc, r1, lsl #2 - b _06010824 -_06010614: ; jump table - b _06010628 ; case 0 - b _06010668 ; case 1 - b _0601071C ; case 2 - b _06010744 ; case 3 - b _060107B0 ; case 4 -_06010628: - mov r0, #0 - strh r0, [r5, #0x14] - mov r0, #0x13 - bl BBP_Read - strh r0, [r5, #0xe] - mov r0, #0x35 - bl BBP_Read - strh r0, [r5, #0x10] - ldr r1, [r5, #0x18] - ldrh r0, [r1, #0x12] - ldrh r1, [r1, #0x14] - bl WSetCCA_ED - mov r0, #4 - strh r0, [r4, #0xc] - mov r0, #0 - strh r0, [r5, #0x16] -_06010668: - mov r0, #0 - str r0, [r5, #4] - str r0, [r5, #8] - ldr r1, [r5, #0x18] - ldrh r0, [r5, #0x14] - add r1, r1, #0x18 - add r0, r1, r0 - bl WL_ReadByte - movs r4, r0 - beq _0601069C - ldrh r0, [r5, #0x14] - cmp r0, #0x10 - blo _060106A8 -_0601069C: - mov r0, #0x84 - strh r0, [r5] - b _06010824 -_060106A8: - mov r0, #0 - bl FLASH_VerifyCheckSum - cmp r0, #0 - movne r0, #0xe - strneh r0, [r5, #0x16] - movne r0, #0x84 - strneh r0, [r5] - bne _06010824 - ldrh r0, [r5] - mov r1, #0 - cmp r0, #0x80 - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - bne _06010700 - bl WSetChannel - bl WStart - ldr r1, _06010848 ; =0x04808040 - mov r0, #0x8000 - ldrh r1, [r1] - strh r1, [r5, #0xc] - bl WSetForcePowerState - b _06010704 -_06010700: - bl WSetChannel -_06010704: - mov r0, #0x82 - strh r0, [r5] - ldr r0, [r5, #0x18] - ldr r1, _0601084C ; =MLME_MeasChanTimeOut - ldrh r0, [r0, #0x16] - bl SetupTimeOut -_0601071C: - ldr r1, [r5, #4] - ldr r0, _06010850 ; =0x0480819C - add r1, r1, #1 - str r1, [r5, #4] - ldrh r0, [r0] - tst r0, #1 - ldrne r0, [r5, #8] - addne r0, r0, #0x64 - strne r0, [r5, #8] - b _06010824 -_06010744: - ldr r1, [r5, #0x18] - ldrh r0, [r5, #0x14] - add r1, r1, #0x18 - add r0, r1, r0 - bl WL_ReadByte - ldr r1, [r5, #4] - mov r4, r0 - cmp r1, #0 - ldrne r0, [r5, #8] - mov r2, #0 - cmpne r0, #0 - beq _06010784 - bl __VENEER__u32_div_f - add r2, r0, #1 - cmp r2, #0x64 - movhi r2, #0x64 -_06010784: - ldr r1, [r5, #0x1c] - ldrh r0, [r5, #0x14] - orr r2, r4, r2, lsl #8 - add r0, r1, r0, lsl #1 - strh r2, [r0, #8] - ldrh r1, [r5, #0x14] - mov r0, #0x81 - add r1, r1, #1 - strh r1, [r5, #0x14] - strh r0, [r5] - b _06010824 -_060107B0: - bl WStop - ldr r1, _06010844 ; =0x0380FFF4 - mov r0, #0x13 - ldr r1, [r1] - add r1, r1, #0x300 - ldrh r1, [r1, #0x2e] - strh r1, [r4, #0xc] - ldrh r1, [r5, #0xe] - bl BBP_Write - ldrh r1, [r5, #0x10] - mov r0, #0x35 - bl BBP_Write - ldrh r0, [r5, #0xc] - bl WSetForcePowerState - ldrh r2, [r5, #0x16] - ldr r1, [r5, #0x1c] - mov r0, #0 - strh r2, [r1, #4] - strh r0, [r5] - ldrh r2, [r5, #0x14] - mov r1, r0 - b _06010818 -_06010808: - ldr r0, [r5, #0x1c] - add r0, r0, r2, lsl #1 - strh r1, [r0, #8] - add r2, r2, #1 -_06010818: - cmp r2, #0x10 - blo _06010808 - bl IssueMlmeConfirm -_06010824: - ldrh r0, [r5] - cmp r0, #0 - beq _0601083C - mov r0, #2 - mov r1, #5 - bl AddTask -_0601083C: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06010844: .word 0x0380FFF4 -_06010848: .word 0x04808040 -_0601084C: .word MLME_MeasChanTimeOut -_06010850: .word 0x0480819C - arm_func_end MLME_MeasChannelTask - - arm_func_start MLME_MeasChanTimeOut -MLME_MeasChanTimeOut: ; 0x06010854 - ldr r0, _06010878 ; =0x0380FFF4 - ldr ip, _0601087C ; =AddTask - ldr r1, [r0] - mov r3, #0x83 - add r2, r1, #0x400 - mov r0, #2 - mov r1, #5 - strh r3, [r2, #4] - bx ip - .align 2, 0 -_06010878: .word 0x0380FFF4 -_0601087C: .word AddTask - arm_func_end MLME_MeasChanTimeOut - - arm_func_start MLME_BeaconLostTask -MLME_BeaconLostTask: ; 0x06010880 - ldr r0, _06010898 ; =0x0380FFF4 - ldr ip, _0601089C ; =MLME_IssueBeaconLostIndication - ldr r0, [r0] - add r0, r0, #0xc6 - add r0, r0, #0x300 - bx ip - .align 2, 0 -_06010898: .word 0x0380FFF4 -_0601089C: .word MLME_IssueBeaconLostIndication - arm_func_end MLME_BeaconLostTask - - arm_func_start IssueMlmeConfirm -IssueMlmeConfirm: ; 0x060108A0 - stmdb sp!, {r4, lr} - ldr r0, _060108F0 ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x24 - add r1, r0, #0x400 - ldrh r0, [r1, #4] - add r4, r2, #0x17c - bic r0, r0, #1 - strh r0, [r1, #4] - ldr r1, [r2, #0x424] - add r0, r4, #0x84 - bl SendMessageToWmDirect - ldrh r0, [r4, #0x8c] - cmp r0, #0 - beq _060108E8 - mov r0, #2 - mov r1, #0xb - bl AddTask -_060108E8: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060108F0: .word 0x0380FFF4 - arm_func_end IssueMlmeConfirm - - arm_func_start MLME_IssueAuthIndication -MLME_IssueAuthIndication: ; 0x060108F4 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _0601096C ; =0x0380FFF4 - mov r5, r1 - ldr r1, [r2] - mov r6, r0 - add r0, r1, #0x188 - mov r1, #0x18 - bl AllocateHeapBuf - movs r4, r0 - bne _0601092C - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010964 -_0601092C: - mov r0, #0x84 - strh r0, [r4, #0xc] - mov r2, #4 - mov r1, r6 - add r0, r4, #0x10 - strh r2, [r4, #0xe] - bl WSetMacAdrs1 - ldr r0, _0601096C ; =0x0380FFF4 - strh r5, [r4, #0x16] - ldr r0, [r0] - mov r1, r4 - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010964: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_0601096C: .word 0x0380FFF4 - arm_func_end MLME_IssueAuthIndication - - arm_func_start MLME_IssueDeAuthIndication -MLME_IssueDeAuthIndication: ; 0x06010970 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _060109E8 ; =0x0380FFF4 - mov r5, r1 - ldr r1, [r2] - mov r6, r0 - add r0, r1, #0x188 - mov r1, #0x18 - bl AllocateHeapBuf - movs r4, r0 - bne _060109A8 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _060109E0 -_060109A8: - mov r0, #0x85 - strh r0, [r4, #0xc] - mov r2, #4 - mov r1, r6 - add r0, r4, #0x10 - strh r2, [r4, #0xe] - bl WSetMacAdrs1 - ldr r0, _060109E8 ; =0x0380FFF4 - strh r5, [r4, #0x16] - ldr r0, [r0] - mov r1, r4 - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_060109E0: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_060109E8: .word 0x0380FFF4 - arm_func_end MLME_IssueDeAuthIndication - - arm_func_start MLME_IssueAssIndication -MLME_IssueAssIndication: ; 0x060109EC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _06010ADC ; =0x0380FFF4 - mov r5, r1 - ldr r1, [r3] - mov r7, r0 - add r0, r1, #0x188 - mov r1, #0x3a - mov r6, r2 - bl AllocateHeapBuf - movs r4, r0 - bne _06010A28 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010AD4 -_06010A28: - mov r0, #0x86 - strh r0, [r4, #0xc] - mov r2, #0x15 - mov r1, r7 - add r0, r4, #0x10 - strh r2, [r4, #0xe] - bl WSetMacAdrs1 - ldr r1, _06010AE0 ; =0x00000FFF - add r0, r6, #1 - and r1, r5, r1 - strh r1, [r4, #0x16] - bl WL_ReadByte - add r7, r6, #2 - strh r0, [r4, #0x18] - mov r5, #0 - add r6, r4, #0x1a - b _06010A8C -_06010A6C: - cmp r5, #0x20 - bhs _06010A98 - add r0, r7, r5 - bl WL_ReadByte - mov r1, r0 - add r0, r6, r5 - bl WL_WriteByte - add r5, r5, #1 -_06010A8C: - ldrh r0, [r4, #0x18] - cmp r5, r0 - blo _06010A6C -_06010A98: - add r7, r4, #0x1a - mov r6, #0 - b _06010AB4 -_06010AA4: - mov r1, r6 - add r0, r7, r5 - bl WL_WriteByte - add r5, r5, #1 -_06010AB4: - cmp r5, #0x20 - blo _06010AA4 - ldr r0, _06010ADC ; =0x0380FFF4 - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010AD4: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06010ADC: .word 0x0380FFF4 -_06010AE0: .word 0x00000FFF - arm_func_end MLME_IssueAssIndication - - arm_func_start MLME_IssueReAssIndication -MLME_IssueReAssIndication: ; 0x06010AE4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r3, _06010BCC ; =0x0380FFF4 - mov r6, r1 - ldr r1, [r3] - mov r7, r0 - add r0, r1, #0x188 - mov r1, #0x3a - mov r5, r2 - bl AllocateHeapBuf - movs r4, r0 - bne _06010B20 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010BC4 -_06010B20: - mov r0, #0x87 - strh r0, [r4, #0xc] - mov r0, #0x15 - strh r0, [r4, #0xe] - mov r1, r7 - add r0, r4, #0x10 - bl WSetMacAdrs1 - strh r6, [r4, #0x16] - add r0, r5, #1 - bl WL_ReadByte - add r6, r5, #2 - strh r0, [r4, #0x18] - mov r7, #0 - add r5, r4, #0x1a - b _06010B7C -_06010B5C: - cmp r7, #0x20 - bhs _06010B88 - add r0, r6, r7 - bl WL_ReadByte - mov r1, r0 - add r0, r5, r7 - bl WL_WriteByte - add r7, r7, #1 -_06010B7C: - ldrh r0, [r4, #0x18] - cmp r7, r0 - blo _06010B5C -_06010B88: - add r6, r4, #0x1a - mov r5, #0 - b _06010BA4 -_06010B94: - mov r1, r5 - add r0, r6, r7 - bl WL_WriteByte - add r7, r7, #1 -_06010BA4: - cmp r7, #0x20 - blo _06010B94 - ldr r0, _06010BCC ; =0x0380FFF4 - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010BC4: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06010BCC: .word 0x0380FFF4 - arm_func_end MLME_IssueReAssIndication - - arm_func_start MLME_IssueDisAssIndication -MLME_IssueDisAssIndication: ; 0x06010BD0 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _06010C48 ; =0x0380FFF4 - mov r5, r1 - ldr r1, [r2] - mov r6, r0 - add r0, r1, #0x188 - mov r1, #0x18 - bl AllocateHeapBuf - movs r4, r0 - bne _06010C08 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010C40 -_06010C08: - mov r0, #0x88 - strh r0, [r4, #0xc] - mov r2, #4 - mov r1, r6 - add r0, r4, #0x10 - strh r2, [r4, #0xe] - bl WSetMacAdrs1 - ldr r0, _06010C48 ; =0x0380FFF4 - strh r5, [r4, #0x16] - ldr r0, [r0] - mov r1, r4 - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010C40: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06010C48: .word 0x0380FFF4 - arm_func_end MLME_IssueDisAssIndication - - arm_func_start MLME_IssueBeaconLostIndication -MLME_IssueBeaconLostIndication: ; 0x06010C4C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _06010CBC ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r1] - mov r1, #0x16 - add r0, r0, #0x188 - bl AllocateHeapBuf - movs r4, r0 - bne _06010C80 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010CB4 -_06010C80: - mov r0, #0x8b - strh r0, [r4, #0xc] - mov r2, #3 - mov r1, r5 - add r0, r4, #0x10 - strh r2, [r4, #0xe] - bl WSetMacAdrs1 - ldr r0, _06010CBC ; =0x0380FFF4 - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010CB4: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06010CBC: .word 0x0380FFF4 - arm_func_end MLME_IssueBeaconLostIndication - - arm_func_start MLME_IssueBeaconSendIndication -MLME_IssueBeaconSendIndication: ; 0x06010CC0 - stmdb sp!, {r3, lr} - ldr r0, _06010D1C ; =0x0380FFF4 - mov r1, #0x10 - ldr r0, [r0] - add r0, r0, #0x188 - bl AllocateHeapBuf - movs r1, r0 - bne _06010CF0 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010D14 -_06010CF0: - mov r0, #0x8c - strh r0, [r1, #0xc] - mov r2, #0 - ldr r0, _06010D1C ; =0x0380FFF4 - strh r2, [r1, #0xe] - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010D14: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06010D1C: .word 0x0380FFF4 - arm_func_end MLME_IssueBeaconSendIndication - - arm_func_start MLME_IssueBeaconRecvIndication -MLME_IssueBeaconRecvIndication: ; 0x06010D20 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _06010E38 ; =0x0380FFF4 - mov r6, r0 - ldr r2, [r1] - add r0, r2, #0x300 - ldrh r1, [r0, #0xe4] - add r0, r2, #0x188 - add r1, r1, #0x3e - add r4, r2, #0x344 - bl AllocateHeapBuf - movs r5, r0 - bne _06010D60 - mov r0, #1 - bl SetFatalErr - mov r0, #0 - b _06010E30 -_06010D60: - mov r0, #0x8d - strh r0, [r5, #0xc] - ldrh r1, [r4, #0xa0] - add r0, r5, #0x1f - add r1, r1, #1 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - add r1, r1, #0x16 - strh r1, [r5, #0xe] - ldrh r1, [r6, #0x12] - and r1, r1, #0xff - bl WL_WriteByte - ldrh r1, [r6, #0xe] - add r0, r5, #0x1e - and r1, r1, #0xff - bl WL_WriteByte - add r0, r5, #0x2e - add r1, r6, #0x1e - bl WSetMacAdrs1 - ldrh r2, [r4, #0xa0] - strh r2, [r5, #0x16] - cmp r2, #0 - beq _06010E18 - ldrh r0, [r4, #0xa2] - tst r0, #1 - ldr r0, [r4, #0x9c] - beq _06010E0C - add r7, r5, #0x3c - add r6, r0, #1 - mov r4, #0 - b _06010DFC -_06010DDC: - mov r0, r6 - bl WL_ReadByte - mov r1, r0 - mov r0, r7 - bl WL_WriteByte - add r6, r6, #1 - add r7, r7, #1 - add r4, r4, #1 -_06010DFC: - ldrh r0, [r5, #0x16] - cmp r4, r0 - blo _06010DDC - b _06010E18 -_06010E0C: - add r1, r5, #0x3c - add r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_06010E18: - ldr r0, _06010E38 ; =0x0380FFF4 - mov r1, r5 - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #1 -_06010E30: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06010E38: .word 0x0380FFF4 - arm_func_end MLME_IssueBeaconRecvIndication - - arm_func_start InitializeMLME -InitializeMLME: ; 0x06010E3C - ldr r1, _06010E5C ; =0x0380FFF4 - ldr ip, _06010E60 ; =MIi_CpuClear16 - ldr r1, [r1] - mov r0, #0 - add r1, r1, #4 - mov r2, #0x20 - add r1, r1, #0x400 - bx ip - .align 2, 0 -_06010E5C: .word 0x0380FFF4 -_06010E60: .word MIi_CpuClear16 - arm_func_end InitializeMLME - - arm_func_start PARAMSET_AllReqCmd -PARAMSET_AllReqCmd: ; 0x06010E64 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _06010F4C ; =0x0380FFF4 - mov r5, r0 - mov r0, #1 - strh r0, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - bne _06010F44 - add r0, r5, #0x10 - bl WSetMacAdrs - mov r4, r0 - ldrh r0, [r5, #0x16] - bl WSetRetryLimit - orr r4, r4, r0 - ldrh r0, [r5, #0x18] - bl WSetEnableChannel - orr r4, r4, r0 - ldrh r0, [r5, #0x1c] - bl WSetMode - orr r4, r4, r0 - ldrh r0, [r5, #0x1e] - bl WSetRate - orr r4, r4, r0 - ldrh r0, [r5, #0x20] - bl WSetWepMode - orr r4, r4, r0 - ldrh r0, [r5, #0x22] - bl WSetWepKeyId - orr r4, r4, r0 - add r0, r5, #0x24 - bl WSetWepKey - orr r4, r4, r0 - ldrh r0, [r5, #0x74] - bl WSetBeaconType - orr r4, r4, r0 - ldrh r0, [r5, #0x76] - bl WSetBcSsidResponse - orr r4, r4, r0 - ldrh r0, [r5, #0x78] - bl WSetBeaconLostThreshold - orr r4, r4, r0 - ldrh r0, [r5, #0x7a] - mov r1, #0 - bl WSetActiveZoneTime - orr r4, r4, r0 - add r0, r5, #0x7c - bl WSetSsidMask - orr r4, r4, r0 - ldrh r0, [r5, #0x9c] - bl WSetPreambleType - orr r4, r4, r0 - ldrh r0, [r5, #0x9e] - bl WSetAuthAlgo - orr r0, r4, r0 -_06010F44: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06010F4C: .word 0x0380FFF4 - arm_func_end PARAMSET_AllReqCmd - - arm_func_start PARAMSET_MacAdrsReqCmd -PARAMSET_MacAdrsReqCmd: ; 0x06010F50 - stmdb sp!, {r3, lr} - ldr r2, _06010F8C ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - bne _06010F80 - add r0, r0, #0x10 - bl WSetMacAdrs - mov r3, r0 -_06010F80: - mov r0, r3 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06010F8C: .word 0x0380FFF4 - arm_func_end PARAMSET_MacAdrsReqCmd - - arm_func_start PARAMSET_RetryReqCmd -PARAMSET_RetryReqCmd: ; 0x06010F90 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _06010FA4 ; =WSetRetryLimit - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_06010FA4: .word WSetRetryLimit - arm_func_end PARAMSET_RetryReqCmd - - arm_func_start PARAMSET_EnableChannelReqCmd -PARAMSET_EnableChannelReqCmd: ; 0x06010FA8 - stmdb sp!, {r3, lr} - ldr r2, _06010FE4 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - bne _06010FD8 - ldrh r0, [r0, #0x10] - bl WSetEnableChannel - mov r3, r0 -_06010FD8: - mov r0, r3 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06010FE4: .word 0x0380FFF4 - arm_func_end PARAMSET_EnableChannelReqCmd - - arm_func_start PARAMSET_ModeReqCmd -PARAMSET_ModeReqCmd: ; 0x06010FE8 - stmdb sp!, {r3, lr} - ldr r2, _06011034 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r2, [r1, #0x4c] - cmp r2, #0x20 - movhi r0, r3 - bhi _0601102C - bne _06011024 - ldrh r1, [r1, #0x56] - cmp r1, #0 - movne r0, r3 - bne _0601102C -_06011024: - ldrh r0, [r0, #0x10] - bl WSetMode -_0601102C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011034: .word 0x0380FFF4 - arm_func_end PARAMSET_ModeReqCmd - - arm_func_start PARAMSET_RateReqCmd -PARAMSET_RateReqCmd: ; 0x06011038 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _0601104C ; =WSetRate - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_0601104C: .word WSetRate - arm_func_end PARAMSET_RateReqCmd - - arm_func_start PARAMSET_WepModeReqCmd -PARAMSET_WepModeReqCmd: ; 0x06011050 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _06011064 ; =WSetWepMode - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_06011064: .word WSetWepMode - arm_func_end PARAMSET_WepModeReqCmd - - arm_func_start PARAMSET_WepKeyIdReqCmd -PARAMSET_WepKeyIdReqCmd: ; 0x06011068 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _0601107C ; =WSetWepKeyId - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_0601107C: .word WSetWepKeyId - arm_func_end PARAMSET_WepKeyIdReqCmd - - arm_func_start PARAMSET_WepKeyReqCmd -PARAMSET_WepKeyReqCmd: ; 0x06011080 - ldr ip, _06011094 ; =WSetWepKey - mov r2, #1 - add r0, r0, #0x10 - strh r2, [r1, #2] - bx ip - .align 2, 0 -_06011094: .word WSetWepKey - arm_func_end PARAMSET_WepKeyReqCmd - - arm_func_start PARAMSET_BeaconTypeReqCmd -PARAMSET_BeaconTypeReqCmd: ; 0x06011098 - stmdb sp!, {r3, lr} - ldr r2, _060110D4 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x20 - bhi _060110C8 - ldrh r0, [r0, #0x10] - bl WSetBeaconType - mov r3, r0 -_060110C8: - mov r0, r3 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060110D4: .word 0x0380FFF4 - arm_func_end PARAMSET_BeaconTypeReqCmd - - arm_func_start PARAMSET_ResBcSsidReqCmd -PARAMSET_ResBcSsidReqCmd: ; 0x060110D8 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _060110EC ; =WSetBcSsidResponse - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_060110EC: .word WSetBcSsidResponse - arm_func_end PARAMSET_ResBcSsidReqCmd - - arm_func_start PARAMSET_BeaconLostThReqCmd -PARAMSET_BeaconLostThReqCmd: ; 0x060110F0 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _06011104 ; =WSetBeaconLostThreshold - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_06011104: .word WSetBeaconLostThreshold - arm_func_end PARAMSET_BeaconLostThReqCmd - - arm_func_start PARAMSET_ActiveZoneReqCmd -PARAMSET_ActiveZoneReqCmd: ; 0x06011108 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _06011120 ; =WSetActiveZoneTime - ldrh r0, [r0, #0x10] - mov r1, #0 - bx ip - .align 2, 0 -_06011120: .word WSetActiveZoneTime - arm_func_end PARAMSET_ActiveZoneReqCmd - - arm_func_start PARAMSET_SSIDMaskReqCmd -PARAMSET_SSIDMaskReqCmd: ; 0x06011124 - ldr ip, _06011138 ; =WSetSsidMask - mov r2, #1 - add r0, r0, #0x10 - strh r2, [r1, #2] - bx ip - .align 2, 0 -_06011138: .word WSetSsidMask - arm_func_end PARAMSET_SSIDMaskReqCmd - - arm_func_start PARAMSET_PreambleTypeReqCmd -PARAMSET_PreambleTypeReqCmd: ; 0x0601113C - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _06011150 ; =WSetPreambleType - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_06011150: .word WSetPreambleType - arm_func_end PARAMSET_PreambleTypeReqCmd - - arm_func_start PARAMSET_AuthAlgoReqCmd -PARAMSET_AuthAlgoReqCmd: ; 0x06011154 - mov r2, #1 - strh r2, [r1, #2] - ldr ip, _06011168 ; =WSetAuthAlgo - ldrh r0, [r0, #0x10] - bx ip - .align 2, 0 -_06011168: .word WSetAuthAlgo - arm_func_end PARAMSET_AuthAlgoReqCmd - - arm_func_start PARAMSET_CCAModeEDThReqCmd -PARAMSET_CCAModeEDThReqCmd: ; 0x0601116C - stmdb sp!, {r3, r4, r5, lr} - mov r2, #1 - strh r2, [r1, #2] - mov r5, r0 - ldrh r0, [r5, #0x14] - cmp r0, #0x3f - movhi r0, #5 - bhi _060111B0 - ldrh r0, [r5, #0x10] - ldrh r1, [r5, #0x12] - bl WSetCCA_ED - movs r4, r0 - bne _060111AC - ldrh r1, [r5, #0x14] - mov r0, #0x2e - bl BBP_Write -_060111AC: - mov r0, r4 -_060111B0: - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end PARAMSET_CCAModeEDThReqCmd - - arm_func_start PARAMSET_LifeTimeReqCmd -PARAMSET_LifeTimeReqCmd: ; 0x060111B8 - stmdb sp!, {r4, lr} - ldr ip, _060112B8 ; =0x0380FFF4 - mov r3, #1 - ldr r2, [ip] - ldr r2, [r2, #0x31c] - strh r3, [r1, #2] - ldr r1, [ip] - ldrh r4, [r0, #0x10] - add r1, r1, #0x300 - ldrh r1, [r1, #0x22] - cmp r4, r1 - blo _060111F8 - rsb r1, r3, #0x10000 - cmp r4, r1 - movne r0, #5 - bne _060112B0 -_060111F8: - ldrh r3, [r0, #0x14] - cmp r3, #0x3f - bls _06011214 - ldr r1, _060112BC ; =0x0000FFFF - cmp r3, r1 - movne r0, #5 - bne _060112B0 -_06011214: - ldr r1, _060112BC ; =0x0000FFFF - cmp r4, r1 - bne _06011268 - ldr ip, _060112B8 ; =0x0380FFF4 - mov r4, #1 - mov r3, #0x1c - b _06011250 -_06011230: - mla lr, r4, r3, r2 - ldrh r1, [r0, #0x12] - add r4, r4, #1 - strh r1, [lr, #0x1a] - ldrh r1, [lr, #0x18] - cmp r1, #0 - ldrneh r1, [r0, #0x12] - strneh r1, [lr, #0x18] -_06011250: - ldr r1, [ip] - add r1, r1, #0x300 - ldrh r1, [r1, #0x22] - cmp r4, r1 - blo _06011230 - b _0601129C -_06011268: - cmp r4, #0 - beq _0601129C - mov r1, #0x1c - mla r3, r4, r1, r2 - ldrh lr, [r0, #0x12] - add ip, r2, #0x18 - strh lr, [r3, #0x1a] - ldrh r2, [r0, #0x10] - mul r3, r2, r1 - ldrh r1, [ip, r3] - cmp r1, #0 - ldrneh r1, [r0, #0x12] - strneh r1, [ip, r3] -_0601129C: - ldrh r0, [r0, #0x14] - cmp r0, #0 - beq _060112AC - bl WSetFrameLifeTime -_060112AC: - mov r0, #0 -_060112B0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060112B8: .word 0x0380FFF4 -_060112BC: .word 0x0000FFFF - arm_func_end PARAMSET_LifeTimeReqCmd - - arm_func_start PARAMSET_MaxConnReqCmd -PARAMSET_MaxConnReqCmd: ; 0x060112C0 - ldr r2, _06011314 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x20 - movhi r0, r3 - bxhi lr - ldrh r1, [r0, #0x10] - add r1, r1, #1 - strh r1, [r0, #0x10] - ldr r1, [r2] - ldrh r2, [r0, #0x10] - add r0, r1, #0x300 - ldrh r1, [r0, #0x20] - cmp r2, r1 - movhi r0, #5 - strlsh r2, [r0, #0x22] - movls r0, #0 - bx lr - .align 2, 0 -_06011314: .word 0x0380FFF4 - arm_func_end PARAMSET_MaxConnReqCmd - - arm_func_start PARAMSET_MainAntennaReqCmd -PARAMSET_MainAntennaReqCmd: ; 0x06011318 - stmdb sp!, {r3, lr} - ldr r2, _06011354 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - blo _06011348 - ldrh r0, [r0, #0x10] - bl WSetMainAntenna - mov r3, r0 -_06011348: - mov r0, r3 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011354: .word 0x0380FFF4 - arm_func_end PARAMSET_MainAntennaReqCmd - - arm_func_start PARAMSET_DiversityReqCmd -PARAMSET_DiversityReqCmd: ; 0x06011358 - stmdb sp!, {r3, lr} - ldr r2, _06011394 ; =0x0380FFF4 - mov r3, r0 - mov r0, #1 - strh r0, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - blo _0601138C - ldrh r0, [r3, #0x10] - ldrh r1, [r3, #0x12] - bl WSetDiversity -_0601138C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011394: .word 0x0380FFF4 - arm_func_end PARAMSET_DiversityReqCmd - - arm_func_start PARAMSET_BcnSendRecvIndReqCmd -PARAMSET_BcnSendRecvIndReqCmd: ; 0x06011398 - stmdb sp!, {r3, lr} - ldr r2, _060113D4 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - blo _060113C8 - ldrh r0, [r0, #0x10] - bl WSetBeaconSendRecvIndicate - mov r3, r0 -_060113C8: - mov r0, r3 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060113D4: .word 0x0380FFF4 - arm_func_end PARAMSET_BcnSendRecvIndReqCmd - - arm_func_start PARAMSET_NullKeyModeReqCmd -PARAMSET_NullKeyModeReqCmd: ; 0x060113D8 - stmdb sp!, {r3, lr} - ldr r2, _06011414 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0x10 - blo _06011408 - ldrh r0, [r0, #0x10] - bl WSetNullKeyMode - mov r3, r0 -_06011408: - mov r0, r3 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011414: .word 0x0380FFF4 - arm_func_end PARAMSET_NullKeyModeReqCmd - - arm_func_start PARAMSET_BSSIDReqCmd -PARAMSET_BSSIDReqCmd: ; 0x06011418 - ldr ip, _0601142C ; =WSetBssid - mov r2, #1 - add r0, r0, #0x10 - strh r2, [r1, #2] - bx ip - .align 2, 0 -_0601142C: .word WSetBssid - arm_func_end PARAMSET_BSSIDReqCmd - - arm_func_start PARAMSET_SSIDReqCmd -PARAMSET_SSIDReqCmd: ; 0x06011430 - mov r2, #1 - strh r2, [r1, #2] - mov r1, r0 - ldrh r0, [r1, #0x10] - ldr ip, _0601144C ; =WSetSsid - add r1, r1, #0x12 - bx ip - .align 2, 0 -_0601144C: .word WSetSsid - arm_func_end PARAMSET_SSIDReqCmd - - arm_func_start PARAMSET_BeaconPeriodReqCmd -PARAMSET_BeaconPeriodReqCmd: ; 0x06011450 - stmdb sp!, {r3, lr} - ldr r2, _06011488 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x2e] - cmp r1, #1 - movne r0, #0xb - bne _06011480 - ldrh r0, [r0, #0x10] - bl WSetBeaconPeriod -_06011480: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011488: .word 0x0380FFF4 - arm_func_end PARAMSET_BeaconPeriodReqCmd - - arm_func_start PARAMSET_DTIMPeriodReqCmd -PARAMSET_DTIMPeriodReqCmd: ; 0x0601148C - stmdb sp!, {r3, lr} - ldr r2, _060114C4 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x2e] - cmp r1, #1 - movne r0, #0xb - bne _060114BC - ldrh r0, [r0, #0x10] - bl WSetDTIMPeriod -_060114BC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060114C4: .word 0x0380FFF4 - arm_func_end PARAMSET_DTIMPeriodReqCmd - - arm_func_start PARAMSET_ListenIntervalReqCmd -PARAMSET_ListenIntervalReqCmd: ; 0x060114C8 - stmdb sp!, {r3, lr} - ldr r2, _06011504 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x2e] - cmp r1, #2 - cmpne r1, #3 - movne r0, #0xb - bne _060114FC - ldrh r0, [r0, #0x10] - bl WSetListenInterval -_060114FC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011504: .word 0x0380FFF4 - arm_func_end PARAMSET_ListenIntervalReqCmd - - arm_func_start PARAMSET_GameInfoReqCmd -PARAMSET_GameInfoReqCmd: ; 0x06011508 - stmdb sp!, {r3, lr} - ldr r2, _06011568 ; =0x0380FFF4 - mov r3, #1 - strh r3, [r1, #2] - ldr r1, [r2] - mov r3, r0 - add r0, r1, #0x300 - ldrh r0, [r0, #0x2e] - cmp r0, #1 - movne r0, #0xb - bne _06011560 - ldrh r0, [r3, #0x10] - ldrh r2, [r3, #0xe] - add r1, r0, #1 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - add r1, r1, #1 - cmp r2, r1 - movlt r0, #4 - blt _06011560 - add r1, r3, #0x12 - bl WSetGameInfo -_06011560: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011568: .word 0x0380FFF4 - arm_func_end PARAMSET_GameInfoReqCmd - - arm_func_start PARAMGET_AllReqCmd -PARAMGET_AllReqCmd: ; 0x0601156C - stmdb sp!, {r4, lr} - ldr r0, _060116A0 ; =0x0380FFF4 - mov r4, r1 - mov r1, #0x21 - strh r1, [r4, #2] - ldr r1, [r0] - add r0, r4, #6 - add r1, r1, #0x324 - bl WSetMacAdrs1 - ldr r0, _060116A0 ; =0x0380FFF4 - add r1, r4, #0x22 - ldr r3, [r0] - mov r2, #0x20 - add r3, r3, #0x300 - ldrh r3, [r3, #0x2a] - strh r3, [r4, #0xc] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x2c] - strh r3, [r4, #0xe] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0xbe] - strh r3, [r4, #0x10] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x2e] - strh r3, [r4, #0x12] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x30] - strh r3, [r4, #0x14] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x34] - strh r3, [r4, #0x16] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x36] - strh r3, [r4, #0x18] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x3a] - mov r3, r3, lsl #0x1f - mov r3, r3, lsr #0x1f - strh r3, [r4, #0x1a] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x3a] - mov r3, r3, lsl #0x1e - mov r3, r3, lsr #0x1f - strh r3, [r4, #0x1c] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0xc2] - strh r3, [r4, #0x1e] - ldr r3, [r0] - add r3, r3, #0x300 - ldrh r3, [r3, #0x3c] - strh r3, [r4, #0x20] - ldr r0, [r0] - add r0, r0, #0x384 - bl __VENEER_MIi_CpuCopy16 - ldr r2, _060116A0 ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x3a] - mov r1, r1, lsl #0x1d - mov r1, r1, lsr #0x1f - strh r1, [r4, #0x42] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x32] - strh r1, [r4, #0x44] - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_060116A0: .word 0x0380FFF4 - arm_func_end PARAMGET_AllReqCmd - - arm_func_start PARAMGET_MacAdrsReqCmd -PARAMGET_MacAdrsReqCmd: ; 0x060116A4 - stmdb sp!, {r3, lr} - ldr r0, _060116D0 ; =0x0380FFF4 - mov r2, #4 - strh r2, [r1, #2] - ldr r2, [r0] - add r0, r1, #6 - add r1, r2, #0x324 - bl WSetMacAdrs1 - mov r0, #0 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060116D0: .word 0x0380FFF4 - arm_func_end PARAMGET_MacAdrsReqCmd - - arm_func_start PARAMGET_RetryReqCmd -PARAMGET_RetryReqCmd: ; 0x060116D4 - ldr r0, _060116F8 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x2a] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_060116F8: .word 0x0380FFF4 - arm_func_end PARAMGET_RetryReqCmd - - arm_func_start PARAMGET_EnableChannelReqCmd -PARAMGET_EnableChannelReqCmd: ; 0x060116FC - ldr r3, _06011730 ; =0x0380FFF4 - mov r0, #3 - strh r0, [r1, #2] - ldr r2, [r3] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x2c] - strh r2, [r1, #6] - ldr r2, [r3] - add r2, r2, #0x300 - ldrh r2, [r2, #0xbe] - strh r2, [r1, #8] - bx lr - .align 2, 0 -_06011730: .word 0x0380FFF4 - arm_func_end PARAMGET_EnableChannelReqCmd - - arm_func_start PARAMGET_ModeReqCmd -PARAMGET_ModeReqCmd: ; 0x06011734 - ldr r0, _06011758 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x2e] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011758: .word 0x0380FFF4 - arm_func_end PARAMGET_ModeReqCmd - - arm_func_start PARAMGET_RateReqCmd -PARAMGET_RateReqCmd: ; 0x0601175C - ldr r0, _06011780 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x30] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011780: .word 0x0380FFF4 - arm_func_end PARAMGET_RateReqCmd - - arm_func_start PARAMGET_WepModeReqCmd -PARAMGET_WepModeReqCmd: ; 0x06011784 - ldr r0, _060117A8 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x34] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_060117A8: .word 0x0380FFF4 - arm_func_end PARAMGET_WepModeReqCmd - - arm_func_start PARAMGET_WepKeyIdReqCmd -PARAMGET_WepKeyIdReqCmd: ; 0x060117AC - ldr r0, _060117D0 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x36] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_060117D0: .word 0x0380FFF4 - arm_func_end PARAMGET_WepKeyIdReqCmd - - arm_func_start PARAMGET_BeaconTypeReqCmd -PARAMGET_BeaconTypeReqCmd: ; 0x060117D4 - ldr r0, _06011800 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x3a] - mov r2, r2, lsl #0x1f - mov r2, r2, lsr #0x1f - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011800: .word 0x0380FFF4 - arm_func_end PARAMGET_BeaconTypeReqCmd - - arm_func_start PARAMGET_ResBcSsidReqCmd -PARAMGET_ResBcSsidReqCmd: ; 0x06011804 - ldr r0, _06011830 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x3a] - mov r2, r2, lsl #0x1e - mov r2, r2, lsr #0x1f - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011830: .word 0x0380FFF4 - arm_func_end PARAMGET_ResBcSsidReqCmd - - arm_func_start PARAMGET_BeaconLostThReqCmd -PARAMGET_BeaconLostThReqCmd: ; 0x06011834 - ldr r0, _06011858 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0xc2] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011858: .word 0x0380FFF4 - arm_func_end PARAMGET_BeaconLostThReqCmd - - arm_func_start PARAMGET_ActiveZoneReqCmd -PARAMGET_ActiveZoneReqCmd: ; 0x0601185C - ldr r0, _06011880 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x3c] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011880: .word 0x0380FFF4 - arm_func_end PARAMGET_ActiveZoneReqCmd - - arm_func_start PARAMGET_SSIDMaskReqCmd -PARAMGET_SSIDMaskReqCmd: ; 0x06011884 - ldr r0, _060118BC ; =0x0380FFF4 - mov r2, #0x11 - strh r2, [r1, #2] - ldr r0, [r0] - add r3, r1, #6 - add r2, r0, #0x384 - mov r1, #0 -_060118A0: - ldrh r0, [r2], #2 - add r1, r1, #1 - cmp r1, #0x10 - strh r0, [r3], #2 - blo _060118A0 - mov r0, #0 - bx lr - .align 2, 0 -_060118BC: .word 0x0380FFF4 - arm_func_end PARAMGET_SSIDMaskReqCmd - - arm_func_start PARAMGET_PreambleTypeReqCmd -PARAMGET_PreambleTypeReqCmd: ; 0x060118C0 - ldr r0, _060118EC ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x3a] - mov r2, r2, lsl #0x1d - mov r2, r2, lsr #0x1f - strh r2, [r1, #6] - bx lr - .align 2, 0 -_060118EC: .word 0x0380FFF4 - arm_func_end PARAMGET_PreambleTypeReqCmd - - arm_func_start PARAMGET_AuthAlgoReqCmd -PARAMGET_AuthAlgoReqCmd: ; 0x060118F0 - ldr r0, _06011914 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x32] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011914: .word 0x0380FFF4 - arm_func_end PARAMGET_AuthAlgoReqCmd - - arm_func_start PARAMGET_CCAModeEDThReqCmd -PARAMGET_CCAModeEDThReqCmd: ; 0x06011918 - stmdb sp!, {r4, lr} - mov r4, r1 - mov r0, #4 - strh r0, [r4, #2] - mov r0, #0x13 - bl BBP_Read - strh r0, [r4, #6] - mov r0, #0x35 - bl BBP_Read - strh r0, [r4, #8] - mov r0, #0x2e - bl BBP_Read - strh r0, [r4, #0xa] - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - arm_func_end PARAMGET_CCAModeEDThReqCmd - - arm_func_start PARAMGET_MaxConnReqCmd -PARAMGET_MaxConnReqCmd: ; 0x06011958 - ldr r0, _06011980 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x22] - sub r2, r2, #1 - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011980: .word 0x0380FFF4 - arm_func_end PARAMGET_MaxConnReqCmd - - arm_func_start PARAMGET_MainAntennaReqCmd -PARAMGET_MainAntennaReqCmd: ; 0x06011984 - ldr r0, _060119BC ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r2, [r0, #0x4c] - cmp r2, #0x10 - movlo r0, #1 - ldrhsh r2, [r0, #0x3a] - movhs r0, #0 - movhs r2, r2, lsl #0x1c - movhs r2, r2, lsr #0x1f - strhsh r2, [r1, #6] - bx lr - .align 2, 0 -_060119BC: .word 0x0380FFF4 - arm_func_end PARAMGET_MainAntennaReqCmd - - arm_func_start PARAMGET_DiversityReqCmd -PARAMGET_DiversityReqCmd: ; 0x060119C0 - ldr r3, _06011A1C ; =0x0380FFF4 - mov r0, #3 - strh r0, [r1, #2] - ldr r0, [r3] - add r0, r0, #0x300 - ldrh r2, [r0, #0x4c] - cmp r2, #0x10 - movlo r0, #1 - bxlo lr - ldrh r2, [r0, #0x3a] - mov r0, #0 - mov r2, r2, lsl #0x1b - mov r2, r2, lsr #0x1f - strh r2, [r1, #6] - ldr r2, [r3] - add r2, r2, #0x300 - ldrh r3, [r2, #0x3a] - mov r2, r3, lsl #0x1c - mov r3, r3, lsl #0x1a - mov r2, r2, lsr #0x1f - eor r2, r2, r3, lsr #31 - strh r2, [r1, #8] - bx lr - .align 2, 0 -_06011A1C: .word 0x0380FFF4 - arm_func_end PARAMGET_DiversityReqCmd - - arm_func_start PARAMGET_BcnSendRecvIndReqCmd -PARAMGET_BcnSendRecvIndReqCmd: ; 0x06011A20 - ldr r0, _06011A58 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r2, [r0, #0x4c] - cmp r2, #0x10 - movlo r0, #1 - ldrhsh r2, [r0, #0x3a] - movhs r0, #0 - movhs r2, r2, lsl #0x19 - movhs r2, r2, lsr #0x1f - strhsh r2, [r1, #6] - bx lr - .align 2, 0 -_06011A58: .word 0x0380FFF4 - arm_func_end PARAMGET_BcnSendRecvIndReqCmd - - arm_func_start PARAMGET_NullKeyModeReqCmd -PARAMGET_NullKeyModeReqCmd: ; 0x06011A5C - ldr r0, _06011A94 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r2, [r0, #0x4c] - cmp r2, #0x10 - movlo r0, #1 - ldrhsh r2, [r0, #0x3a] - movhs r0, #0 - movhs r2, r2, lsl #0x18 - movhs r2, r2, lsr #0x1f - strhsh r2, [r1, #6] - bx lr - .align 2, 0 -_06011A94: .word 0x0380FFF4 - arm_func_end PARAMGET_NullKeyModeReqCmd - - arm_func_start PARAMGET_BSSIDReqCmd -PARAMGET_BSSIDReqCmd: ; 0x06011A98 - stmdb sp!, {r3, lr} - ldr r0, _06011AC4 ; =0x0380FFF4 - mov r2, #4 - strh r2, [r1, #2] - ldr r2, [r0] - add r0, r1, #6 - add r1, r2, #0x3a8 - bl WSetMacAdrs1 - mov r0, #0 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011AC4: .word 0x0380FFF4 - arm_func_end PARAMGET_BSSIDReqCmd - - arm_func_start PARAMGET_SSIDReqCmd -PARAMGET_SSIDReqCmd: ; 0x06011AC8 - ldr r2, _06011B10 ; =0x0380FFF4 - mov r0, #0x12 - strh r0, [r1, #2] - ldr r0, [r2] - add ip, r1, #8 - add r0, r0, #0x300 - ldrh r0, [r0, #0x62] - mov r3, #0 - strh r0, [r1, #6] - ldr r0, [r2] - add r1, r0, #0x364 -_06011AF4: - ldrh r0, [r1], #2 - add r3, r3, #2 - cmp r3, #0x20 - strh r0, [ip], #2 - blo _06011AF4 - mov r0, #0 - bx lr - .align 2, 0 -_06011B10: .word 0x0380FFF4 - arm_func_end PARAMGET_SSIDReqCmd - - arm_func_start PARAMGET_BeaconPeriodReqCmd -PARAMGET_BeaconPeriodReqCmd: ; 0x06011B14 - ldr r0, _06011B38 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0xb2] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011B38: .word 0x0380FFF4 - arm_func_end PARAMGET_BeaconPeriodReqCmd - - arm_func_start PARAMGET_DTIMPeriodReqCmd -PARAMGET_DTIMPeriodReqCmd: ; 0x06011B3C - ldr r0, _06011B60 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0xb8] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011B60: .word 0x0380FFF4 - arm_func_end PARAMGET_DTIMPeriodReqCmd - - arm_func_start PARAMGET_ListenIntervalReqCmd -PARAMGET_ListenIntervalReqCmd: ; 0x06011B64 - ldr r0, _06011B88 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0xb4] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011B88: .word 0x0380FFF4 - arm_func_end PARAMGET_ListenIntervalReqCmd - - arm_func_start PARAMGET_GameInfoReqCmd -PARAMGET_GameInfoReqCmd: ; 0x06011B8C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - ldrh r0, [r4, #2] - ldr r1, _06011C60 ; =0x0380FFF4 - cmp r0, #1 - ldrhi r0, _06011C60 ; =0x0380FFF4 - ldrhi r0, [r0] - addhi r0, r0, #0x300 - ldrhih r0, [r0, #0xe4] - strhih r0, [r4, #6] - ldrh r0, [r4, #2] - ldr r3, [r1] - sub r1, r0, #2 - add r0, r3, #0x300 - ldrh r2, [r0, #0xe4] - cmp r2, r1, lsl #1 - movgt r0, #4 - bgt _06011C58 - ldrh r2, [r4, #6] - cmp r2, #0 - beq _06011C3C - ldrh r0, [r0, #0xe6] - tst r0, #1 - ldr r0, [r3, #0x3e0] - beq _06011C30 - add r6, r4, #8 - add r5, r0, #1 - mov r7, #0 - b _06011C20 -_06011C00: - mov r0, r5 - bl WL_ReadByte - mov r1, r0 - mov r0, r6 - bl WL_WriteByte - add r6, r6, #1 - add r5, r5, #1 - add r7, r7, #1 -_06011C20: - ldrh r0, [r4, #6] - cmp r7, r0 - blo _06011C00 - b _06011C3C -_06011C30: - add r1, r4, #8 - add r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_06011C3C: - ldrh r1, [r4, #6] - mov r0, #0 - add r1, r1, #1 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - add r1, r1, #2 - strh r1, [r4, #2] -_06011C58: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06011C60: .word 0x0380FFF4 - arm_func_end PARAMGET_GameInfoReqCmd - - arm_func_start DEV_ShutdownReqCmd -DEV_ShutdownReqCmd: ; 0x06011C64 - stmdb sp!, {r3, lr} - ldr r2, _06011CA0 ; =0x0380FFF4 - mov r0, #1 - strh r0, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r1, [r1, #0x4c] - cmp r1, #0 - cmpne r1, #0x10 - bne _06011C98 - mov r0, #0 - bl WSetStaState - mov r0, #0 -_06011C98: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011CA0: .word 0x0380FFF4 - arm_func_end DEV_ShutdownReqCmd - - arm_func_start DEV_IdleReqCmd -DEV_IdleReqCmd: ; 0x06011CA4 - stmdb sp!, {r3, lr} - ldr r2, _06011CFC ; =0x0380FFF4 - mov r0, #1 - strh r0, [r1, #2] - ldr r1, [r2] - add r1, r1, #0x300 - ldrh r2, [r1, #0x4c] - cmp r2, #0x20 - bhi _06011CF4 - ldrh r1, [r1, #0x56] - cmp r1, #0 - bne _06011CF4 - mov r0, #0 - bl FLASH_VerifyCheckSum - cmp r0, #0 - movne r0, #0xe - bne _06011CF4 - mov r0, #0x10 - bl WSetStaState - mov r0, #0 -_06011CF4: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011CFC: .word 0x0380FFF4 - arm_func_end DEV_IdleReqCmd - - arm_func_start DEV_Class1ReqCmd -DEV_Class1ReqCmd: ; 0x06011D00 - stmdb sp!, {r3, lr} - ldr r0, _06011D50 ; =0x0380FFF4 - mov r2, #1 - strh r2, [r1, #2] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r1, [r0, #0x4c] - cmp r1, #0x10 - beq _06011D34 - cmp r1, #0x20 - ldreqh r0, [r0, #0x56] - cmpeq r0, #0 - bne _06011D44 -_06011D34: - mov r0, #0x20 - bl WSetStaState - mov r0, #0 - b _06011D48 -_06011D44: - mov r0, #1 -_06011D48: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011D50: .word 0x0380FFF4 - arm_func_end DEV_Class1ReqCmd - - arm_func_start DEV_RebootReqCmd -DEV_RebootReqCmd: ; 0x06011D54 - stmdb sp!, {r3, lr} - ldr r0, _06011D8C ; =0x0380FFF4 - mov r2, #1 - strh r2, [r1, #2] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0x20 - blo _06011D7C - bl WStop -_06011D7C: - bl WlessLibReboot - mov r0, #0 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011D8C: .word 0x0380FFF4 - arm_func_end DEV_RebootReqCmd - - arm_func_start DEV_ClearWlInfoReqCmd -DEV_ClearWlInfoReqCmd: ; 0x06011D90 - stmdb sp!, {r3, lr} - ldr r0, _06011DC4 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0 - mov r0, #1 - beq _06011DBC - strh r0, [r1, #2] - bl WInitCounter - mov r0, #0 -_06011DBC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06011DC4: .word 0x0380FFF4 - arm_func_end DEV_ClearWlInfoReqCmd - - arm_func_start DEV_GetVerInfoReqCmd -DEV_GetVerInfoReqCmd: ; 0x06011DC8 - stmdb sp!, {r4, lr} - ldr r0, _06011E5C ; =wlVersion$4017 - mov r4, r1 - mov r3, #9 - add r1, r4, #6 - mov r2, #8 - strh r3, [r4, #2] - bl __VENEER_MIi_CpuCopy16 - ldr r1, _06011E60 ; =0x04808000 - ldr r0, _06011E64 ; =0x0380FFF4 - ldrh r1, [r1] - strh r1, [r4, #0xe] - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #0x8000 - moveq r1, #0x6d - ldreq r0, _06011E68 ; =0x0000933D - streqh r1, [r4, #0x10] - beq _06011E28 - mov r0, #0 - bl BBP_Read - strh r0, [r4, #0x10] - bl CalcBbpCRC -_06011E28: - strh r0, [r4, #0x12] - ldr r0, _06011E64 ; =0x0380FFF4 - ldr r1, [r0] - add r0, r1, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #0x4000 - addne r0, r1, #0x500 - ldrneh r0, [r0, #0xf8] - moveq r0, #2 - strh r0, [r4, #0x14] - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06011E5C: .word wlVersion$4017 -_06011E60: .word 0x04808000 -_06011E64: .word 0x0380FFF4 -_06011E68: .word 0x0000933D - arm_func_end DEV_GetVerInfoReqCmd - - arm_func_start DEV_GetWlInfoReqCmd -DEV_GetWlInfoReqCmd: ; 0x06011E6C - stmdb sp!, {r4, lr} - ldr r0, _06011EC4 ; =0x0380FFF4 - mov r4, r1 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0 - moveq r0, #1 - beq _06011EBC - mov r0, #0x5c - strh r0, [r4, #2] - bl WUpdateCounter - ldr r0, _06011EC4 ; =0x0380FFF4 - add r1, r4, #8 - ldr r0, [r0] - mov r2, #0xb4 - add r0, r0, #0x13c - add r0, r0, #0x400 - bl __VENEER_MIi_CpuCopy32 - mov r0, #0 -_06011EBC: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06011EC4: .word 0x0380FFF4 - arm_func_end DEV_GetWlInfoReqCmd - - arm_func_start __VENEER_MIi_CpuCopy32 -__VENEER_MIi_CpuCopy32: ; 0x06011EC8 - ldr pc, _06011ECC ; =MIi_CpuCopy32 - .align 2, 0 -_06011ECC: .word MIi_CpuCopy32 - arm_func_end __VENEER_MIi_CpuCopy32 - - arm_func_start DEV_GetStateReqCmd -DEV_GetStateReqCmd: ; 0x06011ED0 - ldr r0, _06011EF4 ; =0x0380FFF4 - mov r2, #2 - strh r2, [r1, #2] - ldr r2, [r0] - mov r0, #0 - add r2, r2, #0x300 - ldrh r2, [r2, #0x4c] - strh r2, [r1, #6] - bx lr - .align 2, 0 -_06011EF4: .word 0x0380FFF4 - arm_func_end DEV_GetStateReqCmd - - arm_func_start DEV_TestSignalReqCmd -DEV_TestSignalReqCmd: ; 0x06011EF8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r2, _06012220 ; =0x0380FFF4 - mov r5, r0 - ldr r2, [r2] - mov r0, #1 - strh r0, [r1, #2] - add r4, r2, #0x344 - ldrh r1, [r4, #8] - and r1, r1, #0xf0 - cmp r1, #0x10 - bne _06012214 - ldrh r0, [r5, #0x10] - cmp r0, #1 - movhi r0, #5 - bhi _06012214 - ldrh r0, [r5, #0x14] - cmp r0, #0xa - cmpne r0, #0x14 - movne r0, #5 - bne _06012214 - ldrh r0, [r5, #0x12] - cmp r0, #4 - movhi r0, #5 - bhi _06012214 - mov r0, #0 - bl FLASH_VerifyCheckSum - cmp r0, #0 - movne r0, #0xe - bne _06012214 - ldrh r0, [r5, #0x10] - cmp r0, #0 - beq _06012188 - cmp r0, #1 - bne _06012210 - ldrh r0, [r4, #8] - cmp r0, #0x10 - movne r0, #1 - bne _06012214 - mov r0, #0 - str r0, [sp] - add r2, sp, #0 - mov r0, #0x65 - mov r1, #1 - bl FLASH_DirectRead - ldr r6, [sp] - mov r0, #1 - bl BBP_Read - cmp r6, r0 - beq _06011FD4 - mov r1, r6 - mov r0, #1 - bl BBP_Write - ldr r0, _06012224 ; =0x00001388 - bl WWaitus -_06011FD4: - ldrh r0, [r5, #0x12] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _06012210 -_06011FE4: ; jump table - b _06011FF8 ; case 0 - b _06011FF8 ; case 1 - b _06011FF8 ; case 2 - b _06012090 ; case 3 - b _06012090 ; case 4 -_06011FF8: - mov r0, #0x11 - strh r0, [r4, #8] - ldrh r0, [r5, #0x16] - mov r1, #1 - bl WSetChannel - ldr r1, _06012228 ; =0x04808040 - mov r2, #0x8000 - ldr r0, _0601222C ; =0x000005DC - strh r2, [r1] - bl WWaitus - ldrh r1, [r5, #0x14] - mov r0, #2 - strh r1, [r4, #0x16] - bl BBP_Read - str r0, [sp] - ldrh r1, [r5, #0x12] - ldr r2, _06012230 ; =0x048081A4 - cmp r1, #1 - orrls r0, r0, #0x10 - strls r0, [sp] - ldrh r0, [r5, #0x14] - strh r0, [r2] - ldrh r0, [r5, #0x12] - cmp r0, #1 - strneh r0, [r2, #-2] - bne _06012074 - ldr r1, [sp] - mov r0, #3 - orr r1, r1, #0x20 - str r1, [sp] - strh r0, [r2, #-2] -_06012074: - ldr r1, [sp] - mov r0, #2 - bl BBP_Write - ldr r1, _06012234 ; =0x00000823 - ldr r0, _06012238 ; =0x048081A0 - strh r1, [r0] - b _06012210 -_06012090: - ldr r0, _06012220 ; =0x0380FFF4 - ldr r0, [r0] - add r4, r0, #0x344 - bl WStart - bl WStop - mov r0, #6 - bl BBP_Read - strh r0, [r4, #0xac] - ldrh r0, [r5, #0x12] - cmp r0, #4 - bne _060120C8 - mov r0, #6 - mov r1, #0 - bl BBP_Write -_060120C8: - ldr r1, _0601223C ; =0x04804000 - mov r0, #0 - mov r2, #0xc - bl __VENEER_MIi_CpuClear16 - ldr r1, _0601223C ; =0x04804000 - mov r0, #0x14 - strh r0, [r1, #8] - mov r0, #0x7d0 - strh r0, [r1, #0xa] - add r3, r1, #0xc - ldr r1, _06012240 ; =0x00005555 - ldr r0, _06012244 ; =0x000007EC - mov r2, #0 -_060120FC: - add r2, r2, #2 - cmp r2, r0 - strh r1, [r3], #2 - blo _060120FC - ldr r1, _0601223C ; =0x04804000 - mov r2, #8 - ldr r0, _06012248 ; =0x04808194 - strh r2, [r1, #0xc] - mov r1, #6 - strh r1, [r0] - mov r0, #0x12 - strh r0, [r4, #8] - mov r1, #1 - strh r1, [r4, #0x18] - ldrh r0, [r5, #0x16] - bl WSetChannel - ldr r1, _06012228 ; =0x04808040 - mov r2, #0x8000 - ldr r0, _0601222C ; =0x000005DC - strh r2, [r1] - bl WWaitus - mov r2, #1 - ldr r3, _0601224C ; =0x04808012 - mov r0, #2 - strh r0, [r3] - strh r2, [r3, #-0xe] - ldr r1, _0601223C ; =0x04804000 - rsb r0, r2, #0x4000 - and r0, r1, r0 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - strh r2, [r3, #0x9c] - orr r0, r0, #0x8000 - strh r0, [r3, #0x8e] - b _06012210 -_06012188: - ldrh r0, [r4, #8] - cmp r0, #0x11 - bne _060121D0 - bl ClearPeriodicTimeOut - ldr r1, _06012238 ; =0x048081A0 - mov r2, #0 - strh r2, [r1] - mov r0, #1 - strh r0, [r1, #2] - sub r0, r1, #0x160 - strh r2, [r0] - mov r0, #2 - bl BBP_Read - bic r1, r0, #0x30 - mov r0, #2 - str r1, [sp] - bl BBP_Write - b _06012208 -_060121D0: - cmp r0, #0x12 - bne _06012200 - ldr r1, _06012250 ; =0x04808004 - mov r0, #0 - strh r0, [r4, #0x18] -_060121E4: - ldrh r0, [r1] - cmp r0, #0 - bne _060121E4 - ldrh r1, [r4, #0xac] - mov r0, #6 - bl BBP_Write - b _06012208 -_06012200: - mov r0, #1 - b _06012214 -_06012208: - mov r0, #0x10 - strh r0, [r4, #8] -_06012210: - mov r0, #0 -_06012214: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, lr} - bx lr - .align 2, 0 -_06012220: .word 0x0380FFF4 -_06012224: .word 0x00001388 -_06012228: .word 0x04808040 -_0601222C: .word 0x000005DC -_06012230: .word 0x048081A4 -_06012234: .word 0x00000823 -_06012238: .word 0x048081A0 -_0601223C: .word 0x04804000 -_06012240: .word 0x00005555 -_06012244: .word 0x000007EC -_06012248: .word 0x04808194 -_0601224C: .word 0x04808012 -_06012250: .word 0x04808004 - arm_func_end DEV_TestSignalReqCmd - - arm_func_start IntrCarrierSuppresionSignal -IntrCarrierSuppresionSignal: ; 0x06012254 - ldr r0, _060122C0 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x5c] - cmp r0, #0 - beq _06012290 - ldr r0, _060122C4 ; =0x04804000 - mov r2, #0 - strh r2, [r0] - ldr r1, _060122C8 ; =0x048080A0 - strh r2, [r0, #4] - ldrh r0, [r1] - orr r0, r0, #0x8000 - strh r0, [r1] - bx lr -_06012290: - ldr r2, _060122CC ; =0x048080AC - mov r3, #1 - strh r3, [r2] - mov r1, #0 - strh r1, [r2, #-0xa8] - mov r0, #2 - strh r0, [r2, #-0x9a] - rsb r0, r3, #0x10000 - strh r0, [r2, #-0x9c] - strh r1, [r2, #0xe8] - strh r1, [r2, #-0x6c] - bx lr - .align 2, 0 -_060122C0: .word 0x0380FFF4 -_060122C4: .word 0x04804000 -_060122C8: .word 0x048080A0 -_060122CC: .word 0x048080AC - arm_func_end IntrCarrierSuppresionSignal - - arm_func_start DEV_TestRxReqCmd -DEV_TestRxReqCmd: ; 0x060122D0 - stmdb sp!, {r4, lr} - ldr r2, _0601237C ; =0x0380FFF4 - mov r3, #1 - ldr r2, [r2] - strh r3, [r1, #2] - add r4, r2, #0x344 - ldrh r2, [r4, #8] - and r1, r2, #0xf0 - cmp r1, #0x10 - movne r0, r3 - bne _06012374 - ldrh r1, [r0, #0x10] - cmp r1, #0 - beq _06012348 - cmp r1, #1 - bne _06012370 - cmp r2, #0x10 - movne r0, r3 - bne _06012374 - ldrh r0, [r0, #0x12] - mov r1, r3 - bl WSetChannel - mov r0, #0 - strh r0, [r4, #0xc] - bl WStart - mov r0, #0x8000 - bl WSetForcePowerState - mov r0, #0x11 - strh r0, [r4, #8] - b _06012370 -_06012348: - cmp r2, #0x11 - bne _06012360 - mov r0, #0 - bl WSetForcePowerState - bl WStop - b _06012368 -_06012360: - mov r0, r3 - b _06012374 -_06012368: - mov r0, #0x10 - strh r0, [r4, #8] -_06012370: - mov r0, #0 -_06012374: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_0601237C: .word 0x0380FFF4 - arm_func_end DEV_TestRxReqCmd - - arm_func_start MA_DataReqCmd -MA_DataReqCmd: ; 0x06012380 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _06012544 ; =0x0380FFF4 - mov r8, r0 - ldr r4, [r1] - ldrh r1, [r8, #0x16] - ldr r0, _06012548 ; =0x000005E4 - add r5, r4, #0x344 - cmp r1, r0 - add r6, r4, #0x31c - movhi r0, #5 - bhi _0601253C - ldrh r0, [r6, #0x12] - cmp r0, #1 - bne _060123E0 - add r0, r8, #0x28 - bl CAM_Search - mov r7, r0 - cmp r7, #0xff - beq _060123D8 - bl CAM_GetStaState - cmp r0, #0x40 - beq _060123E4 -_060123D8: - mov r0, #0xa - b _0601253C -_060123E0: - ldrh r7, [r5, #0x88] -_060123E4: - ldr r0, _06012544 ; =0x0380FFF4 - strh r7, [r8, #0x12] - ldr r0, [r0] - ldr r0, [r0, #0x3ec] - strh r0, [r8, #0x14] - ldrh r0, [r8, #0x1e] - tst r0, #0xff - strneh r0, [r8, #0x20] - movne r0, #0 - strneh r0, [r8, #0x1e] - bne _0601241C - mov r0, r7 - bl CAM_GetTxRate - strh r0, [r8, #0x20] -_0601241C: - ldrh r0, [r8, #0x16] - cmp r0, #0 - bne _06012444 - ldrh r1, [r5, #0x8a] - mov r0, #0x1c - orr r1, r1, #0x40 - bic r1, r1, #0x4000 - strh r1, [r8, #0x24] - strh r0, [r8, #0x22] - b _06012468 -_06012444: - ldrh r0, [r5, #0x8a] - strh r0, [r8, #0x24] - ldrh r0, [r6, #0x18] - cmp r0, #0 - ldrh r0, [r8, #0x16] - addeq r0, r0, #0x1c - streqh r0, [r8, #0x22] - addne r0, r0, #0x24 - strneh r0, [r8, #0x22] -_06012468: - ldrh r0, [r6, #0x12] - cmp r0, #1 - beq _06012484 - cmp r0, #2 - cmpne r0, #3 - beq _06012500 - b _06012538 -_06012484: - add r0, r8, #0x34 - add r1, r8, #0x2e - bl WSetMacAdrs1 - add r0, r8, #0x2e - add r1, r5, #0x64 - bl WSetMacAdrs1 - cmp r7, #0 - bne _060124DC - mov r1, r8 - add r0, r4, #0x200 - bl CAM_AddBcFrame - ldr r0, _06012544 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x500 - ldrh r1, [r0, #0x32] - ldrh r2, [r0, #0x2e] - mvn r0, r1 - tst r2, r0 - bne _06012538 - mov r0, #2 - bl TxqPri - b _06012538 -_060124DC: - add r0, r8, #0x10 - bl CAM_IncFrameCount - mov r2, r8 - add r0, r4, #0x200 - add r1, r4, #0x194 - bl MoveHeapBuf - mov r0, #0 - bl TxqPri - b _06012538 -_06012500: - add r0, r8, #0x34 - add r1, r8, #0x28 - bl WSetMacAdrs1 - add r0, r8, #0x28 - add r1, r5, #0x64 - bl WSetMacAdrs1 - add r0, r8, #0x10 - bl CAM_IncFrameCount - mov r2, r8 - add r0, r4, #0x200 - add r1, r4, #0x194 - bl MoveHeapBuf - mov r0, #0 - bl TxqPri -_06012538: - mov r0, #0x81 -_0601253C: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_06012544: .word 0x0380FFF4 -_06012548: .word 0x000005E4 - arm_func_end MA_DataReqCmd - - arm_func_start MA_KeyDataReqCmd -MA_KeyDataReqCmd: ; 0x0601254C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r2, _060126D8 ; =0x0380FFF4 - mov sl, r0 - ldr r2, [r2] - mov sb, #1 - add r0, r2, #0x600 - ldrh r6, [r0, #0x90] - add r4, r2, #0x31c - strh sb, [r1, #2] - ldrh r1, [r4, #0x12] - add r0, r2, #0x2c - add r5, r0, #0x400 - cmp r1, #2 - movne r0, #0xb - bne _060126D0 - ldrh r0, [sl, #0x10] - cmp r0, #0x204 - movhi r0, #5 - bhi _060126D0 - ldrh r0, [r5, #0x50] - add fp, r5, #0x50 - cmp r0, #0 - moveq sb, #0 - mov r0, #0x14 - mul r8, sb, r0 - ldrh r1, [fp, r8] - cmp r1, #0 - movne r0, #8 - bne _060126D0 - ldr r1, _060126DC ; =0x04808094 - ldrh r1, [r1] - tst r1, #0x8000 - movne r0, #8 - bne _060126D0 - add r1, r5, r8 - ldr r7, [r1, #0x58] - mov r1, #0 - strh r1, [r7] - strh r1, [r7, #4] - strh r0, [r7, #8] - ldrh r0, [sl, #0x10] - ldr r3, _060126E0 ; =MPKEY_ADRS - add r0, r0, #0x1e - strh r0, [r7, #0xa] - mov r0, #0x118 - strh r0, [r7, #0xc] - add r0, r7, #0x10 - add r1, r2, #0x3a8 - add r2, r4, #8 - bl WSetMacAdrs3 - ldrh r0, [sl, #0x12] - strh r0, [r7, #0x24] - ldrh r0, [sl, #0x10] - cmp r0, #0 - beq _06012644 - cmp sb, #0 - bne _06012634 - bl WUpdateCounter -_06012634: - ldr r1, [sl, #0x14] - ldrh r2, [sl, #0x10] - add r0, r7, #0x26 - bl DMA_Write -_06012644: - tst r6, #4 - beq _06012674 - ldrh r0, [sl, #0x10] - add r1, r7, #0x24 - add r0, r0, #2 - add r0, r1, r0 - add r0, r0, #3 - ldr r1, _060126E4 ; =0x0000B6B8 - bic r2, r0, #3 - ldr r0, _060126E8 ; =0x00001D46 - strh r1, [r2] - strh r0, [r2, #2] -_06012674: - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - mov r2, #2 - ldr r1, _060126EC ; =0x00003FFF - strh r2, [fp, r8] - add r5, r5, #0x52 - ldrh r2, [r5, r8] - and r1, r7, r1 - add r3, r2, #1 - mov r2, r1, lsr #1 - ldr r1, _060126DC ; =0x04808094 - strh r3, [r5, r8] - orr r2, r2, #0x8000 - strh r2, [r1] - ldrh r1, [r4, #0x1e] - mov r4, r0 - mov r0, r1, lsl #0x18 - movs r0, r0, lsr #0x1f - bne _060126C4 - bl WSetKSID -_060126C4: - mov r0, r4 - bl __VENEER_OS_EnableIrqMask - mov r0, #0 -_060126D0: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_060126D8: .word 0x0380FFF4 -_060126DC: .word 0x04808094 -_060126E0: .word MPKEY_ADRS -_060126E4: .word 0x0000B6B8 -_060126E8: .word 0x00001D46 -_060126EC: .word 0x00003FFF - arm_func_end MA_KeyDataReqCmd - - arm_func_start MA_MpReqCmd -MA_MpReqCmd: ; 0x060126F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r2, _06012B7C ; =0x0380FFF4 - mov sl, r0 - ldr r4, [r2] - mov sb, #1 - add r0, r4, #0x600 - ldrh r0, [r0, #0x90] - add r7, r4, #0x31c - strh sb, [r1, #2] - ldrh r1, [r7, #0x12] - str r0, [sp, #4] - add r0, r4, #0x2c - add r6, r0, #0x400 - cmp r1, #1 - movne r0, #0xb - bne _06012B70 - ldrh r0, [r6, #0x3c] - cmp r0, #0 - movne r0, #8 - bne _06012B70 - ldrh r0, [sl, #0x10] - ldr r5, [r6, #0x44] - tst r0, #0x8000 - beq _06012794 - tst r0, #2 - ldreqh r0, [r6, #0x94] - streqh r0, [sl, #0x14] - ldrh r0, [sl, #0x10] - tst r0, #4 - ldreqh r0, [r6, #0xa0] - streqh r0, [sl, #0x16] - ldrh r0, [sl, #0x10] - tst r0, #8 - ldreqh r0, [r6, #0x96] - streqh r0, [sl, #0x18] - ldrh r0, [sl, #0x10] - tst r0, #0x10 - ldreqh r0, [r6, #0x9c] - moveq sb, #0 - streqh r0, [sl, #0x1c] -_06012794: - ldrh r0, [sl, #0x1c] - cmp r0, #0x204 - movhi r0, #5 - bhi _06012B70 - mov r1, #2 - mov r8, #0 - b _060127C4 -_060127B0: - ldrh r0, [sl, #0x16] - tst r0, r1 - mov r0, r1, lsl #0x11 - addne r8, r8, #1 - mov r1, r0, lsr #0x10 -_060127C4: - cmp r1, #0 - bne _060127B0 - ldrh r0, [sl, #0x14] - strh r0, [r6, #0x94] - ldrh r0, [sl, #0x14] - tst r0, #0x8000 - beq _06012810 - ldr r1, _06012B80 ; =0x00007FFF - mov r2, #0xea - and r0, r0, r1 - strh r0, [sl, #0x14] - ldrh r0, [sl, #0x14] - sub r0, r0, #0xd0 - mov r0, r0, lsr #2 - strh r2, [r5, #0xe] - cmp r0, #0x10000 - bls _06012860 - mov r0, #5 - b _06012B70 -_06012810: - ldr r1, [sp, #4] - tst r1, #2 - movne fp, #1 - moveq fp, #0 - add r3, fp, #6 - movne r1, #2 - movne r2, #6 - add r0, r0, fp - add r3, r3, #0x200 - moveq r1, fp - moveq r2, fp - cmp r0, r3 - movhi r0, #5 - bhi _06012B70 - mov r3, r0, lsl #2 - add r3, r3, #0xd0 - add r1, r1, r3 - strh r1, [sl, #0x14] - add r1, r2, #0xea - strh r1, [r5, #0xe] -_06012860: - add r0, r0, #9 - bic fp, r0, #1 - mul r0, fp, r8 - str r0, [sp] - ldr r1, [sp] - add r0, r4, #0x188 - add r1, r1, #0x1a - bl AllocateHeapBuf - str r0, [r6, #0x90] - cmp r0, #0 - moveq r0, #8 - beq _06012B70 - mov r0, #1 - strh r0, [r6, #0x3c] - ldrh r0, [r6, #0x3e] - mov r2, #0 - add r0, r0, #1 - strh r0, [r6, #0x3e] - ldrh r0, [sl, #0x18] - add r3, r7, #8 - strh r0, [r6, #0x96] - ldrh r0, [sl, #0x16] - mov ip, #0x14 - strh r0, [r6, #0x98] - strh r2, [r6, #0x9a] - ldrh r0, [sl, #0x1c] - mov lr, #0x228 - strh r0, [r6, #0x9c] - ldrh r1, [sl, #0x12] - add r0, r5, #0x10 - strh r1, [r6, #0x9e] - strh r2, [r5] - ldrh r7, [sl, #0x16] - ldr r1, _06012B84 ; =MP_ADRS - strh r7, [r5, #2] - strh r2, [r5, #4] - strh ip, [r5, #8] - ldrh r7, [sl, #0x1c] - add r2, r4, #0x3a8 - add r7, r7, #0x22 - strh r7, [r5, #0xa] - strh lr, [r5, #0xc] - ldrh ip, [sl, #0x14] - ldrh r7, [r5, #0xe] - add ip, ip, #0xa - mla r7, ip, r8, r7 - strh r7, [r5, #0xe] - bl WSetMacAdrs3 - ldrh r0, [sl, #0x10] - tst r0, #0x8000 - ldrneh r1, [r5, #0x22] - ldrne r0, _06012B88 ; =0x0000FFFF - cmpne r1, r0 - ldreq r0, _06012B88 ; =0x0000FFFF - movne r7, #0x4000 - streqh r0, [r5, #0x22] - ldrh r0, [sl, #0x14] - moveq r7, #0 - strh r0, [r5, #0x24] - ldrh r0, [sl, #0x16] - cmp sb, #0 - strh r0, [r5, #0x26] - ldrh r0, [sl, #0x1e] - strh r0, [r5, #0x28] - ldrneh r0, [sl, #0x1c] - cmpne r0, #0 - beq _06012980 - bl WUpdateCounter - ldr r1, [sl, #0x20] - ldrh r2, [sl, #0x1c] - add r0, r5, #0x2a - bl DMA_Write -_06012980: - ldr r0, [sp, #4] - tst r0, #4 - beq _060129B4 - ldrh r0, [sl, #0x1c] - add r1, r5, #0x28 - add r0, r0, #2 - add r0, r1, r0 - add r0, r0, #3 - ldr r1, _06012B8C ; =0x0000B6B8 - bic r2, r0, #3 - ldr r0, _06012B90 ; =0x00001D46 - strh r1, [r2] - strh r0, [r2, #2] -_060129B4: - ldr r0, [r6, #0x90] - mov r1, #0x184 - strh r1, [r0, #0xc] - ldr r0, [sp] - ldr r1, [r6, #0x90] - add r0, r0, #0xb - mov r0, r0, lsr #1 - strh r0, [r1, #0xe] - ldrh r1, [sl, #0x16] - ldr r0, [r6, #0x90] - mov r3, #0 - strh r1, [r0, #0x10] - ldr r0, [r6, #0x90] - ldr sb, _06012B88 ; =0x0000FFFF - strh r8, [r0, #0x14] - ldr r0, [r6, #0x90] - mov r1, #1 - strh fp, [r0, #0x16] - ldr r0, [r6, #0x90] - mov r2, #2 - strh r3, [r0, #0x18] - ldr r0, [r6, #0x90] - add r0, r0, #0x1a - b _06012A3C -_06012A14: - ldrh ip, [sl, #0x16] - tst ip, r2 - strneh sb, [r0] - strneh r3, [r0, #2] - strneh r3, [r0, #6] - strneh r1, [r0, #4] - mov r2, r2, lsl #0x11 - addne r0, r0, fp - mov r2, r2, lsr #0x10 - add r1, r1, #1 -_06012A3C: - cmp r2, #0 - bne _06012A14 - ldrh r0, [sl, #0x14] - ldr r2, _06012B94 ; =0x048080C4 - strh r0, [r2] - ldrh r0, [r5, #0xe] - strh r0, [r2, #-4] - ldrh r1, [sl, #0x1a] - ldrh r0, [sl, #0x18] - rsb sb, r1, #0x10000 - cmp r0, #0 - bne _06012AD4 - ldrh r0, [r2, #-0xc4] - ldrh r1, [sl, #0x1c] - cmp r0, #0x1440 - ldrh r0, [sl, #0x14] - add r1, r1, #0x22 - mul r2, r0, r8 - mov r1, r1, lsl #2 - add r3, r1, #0x60 - addne r3, r3, #0x3e8 - add r0, r2, #0x388 - add r0, r3, r0 - mov r1, #0xa - add r0, r0, #0x32 - bl __VENEER__u32_div_f - mov r4, r0 - bl __VENEER_OS_DisableInterrupts - ldr r1, _06012B98 ; =0x00003FFF - ldr r2, _06012B9C ; =0x04808118 - and r1, r5, r1 - mov r1, r1, lsr #1 - orr r1, r1, #0x8000 - strh r4, [r2] - orr r1, r1, r7 - strh r1, [r2, #-0x88] - bl __VENEER_OS_RestoreInterrupts - b _06012B6C -_06012AD4: - bl __VENEER_OS_DisableInterrupts - ldr r1, _06012BA0 ; =0x048080F8 - mov r8, r0 - ldrh r0, [r1] - mov r1, #0xa - add r0, sb, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl __VENEER__u32_div_f - ldrh r3, [sl, #0x18] - add r1, r0, #3 - cmp r1, r3 - bhs _06012B3C - ldr r1, _06012B98 ; =0x00003FFF - ldr r2, _06012B9C ; =0x04808118 - sub r3, r3, r0 - and r0, r5, r1 - sub r1, r3, #1 - mov r0, r0, lsr #1 - orr r0, r0, #0x8000 - strh r1, [r2] - orr r1, r0, r7 - mov r0, r8 - strh r1, [r2, #-0x88] - bl __VENEER_OS_RestoreInterrupts - b _06012B6C -_06012B3C: - mov r0, r8 - bl __VENEER_OS_RestoreInterrupts - ldr r1, [r6, #0x90] - add r0, r4, #0x188 - bl ReleaseHeapBuf - mov r0, #0 - strh r0, [r6, #0x3c] - ldrh r1, [r6, #0x3e] - mov r0, #5 - sub r1, r1, #1 - strh r1, [r6, #0x3e] - b _06012B70 -_06012B6C: - mov r0, #0 -_06012B70: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06012B7C: .word 0x0380FFF4 -_06012B80: .word 0x00007FFF -_06012B84: .word MP_ADRS -_06012B88: .word 0x0000FFFF -_06012B8C: .word 0x0000B6B8 -_06012B90: .word 0x00001D46 -_06012B94: .word 0x048080C4 -_06012B98: .word 0x00003FFF -_06012B9C: .word 0x04808118 -_06012BA0: .word 0x048080F8 - arm_func_end MA_MpReqCmd - - arm_func_start MA_TestDataReqCmd -MA_TestDataReqCmd: ; 0x06012BA4 - stmdb sp!, {r4, lr} - mov r2, #1 - strh r2, [r1, #2] - mov r4, r0 - rsb r0, r2, #0x10000 - strh r0, [r4, #0xc] - mov r0, #0 - strh r0, [r4, #0x12] - ldrh r1, [r4, #0x16] - add r0, r4, #0x10 - strh r1, [r4, #0x22] - bl CAM_IncFrameCount - ldr r0, _06012C00 ; =0x0380FFF4 - mov r2, r4 - ldr r1, [r0] - add r0, r1, #0x200 - add r1, r1, #0x194 - bl MoveHeapBuf - mov r0, #0 - bl TxqPri - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06012C00: .word 0x0380FFF4 - arm_func_end MA_TestDataReqCmd - - arm_func_start MA_ClrDataReqCmd -MA_ClrDataReqCmd: ; 0x06012C04 - stmdb sp!, {r4, lr} - mov r2, #1 - strh r2, [r1, #2] - mov r4, r0 - ldrh r0, [r4, #0x10] - tst r0, #1 - beq _06012C24 - bl ClearTxKeyData -_06012C24: - ldrh r0, [r4, #0x10] - tst r0, #2 - beq _06012C34 - bl ClearTxMp -_06012C34: - ldrh r0, [r4, #0x10] - tst r0, #4 - beq _06012C44 - bl ClearTxData -_06012C44: - mov r0, #0 - ldmia sp!, {r4, lr} - bx lr - arm_func_end MA_ClrDataReqCmd - - arm_func_start IssueMaDataConfirm -IssueMaDataConfirm: ; 0x06012C50 - stmdb sp!, {r3, lr} - ldrh r2, [r1, #0xe] - mov r3, #2 - add lr, r1, r2, lsl #1 - ldrh ip, [lr, #0x10] - mov r2, #0 - strh ip, [r1, #0xc] - strh r3, [lr, #0x12] - strh r2, [lr, #0x14] - ldrh r2, [r1, #0x18] - strh r2, [lr, #0x16] - bl SendMessageToWmDirect - ldmia sp!, {r3, lr} - bx lr - arm_func_end IssueMaDataConfirm - - arm_func_start TxqPri -TxqPri: ; 0x06012C88 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r1, _06012E9C ; =0x0380FFF4 - mov sl, r0 - ldr r2, [r1] - mov r0, #0xc - add r1, r2, #0x194 - mla fp, sl, r0, r1 - add r0, r2, #0x2c - ldrh r1, [fp, #8] - add r5, r0, #0x400 - mov r0, #0x14 - mla r6, sl, r0, r5 - cmp r1, #0 - add r4, r2, #0x344 - beq _06012E90 - mov r0, #0x1000000 - bl __VENEER_OS_DisableIrqMask - ldrh r1, [r6] - str r0, [sp] - cmp r1, #0 - beq _06012CE8 - bl __VENEER_OS_EnableIrqMask - b _06012E90 -_06012CE8: - ldr r7, [fp] - mvn r0, #0 - str r0, [sp, #8] -_06012CF4: - ldr r0, [sp, #8] - cmp r7, r0 - bne _06012D0C - ldr r0, [sp] - bl __VENEER_OS_EnableIrqMask - b _06012E90 -_06012D0C: - mov r0, r7 - str r7, [sp, #4] - bl GetHeapBufNextAdrs - mov r1, r7 - add r8, r1, #0x10 - mov r7, r0 - ldrh sb, [r8, #2] - mov r0, r8 - bl CheckFrameTimeout - cmp r0, #0 - beq _06012D70 - ldrh r1, [r5, #0xae] - mov r0, r8 - add r1, r1, #1 - strh r1, [r5, #0xae] - mov r1, #2 - strh r1, [r8, #8] - ldrh r2, [r6, #4] - mov r1, #0 - add r2, r2, #1 - strh r2, [r6, #4] - ldr r2, [r6, #0x10] - mov lr, pc - bx r2 - b _06012CF4 -_06012D70: - cmp sl, #0 - beq _06012D90 - cmp sl, #1 - bne _06012DD0 - mov r0, sb - bl CAM_GetStaState - cmp r0, #0x40 - bne _06012DD0 -_06012D90: - mov r0, sb - bl CAM_IsActive - cmp r0, #0 - beq _06012CF4 - mov r0, sb - bl CAM_GetStaState - cmp r0, #0x40 - beq _06012DD0 - mov r2, #2 - mov r0, fp - sub r1, r8, #0x10 - strh r2, [r8, #8] - bl IssueMaDataConfirm - mov r0, r8 - bl CAM_DecFrameCount - b _06012CF4 -_06012DD0: - mov r0, #1 - strh r0, [r6] - ldrh r0, [r6, #2] - add r0, r0, #1 - strh r0, [r6, #2] - str r8, [r6, #0xc] - ldrh r0, [r4, #0x10] - ldr r5, [r6, #8] - cmp r0, #0 - bne _06012E00 - mov r0, #2 - bl WSetPowerState -_06012E00: - ldr r1, [sp, #4] - mov r0, r5 - bl CopyTxFrmToMacBuf - ldrh r0, [r4, #0xc] - cmp r0, #1 - bne _06012E30 - mov r0, sb - bl CAM_GetFrameCount - cmp r0, #1 - ldrhih r0, [r5, #0xc] - orrhi r0, r0, #0x2000 - strhih r0, [r5, #0xc] -_06012E30: - ldr r1, _06012EA0 ; =0x00003FFF - ldr r0, _06012EA4 ; =0x048080A0 - ldrh r4, [r8, #0x14] - and r2, r5, r1 - and r1, r4, #0xc - cmp r1, #4 - mov r1, r2, lsr #1 - add r3, r0, sl, lsl #2 - moveq r0, r1, lsl #0x10 - moveq r0, r0, lsr #0x10 - orreq r0, r0, #0xa000 - streqh r0, [r3] - beq _06012E88 - and r0, r4, #0xfc - cmp r0, #0x50 - mov r0, r1, lsl #0x10 - moveq r0, r0, lsr #0x10 - orreq r0, r0, #0x9000 - streqh r0, [r3] - movne r0, r0, lsr #0x10 - orrne r0, r0, #0x8000 - strneh r0, [r3] -_06012E88: - ldr r0, [sp] - bl __VENEER_OS_EnableIrqMask -_06012E90: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06012E9C: .word 0x0380FFF4 -_06012EA0: .word 0x00003FFF -_06012EA4: .word 0x048080A0 - arm_func_end TxqPri - - arm_func_start CopyTxFrmToMacBuf -CopyTxFrmToMacBuf: ; 0x06012EA8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrh r1, [r4, #0x24] - mov r5, r0 - tst r1, #0x4000 - beq _06012F84 - ldr r0, _06012FFC ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #3 - bne _06012EDC - bl WUpdateCounter -_06012EDC: - ldrh r1, [r4, #0xc] - ldr r0, _06013000 ; =0x0000FFFF - cmp r1, r0 - bne _06012F04 - ldrh r3, [r4, #0x16] - mov r0, r5 - add r1, r4, #0x18 - add r2, r4, #0x3c - bl DMA_WepWriteHeaderData - b _06012F18 -_06012F04: - ldr r2, [r4, #0x3c] - ldrh r3, [r4, #0x16] - mov r0, r5 - add r1, r4, #0x18 - bl DMA_WepWriteHeaderData -_06012F18: - ldr r3, _06013004 ; =0x04808044 - ldr r1, _06012FFC ; =0x0380FFF4 - ldrh r2, [r3] - ldrh r0, [r3] - add r0, r2, r0, lsl #8 - strh r0, [r5, #0x24] - ldr r0, [r1] - ldrh r2, [r3] - add r0, r0, #0x300 - ldrh r0, [r0, #0x36] - and r2, r2, #0xff - orr r0, r2, r0, lsl #14 - strh r0, [r5, #0x26] - ldr r0, [r1] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #8 - beq _06012FB8 - ldrh r0, [r4, #0x22] - add r1, r5, #0xc - add r0, r1, r0 - sub r0, r0, #7 - bic r1, r0, #1 - mov r0, #0 - strh r0, [r1] - strh r0, [r1, #2] - b _06012FB8 -_06012F84: - ldrh r2, [r4, #0xc] - ldr r1, _06013000 ; =0x0000FFFF - cmp r2, r1 - bne _06012FA8 - ldrh r2, [r4, #0x16] - add r1, r4, #0x18 - add r2, r2, #0x24 - bl DMA_Write - b _06012FB8 -_06012FA8: - ldr r2, [r4, #0x3c] - ldrh r3, [r4, #0x16] - add r1, r4, #0x18 - bl DMA_WriteHeaderData -_06012FB8: - ldr r0, _06012FFC ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #4 - beq _06012FF4 - ldrh r0, [r4, #0x22] - add r1, r5, #0xc - add r0, r1, r0 - sub r0, r0, #1 - ldr r1, _06013008 ; =0x0000B6B8 - bic r2, r0, #3 - ldr r0, _0601300C ; =0x00001D46 - strh r1, [r2] - strh r0, [r2, #2] -_06012FF4: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06012FFC: .word 0x0380FFF4 -_06013000: .word 0x0000FFFF -_06013004: .word 0x04808044 -_06013008: .word 0x0000B6B8 -_0601300C: .word 0x00001D46 - arm_func_end CopyTxFrmToMacBuf - - arm_func_start CheckFrameTimeout -CheckFrameTimeout: ; 0x06013010 - ldr r1, _0601308C ; =0x0380FFF4 - ldrh r2, [r0, #0x14] - ldr r3, [r1] - mov r1, r2, lsl #0x1c - add ip, r3, #0x344 - ldrh r3, [ip, #0x8c] - movs r1, r1, lsr #0x1e - mov r1, r3, lsl #0x13 - mov r3, r1, lsr #0x10 - bne _06013064 - ldrh r1, [ip, #0xc] - cmp r1, #1 - bne _0601306C - mov r1, r2, lsl #0x18 - mov r1, r1, lsr #0x1c - cmp r1, #1 - cmpne r1, #3 - cmpne r1, #0xb - moveq r1, r3, lsl #0xd - moveq r3, r1, lsr #0x10 - b _0601306C -_06013064: - mov r1, r3, lsl #0xd - mov r3, r1, lsr #0x10 -_0601306C: - ldr r1, [ip, #0xa8] - ldrh r0, [r0, #4] - sub r0, r1, r0 - mov r0, r0, lsl #0x10 - cmp r3, r0, lsr #16 - movlo r0, #1 - movhs r0, #0 - bx lr - .align 2, 0 -_0601308C: .word 0x0380FFF4 - arm_func_end CheckFrameTimeout - - arm_func_start TxqEndData -TxqEndData: ; 0x06013090 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _06013208 ; =0x0380FFF4 - mov sb, r0 - ldr r4, [r2] - mov r8, r1 - add r5, r4, #0x194 - add r6, r4, #0x344 - sub r7, sb, #0x10 - bl CAM_DecFrameCount - ldrh r0, [sb, #8] - tst r0, #2 - bne _06013124 - ldr r0, [r4, #0x53c] - add r0, r0, #1 - str r0, [r4, #0x53c] - ldrh r0, [sb, #0x14] - mov r0, r0, lsl #0x17 - movs r0, r0, lsr #0x1f - beq _06013100 - ldrh r0, [sb, #0x24] - tst r0, #1 - ldrne r0, [r4, #0x550] - addne r0, r0, #1 - strne r0, [r4, #0x550] - ldreq r0, [r4, #0x54c] - addeq r0, r0, #1 - streq r0, [r4, #0x54c] - b _06013130 -_06013100: - ldrh r0, [sb, #0x18] - tst r0, #1 - ldrne r0, [r4, #0x550] - addne r0, r0, #1 - strne r0, [r4, #0x550] - ldreq r0, [r4, #0x54c] - addeq r0, r0, #1 - streq r0, [r4, #0x54c] - b _06013130 -_06013124: - ldr r0, [r4, #0x540] - add r0, r0, #1 - str r0, [r4, #0x540] -_06013130: - ldrh r0, [sb, #0x14] - mov r1, r7 - mov r0, r0, lsl #0x11 - movs r0, r0, lsr #0x1f - ldrne r0, [r4, #0x554] - addne r0, r0, #1 - strne r0, [r4, #0x554] - mov r0, r5 - bl IssueMaDataConfirm - ldr r0, _06013208 ; =0x0380FFF4 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x400 - strh r1, [r0, #0x2c] - ldrh r0, [sb, #2] - bl CAM_GetPowerMgtMode - cmp r0, #0 - beq _0601318C - ldrh r0, [sb, #0x14] - tst r0, #0x2000 - bne _0601318C - ldrh r0, [sb, #2] - bl CAM_SetDoze -_0601318C: - cmp r8, #0 - beq _06013200 - ldrh r0, [r5, #8] - cmp r0, #0 - beq _060131AC - mov r0, #0 - bl TxqPri - b _06013200 -_060131AC: - ldrh r0, [r6, #0xc] - add r0, r0, #0xfe - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _06013200 - ldrh r0, [r6, #8] - cmp r0, #0x40 - bne _06013200 - ldrh r0, [r6, #0xe] - cmp r0, #0 - beq _06013200 - ldrh r0, [r6, #0x88] - bl CAM_GetFrameCount - cmp r0, #0 - ldreqh r0, [r6, #0x8e] - cmpeq r0, #0 - bne _06013200 - mov r0, #1 - bl WSetPowerState -_06013200: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_06013208: .word 0x0380FFF4 - arm_func_end TxqEndData - - arm_func_start TxqEndManCtrl -TxqEndManCtrl: ; 0x0601320C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r2, _060136D4 ; =0x0380FFF4 - mov sl, r0 - ldr r4, [r2] - ldrh r2, [sl, #8] - add r0, r4, #4 - ldrh r7, [sl, #2] - mov sb, r1 - tst r2, #2 - add r8, r4, #0x344 - add r5, r0, #0x400 - add r6, r4, #0x1a0 - bne _06013294 - ldr r0, [r4, #0x53c] - add r0, r0, #1 - str r0, [r4, #0x53c] - ldrh r0, [sl, #0x18] - tst r0, #1 - ldrne r0, [r4, #0x550] - addne r0, r0, #1 - strne r0, [r4, #0x550] - ldreq r0, [r4, #0x54c] - addeq r0, r0, #1 - streq r0, [r4, #0x54c] - mov r0, r7 - bl CAM_GetPowerMgtMode - cmp r0, #0 - beq _060132A0 - ldrh r0, [sl, #0x14] - tst r0, #0x2000 - bne _060132A0 - mov r0, r7 - bl CAM_SetDoze - b _060132A0 -_06013294: - ldr r0, [r4, #0x540] - add r0, r0, #1 - str r0, [r4, #0x540] -_060132A0: - ldrh r0, [sl, #0x14] - mov r0, r0, lsl #0x11 - movs r0, r0, lsr #0x1f - ldrne r0, [r4, #0x554] - addne r0, r0, #1 - strne r0, [r4, #0x554] - ldrh r0, [sl, #0xc] - ldr r1, [r4, #0x544] - and r0, r0, #0xff - add r0, r1, r0 - str r0, [r4, #0x544] - ldrh r0, [sl, #0x14] - and r4, r0, #0xfc - cmp r4, #0xa0 - bhi _060132FC - bhs _06013464 - cmp r4, #0x10 - bhi _060132F0 - beq _060133A0 - b _0601368C -_060132F0: - cmp r4, #0x30 - beq _060133A0 - b _0601368C -_060132FC: - cmp r4, #0xb0 - bhi _0601330C - beq _06013318 - b _0601368C -_0601330C: - cmp r4, #0xc0 - beq _06013548 - b _0601368C -_06013318: - cmp r7, #0 - beq _0601368C - ldrh r0, [sl, #8] - tst r0, #2 - bne _0601368C - ldrh r1, [sl, #0x2c] - cmp r1, #0 - ldreqh r0, [sl, #0x2e] - cmpeq r0, #2 - ldreqh r0, [sl, #0x30] - cmpeq r0, #0 - bne _06013368 - mov r0, r7, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x30 - bl CAM_SetStaState - ldrh r1, [sl, #0x2c] - add r0, sl, #0x18 - bl MLME_IssueAuthIndication - b _0601368C -_06013368: - cmp r1, #1 - ldreqh r0, [sl, #0x2e] - cmpeq r0, #4 - ldreqh r0, [sl, #0x30] - cmpeq r0, #0 - bne _0601368C - mov r0, r7, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x30 - bl CAM_SetStaState - ldrh r1, [sl, #0x2c] - add r0, sl, #0x18 - bl MLME_IssueAuthIndication - b _0601368C -_060133A0: - cmp r7, #0 - beq _0601368C - ldrh r0, [sl, #8] - tst r0, #2 - bne _06013418 - ldrh r0, [sl, #0x2e] - cmp r0, #0 - bne _0601368C - mov r0, r7 - bl CAM_GetStaState - cmp r0, #0x30 - bne _0601368C - mov r0, r7, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x40 - bl CAM_SetStaState - ldrh r2, [sl, #0x12] - cmp r4, #0x10 - add r3, sl, #0x14 - bne _06013404 - ldrh r1, [sl, #0x30] - add r0, sl, #0x18 - add r2, r3, r2 - bl MLME_IssueAssIndication - b _0601368C -_06013404: - ldrh r1, [sl, #0x30] - add r0, sl, #0x18 - add r2, r3, r2 - bl MLME_IssueReAssIndication - b _0601368C -_06013418: - mov r0, r7, lsl #0x10 - mov r0, r0, lsr #0x10 - bl CAM_ReleaseAID - add r0, sl, #0x18 - mov r1, #1 - mov r2, #0 - bl MakeDeAuthFrame - cmp r0, #0 - beq _0601368C - mov r1, #2 - strh r1, [r0] - cmp sb, #0 - beq _0601345C - bl SetManCtrlFrame - mov r0, #1 - bl TxqPri - b _0601368C -_0601345C: - bl SetManCtrlFrame - b _0601368C -_06013464: - ldrh r0, [r8, #0xc] - cmp r0, #1 - bne _060134F4 - cmp r7, #0 - beq _0601349C - mov r0, r7 - bl CAM_GetStaState - cmp r0, #0x30 - bls _0601350C - mov r0, r7, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x30 - bl CAM_SetStaState - b _0601350C -_0601349C: - ldrh r0, [sl, #0x18] - tst r0, #1 - beq _0601350C - ldr r4, _060136D4 ; =0x0380FFF4 - mov r8, #1 - mov r7, #0x30 - b _060134DC -_060134B8: - mov r0, r8 - bl CAM_GetStaState - cmp r0, #0x30 - bls _060134D8 - mov r0, r8, lsl #0x10 - mov r1, r7 - mov r0, r0, lsr #0x10 - bl CAM_SetStaState -_060134D8: - add r8, r8, #1 -_060134DC: - ldr r0, [r4] - add r0, r0, #0x300 - ldrh r0, [r0, #0x22] - cmp r8, r0 - blo _060134B8 - b _0601350C -_060134F4: - ldrh r0, [r8, #8] - cmp r0, #0x30 - bls _0601350C - mov r0, #0x30 - bl WSetStaState - bl WClearAids -_0601350C: - ldrh r0, [r5] - cmp r0, #0x71 - ldreq r0, [r5, #4] - cmpeq sl, r0 - bne _0601368C - ldrh r0, [sl, #8] - tst r0, #2 - ldr r0, [r5, #0x1c] - moveq r1, #0 - movne r1, #0xc - strh r1, [r0, #4] - mov r0, #0 - strh r0, [r5] - bl IssueMlmeConfirm - b _0601368C -_06013548: - ldrh r0, [r8, #0xc] - cmp r0, #1 - bne _060135D8 - cmp r7, #0 - beq _06013580 - mov r0, r7 - bl CAM_GetStaState - cmp r0, #0x20 - bls _060135F0 - mov r0, r7, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x20 - bl CAM_SetStaState - b _060135F0 -_06013580: - ldrh r0, [sl, #0x18] - tst r0, #1 - beq _060135F0 - ldr r4, _060136D4 ; =0x0380FFF4 - mov r8, #1 - mov fp, #0x20 - b _060135C0 -_0601359C: - mov r0, r8 - bl CAM_GetStaState - cmp r0, #0x20 - bls _060135BC - mov r0, r8, lsl #0x10 - mov r1, fp - mov r0, r0, lsr #0x10 - bl CAM_SetStaState -_060135BC: - add r8, r8, #1 -_060135C0: - ldr r0, [r4] - add r0, r0, #0x300 - ldrh r0, [r0, #0x22] - cmp r8, r0 - blo _0601359C - b _060135F0 -_060135D8: - ldrh r0, [r8, #8] - cmp r0, #0x20 - bls _060135F0 - mov r0, #0x20 - bl WSetStaState - bl WClearAids -_060135F0: - ldrh r0, [r5] - cmp r0, #0x41 - ldreq r0, [r5, #4] - cmpeq sl, r0 - bne _06013628 - ldrh r0, [sl, #8] - tst r0, #2 - ldr r0, [r5, #0x1c] - moveq r1, #0 - movne r1, #0xc - strh r1, [r0, #4] - mov r0, #0 - strh r0, [r5] - bl IssueMlmeConfirm -_06013628: - ldrh r0, [sl] - cmp r0, #1 - bne _06013678 - cmp r7, #0 - beq _06013668 - ldr r0, _060136D4 ; =0x0380FFF4 - mov r2, #1 - ldr r1, [r0] - mov r0, r7, lsl #0x10 - add r1, r1, #0x500 - ldrh r3, [r1, #0x34] - mvn r2, r2, lsl r7 - and r2, r3, r2 - mov r0, r0, lsr #0x10 - strh r2, [r1, #0x34] - bl CAM_Delete -_06013668: - add r0, sl, #0x18 - mov r1, #1 - bl MLME_IssueDeAuthIndication - b _0601368C -_06013678: - cmp r0, #2 - bne _0601368C - ldrh r1, [sl, #0x2c] - add r0, sl, #0x18 - bl MLME_IssueDeAuthIndication -_0601368C: - mov r0, sl - bl CAM_DecFrameCount - mov r0, r6 - sub r1, sl, #0x10 - bl ReleaseHeapBuf - ldr r0, _060136D4 ; =0x0380FFF4 - mov r1, #0 - ldr r0, [r0] - cmp sb, #0 - add r0, r0, #0x400 - strh r1, [r0, #0x40] - ldrneh r0, [r6, #8] - cmpne r0, #0 - beq _060136CC - mov r0, #1 - bl TxqPri -_060136CC: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_060136D4: .word 0x0380FFF4 - arm_func_end TxqEndManCtrl - - arm_func_start TxqEndPsPoll -TxqEndPsPoll: ; 0x060136D8 - ldr r2, _0601373C ; =0x0380FFF4 - ldrh r1, [r0, #4] - ldr r3, [r2] - and r1, r1, #0xff - ldr r2, [r3, #0x544] - add r1, r2, r1 - str r1, [r3, #0x544] - ldrh r0, [r0] - tst r0, #2 - ldrne r0, [r3, #0x540] - addne r0, r0, #1 - strne r0, [r3, #0x540] - bne _06013724 - ldr r0, [r3, #0x53c] - add r0, r0, #1 - str r0, [r3, #0x53c] - ldr r0, [r3, #0x54c] - add r0, r0, #1 - str r0, [r3, #0x54c] -_06013724: - ldr r0, _0601373C ; =0x0380FFF4 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x400 - strh r1, [r0, #0x54] - bx lr - .align 2, 0 -_0601373C: .word 0x0380FFF4 - arm_func_end TxqEndPsPoll - - arm_func_start TxqEndBroadCast -TxqEndBroadCast: ; 0x06013740 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _06013844 ; =0x0380FFF4 - mov r6, r0 - ldr r2, [r2] - mov r5, r1 - ldr r1, [r2, #0x550] - add r4, r2, #0x17c - add r1, r1, #1 - str r1, [r2, #0x550] - ldrh r1, [r6, #0x14] - mov r1, r1, lsl #0x1c - movs r1, r1, lsr #0x1e - bne _06013798 - bl CAM_IncFrameCount - add r0, r4, #0x30 - add r1, r4, #0x24 - sub r2, r6, #0x10 - bl MoveHeapBuf - mov r0, r6 - mov r1, #0 - bl TxqEndManCtrl - b _060137A4 -_06013798: - add r0, r4, #0x30 - sub r1, r6, #0x10 - bl IssueMaDataConfirm -_060137A4: - ldr r1, _06013844 ; =0x0380FFF4 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x400 - strh r2, [r0, #0x54] - ldr r0, [r1] - ldr r0, [r0, #0x45c] - ldrh r0, [r0, #0xc] - mov r0, r0, lsl #0x12 - movs r0, r0, lsr #0x1f - bne _06013814 - ldr r1, _06013848 ; =0x048080AC - mov r0, #8 - strh r0, [r1] - mov r0, #5 - strh r0, [r1, #2] - cmp r5, #0 - beq _06013814 - ldrh r0, [r4, #0x2c] - cmp r0, #0 - beq _06013800 - mov r0, #1 - bl TxqPri -_06013800: - ldrh r0, [r4, #0x20] - cmp r0, #0 - beq _06013814 - mov r0, #0 - bl TxqPri -_06013814: - ldrh r0, [r4, #0x38] - cmp r0, #0 - beq _06013834 - cmp r5, #0 - beq _0601383C - mov r0, #2 - bl TxqPri - b _0601383C -_06013834: - mov r0, #0 - bl CAM_ClrTIMElementBitmap -_0601383C: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06013844: .word 0x0380FFF4 -_06013848: .word 0x048080AC - arm_func_end TxqEndBroadCast - - arm_func_start TxEndKeyData -TxEndKeyData: ; 0x0601384C - ldr r2, [r0, #8] - ldr r1, _06013890 ; =0x0380FFF4 - ldrh r3, [r2, #4] - ldr r2, [r1] - ands r3, r3, #0xff - ldreq r1, [r2, #0x5a8] - addeq r1, r1, #1 - streq r1, [r2, #0x5a8] - ldrne r1, [r2, #0x5a4] - addne r1, r1, r3 - strne r1, [r2, #0x5a4] - ldrh r2, [r0, #4] - mov r1, #0 - add r2, r2, #1 - strh r2, [r0, #4] - strh r1, [r0] - bx lr - .align 2, 0 -_06013890: .word 0x0380FFF4 - arm_func_end TxEndKeyData - - arm_func_start ClearTxKeyData -ClearTxKeyData: ; 0x06013894 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _06013900 ; =0x0380FFF4 - mov r0, #0x1000000 - ldr r1, [r1] - add r1, r1, #0x2c - add r4, r1, #0x400 - bl __VENEER_OS_DisableIrqMask - ldr r1, _06013900 ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r1] - add r0, r0, #0x300 - ldrh r0, [r0, #0x3a] - mov r0, r0, lsl #0x18 - movs r0, r0, lsr #0x1f - bne _060138D8 - mov r0, #0 - bl WClearKSID -_060138D8: - ldr r0, _06013904 ; =0x048080B4 - mov r1, #0xc0 - strh r1, [r0] - mov r1, #0 - strh r1, [r4, #0x50] - mov r0, r5 - strh r1, [r4, #0x64] - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06013900: .word 0x0380FFF4 -_06013904: .word 0x048080B4 - arm_func_end ClearTxKeyData - - arm_func_start ClearTxMp -ClearTxMp: ; 0x06013908 - stmdb sp!, {r4, lr} - ldr r1, _06013954 ; =0x0380FFF4 - mov r0, #0x1000000 - ldr r1, [r1] - add r1, r1, #0x2c - add r4, r1, #0x400 - bl __VENEER_OS_DisableIrqMask - ldr r1, _06013958 ; =0x048080B4 - mov r2, #2 - strh r2, [r1] - ldrh r1, [r4, #0x3c] - mov r4, r0 - cmp r1, #0 - beq _06013944 - bl WlIntrMpEndTask -_06013944: - mov r0, r4 - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06013954: .word 0x0380FFF4 -_06013958: .word 0x048080B4 - arm_func_end ClearTxMp - - arm_func_start ClearTxData -ClearTxData: ; 0x0601395C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _060139FC ; =0x0380FFF4 - mov r0, #0x1000000 - ldr r1, [r1] - add r1, r1, #0x2c - add r4, r1, #0x400 - bl __VENEER_OS_DisableIrqMask - ldr r1, _060139FC ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r1] - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #1 - ldr r0, _06013A00 ; =0x048080B4 - bne _060139C4 - mov r1, #9 - strh r1, [r0] - ldrh r0, [r4, #0x28] - cmp r0, #0 - beq _060139B4 - mov r0, #2 - bl ClearQueuedPri -_060139B4: - mov r0, #2 - mov r1, #1 - bl MessageDeleteTx - b _060139CC -_060139C4: - mov r1, #1 - strh r1, [r0] -_060139CC: - ldrh r0, [r4] - cmp r0, #0 - beq _060139E0 - mov r0, #0 - bl ClearQueuedPri -_060139E0: - mov r0, #0 - mov r1, #1 - bl MessageDeleteTx - mov r0, r5 - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060139FC: .word 0x0380FFF4 -_06013A00: .word 0x048080B4 - arm_func_end ClearTxData - - arm_func_start ClearQueuedPri -ClearQueuedPri: ; 0x06013A04 - stmdb sp!, {r3, lr} - ldr r2, _06013A64 ; =0x0380FFF4 - mov r1, #0x14 - ldr r2, [r2] - mul r1, r0, r1 - add r0, r2, #0x2c - add r2, r0, #0x400 - ldrh r0, [r2, r1] - add r2, r2, r1 - cmp r0, #0 - beq _06013A5C - ldr r0, [r2, #8] - ldrh r1, [r0] - ldr r0, [r2, #0xc] - cmp r1, #0 - moveq r1, #2 - strh r1, [r0, #8] - ldr r0, [r2, #0xc] - ldr r2, [r2, #0x10] - mov r1, #0 - mov lr, pc - bx r2 -_06013A5C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06013A64: .word 0x0380FFF4 - arm_func_end ClearQueuedPri - - arm_func_start ResetTxqPri -ResetTxqPri: ; 0x06013A68 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _06013AE8 ; =0x0380FFF4 - mov r7, r0 - mov r0, #0x14 - ldr r1, [r1] - mul r4, r7, r0 - add r0, r1, #0x2c - add r5, r0, #0x400 - mov r0, #0x1000000 - add r6, r5, r4 - bl __VENEER_OS_DisableIrqMask - ldr r1, _06013AEC ; =Pri2QBit - mov r2, r7, lsl #1 - ldrh r2, [r1, r2] - ldr r1, _06013AF0 ; =0x048080B4 - strh r2, [r1] - ldrh r1, [r5, r4] - cmp r1, #0 - beq _06013ADC - ldr r2, [r6, #0xc] - ldrh r1, [r2, #0x14] - tst r1, #0x4000 - ldreq r1, [r6, #8] - ldreqh r1, [r1, #4] - streqh r1, [r2, #0xc] - ldr r2, [r6, #8] - ldr r1, [r6, #0xc] - ldrh r2, [r2, #0x22] - strh r2, [r1, #0x2a] -_06013ADC: - bl __VENEER_OS_EnableIrqMask - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06013AE8: .word 0x0380FFF4 -_06013AEC: .word Pri2QBit -_06013AF0: .word 0x048080B4 - arm_func_end ResetTxqPri - - arm_func_start DeleteTxFrames -DeleteTxFrames: ; 0x06013AF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 - mov r7, #0 - bl CAM_GetFrameCount - cmp r0, #0 - beq _06013BE0 - mov r8, r7 -_06013B10: - ldr r0, _06013BE8 ; =0x0380FFF4 - mov r1, #0xc - ldr r2, [r0] - mul sl, r8, r1 - sub r0, r1, #0xd - add r1, r2, sl - ldr r5, [r1, #0x194] - cmp r5, r0 - beq _06013BD4 - mov r0, #0x14 - mul sb, r8, r0 - mvn r4, #0 -_06013B40: - mov r0, r5 - bl GetHeapBufNextAdrs - add r6, r5, #0x10 - ldrh r1, [r6, #2] - str r0, [sp] - cmp r1, fp - bne _06013BC4 - cmp r8, #1 - ldrne r0, _06013BE8 ; =0x0380FFF4 - ldrne r0, [r0] - addne r0, sb, r0 - ldrne r0, [r0, #0x438] - cmpne r6, r0 - bne _06013B94 - mov r0, r6 - bl CAM_DecFrameCount - mov r1, #0 - mov r0, r6 - strh r1, [r6, #2] - bl CAM_IncFrameCount - b _06013BC4 -_06013B94: - mov r0, #2 - strh r0, [r6, #8] - mov r0, r6 - bl CAM_DecFrameCount - ldr r0, _06013BE8 ; =0x0380FFF4 - mov r1, r5 - ldr r0, [r0] - add r0, r0, #0x194 - add r0, r0, sl - bl IssueMaDataConfirm - cmp r7, #0 - moveq r7, #1 -_06013BC4: - ldr r5, [sp] - mov r0, r5 - cmp r0, r4 - bne _06013B40 -_06013BD4: - add r8, r8, #1 - cmp r8, #3 - blo _06013B10 -_06013BE0: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06013BE8: .word 0x0380FFF4 - arm_func_end DeleteTxFrames - - arm_func_start DeleteTxFrameByAdrs -DeleteTxFrameByAdrs: ; 0x06013BEC - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _06013C98 ; =0x0380FFF4 - ldrh r1, [r0] - ldr r2, [r4] - tst r1, #1 - beq _06013C40 - add r0, r2, #0x300 - ldrh r0, [r0, #0x22] - mov r5, #1 - cmp r0, #1 - bls _06013C90 - b _06013C28 -_06013C1C: - mov r0, r5 - bl DeleteTxFrames - add r5, r5, #1 -_06013C28: - ldr r0, [r4] - add r0, r0, #0x300 - ldrh r0, [r0, #0x22] - cmp r5, r0 - blo _06013C1C - b _06013C90 -_06013C40: - bl CAM_Search - mov r4, r0 - cmp r4, #0xff - beq _06013C54 - bl DeleteTxFrames -_06013C54: - ldr r0, _06013C98 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x2e] - cmp r0, #1 - bne _06013C90 - mov r0, r4 - bl CAM_GetStaState - cmp r0, #0x40 - bne _06013C90 - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x20 - bl CAM_SetStaState - bl ClearTxKeyData -_06013C90: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06013C98: .word 0x0380FFF4 - arm_func_end DeleteTxFrameByAdrs - - arm_func_start DeleteAllTxFrames -DeleteAllTxFrames: ; 0x06013C9C - stmdb sp!, {r4, lr} - ldr r0, _06013D80 ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x300 - ldrh r1, [r0, #0x50] - add r0, r2, #0x2c - cmp r1, #1 - add r4, r0, #0x400 - beq _06013CD0 - cmp r1, #2 - cmpne r1, #3 - beq _06013D2C - b _06013D54 -_06013CD0: - mov r0, #0 - mov r1, #1 - bl MessageDeleteTx - mov r0, #1 - mov r1, #0 - bl MessageDeleteTx - mov r0, #2 - mov r1, #1 - bl MessageDeleteTx - ldrh r0, [r4, #0x3c] - cmp r0, #0 - beq _06013D78 - mov r0, #0 - strh r0, [r4, #0x3c] - ldrh r1, [r4, #0x3e] - ldr r0, _06013D80 ; =0x0380FFF4 - sub r1, r1, #1 - strh r1, [r4, #0x3e] - ldr r0, [r0] - ldr r1, [r4, #0x90] - add r0, r0, #0x188 - bl ReleaseHeapBuf - b _06013D78 -_06013D2C: - mov r0, #0 - mov r1, #1 - bl MessageDeleteTx - mov r0, #1 - mov r1, #0 - bl MessageDeleteTx - mov r0, #2 - mov r1, #0 - bl MessageDeleteTx - b _06013D78 -_06013D54: - mov r0, #0 - mov r1, r0 - bl MessageDeleteTx - mov r0, #1 - mov r1, #0 - bl MessageDeleteTx - mov r0, #2 - mov r1, #0 - bl MessageDeleteTx -_06013D78: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06013D80: .word 0x0380FFF4 - arm_func_end DeleteAllTxFrames - - arm_func_start MessageDeleteTx -MessageDeleteTx: ; 0x06013D84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r5, _06013E0C ; =0x0380FFF4 - mov r2, #0xc - mov sl, r0 - mul r8, sl, r2 - ldr r3, [r5] - sub r0, r2, #0xd - add r2, r3, r8 - ldr r6, [r2, #0x194] - mov sb, r1 - cmp r6, r0 - beq _06013E04 - mov fp, #2 - mvn r4, #0 -_06013DBC: - mov r0, r6 - bl GetHeapBufNextAdrs - mov r7, r0 - cmp sl, #2 - beq _06013DD8 - add r0, r6, #0x10 - bl CAM_DecFrameCount -_06013DD8: - strh fp, [r6, #0x18] - cmp sb, #0 - beq _06013DF8 - ldr r0, [r5] - mov r1, r6 - add r0, r0, #0x194 - add r0, r0, r8 - bl IssueMaDataConfirm -_06013DF8: - mov r6, r7 - cmp r7, r4 - bne _06013DBC -_06013E04: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06013E0C: .word 0x0380FFF4 - arm_func_end MessageDeleteTx - - arm_func_start TxManCtrlFrame -TxManCtrlFrame: ; 0x06013E10 - stmdb sp!, {r3, lr} - bl SetManCtrlFrame - mov r0, #1 - bl TxqPri - ldmia sp!, {r3, lr} - bx lr - arm_func_end TxManCtrlFrame - - arm_func_start SetManCtrlFrame -SetManCtrlFrame: ; 0x06013E28 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x18 - bl CAM_Search - strh r0, [r4, #2] - ldrh r0, [r4, #2] - cmp r0, #0xff - moveq r0, #0 - streqh r0, [r4, #2] - ldr r0, _06013E98 ; =0x0380FFF4 - ldr r0, [r0] - ldr r0, [r0, #0x3ec] - strh r0, [r4, #4] - ldrh r0, [r4, #0x14] - tst r0, #0x4000 - ldrneh r0, [r4, #0x12] - addne r0, r0, #8 - strneh r0, [r4, #0x12] - mov r0, r4 - bl CAM_IncFrameCount - ldr r0, _06013E98 ; =0x0380FFF4 - sub r2, r4, #0x10 - ldr r1, [r0] - add r0, r1, #0x188 - add r1, r1, #0x1a0 - bl MoveHeapBuf - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06013E98: .word 0x0380FFF4 - arm_func_end SetManCtrlFrame - - arm_func_start TxPsPollFrame -TxPsPollFrame: ; 0x06013E9C - stmdb sp!, {r4, lr} - ldr r0, _06013F24 ; =0x0380FFF4 - ldr r2, [r0] - add r0, r2, #0x54 - add r4, r0, #0x400 - ldrh r1, [r4, #2] - add r0, r2, #0x400 - add r1, r1, #1 - strh r1, [r4, #2] - ldrh r0, [r0, #0x54] - mov r1, #0 - cmp r0, #0 - ldrne r0, [r4, #8] - strneh r1, [r0, #4] - bne _06013F1C - mov r0, #1 - strh r0, [r4] - ldr r0, [r4, #8] - strh r1, [r0] - ldr r0, [r4, #8] - strh r1, [r0, #4] - bl WCalcManRate - ldr r2, [r4, #8] - ldr r1, _06013F28 ; =0x00003FFF - strh r0, [r2, #8] - ldr r0, [r4, #8] - ldr r2, _06013F2C ; =0x048080A8 - and r0, r0, r1 - mov r0, r0, lsl #0xf - mov r0, r0, lsr #0x10 - orr r0, r0, #0x8000 - strh r0, [r2] -_06013F1C: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_06013F24: .word 0x0380FFF4 -_06013F28: .word 0x00003FFF -_06013F2C: .word 0x048080A8 - arm_func_end TxPsPollFrame - - arm_func_start StartBeaconFrame -StartBeaconFrame: ; 0x06013F30 - ldr r0, _06013F68 ; =0x0380FFF4 - mov r2, #1 - ldr r3, [r0] - rsb r1, r2, #0x4000 - add r0, r3, #0x400 - strh r2, [r0, #0xa4] - add r0, r3, #0xa4 - ldr r2, [r0, #0x408] - ldr r0, _06013F6C ; =0x04808080 - and r1, r2, r1 - mov r1, r1, lsr #1 - orr r1, r1, #0x8000 - strh r1, [r0] - bx lr - .align 2, 0 -_06013F68: .word 0x0380FFF4 -_06013F6C: .word 0x04808080 - arm_func_end StartBeaconFrame - - arm_func_start StopBeaconFrame -StopBeaconFrame: ; 0x06013F70 - ldr r1, _06013F90 ; =0x0380FFF4 - ldr r0, _06013F94 ; =0x04808080 - ldr r2, [r1] - mov r1, #0 - strh r1, [r0] - add r0, r2, #0x400 - strh r1, [r0, #0xa4] - bx lr - .align 2, 0 -_06013F90: .word 0x0380FFF4 -_06013F94: .word 0x04808080 - arm_func_end StopBeaconFrame - - arm_func_start MakeBeaconFrame -MakeBeaconFrame: ; 0x06013F98 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _060142F4 ; =0x0380FFF4 - mov r0, #0 - ldr r1, [r1] - ldr r8, [r1, #0x4ac] - add r5, r1, #0x31c - strh r0, [r8] - strh r0, [r8, #2] - strh r0, [r8, #4] - strh r0, [r8, #6] - add r6, r1, #0x344 - bl WCalcManRate - strh r0, [r8, #8] - mov r0, #0x80 - strh r0, [r8, #0xc] - mov r0, #0 - add r2, r5, #8 - strh r0, [r8, #0xe] - ldr r1, _060142F8 ; =BC_ADRS - add r0, r8, #0x10 - mov r3, r2 - bl WSetMacAdrs3 - mov r1, #0 - strh r1, [r8, #0x22] - add sl, r8, #0x24 - str r1, [r8, #0x24] - str r1, [sl, #4] - ldrh r0, [r6, #0x6e] - add sb, sl, #0xc - strh r0, [sl, #8] - ldrh r0, [r6, #0x7c] - strh r0, [sl, #0xa] - ldrh r0, [r5, #0x1e] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - bne _06014098 - sub r0, sb, sl - strh r0, [r6, #0x92] - mov r0, sb - bl WL_WriteByte - ldrh r1, [r6, #0x1e] - add r0, sb, #1 - and r1, r1, #0xff - add sb, sb, #2 - bl WL_WriteByte - mov r7, #0 - add r4, r6, #0x20 - b _06014074 -_06014058: - add r0, r4, r7 - bl WL_ReadByte - mov r1, r0 - mov r0, sb - bl WL_WriteByte - add sb, sb, #1 - add r7, r7, #1 -_06014074: - ldrh r0, [r6, #0x1e] - cmp r7, r0 - blo _06014058 - mvn r0, #0 - sub r0, r0, r7 - add r0, sb, r0 - and r1, r7, #0xff - bl WL_WriteByte - b _0601409C -_06014098: - strh r1, [r6, #0x92] -_0601409C: - mov r0, sb - bl SetSupRateSet - add sb, sb, r0 - mov r0, sb - mov r1, #3 - bl WL_WriteByte - add r0, sb, #1 - mov r1, #1 - bl WL_WriteByte - ldrh r1, [r6, #0x7a] - add r0, sb, #2 - and r1, r1, #0xff - bl WL_WriteByte - add r0, sb, #3 - sub r1, r0, sl - strh r1, [r6, #0x94] - ldrh r2, [r6, #0x94] - ldr r1, _060142FC ; =0x04808084 - add r2, r2, #2 - strh r2, [r1] - mov r1, #5 - bl WL_WriteByte - add r0, sb, #4 - mov r1, #5 - bl WL_WriteByte - add r0, sb, #5 - mov r1, #0 - bl WL_WriteByte - add r0, sb, #6 - ldrh r1, [r6, #0x74] - and r1, r1, #0xff - bl WL_WriteByte - add r0, sb, #7 - mov r1, #0 - bl WL_WriteByte - add r0, sb, #8 - mov r1, #0 - bl WL_WriteByte - add r0, sb, #9 - mov r1, #0 - bl WL_WriteByte - add r0, sb, #0xa - sub r1, r0, sl - strh r1, [r6, #0x96] - ldrh r2, [r6, #0x96] - mov r1, #0xdd - and r2, r2, #1 - strh r2, [r6, #0xa2] - bl WL_WriteByte - add r0, sb, #0xb - ldrh r1, [r6, #0xa0] - add r1, r1, #8 - and r1, r1, #0xff - bl WL_WriteByte - add r0, sb, #0xc - mov r1, #0 - bl WL_WriteByte - add r0, sb, #0xd - mov r1, #9 - bl WL_WriteByte - add r0, sb, #0xe - mov r1, #0xbf - bl WL_WriteByte - add r0, sb, #0xf - mov r1, #0 - bl WL_WriteByte - ldrh r0, [r6, #0xe] - cmp r0, #1 - bne _060141DC - ldrh r1, [r5, #0x20] - add r0, sb, #0x10 - and r1, r1, #0xff - bl WL_WriteByte - ldrh r1, [r5, #0x20] - add r0, sb, #0x11 - mov r1, r1, asr #8 - and r1, r1, #0xff - add sb, sb, #0x12 - bl WL_WriteByte - b _060141F8 -_060141DC: - add r0, sb, #0x10 - mov r1, #0xff - bl WL_WriteByte - add r0, sb, #0x11 - mov r1, #0xff - add sb, sb, #0x12 - bl WL_WriteByte -_060141F8: - ldr r1, _06014300 ; =0x0380FFF0 - mov r0, sb - ldrh r4, [r1] - and r1, r4, #0xff - bl WL_WriteByte - mov r1, r4, lsr #8 - add r0, sb, #1 - and r1, r1, #0xff - add sb, sb, #2 - bl WL_WriteByte - ldr r4, [r6, #0x9c] - mov r5, #0 - b _0601424C -_0601422C: - mov r0, r4 - bl WL_ReadByte - mov r1, r0 - mov r0, sb - bl WL_WriteByte - add sb, sb, #1 - add r4, r4, #1 - add r5, r5, #1 -_0601424C: - ldrh r1, [r6, #0xa0] - cmp r5, r1 - blo _0601422C - ldrh r0, [r6, #0xa2] - cmp r0, #0 - beq _060142A8 - ldr r0, [r6, #0x9c] - cmp r1, #0 - add r0, r0, r1 - sub r5, r0, #1 - mov r4, #0 - bls _060142A8 - b _0601429C -_06014280: - mov r0, r5 - bl WL_ReadByte - mov r1, r0 - add r0, r5, #1 - bl WL_WriteByte - add r4, r4, #1 - sub r5, r5, #1 -_0601429C: - ldrh r0, [r6, #0xa0] - cmp r4, r0 - blo _06014280 -_060142A8: - ldr r0, _060142F4 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #4 - beq _060142D8 - ldr r1, _06014304 ; =0x0000B6B8 - add r0, sb, #3 - bic r2, r0, #3 - ldr r0, _06014308 ; =0x00001D46 - strh r1, [r2] - strh r0, [r2, #2] -_060142D8: - mov r1, #0 - add r0, sb, #0x1c - strh r1, [r6, #0xa4] - sub r0, r0, sl - strh r0, [r8, #0xa] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_060142F4: .word 0x0380FFF4 -_060142F8: .word BC_ADRS -_060142FC: .word 0x04808084 -_06014300: .word 0x0380FFF0 -_06014304: .word 0x0000B6B8 -_06014308: .word 0x00001D46 - arm_func_end MakeBeaconFrame - - arm_func_start UpdateGameInfoElement -UpdateGameInfoElement: ; 0x0601430C - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _060143F8 ; =0x0380FFF4 - ldr r0, [r0] - add r4, r0, #0x344 - ldr r1, [r0, #0x4ac] - ldrh r2, [r4, #0xa0] - ldrh r0, [r4, #0x96] - add r1, r1, #0x24 - cmp r2, #0 - add r5, r1, r0 - beq _0601437C - ldrh r0, [r4, #0xa2] - ldr r1, [r4, #0x9c] - tst r0, #1 - add r0, r5, #0xa - beq _06014374 - sub r0, r0, #1 - add r2, r2, #2 - bl DMA_Write - ldr r1, _060143FC ; =0x0380FFF0 - add r0, r5, #9 - ldrh r1, [r1] - mov r1, r1, asr #8 - and r1, r1, #0xff - bl WL_WriteByte - b _0601437C -_06014374: - add r2, r2, #1 - bl DMA_Write -_0601437C: - ldr r0, _060143F8 ; =0x0380FFF4 - ldrh r2, [r4, #0x96] - ldr r0, [r0] - ldrh r1, [r4, #0xa0] - add r2, r2, #0x26 - ldr r0, [r0, #0x4ac] - add r1, r2, r1 - strh r1, [r0, #0xa] - ldrh r1, [r4, #0xa0] - add r0, r5, #1 - add r1, r1, #8 - and r1, r1, #0xff - bl WL_WriteByte - ldr r0, _060143F8 ; =0x0380FFF4 - ldr r0, [r0] - add r0, r0, #0x600 - ldrh r0, [r0, #0x90] - tst r0, #4 - beq _060143E8 - ldrh r0, [r4, #0xa0] - add r1, r5, #0xd - add r0, r1, r0 - ldr r1, _06014400 ; =0x0000B6B8 - bic r2, r0, #3 - ldr r0, _06014404 ; =0x00001D46 - strh r1, [r2] - strh r0, [r2, #2] -_060143E8: - mov r0, #0 - strh r0, [r4, #0xa4] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060143F8: .word 0x0380FFF4 -_060143FC: .word 0x0380FFF0 -_06014400: .word 0x0000B6B8 -_06014404: .word 0x00001D46 - arm_func_end UpdateGameInfoElement - - arm_func_start IsEnableManagement -IsEnableManagement: ; 0x06014408 - ldr r0, _06014434 ; =0x0380FFF4 - ldr r0, [r0] - add r1, r0, #0x500 - add r0, r0, #0x100 - ldrh r1, [r1, #0x38] - ldrh r2, [r0, #0xa8] - rsb r0, r1, #0x18 - cmp r2, r0 - movlt r0, #1 - movge r0, #0 - bx lr - .align 2, 0 -_06014434: .word 0x0380FFF4 - arm_func_end IsEnableManagement - - arm_func_start MakeDisAssFrame -MakeDisAssFrame: ; 0x06014438 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _060144AC ; =0x0380FFF4 - mov r5, r1 - ldr r1, [r2] - mov r6, r0 - add r0, r1, #0x188 - mov r1, #0x36 - bl AllocateHeapBuf - movs r4, r0 - bne _06014470 - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _060144A4 -_06014470: - ldr r0, _060144B0 ; =0x0000FFFF - mov r1, r6 - strh r0, [r4, #0xc] - add r0, r4, #0x10 - bl InitManHeader - strh r5, [r4, #0x3c] - mov r0, #2 - strh r0, [r4, #0x16] - add r0, r0, #0x1c - strh r0, [r4, #0x22] - mov r0, #0xa0 - strh r0, [r4, #0x24] - add r0, r4, #0x10 -_060144A4: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_060144AC: .word 0x0380FFF4 -_060144B0: .word 0x0000FFFF - arm_func_end MakeDisAssFrame - - arm_func_start MakeAssReqFrame -MakeAssReqFrame: ; 0x060144B4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _06014554 ; =0x0380FFF4 - mov r6, r0 - ldr r2, [r1] - mov r1, #0x5e - add r0, r2, #0x188 - add r5, r2, #0x344 - bl AllocateHeapBuf - movs r4, r0 - bne _060144EC - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _0601454C -_060144EC: - ldr r0, _06014558 ; =0x0000FFFF - mov r1, r6 - strh r0, [r4, #0xc] - add r0, r4, #0x10 - bl InitManHeader - ldrh r1, [r5, #0x7c] - add r0, r4, #0x40 - strh r1, [r4, #0x3c] - ldrh r1, [r5, #0x70] - strh r1, [r4, #0x3e] - bl SetSSIDElement - mov r5, r0 - add r0, r4, #0x40 - add r0, r0, r5 - bl SetSupRateSet - add r0, r5, r0 - add r0, r0, #4 - strh r0, [r4, #0x16] - ldrh r1, [r4, #0x16] - mov r0, #0 - add r1, r1, #0x1c - strh r1, [r4, #0x22] - strh r0, [r4, #0x24] - add r0, r4, #0x10 -_0601454C: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06014554: .word 0x0380FFF4 -_06014558: .word 0x0000FFFF - arm_func_end MakeAssReqFrame - - arm_func_start MakeReAssReqFrame -MakeReAssReqFrame: ; 0x0601455C - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _06014608 ; =0x0380FFF4 - mov r6, r0 - ldr r2, [r1] - mov r1, #0x64 - add r0, r2, #0x188 - add r5, r2, #0x344 - bl AllocateHeapBuf - movs r4, r0 - bne _06014594 - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _06014600 -_06014594: - ldr r0, _0601460C ; =0x0000FFFF - mov r1, r6 - strh r0, [r4, #0xc] - add r0, r4, #0x10 - bl InitManHeader - ldrh r1, [r5, #0x7c] - add r0, r4, #0x40 - strh r1, [r4, #0x3c] - ldrh r2, [r5, #0x70] - add r1, r5, #0x82 - strh r2, [r4, #0x3e] - bl WSetMacAdrs1 - add r0, r4, #0x46 - bl SetSSIDElement - mov r5, r0 - add r0, r4, #0x46 - add r0, r0, r5 - bl SetSupRateSet - add r0, r5, r0 - add r0, r0, #0xa - strh r0, [r4, #0x16] - ldrh r1, [r4, #0x16] - mov r0, #0x20 - add r1, r1, #0x1c - strh r1, [r4, #0x22] - strh r0, [r4, #0x24] - add r0, r4, #0x10 -_06014600: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06014608: .word 0x0380FFF4 -_0601460C: .word 0x0000FFFF - arm_func_end MakeReAssReqFrame - - arm_func_start MakeAssResFrame -MakeAssResFrame: ; 0x06014610 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r3, _0601477C ; =0x0380FFF4 - mov r7, r1 - ldr r1, [r3] - mov r8, r0 - add r0, r1, #0x188 - mov r1, #0x60 - mov r6, r2 - bl AllocateHeapBuf - movs r4, r0 - bne _0601464C - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _06014774 -_0601464C: - ldr r0, _06014780 ; =0x0000FFFF - cmp r7, #0 - strh r0, [r4, #0xc] - bne _06014670 - mov r0, r8 - bl CAM_AllocateAID - movs r5, r0 - moveq r7, #0x13 - b _06014674 -_06014670: - mov r5, #0 -_06014674: - mov r0, r8 - bl CAM_GetMacAdrs - mov r1, r0 - add r0, r4, #0x10 - bl InitManHeader - ldr r0, _0601477C ; =0x0380FFF4 - cmp r5, #0 - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0xc0] - strh r0, [r4, #0x3c] - strh r7, [r4, #0x3e] - strh r5, [r4, #0x40] - ldrneh r0, [r4, #0x40] - orrne r0, r0, #0xc000 - strneh r0, [r4, #0x40] - add r0, r4, #0x42 - bl SetSupRateSet - add r0, r0, #6 - strh r0, [r4, #0x16] - ldrh r1, [r4, #0x16] - mov r0, #0x10 - add r1, r1, #0x1c - strh r1, [r4, #0x22] - strh r0, [r4, #0x24] - ldrh r0, [r4, #0x22] - add r1, r4, #0x24 - cmp r6, #0 - add r8, r1, r0 - beq _06014758 - add r0, r6, #1 - bl WL_ReadByte - mov sb, r0 - mov r0, r6 - bl WL_ReadByte - mov r1, r0 - mov r0, r8 - bl WL_WriteByte - add r0, r8, #1 - and r1, sb, #0xff - add r8, r8, #2 - bl WL_WriteByte - cmp sb, #0 - mov r7, #0 - bls _06014770 - add r5, r6, #2 - b _0601474C -_06014730: - add r0, r5, r7 - bl WL_ReadByte - mov r1, r0 - mov r0, r8 - bl WL_WriteByte - add r7, r7, #1 - add r8, r8, #1 -_0601474C: - cmp r7, sb - blo _06014730 - b _06014770 -_06014758: - mov r0, r8 - mov r1, #0 - bl WL_WriteByte - add r0, r8, #1 - mov r1, #0 - bl WL_WriteByte -_06014770: - add r0, r4, #0x10 -_06014774: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_0601477C: .word 0x0380FFF4 -_06014780: .word 0x0000FFFF - arm_func_end MakeAssResFrame - - arm_func_start MakeReAssResFrame -MakeReAssResFrame: ; 0x06014784 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r3, _060148DC ; =0x0380FFF4 - mov r6, r1 - ldr r1, [r3] - mov r8, r0 - add r0, r1, #0x188 - mov r1, #0x60 - mov r5, r2 - bl AllocateHeapBuf - movs r4, r0 - bne _060147C0 - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _060148D4 -_060147C0: - ldr r0, _060148E0 ; =0x0000FFFF - cmp r6, #0 - strh r0, [r4, #0xc] - bne _060147E4 - mov r0, r8 - bl CAM_AllocateAID - movs r7, r0 - moveq r6, #0x13 - b _060147E8 -_060147E4: - mov r7, #0 -_060147E8: - mov r0, r8 - bl CAM_GetMacAdrs - mov r1, r0 - add r0, r4, #0x10 - bl InitManHeader - ldr r0, _060148DC ; =0x0380FFF4 - orr r2, r7, #0xc000 - ldr r1, [r0] - add r0, r4, #0x42 - add r1, r1, #0x300 - ldrh r1, [r1, #0xc0] - strh r1, [r4, #0x3c] - strh r6, [r4, #0x3e] - strh r2, [r4, #0x40] - bl SetSupRateSet - add r0, r0, #6 - strh r0, [r4, #0x16] - ldrh r1, [r4, #0x16] - mov r0, #0x30 - add r1, r1, #0x1c - strh r1, [r4, #0x22] - strh r0, [r4, #0x24] - ldrh r0, [r4, #0x22] - add r1, r4, #0x24 - cmp r5, #0 - add r7, r1, r0 - beq _060148B8 - add r0, r5, #1 - bl WL_ReadByte - mov r8, r0 - mov r0, r5 - bl WL_ReadByte - mov r1, r0 - mov r0, r7 - bl WL_WriteByte - add r0, r7, #1 - and r1, r8, #0xff - bl WL_WriteByte - add r7, r7, #2 - mov r6, #0 - add r5, r5, #2 - b _060148AC -_06014890: - add r0, r5, r6 - bl WL_ReadByte - mov r1, r0 - mov r0, r7 - bl WL_WriteByte - add r7, r7, #1 - add r6, r6, #1 -_060148AC: - cmp r6, r8 - blo _06014890 - b _060148D0 -_060148B8: - mov r0, r7 - mov r1, #0 - bl WL_WriteByte - add r0, r7, #1 - mov r1, #0 - bl WL_WriteByte -_060148D0: - add r0, r4, #0x10 -_060148D4: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_060148DC: .word 0x0380FFF4 -_060148E0: .word 0x0000FFFF - arm_func_end MakeReAssResFrame - - arm_func_start MakeProbeReqFrame -MakeProbeReqFrame: ; 0x060148E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _06014968 ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - mov r1, #0x5a - add r0, r0, #0x188 - bl AllocateHeapBuf - movs r5, r0 - bne _06014918 - mov r0, #2 - bl SetFatalErr - mov r0, r5 - b _06014960 -_06014918: - ldr r2, _0601496C ; =0x0000FFFF - mov r1, r4 - add r0, r5, #0x10 - strh r2, [r5, #0xc] - bl InitManHeader - add r0, r5, #0x3c - bl SetSSIDElement - mov r4, r0 - add r0, r5, #0x3c - add r0, r0, r4 - bl SetSupRateSet - add r0, r4, r0 - strh r0, [r5, #0x16] - add r0, r0, #0x1c - strh r0, [r5, #0x22] - mov r0, #0x40 - strh r0, [r5, #0x24] - add r0, r5, #0x10 -_06014960: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06014968: .word 0x0380FFF4 -_0601496C: .word 0x0000FFFF - arm_func_end MakeProbeReqFrame - - arm_func_start MakeProbeResFrame -MakeProbeResFrame: ; 0x06014970 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _06014B84 ; =0x0380FFF4 - mov r5, r0 - ldr r0, [r1] - add r4, r0, #0x344 - bl IsEnableManagement - cmp r0, #0 - moveq r0, #0 - beq _06014B7C - ldr r1, _06014B84 ; =0x0380FFF4 - ldrh r0, [r4, #0xa0] - ldr r2, [r1] - add r1, r0, #0x78 - add r0, r2, #0x188 - bl AllocateHeapBuf - movs r6, r0 - bne _060149C4 - mov r0, #2 - bl SetFatalErr - mov r0, r6 - b _06014B7C -_060149C4: - ldr r0, _06014B88 ; =0x0000FFFF - mov r1, r5 - strh r0, [r6, #0xc] - add r0, r6, #0x10 - bl InitManHeader - ldrh r1, [r4, #0x6e] - add r0, r6, #0x48 - strh r1, [r6, #0x44] - ldrh r1, [r4, #0x7c] - strh r1, [r6, #0x46] - bl SetSSIDElement - mov r4, r0 - add r0, r6, #0x48 - add r0, r0, r4 - bl SetSupRateSet - add r7, r4, r0 - add r0, r6, #0x48 - add r4, r0, r7 - mov r0, r4 - mov r1, #3 - bl WL_WriteByte - add r0, r4, #1 - mov r1, #1 - bl WL_WriteByte - ldr r1, _06014B84 ; =0x0380FFF4 - add r0, r4, #2 - ldr r1, [r1] - add r1, r1, #0x300 - ldrh r1, [r1, #0xbe] - and r1, r1, #0xff - bl WL_WriteByte - ldr r0, _06014B84 ; =0x0380FFF4 - add r7, r7, #3 - ldr r1, [r0] - add r0, r6, #0x48 - add r5, r0, r7 - add r4, r1, #0x344 - add r8, r1, #0x31c - mov r0, r5 - mov r1, #0xdd - mov sl, #0 - bl WL_WriteByte - ldr r1, _06014B84 ; =0x0380FFF4 - add r0, r5, #1 - ldr r1, [r1] - add r1, r1, #0x300 - ldrh r1, [r1, #0xe4] - add r1, r1, #8 - and r1, r1, #0xff - bl WL_WriteByte - add r0, r5, #2 - mov r1, sl - bl WL_WriteByte - add r0, r5, #3 - mov r1, #9 - bl WL_WriteByte - add r0, r5, #4 - mov r1, #0xbf - bl WL_WriteByte - add r0, r5, #5 - mov r1, sl - bl WL_WriteByte - ldrh r1, [r8, #0x20] - add r0, r5, #6 - and r1, r1, #0xff - bl WL_WriteByte - ldrh r1, [r8, #0x20] - add r0, r5, #7 - mov r1, r1, asr #8 - and r1, r1, #0xff - bl WL_WriteByte - ldr r1, _06014B8C ; =0x0380FFF0 - add r0, r5, #8 - ldrh r8, [r1] - and r1, r8, #0xff - bl WL_WriteByte - mov r1, r8, lsr #8 - add r0, r5, #9 - and r1, r1, #0xff - bl WL_WriteByte - ldrh r0, [r4, #0xa0] - add sl, sl, #0xa - cmp r0, #0 - beq _06014B58 - ldrh r0, [r4, #0xa2] - ldr r8, [r4, #0x9c] - tst r0, #1 - addne r8, r8, #1 - mov sb, #0 - b _06014B4C -_06014B2C: - mov r0, r8 - bl WL_ReadByte - mov r1, r0 - add r0, r5, sl - bl WL_WriteByte - add sl, sl, #1 - add r8, r8, #1 - add sb, sb, #1 -_06014B4C: - ldrh r0, [r4, #0xa0] - cmp sb, r0 - blo _06014B2C -_06014B58: - add r0, r7, sl - add r0, r0, #0xc - strh r0, [r6, #0x16] - ldrh r1, [r6, #0x16] - mov r0, #0x50 - add r1, r1, #0x1c - strh r1, [r6, #0x22] - strh r0, [r6, #0x24] - add r0, r6, #0x10 -_06014B7C: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_06014B84: .word 0x0380FFF4 -_06014B88: .word 0x0000FFFF -_06014B8C: .word 0x0380FFF0 - arm_func_end MakeProbeResFrame - - arm_func_start MakeAuthFrame -MakeAuthFrame: ; 0x06014B90 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - cmp r2, #0 - beq _06014BB4 - bl IsEnableManagement - cmp r0, #0 - moveq r0, #0 - beq _06014C40 -_06014BB4: - ldr r0, _06014C48 ; =0x0380FFF4 - add r1, r5, #0x3d - ldr r0, [r0] - add r0, r0, #0x188 - bl AllocateHeapBuf - movs r4, r0 - bne _06014BE0 - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _06014C40 -_06014BE0: - ldr r2, _06014C4C ; =0x0000FFFF - mov r1, r6 - add r0, r4, #0x10 - strh r2, [r4, #0xc] - bl InitManHeader - cmp r5, #0 - beq _06014C20 - add r0, r4, #0x42 - mov r1, #0x10 - bl WL_WriteByte - add r0, r4, #0x43 - and r1, r5, #0xff - bl WL_WriteByte - add r0, r5, #2 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 -_06014C20: - add r0, r5, #6 - strh r0, [r4, #0x16] - ldrh r1, [r4, #0x16] - mov r0, #0xb0 - add r1, r1, #0x1c - strh r1, [r4, #0x22] - strh r0, [r4, #0x24] - add r0, r4, #0x10 -_06014C40: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06014C48: .word 0x0380FFF4 -_06014C4C: .word 0x0000FFFF - arm_func_end MakeAuthFrame - - arm_func_start MakeDeAuthFrame -MakeDeAuthFrame: ; 0x06014C50 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - cmp r2, #0 - beq _06014C74 - bl IsEnableManagement - cmp r0, #0 - moveq r0, #0 - beq _06014CD4 -_06014C74: - ldr r0, _06014CDC ; =0x0380FFF4 - mov r1, #0x36 - ldr r0, [r0] - add r0, r0, #0x188 - bl AllocateHeapBuf - movs r4, r0 - bne _06014CA0 - mov r0, #2 - bl SetFatalErr - mov r0, r4 - b _06014CD4 -_06014CA0: - ldr r0, _06014CE0 ; =0x0000FFFF - mov r1, r6 - strh r0, [r4, #0xc] - add r0, r4, #0x10 - bl InitManHeader - strh r5, [r4, #0x3c] - mov r0, #2 - strh r0, [r4, #0x16] - add r0, r0, #0x1c - strh r0, [r4, #0x22] - mov r0, #0xc0 - strh r0, [r4, #0x24] - add r0, r4, #0x10 -_06014CD4: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06014CDC: .word 0x0380FFF4 -_06014CE0: .word 0x0000FFFF - arm_func_end MakeDeAuthFrame - - arm_func_start MakePsPollFrame -MakePsPollFrame: ; 0x06014CE4 - stmdb sp!, {r3, lr} - ldr ip, _06014D38 ; =0x0380FFF4 - mov r2, #0 - ldr r3, [ip] - mov r1, #0x14 - ldr r3, [r3, #0x45c] - orr r0, r0, #0xc000 - strh r2, [r3] - strh r2, [r3, #2] - strh r2, [r3, #4] - strh r1, [r3, #0xa] - mov r1, #0xa4 - strh r1, [r3, #0xc] - strh r0, [r3, #0xe] - ldr r2, [ip] - add r0, r3, #0x10 - add r1, r2, #0x3a8 - add r2, r2, #0x324 - bl WSetMacAdrs2 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_06014D38: .word 0x0380FFF4 - arm_func_end MakePsPollFrame - - arm_func_start InitManHeader -InitManHeader: ; 0x06014D3C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r1, r5 - mov r0, #0 - mov r2, #0x2c - bl __VENEER_MIi_CpuClear16 - bl WCalcManRate - strh r0, [r5, #0x10] - ldr r0, _06014D84 ; =0x0380FFF4 - mov r1, r4 - ldr r3, [r0] - add r0, r5, #0x18 - add r2, r3, #0x324 - add r3, r3, #0x3a8 - bl WSetMacAdrs3 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06014D84: .word 0x0380FFF4 - arm_func_end InitManHeader - - arm_func_start IsExistManFrame -IsExistManFrame: ; 0x06014D88 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _06014DEC ; =0x0380FFF4 - mov r7, r0 - ldr r0, [r2] - mov r6, r1 - ldr r5, [r0, #0x1a0] - mvn r4, #0 - b _06014DD8 -_06014DA8: - ldrh r0, [r5, #0x24] - cmp r0, r6 - bne _06014DCC - mov r1, r7 - add r0, r5, #0x28 - bl MatchMacAdrs - cmp r0, #0 - movne r0, #1 - bne _06014DE4 -_06014DCC: - mov r0, r5 - bl GetHeapBufNextAdrs - mov r5, r0 -_06014DD8: - cmp r5, r4 - bne _06014DA8 - mov r0, #0 -_06014DE4: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06014DEC: .word 0x0380FFF4 - arm_func_end IsExistManFrame - - arm_func_start SetSSIDElement -SetSSIDElement: ; 0x06014DF0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _06014E60 ; =0x0380FFF4 - mov r5, #0 - ldr r1, [r1] - mov r8, r0 - add r4, r1, #0x344 - ldrh r6, [r4, #0x1e] - mov r1, r5 - bl WL_WriteByte - add r0, r8, #1 - and r1, r6, #0xff - bl WL_WriteByte - add r5, r5, #2 - mov r7, #0 - add r4, r4, #0x20 - b _06014E4C -_06014E30: - add r0, r4, r7 - bl WL_ReadByte - mov r1, r0 - add r0, r8, r5 - bl WL_WriteByte - add r5, r5, #1 - add r7, r7, #1 -_06014E4C: - cmp r7, r6 - blo _06014E30 - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_06014E60: .word 0x0380FFF4 - arm_func_end SetSSIDElement - - arm_func_start SetSupRateSet -SetSupRateSet: ; 0x06014E64 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _06014F00 ; =0x0380FFF4 - mov r1, #1 - ldr r2, [r2] - mov sb, r0 - add r6, r2, #0x344 - mov r7, #0 - bl WL_WriteByte - ldr r4, _06014F04 ; =RateBit2Element - add r7, r7, #2 - mov r8, #0 - mov r5, #1 -_06014E94: - ldrh r0, [r6, #0x62] - tst r0, r5, lsl r8 - beq _06014ED8 - ldrh r0, [r6, #0x60] - tst r0, r5, lsl r8 - mov r0, r8, lsl #1 - ldrh r1, [r4, r0] - beq _06014EC8 - orr r1, r1, #0x80 - add r0, sb, r7 - and r1, r1, #0xff - bl WL_WriteByte - b _06014ED4 -_06014EC8: - add r0, sb, r7 - and r1, r1, #0xff - bl WL_WriteByte -_06014ED4: - add r7, r7, #1 -_06014ED8: - add r8, r8, #1 - cmp r8, #0x10 - blo _06014E94 - sub r1, r7, #2 - add r0, sb, #1 - and r1, r1, #0xff - bl WL_WriteByte - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_06014F00: .word 0x0380FFF4 -_06014F04: .word RateBit2Element - arm_func_end SetSupRateSet - - arm_func_start InitTxCtrl -InitTxCtrl: ; 0x06014F08 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _060151D8 ; =0x0380FFF4 - mov r0, #0 - ldr r7, [r1] - mov r2, #0xb0 - add r1, r7, #0x2c - add r4, r1, #0x400 - mov r1, r4 - add r5, r7, #0x344 - add r6, r7, #0x31c - bl __VENEER_MIi_CpuClear32 - add r0, r7, #0x400 - mov r1, #0 - strh r1, [r0, #0x2c] - str r1, [r4, #0xc] - strh r1, [r4, #0x14] - str r1, [r4, #0x20] - strh r1, [r4, #0x28] - ldr r0, _060151DC ; =0x0000FFFF - str r1, [r4, #0x34] - strh r0, [r4, #0xa2] - strh r0, [r4, #0xa4] - ldrh r0, [r5, #0xc] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _060151BC -_06014F70: ; jump table - b _06014F80 ; case 0 - b _06014FFC ; case 1 - b _06015098 ; case 2 - b _06015144 ; case 3 -_06014F80: - ldr r7, _060151E0 ; =0x04804170 - ldr r0, _060151E4 ; =0x04804026 - str r7, [r4, #8] - sub r1, r7, #0x148 - str r1, [r4, #0x1c] - sub r2, r7, #0x170 - ldr r1, _060151E8 ; =TxqEndData - str r2, [r4, #0x30] - ldr r2, _060151EC ; =TxqEndManCtrl - str r1, [r4, #0x10] - ldr r1, _060151F0 ; =TxqEndPsPoll - str r2, [r4, #0x24] - ldr r3, _060151F4 ; =0x0000B6B8 - str r1, [r4, #0x38] - sub r1, r7, #0x14c - ldr r2, _060151F8 ; =0x00001D46 - strh r3, [r1] - strh r2, [r0] - strh r3, [r7, #-4] - add r0, r0, #0x148 - strh r2, [r0] - add r1, r7, #0x620 - ldr r0, _060151FC ; =0x04804792 - strh r3, [r1] - strh r2, [r0] - mov r1, #8 - ldr r0, _06015200 ; =0x048080AE - strh r1, [r5, #0x8a] - mov r1, #1 - strh r1, [r0] - b _060151BC -_06014FFC: - ldr r3, _06015204 ; =0x04804AA0 - ldr r2, _06015208 ; =0x04804334 - str r3, [r4, #8] - sub r0, r3, #0x148 - str r0, [r4, #0x1c] - ldr r0, _060151E8 ; =TxqEndData - str r2, [r4, #0x30] - ldr r1, _060151EC ; =TxqEndManCtrl - str r0, [r4, #0x10] - ldr r0, _0601520C ; =TxqEndBroadCast - str r1, [r4, #0x24] - ldr ip, _06015210 ; =0x04804956 - str r0, [r4, #0x38] - sub r1, r2, #0xfc - str r1, [r4, #0x80] - sub r7, r2, #0x334 - ldr r0, _060151F4 ; =0x0000B6B8 - str r7, [r4, #0x44] - sub r7, r2, #0x100 - ldr lr, _060151F8 ; =0x00001D46 - strh r0, [r7] - strh lr, [r2, #-0xfe] - strh r0, [r2, #-4] - strh lr, [r2, #-2] - add r2, r2, #0x620 - strh r0, [r2] - strh lr, [ip] - strh r0, [r3, #-4] - add r2, ip, #0x148 - strh lr, [r2] - add r3, r3, #0x620 - ldr r2, _06015214 ; =0x048050C2 - strh r0, [r3] - strh lr, [r2] - mov r0, #0x208 - strh r0, [r5, #0x8a] - str r1, [r4, #0x80] - bl MakeBeaconFrame - b _060151BC -_06015098: - ldr r1, _06015218 ; =0x048045D8 - ldr r3, _0601521C ; =0x04804232 - str r1, [r4, #8] - sub r0, r1, #0x148 - str r0, [r4, #0x1c] - sub r2, r1, #0x170 - ldr ip, _06015220 ; =0x04804000 - ldr r0, _060151E8 ; =TxqEndData - str r2, [r4, #0x30] - ldr r2, _060151EC ; =TxqEndManCtrl - str r0, [r4, #0x10] - ldr r0, _060151F0 ; =TxqEndPsPoll - str r2, [r4, #0x24] - str r0, [r4, #0x38] - str ip, [r4, #0x58] - add r2, ip, #0x234 - ldr r0, _060151F4 ; =0x0000B6B8 - str r2, [r4, #0x6c] - add r2, ip, #0x230 - ldr r4, _060151F8 ; =0x00001D46 - strh r0, [r2] - strh r4, [r3] - sub r2, r1, #0x174 - strh r0, [r2] - add r2, r3, #0x234 - strh r4, [r2] - sub r2, r1, #0x14c - strh r0, [r2] - add r2, r3, #0x25c - strh r4, [r2] - strh r0, [r1, #-4] - add r2, r3, #0x3a4 - strh r4, [r2] - add r2, r1, #0x620 - ldr r1, _06015224 ; =0x04804BFA - strh r0, [r2] - strh r4, [r1] - mov r1, #0x108 - ldr r0, _06015200 ; =0x048080AE - strh r1, [r5, #0x8a] - mov r1, #0xd - strh r1, [r0] - b _060151BC -_06015144: - ldr ip, _060151E0 ; =0x04804170 - ldr r0, _060151E4 ; =0x04804026 - str ip, [r4, #8] - sub r1, ip, #0x148 - str r1, [r4, #0x1c] - sub r2, ip, #0x170 - ldr r1, _060151E8 ; =TxqEndData - str r2, [r4, #0x30] - ldr r2, _060151EC ; =TxqEndManCtrl - str r1, [r4, #0x10] - ldr r1, _060151F0 ; =TxqEndPsPoll - str r2, [r4, #0x24] - ldr r3, _060151F4 ; =0x0000B6B8 - str r1, [r4, #0x38] - sub r1, ip, #0x14c - ldr r2, _060151F8 ; =0x00001D46 - strh r3, [r1] - strh r2, [r0] - strh r3, [ip, #-4] - add r0, r0, #0x148 - strh r2, [r0] - add r1, ip, #0x620 - ldr r0, _060151FC ; =0x04804792 - strh r3, [r1] - strh r2, [r0] - mov r1, #0x108 - ldr r0, _06015200 ; =0x048080AE - strh r1, [r5, #0x8a] - mov r1, #0xd - strh r1, [r0] -_060151BC: - ldrh r0, [r6, #0x18] - cmp r0, #0 - ldrneh r0, [r5, #0x8a] - orrne r0, r0, #0x4000 - strneh r0, [r5, #0x8a] - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_060151D8: .word 0x0380FFF4 -_060151DC: .word 0x0000FFFF -_060151E0: .word 0x04804170 -_060151E4: .word 0x04804026 -_060151E8: .word TxqEndData -_060151EC: .word TxqEndManCtrl -_060151F0: .word TxqEndPsPoll -_060151F4: .word 0x0000B6B8 -_060151F8: .word 0x00001D46 -_060151FC: .word 0x04804792 -_06015200: .word 0x048080AE -_06015204: .word 0x04804AA0 -_06015208: .word 0x04804334 -_0601520C: .word TxqEndBroadCast -_06015210: .word 0x04804956 -_06015214: .word 0x048050C2 -_06015218: .word 0x048045D8 -_0601521C: .word 0x04804232 -_06015220: .word 0x04804000 -_06015224: .word 0x04804BFA - arm_func_end InitTxCtrl - - arm_func_start RxDataFrameTask -RxDataFrameTask: ; 0x06015228 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _060154F4 ; =0x0380FFF4 - mvn r0, #0 - ldr r4, [r1] - add r7, r4, #0x17c - ldr r5, [r7, #0x48] - add r6, r4, #0x344 - cmp r5, r0 - beq _060154EC - ldrh r0, [r6, #8] - cmp r0, #0x40 - beq _06015268 - mov r1, r5 - add r0, r7, #0x48 - bl ReleaseHeapBuf - b _060154EC -_06015268: - ldrh r0, [r5, #0x24] - mov r0, r0, lsl #0x17 - movs r0, r0, lsr #0x1f - beq _06015280 - ldrh r0, [r5, #0x34] - b _06015284 -_06015280: - ldrh r0, [r5, #0x28] -_06015284: - tst r0, #1 - ldrne r0, [r4, #0x568] - mov sb, #1 - addne r0, r0, #1 - strne r0, [r4, #0x568] - ldreq r0, [r4, #0x564] - addeq r0, r0, #1 - streq r0, [r4, #0x564] - ldrh r0, [r5, #0x18] - ldr r2, [r4, #0x560] - and r1, r0, #0xf0 - mov r0, r1, asr #3 - add r0, r1, r0, lsr #28 - mov r0, r0, asr #4 - sub r0, r0, #1 - add r0, r2, r0 - str r0, [r4, #0x560] - ldrh r2, [r6, #0xc] - cmp r2, #1 - beq _060152E4 - cmp r2, #2 - cmpne r2, #3 - beq _060153C0 - b _06015460 -_060152E4: - ldrh r0, [r5, #0x24] - tst r0, #1 - bne _06015460 - add r0, r5, #0x2e - bl CAM_Search - mov r8, r0 - cmp r8, #0xff - beq _06015310 - bl CAM_GetStaState - cmp r0, #0x40 - beq _06015374 -_06015310: - mov r0, r8 - bl CAM_GetStaState - cmp r0, #0x30 - add r0, r5, #0x2e - bne _06015344 - mov r1, #0xa0 - bl IsExistManFrame - cmp r0, #0 - bne _06015460 - add r0, r5, #0x2e - mov r1, #7 - bl MakeDisAssFrame - b _06015364 -_06015344: - mov r1, #0xc0 - bl IsExistManFrame - cmp r0, #0 - bne _06015460 - add r0, r5, #0x2e - mov r1, #7 - mov r2, #1 - bl MakeDeAuthFrame -_06015364: - cmp r0, #0 - beq _06015460 - bl TxManCtrlFrame - b _06015460 -_06015374: - ldrh r1, [r5, #0x24] - mov r0, r8, lsl #0x10 - mov r1, r1, lsl #0x13 - mov r0, r0, lsr #0x10 - mov r1, r1, lsr #0x1f - bl CAM_SetPowerMgtMode - mov r0, r8 - bl CAM_GetLastSeqCtrl - ldrh r1, [r5, #0x3a] - cmp r1, r0 - ldreq r0, [r4, #0x578] - addeq r0, r0, #1 - streq r0, [r4, #0x578] - beq _06015460 - add r0, r5, #0x28 - add r1, r5, #0x34 - bl WSetMacAdrs1 - mov sb, #0 - b _06015460 -_060153C0: - ldrh r1, [r5, #0x24] - tst r1, #1 - bne _06015460 - ldrh r0, [r6, #0xe] - cmp r0, #0 - beq _0601542C - tst r1, #0x2000 - bne _0601542C - ldrh r0, [r5, #0x28] - tst r0, #1 - ldrneh r0, [r6, #0x8e] - bicne r0, r0, #1 - strneh r0, [r6, #0x8e] - bne _06015408 - cmp r2, #3 - ldrneh r0, [r6, #0x8e] - bicne r0, r0, #2 - strneh r0, [r6, #0x8e] -_06015408: - ldrh r0, [r6, #0x8e] - cmp r0, #0 - ldreqh r0, [r7, #0x20] - cmpeq r0, #0 - ldreqh r0, [r7, #0x2c] - cmpeq r0, #0 - bne _0601542C - mov r0, #1 - bl WSetPowerState -_0601542C: - ldrh r8, [r6, #0x88] - mov r0, r8 - bl CAM_GetLastSeqCtrl - ldrh r1, [r5, #0x3a] - cmp r1, r0 - ldreq r0, [r4, #0x578] - addeq r0, r0, #1 - streq r0, [r4, #0x578] - beq _06015460 - add r0, r5, #0x2e - add r1, r5, #0x34 - bl WSetMacAdrs1 - mov sb, #0 -_06015460: - cmp sb, #0 - bne _060154C8 - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - strh r0, [r5, #0x12] - ldrh r1, [r5, #0x22] - and r1, r1, #0xff - bl CAM_SetRSSI - ldrh r1, [r5, #0x3a] - mov r0, r8 - bl CAM_SetLastSeqCtrl - mov r0, r8 - bl CAM_UpdateLifeTime - ldrh r1, [r5, #0x20] - mov r0, #0x180 - sub r1, r1, #0x18 - strh r1, [r5, #0x16] - strh r0, [r5, #0xc] - ldrh r0, [r5, #0x16] - mov r1, r5 - add r0, r0, #0x2d - mov r2, r0, lsr #1 - add r0, r7, #0x48 - strh r2, [r5, #0xe] - bl SendMessageToWmDirect - b _060154D4 -_060154C8: - mov r1, r5 - add r0, r7, #0x48 - bl ReleaseHeapBuf -_060154D4: - ldrh r0, [r7, #0x50] - cmp r0, #0 - beq _060154EC - mov r0, #2 - mov r1, #6 - bl AddTask -_060154EC: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_060154F4: .word 0x0380FFF4 - arm_func_end RxDataFrameTask - - arm_func_start RxMpFrame -RxMpFrame: ; 0x060154F8 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _06015664 ; =0x0380FFF4 - mov r6, r0 - ldr r0, [r1] - add r4, r0, #0x344 - ldrh r1, [r4, #8] - add r0, r0, #0xdc - cmp r1, #0x40 - add r5, r0, #0x400 - movne r0, #1 - bne _0601565C - add r0, r6, #0x1e - add r1, r4, #0x64 - bl MatchMacAdrs - cmp r0, #0 - beq _0601554C - add r0, r6, #0x24 - add r1, r4, #0x82 - bl MatchMacAdrs - cmp r0, #0 - bne _06015554 -_0601554C: - mov r0, #1 - b _0601565C -_06015554: - ldrh r0, [r4, #0x6a] - mov r1, #1 - mov r0, r1, lsl r0 - ldrh r1, [r6, #0x2e] - mov r0, r0, lsl #0x10 - tst r1, r0, lsr #16 - moveq r0, #0 - movne r0, #0x2000 - strh r0, [r5, #6] - ldr r0, _06015668 ; =0x04808098 - ldrh r0, [r0] - tst r0, #0x8000 - beq _060155AC - mov r0, r0, lsl #0x11 - mov r0, r0, lsr #0x10 - add r0, r0, #0x4800000 - add r0, r0, #0x4000 - ldrh r0, [r0, #4] - cmp r0, #0 - ldrneh r0, [r5, #6] - orrne r0, r0, #0x4000 - strneh r0, [r5, #6] -_060155AC: - ldrh r0, [r4, #0x88] - bl CAM_UpdateLifeTime - ldrh r1, [r6, #0x10] - ldr r0, _0601566C ; =0x00000182 - sub r1, r1, #0x1c - strh r1, [r6, #6] - sub r1, r6, #0x10 - strh r0, [r1, #0xc] - ldrh r2, [r6, #6] - mov r0, #0 - add r2, r2, #0x31 - mov r2, r2, lsr #1 - strh r2, [r1, #0xe] - ldrh r2, [r1, #0x3e] - b _060155F8 -_060155E8: - tst r2, #1 - mov r2, r2, lsl #0xf - addne r0, r0, #1 - mov r2, r2, lsr #0x10 -_060155F8: - cmp r2, #0 - bne _060155E8 - ldr r2, _06015670 ; =0x04808094 - ldrh r3, [r5, #6] - ldrh r4, [r2] - ldrh r2, [r2, #4] - ldrh r5, [r1, #0x18] - and r2, r2, #0x8000 - and r4, r4, #0x8000 - orr r2, r3, r2, asr #4 - orr r2, r2, r4, asr #3 - orr r2, r5, r2 - strh r2, [r1, #0x18] - ldrh r2, [r1, #0x3c] - ldrh r3, [r1, #0x1c] - add r2, r2, #0xa - mul r2, r0, r2 - add r0, r2, #0xfc - add r2, r3, r0, lsr #4 - ldr r0, _06015664 ; =0x0380FFF4 - strh r2, [r1, #0x1a] - ldr r0, [r0] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #0 -_0601565C: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06015664: .word 0x0380FFF4 -_06015668: .word 0x04808098 -_0601566C: .word 0x00000182 -_06015670: .word 0x04808094 - arm_func_end RxMpFrame - - arm_func_start RxKeyDataFrame -RxKeyDataFrame: ; 0x06015674 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _0601581C ; =0x0380FFF4 - mov r7, r0 - ldr r1, [r1] - add r0, r1, #0x2c - add r5, r0, #0x400 - ldrh r0, [r5, #0x3c] - ldr r4, [r5, #0x90] - cmp r0, #0 - beq _06015814 - add r0, r7, #0x18 - add r1, r1, #0x3a8 - bl MatchMacAdrs - cmp r0, #0 - beq _06015814 - ldrh r1, [r7, #0x10] - ldrh r0, [r4, #0x16] - sub r1, r1, #0x18 - sub r0, r0, #8 - cmp r1, r0 - bgt _06015814 - add r0, r7, #0x1e - bl CAM_Search - mov r6, r0 - cmp r6, #0xff - beq _060156F0 - cmp r6, #0 - beq _0601572C - bl CAM_GetStaState - cmp r0, #0x40 - beq _0601572C -_060156F0: - add r0, r7, #0x1e - mov r1, #0xc0 - bl IsExistManFrame - cmp r0, #0 - bne _06015814 - add r0, r7, #0x1e - mov r1, #7 - mov r2, #0 - bl MakeDeAuthFrame - cmp r0, #0 - beq _06015814 - mov r1, #2 - strh r1, [r0] - bl TxManCtrlFrame - b _06015814 -_0601572C: - cmp r6, #0 - beq _06015814 - ldrh r1, [r7, #0x14] - mov r0, r6, lsl #0x10 - mov r1, r1, lsl #0x13 - mov r0, r0, lsr #0x10 - mov r1, r1, lsr #0x1f - bl CAM_SetPowerMgtMode - mov r0, r6 - bl CAM_UpdateLifeTime - mov r0, r6 - bl CAM_GetAID - mov r1, #1 - mov r0, r1, lsl r0 - mov r0, r0, lsl #0x10 - ldrh r1, [r5, #0x9a] - mov r2, r0, lsr #0x10 - tst r2, r1 - bne _06015814 - ldrh r0, [r5, #0x98] - tst r2, r0 - beq _06015814 - orr r0, r1, r2 - strh r0, [r5, #0x9a] - ldrh r1, [r4, #0x10] - mvn r0, r2 - and r1, r1, r0 - mov r0, r2, lsl #0xf - strh r1, [r4, #0x10] - add r6, r4, #0x1a - mov r1, r0, lsr #0x10 - b _060157C4 -_060157AC: - ldrh r0, [r5, #0x98] - tst r1, r0 - ldrneh r0, [r4, #0x16] - addne r6, r6, r0 - mov r0, r1, lsl #0xf - mov r1, r0, lsr #0x10 -_060157C4: - cmp r1, #1 - bne _060157AC - ldrh r1, [r7, #0x10] - add r0, r6, #3 - sub r1, r1, #0x18 - strh r1, [r6] - ldrh r1, [r7, #0x12] - and r1, r1, #0xff - bl WL_WriteByte - ldrh r1, [r7, #0xe] - add r0, r6, #2 - and r1, r1, #0xff - bl WL_WriteByte - ldrh r2, [r6] - cmp r2, #0 - beq _06015814 - add r0, r7, #0x2c - add r1, r6, #8 - add r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 -_06015814: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_0601581C: .word 0x0380FFF4 - arm_func_end RxKeyDataFrame - - arm_func_start RxMpAckFrame -RxMpAckFrame: ; 0x06015820 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _060158E8 ; =0x0380FFF4 - mov r4, r0 - ldr r1, [r1] - add r0, r1, #0x300 - ldrh r0, [r0, #0x4c] - add r5, r1, #0x344 - cmp r0, #0x40 - movne r0, #1 - bne _060158E0 - add r0, r4, #0x1e - add r1, r5, #0x64 - bl MatchMacAdrs - cmp r0, #0 - beq _06015870 - add r0, r4, #0x24 - add r1, r5, #0x82 - bl MatchMacAdrs - cmp r0, #0 - bne _06015878 -_06015870: - mov r0, #1 - b _060158E0 -_06015878: - ldrh r1, [r4, #0x10] - ldr r0, _060158EC ; =0x00000185 - sub r1, r1, #0x1c - strh r1, [r4, #6] - sub r1, r4, #0x10 - strh r0, [r1, #0xc] - mov r0, #0x18 - strh r0, [r1, #0xe] - ldr r4, _060158E8 ; =0x0380FFF4 - ldr r2, _060158F0 ; =0x04808094 - ldr r0, [r4] - ldrh ip, [r2] - add r0, r0, #0x400 - ldrh r2, [r2, #4] - ldrh r3, [r0, #0xe2] - and r0, r2, #0x8000 - ldrh lr, [r1, #0x18] - and r2, ip, #0x8000 - orr r0, r3, r0, asr #4 - orr r0, r0, r2, asr #3 - orr r0, lr, r0 - strh r0, [r1, #0x18] - ldr r0, [r4] - add r0, r0, #0x188 - bl SendMessageToWmDirect - mov r0, #0 -_060158E0: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_060158E8: .word 0x0380FFF4 -_060158EC: .word 0x00000185 -_060158F0: .word 0x04808094 - arm_func_end RxMpAckFrame - - arm_func_start RxBeaconFrame -RxBeaconFrame: ; 0x060158F4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - ldr r1, _06015F1C ; =0x0380FFF4 - mov sl, r0 - ldr r3, [r1] - add r0, sl, #0x1e - ldr r2, [r3, #0x570] - add r1, r3, #4 - add r2, r2, #1 - str r2, [r3, #0x570] - add r4, r3, #0x344 - add r5, r1, #0x400 - add r6, r3, #0x31c - add r7, r3, #0x17c - bl CAM_SearchAdd - mov r8, r0 - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - strh r0, [sl, #2] - cmp r8, #0xff - beq _06015F10 - ldrh r1, [sl, #0x12] - bl CAM_SetRSSI - ldrh sb, [sl, #6] - cmp sb, #0xc - bls _06015F10 - add r1, sp, #0x18 - mov r0, #0 - mov r2, #0x2c - bl __VENEER_MIi_CpuClear32 - add r2, sl, #0x38 - sub r1, sb, #0xc - mov r0, #2 - str r2, [sp, #0x18] - strh r1, [sp, #0x20] - strh r0, [sp, #0x22] - ldrh r0, [r4, #0x1e] - cmp r0, #0 - ldreqh r0, [sp, #0x22] - orreq r0, r0, #1 - streqh r0, [sp, #0x22] - mov r0, #0x38 - strh r0, [sp, #0x24] - ldrh r1, [sl, #8] - add r0, sp, #0x18 - strh r1, [sp, #0x1c] - ldrh r1, [sl, #0x36] - strh r1, [sp, #0x1e] - bl ElementChecker - ldr sb, [sp, #0x38] - cmp sb, #0 - beq _060159F0 - ldrh r0, [sl, #0x16] - tst r0, #0x8000 - beq _060159F0 - add r0, sb, #6 - bl WL_ReadByte - mov fp, r0 - add r0, sb, #7 - bl WL_ReadByte - ldr r1, _06015F20 ; =0x0480810C - add r0, fp, r0, lsl #8 - strh r0, [r1] -_060159F0: - ldrh r1, [r5] - cmp r1, #0x13 - ldreq r0, [r5, #0x18] - ldreqh r0, [r0, #0x38] - cmpeq r0, #1 - bne _06015A28 - ldrh r0, [sp, #0x22] - and r0, r0, #9 - cmp r0, #9 - bne _06015EF8 - add r1, sp, #0x18 - mov r0, sl - bl RxProbeResFrame - b _06015EF8 -_06015A28: - ldrh r0, [sp, #0x22] - tst r0, #8 - beq _06015EF8 - cmp r1, #0x21 - bne _06015BB0 - bl ClearTimeOut - ldrh r0, [sp, #0x22] - and r0, r0, #0x30 - cmp r0, #0x30 - movne r0, #0xc - strneh r0, [r5, #4] - movne r0, #0xa - strneh r0, [r5, #6] - bne _06015B8C - ldrh r0, [sl, #0x34] - cmp r0, #0x3e8 - movhi r0, #0xc - strhih r0, [r5, #4] - movhi r0, #1 - strhih r0, [r5, #6] - bhi _06015B8C - mov r1, #0 - strh r1, [r5, #4] - ldrh r0, [sp, #0x24] - tst r0, #2 - beq _06015AA4 - ldrh r0, [sp, #0x22] - tst r0, #2 - bne _06015AA4 - ldrh r0, [sp, #0x2a] - bl WSetChannel -_06015AA4: - ldrh r1, [sp, #0x2e] - mov r0, r8 - bl CAM_SetSupRate - ldrh r0, [r4, #0xc] - cmp r0, #2 - bne _06015B34 - ldr sb, [sp, #0x40] - cmp sb, #0 - beq _06015B1C - add r0, sb, #6 - bl WL_ReadByte - mov fp, r0 - add r0, sb, #7 - bl WL_ReadByte - add r0, fp, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #1 - bl WSetActiveZoneTime - ldr r0, [sp, #0x40] - add r0, r0, #8 - bl WL_ReadByte - ldr r1, [sp, #0x40] - mov sb, r0 - add r0, r1, #9 - bl WL_ReadByte - add r1, sb, r0, lsl #8 - ldr r0, _06015F24 ; =0x0380FFF0 - strh r1, [r0] - b _06015B34 -_06015B1C: - ldr r0, _06015F28 ; =0x0000FFFF - mov r1, #1 - bl WSetActiveZoneTime - ldr r0, _06015F24 ; =0x0380FFF0 - mov r1, #0 - strh r1, [r0] -_06015B34: - ldr r0, [sp, #0x3c] - add r0, r0, #3 - bl WL_ReadByte - bl WSetDTIMPeriod - ldr r0, [sp, #0x3c] - add r0, r0, #2 - bl WL_ReadByte - strh r0, [r4, #0x76] - ldrh r0, [sl, #0x34] - bl WSetBeaconPeriod - mov r0, #1 - strh r0, [r4, #0x12] - strh r0, [r4, #0x1a] - ldrh r0, [r4, #0xc] - cmp r0, #2 - ldreq r0, _06015F2C ; =0x04808048 - moveq r1, #3 - streqh r1, [r0] - ldr r1, _06015F30 ; =0x04808038 - ldrh r0, [r1] - orr r0, r0, #1 - strh r0, [r1] -_06015B8C: - ldr r0, [r5, #0x1c] - add r1, sl, #0x1e - add r0, r0, #8 - bl WSetMacAdrs1 - mov r2, #0x25 - mov r0, #2 - mov r1, #1 - strh r2, [r5] - bl AddTask -_06015BB0: - ldrh r0, [r4, #0xc] - cmp r0, #2 - beq _06015BC8 - cmp r0, #3 - beq _06015C80 - b _06015EE0 -_06015BC8: - ldr sb, [sp, #0x40] - cmp sb, #0 - beq _06015C80 - add r0, sb, #6 - bl WL_ReadByte - mov r5, r0 - add r0, sb, #7 - bl WL_ReadByte - add r0, r5, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - bl WSetActiveZoneTime - ldr r0, [sp, #0x40] - add r0, r0, #8 - bl WL_ReadByte - ldr r1, [sp, #0x40] - mov r5, r0 - add r0, r1, #9 - bl WL_ReadByte - ldr r1, _06015F24 ; =0x0380FFF0 - add r0, r5, r0, lsl #8 - strh r0, [r1] - ldr r0, [sp, #0x40] - add r0, r0, #1 - bl WL_ReadByte - sub r0, r0, #8 - strh r0, [r4, #0xa0] - ldrh r2, [r4, #0xa0] - cmp r2, #0 - beq _06015C80 - ldr r0, [sp, #0x40] - ldr r1, [r4, #0x9c] - tst r0, #1 - beq _06015C6C - add r0, r0, #9 - add r2, r2, #2 - bl __VENEER_MIi_CpuCopy16 - mov r0, #1 - strh r0, [r4, #0xa2] - b _06015C80 -_06015C6C: - add r0, r0, #0xa - add r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 - mov r0, #0 - strh r0, [r4, #0xa2] -_06015C80: - mov r1, #0 - mov r0, r8 - strh r1, [r4, #0x80] - bl CAM_UpdateLifeTime - add r1, sl, #0x2c - add r0, sp, #0x10 - ldmia r1, {r2, r3} - stmia r0, {r2, r3} - ldrh r0, [r4, #0x6e] - mov r5, #0 - mov r8, r0, lsl #0xa - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - mov r2, r8 - mov r3, r5 - bl __VENEER__ll_udiv - adds fp, r0, #1 - umull r3, r0, fp, r8 - adc sb, r1, #0 - mla r0, fp, r5, r0 - mla r0, sb, r8, r0 - add r2, sp, #0x10 - str r0, [sp, #0x14] - ldr r1, _06015F34 ; =0x048080F6 - ldrh r0, [r2, #6] - str r3, [sp, #0x10] - strh r0, [r1] - ldrh r0, [r2, #4] - strh r0, [r1, #-2] - ldrh r0, [r2, #2] - strh r0, [r1, #-4] - ldrh r0, [r2] - orr r0, r0, #1 - strh r0, [r1, #-6] - ldrh r0, [r4, #0xc] - cmp r0, #2 - bne _06015DE8 - ldrh r0, [r4, #0x1a] - cmp r0, #0 - beq _06015DE8 - ldr r1, [sp, #0x10] - ldr r0, [sp, #0x14] - subs r1, r1, r8 - sbc r0, r0, r5 - str r1, [sp, #0x10] - str r0, [sp, #0x14] - bl __VENEER_OS_DisableInterrupts - ldr r1, _06015F38 ; =0x048080F8 - ldrh ip, [r1] - ldrh fp, [r1, #2] - ldrh sb, [r1, #4] - ldrh r8, [r1, #6] - ldrh r5, [r1] - ldrh r3, [r1, #2] - ldrh r2, [r1, #4] - ldrh r1, [r1, #6] - strh ip, [sp, #8] - strh r5, [sp] - strh fp, [sp, #0xa] - strh sb, [sp, #0xc] - strh r8, [sp, #0xe] - strh r3, [sp, #2] - strh r2, [sp, #4] - strh r1, [sp, #6] - bl __VENEER_OS_RestoreInterrupts - ldrh r1, [sp, #8] - ldrh r0, [sp] - cmp r1, r0 - bhs _06015DAC - ldr r2, [sp, #8] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0xc] - subs r2, r2, r0 - ldr r0, [sp, #0x14] - b _06015DC0 -_06015DAC: - ldr r2, [sp] - ldr r0, [sp, #0x10] - ldr r1, [sp, #4] - subs r2, r2, r0 - ldr r0, [sp, #0x14] -_06015DC0: - sbc r0, r1, r0 - mov r2, r2, lsr #0xa - orr r2, r2, r0, lsl #22 - ldrh r1, [r6, #0x20] - ldr r0, _06015F3C ; =0x04808134 - cmp r2, r1 - sublo r1, r1, r2 - strloh r1, [r0] - movhs r1, #0 - strhsh r1, [r0] -_06015DE8: - ldrh r0, [r4, #8] - cmp r0, #0x40 - bne _06015EE0 - ldr r1, [sp, #0x3c] - cmp r1, #0 - beq _06015EE0 - ldrh r0, [r4, #0xe] - cmp r0, #1 - bne _06015EE0 - add r0, r1, #2 - bl WL_ReadByte - ldrh r1, [r4, #0x76] - cmp r1, r0 - strneh r0, [r4, #0x76] - mov r1, #0 - strh r1, [r4, #0x8e] - cmp r0, #0 - bne _06015E4C - ldr r0, [sp, #0x3c] - add r0, r0, #4 - bl WL_ReadByte - tst r0, #1 - ldrneh r0, [r4, #0x8e] - orrne r0, r0, #1 - strneh r0, [r4, #0x8e] -_06015E4C: - ldr r0, [sp, #0x3c] - add r0, r0, #4 - bl WL_ReadByte - ldr r1, [sp, #0x3c] - and r8, r0, #0xfe - add r0, r1, #1 - mov r5, r8, lsl #3 - bl WL_ReadByte - ldrh r1, [r4, #0x6a] - add r0, r8, r0 - cmp r1, r8, lsl #3 - sub r0, r0, #3 - blo _06015EBC - cmp r1, r0, lsl #3 - bhi _06015EBC - ldr r0, [sp, #0x3c] - sub r5, r1, r5 - add r0, r0, #5 - add r0, r0, r5, lsr #3 - bl WL_ReadByte - and r1, r5, #7 - mov r2, #1 - tst r0, r2, lsl r1 - beq _06015EBC - ldrh r0, [r4, #0x8e] - orr r0, r0, #2 - strh r0, [r4, #0x8e] - bl TxPsPollFrame -_06015EBC: - ldrh r0, [r7, #0x20] - cmp r0, #0 - ldreqh r0, [r7, #0x2c] - cmpeq r0, #0 - ldreqh r0, [r4, #0x8e] - cmpeq r0, #0 - bne _06015EE0 - mov r0, #1 - bl WSetPowerState -_06015EE0: - ldrh r0, [r6, #0x1e] - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1f - beq _06015EF8 - mov r0, sl - bl MLME_IssueBeaconRecvIndication -_06015EF8: - ldr r2, [sp, #0x34] - cmp r2, #0 - beq _06015F10 - ldrh r0, [sp, #0x2a] - mov r1, sl - bl UpdateApList -_06015F10: - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06015F1C: .word 0x0380FFF4 -_06015F20: .word 0x0480810C -_06015F24: .word 0x0380FFF0 -_06015F28: .word 0x0000FFFF -_06015F2C: .word 0x04808048 -_06015F30: .word 0x04808038 -_06015F34: .word 0x048080F6 -_06015F38: .word 0x048080F8 -_06015F3C: .word 0x04808134 - arm_func_end RxBeaconFrame - - arm_func_start RxDisAssFrame -RxDisAssFrame: ; 0x06015F40 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0601601C ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - ldrh r5, [r4, #2] - add r1, r0, #0x344 - ldrh r0, [r1, #0xc] - cmp r0, #1 - beq _06015F74 - cmp r0, #2 - cmpne r0, #3 - beq _06015FDC - b _06016014 -_06015F74: - mov r0, r5 - bl CAM_GetStaState - cmp r0, #0x40 - bne _06015FAC - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x30 - bl CAM_SetStaState - ldrh r1, [r4, #0x2c] - add r0, r4, #0x1e - bl MLME_IssueDisAssIndication - mov r0, r5 - bl DeleteTxFrames - b _06016014 -_06015FAC: - cmp r0, #0x30 - add r0, r4, #0x1e - mov r1, #7 - bne _06015FC4 - bl MakeDisAssFrame - b _06015FCC -_06015FC4: - mov r2, #1 - bl MakeDeAuthFrame -_06015FCC: - cmp r0, #0 - beq _06016014 - bl TxManCtrlFrame - b _06016014 -_06015FDC: - ldrh r0, [r1, #8] - cmp r0, #0x40 - bne _06016014 - add r0, r4, #0x1e - add r1, r1, #0x82 - bl MatchMacAdrs - cmp r0, #0 - beq _06016014 - mov r0, #0x30 - bl WSetStaState - bl WClearAids - ldrh r1, [r4, #0x2c] - add r0, r4, #0x1e - bl MLME_IssueDisAssIndication -_06016014: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0601601C: .word 0x0380FFF4 - arm_func_end RxDisAssFrame - - arm_func_start RxAssReqFrame -RxAssReqFrame: ; 0x06016020 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x2c - ldr r1, _060161E8 ; =0x0380FFF4 - mov r7, r0 - ldr r0, [r1] - ldrh r5, [r7, #6] - add r4, r0, #0x31c - cmp r5, #4 - bls _060161DC - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #1 - bne _060161DC - add r0, r7, #0x1e - mov r1, #0x10 - bl IsExistManFrame - cmp r0, #0 - bne _060161DC - ldrh r6, [r7, #2] - cmp r6, #0 - beq _06016084 - mov r0, r6 - bl CAM_GetStaState - cmp r0, #0x30 - bhs _060160B8 -_06016084: - add r0, r7, #0x1e - mov r1, #0xc0 - bl IsExistManFrame - cmp r0, #0 - bne _060161DC - add r0, r7, #0x1e - mov r1, #6 - mov r2, #1 - bl MakeDeAuthFrame - cmp r0, #0 - beq _060161DC - bl TxManCtrlFrame - b _060161DC -_060160B8: - mov r0, r6 - bl CAM_GetStaState - cmp r0, #0x40 - mov r0, r6 - bne _060160E4 - mov r1, #0x30 - bl CAM_SetStaState - add r0, r7, #0x1e - mov r1, #1 - bl MLME_IssueDisAssIndication - b _060160F0 -_060160E4: - bl CAM_GetAID - cmp r0, #0 - bne _060161DC -_060160F0: - add r1, sp, #0 - mov r0, #0 - mov r2, #0x2c - bl __VENEER_MIi_CpuClear32 - add r2, r7, #0x30 - sub r1, r5, #4 - str r2, [sp] - strh r1, [sp, #8] - add r0, sp, #0 - bl ElementChecker - ldrh r1, [r7, #0x2c] - ldr r0, _060161EC ; =0x0000FFC2 - tst r1, r0 - bne _06016188 - mov r0, r1, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _06016188 - ldrh r2, [r4, #0x18] - cmp r2, #0 - moveq r0, r1, lsl #0x1b - moveq r0, r0, lsr #0x1f - cmpeq r0, #1 - beq _06016188 - cmp r2, #0 - beq _06016164 - ldrh r0, [r7, #0x2c] - mov r0, r0, lsl #0x1b - movs r0, r0, lsr #0x1f - beq _06016188 -_06016164: - ldrh r0, [r4, #0x1e] - mov r0, r0, lsl #0x1d - mov r0, r0, lsr #0x1f - cmp r0, #1 - bne _06016190 - ldrh r0, [r7, #0x2c] - mov r0, r0, lsl #0x1a - movs r0, r0, lsr #0x1f - bne _06016190 -_06016188: - mov r1, #0xa - b _060161C4 -_06016190: - mov r0, r6 - bl CAM_SetCapaInfo - ldrh r0, [sp, #0xa] - tst r0, #1 - moveq r1, #1 - beq _060161C4 - tst r0, #4 - moveq r1, #0x12 - beq _060161C4 - ldrh r1, [sp, #0x16] - mov r0, r6 - bl CAM_SetSupRate - mov r1, #0 -_060161C4: - ldr r2, [sp, #0x1c] - mov r0, r6 - bl MakeAssResFrame - cmp r0, #0 - beq _060161DC - bl TxManCtrlFrame -_060161DC: - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_060161E8: .word 0x0380FFF4 -_060161EC: .word 0x0000FFC2 - arm_func_end RxAssReqFrame - - arm_func_start RxProbeReqFrame -RxProbeReqFrame: ; 0x060161F0 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x2c - mov r4, r0 - add r0, r4, #0x1e - mov r1, #0x50 - bl IsExistManFrame - cmp r0, #0 - bne _06016294 - ldrh r0, [r4, #0x24] - tst r0, #1 - bne _06016228 - ldrh r0, [r4, #8] - tst r0, #0x8000 - beq _06016294 -_06016228: - add r1, sp, #0 - mov r0, #0 - mov r2, #0x2c - bl __VENEER_MIi_CpuClear32 - add r0, r4, #0x2c - str r0, [sp] - ldrh r1, [r4, #6] - ldr r0, _060162A0 ; =0x0380FFF4 - strh r1, [sp, #8] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x3a] - mov r0, r0, lsl #0x1e - movs r0, r0, lsr #0x1f - moveq r0, #0x800 - streqh r0, [sp, #0xc] - add r0, sp, #0 - bl ElementChecker - ldrh r0, [sp, #0xa] - and r0, r0, #1 - cmp r0, #1 - bne _06016294 - add r0, r4, #0x1e - bl MakeProbeResFrame - cmp r0, #0 - beq _06016294 - bl TxManCtrlFrame -_06016294: - add sp, sp, #0x2c - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_060162A0: .word 0x0380FFF4 - arm_func_end RxProbeReqFrame - - arm_func_start RxProbeResFrame -RxProbeResFrame: ; 0x060162A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - ldr r2, _0601666C ; =0x0380FFF4 - mov r7, r0 - ldr r2, [r2] - mov sl, r1 - add r0, r2, #0x400 - ldrh r1, [r0, #4] - add r0, r2, #4 - cmp r1, #0x13 - add r4, r0, #0x400 - bne _06016660 - ldr r0, [r4, #0x18] - ldr r5, [r4, #0x1c] - add r8, r0, #0x4e - mov r6, #0 - b _06016314 -_060162E8: - mov r0, r8 - add r1, r7, #0x24 - bl MatchMacAdrs - cmp r0, #0 - ldrneh r1, [r5, #6] - movne r0, #1 - orrne r0, r1, r0, lsl r6 - strneh r0, [r5, #6] - bne _06016660 - add r8, r8, #6 - add r6, r6, #1 -_06016314: - ldr r0, [r4, #0x18] - ldrh r0, [r0, #0x4c] - cmp r6, r0 - blo _060162E8 - add r6, r5, #0xa - mov r8, #0 - b _06016350 -_06016330: - add r0, r7, #0x24 - add r1, r6, #4 - bl MatchMacAdrs - cmp r0, #0 - bne _06016660 - ldrh r0, [r6] - add r8, r8, #1 - add r6, r6, r0, lsl #1 -_06016350: - ldrh r0, [r5, #8] - cmp r8, r0 - blo _06016330 - mov r1, r6 - mov r0, #0 - mov r2, #0x40 - bl __VENEER_MIi_CpuClear16 - ldrh r8, [r7, #6] - cmp r8, #0xc - bls _06016660 - cmp sl, #0 - bne _060163CC - add r1, sp, #4 - mov r0, #0 - mov r2, #0x2c - bl __VENEER_MIi_CpuClear32 - add r3, r7, #0x38 - sub r2, r8, #0xc - mov r0, #0x38 - strh r0, [sp, #0x10] - mov r1, #3 - str r3, [sp, #4] - strh r2, [sp, #0xc] - strh r1, [sp, #0xe] - ldrh r1, [r7, #8] - add r0, sp, #4 - strh r1, [sp, #8] - ldrh r1, [r7, #0x36] - strh r1, [sp, #0xa] - bl ElementChecker - add sl, sp, #4 -_060163CC: - ldr r0, [sl, #0x28] - cmp r0, #0 - ldreqh r0, [sl, #0x1a] - beq _060163F0 - add r0, r0, #1 - bl WL_ReadByte - sub r0, r0, #8 - strh r0, [r6, #0x3c] - ldrh r0, [r6, #0x3c] -_060163F0: - add r0, r0, #0x41 - mov r0, r0, lsr #1 - strh r0, [r6] - ldrh r0, [sl, #0xa] - and r0, r0, #1 - cmp r0, #1 - bne _06016654 - ldr r0, _0601666C ; =0x0380FFF4 - ldrh r1, [r6] - ldr r0, [r0] - add r0, r0, #0x400 - ldrh r0, [r0, #8] - cmp r0, r1 - blo _06016654 - ldrh r1, [r7, #0x36] - add r0, r6, #4 - strh r1, [r6, #0x2c] - add r1, r7, #0x24 - bl WSetMacAdrs1 - ldrh r0, [r7, #0x34] - strh r0, [r6, #0x32] - ldrh r0, [r7, #0x12] - and r0, r0, #0xff - strh r0, [r6, #2] - ldr r0, [sl, #0x28] - cmp r0, #0 - beq _06016498 - mov r7, #0 - add r8, r6, #0x40 - b _06016488 -_06016468: - ldr r0, [sl, #0x28] - add r0, r0, #0xa - add r0, r0, r7 - bl WL_ReadByte - mov r1, r0 - add r0, r8, r7 - bl WL_WriteByte - add r7, r7, #1 -_06016488: - ldrh r0, [r6, #0x3c] - cmp r7, r0 - blo _06016468 - b _0601653C -_06016498: - ldrh r0, [sl, #0x18] - strh r0, [r6, #0x3e] - ldrh r0, [sl, #0x18] - cmp r0, #0 - beq _0601653C - add r7, r7, #0x38 - add fp, r6, #0x40 - mov r8, #0 - b _06016530 -_060164BC: - mov r0, r7 - bl WL_ReadByte - mov sb, r0 - add r0, r7, #1 - bl WL_ReadByte - cmp sb, #6 - bls _06016528 - ldr r1, [sl, #0x28] - cmp r7, r1 - beq _06016528 - add r0, r0, #2 - mov sb, #0 - str r0, [sp] - b _06016514 -_060164F4: - mov r0, r7 - bl WL_ReadByte - mov r1, r0 - mov r0, fp - bl WL_WriteByte - add fp, fp, #1 - add r7, r7, #1 - add sb, sb, #1 -_06016514: - ldr r0, [sp] - cmp sb, r0 - blo _060164F4 - add r8, r8, #1 - b _06016530 -_06016528: - add r0, r0, #2 - add r7, r7, r0 -_06016530: - ldrh r0, [sl, #0x18] - cmp r8, r0 - blo _060164BC -_0601653C: - ldr r0, [sl, #0x1c] - cmp r0, #0 - beq _06016590 - add r0, r0, #1 - bl WL_ReadByte - strh r0, [r6, #0xa] - mov r7, #0 - add r8, r6, #0xc - b _06016580 -_06016560: - ldr r0, [sl, #0x1c] - add r0, r0, #2 - add r0, r0, r7 - bl WL_ReadByte - mov r1, r0 - add r0, r8, r7 - bl WL_WriteByte - add r7, r7, #1 -_06016580: - ldrh r0, [r6, #0xa] - cmp r7, r0 - blo _06016560 - b _060165B8 -_06016590: - mov sb, #0 - strh sb, [r6, #0xa] - add r8, r6, #0xc - mov r7, sb -_060165A0: - mov r1, r7 - add r0, r8, sb - bl WL_WriteByte - add sb, sb, #1 - cmp sb, #0x20 - blo _060165A0 -_060165B8: - ldrh r0, [sl, #0x14] - strh r0, [r6, #0x2e] - ldrh r0, [sl, #0x16] - strh r0, [r6, #0x30] - ldrh r0, [sl, #0x12] - strh r0, [r6, #0x36] - ldr r0, [sl, #0x20] - cmp r0, #0 - beq _060165E8 - add r0, r0, #3 - bl WL_ReadByte - strh r0, [r6, #0x38] -_060165E8: - ldr r0, [sl, #0x24] - cmp r0, #0 - beq _06016600 - add r0, r0, #3 - bl WL_ReadByte - strh r0, [r6, #0x34] -_06016600: - ldrh r1, [r5, #2] - ldrh r0, [r6] - add r0, r1, r0 - strh r0, [r5, #2] - ldrh r0, [r5, #8] - add r0, r0, #1 - strh r0, [r5, #8] - ldrh r1, [r4, #4] - ldrh r0, [r6] - sub r0, r1, r0 - strh r0, [r4, #4] - ldrh r0, [r4, #4] - cmp r0, #0x20 - bhs _06016660 - bl ClearTimeOut - mov r2, #0x15 - mov r0, #2 - mov r1, #0 - strh r2, [r4] - bl AddTask - b _06016660 -_06016654: - ldr r1, _06016670 ; =NULL_ADRS - add r0, r6, #4 - bl WSetMacAdrs1 -_06016660: - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0601666C: .word 0x0380FFF4 -_06016670: .word NULL_ADRS - arm_func_end RxProbeResFrame - - arm_func_start RxAuthFrame -RxAuthFrame: ; 0x06016674 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _06016C00 ; =0x0380FFF4 - mov sl, r0 - ldr r2, [r1] - add r0, r2, #0x600 - ldrh r1, [r0, #0x90] - add r0, r2, #4 - tst r1, #8 - add r4, r2, #0x344 - add sb, r0, #0x400 - beq _06016714 - ldr r1, _06016C04 ; =0x048080B0 - add r0, r2, #0x2c - ldrh r2, [r1] - add r1, r0, #0x400 - tst r2, #1 - ldrneh r0, [r1] - cmpne r0, #0 - bne _06016714 - tst r2, #4 - ldrneh r0, [r1, #0x14] - cmpne r0, #0 - bne _06016714 - tst r2, #8 - ldrneh r0, [r1, #0x28] - cmpne r0, #0 - bne _06016714 - ldr r0, _06016C08 ; =0x0480819C - ldrh r0, [r0] - tst r0, #1 - bne _06016714 - ldr r2, _06016C0C ; =0x04808032 - mov r3, #0 - strh r3, [r2] - mov r1, #0x8000 - ldr r0, _06016C00 ; =0x0380FFF4 - strh r1, [r2] - ldr r0, [r0] - add r0, r0, #0x400 - strh r3, [r0, #0xde] -_06016714: - add r0, sl, #0x1e - mov r1, #0xb0 - bl IsExistManFrame - cmp r0, #0 - bne _06016BF8 - ldrh r0, [sl, #0x2e] - ldrh r8, [sl, #2] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - cmp r8, #0 - mov r5, #0 - mov r6, r0, lsr #0x10 - moveq r7, #0x13 - moveq r5, #1 - beq _06016BBC - ldrh r0, [r4, #0xc] - cmp r0, #1 - bne _060167C4 - mov r0, r8 - bl CAM_GetStaState - cmp r0, #0x20 - bls _06016788 - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x20 - bl CAM_SetStaState - add r0, sl, #0x1e - mov r1, #1 - bl MLME_IssueDeAuthIndication -_06016788: - ldrh r0, [sl, #8] - tst r0, #0x400 - beq _060167C4 - mov r0, r8 - bl CAM_GetAuthSeed - cmp r0, #0 - beq _060167C4 - mov r5, #1 - mov r0, r8 - mov r1, #0 - strh r5, [sl, #0x2c] - mov r7, #0xf - mov r6, #4 - bl CAM_SetAuthSeed - b _06016BBC -_060167C4: - ldrh r0, [sl, #0x2c] - cmp r0, #0 - beq _060167DC - cmp r0, #1 - beq _060168B8 - b _06016BAC -_060167DC: - ldrh r1, [r4, #0xc] - cmp r1, #1 - ldreq r0, _06016C00 ; =0x0380FFF4 - ldreq r0, [r0] - addeq r0, r0, #0x300 - ldreqh r0, [r0, #0x32] - cmpeq r0, #1 - moveq r7, #0xd - moveq r5, #1 - beq _06016BBC - cmp r1, #1 - bne _06016828 - ldrh r0, [sl, #0x2e] - mov r5, #1 - cmp r0, #1 - moveq r7, #0 - movne r7, #0xe - movne r6, #2 - b _06016BBC -_06016828: - beq _06016BBC - ldrh r0, [sl, #0x2e] - cmp r0, #2 - ldreq r1, [sb, #0x18] - ldreqh r0, [r1, #0x16] - cmpeq r0, #0 - bne _06016BBC - add r0, r1, #0x10 - add r1, sl, #0x1e - bl MatchMacAdrs - cmp r0, #0 - beq _06016BBC - ldrh r0, [sb] - cmp r0, #0x31 - bne _06016BBC - bl ClearTimeOut - ldrh r0, [sl, #0x30] - cmp r0, #0 - ldrne r0, [sb, #0x1c] - movne r1, #0xc - strneh r1, [r0, #4] - ldrneh r1, [sl, #0x30] - bne _06016898 - mov r0, #0x30 - bl WSetStaState - ldr r0, [sb, #0x1c] - mov r1, #0 - strh r1, [r0, #4] -_06016898: - ldr r0, [sb, #0x1c] - mov r2, #0x35 - strh r1, [r0, #6] - mov r0, #2 - mov r1, r0 - strh r2, [sb] - bl AddTask - b _06016BBC -_060168B8: - ldrh r0, [r4, #0xc] - cmp r0, #1 - bne _06016A58 - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x20 - bl CAM_SetStaState - ldrh r0, [sl, #0x2e] - cmp r0, #1 - bne _06016974 - add r0, sl, #0x1e - mov r1, #0x80 - mov r2, #1 - bl MakeAuthFrame - movs r4, r0 - beq _06016BBC - ldrh r1, [sl, #0x2c] - ldr r0, _06016C10 ; =0x04808044 - strh r1, [r4, #0x2c] - strh r6, [r4, #0x2e] - mov r1, #0 - strh r1, [r4, #0x30] - ldrh r1, [r0] - ldrh r0, [r0] - add r0, r1, r0, lsl #8 - mov r0, r0, lsl #0x10 - movs sb, r0, lsr #0x10 - moveq sb, #1 - mov r0, sb - bl RND_seed - mov r0, r8 - mov r1, sb - bl CAM_SetAuthSeed - add r0, r4, #0x33 - add sb, r4, #0x34 - bl WL_ReadByte - mov fp, r0 - mov r8, #0 - b _06016960 -_06016954: - bl RND_rand - strh r0, [sb], #2 - add r8, r8, #2 -_06016960: - cmp r8, fp - blo _06016954 - mov r0, r4 - bl TxManCtrlFrame - b _06016BBC -_06016974: - cmp r0, #3 - mov r0, r8 - bne _06016A40 - bl CAM_GetStaState - cmp r0, #0x20 - bne _0601699C - mov r0, r8 - bl CAM_GetAuthSeed - cmp r0, #0 - bne _060169A8 -_0601699C: - mov r7, #1 - mov r5, r7 - b _06016BBC -_060169A8: - ldrh r0, [sl, #2] - bl CAM_GetAuthSeed - bl RND_seed - add r0, sl, #0x33 - add r7, sl, #0x34 - bl WL_ReadByte - mov r4, r0 - mov r5, #0 - b _060169E4 -_060169CC: - bl RND_rand - ldrh r1, [r7], #2 - cmp r1, r0 - movne r0, #0 - bne _06016A14 - add r5, r5, #1 -_060169E4: - cmp r5, r4, lsr #1 - blo _060169CC - tst r4, #1 - beq _06016A10 - bl RND_rand - ldrh r1, [r7] - and r0, r0, #0xff - and r1, r1, #0xff - cmp r1, r0 - movne r0, #0 - bne _06016A14 -_06016A10: - mov r0, #1 -_06016A14: - cmp r0, #0 - mov r0, r8 - mov r1, #0 - mov r5, #1 - bne _06016A34 - mov r7, #0xf - bl CAM_SetAuthSeed - b _06016BBC -_06016A34: - bl CAM_SetAuthSeed - mov r7, #0 - b _06016BBC -_06016A40: - mov r1, #0 - bl CAM_SetAuthSeed - mov r7, #0xe - mov r6, #2 - mov r5, #1 - b _06016BBC -_06016A58: - ldr r1, [sb, #0x18] - ldrh r0, [r1, #0x16] - cmp r0, #1 - bne _06016BBC - add r0, r1, #0x10 - add r1, sl, #0x1e - bl MatchMacAdrs - cmp r0, #0 - beq _06016BBC - ldrh r0, [sl, #0x2e] - cmp r0, #2 - bne _06016B48 - ldrh r0, [sb] - cmp r0, #0x31 - bne _06016BBC - ldrh r0, [sl, #0x30] - cmp r0, #0 - beq _06016ADC - bl ClearTimeOut - mov r0, #0x35 - strh r0, [sb] - ldr r0, [sb, #0x1c] - mov r1, #0xc - strh r1, [r0, #4] - mov r0, #2 - ldrh r3, [sl, #0x30] - ldr r2, [sb, #0x1c] - mov r1, r0 - strh r3, [r2, #6] - bl AddTask - mov r0, #0x20 - bl WSetStaState - b _06016BBC -_06016ADC: - mov r1, #0x33 - add r0, sl, #0x33 - strh r1, [sb] - bl WL_ReadByte - mov r1, r0 - add r0, sl, #0x1e - mov r2, #1 - bl MakeAuthFrame - movs r4, r0 - beq _06016BBC - ldrh r1, [r4, #0x14] - add r0, sl, #0x2c - orr r1, r1, #0x4000 - strh r1, [r4, #0x14] - ldrh r2, [sl, #6] - add r1, r4, #0x2c - add r2, r2, #1 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [sl, #0x2c] - mov r0, #3 - strh r1, [r4, #0x2c] - strh r0, [r4, #0x2e] - mov r1, #0 - mov r0, r4 - strh r1, [r4, #0x30] - bl TxManCtrlFrame - b _06016BBC -_06016B48: - cmp r0, #4 - ldreqh r0, [sb] - cmpeq r0, #0x33 - bne _06016BBC - bl ClearTimeOut - ldrh r0, [sl, #0x30] - cmp r0, #0 - ldrne r0, [sb, #0x1c] - movne r1, #0xc - strneh r1, [r0, #4] - ldrneh r1, [sl, #0x30] - bne _06016B8C - mov r0, #0x30 - bl WSetStaState - ldr r0, [sb, #0x1c] - mov r1, #0 - strh r1, [r0, #4] -_06016B8C: - ldr r0, [sb, #0x1c] - mov r2, #0x35 - strh r1, [r0, #6] - mov r0, #2 - mov r1, r0 - strh r2, [sb] - bl AddTask - b _06016BBC -_06016BAC: - ldrh r0, [r4, #0xc] - cmp r0, #1 - moveq r7, #0xd - moveq r5, #1 -_06016BBC: - cmp r5, #0 - beq _06016BF8 - cmp r7, #0 - movne r2, #1 - moveq r2, #0 - add r0, sl, #0x1e - mov r1, #0 - bl MakeAuthFrame - cmp r0, #0 - beq _06016BF8 - ldrh r1, [sl, #0x2c] - strh r1, [r0, #0x2c] - strh r6, [r0, #0x2e] - strh r7, [r0, #0x30] - bl TxManCtrlFrame -_06016BF8: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06016C00: .word 0x0380FFF4 -_06016C04: .word 0x048080B0 -_06016C08: .word 0x0480819C -_06016C0C: .word 0x04808032 -_06016C10: .word 0x04808044 - arm_func_end RxAuthFrame - - arm_func_start RxDeAuthFrame -RxDeAuthFrame: ; 0x06016C14 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _06016CC0 ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - ldrh r5, [r4, #2] - add r1, r0, #0x344 - ldrh r0, [r1, #0xc] - cmp r0, #1 - beq _06016C48 - cmp r0, #2 - cmpne r0, #3 - beq _06016C80 - b _06016CB8 -_06016C48: - mov r0, r5 - bl CAM_GetStaState - cmp r0, #0x20 - bls _06016CB8 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0x20 - bl CAM_SetStaState - ldrh r1, [r4, #0x2c] - add r0, r4, #0x1e - bl MLME_IssueDeAuthIndication - mov r0, r5 - bl DeleteTxFrames - b _06016CB8 -_06016C80: - ldrh r0, [r1, #8] - cmp r0, #0x20 - bls _06016CB8 - add r0, r4, #0x1e - add r1, r1, #0x82 - bl MatchMacAdrs - cmp r0, #0 - beq _06016CB8 - mov r0, #0x20 - bl WSetStaState - bl WClearAids - ldrh r1, [r4, #0x2c] - add r0, r4, #0x1e - bl MLME_IssueDeAuthIndication -_06016CB8: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_06016CC0: .word 0x0380FFF4 - arm_func_end RxDeAuthFrame - - arm_func_start ElementChecker -ElementChecker: ; 0x06016CC4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _06016FE4 ; =0x0380FFF4 - mov sb, r0 - ldr r0, [r1] - ldr r5, [sb] - add r4, r0, #0x344 - ldrh r0, [r4, #0x7a] - ldr sl, _06016FE4 ; =0x0380FFF4 - strh r0, [sb, #0x12] - ldrh r0, [sb, #0xc] - tst r0, #0x800 - ldrneh r0, [sb, #0xa] - orrne r0, r0, #1 - strneh r0, [sb, #0xa] - ldrh r6, [sb, #8] - b _06016F58 -_06016D04: - mov r0, r5 - bl WL_ReadByte - mov r8, r0 - add r0, r5, #1 - add r5, r5, #2 - bl WL_ReadByte - mov r7, r0 - cmp r8, #6 - addls pc, pc, r8, lsl #2 - b _06016D48 -_06016D2C: ; jump table - b _06016D54 ; case 0 - b _06016DC0 ; case 1 - b _06016F4C ; case 2 - b _06016E24 ; case 3 - b _06016E90 ; case 4 - b _06016E70 ; case 5 - b _06016F4C ; case 6 -_06016D48: - cmp r8, #0xdd - beq _06016EB0 - b _06016F30 -_06016D54: - cmp r7, #0x20 - bhi _06016F4C - ldrh r1, [sb, #0xc] - sub r0, r5, #2 - orr r1, r1, #1 - strh r1, [sb, #0xc] - str r0, [sb, #0x1c] - cmp r7, #0 - bne _06016D90 - ldrh r0, [sb, #0xc] - tst r0, #0x800 - ldrneh r0, [sb, #0xa] - orrne r0, r0, #1 - strneh r0, [sb, #0xa] - bne _06016F4C -_06016D90: - ldrh r1, [sb, #0xa] - mov r0, r7, lsl #0x10 - bic r2, r1, #1 - strh r2, [sb, #0xa] - mov r1, r5 - mov r0, r0, lsr #0x10 - bl WCheckSSID - cmp r0, #0 - ldrneh r0, [sb, #0xa] - orrne r0, r0, #1 - strneh r0, [sb, #0xa] - b _06016F4C -_06016DC0: - cmp r7, #1 - blo _06016F4C - ldrh r1, [sb, #0xc] - sub r0, r5, #2 - orr r1, r1, #4 - strh r1, [sb, #0xc] - add r1, sb, #0x14 - bl WElement2RateSet - ldrh r0, [r4, #0x60] - ldrh r1, [r4, #0x62] - ldrh r2, [sb, #0x14] - orr r1, r0, r1 - mvn r1, r1 - tst r2, r1 - ldreqh r1, [sb, #0x16] - orreq r1, r2, r1 - andeq r1, r0, r1 - cmpeq r0, r1 - ldreqh r0, [sb, #0xa] - orreq r0, r0, #4 - streqh r0, [sb, #0xa] - ldrneh r0, [sb, #0xa] - bicne r0, r0, #4 - strneh r0, [sb, #0xa] - b _06016F4C -_06016E24: - cmp r7, #1 - blo _06016F4C - ldrh r1, [sb, #0xc] - mov r0, r5 - orr r1, r1, #2 - strh r1, [sb, #0xc] - bl WL_ReadByte - strh r0, [sb, #0x12] - ldr r0, [sl] - ldrh r1, [sb, #0x12] - ldr r0, [r0, #0x41c] - ldrh r0, [r0, #0x4a] - cmp r1, r0 - ldrh r0, [sb, #0xa] - orreq r0, r0, #2 - streqh r0, [sb, #0xa] - bicne r0, r0, #2 - strneh r0, [sb, #0xa] - b _06016F4C -_06016E70: - cmp r7, #3 - blo _06016F4C - ldrh r1, [sb, #0xc] - sub r0, r5, #2 - orr r1, r1, #0x100 - strh r1, [sb, #0xc] - str r0, [sb, #0x24] - b _06016F4C -_06016E90: - cmp r7, #6 - blo _06016F4C - ldrh r1, [sb, #0xc] - sub r0, r5, #2 - orr r1, r1, #0x200 - strh r1, [sb, #0xc] - str r0, [sb, #0x20] - b _06016F4C -_06016EB0: - cmp r7, #8 - blo _06016EF8 - mov r0, r5 - bl WL_ReadByte - cmp r0, #0 - bne _06016EF8 - add r0, r5, #1 - bl WL_ReadByte - cmp r0, #9 - bne _06016EF8 - add r0, r5, #2 - bl WL_ReadByte - cmp r0, #0xbf - bne _06016EF8 - add r0, r5, #3 - bl WL_ReadByte - cmp r0, #0 - beq _06016F18 -_06016EF8: - ldrh r1, [sb, #0x18] - add r0, r7, #2 - add r1, r1, #1 - strh r1, [sb, #0x18] - ldrh r1, [sb, #0x1a] - add r0, r1, r0 - strh r0, [sb, #0x1a] - b _06016F4C -_06016F18: - ldrh r1, [sb, #0xc] - sub r0, r5, #2 - orr r1, r1, #0x400 - strh r1, [sb, #0xc] - str r0, [sb, #0x28] - b _06016F4C -_06016F30: - ldrh r1, [sb, #0x18] - add r0, r7, #2 - add r1, r1, #1 - strh r1, [sb, #0x18] - ldrh r1, [sb, #0x1a] - add r0, r1, r0 - strh r0, [sb, #0x1a] -_06016F4C: - add r0, r7, #2 - add r5, r5, r7 - sub r6, r6, r0 -_06016F58: - cmp r6, #0 - bgt _06016D04 - ldrh r0, [sb, #0xc] - tst r0, #8 - beq _06016F90 - ldrh r0, [r4, #0x64] - tst r0, #1 - bne _06016F84 - ldrh r0, [sb, #4] - tst r0, #0x8000 - beq _06016F90 -_06016F84: - ldrh r0, [sb, #0xa] - orr r0, r0, #8 - strh r0, [sb, #0xa] -_06016F90: - ldrh r0, [sb, #0xc] - tst r0, #0x30 - beq _06016FDC - ldrh r1, [sb, #6] - ldrh r0, [r4, #0x7c] - and r1, r1, #3 - and r0, r0, #3 - cmp r1, r0 - ldreqh r0, [sb, #0xa] - orreq r0, r0, #0x10 - streqh r0, [sb, #0xa] - ldrh r1, [sb, #6] - ldrh r0, [r4, #0x7c] - and r1, r1, #0x10 - and r0, r0, #0x10 - cmp r1, r0 - ldreqh r0, [sb, #0xa] - orreq r0, r0, #0x20 - streqh r0, [sb, #0xa] -_06016FDC: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_06016FE4: .word 0x0380FFF4 - arm_func_end ElementChecker - - arm_func_start RxManCtrlTask -RxManCtrlTask: ; 0x06016FE8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - ldr r0, _06017690 ; =0x0380FFF4 - mvn r1, #0 - ldr r4, [r0] - add sl, r4, #0x17c - ldr r6, [sl, #0x60] - add r0, r4, #0x300 - ldrh r5, [r0, #0x50] - cmp r6, r1 - beq _06017684 - ldrh r0, [r6, #0x28] - tst r0, #1 - ldrne r0, [r4, #0x568] - addne r0, r0, #1 - strne r0, [r4, #0x568] - ldreq r0, [r4, #0x564] - addeq r0, r0, #1 - streq r0, [r4, #0x564] - ldrh r0, [r6, #0x18] - ldr r2, [r4, #0x560] - and r1, r0, #0xf0 - mov r0, r1, asr #3 - add r0, r1, r0, lsr #28 - mov r0, r0, asr #4 - sub r0, r0, #1 - add r0, r2, r0 - str r0, [r4, #0x560] - ldrh r1, [r6, #0x24] - add r0, r6, #0x2e - mov r2, r1, lsl #0x1c - mov r1, r1, lsl #0x18 - mov r8, r2, lsr #0x1e - mov sb, r1, lsr #0x1c - bl CAM_SearchAdd - mov r7, r0 - strh r7, [r6, #0x12] - cmp r7, #0xff - bne _060170D8 - mov r0, #0 - strh r0, [r6, #0x12] - cmp r5, #1 - bne _06017660 - cmp r8, #0 - bne _06017660 - cmp sb, #0 - beq _060170CC - cmp sb, #4 - beq _060170C0 - cmp sb, #0xb - bne _06017660 - add r0, r6, #0x10 - bl RxAuthFrame - b _06017660 -_060170C0: - add r0, r6, #0x10 - bl RxProbeReqFrame - b _06017660 -_060170CC: - add r0, r6, #0x10 - bl RxAssReqFrame - b _06017660 -_060170D8: - bl CAM_UpdateLifeTime - ldrh r1, [r6, #0x22] - mov r0, r7, lsl #0x10 - and r1, r1, #0xff - mov r0, r0, lsr #0x10 - bl CAM_SetRSSI - cmp r8, #0 - bne _06017124 - ldrh fp, [r6, #0x3a] - mov r0, r7 - bl CAM_GetLastSeqCtrl - cmp fp, r0 - ldreq r0, [r4, #0x578] - addeq r0, r0, #1 - streq r0, [r4, #0x578] - beq _06017660 - mov r0, r7 - mov r1, fp - bl CAM_SetLastSeqCtrl -_06017124: - cmp r5, #1 - beq _0601713C - cmp r5, #2 - cmpne r5, #3 - beq _060173DC - b _06017660 -_0601713C: - ldrh r1, [r6, #0x24] - mov r0, r7, lsl #0x10 - mov r1, r1, lsl #0x13 - mov r0, r0, lsr #0x10 - mov r1, r1, lsr #0x1f - bl CAM_SetPowerMgtMode - cmp r8, #0 - bne _06017378 - cmp sb, #0xc - addls pc, pc, sb, lsl #2 - b _06017660 -_06017168: ; jump table - b _060171A8 ; case 0 - b _06017660 ; case 1 - b _060171B4 ; case 2 - b _06017660 ; case 3 - b _06017338 ; case 4 - b _06017344 ; case 5 - b _06017660 ; case 6 - b _06017660 ; case 7 - b _0601719C ; case 8 - b _06017660 ; case 9 - b _06017354 ; case 10 - b _06017360 ; case 11 - b _0601736C ; case 12 -_0601719C: - add r0, r6, #0x10 - bl RxBeaconFrame - b _06017660 -_060171A8: - add r0, r6, #0x10 - bl RxAssReqFrame - b _06017660 -_060171B4: - ldr r0, _06017690 ; =0x0380FFF4 - ldrh r4, [r6, #0x16] - ldr r5, [r0] - cmp r4, #0xa - bls _06017660 - add r0, r5, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #1 - bne _06017660 - add r0, r6, #0x2e - mov r1, #0x30 - bl IsExistManFrame - cmp r0, #0 - bne _06017660 - ldrh r7, [r6, #0x12] - mov r0, r7 - bl CAM_GetStaState - cmp r0, #0x30 - bhs _06017234 - add r0, r6, #0x2e - mov r1, #0xc0 - bl IsExistManFrame - cmp r0, #0 - bne _06017660 - add r0, r6, #0x2e - mov r1, #6 - mov r2, #1 - bl MakeDeAuthFrame - cmp r0, #0 - beq _06017660 - bl TxManCtrlFrame - b _06017660 -_06017234: - mov r0, r7 - bl CAM_GetStaState - cmp r0, #0x40 - mov r0, r7 - bne _06017260 - mov r1, #0x30 - bl CAM_SetStaState - add r0, r6, #0x2e - mov r1, #1 - bl MLME_IssueDisAssIndication - b _0601726C -_06017260: - bl CAM_GetAID - cmp r0, #0 - bne _06017660 -_0601726C: - add r1, sp, #0 - mov r0, #0 - mov r2, #0x2c - bl __VENEER_MIi_CpuClear32 - add r3, r6, #0x46 - sub r2, r4, #0xa - mov r1, #0x800 - str r3, [sp] - strh r2, [sp, #8] - strh r1, [sp, #0xc] - add r0, sp, #0 - bl ElementChecker - ldrh r1, [r6, #0x3c] - ldr r0, _06017694 ; =0x0000FFC2 - tst r1, r0 - bne _060172E0 - add r0, r5, #0x300 - ldrh r2, [r0, #0x34] - cmp r2, #0 - moveq r0, r1, lsl #0x1b - moveq r0, r0, lsr #0x1f - cmpeq r0, #1 - beq _060172E0 - cmp r2, #0 - beq _060172E8 - ldrh r0, [r6, #0x3c] - mov r0, r0, lsl #0x1b - movs r0, r0, lsr #0x1f - bne _060172E8 -_060172E0: - mov r1, #0xa - b _0601731C -_060172E8: - mov r0, r7 - bl CAM_SetCapaInfo - ldrh r0, [sp, #0xa] - tst r0, #1 - moveq r1, #1 - beq _0601731C - tst r0, #4 - moveq r1, #0x12 - beq _0601731C - ldrh r1, [sp, #0x16] - mov r0, r7 - bl CAM_SetSupRate - mov r1, #0 -_0601731C: - ldr r2, [sp, #0x1c] - mov r0, r7 - bl MakeReAssResFrame - cmp r0, #0 - beq _06017660 - bl TxManCtrlFrame - b _06017660 -_06017338: - add r0, r6, #0x10 - bl RxProbeReqFrame - b _06017660 -_06017344: - add r0, r6, #0x10 - mov r1, #0 - bl RxProbeResFrame - b _06017660 -_06017354: - add r0, r6, #0x10 - bl RxDisAssFrame - b _06017660 -_06017360: - add r0, r6, #0x10 - bl RxAuthFrame - b _06017660 -_0601736C: - add r0, r6, #0x10 - bl RxDeAuthFrame - b _06017660 -_06017378: - cmp r8, #1 - bne _06017660 - cmp sb, #0xa - bne _06017660 - ldr r0, _06017690 ; =0x0380FFF4 - ldrh r4, [r6, #0x12] - ldr r1, [r0] - mov r0, r4 - add r5, r1, #0x17c - bl CAM_GetStaState - cmp r0, #0x40 - bne _06017660 - mov r0, r4 - bl CAM_SetAwake - ldrh r0, [r5, #0x2c] - cmp r0, #0 - beq _060173C4 - mov r0, #1 - bl TxqPri -_060173C4: - ldrh r0, [r5, #0x20] - cmp r0, #0 - beq _06017660 - mov r0, #0 - bl TxqPri - b _06017660 -_060173DC: - cmp r8, #0 - bne _06017660 - cmp sb, #0xc - addls pc, pc, sb, lsl #2 - b _06017660 -_060173F0: ; jump table - b _06017660 ; case 0 - b _06017430 ; case 1 - b _06017660 ; case 2 - b _0601752C ; case 3 - b _06017660 ; case 4 - b _06017630 ; case 5 - b _06017660 ; case 6 - b _06017660 ; case 7 - b _06017424 ; case 8 - b _06017660 ; case 9 - b _06017640 ; case 10 - b _0601764C ; case 11 - b _06017658 ; case 12 -_06017424: - add r0, r6, #0x10 - bl RxBeaconFrame - b _06017660 -_06017430: - ldr r0, _06017690 ; =0x0380FFF4 - ldr r0, [r0] - add r5, r0, #0x344 - ldrh r1, [r5, #0xc] - add r0, r0, #4 - cmp r1, #2 - add r4, r0, #0x400 - cmpne r1, #3 - bne _06017660 - ldrh r0, [r4] - cmp r0, #0x51 - bne _06017660 - ldr r0, [r4, #0x18] - add r1, r6, #0x2e - add r0, r0, #0x10 - bl MatchMacAdrs - cmp r0, #0 - beq _06017660 - bl ClearTimeOut - ldrh r0, [r6, #0x3e] - cmp r0, #0 - bne _060174CC - ldrh r1, [r6, #0x40] - ldr r0, _06017698 ; =0x00000FFF - and r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WSetAids - ldrh r0, [r5, #0x6a] - bl MakePsPollFrame - add r0, r5, #0x82 - add r1, r6, #0x2e - bl WSetMacAdrs1 - add r0, r6, #0x2e - bl CAM_Search - strh r0, [r5, #0x88] - ldrh r0, [r5, #0x88] - mov r1, #0x40 - bl CAM_SetStaState -_060174CC: - ldrh r0, [r6, #0x3e] - cmp r0, #0 - ldr r0, [r4, #0x1c] - movne r1, #0xc - strneh r1, [r0, #4] - ldrneh r1, [r6, #0x3e] - ldrne r0, [r4, #0x1c] - strneh r1, [r0, #6] - bne _06017508 - mov r2, #0 - strh r2, [r0, #4] - ldr r1, [r4, #0x1c] - mov r0, #0x40 - strh r2, [r1, #6] - bl WSetStaState -_06017508: - ldrh r1, [r5, #0x6a] - ldr r0, [r4, #0x1c] - mov r2, #0x53 - strh r1, [r0, #8] - mov r0, #2 - mov r1, #3 - strh r2, [r4] - bl AddTask - b _06017660 -_0601752C: - ldr r0, _06017690 ; =0x0380FFF4 - ldr r0, [r0] - add r5, r0, #0x344 - ldrh r1, [r5, #0xc] - add r0, r0, #4 - cmp r1, #2 - add r4, r0, #0x400 - cmpne r1, #3 - bne _06017660 - ldrh r0, [r4] - cmp r0, #0x61 - bne _06017660 - ldr r0, [r4, #0x18] - add r1, r6, #0x2e - add r0, r0, #0x10 - bl MatchMacAdrs - cmp r0, #0 - beq _06017660 - bl ClearTimeOut - ldrh r0, [r6, #0x3e] - cmp r0, #0 - bne _060175D0 - ldrh r1, [r6, #0x40] - ldr r0, _06017698 ; =0x00000FFF - and r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl WSetAids - ldrh r0, [r5, #0x6a] - bl MakePsPollFrame - add r0, r5, #0x82 - add r1, r6, #0x2e - bl WSetMacAdrs1 - add r0, r6, #0x2e - bl CAM_Search - strh r0, [r5, #0x88] - ldrh r0, [r5, #0x88] - mov r1, #0x40 - bl CAM_SetStaState - mov r0, #0x40 - bl WSetStaState -_060175D0: - ldrh r0, [r6, #0x3e] - cmp r0, #0 - ldr r0, [r4, #0x1c] - movne r1, #0xc - strneh r1, [r0, #4] - ldrneh r1, [r6, #0x3e] - ldrne r0, [r4, #0x1c] - strneh r1, [r0, #6] - bne _0601760C - mov r2, #0 - strh r2, [r0, #4] - ldr r1, [r4, #0x1c] - mov r0, #0x40 - strh r2, [r1, #6] - bl WSetStaState -_0601760C: - ldrh r1, [r5, #0x6a] - ldr r0, [r4, #0x1c] - mov r2, #0x63 - strh r1, [r0, #8] - mov r0, #2 - mov r1, #4 - strh r2, [r4] - bl AddTask - b _06017660 -_06017630: - add r0, r6, #0x10 - mov r1, #0 - bl RxProbeResFrame - b _06017660 -_06017640: - add r0, r6, #0x10 - bl RxDisAssFrame - b _06017660 -_0601764C: - add r0, r6, #0x10 - bl RxAuthFrame - b _06017660 -_06017658: - add r0, r6, #0x10 - bl RxDeAuthFrame -_06017660: - mov r1, r6 - add r0, sl, #0x60 - bl ReleaseHeapBuf - ldrh r0, [sl, #0x68] - cmp r0, #0 - beq _06017684 - mov r0, #1 - mov r1, #7 - bl AddTask -_06017684: - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06017690: .word 0x0380FFF4 -_06017694: .word 0x0000FFC2 -_06017698: .word 0x00000FFF - arm_func_end RxManCtrlTask - - arm_func_start DefragTask -DefragTask: ; 0x0601769C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r0, _06017BB4 ; =0x0380FFF4 - mvn r1, #0 - ldr r2, [r0] - add r0, r2, #0x17c - ldr r5, [r0, #0x6c] - str r0, [sp, #4] - cmp r5, r1 - beq _06017BA8 - add r0, r2, #0x300 - ldrh r0, [r0, #0x4c] - cmp r0, #0x40 - bne _06017B7C - ldrh r1, [r5, #0x20] - ldr r0, _06017BB8 ; =0x000005FC - cmp r1, r0 - bhi _06017B7C - ldrh r4, [r5, #0x24] - add r0, sp, #8 - tst r4, #0x100 - beq _06017714 - add r1, r5, #0x34 - bl WSetMacAdrs1 - tst r4, #0x200 - bne _06017B7C - add r0, sp, #0xe - add r1, r5, #0x2e - bl WSetMacAdrs1 - b _0601773C -_06017714: - add r1, r5, #0x28 - bl WSetMacAdrs1 - tst r4, #0x200 - add r0, sp, #0xe - beq _06017734 - add r1, r5, #0x34 - bl WSetMacAdrs1 - b _0601773C -_06017734: - add r1, r5, #0x2e - bl WSetMacAdrs1 -_0601773C: - ldrh r0, [r5, #0x3a] - tst r4, #0x400 - strh r0, [sp, #0x14] - beq _06017974 - ldrh r0, [r5, #0x3a] - mov r0, r0, lsl #0x1c - movs r0, r0, lsr #0x1c - bne _06017974 - ldr r0, _06017BB4 ; =0x0380FFF4 - mvn r6, #0 - ldr r0, [r0] - mov r7, #0 - add r0, r0, #0xe4 - add r8, r0, #0x400 - add fp, sp, #8 - mov r4, #0x18 - b _06017884 -_06017780: - mul sb, r7, r4 - ldrh r0, [r8, sb] - add sl, r8, sb - cmp r0, #0 - beq _0601787C - mov r1, fp - add r0, sl, #4 - bl MatchMacAdrs - cmp r0, #0 - beq _06017880 - add r1, sp, #0xe - add r0, sl, #0xa - bl MatchMacAdrs - cmp r0, #0 - beq _06017880 - ldrh r0, [sp, #0x14] - ldrh r1, [sl, #0x10] - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x14 - mov r0, r1, lsl #0x10 - cmp r2, r0, lsr #20 - bne _06017880 - ldrh r0, [r5, #0x18] - mov r1, r1, lsl #0x1c - and r2, r0, #0xf0 - mov r0, r2, asr #3 - add r0, r2, r0, lsr #28 - mov r7, r0, asr #4 - subs r0, r7, r1, lsr #28 - beq _06017B7C - tst r0, #-0x80000000 - bne _06017B7C - mov r0, sl - ldr r4, [r0, #0x14] - ldrh r0, [r5, #0x20] - ldrh r3, [r4, #0x20] - sub r0, r0, r3 - subs r6, r0, #0x18 - beq _06017B7C - tst r6, #-0x80000000 - bne _06017B7C - add r0, r5, #0x3c - add r1, r4, #0x3c - mov r2, r6 - add r0, r0, r3 - add r1, r1, r3 - bl __VENEER_MIi_CpuCopy16 - ldrh r1, [r4, #0x20] - mov r0, r7, lsl #0x10 - add r1, r1, r6 - strh r1, [r4, #0x20] - ldrh r1, [sl, #0x10] - mov r0, r0, lsr #0x10 - bic r1, r1, #0xf - and r0, r0, #0xf - orr r1, r1, r0 - ldr r0, _06017BB4 ; =0x0380FFF4 - strh r1, [sl, #0x10] - ldr r1, [r0] - ldr r0, [r1, #0x560] - add r0, r0, r7 - str r0, [r1, #0x560] - b _06017B7C -_0601787C: - mov r6, r7 -_06017880: - add r7, r7, #1 -_06017884: - cmp r7, #3 - blo _06017780 - mvn r0, #0 - cmp r6, r0 - beq _06017B7C - ldr r0, _06017BB4 ; =0x0380FFF4 - ldr r1, _06017BBC ; =0x00000622 - ldr r0, [r0] - add r0, r0, #0x188 - bl AllocateHeapBuf - movs r4, r0 - beq _06017968 - mov r0, #0x18 - mul r7, r6, r0 - add r6, r8, r7 - add r0, sp, #8 - add r1, r6, #4 - mov r2, #0x10 - bl __VENEER_MIi_CpuCopy16 - mov r0, #5 - strh r0, [r8, r7] - mov r0, r6 - str r4, [r0, #0x14] - ldrh r2, [r5, #0x20] - add r0, r5, #0x18 - add r1, r4, #0x18 - add r2, r2, #0xc - bl __VENEER_MIi_CpuCopy16 - ldr r0, _06017BB4 ; =0x0380FFF4 - ldr r0, [r0] - ldr r0, [r0, #0x30c] - bl __VENEER_MI_WaitDma - ldrh r1, [r4, #0x18] - ldrh r0, [r6, #0x10] - and r1, r1, #0xf0 - bic r3, r0, #0xf - mov r0, r1, asr #3 - add r0, r1, r0, lsr #28 - mov r1, r0, asr #4 - mov r2, r1, lsl #0x10 - mov r2, r2, lsr #0x10 - and r2, r2, #0xf - orr r2, r3, r2 - strh r2, [r6, #0x10] - ldr r2, _06017BB4 ; =0x0380FFF4 - ldr r3, [r2] - ldr r2, [r3, #0x560] - add r0, r2, r0, asr #4 - str r0, [r3, #0x560] - ldrh r0, [r5, #0x20] - sub r0, r0, #0x18 - strh r0, [r4, #0x20] - ldrh r0, [r4, #0x20] - bl __VENEER__u32_div_f - mov r1, r6 - strh r0, [r1, #2] - b _06017B7C -_06017968: - mov r0, #4 - bl SetFatalErr - b _06017B7C -_06017974: - ldr r1, _06017BB4 ; =0x0380FFF4 - ldrh r0, [r5, #0x20] - ldr r4, [r1] - sub r1, r0, #0x18 - add r0, r4, #0xe4 - strh r1, [r5, #0x20] - add r8, r0, #0x400 - mov r7, #0 - b _06017A30 -_06017998: - mov r0, #0x18 - mul sb, r7, r0 - ldrh r0, [r8, sb] - add sl, r8, sb - cmp r0, #0 - beq _06017A2C - add r1, sp, #8 - add r0, sl, #4 - bl MatchMacAdrs - cmp r0, #0 - beq _06017A2C - add r1, sp, #0xe - add r0, sl, #0xa - bl MatchMacAdrs - cmp r0, #0 - beq _06017A2C - ldrh r2, [sp, #0x14] - ldrh r0, [sl, #0x10] - mov r1, r2, lsl #0x10 - mov r1, r1, lsr #0x14 - mov r0, r0, lsl #0x10 - cmp r1, r0, lsr #20 - bne _06017A2C - mov r1, sl - ldrh r0, [r1, #0x10] - sub fp, r0, r2 - tst fp, #-0x80000000 - bne _06017B7C - ldrh r0, [r1, #2] - ldrh r1, [r5, #0x20] - mul r0, fp, r0 - str r0, [sp] - subs r6, r1, r0 - beq _06017B7C - tst r6, #-0x80000000 - beq _06017A38 - b _06017B7C -_06017A2C: - add r7, r7, #1 -_06017A30: - cmp r7, #3 - blo _06017998 -_06017A38: - cmp r7, #3 - beq _06017B7C - mov r0, #0x18 - mul sb, r7, r0 - add r0, r8, sb - ldr r1, [r0, #0x14] - ldr r0, _06017BC0 ; =0x000005E4 - add r7, r1, #0x10 - ldrh r1, [r7, #0x10] - add sl, r1, r6 - cmp sl, r0 - bls _06017A80 - add r0, r4, #0x188 - sub r1, r7, #0x10 - bl ReleaseHeapBuf - mov r0, #0 - strh r0, [r8, sb] - b _06017B7C -_06017A80: - ldr r0, [sp] - add r3, r5, #0x3c - add r2, r7, #0x2c - add r1, r2, r1 - add r0, r3, r0 - add r2, r6, #1 - bl __VENEER_MIi_CpuCopy16 - strh sl, [r7, #0x10] - ldrh r1, [r5, #0x18] - add r0, r8, sb - ldrh r6, [r0, #0x10] - and r2, r1, #0xf0 - mov r1, r2, asr #3 - add r1, r2, r1, lsr #28 - mov r3, r6, lsl #0x1c - rsb r2, fp, r1, asr #4 - add r2, r2, r3, lsr #28 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bic r3, r6, #0xf - and r2, r2, #0xf - orr r3, r3, r2 - ldr r2, _06017BB4 ; =0x0380FFF4 - strh r3, [r0, #0x10] - ldr r3, [r2] - ldr r2, [r3, #0x560] - add r1, r2, r1, asr #4 - str r1, [r3, #0x560] - ldrh r1, [r5, #0x18] - tst r1, #0x100 - bne _06017B7C - mov r1, #0 - strh r1, [r0] - ldrh r0, [r7, #8] - bic r0, r0, #0xf0 - add r0, r0, #0x10 - strh r0, [r7, #8] - ldrh r0, [r7, #0x10] - add r0, r0, #0x18 - strh r0, [r7, #0x10] - ldrh r0, [r7, #8] - ands r0, r0, #0xf - beq _06017B54 - cmp r0, #8 - add r0, r4, #0x188 - bne _06017B74 - add r1, r4, #0x1c4 - sub r2, r7, #0x10 - bl MoveHeapBuf - mov r0, #2 - mov r1, #6 - bl AddTask - b _06017B7C -_06017B54: - add r0, r4, #0x188 - add r1, r4, #0x1dc - sub r2, r7, #0x10 - bl MoveHeapBuf - mov r0, #1 - mov r1, #7 - bl AddTask - b _06017B7C -_06017B74: - sub r1, r7, #0x10 - bl ReleaseHeapBuf -_06017B7C: - ldr r0, [sp, #4] - mov r1, r5 - add r0, r0, #0x6c - bl ReleaseHeapBuf - ldr r0, [sp, #4] - ldrh r0, [r0, #0x74] - cmp r0, #0 - beq _06017BA8 - mov r0, #2 - mov r1, #9 - bl AddTask -_06017BA8: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06017BB4: .word 0x0380FFF4 -_06017BB8: .word 0x000005FC -_06017BBC: .word 0x00000622 -_06017BC0: .word 0x000005E4 - arm_func_end DefragTask - - arm_func_start __VENEER_MI_WaitDma -__VENEER_MI_WaitDma: ; 0x06017BC4 - ldr pc, _06017BC8 ; =MI_WaitDma - .align 2, 0 -_06017BC8: .word MI_WaitDma - arm_func_end __VENEER_MI_WaitDma - - arm_func_start DefragTimerTask -DefragTimerTask: ; 0x06017BCC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _06017C34 ; =0x0380FFF4 - mov r6, #0 - ldr r0, [r4] - mov r7, #0x18 - add r0, r0, #0xe4 - add r5, r0, #0x400 -_06017BE8: - mul r1, r6, r7 - ldrh r0, [r5, r1] - add r1, r5, r1 - cmp r0, #0 - beq _06017C20 - sub r0, r0, #1 - strh r0, [r1] - ldrh r0, [r1] - cmp r0, #0 - bne _06017C20 - ldr r0, [r4] - ldr r1, [r1, #0x14] - add r0, r0, #0x188 - bl ReleaseHeapBuf -_06017C20: - add r6, r6, #1 - cmp r6, #3 - blo _06017BE8 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06017C34: .word 0x0380FFF4 - arm_func_end DefragTimerTask - - arm_func_start InitRxCtrl -InitRxCtrl: ; 0x06017C38 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _06017D30 ; =0x0380FFF4 - mov r0, #0 - ldr r3, [r1] - mov r2, #0x50 - add r1, r3, #0xdc - add r5, r1, #0x400 - mov r1, r5 - add r4, r3, #0x344 - bl __VENEER_MIi_CpuClear32 - ldr r1, _06017D34 ; =0x04808030 - mov r2, #0x8000 - ldr r0, _06017D30 ; =0x0380FFF4 - strh r2, [r1] - ldr r0, [r0] - add r0, r0, #0x300 - ldrh r0, [r0, #0x50] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _06017CB4 -_06017C88: ; jump table - b _06017C98 ; case 0 - b _06017CA0 ; case 1 - b _06017CA8 ; case 2 - b _06017CB0 ; case 3 -_06017C98: - ldr r6, _06017D38 ; =0x00000794 - b _06017CB4 -_06017CA0: - ldr r6, _06017D3C ; =0x000010C4 - b _06017CB4 -_06017CA8: - ldr r6, _06017D40 ; =0x00000BFC - b _06017CB4 -_06017CB0: - ldr r6, _06017D38 ; =0x00000794 -_06017CB4: - ldr r3, _06017D44 ; =0x04808050 - add r0, r6, #0x4000 - ldr r1, _06017D48 ; =0x00005F60 - add r2, r0, #0x4800000 - mov r0, r6, lsl #0xf - strh r2, [r3] - mov r0, r0, lsr #0x10 - strh r0, [r3, #6] - strh r1, [r3, #2] - strh r0, [r3, #0xa] - ldr r2, _06017D4C ; =0x0000FFFF - strh r0, [r5, #4] - sub r0, r1, #0x4000 - strh r2, [r5] - sub r0, r0, r6 - strh r0, [r4, #0x9a] - sub r0, r1, #2 - strh r0, [r3, #0x12] - rsb r0, r2, #0x18000 - strh r0, [r3, #-0x20] - add r0, r3, #0x1fc - ldr r1, _06017D50 ; =0x0480824E - strh r2, [r0] - ldr r0, _06017D54 ; =0x04805F70 - strh r2, [r1] - strh r2, [r0] - strh r2, [r0, #2] - strh r2, [r0, #0xe] - strh r2, [r0, #6] - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06017D30: .word 0x0380FFF4 -_06017D34: .word 0x04808030 -_06017D38: .word 0x00000794 -_06017D3C: .word 0x000010C4 -_06017D40: .word 0x00000BFC -_06017D44: .word 0x04808050 -_06017D48: .word 0x00005F60 -_06017D4C: .word 0x0000FFFF -_06017D50: .word 0x0480824E -_06017D54: .word 0x04805F70 - arm_func_end InitRxCtrl - - arm_func_start UpdateApList -UpdateApList: ; 0x06017D58 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r3, _06017E98 ; =0x0380FFF4 - mov sb, r2 - ldr r2, [r3] - mov fp, r0 - add r0, sb, #1 - mov sl, r1 - add r4, r2, #0x23c - bl WL_ReadByte - cmp r0, #0x20 - bhi _06017E90 - mov r6, #4 - mov r7, r6 - mov r8, #0x400 - mov r5, #0 - b _06017DD8 -_06017D98: - ldrh r0, [r4] - cmp r0, #0 - beq _06017DCC - add r0, r4, #6 - add r1, sl, #0x24 - bl MatchMacAdrs - cmp r0, #0 - bne _06017DF8 - ldrh r0, [r4, #0x30] - cmp r0, r8 - movlo r8, r0 - movlo r7, r5 - b _06017DD0 -_06017DCC: - mov r6, r5 -_06017DD0: - add r5, r5, #1 - add r4, r4, #0x32 -_06017DD8: - cmp r5, #4 - blo _06017D98 - cmp r6, #4 - movne r5, r6 - bne _06017DF8 - cmp r7, #4 - movne r5, r7 - beq _06017E90 -_06017DF8: - ldr r0, _06017E98 ; =0x0380FFF4 - mov r2, #0x32 - mul r4, r5, r2 - ldr r0, [r0] - add r5, r0, #0x23c - add r6, r5, r4 - mov r1, r6 - mov r0, #0 - bl __VENEER_MIi_CpuClear16 - mov r0, #0x400 - strh r0, [r6, #0x30] - ldrh r1, [sl, #0x12] - add r0, r6, #6 - and r1, r1, #0xff - strh r1, [r5, r4] - strh fp, [r6, #2] - add r1, sl, #0x24 - bl WSetMacAdrs1 - add r0, sb, #1 - bl WL_ReadByte - strh r0, [r6, #0xc] - mov r7, #0 - add r5, sb, #2 - add r4, r6, #0xe - b _06017E74 -_06017E5C: - add r0, r5, r7 - bl WL_ReadByte - mov r1, r0 - add r0, r4, r7 - bl WL_WriteByte - add r7, r7, #1 -_06017E74: - ldrh r0, [r6, #0xc] - cmp r7, r0 - blo _06017E5C - ldrh r0, [sl, #0x34] - strh r0, [r6, #0x2e] - ldrh r0, [sl, #0x36] - strh r0, [r6, #4] -_06017E90: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_06017E98: .word 0x0380FFF4 - arm_func_end UpdateApList - - arm_func_start InitApList -InitApList: ; 0x06017E9C - ldr r1, _06017EB8 ; =0x0380FFF4 - ldr ip, _06017EBC ; =MIi_CpuClear16 - ldr r1, [r1] - mov r0, #0 - mov r2, #0xc8 - add r1, r1, #0x23c - bx ip - .align 2, 0 -_06017EB8: .word 0x0380FFF4 -_06017EBC: .word MIi_CpuClear16 - arm_func_end InitApList - - arm_func_start UpdateApListTask -UpdateApListTask: ; 0x06017EC0 - ldr r0, _06017F04 ; =0x0380FFF4 - mov r3, #0 - ldr r0, [r0] - add r2, r0, #0x23c - mov r0, r3 -_06017ED4: - ldrh r1, [r2, #0x30] - cmp r1, #0 - beq _06017EF4 - sub r1, r1, #1 - strh r1, [r2, #0x30] - ldrh r1, [r2, #0x30] - cmp r1, #0 - streqh r0, [r2] -_06017EF4: - add r3, r3, #1 - cmp r3, #4 - blo _06017ED4 - bx lr - .align 2, 0 -_06017F04: .word 0x0380FFF4 - arm_func_end UpdateApListTask - - arm_func_start FLASH_VerifyCheckSum -FLASH_VerifyCheckSum: ; 0x06017F08 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _06017FA4 ; =0x0380FFF4 - mov r4, r0 - ldr r0, [r1] - ldr r1, [r0, #0x318] - ldrh r6, [r1, #2] - cmp r6, #0xa4 - blo _06017F34 - ldr r0, _06017FA8 ; =0x000001D6 - cmp r6, r0 - bls _06017F3C -_06017F34: - mov r0, #2 - b _06017F9C -_06017F3C: - add r7, r1, #2 - mov r5, #0 - b _06017F6C -_06017F48: - mov r0, r7 - bl WL_ReadByte - mov r1, r5, lsl #0x10 - and r0, r0, #0xff - mov r1, r1, lsr #0x10 - add r7, r7, #1 - bl calc_NextCRC - mov r5, r0 - sub r6, r6, #1 -_06017F6C: - cmp r6, #0 - bne _06017F48 - ldr r0, _06017FA4 ; =0x0380FFF4 - cmp r4, #0 - ldr r0, [r0] - ldr r0, [r0, #0x318] - ldrh r1, [r0] - orrne r0, r1, r5, lsl #16 - strne r0, [r4] - cmp r5, r1 - movne r0, #1 - moveq r0, #0 -_06017F9C: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_06017FA4: .word 0x0380FFF4 -_06017FA8: .word 0x000001D6 - arm_func_end FLASH_VerifyCheckSum - - arm_func_start FLASH_Wait -FLASH_Wait: ; 0x06017FAC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - add r4, sp, #0 -_06017FB8: - mov r0, r4 - bl __VENEER_NVRAM_ReadStatusRegister - ldr r0, [sp] - tst r0, #0x20 - beq _06017FD4 - bl __VENEER_NVRAM_SoftwareReset - b _06017FB8 -_06017FD4: - ldr r0, [sp] - tst r0, #1 - bne _06017FB8 - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end FLASH_Wait - - arm_func_start __VENEER_NVRAM_ReadStatusRegister -__VENEER_NVRAM_ReadStatusRegister: ; 0x06017FEC - ldr pc, _06017FF0 ; =NVRAM_ReadStatusRegister - .align 2, 0 -_06017FF0: .word NVRAM_ReadStatusRegister - arm_func_end __VENEER_NVRAM_ReadStatusRegister - - arm_func_start __VENEER_NVRAM_SoftwareReset -__VENEER_NVRAM_SoftwareReset: ; 0x06017FF4 - ldr pc, _06017FF8 ; =NVRAM_SoftwareReset - .align 2, 0 -_06017FF8: .word NVRAM_SoftwareReset - arm_func_end __VENEER_NVRAM_SoftwareReset - - arm_func_start FLASH_Read -FLASH_Read: ; 0x06017FFC - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _06018058 ; =0x0380FFF4 - mov r6, r1 - ldr r1, [r3] - mov r5, r2 - ldr r1, [r1, #0x318] - cmp r1, #0 - beq _06018050 - add r0, r1, r0 - sub r4, r0, #0x2a - b _06018048 -_06018028: - mov r0, r4 - bl WL_ReadByte - mov r1, r0 - mov r0, r5 - add r4, r4, #1 - bl WL_WriteByte - add r5, r5, #1 - sub r6, r6, #1 -_06018048: - cmp r6, #0 - bne _06018028 -_06018050: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_06018058: .word 0x0380FFF4 - arm_func_end FLASH_Read - - arm_func_start FLASH_DirectRead -FLASH_DirectRead: ; 0x0601805C - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _060180A8 ; =0x0380FFF4 - mov r6, r0 - ldr r0, [r3] - mov r5, r1 - ldr r0, [r0, #0x314] - mov r4, r2 - bl __VENEER_SPI_Lock - bl FLASH_Wait - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl __VENEER_NVRAM_ReadDataBytes - ldr r0, _060180A8 ; =0x0380FFF4 - ldr r0, [r0] - ldr r0, [r0, #0x314] - bl __VENEER_SPI_Unlock - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_060180A8: .word 0x0380FFF4 - arm_func_end FLASH_DirectRead - - arm_func_start __VENEER_SPI_Lock -__VENEER_SPI_Lock: ; 0x060180AC - ldr pc, _060180B0 ; =SPI_Lock - .align 2, 0 -_060180B0: .word SPI_Lock - arm_func_end __VENEER_SPI_Lock - - arm_func_start __VENEER_NVRAM_ReadDataBytes -__VENEER_NVRAM_ReadDataBytes: ; 0x060180B4 - ldr pc, _060180B8 ; =NVRAM_ReadDataBytes - .align 2, 0 -_060180B8: .word NVRAM_ReadDataBytes - arm_func_end __VENEER_NVRAM_ReadDataBytes - - arm_func_start __VENEER_SPI_Unlock -__VENEER_SPI_Unlock: ; 0x060180BC - ldr pc, _060180C0 ; =SPI_Unlock - .align 2, 0 -_060180C0: .word SPI_Unlock - arm_func_end __VENEER_SPI_Unlock - - arm_func_start FLASH_MakeImage -FLASH_MakeImage: ; 0x060180C4 - stmdb sp!, {r3, lr} - ldr r0, _060181A8 ; =0x0380FFF4 - ldr r0, [r0] - ldr r0, [r0, #0x314] - bl __VENEER_SPI_Lock - bl FLASH_Wait - mov r3, #0 - add r2, sp, #0 - mov r0, #0x2c - mov r1, #2 - str r3, [sp] - bl __VENEER_NVRAM_ReadDataBytes - ldr r0, _060181A8 ; =0x0380FFF4 - ldr r0, [r0] - ldr r0, [r0, #0x314] - bl __VENEER_SPI_Unlock - ldr r1, [sp] - cmp r1, #0xa4 - blo _0601811C - ldr r0, _060181AC ; =0x000001D6 - cmp r1, r0 - bls _06018124 -_0601811C: - mov r0, #0 - b _060181A0 -_06018124: - ldr r0, _060181A8 ; =0x0380FFF4 - add r1, r1, #2 - str r1, [sp] - ldr r0, [r0] - add r0, r0, #0x188 - bl AllocateHeapBuf - ldr r2, _060181A8 ; =0x0380FFF4 - ldr r1, [r2] - str r0, [r1, #0x318] - ldr r1, [r2] - ldr r0, [r1, #0x318] - cmp r0, #0 - moveq r0, #0 - beq _060181A0 - add r0, r0, #0xc - str r0, [r1, #0x318] - ldr r0, [r2] - ldr r0, [r0, #0x314] - bl __VENEER_SPI_Lock - bl FLASH_Wait - ldr r0, _060181A8 ; =0x0380FFF4 - ldr r1, [sp] - ldr r2, [r0] - mov r0, #0x2a - ldr r2, [r2, #0x318] - bl __VENEER_NVRAM_ReadDataBytes - ldr r0, _060181A8 ; =0x0380FFF4 - ldr r0, [r0] - ldr r0, [r0, #0x314] - bl __VENEER_SPI_Unlock - mov r0, #1 -_060181A0: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_060181A8: .word 0x0380FFF4 -_060181AC: .word 0x000001D6 - arm_func_end FLASH_MakeImage - - .rodata - -WmspRequestFuncTable: ; 0x060181B0 - .word WMSP_Initialize - .word WMSP_Reset - .word WMSP_End - .word WMSP_Enable - .word WMSP_Disable - .word WMSP_PowerOn - .word WMSP_PowerOff - .word WMSP_SetParentParam - .word WMSP_StartParent - .word WMSP_EndParent - .word WMSP_StartScan - .word WMSP_EndScan - .word WMSP_StartConnectEx - .word WMSP_Disconnect - .word WMSP_StartMP - .word WMSP_SetMPData - .word WMSP_EndMP - .word WMSP_StartDCF - .word WMSP_SetDCFData - .word WMSP_EndDCF - .word WMSP_SetWEPKey - .word WmspRequestFuncDummy - .word WmspRequestFuncDummy - .word WmspRequestFuncDummy - .word WMSP_SetGameInfo - .word WMSP_SetBeaconTxRxInd - .word WMSP_StartTestMode - .word WMSP_StopTestMode - .word WMSP_VAlarmSetMPData - .word WMSP_SetLifeTime - .word WMSP_MeasureChannel - .word WMSP_InitWirelessCounter - .word WMSP_GetWirelessCounter - .word WMSP_SetEntry - .word WMSP_AutoDeAuth - .word WMSP_SetMPParameter - .word WMSP_SetBeaconPeriod - .word WMSP_AutoDisconnect - .word WMSP_StartScanEx - .word WMSP_SetWEPKeyEx - .word WMSP_SetPowerSaveMode - .word WMSP_StartTestRxMode - .word WMSP_StopTestRxMode - .word WMSP_KickNextMP_Parent - .word WMSP_KickNextMP_Child - .word WMSP_KickNextMP_Resume - -pTaskFunc: ; 0x06018268 - .word MLME_ScanTask - .word MLME_JoinTask - .word MLME_AuthTask - .word MLME_AssTask - .word MLME_ReAssTask - .word MLME_MeasChannelTask - .word RxDataFrameTask - .word RxManCtrlTask - .word WlIntrTxBeaconTask - .word DefragTask - .word CAM_TimerTask - .word RequestCmdTask - .word LowestIdleTask - .word MLME_BeaconLostTask - .word WlIntrTxEndTask - .word WlIntrRxEndTask - .word WlIntrMpEndTask - .word DefragTimerTask - .word UpdateApListTask - .word SendMessageToWmTask - .word SetParentTbttTxqTask - .word SendFatalErrMsgTask - .word TerminateWlTask - .word ReleaseWlTask - -c_RateSet$4351: ; 0x060182C8 - .byte 0x03, 0x00, 0x03, 0x00 - -def_SsidMask: ; 0x060182CC - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -crc16_table: ; 0x060182EC - .byte 0x00, 0x00, 0x01, 0xCC - .byte 0x01, 0xD8, 0x00, 0x14, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x28, 0x01, 0xE4, 0x01, 0xA0, 0x00, 0x6C - .byte 0x00, 0x78, 0x01, 0xB4, 0x00, 0x50, 0x01, 0x9C, 0x01, 0x88, 0x00, 0x44 - -macTxRxRegAdrs: ; 0x0601830C - .byte 0x46, 0x01, 0x48, 0x01 - .byte 0x4A, 0x01, 0x4C, 0x01, 0x20, 0x01, 0x22, 0x01, 0x54, 0x01, 0x44, 0x01, 0x32, 0x01, 0x32, 0x01 - .byte 0x40, 0x01, 0x42, 0x01, 0x38, 0x00, 0x24, 0x01, 0x28, 0x01, 0x50, 0x01 - -def_WepKey: ; 0x0601832C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -macInitRegs: ; 0x0601837C - .byte 0x04, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0xFF, 0xFF - .byte 0x54, 0x02, 0x00, 0x00, 0xB4, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x01, 0x00 - .byte 0x88, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00 - .byte 0xEA, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x01, 0x00, 0xEC, 0x00, 0x03, 0x3F, 0xA2, 0x01, 0x01, 0x00 - .byte 0xA0, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x08, 0xBC, 0x00, 0x01, 0x00, 0xD4, 0x00, 0x03, 0x00 - .byte 0xD8, 0x00, 0x04, 0x00, 0xDA, 0x00, 0x02, 0x06, 0x76, 0x00, 0x00, 0x00, 0x30, 0x01, 0x46, 0x01 - -RateElement2Bit: ; 0x060183E0 - .byte 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0x04, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x05, 0x00, 0xFF, 0x00, 0x06, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x08, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x09, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x0A, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x0B, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - .byte 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00 - -BC_ADRS: ; 0x060184D0 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - - .balign 4, 0 -MPKEY_ADRS: ; 0x060184D8 - .byte 0x03, 0x09, 0xBF, 0x00, 0x00, 0x10 - - .balign 4, 0 -NULL_ADRS: ; 0x060184E0 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .balign 4, 0 -MP_ADRS: ; 0x060184E8 - .byte 0x03, 0x09, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00 - - .balign 4, 0 -RateBit2Element: ; 0x060184F0 - .byte 0x02, 0x00, 0x04, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x12, 0x00, 0x16, 0x00, 0x18, 0x00, 0x24, 0x00 - .byte 0x30, 0x00, 0x48, 0x00, 0x60, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -test_pattern: ; 0x06018510 - .byte 0xFF, 0xFF, 0x5A, 0x5A, 0xA5, 0xA5 - -BBPDiagSkipAdrsES1: ; 0x06018516 - .byte 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00 - .byte 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x26, 0x00, 0x29, 0x00 - .byte 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00 - .byte 0x36, 0x00, 0x37, 0x00, 0x65, 0x00, 0x00, 0x00 - -BBPDiagSkipAdrsRelease: ; 0x06018548 - .byte 0x00, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00 - .byte 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x14, 0x00 - .byte 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x27, 0x00, 0x4D, 0x00 - .byte 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x61, 0x00, 0x64, 0x00, 0x66, 0x00, 0x00, 0x00 - -test_reg: ; 0x06018580 - .byte 0x06, 0x00, 0x3F, 0x00, 0x18, 0x00, 0xFF, 0xFF, 0x1A, 0x00, 0xFF, 0xFF, 0x1C, 0x00, 0xFF, 0xFF - .byte 0x20, 0x00, 0xFF, 0xFF, 0x22, 0x00, 0xFF, 0xFF, 0x24, 0x00, 0xFF, 0xFF, 0x2A, 0x00, 0xFF, 0x07 - .byte 0x50, 0x00, 0xFF, 0xFF, 0x52, 0x00, 0xFF, 0xFF, 0x56, 0x00, 0xFE, 0x0F, 0x58, 0x00, 0xFE, 0x1F - .byte 0x5A, 0x00, 0xFE, 0x0F, 0x5C, 0x00, 0xFF, 0x0F, 0x62, 0x00, 0xFE, 0x1F, 0x64, 0x00, 0xFF, 0x0F - .byte 0x68, 0x00, 0xFE, 0x1F, 0x6C, 0x00, 0xFF, 0x0F, 0x74, 0x00, 0xFE, 0x1F, 0x22, 0x01, 0xFF, 0xFF - .byte 0x24, 0x01, 0xFF, 0xFF, 0x28, 0x01, 0xFF, 0xFF, 0x30, 0x01, 0xFF, 0x0F, 0x32, 0x01, 0xFF, 0x8F - .byte 0x34, 0x01, 0xFF, 0xFF, 0x40, 0x01, 0xFF, 0xFF, 0x42, 0x01, 0xFF, 0xFF - - .macro wlib_cmd a0, a2, a4 - .short \a0 - .short \a2 - .word \a4 - .endm - -WlibCmdTbl_MA: ; 0x060185EC - wlib_cmd 0x0018, 0x0002, MA_DataReqCmd - wlib_cmd 0x0004, 0x0001, MA_KeyDataReqCmd - wlib_cmd 0x000A, 0x0001, MA_MpReqCmd - wlib_cmd 0x000C, 0x0001, MA_TestDataReqCmd - wlib_cmd 0x0001, 0x0001, MA_ClrDataReqCmd - -WlibCmdTbl_PARAMGET2: ; 0x06018614 - wlib_cmd 0x0000, 0x0004, PARAMGET_BSSIDReqCmd - wlib_cmd 0x0000, 0x0012, PARAMGET_SSIDReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_BeaconPeriodReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_DTIMPeriodReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_ListenIntervalReqCmd - wlib_cmd 0x0000, 0x0001, PARAMGET_GameInfoReqCmd - -WlibCmdTbl_PARAMSET2: ; 0x06018644 - wlib_cmd 0x0003, 0x0001, PARAMSET_BSSIDReqCmd - wlib_cmd 0x0011, 0x0001, PARAMSET_SSIDReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_BeaconPeriodReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_DTIMPeriodReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_ListenIntervalReqCmd - wlib_cmd 0x0000, 0x0001, PARAMSET_GameInfoReqCmd - -WlibCmdTbl_MLME: ; 0x06018674 - wlib_cmd 0x0001, 0x0001, MLME_ResetReqCmd - wlib_cmd 0x0003, 0x0001, MLME_PwrMgtReqCmd - wlib_cmd 0x001F, 0x0023, MLME_ScanReqCmd - wlib_cmd 0x0022, 0x0005, MLME_JoinReqCmd - wlib_cmd 0x0005, 0x0006, MLME_AuthReqCmd - wlib_cmd 0x0004, 0x0004, MLME_DeAuthReqCmd - wlib_cmd 0x0005, 0x0003, MLME_AssReqCmd - wlib_cmd 0x0005, 0x0003, MLME_ReAssReqCmd - wlib_cmd 0x0004, 0x0001, MLME_DisAssReqCmd - wlib_cmd 0x0017, 0x0001, MLME_StartReqCmd - wlib_cmd 0x000C, 0x0012, MLME_MeasChanReqCmd - -WlibCmdTbl_DEV: ; 0x060186CC - wlib_cmd 0x0000, 0x0001, CMD_ReservedReqCmd - wlib_cmd 0x0000, 0x0001, DEV_ShutdownReqCmd - wlib_cmd 0x0000, 0x0001, DEV_IdleReqCmd - wlib_cmd 0x0000, 0x0001, DEV_Class1ReqCmd - wlib_cmd 0x0000, 0x0001, DEV_RebootReqCmd - wlib_cmd 0x0000, 0x0001, DEV_ClearWlInfoReqCmd - wlib_cmd 0x0000, 0x0009, DEV_GetVerInfoReqCmd - wlib_cmd 0x0000, 0x005C, DEV_GetWlInfoReqCmd - wlib_cmd 0x0000, 0x0002, DEV_GetStateReqCmd - wlib_cmd 0x0004, 0x0001, DEV_TestSignalReqCmd - wlib_cmd 0x0002, 0x0001, DEV_TestRxReqCmd - -WlibCmdTbl_PARAMGET: ; 0x06018724 - wlib_cmd 0x0000, 0x0021, PARAMGET_AllReqCmd - wlib_cmd 0x0000, 0x0004, PARAMGET_MacAdrsReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_RetryReqCmd - wlib_cmd 0x0000, 0x0003, PARAMGET_EnableChannelReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_ModeReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_RateReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_WepModeReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_WepKeyIdReqCmd - wlib_cmd 0x0000, 0x0001, CMD_ReservedReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_BeaconTypeReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_ResBcSsidReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_BeaconLostThReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_ActiveZoneReqCmd - wlib_cmd 0x0000, 0x0011, PARAMGET_SSIDMaskReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_PreambleTypeReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_AuthAlgoReqCmd - wlib_cmd 0x0000, 0x0004, PARAMGET_CCAModeEDThReqCmd - wlib_cmd 0x0000, 0x0001, CMD_ReservedReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_MaxConnReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_MainAntennaReqCmd - wlib_cmd 0x0000, 0x0003, PARAMGET_DiversityReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_BcnSendRecvIndReqCmd - wlib_cmd 0x0000, 0x0002, PARAMGET_NullKeyModeReqCmd - -WlibCmdTbl_PARAMSET: ; 0x060187DC - wlib_cmd 0x0048, 0x0001, PARAMSET_AllReqCmd - wlib_cmd 0x0003, 0x0001, PARAMSET_MacAdrsReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_RetryReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_EnableChannelReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_ModeReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_RateReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_WepModeReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_WepKeyIdReqCmd - wlib_cmd 0x0028, 0x0001, PARAMSET_WepKeyReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_BeaconTypeReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_ResBcSsidReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_BeaconLostThReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_ActiveZoneReqCmd - wlib_cmd 0x0010, 0x0001, PARAMSET_SSIDMaskReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_PreambleTypeReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_AuthAlgoReqCmd - wlib_cmd 0x0003, 0x0001, PARAMSET_CCAModeEDThReqCmd - wlib_cmd 0x0003, 0x0001, PARAMSET_LifeTimeReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_MaxConnReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_MainAntennaReqCmd - wlib_cmd 0x0002, 0x0001, PARAMSET_DiversityReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_BcnSendRecvIndReqCmd - wlib_cmd 0x0001, 0x0001, PARAMSET_NullKeyModeReqCmd - -wlVersion$4017: ; 0x06018894 - .asciz "2.83.00" - -Pri2QBit: ; 0x0601889C - .byte 0x01, 0x00, 0x04, 0x00, 0x08, 0x00 - - .bss - - .public wmspW -wmspW: ; 0x060188A4 - .space 0x1590 diff --git a/sub/asm/sub.wram_1.s b/sub/asm/sub.wram_1.s deleted file mode 100644 index 051aaa68..00000000 --- a/sub/asm/sub.wram_1.s +++ /dev/null @@ -1,6666 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - .public OSi_SetTimerReserved - .public OS_IsTickAvailable - .public FifoCtrlInit - .public FifoRecvCallbackTable - .public PADi_XYButtonAvailable - .public MI_StopDma - .public PXI_IsCallbackReady - .public PXIi_SetToFifo - - arm_func_start SND_Enable -SND_Enable: ; 0x037FB630 - ldr r1, _037FB644 ; =0x04000501 - ldrb r0, [r1] - orr r0, r0, #0x80 - strb r0, [r1] - bx lr - .align 2, 0 -_037FB644: .word 0x04000501 - arm_func_end SND_Enable - - arm_func_start SND_Shutdown -SND_Shutdown: ; 0x037FB648 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _037FB694 ; =0x04000501 - mov r5, #0 - ldrb r0, [r1] - bic r0, r0, #0x80 - strb r0, [r1] - mov r4, #1 -_037FB664: - mov r0, r5 - mov r1, r4 - bl SND_StopChannel - add r5, r5, #1 - cmp r5, #0x10 - blt _037FB664 - ldr r0, _037FB698 ; =0x04000508 - mov r1, #0 - strb r1, [r0] - strb r1, [r0, #1] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_037FB694: .word 0x04000501 -_037FB698: .word 0x04000508 - arm_func_end SND_Shutdown - - arm_func_start SND_BeginSleep -SND_BeginSleep: ; 0x037FB69C - stmdb sp!, {r3, lr} - ldr r2, _037FB6E0 ; =0x04000501 - mov r0, #0x80 - ldrb r1, [r2] - bic r1, r1, #0x80 - strb r1, [r2] - bl __VENEER_SVC_ResetSoundBias - mov r0, #0x40000 - bl OS_SpinWait - mov r0, #1 - bl PMi_ResetControl - ldr r1, _037FB6E4 ; =0x04000304 - ldrh r0, [r1] - bic r0, r0, #1 - strh r0, [r1] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FB6E0: .word 0x04000501 -_037FB6E4: .word 0x04000304 - arm_func_end SND_BeginSleep - - arm_func_start __VENEER_SVC_ResetSoundBias -__VENEER_SVC_ResetSoundBias: ; 0x037FB6E8 - ldr ip, _037FB6F0 ; =SVC_ResetSoundBias - bx ip - .align 2, 0 -_037FB6F0: .word SVC_ResetSoundBias - arm_func_end __VENEER_SVC_ResetSoundBias - - arm_func_start SND_EndSleep -SND_EndSleep: ; 0x037FB6F4 - stmdb sp!, {r3, lr} - ldr r2, _037FB738 ; =0x04000304 - mov r0, #1 - ldrh r1, [r2] - orr r1, r1, #1 - strh r1, [r2] - bl PMi_SetControl - mov r0, #0x100 - bl __VENEER_SVC_SetSoundBias - ldr r0, _037FB73C ; =0x0007AB80 - bl OS_SpinWait - ldr r1, _037FB740 ; =0x04000501 - ldrb r0, [r1] - orr r0, r0, #0x80 - strb r0, [r1] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FB738: .word 0x04000304 -_037FB73C: .word 0x0007AB80 -_037FB740: .word 0x04000501 - arm_func_end SND_EndSleep - - arm_func_start __VENEER_SVC_SetSoundBias -__VENEER_SVC_SetSoundBias: ; 0x037FB744 - ldr ip, _037FB74C ; =SVC_SetSoundBias - bx ip - .align 2, 0 -_037FB74C: .word SVC_SetSoundBias - arm_func_end __VENEER_SVC_SetSoundBias - - arm_func_start SND_SetMasterVolume -SND_SetMasterVolume: ; 0x037FB750 - ldr r1, _037FB75C ; =0x04000500 - strb r0, [r1] - bx lr - .align 2, 0 -_037FB75C: .word 0x04000500 - arm_func_end SND_SetMasterVolume - - arm_func_start SND_SetOutputSelector -SND_SetOutputSelector: ; 0x037FB760 - ldr ip, _037FB794 ; =0x04000501 - mov r3, r3, lsl #5 - ldrb ip, [ip] - tst ip, #0x80 - movne ip, #1 - moveq ip, #0 - orr r3, r3, ip, lsl #7 - orr r2, r3, r2, lsl #4 - orr r2, r2, r1, lsl #2 - ldr r1, _037FB794 ; =0x04000501 - orr r0, r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_037FB794: .word 0x04000501 - arm_func_end SND_SetOutputSelector - - arm_func_start SND_SetupChannelPcm -SND_SetupChannelPcm: ; 0x037FB798 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _037FB850 ; =sMasterPan - mov r8, r1 - ldr lr, [r4] - ldr r1, _037FB854 ; =sSurroundDecay - mov r7, r2 - ldr r5, [sp, #0x2c] - ldr r4, _037FB858 ; =sOrgPan - ldr ip, [sp, #0x20] - ldr r2, _037FB85C ; =sOrgVolume - strb r5, [r4, r0] - cmp lr, #0 - ldr r1, [r1] - movge r5, lr - mov r6, r3 - mov r4, r0, lsl #4 - strb ip, [r2, r0] - cmp r1, #0 - ble _037FB804 - ldr r1, _037FB860 ; =0x0000FFF5 - mov r2, #1 - tst r1, r2, lsl r0 - beq _037FB804 - mov r0, ip - mov r1, r5 - bl CalcSurroundDecay - mov ip, r0 -_037FB804: - ldr r2, [sp, #0x24] - mov r0, r6, lsl #0x1b - orr r0, r0, r7, lsl #29 - orr r1, r0, r5, lsl #16 - ldr r0, [sp, #0x28] - orr r2, r1, r2, lsl #8 - add r1, r4, #0x4000000 - orr r2, ip, r2 - str r2, [r1, #0x400] - ldr r3, [sp, #0x18] - rsb r2, r0, #0x10000 - add r0, r1, #0x400 - strh r2, [r0, #8] - ldr r2, [sp, #0x1c] - strh r3, [r0, #0xa] - str r2, [r1, #0x40c] - str r8, [r1, #0x404] - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FB850: .word sMasterPan -_037FB854: .word sSurroundDecay -_037FB858: .word sOrgPan -_037FB85C: .word sOrgVolume -_037FB860: .word 0x0000FFF5 - arm_func_end SND_SetupChannelPcm - - arm_func_start SND_SetupChannelPsg -SND_SetupChannelPsg: ; 0x037FB864 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _037FB8FC ; =sMasterPan - mov r7, r1 - ldr ip, [r4] - ldr r1, _037FB900 ; =sSurroundDecay - mov r6, r3 - ldr r3, _037FB904 ; =sOrgVolume - ldr r5, [sp, #0x1c] - ldr r4, _037FB908 ; =sOrgPan - ldr r1, [r1] - strb r5, [r4, r0] - cmp ip, #0 - movge r5, ip - mov r4, r0, lsl #4 - strb r2, [r3, r0] - cmp r1, #0 - ble _037FB8C8 - ldr r1, _037FB90C ; =0x0000FFF5 - mov r3, #1 - tst r1, r3, lsl r0 - beq _037FB8C8 - mov r0, r2 - mov r1, r5 - bl CalcSurroundDecay - mov r2, r0 -_037FB8C8: - mov r0, r7, lsl #0x18 - orr r0, r0, #0x60000000 - orr r0, r0, r5, lsl #16 - ldr r1, [sp, #0x18] - orr r3, r0, r6, lsl #8 - add r0, r4, #0x4000000 - orr r2, r2, r3 - str r2, [r0, #0x400] - rsb r1, r1, #0x10000 - add r0, r0, #0x400 - strh r1, [r0, #8] - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_037FB8FC: .word sMasterPan -_037FB900: .word sSurroundDecay -_037FB904: .word sOrgVolume -_037FB908: .word sOrgPan -_037FB90C: .word 0x0000FFF5 - arm_func_end SND_SetupChannelPsg - - arm_func_start SND_SetupChannelNoise -SND_SetupChannelNoise: ; 0x037FB910 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _037FB9A0 ; =sMasterPan - mov r7, r2 - ldr ip, [r4] - ldr r2, _037FB9A4 ; =sSurroundDecay - mov r6, r3 - ldr r3, _037FB9A8 ; =sOrgVolume - ldr r5, [sp, #0x18] - ldr r4, _037FB9AC ; =sOrgPan - ldr r2, [r2] - strb r5, [r4, r0] - cmp ip, #0 - movge r5, ip - mov r4, r0, lsl #4 - strb r1, [r3, r0] - cmp r2, #0 - ble _037FB974 - ldr r2, _037FB9B0 ; =0x0000FFF5 - mov r3, #1 - tst r2, r3, lsl r0 - beq _037FB974 - mov r0, r1 - mov r1, r5 - bl CalcSurroundDecay - mov r1, r0 -_037FB974: - mov r0, r5, lsl #0x10 - orr r0, r0, #0x60000000 - orr r2, r0, r7, lsl #8 - add r0, r4, #0x4000000 - orr r1, r1, r2 - str r1, [r0, #0x400] - rsb r1, r6, #0x10000 - add r0, r0, #0x400 - strh r1, [r0, #8] - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_037FB9A0: .word sMasterPan -_037FB9A4: .word sSurroundDecay -_037FB9A8: .word sOrgVolume -_037FB9AC: .word sOrgPan -_037FB9B0: .word 0x0000FFF5 - arm_func_end SND_SetupChannelNoise - - arm_func_start SND_StopChannel -SND_StopChannel: ; 0x037FB9B4 - mov r3, r0, lsl #4 - add r0, r3, #0x4000000 - ldr r2, [r0, #0x400] - add r0, r3, #0x400 - tst r1, #1 - bic r1, r2, #0x80000000 - add r0, r0, #0x4000000 - orrne r1, r1, #0x8000 - str r1, [r0] - bx lr - arm_func_end SND_StopChannel - - arm_func_start SND_SetChannelVolume -SND_SetChannelVolume: ; 0x037FB9DC - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _037FBA48 ; =sSurroundDecay - ldr ip, _037FBA4C ; =sOrgVolume - ldr r3, [r3] - mov r5, r0 - mov r4, r2 - strb r1, [ip, r5] - cmp r3, #0 - ble _037FBA2C - ldr r0, _037FBA50 ; =0x0000FFF5 - mov r2, #1 - tst r0, r2, lsl r5 - beq _037FBA2C - mov r0, r5, lsl #4 - add r0, r0, #0x4000000 - ldrb r2, [r0, #0x402] - mov r0, r1 - mov r1, r2 - bl CalcSurroundDecay - mov r1, r0 -_037FBA2C: - mov r0, r5, lsl #4 - add r0, r0, #0x4000000 - orr r1, r1, r4, lsl #8 - add r0, r0, #0x400 - strh r1, [r0] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_037FBA48: .word sSurroundDecay -_037FBA4C: .word sOrgVolume -_037FBA50: .word 0x0000FFF5 - arm_func_end SND_SetChannelVolume - - arm_func_start SND_SetChannelTimer -SND_SetChannelTimer: ; 0x037FBA54 - mov r0, r0, lsl #4 - add r0, r0, #0x4000000 - rsb r1, r1, #0x10000 - add r0, r0, #0x400 - strh r1, [r0, #8] - bx lr - arm_func_end SND_SetChannelTimer - - arm_func_start SND_SetChannelPan -SND_SetChannelPan: ; 0x037FBA6C - stmdb sp!, {r4, lr} - ldr r2, _037FBAD0 ; =sMasterPan - ldr r3, _037FBAD4 ; =sOrgPan - ldr r2, [r2] - strb r1, [r3, r0] - cmp r2, #0 - ldr r3, _037FBAD8 ; =sSurroundDecay - mov r4, r0, lsl #4 - movge r1, r2 - add r2, r4, #0x4000000 - strb r1, [r2, #0x402] - ldr r2, [r3] - cmp r2, #0 - ble _037FBAC8 - ldr r2, _037FBADC ; =0x0000FFF5 - mov r3, #1 - tst r2, r3, lsl r0 - beq _037FBAC8 - ldr r2, _037FBAE0 ; =sOrgVolume - ldrb r0, [r2, r0] - bl CalcSurroundDecay - add r1, r4, #0x4000000 - strb r0, [r1, #0x400] -_037FBAC8: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FBAD0: .word sMasterPan -_037FBAD4: .word sOrgPan -_037FBAD8: .word sSurroundDecay -_037FBADC: .word 0x0000FFF5 -_037FBAE0: .word sOrgVolume - arm_func_end SND_SetChannelPan - - arm_func_start SND_IsChannelActive -SND_IsChannelActive: ; 0x037FBAE4 - mov r0, r0, lsl #4 - add r0, r0, #0x4000000 - ldrb r0, [r0, #0x403] - tst r0, #0x80 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end SND_IsChannelActive - - arm_func_start SND_SetMasterPan -SND_SetMasterPan: ; 0x037FBB00 - ldr r1, _037FBB5C ; =sMasterPan - cmp r0, #0 - str r0, [r1] - blt _037FBB34 - mov r2, #0 - and r1, r0, #0xff -_037FBB18: - mov r0, r2, lsl #4 - add r0, r0, #0x4000000 - add r2, r2, #1 - strb r1, [r0, #0x402] - cmp r2, #0x10 - blt _037FBB18 - bx lr -_037FBB34: - ldr r2, _037FBB60 ; =sOrgPan - mov r3, #0 -_037FBB3C: - ldrb r1, [r2, r3] - mov r0, r3, lsl #4 - add r0, r0, #0x4000000 - add r3, r3, #1 - strb r1, [r0, #0x402] - cmp r3, #0x10 - blt _037FBB3C - bx lr - .align 2, 0 -_037FBB5C: .word sMasterPan -_037FBB60: .word sOrgPan - arm_func_end SND_SetMasterPan - - arm_func_start SND_GetChannelControl -SND_GetChannelControl: ; 0x037FBB64 - mov r0, r0, lsl #4 - add r0, r0, #0x4000000 - ldr r0, [r0, #0x400] - bx lr - arm_func_end SND_GetChannelControl - - arm_func_start SNDi_SetSurroundDecay -SNDi_SetSurroundDecay: ; 0x037FBB74 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _037FBBC8 ; =sSurroundDecay - ldr r5, _037FBBCC ; =sOrgVolume - ldr r4, _037FBBD0 ; =0x0000FFF5 - str r0, [r1] - mov r7, #0 - mov r6, #1 -_037FBB90: - tst r4, r6, lsl r7 - beq _037FBBB4 - mov r8, r7, lsl #4 - add r0, r8, #0x4000000 - ldrb r1, [r0, #0x402] - ldrb r0, [r5, r7] - bl CalcSurroundDecay - add r1, r8, #0x4000000 - strb r0, [r1, #0x400] -_037FBBB4: - add r7, r7, #1 - cmp r7, #0x10 - blt _037FBB90 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FBBC8: .word sSurroundDecay -_037FBBCC: .word sOrgVolume -_037FBBD0: .word 0x0000FFF5 - arm_func_end SNDi_SetSurroundDecay - - arm_func_start CalcSurroundDecay -CalcSurroundDecay: ; 0x037FBBD4 - cmp r1, #0x18 - bge _037FBC04 - ldr r2, _037FBC38 ; =sSurroundDecay - add r3, r1, #0x28 - ldr ip, [r2] - ldr r1, _037FBC3C ; =0x00007FFF - mul r2, ip, r3 - sub r1, r1, ip - add r1, r2, r1, lsl #6 - mul r1, r0, r1 - mov r0, r1, asr #0x15 - bx lr -_037FBC04: - cmp r1, #0x68 - bxle lr - ldr r2, _037FBC38 ; =sSurroundDecay - sub r1, r1, #0x28 - ldr ip, [r2] - rsb r2, ip, #0 - mul r3, r2, r1 - add r1, ip, #0xff - add r1, r1, #0x7f00 - add r1, r3, r1, lsl #6 - mul r1, r0, r1 - mov r0, r1, asr #0x15 - bx lr - .align 2, 0 -_037FBC38: .word sSurroundDecay -_037FBC3C: .word 0x00007FFF - arm_func_end CalcSurroundDecay - - arm_func_start SND_CalcTimer -SND_CalcTimer: ; 0x037FBC40 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - rsb r0, r1, #0 - mov r4, #0 - b _037FBC5C -_037FBC54: - sub r4, r4, #1 - add r0, r0, #0x300 -_037FBC5C: - cmp r0, #0 - blt _037FBC54 - b _037FBC70 -_037FBC68: - add r4, r4, #1 - sub r0, r0, #0x300 -_037FBC70: - cmp r0, #0x300 - bge _037FBC68 - bl __VENEER_SVC_GetPitchTable - adds r3, r0, #0x10000 - mov r0, r5, asr #0x1f - umull r2, r1, r3, r5 - mov ip, #0 - mla r1, r3, r0, r1 - adc r3, ip, #0 - sub r0, r4, #0x10 - mla r1, r3, r5, r1 - cmp r0, #0 - mov r4, #0x10000 - bgt _037FBCC8 - rsb r3, r0, #0 - mov r4, r2, lsr r3 - rsb r0, r3, #0x20 - orr r4, r4, r1, lsl r0 - sub r0, r3, #0x20 - mov r3, r1, lsr r3 - orr r4, r4, r1, lsr r0 - b _037FBD24 -_037FBCC8: - cmp r0, #0x20 - bge _037FBD1C - rsb r5, r0, #0x20 - sub lr, ip, #1 - mov r6, lr, lsl r5 - rsb r3, r5, #0x20 - orr r6, r6, lr, lsr r3 - sub r3, r5, #0x20 - orr r6, r6, lr, lsl r3 - and r3, r1, r6 - and r6, r2, lr, lsl r5 - cmp r3, ip - cmpeq r6, ip - subne r0, r4, #1 - bne _037FBD54 - mov r3, r1, lsl r0 - orr r3, r3, r2, lsr r5 - sub r1, r0, #0x20 - mov r4, r2, lsl r0 - orr r3, r3, r2, lsl r1 - b _037FBD24 -_037FBD1C: - sub r0, r4, #1 - b _037FBD54 -_037FBD24: - mov r0, #0x10 - cmp r3, #0 - cmpeq r4, #0x10 - mov r1, #0 - movlo r4, r0 - blo _037FBD4C - ldr r0, _037FBD5C ; =0x0000FFFF - cmp r3, r1 - cmpeq r4, r0 - movhi r4, r0 -_037FBD4C: - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 -_037FBD54: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_037FBD5C: .word 0x0000FFFF - arm_func_end SND_CalcTimer - - arm_func_start __VENEER_SVC_GetPitchTable -__VENEER_SVC_GetPitchTable: ; 0x037FBD60 - ldr ip, _037FBD68 ; =SVC_GetPitchTable - bx ip - .align 2, 0 -_037FBD68: .word SVC_GetPitchTable - arm_func_end __VENEER_SVC_GetPitchTable - - arm_func_start SND_CalcChannelVolume -SND_CalcChannelVolume: ; 0x037FBD6C - stmdb sp!, {r4, lr} - ldr r1, _037FBDDC ; =0xFFFFFD2D - mov r4, r0 - cmp r4, r1 - movlt r4, r1 - blt _037FBD8C - cmp r4, #0 - movgt r4, #0 -_037FBD8C: - add r0, r4, #0xd3 - add r0, r0, #0x200 - bl __VENEER_SVC_GetVolumeTable - mvn r2, #0xef - cmp r4, r2 - movlt r1, #3 - blt _037FBDC8 - add r1, r2, #0x78 - cmp r4, r1 - movlt r1, #2 - blt _037FBDC8 - add r1, r2, #0xb4 - cmp r4, r1 - movlt r1, #1 - movge r1, #0 -_037FBDC8: - orr r0, r0, r1, lsl #8 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FBDDC: .word 0xFFFFFD2D - arm_func_end SND_CalcChannelVolume - - arm_func_start __VENEER_SVC_GetVolumeTable -__VENEER_SVC_GetVolumeTable: ; 0x037FBDE0 - ldr ip, _037FBDE8 ; =SVC_GetVolumeTable - bx ip - .align 2, 0 -_037FBDE8: .word SVC_GetVolumeTable - arm_func_end __VENEER_SVC_GetVolumeTable - - arm_func_start SND_SinIdx -SND_SinIdx: ; 0x037FBDEC - cmp r0, #0x20 - ldrlt r1, _037FBE54 ; =SinTable - ldrltsb r0, [r1, r0] - bxlt lr - cmp r0, #0x40 - ldrlt r1, _037FBE54 ; =SinTable - rsblt r0, r0, #0x40 - ldrltsb r0, [r1, r0] - bxlt lr - cmp r0, #0x60 - bge _037FBE34 - ldr r1, _037FBE54 ; =SinTable - sub r0, r0, #0x40 - ldrsb r0, [r1, r0] - rsb r0, r0, #0 - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bx lr -_037FBE34: - ldr r1, _037FBE54 ; =SinTable - sub r0, r0, #0x60 - rsb r0, r0, #0x20 - ldrsb r0, [r1, r0] - rsb r0, r0, #0 - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bx lr - .align 2, 0 -_037FBE54: .word SinTable - arm_func_end SND_SinIdx - - arm_func_start SND_CalcRandom -SND_CalcRandom: ; 0x037FBE58 - ldr r2, _037FBE80 ; =u$3681 - ldr r0, _037FBE84 ; =0x0019660D - ldr r3, [r2] - ldr r1, _037FBE88 ; =0x3C6EF35F - mla r1, r3, r0, r1 - mov r0, r1, lsr #0x10 - mov r0, r0, lsl #0x10 - str r1, [r2] - mov r0, r0, lsr #0x10 - bx lr - .align 2, 0 -_037FBE80: .word u$3681 -_037FBE84: .word 0x0019660D -_037FBE88: .word 0x3C6EF35F - arm_func_end SND_CalcRandom - - arm_func_start SND_Init -SND_Init: ; 0x037FBE8C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _037FBEE8 ; =initialized$3619 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - bne _037FBEDC - mov r0, #1 - str r0, [r1] - bl SND_CommandInit - mov r0, #0x400 - str r0, [sp] - ldr r0, _037FBEEC ; =sndThread - ldr r1, _037FBEF0 ; =SndThread - ldr r3, _037FBEF4 ; =sWeakLockChannel - mov r2, #0 - str r4, [sp, #4] - bl OS_CreateThread - ldr r0, _037FBEEC ; =sndThread - bl OS_WakeupThreadDirect -_037FBEDC: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FBEE8: .word initialized$3619 -_037FBEEC: .word sndThread -_037FBEF0: .word SndThread -_037FBEF4: .word sWeakLockChannel - arm_func_end SND_Init - - arm_func_start SND_StartIntervalTimer -SND_StartIntervalTimer: ; 0x037FBEF8 - stmdb sp!, {lr} - sub sp, sp, #0xc - bl OS_GetTick - ldr r3, _037FBF3C ; =SndAlarmCallback - adds ip, r0, #0x10000 - str r3, [sp, #4] - mov lr, #0 - str lr, [sp, #8] - adc r2, r1, #0 - ldr r3, _037FBF40 ; =0x00000AA8 - ldr r0, _037FBF44 ; =sndAlarm - mov r1, ip - str lr, [sp] - bl OS_SetPeriodicAlarm - add sp, sp, #0xc - ldmia sp!, {lr} - bx lr - .align 2, 0 -_037FBF3C: .word SndAlarmCallback -_037FBF40: .word 0x00000AA8 -_037FBF44: .word sndAlarm - arm_func_end SND_StartIntervalTimer - - arm_func_start SND_StopIntervalTimer -SND_StopIntervalTimer: ; 0x037FBF48 - ldr ip, _037FBF54 ; =OS_CancelAlarm - ldr r0, _037FBF58 ; =sndAlarm - bx ip - .align 2, 0 -_037FBF54: .word OS_CancelAlarm -_037FBF58: .word sndAlarm - arm_func_end SND_StopIntervalTimer - - arm_func_start SND_SendWakeupMessage -SND_SendWakeupMessage: ; 0x037FBF5C - ldr ip, _037FBF70 ; =OS_SendMessage - ldr r0, _037FBF74 ; =sndMesgQueue - mov r1, #2 - mov r2, #0 - bx ip - .align 2, 0 -_037FBF70: .word OS_SendMessage -_037FBF74: .word sndMesgQueue - arm_func_end SND_SendWakeupMessage - - arm_func_start SNDi_LockMutex -SNDi_LockMutex: ; 0x037FBF78 - bx lr - arm_func_end SNDi_LockMutex - - arm_func_start SNDi_UnlockMutex -SNDi_UnlockMutex: ; 0x037FBF7C - bx lr - arm_func_end SNDi_UnlockMutex - - arm_func_start SndAlarmCallback -SndAlarmCallback: ; 0x037FBF80 - ldr ip, _037FBF94 ; =OS_SendMessage - ldr r0, _037FBF98 ; =sndMesgQueue - mov r1, #1 - mov r2, #0 - bx ip - .align 2, 0 -_037FBF94: .word OS_SendMessage -_037FBF98: .word sndMesgQueue - arm_func_end SndAlarmCallback - - arm_func_start SndThread -SndThread: ; 0x037FBF9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - ldr r0, _037FC07C ; =sndMesgQueue - ldr r1, _037FC080 ; =sndMesgBuffer - mov r2, #8 - bl OS_InitMessageQueue - ldr r0, _037FC084 ; =sndAlarm - bl OS_CreateAlarm - bl SND_ExChannelInit - bl SND_SeqInit - bl SND_AlarmInit - bl SND_Enable - mov r0, #0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl SND_SetOutputSelector - mov r0, #0x7f - bl SND_SetMasterVolume - bl OS_GetTick - ldr r2, _037FC088 ; =SndAlarmCallback - adds r4, r0, #0x10000 - str r2, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp] - adc r2, r1, #0 - ldr r3, _037FC08C ; =0x00000AA8 - ldr r0, _037FC084 ; =sndAlarm - mov r1, r4 - bl OS_SetPeriodicAlarm - ldr r7, _037FC07C ; =sndMesgQueue - mov r4, #1 - add r6, sp, #0xc - mov r8, #0 - mov r5, r4 -_037FC02C: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov sb, r8 - bl OS_ReceiveMessage - ldr r0, [sp, #0xc] - cmp r0, #1 - beq _037FC054 - cmp r0, #2 - b _037FC058 -_037FC054: - mov sb, r4 -_037FC058: - bl SND_UpdateExChannel - bl SND_CommandProc - mov r0, sb - bl SND_SeqMain - mov r0, sb - bl SND_ExChannelMain - bl SND_UpdateSharedWork - bl SND_CalcRandom - b _037FC02C - .align 2, 0 -_037FC07C: .word sndMesgQueue -_037FC080: .word sndMesgBuffer -_037FC084: .word sndAlarm -_037FC088: .word SndAlarmCallback -_037FC08C: .word 0x00000AA8 - arm_func_end SndThread - - arm_func_start SND_SetupCapture -SND_SetupCapture: ; 0x037FC090 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [sp, #0x10] - mov r5, r0, lsl #3 - cmp r4, #0 - movne r4, #0 - moveq r4, #1 - mov ip, r4, lsl #2 - ldr lr, [sp, #0x14] - orr r1, ip, r1, lsl #3 - orr ip, r1, lr, lsl #1 - ldr r4, [sp, #0x18] - add r0, r0, #0x4000000 - orr r4, r4, ip - strb r4, [r0, #0x508] - add r1, r5, #0x4000000 - str r2, [r1, #0x510] - add r0, r1, #0x500 - strh r3, [r0, #0x14] - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end SND_SetupCapture - - arm_func_start SND_IsCaptureActive -SND_IsCaptureActive: ; 0x037FC0E0 - add r0, r0, #0x4000000 - ldrb r0, [r0, #0x508] - tst r0, #0x80 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end SND_IsCaptureActive - - arm_func_start SND_ExChannelInit -SND_ExChannelInit: ; 0x037FC0F8 - stmdb sp!, {r3, lr} - ldr r3, _037FC14C ; =SNDi_Work - mov lr, #0 - mov r0, #0x54 -_037FC108: - mul r1, lr, r0 - add ip, r3, r1 - strb lr, [r3, r1] - ldrb r1, [ip, #3] - add lr, lr, #1 - bic r2, r1, #0xf8 - and r1, r2, #0xff - bic r1, r1, #1 - strb r1, [ip, #3] - cmp lr, #0x10 - blt _037FC108 - ldr r0, _037FC150 ; =sWeakLockChannel - mov r1, #0 - str r1, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FC14C: .word SNDi_Work -_037FC150: .word sWeakLockChannel - arm_func_end SND_ExChannelInit - - arm_func_start SND_UpdateExChannel -SND_UpdateExChannel: ; 0x037FC154 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x18 - ldr r7, _037FC33C ; =SNDi_Work - mov sb, #0 - mov r4, #2 - mov r5, #1 - mov r6, sb - mov sl, #0x54 -_037FC174: - mla r8, sb, sl, r7 - ldrb r0, [r8, #3] - mov r0, r0, lsl #0x18 - movs r0, r0, lsr #0x1b - beq _037FC2D4 - tst r0, #2 - beq _037FC19C - mov r0, sb - mov r1, r6 - bl SND_StopChannel -_037FC19C: - ldrb r0, [r8, #3] - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x1b - tst r0, #1 - beq _037FC278 - ldrb r0, [r8, #1] - cmp r0, #0 - beq _037FC1D0 - cmp r0, #1 - beq _037FC228 - cmp r0, #2 - beq _037FC254 - b _037FC2D4 -_037FC1D0: - ldrb r0, [r8, #0x39] - ldrh ip, [r8, #0x24] - cmp r0, #0 - ldrh r0, [r8, #0x3e] - movne r3, r5 - str r0, [sp] - ldr r2, [r8, #0x40] - and r1, ip, #0xff - str r2, [sp, #4] - str r1, [sp, #8] - mov r0, ip, asr #8 - str r0, [sp, #0xc] - ldrh r1, [r8, #0x26] - moveq r3, r4 - str r1, [sp, #0x10] - ldrb r1, [r8, #0x23] - mov r0, sb - str r1, [sp, #0x14] - ldr r1, [r8, #0x44] - ldrb r2, [r8, #0x38] - bl SND_SetupChannelPcm - b _037FC2D4 -_037FC228: - ldrh r3, [r8, #0x24] - ldrh r1, [r8, #0x26] - mov r0, sb - str r1, [sp] - ldrb r1, [r8, #0x23] - and r2, r3, #0xff - str r1, [sp, #4] - ldr r1, [r8, #0x44] - mov r3, r3, asr #8 - bl SND_SetupChannelPsg - b _037FC2D4 -_037FC254: - ldrh r2, [r8, #0x24] - ldrb r1, [r8, #0x23] - mov r0, sb - str r1, [sp] - ldrh r3, [r8, #0x26] - and r1, r2, #0xff - mov r2, r2, asr #8 - bl SND_SetupChannelNoise - b _037FC2D4 -_037FC278: - tst r0, #4 - beq _037FC28C - ldrh r1, [r8, #0x26] - mov r0, sb - bl SND_SetChannelTimer -_037FC28C: - ldrb r0, [r8, #3] - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x1b - tst r0, #8 - beq _037FC2B4 - ldrh r2, [r8, #0x24] - mov r0, sb - and r1, r2, #0xff - mov r2, r2, asr #8 - bl SND_SetChannelVolume -_037FC2B4: - ldrb r0, [r8, #3] - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x1b - tst r0, #0x10 - beq _037FC2D4 - ldrb r1, [r8, #0x23] - mov r0, sb - bl SND_SetChannelPan -_037FC2D4: - add sb, sb, #1 - cmp sb, #0x10 - blt _037FC174 - ldr r3, _037FC33C ; =SNDi_Work - mov r4, #0 - mov r1, #0x54 -_037FC2EC: - mla r5, r4, r1, r3 - ldrb r0, [r5, #3] - mov r0, r0, lsl #0x18 - movs r0, r0, lsr #0x1b - beq _037FC324 - tst r0, #1 - movne r0, r4, lsl #4 - addne r0, r0, #0x4000000 - ldrneb r2, [r0, #0x403] - orrne r2, r2, #0x80 - strneb r2, [r0, #0x403] - ldrb r0, [r5, #3] - bic r0, r0, #0xf8 - strb r0, [r5, #3] -_037FC324: - add r4, r4, #1 - cmp r4, #0x10 - blt _037FC2EC - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_037FC33C: .word SNDi_Work - arm_func_end SND_UpdateExChannel - - arm_func_start SND_ExChannelMain -SND_ExChannelMain: ; 0x037FC340 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 - mov r0, #0x8000 - rsb r0, r0, #0 - mov r6, #0 - str r0, [sp] - mov r4, r6 -_037FC35C: - ldr r0, _037FC6E8 ; =SNDi_Work - mov r1, #0x54 - mla r5, r6, r1, r0 - ldrb r2, [r5, #3] - mov r7, #0 - mov r0, r2, lsl #0x1f - mov r8, r7 - mov sb, r7 - movs r0, r0, lsr #0x1f - beq _037FC6D4 - mov r0, r2, lsl #0x1e - movs r0, r0, lsr #0x1f - beq _037FC3C0 - bic r1, r2, #0xf8 - mov r0, r2, lsl #0x18 - mov r0, r0, lsr #0x1b - orr r0, r0, #1 - and r0, r0, #0xff - mov r0, r0, lsl #0x1b - orr r0, r1, r0, lsr #24 - strb r0, [r5, #3] - and r0, r0, #0xff - bic r0, r0, #2 - strb r0, [r5, #3] - b _037FC410 -_037FC3C0: - mov r0, r6 - bl SND_IsChannelActive - cmp r0, #0 - bne _037FC410 - ldr r3, [r5, #0x48] - cmp r3, #0 - moveq r0, r7 - streqb r0, [r5, #0x22] - beq _037FC3F8 - ldr r2, [r5, #0x4c] - mov r0, r5 - mov r1, #1 - mov lr, pc - bx r3 -_037FC3F8: - mov r0, #0 - strh r0, [r5, #0x24] - ldrb r0, [r5, #3] - bic r0, r0, #1 - strb r0, [r5, #3] - b _037FC6D4 -_037FC410: - ldrb r0, [r5, #9] - ldrb r1, [r5, #8] - mov r2, r0, lsl #1 - ldr r0, _037FC6EC ; =SNDi_DecibelTable - ldrsh r2, [r0, r2] - ldrb r0, [r5, #5] - add r7, r7, r2 - sub r0, r1, r0 - add r8, r8, r0, lsl #6 - mov r0, r5 - mov r1, fp - bl SND_UpdateExChannelEnvelope - ldrsh r3, [r5, #0x32] - add r7, r7, r0 - cmp r3, #0 - moveq r0, #0 - beq _037FC498 - ldr r0, [r5, #0x14] - ldr r2, [r5, #0x18] - cmp r0, r2 - movge r0, #0 - bge _037FC498 - sub r0, r2, r0 - smull r0, r1, r3, r0 - mov r3, r2, asr #0x1f - bl _ll_sdiv - cmp fp, #0 - beq _037FC498 - ldrb r1, [r5, #3] - mov r1, r1, lsl #0x1d - movs r1, r1, lsr #0x1f - ldrne r1, [r5, #0x14] - addne r1, r1, #1 - strne r1, [r5, #0x14] -_037FC498: - ldrsh r1, [r5, #0xc] - add r2, r8, r0 - ldrsh r0, [r5, #6] - add r1, r7, r1 - add r7, r1, r0 - ldrsh r1, [r5, #0xe] - add r0, r5, #0x28 - add r8, r2, r1 - bl SND_GetLfoValue - mov r1, r0, asr #0x1f - cmp r1, #0 - mov sl, r0 - cmpeq r0, r4 - beq _037FC524 - ldrb r2, [r5, #0x28] - cmp r2, #0 - beq _037FC510 - cmp r2, #1 - beq _037FC4F8 - cmp r2, #2 - moveq r1, r1, lsl #6 - orreq r1, r1, r0, lsr #26 - moveq sl, r0, lsl #6 - b _037FC51C -_037FC4F8: - mov r2, #0x3c - umull sl, r3, r0, r2 - mov r0, #0x3c - mla r3, r1, r0, r3 - mov r1, r3 - b _037FC51C -_037FC510: - mov r1, r1, lsl #6 - orr r1, r1, r0, lsr #26 - mov sl, r0, lsl #6 -_037FC51C: - mov sl, sl, lsr #0xe - orr sl, sl, r1, lsl #18 -_037FC524: - cmp fp, #0 - beq _037FC534 - add r0, r5, #0x28 - bl SND_UpdateLfo -_037FC534: - ldrb r0, [r5, #0x28] - cmp r0, #0 - beq _037FC564 - cmp r0, #1 - beq _037FC554 - cmp r0, #2 - addeq sb, sb, sl - b _037FC568 -_037FC554: - ldr r0, [sp] - cmp r7, r0 - addgt r7, r7, sl - b _037FC568 -_037FC564: - add r8, r8, sl -_037FC568: - ldrsb r1, [r5, #0xa] - ldrb r0, [r5, #4] - add sb, sb, r1 - cmp r0, #0x7f - mulne r0, sb, r0 - addne r0, r0, #0x40 - movne sb, r0, asr #7 - ldrsb r1, [r5, #0xb] - ldrb r0, [r5, #2] - add sb, sb, r1 - cmp r0, #3 - bne _037FC5F4 - ldr r0, _037FC6F0 ; =0xFFFFFD2D - cmp r7, r0 - bgt _037FC5F4 - ldrb r0, [r5, #3] - bic r0, r0, #0xf8 - orr r0, r0, #0x10 - strb r0, [r5, #3] - ldr r3, [r5, #0x48] - cmp r3, #0 - moveq r0, #0 - streqb r0, [r5, #0x22] - beq _037FC5DC - ldr r2, [r5, #0x4c] - mov r0, r5 - mov r1, #1 - mov lr, pc - bx r3 -_037FC5DC: - mov r0, #0 - strh r0, [r5, #0x24] - ldrb r0, [r5, #3] - bic r0, r0, #1 - strb r0, [r5, #3] - b _037FC6D4 -_037FC5F4: - mov r0, r7 - bl SND_CalcChannelVolume - mov r7, r0 - ldrh r0, [r5, #0x3c] - mov r1, r8 - bl SND_CalcTimer - ldrb r1, [r5, #1] - cmp r1, #1 - ldreq r1, _037FC6F4 ; =0x0000FFFC - andeq r0, r0, r1 - moveq r0, r0, lsl #0x10 - moveq r0, r0, lsr #0x10 - adds sb, sb, #0x40 - movmi sb, #0 - bmi _037FC638 - cmp sb, #0x7f - movgt sb, #0x7f -_037FC638: - ldrh r1, [r5, #0x24] - cmp r7, r1 - beq _037FC66C - strh r7, [r5, #0x24] - ldrb r1, [r5, #3] - bic r2, r1, #0xf8 - mov r1, r1, lsl #0x18 - mov r1, r1, lsr #0x1b - orr r1, r1, #8 - and r1, r1, #0xff - mov r1, r1, lsl #0x1b - orr r1, r2, r1, lsr #24 - strb r1, [r5, #3] -_037FC66C: - ldrh r1, [r5, #0x26] - cmp r0, r1 - beq _037FC6A0 - strh r0, [r5, #0x26] - ldrb r0, [r5, #3] - bic r1, r0, #0xf8 - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x1b - orr r0, r0, #4 - and r0, r0, #0xff - mov r0, r0, lsl #0x1b - orr r0, r1, r0, lsr #24 - strb r0, [r5, #3] -_037FC6A0: - ldrb r0, [r5, #0x23] - cmp sb, r0 - beq _037FC6D4 - strb sb, [r5, #0x23] - ldrb r0, [r5, #3] - bic r1, r0, #0xf8 - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x1b - orr r0, r0, #0x10 - and r0, r0, #0xff - mov r0, r0, lsl #0x1b - orr r0, r1, r0, lsr #24 - strb r0, [r5, #3] -_037FC6D4: - add r6, r6, #1 - cmp r6, #0x10 - blt _037FC35C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FC6E8: .word SNDi_Work -_037FC6EC: .word SNDi_DecibelTable -_037FC6F0: .word 0xFFFFFD2D -_037FC6F4: .word 0x0000FFFC - arm_func_end SND_ExChannelMain - - arm_func_start SND_StartExChannelPcm -SND_StartExChannelPcm: ; 0x037FC6F8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - strb r0, [r4, #1] - mov lr, r2 - add ip, r4, #0x38 - ldmia r1, {r0, r1, r2} - stmia ip, {r0, r1, r2} - mov r0, r4 - mov r1, r3 - str lr, [r4, #0x44] - bl StartExChannel - mov r0, #1 - ldmia sp!, {r4, lr} - bx lr - arm_func_end SND_StartExChannelPcm - - arm_func_start SND_StartExChannelPsg -SND_StartExChannelPsg: ; 0x037FC734 - stmdb sp!, {r3, lr} - ldrb r3, [r0] - cmp r3, #8 - movlo r0, #0 - blo _037FC774 - cmp r3, #0xd - movhi r0, #0 - bhi _037FC774 - mov r3, #1 - strb r3, [r0, #1] - str r1, [r0, #0x44] - ldr r3, _037FC77C ; =0x00001F46 - mov r1, r2 - strh r3, [r0, #0x3c] - bl StartExChannel - mov r0, #1 -_037FC774: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FC77C: .word 0x00001F46 - arm_func_end SND_StartExChannelPsg - - arm_func_start SND_StartExChannelNoise -SND_StartExChannelNoise: ; 0x037FC780 - stmdb sp!, {r3, lr} - ldrb r2, [r0] - cmp r2, #0xe - movlo r0, #0 - blo _037FC7B8 - cmp r2, #0xf - movhi r0, #0 - bhi _037FC7B8 - ldr r2, _037FC7C0 ; =0x00001F46 - mov r3, #2 - strb r3, [r0, #1] - strh r2, [r0, #0x3c] - bl StartExChannel - mov r0, #1 -_037FC7B8: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FC7C0: .word 0x00001F46 - arm_func_end SND_StartExChannelNoise - - arm_func_start SND_UpdateExChannelEnvelope -SND_UpdateExChannelEnvelope: ; 0x037FC7C4 - cmp r1, #0 - beq _037FC85C - ldrb r1, [r0, #2] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _037FC85C -_037FC7DC: ; jump table - b _037FC7EC ; case 0 - b _037FC814 ; case 1 - b _037FC85C ; case 2 - b _037FC84C ; case 3 -_037FC7EC: - ldr r2, [r0, #0x10] - ldrb r1, [r0, #0x1c] - rsb r2, r2, #0 - mul r1, r2, r1 - mov r1, r1, asr #8 - rsbs r1, r1, #0 - str r1, [r0, #0x10] - moveq r1, #1 - streqb r1, [r0, #2] - b _037FC85C -_037FC814: - ldrb r2, [r0, #0x1d] - ldr r1, _037FC868 ; =SNDi_DecibelTable - mov r2, r2, lsl #1 - ldrsh r3, [r1, r2] - ldr r2, [r0, #0x10] - ldrh r1, [r0, #0x1e] - mov ip, r3, lsl #7 - sub r1, r2, r1 - str r1, [r0, #0x10] - cmp r1, r3, lsl #7 - strle ip, [r0, #0x10] - movle r1, #2 - strleb r1, [r0, #2] - b _037FC85C -_037FC84C: - ldr r2, [r0, #0x10] - ldrh r1, [r0, #0x20] - sub r1, r2, r1 - str r1, [r0, #0x10] -_037FC85C: - ldr r0, [r0, #0x10] - mov r0, r0, asr #7 - bx lr - .align 2, 0 -_037FC868: .word SNDi_DecibelTable - arm_func_end SND_UpdateExChannelEnvelope - - arm_func_start SND_SetExChannelAttack -SND_SetExChannelAttack: ; 0x037FC86C - cmp r1, #0x6d - ldrge r2, _037FC888 ; =attack_table$3790 - rsblt r1, r1, #0xff - rsbge r1, r1, #0x7f - ldrgeb r1, [r2, r1] - strb r1, [r0, #0x1c] - bx lr - .align 2, 0 -_037FC888: .word attack_table$3790 - arm_func_end SND_SetExChannelAttack - - arm_func_start SND_SetExChannelDecay -SND_SetExChannelDecay: ; 0x037FC88C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl CalcRelease - strh r0, [r4, #0x1e] - ldmia sp!, {r4, lr} - bx lr - arm_func_end SND_SetExChannelDecay - - arm_func_start SND_SetExChannelSustain -SND_SetExChannelSustain: ; 0x037FC8A8 - strb r1, [r0, #0x1d] - bx lr - arm_func_end SND_SetExChannelSustain - - arm_func_start SND_SetExChannelRelease -SND_SetExChannelRelease: ; 0x037FC8B0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl CalcRelease - strh r0, [r4, #0x20] - ldmia sp!, {r4, lr} - bx lr - arm_func_end SND_SetExChannelRelease - - arm_func_start SND_ReleaseExChannel -SND_ReleaseExChannel: ; 0x037FC8CC - mov r1, #3 - strb r1, [r0, #2] - bx lr - arm_func_end SND_ReleaseExChannel - - arm_func_start SND_IsExChannelActive -SND_IsExChannelActive: ; 0x037FC8D8 - ldrb r0, [r0, #3] - mov r0, r0, lsl #0x1f - mov r0, r0, lsr #0x1f - bx lr - arm_func_end SND_IsExChannelActive - - arm_func_start SND_AllocExChannel -SND_AllocExChannel: ; 0x037FC8E8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _037FCAA0 ; =sWeakLockChannel - mov r6, r1 - ldr r1, [r4, #4] - mov r5, r3 - mvn r1, r1 - cmp r2, #0 - and r0, r0, r1 - ldreq r1, [r4] - mov r4, #0 - mvneq r1, r1 - andeq r0, r0, r1 - ldr r3, _037FCAA4 ; =shift$4005 - ldr r8, _037FCAA8 ; =channel_order$3829 - mov sb, r4 - mvn r1, #0 - mov fp, #1 -_037FC92C: - ldrb ip, [r8, sb] - tst r0, fp, lsl ip - beq _037FC9AC - ldr r2, _037FCAAC ; =SNDi_Work - mov r7, #0x54 - mla sl, ip, r7, r2 - cmp r4, #0 - moveq r4, sl - beq _037FC9AC - ldrb r7, [r4, #0x22] - ldrb r2, [sl, #0x22] - cmp r2, r7 - bhi _037FC9AC - bne _037FC9A8 - ldrh r2, [r4, #0x24] - ldrh r7, [sl, #0x24] - mov ip, r2, lsl #0x18 - mov ip, ip, lsr #0x14 - ldrb r2, [r3, r2, asr #8] - mov lr, r7, lsl #0x18 - mov r2, ip, asr r2 - mov ip, lr, lsr #0x14 - ldrb r7, [r3, r7, asr #8] - cmp r2, ip, asr r7 - beq _037FC99C - movlt r2, fp - movge r2, r1 - b _037FC9A0 -_037FC99C: - mov r2, #0 -_037FC9A0: - cmp r2, #0 - bge _037FC9AC -_037FC9A8: - mov r4, sl -_037FC9AC: - add sb, sb, #1 - cmp sb, #0x10 - blt _037FC92C - cmp r4, #0 - moveq r0, #0 - beq _037FCA98 - ldrb r0, [r4, #0x22] - cmp r6, r0 - movlt r0, #0 - blt _037FCA98 - ldr r3, [r4, #0x48] - cmp r3, #0 - beq _037FC9F4 - ldr r2, [r4, #0x4c] - mov r0, r4 - mov r1, #0 - mov lr, pc - bx r3 -_037FC9F4: - ldrb r0, [r4, #3] - mov r7, #0 - bic r0, r0, #0xf8 - orr r1, r0, #0x10 - and r0, r1, #0xff - bic r0, r0, #1 - strb r0, [r4, #3] - str r7, [r4, #0x50] - ldr r0, [sp, #0x28] - str r5, [r4, #0x48] - str r0, [r4, #0x4c] - str r7, [r4, #0x34] - strb r6, [r4, #0x22] - mov r3, #0x7f - strh r3, [r4, #0x24] - ldrb r1, [r4, #3] - mov r0, #0x3c - bic r2, r1, #2 - and r1, r2, #0xff - orr r1, r1, #4 - strb r1, [r4, #3] - strb r0, [r4, #8] - strb r0, [r4, #5] - strb r3, [r4, #9] - strb r7, [r4, #0xa] - strh r7, [r4, #0xc] - strh r7, [r4, #6] - strh r7, [r4, #0xe] - strb r7, [r4, #0xb] - strb r3, [r4, #4] - strh r7, [r4, #0x32] - str r7, [r4, #0x18] - str r7, [r4, #0x14] - ldr r1, _037FCAB0 ; =0x0000FFFF - strb r7, [r4, #0x1c] - strh r1, [r4, #0x1e] - strb r3, [r4, #0x1d] - add r0, r4, #0x28 - strh r1, [r4, #0x20] - bl SND_InitLfoParam - mov r0, r4 -_037FCA98: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FCAA0: .word sWeakLockChannel -_037FCAA4: .word shift$4005 -_037FCAA8: .word channel_order$3829 -_037FCAAC: .word SNDi_Work -_037FCAB0: .word 0x0000FFFF - arm_func_end SND_AllocExChannel - - arm_func_start SND_FreeExChannel -SND_FreeExChannel: ; 0x037FCAB4 - cmp r0, #0 - movne r1, #0 - strne r1, [r0, #0x48] - strne r1, [r0, #0x4c] - bx lr - arm_func_end SND_FreeExChannel - - arm_func_start SND_StopUnlockedChannel -SND_StopUnlockedChannel: ; 0x037FCAC8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, #0 - ldr r7, _037FCB70 ; =SNDi_Work - ldr r4, _037FCB74 ; =sWeakLockChannel - mov sl, r0 - mov r5, sb - mov r6, #1 - mov fp, #0x54 - b _037FCB58 -_037FCAEC: - tst sl, #1 - beq _037FCB50 - ldr r0, [r4, #4] - mla r8, sb, fp, r7 - tst r0, r6, lsl sb - bne _037FCB50 - ldr r3, [r8, #0x48] - cmp r3, #0 - beq _037FCB24 - ldr r2, [r8, #0x4c] - mov r0, r8 - mov r1, #0 - mov lr, pc - bx r3 -_037FCB24: - mov r0, sb - mov r1, #0 - bl SND_StopChannel - strb r5, [r8, #0x22] - mov r0, r8 - bl SND_FreeExChannel - ldrb r0, [r8, #3] - bic r1, r0, #0xf8 - and r0, r1, #0xff - bic r0, r0, #1 - strb r0, [r8, #3] -_037FCB50: - add sb, sb, #1 - mov sl, sl, lsr #1 -_037FCB58: - cmp sb, #0x10 - bge _037FCB68 - cmp sl, #0 - bne _037FCAEC -_037FCB68: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FCB70: .word SNDi_Work -_037FCB74: .word sWeakLockChannel - arm_func_end SND_StopUnlockedChannel - - arm_func_start SND_LockChannel -SND_LockChannel: ; 0x037FCB78 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r8, #0 - ldr r5, _037FCC50 ; =SNDi_Work - mov sb, r1 - mov r7, sl - mov fp, r8 - mov r4, #1 - b _037FCC14 -_037FCB9C: - tst r7, #1 - beq _037FCC0C - ldr r0, _037FCC54 ; =sWeakLockChannel - ldr r1, [r0, #4] - mov r0, #0x54 - mla r6, r8, r0, r5 - tst r1, r4, lsl r8 - bne _037FCC0C - ldr r3, [r6, #0x48] - cmp r3, #0 - beq _037FCBDC - ldr r2, [r6, #0x4c] - mov r0, r6 - mov r1, #0 - mov lr, pc - bx r3 -_037FCBDC: - mov r0, r8 - mov r1, #0 - bl SND_StopChannel - strb fp, [r6, #0x22] - mov r0, r6 - bl SND_FreeExChannel - ldrb r0, [r6, #3] - bic r0, r0, #0xf8 - strb r0, [r6, #3] - and r0, r0, #0xff - bic r0, r0, #1 - strb r0, [r6, #3] -_037FCC0C: - add r8, r8, #1 - mov r7, r7, lsr #1 -_037FCC14: - cmp r8, #0x10 - bge _037FCC24 - cmp r7, #0 - bne _037FCB9C -_037FCC24: - tst sb, #1 - ldrne r0, _037FCC54 ; =sWeakLockChannel - ldrne r1, [r0] - orrne r1, r1, sl - strne r1, [r0] - ldreq r0, _037FCC54 ; =sWeakLockChannel - ldreq r1, [r0, #4] - orreq r1, r1, sl - streq r1, [r0, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FCC50: .word SNDi_Work -_037FCC54: .word sWeakLockChannel - arm_func_end SND_LockChannel - - arm_func_start SND_UnlockChannel -SND_UnlockChannel: ; 0x037FCC58 - tst r1, #1 - ldreq r1, _037FCC8C ; =sWeakLockChannel - mvneq r0, r0 - ldreq r2, [r1, #4] - andeq r0, r2, r0 - streq r0, [r1, #4] - bxeq lr - ldr r1, _037FCC8C ; =sWeakLockChannel - mvn r0, r0 - ldr r2, [r1] - and r0, r2, r0 - str r0, [r1] - bx lr - .align 2, 0 -_037FCC8C: .word sWeakLockChannel - arm_func_end SND_UnlockChannel - - arm_func_start SND_GetLockedChannel -SND_GetLockedChannel: ; 0x037FCC90 - tst r0, #1 - ldrne r0, _037FCCA8 ; =sWeakLockChannel - ldrne r0, [r0] - ldreq r0, _037FCCA8 ; =sWeakLockChannel - ldreq r0, [r0, #4] - bx lr - .align 2, 0 -_037FCCA8: .word sWeakLockChannel - arm_func_end SND_GetLockedChannel - - arm_func_start SND_InvalidateWave -SND_InvalidateWave: ; 0x037FCCAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r5, _037FCD24 ; =SNDi_Work - mov r6, #0 - mov r8, r0 - mov r7, r1 - mov r4, r6 - mov sb, #0x54 -_037FCCC8: - mla r2, r6, sb, r5 - ldrb r1, [r2, #3] - mov r0, r1, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _037FCD0C - ldrb r0, [r2, #1] - cmp r0, #0 - bne _037FCD0C - ldr r0, [r2, #0x44] - cmp r8, r0 - cmpls r0, r7 - bhi _037FCD0C - bic r3, r1, #2 - mov r0, r6 - mov r1, r4 - strb r3, [r2, #3] - bl SND_StopChannel -_037FCD0C: - add r0, r6, #1 - and r6, r0, #0xff - cmp r6, #0x10 - blo _037FCCC8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_037FCD24: .word SNDi_Work - arm_func_end SND_InvalidateWave - - arm_func_start SND_InitLfoParam -SND_InitLfoParam: ; 0x037FCD28 - mov r2, #0 - strb r2, [r0] - strb r2, [r0, #2] - mov r1, #1 - strb r1, [r0, #3] - mov r1, #0x10 - strb r1, [r0, #1] - strh r2, [r0, #4] - bx lr - arm_func_end SND_InitLfoParam - - arm_func_start SND_UpdateLfo -SND_UpdateLfo: ; 0x037FCD4C - ldrh r2, [r0, #6] - ldrh r1, [r0, #4] - cmp r2, r1 - addlo r1, r2, #1 - strloh r1, [r0, #6] - bxlo lr - ldrh r1, [r0, #8] - ldrb r2, [r0, #1] - add r1, r1, r2, lsl #6 - mov r3, r1, lsr #8 - b _037FCD7C -_037FCD78: - sub r3, r3, #0x80 -_037FCD7C: - cmp r3, #0x80 - bhs _037FCD78 - ldrh r1, [r0, #8] - add r1, r1, r2, lsl #6 - strh r1, [r0, #8] - ldrh r1, [r0, #8] - and r1, r1, #0xff - strh r1, [r0, #8] - ldrh r1, [r0, #8] - orr r1, r1, r3, lsl #8 - strh r1, [r0, #8] - bx lr - arm_func_end SND_UpdateLfo - - arm_func_start SND_GetLfoValue -SND_GetLfoValue: ; 0x037FCDAC - stmdb sp!, {r4, lr} - mov r4, r0 - ldrb r0, [r4, #2] - cmp r0, #0 - moveq r0, #0 - beq _037FCDF4 - ldrh r1, [r4, #6] - ldrh r0, [r4, #4] - cmp r1, r0 - movlo r0, #0 - blo _037FCDF4 - ldrh r0, [r4, #8] - mov r0, r0, lsr #8 - bl SND_SinIdx - ldrb r1, [r4, #2] - ldrb r2, [r4, #3] - mul r0, r1, r0 - mul r0, r2, r0 -_037FCDF4: - ldmia sp!, {r4, lr} - bx lr - arm_func_end SND_GetLfoValue - - arm_func_start CalcRelease -CalcRelease: ; 0x037FCDFC - stmdb sp!, {r3, lr} - cmp r0, #0x7f - ldreq r0, _037FCE4C ; =0x0000FFFF - beq _037FCE44 - cmp r0, #0x7e - moveq r0, #0x3c00 - beq _037FCE44 - cmp r0, #0x32 - movlt r0, r0, lsl #1 - addlt r0, r0, #1 - movlt r0, r0, lsl #0x10 - movlt r0, r0, lsr #0x10 - blt _037FCE44 - rsb r1, r0, #0x7e - mov r0, #0x1e00 - bl _s32_div_f - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 -_037FCE44: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FCE4C: .word 0x0000FFFF - arm_func_end CalcRelease - - arm_func_start StartExChannel -StartExChannel: ; 0x037FCE50 - ldr r3, _037FCE84 ; =0xFFFE9680 - mov r2, #0 - str r3, [r0, #0x10] - strb r2, [r0, #2] - str r1, [r0, #0x34] - strh r2, [r0, #0x30] - strh r2, [r0, #0x2e] - ldrb r1, [r0, #3] - orr r2, r1, #2 - bic r1, r2, #1 - orr r1, r1, #1 - strb r1, [r0, #3] - bx lr - .align 2, 0 -_037FCE84: .word 0xFFFE9680 - arm_func_end StartExChannel - - arm_func_start SND_SeqInit -SND_SeqInit: ; 0x037FCE88 - stmdb sp!, {r3, lr} - ldr r3, _037FCEE4 ; =SNDi_Work + 0x540 - mov lr, #0 - mov r0, #0x24 -_037FCE98: - mul r2, lr, r0 - ldrb r1, [r3, r2] - add ip, r3, r2 - bic r1, r1, #1 - strb r1, [r3, r2] - strb lr, [ip, #1] - add lr, lr, #1 - cmp lr, #0x10 - blt _037FCE98 - ldr r1, _037FCEE8 ; =SNDi_Work + 0x780 - mov r2, #0 -_037FCEC4: - ldrb r0, [r1, r2, lsl #6] - bic r0, r0, #1 - strb r0, [r1, r2, lsl #6] - add r2, r2, #1 - cmp r2, #0x20 - blt _037FCEC4 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FCEE4: .word SNDi_Work + 0x540 -_037FCEE8: .word SNDi_Work + 0x780 - arm_func_end SND_SeqInit - - arm_func_start SND_SeqMain -SND_SeqMain: ; 0x037FCEEC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r6, #0 - mov sb, r0 - mov r5, r6 -_037FCEFC: - mov r0, #0x24 - mul r0, r5, r0 - ldr r2, _037FD044 ; =SNDi_Work + 0x540 - ldrb r1, [r2, r0] - add r4, r2, r0 - mov r0, r1, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _037FD020 - mov r0, r1, lsl #0x1e - movs r0, r0, lsr #0x1f - beq _037FD00C - cmp sb, #0 - beq _037FCFD8 - mov r0, r1, lsl #0x1d - movs r0, r0, lsr #0x1f - bne _037FCFD8 - mov r8, #0 - b _037FCF54 -_037FCF44: - ldrh r0, [r4, #0x1c] - add r8, r8, #1 - sub r0, r0, #0xf0 - strh r0, [r4, #0x1c] -_037FCF54: - ldrh r0, [r4, #0x1c] - cmp r0, #0xf0 - bhs _037FCF44 - mov r7, #0 - mov sl, #1 - b _037FCF90 -_037FCF6C: - mov r0, r4 - mov r1, sl - bl PlayerSeqMain - cmp r0, #0 - beq _037FCF8C - mov r0, r4 - bl FinishPlayer - b _037FCF98 -_037FCF8C: - add r7, r7, #1 -_037FCF90: - cmp r7, r8 - blt _037FCF6C -_037FCF98: - ldr r0, _037FD048 ; =SNDi_SharedWork - ldr r2, [r0] - cmp r2, #0 - beq _037FCFC0 - ldrb r1, [r4, #1] - mov r0, #0x24 - mla r2, r1, r0, r2 - ldr r0, [r2, #0x40] - add r0, r0, r7 - str r0, [r2, #0x40] -_037FCFC0: - ldrh r2, [r4, #0x18] - ldrh r1, [r4, #0x1a] - ldrh r0, [r4, #0x1c] - mul r1, r2, r1 - add r0, r0, r1, asr #8 - strh r0, [r4, #0x1c] -_037FCFD8: - mov r8, #0 - mov r7, #1 -_037FCFE0: - mov r0, r4 - mov r1, r8 - bl GetPlayerTrack - cmp r0, #0 - beq _037FD000 - mov r1, r4 - mov r2, r7 - bl UpdateTrackChannel -_037FD000: - add r8, r8, #1 - cmp r8, #0x10 - blt _037FCFE0 -_037FD00C: - ldrb r0, [r4] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - movne r0, #1 - orrne r6, r6, r0, lsl r5 -_037FD020: - add r5, r5, #1 - cmp r5, #0x10 - blt _037FCEFC - ldr r0, _037FD048 ; =SNDi_SharedWork - ldr r0, [r0] - cmp r0, #0 - strne r6, [r0, #4] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_037FD044: .word SNDi_Work + 0x540 -_037FD048: .word SNDi_SharedWork - arm_func_end SND_SeqMain - - arm_func_start SND_PrepareSeq -SND_PrepareSeq: ; 0x037FD04C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r0, #0x24 - mul r5, sb, r0 - ldr r6, _037FD21C ; =SNDi_Work + 0x540 - mov r8, r1 - ldrb r0, [r6, r5] - mov r7, r2 - mov r0, r0, lsl #0x1f - mov r4, r3 - add r5, r6, r5 - movs r0, r0, lsr #0x1f - beq _037FD088 - mov r0, r5 - bl FinishPlayer -_037FD088: - ldrb r1, [r5] - mov r0, #0x78 - bic r1, r1, #4 - strb r1, [r5] - str r4, [r5, #0x20] - strh r0, [r5, #0x18] - mov r0, #0x100 - strh r0, [r5, #0x1a] - mov r0, #0xf0 - strh r0, [r5, #0x1c] - mov r0, #0x7f - strb r0, [r5, #5] - mov r2, #0 - strh r2, [r5, #6] - mov r0, #0x40 - strb r0, [r5, #4] - mov r1, #0xff -_037FD0CC: - add r0, r5, r2 - add r2, r2, #1 - strb r1, [r0, #8] - cmp r2, #0x10 - blt _037FD0CC - ldr r1, _037FD220 ; =SNDi_SharedWork - ldr r3, [r1] - cmp r3, #0 - beq _037FD12C - ldrb r2, [r5, #1] - mov r0, #0x24 - mla r0, r2, r0, r3 - mov r6, #0 - str r6, [r0, #0x40] - mvn r4, #0 - mov r0, #0x24 -_037FD10C: - ldr r2, [r1] - ldrb r3, [r5, #1] - mla r2, r3, r0, r2 - add r2, r2, r6, lsl #1 - add r6, r6, #1 - strh r4, [r2, #0x20] - cmp r6, #0x10 - blt _037FD10C -_037FD12C: - bl AllocTrack - movs r4, r0 - bmi _037FD214 - ldr r0, _037FD224 ; =SNDi_Work + 0x780 - add r6, r0, r4, lsl #6 - mov r0, r6 - bl InitTrack - str r8, [r6, #0x24] - add r0, r8, r7 - str r0, [r6, #0x28] - strb r4, [r5, #8] - ldr r0, [r6, #0x28] - bl InitCache - mov r0, r6 - bl ReadByte - cmp r0, #0xfe - ldrne r0, [r6, #0x28] - subne r0, r0, #1 - strne r0, [r6, #0x28] - bne _037FD1E0 - mov r0, r6 - bl ReadByte - mov r4, r0 - mov r0, r6 - bl ReadByte - orr r0, r4, r0, lsl #8 - mov r0, r0, lsl #0x10 - ldr r4, _037FD224 ; =SNDi_Work + 0x780 - mov r8, r0, lsr #0x11 - mov r7, #1 - b _037FD1D8 -_037FD1A8: - tst r8, #1 - beq _037FD1CC - bl AllocTrack - movs r6, r0 - bmi _037FD1E0 - add r0, r4, r6, lsl #6 - bl InitTrack - add r0, r5, r7 - strb r6, [r0, #8] -_037FD1CC: - mov r0, r8, lsl #0xf - add r7, r7, #1 - mov r8, r0, lsr #0x10 -_037FD1D8: - cmp r8, #0 - bne _037FD1A8 -_037FD1E0: - ldrb r1, [r5] - ldr r0, _037FD220 ; =SNDi_SharedWork - bic r1, r1, #1 - ldr r2, [r0] - orr r1, r1, #1 - and r0, r1, #0xff - bic r0, r0, #2 - strb r0, [r5] - cmp r2, #0 - ldrne r1, [r2, #4] - movne r0, #1 - orrne r0, r1, r0, lsl sb - strne r0, [r2, #4] -_037FD214: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_037FD21C: .word SNDi_Work + 0x540 -_037FD220: .word SNDi_SharedWork -_037FD224: .word SNDi_Work + 0x780 - arm_func_end SND_PrepareSeq - - arm_func_start ReadByte -ReadByte: ; 0x037FD228 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _037FD280 ; =sMmlPrintEnable - mov r5, r0 - ldr r4, [r5, #0x28] - ldr r0, [r1, #4] - cmp r4, r0 - blo _037FD250 - ldr r0, [r1, #8] - cmp r4, r0 - blo _037FD258 -_037FD250: - mov r0, r4 - bl InitCache -_037FD258: - ldr r0, _037FD280 ; =sMmlPrintEnable - ldr r1, [r5, #0x28] - ldr r2, [r0, #4] - ldr r0, _037FD284 ; =seqCache + 0x8 - sub r2, r4, r2 - ldrb r0, [r0, r2] - add r1, r1, #1 - str r1, [r5, #0x28] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_037FD280: .word sMmlPrintEnable -_037FD284: .word seqCache + 0x8 - arm_func_end ReadByte - - arm_func_start SND_StartPreparedSeq -SND_StartPreparedSeq: ; 0x037FD288 - mov r1, #0x24 - mul r1, r0, r1 - ldr r2, _037FD2A4 ; =SNDi_Work + 0x540 - ldrb r0, [r2, r1] - orr r0, r0, #2 - strb r0, [r2, r1] - bx lr - .align 2, 0 -_037FD2A4: .word SNDi_Work + 0x540 - arm_func_end SND_StartPreparedSeq - - arm_func_start SND_StartSeq -SND_StartSeq: ; 0x037FD2A8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl SND_PrepareSeq - mov r0, #0x24 - mul r1, r4, r0 - ldr r2, _037FD2D4 ; =SNDi_Work + 0x540 - ldrb r0, [r2, r1] - orr r0, r0, #2 - strb r0, [r2, r1] - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FD2D4: .word SNDi_Work + 0x540 - arm_func_end SND_StartSeq - - arm_func_start SND_StopSeq -SND_StopSeq: ; 0x037FD2D8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x24 - mul r1, r4, r0 - ldr r2, _037FD32C ; =SNDi_Work + 0x540 - ldrb r0, [r2, r1] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _037FD324 - add r0, r2, r1 - bl FinishPlayer - ldr r0, _037FD330 ; =SNDi_SharedWork - ldr r2, [r0] - cmp r2, #0 - movne r0, #1 - ldrne r1, [r2, #4] - mvnne r0, r0, lsl r4 - andne r0, r1, r0 - strne r0, [r2, #4] -_037FD324: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FD32C: .word SNDi_Work + 0x540 -_037FD330: .word SNDi_SharedWork - arm_func_end SND_StopSeq - - arm_func_start SND_PauseSeq -SND_PauseSeq: ; 0x037FD334 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r2, #0x24 - mul r4, r0, r2 - ldr r5, _037FD3A8 ; =SNDi_Work + 0x540 - and r0, r1, #0xff - ldrb r2, [r5, r4] - mov r0, r0, lsl #0x1f - bic r2, r2, #4 - orr r0, r2, r0, lsr #29 - strb r0, [r5, r4] - cmp r1, #0 - beq _037FD3A0 - mov r8, #0 - mov r6, #0x7f -_037FD36C: - mov r1, r8 - add r0, r5, r4 - bl GetPlayerTrack - movs r7, r0 - beq _037FD394 - mov r2, r6 - add r1, r5, r4 - bl ReleaseTrackChannelAll - mov r0, r7 - bl FreeTrackChannelAll -_037FD394: - add r8, r8, #1 - cmp r8, #0x10 - blt _037FD36C -_037FD3A0: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FD3A8: .word SNDi_Work + 0x540 - arm_func_end SND_PauseSeq - - arm_func_start SND_SkipSeq -SND_SkipSeq: ; 0x037FD3AC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r3, _037FD470 ; =SNDi_Work + 0x540 - mov r2, #0x24 - mla r6, r0, r2, r3 - mov r8, r1 - mov r7, #0 - mov r4, #0x7f -_037FD3C8: - mov r0, r6 - mov r1, r7 - bl GetPlayerTrack - movs r5, r0 - beq _037FD3F0 - mov r1, r6 - mov r2, r4 - bl ReleaseTrackChannelAll - mov r0, r5 - bl FreeTrackChannelAll -_037FD3F0: - add r7, r7, #1 - cmp r7, #0x10 - blt _037FD3C8 - bl SND_StopIntervalTimer - mov r4, #0 - mov r5, r4 - b _037FD430 -_037FD40C: - mov r0, r6 - mov r1, r5 - bl PlayerSeqMain - cmp r0, #0 - beq _037FD42C - mov r0, r6 - bl FinishPlayer - b _037FD438 -_037FD42C: - add r4, r4, #1 -_037FD430: - cmp r4, r8 - blo _037FD40C -_037FD438: - bl SND_StartIntervalTimer - ldr r0, _037FD474 ; =SNDi_SharedWork - ldr r3, [r0] - cmp r3, #0 - beq _037FD468 - ldrb r1, [r6, #1] - mov r0, #0x24 - mul r2, r1, r0 - add r1, r3, #0x40 - ldr r0, [r1, r2] - add r0, r0, r4 - str r0, [r1, r2] -_037FD468: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FD470: .word SNDi_Work + 0x540 -_037FD474: .word SNDi_SharedWork - arm_func_end SND_SkipSeq - - arm_func_start SND_SetTrackMute -SND_SetTrackMute: ; 0x037FD478 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r3, #0x24 - mul r4, r0, r3 - ldr r5, _037FD4E0 ; =SNDi_Work + 0x540 - mov r8, r1 - mov r7, r2 - mov r6, #0 - b _037FD4C8 -_037FD498: - tst r8, #1 - beq _037FD4C0 - mov r1, r6 - add r0, r5, r4 - bl GetPlayerTrack - cmp r0, #0 - beq _037FD4C0 - mov r2, r7 - add r1, r5, r4 - bl SetTrackMute -_037FD4C0: - add r6, r6, #1 - mov r8, r8, lsr #1 -_037FD4C8: - cmp r6, #0x10 - bge _037FD4D8 - cmp r8, #0 - bne _037FD498 -_037FD4D8: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FD4E0: .word SNDi_Work + 0x540 - arm_func_end SND_SetTrackMute - - arm_func_start SND_SetTrackAllocatableChannel -SND_SetTrackAllocatableChannel: ; 0x037FD4E4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r3, #0x24 - mul r4, r0, r3 - mov r0, r2, lsl #0x10 - ldr r5, _037FD550 ; =SNDi_Work + 0x540 - mov r7, r1 - mov r6, #0 - mov r8, r0, lsr #0x10 - b _037FD538 -_037FD508: - tst r7, #1 - beq _037FD530 - mov r1, r6 - add r0, r5, r4 - bl GetPlayerTrack - cmp r0, #0 - strneh r8, [r0, #0x1e] - ldrneb r1, [r0] - orrne r1, r1, #0x80 - strneb r1, [r0] -_037FD530: - add r6, r6, #1 - mov r7, r7, lsr #1 -_037FD538: - cmp r6, #0x10 - bge _037FD548 - cmp r7, #0 - bne _037FD508 -_037FD548: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FD550: .word SNDi_Work + 0x540 - arm_func_end SND_SetTrackAllocatableChannel - - arm_func_start SND_InvalidateSeq -SND_InvalidateSeq: ; 0x037FD554 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r6, _037FD5DC ; =SNDi_Work + 0x540 - mov r7, #0 - mov sl, r0 - mov sb, r1 - mov fp, r7 - mov r4, #0x24 -_037FD570: - mul r5, r7, r4 - ldrb r0, [r6, r5] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _037FD5C8 - mov r8, fp - b _037FD5C0 -_037FD58C: - mov r1, r8 - add r0, r6, r5 - bl GetPlayerTrack - cmp r0, #0 - beq _037FD5BC - ldr r0, [r0, #0x28] - cmp sl, r0 - cmpls r0, sb - bhi _037FD5BC - add r0, r6, r5 - bl FinishPlayer - b _037FD5C8 -_037FD5BC: - add r8, r8, #1 -_037FD5C0: - cmp r8, #0x10 - blt _037FD58C -_037FD5C8: - add r7, r7, #1 - cmp r7, #0x10 - blt _037FD570 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FD5DC: .word SNDi_Work + 0x540 - arm_func_end SND_InvalidateSeq - - arm_func_start SND_InvalidateBank -SND_InvalidateBank: ; 0x037FD5E0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _037FD638 ; =SNDi_Work + 0x540 - mov r7, r0 - mov r6, r1 - mov r5, #0 - mov r8, #0x24 -_037FD5F8: - mul r0, r5, r8 - ldrb r1, [r4, r0] - add r0, r4, r0 - mov r1, r1, lsl #0x1f - movs r1, r1, lsr #0x1f - beq _037FD624 - ldr r1, [r0, #0x20] - cmp r7, r1 - cmpls r1, r6 - bhi _037FD624 - bl FinishPlayer -_037FD624: - add r5, r5, #1 - cmp r5, #0x10 - blt _037FD5F8 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FD638: .word SNDi_Work + 0x540 - arm_func_end SND_InvalidateBank - - arm_func_start SNDi_SetPlayerParam -SNDi_SetPlayerParam: ; 0x037FD63C - stmdb sp!, {r3, lr} - ldr lr, _037FD67C ; =SNDi_Work + 0x540 - mov ip, #0x24 - mla ip, r0, ip, lr - cmp r3, #1 - beq _037FD668 - cmp r3, #2 - beq _037FD670 - cmp r3, #4 - streq r2, [ip, r1] - b _037FD674 -_037FD668: - strb r2, [ip, r1] - b _037FD674 -_037FD670: - strh r2, [ip, r1] -_037FD674: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FD67C: .word SNDi_Work + 0x540 - arm_func_end SNDi_SetPlayerParam - - arm_func_start SNDi_SetTrackParam -SNDi_SetTrackParam: ; 0x037FD680 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0x24 - mul r5, r0, r4 - mov r8, r3 - mov r0, r8, lsl #0x10 - ldr r7, [sp, #0x28] - mov sl, r1 - mov sb, r2 - mov r6, #0 - mov fp, r0, lsr #0x10 - and r4, r8, #0xff - b _037FD700 -_037FD6B0: - tst sl, #1 - beq _037FD6F8 - ldr r0, _037FD718 ; =SNDi_Work + 0x540 - mov r1, r6 - add r0, r0, r5 - bl GetPlayerTrack - cmp r0, #0 - beq _037FD6F8 - cmp r7, #1 - beq _037FD6EC - cmp r7, #2 - beq _037FD6F4 - cmp r7, #4 - streq r8, [r0, sb] - b _037FD6F8 -_037FD6EC: - strb r4, [r0, sb] - b _037FD6F8 -_037FD6F4: - strh fp, [r0, sb] -_037FD6F8: - add r6, r6, #1 - mov sl, sl, lsr #1 -_037FD700: - cmp r6, #0x10 - bge _037FD710 - cmp sl, #0 - bne _037FD6B0 -_037FD710: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FD718: .word SNDi_Work + 0x540 - arm_func_end SNDi_SetTrackParam - - arm_func_start InitCache -InitCache: ; 0x037FD71C - ldr r1, _037FD754 ; =sMmlPrintEnable - bic r2, r0, #3 - str r2, [r1, #4] - add r0, r2, #0x10 - str r0, [r1, #8] - ldr r0, [r2] - str r0, [r1, #0xc] - ldr r0, [r2, #4] - str r0, [r1, #0x10] - ldr r0, [r2, #8] - str r0, [r1, #0x14] - ldr r0, [r2, #0xc] - str r0, [r1, #0x18] - bx lr - .align 2, 0 -_037FD754: .word sMmlPrintEnable - arm_func_end InitCache - - arm_func_start Read24 -Read24: ; 0x037FD758 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ReadByte - mov r4, r0 - mov r0, r5 - bl ReadByte - orr r4, r4, r0, lsl #8 - mov r0, r5 - bl ReadByte - orr r0, r4, r0, lsl #16 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end Read24 - - arm_func_start ReadArg -ReadArg: ; 0x037FD788 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - cmp r2, #4 - addls pc, pc, r2, lsl #2 - b _037FD87C -_037FD7A0: ; jump table - b _037FD7B4 ; case 0 - b _037FD7C0 ; case 1 - b _037FD7E0 ; case 2 - b _037FD81C ; case 3 - b _037FD800 ; case 4 -_037FD7B4: - bl ReadByte - mov r5, r0 - b _037FD87C -_037FD7C0: - bl ReadByte - mov r5, r0 - mov r0, r4 - bl ReadByte - orr r0, r5, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - b _037FD87C -_037FD7E0: - mov r5, #0 -_037FD7E4: - mov r0, r4 - bl ReadByte - and r1, r0, #0x7f - tst r0, #0x80 - orr r5, r1, r5, lsl #7 - bne _037FD7E4 - b _037FD87C -_037FD800: - bl ReadByte - mov r1, r0 - mov r0, r6 - bl GetVariablePtr - cmp r0, #0 - ldrnesh r5, [r0] - b _037FD87C -_037FD81C: - bl ReadByte - mov r5, r0 - mov r0, r4 - bl ReadByte - orr r0, r5, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r4 - mov r5, r1, lsl #0x10 - bl ReadByte - mov r6, r0 - mov r0, r4 - bl ReadByte - orr r0, r6, r0, lsl #8 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - bl SND_CalcRandom - mov r1, r4, lsl #0x10 - mov r1, r1, asr #0x10 - sub r1, r1, r5, asr #16 - add r1, r1, #1 - mul r1, r0, r1 - mov r0, r1, asr #0x10 - add r5, r0, r5, asr #16 -_037FD87C: - mov r0, r5 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end ReadArg - - arm_func_start InitTrack -InitTrack: ; 0x037FD888 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - str r0, [r4, #0x24] - str r0, [r4, #0x28] - ldrb r1, [r4] - mov r2, #0xff - orr r1, r1, #2 - bic ip, r1, #4 - strb r1, [r4] - and r1, ip, #0xff - bic r3, r1, #8 - strb ip, [r4] - and r1, r3, #0xff - bic ip, r1, #0x10 - strb r3, [r4] - and r1, ip, #0xff - bic r3, r1, #0x20 - and r1, r3, #0xff - orr r1, r1, #0x40 - strb ip, [r4] - bic r1, r1, #0x80 - strb r1, [r4] - strb r0, [r4, #0x3b] - strh r0, [r4, #2] - mov r1, #0x40 - strb r1, [r4, #0x12] - mov r1, #0x7f - strb r1, [r4, #4] - strb r1, [r4, #5] - strh r0, [r4, #0xa] - strb r0, [r4, #8] - strb r0, [r4, #9] - strb r0, [r4, #6] - strh r0, [r4, #0xc] - strb r2, [r4, #0xe] - strb r2, [r4, #0xf] - strb r2, [r4, #0x10] - strb r2, [r4, #0x11] - strb r1, [r4, #1] - mov r1, #2 - strb r1, [r4, #7] - mov r1, #0x3c - strb r1, [r4, #0x14] - strb r0, [r4, #0x15] - strh r0, [r4, #0x16] - strb r0, [r4, #0x13] - add r0, r2, #0xff00 - strh r0, [r4, #0x1e] - add r0, r4, #0x18 - bl SND_InitLfoParam - mov r0, #0 - str r0, [r4, #0x20] - str r0, [r4, #0x3c] - ldmia sp!, {r4, lr} - bx lr - arm_func_end InitTrack - - arm_func_start StartTrack -StartTrack: ; 0x037FD968 - str r1, [r0, #0x24] - add r1, r1, r2 - str r1, [r0, #0x28] - bx lr - arm_func_end StartTrack - - arm_func_start ReleaseTrackChannelAll -ReleaseTrackChannelAll: ; 0x037FD978 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r2 - mov r4, r0 - mov r2, #0 - bl UpdateTrackChannel - ldr r5, [r4, #0x3c] - and r6, r7, #0xff - mov r4, #1 - b _037FD9D0 -_037FD99C: - mov r0, r5 - bl SND_IsExChannelActive - cmp r0, #0 - beq _037FD9CC - cmp r7, #0 - blt _037FD9C0 - mov r0, r5 - mov r1, r6 - bl SND_SetExChannelRelease -_037FD9C0: - mov r0, r5 - strb r4, [r5, #0x22] - bl SND_ReleaseExChannel -_037FD9CC: - ldr r5, [r5, #0x50] -_037FD9D0: - cmp r5, #0 - bne _037FD99C - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end ReleaseTrackChannelAll - - arm_func_start FreeTrackChannelAll -FreeTrackChannelAll: ; 0x037FD9E0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0x3c] - b _037FD9FC -_037FD9F0: - mov r0, r4 - bl SND_FreeExChannel - ldr r4, [r4, #0x50] -_037FD9FC: - cmp r4, #0 - bne _037FD9F0 - mov r0, #0 - str r0, [r5, #0x3c] - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end FreeTrackChannelAll - - arm_func_start GetPlayerTrack -GetPlayerTrack: ; 0x037FDA14 - cmp r1, #0xf - movgt r0, #0 - bxgt lr - add r0, r0, r1 - ldrb r1, [r0, #8] - cmp r1, #0xff - moveq r0, #0 - ldrne r0, _037FDA3C ; =SNDi_Work + 0x780 - addne r0, r0, r1, lsl #6 - bx lr - .align 2, 0 -_037FDA3C: .word SNDi_Work + 0x780 - arm_func_end GetPlayerTrack - - arm_func_start ClosePlayerTrack -ClosePlayerTrack: ; 0x037FDA40 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r4, r1 - bl GetPlayerTrack - movs r5, r0 - beq _037FDA8C - mov r1, r6 - mvn r2, #0 - bl ReleaseTrackChannelAll - mov r0, r5 - bl FreeTrackChannelAll - add ip, r6, #8 - ldrb r2, [ip, r4] - ldr r3, _037FDA94 ; =SNDi_Work + 0x780 - mov r0, #0xff - ldrb r1, [r3, r2, lsl #6] - bic r1, r1, #1 - strb r1, [r3, r2, lsl #6] - strb r0, [ip, r4] -_037FDA8C: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_037FDA94: .word SNDi_Work + 0x780 - arm_func_end ClosePlayerTrack - - arm_func_start FinishPlayer -FinishPlayer: ; 0x037FDA98 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 -_037FDAA4: - mov r0, r5 - mov r1, r4 - bl ClosePlayerTrack - add r4, r4, #1 - cmp r4, #0x10 - blt _037FDAA4 - ldrb r0, [r5] - bic r0, r0, #1 - strb r0, [r5] - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end FinishPlayer - - arm_func_start ChannelCallback -ChannelCallback: ; 0x037FDAD0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - cmp r1, #1 - bne _037FDAF0 - mov r1, #0 - strb r1, [r5, #0x22] - bl SND_FreeExChannel -_037FDAF0: - ldr r1, [r4, #0x3c] - cmp r1, r5 - ldreq r0, [r5, #0x50] - streq r0, [r4, #0x3c] - beq _037FDB28 - b _037FDB1C -_037FDB08: - cmp r0, r5 - ldreq r0, [r5, #0x50] - streq r0, [r1, #0x50] - beq _037FDB28 - mov r1, r0 -_037FDB1C: - ldr r0, [r1, #0x50] - cmp r0, #0 - bne _037FDB08 -_037FDB28: - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end ChannelCallback - - arm_func_start UpdateTrackChannel -UpdateTrackChannel: ; 0x037FDB30 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldrb r0, [sl, #7] - ldrb r6, [sl, #4] - ldrb r3, [sl, #5] - ldrb fp, [r1, #5] - mov r5, r0, lsl #6 - mov r8, r3, lsl #1 - ldrb r4, [sl, #1] - ldrsb r7, [sl, #6] - mov sb, r6, lsl #1 - ldr r0, _037FDC84 ; =SNDi_DecibelTable - mul r6, r7, r5 - mov r3, fp, lsl #1 - ldrsh sb, [r0, sb] - ldrsh r7, [r0, r8] - ldrsh r0, [r0, r3] - add r8, sb, r7 - ldrsb r3, [sl, #8] - cmp r4, #0x7f - mulne r4, r3, r4 - addne r3, r4, #0x40 - mov r4, #0x8000 - ldrsh r5, [sl, #0xc] - mov sb, r2 - add r2, r5, r6, asr #7 - ldrsh r7, [sl, #0xa] - ldrsh r1, [r1, #6] - ldrsb r5, [sl, #9] - movne r3, r3, asr #7 - add r0, r0, r8 - rsb r4, r4, #0 - cmp r0, r4 - movlt r0, r4 - mov r4, #0x8000 - add r1, r7, r1 - rsb r4, r4, #0 - cmp r1, r4 - movlt r1, r4 - add r3, r3, r5 - mvn r4, #0x7f - cmp r3, r4 - movlt r3, r4 - blt _037FDBE8 - cmp r3, #0x7f - movgt r3, #0x7f -_037FDBE8: - mov r0, r0, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x18 - mov r1, r1, lsl #0x10 - ldr r8, [sl, #0x3c] - mov r6, r0, asr #0x10 - mov r5, r2, asr #0x10 - mov r4, r3, asr #0x18 - mov r7, r1, asr #0x10 - mov fp, #1 - b _037FDC74 -_037FDC14: - strh r7, [r8, #6] - ldrb r0, [r8, #2] - cmp r0, #3 - beq _037FDC70 - strh r6, [r8, #0xc] - strh r5, [r8, #0xe] - strb r4, [r8, #0xb] - ldrb r0, [sl, #1] - strb r0, [r8, #4] - ldrh r0, [sl, #0x18] - strh r0, [r8, #0x28] - ldrh r0, [sl, #0x1a] - strh r0, [r8, #0x2a] - ldrh r0, [sl, #0x1c] - strh r0, [r8, #0x2c] - ldr r0, [r8, #0x34] - cmp r0, #0 - bne _037FDC70 - cmp sb, #0 - beq _037FDC70 - mov r0, r8 - strb fp, [r8, #0x22] - bl SND_ReleaseExChannel -_037FDC70: - ldr r8, [r8, #0x50] -_037FDC74: - cmp r8, #0 - bne _037FDC14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FDC84: .word SNDi_DecibelTable - arm_func_end UpdateTrackChannel - - arm_func_start PlayerSeqMain -PlayerSeqMain: ; 0x037FDC88 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov r2, #0 - str r2, [sp, #0x10] - str r1, [sp, #8] - mov r7, r0 - mov sl, r2 -_037FDCA4: - mov r0, r7 - mov r1, sl - bl GetPlayerTrack - movs r8, r0 - ldrne r0, [r8, #0x28] - cmpne r0, #0 - beq _037FE7A4 - ldr r0, [r8, #0x3c] - b _037FDD00 -_037FDCC8: - ldr r1, [r0, #0x34] - cmp r1, #0 - subgt r1, r1, #1 - strgt r1, [r0, #0x34] - ldrb r1, [r0, #3] - mov r1, r1, lsl #0x1d - movs r1, r1, lsr #0x1f - bne _037FDCFC - ldr r2, [r0, #0x14] - ldr r1, [r0, #0x18] - cmp r2, r1 - addlt r1, r2, #1 - strlt r1, [r0, #0x14] -_037FDCFC: - ldr r0, [r0, #0x50] -_037FDD00: - cmp r0, #0 - bne _037FDCC8 - ldrb r1, [r8] - mov r0, r1, lsl #0x1b - movs r0, r0, lsr #0x1f - beq _037FDD30 - ldr r0, [r8, #0x3c] - cmp r0, #0 - movne r0, #0 - bne _037FE788 - bic r0, r1, #0x10 - strb r0, [r8] -_037FDD30: - ldr r0, [r8, #0x20] - cmp r0, #0 - subgt r0, r0, #1 - strgt r0, [r8, #0x20] - cmpgt r0, #0 - movgt r0, #0 - bgt _037FE788 - ldr r0, [r8, #0x28] - bl InitCache - ldr r0, _037FE7CC ; =0x0000FFFF - sub fp, r0, #0x10000 - b _037FE768 -_037FDD60: - mov r0, r8 - mov sb, #0 - mov r4, #1 - bl ReadByte - mov r6, r0 - cmp r6, #0xa2 - bne _037FDD94 - mov r0, r8 - bl ReadByte - mov r6, r0 - ldrb r0, [r8] - mov r0, r0, lsl #0x19 - mov r4, r0, lsr #0x1f -_037FDD94: - cmp r6, #0xa0 - bne _037FDDB0 - mov r0, r8 - bl ReadByte - mov r6, r0 - mov r5, #3 - mov sb, #1 -_037FDDB0: - cmp r6, #0xa1 - bne _037FDDCC - mov r0, r8 - bl ReadByte - mov r6, r0 - mov r5, #4 - mov sb, #1 -_037FDDCC: - tst r6, #0x80 - bne _037FE050 - mov r0, r8 - bl ReadByte - cmp sb, #0 - str r0, [sp, #0xc] - movne r2, r5 - moveq r2, #2 - mov r0, r8 - mov r1, r7 - bl ReadArg - cmp r4, #0 - mov r4, r0 - ldrsb r0, [r8, #0x13] - add sb, r6, r0 - beq _037FE768 - cmp sb, #0 - movlt sb, #0 - blt _037FDE20 - cmp sb, #0x7f - movgt sb, #0x7f -_037FDE20: - ldrb r1, [r8] - mov r0, r1, lsl #0x1d - movs r0, r0, lsr #0x1f - bne _037FE024 - ldr r0, [sp, #8] - cmp r0, #0 - beq _037FE024 - mov r0, r1, lsl #0x1c - mov r6, #0 - movs r0, r0, lsr #0x1f - ldrne r6, [r8, #0x3c] - cmpne r6, #0 - strneb sb, [r6, #8] - ldrne r0, [sp, #0xc] - strneb r0, [r6, #9] - cmp r6, #0 - bne _037FDF54 - ldr r0, [r7, #0x20] - ldrh r1, [r8, #2] - mov r2, sb - add r3, sp, #0x16 - bl SND_ReadInstData - cmp r0, #0 - beq _037FE024 - ldrb r0, [sp, #0x16] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _037FE024 -_037FDE90: ; jump table - b _037FE024 ; case 0 - b _037FDEA4 ; case 1 - b _037FDEAC ; case 2 - b _037FDEB4 ; case 3 - b _037FDEA4 ; case 4 -_037FDEA4: - ldr r1, _037FE7CC ; =0x0000FFFF - b _037FDEB8 -_037FDEAC: - mov r1, #0x3f00 - b _037FDEB8 -_037FDEB4: - mov r1, #0xc000 -_037FDEB8: - ldrh r0, [r8, #0x1e] - ldr r3, _037FE7D0 ; =ChannelCallback - str r8, [sp] - ldrb r2, [r8] - and r0, r1, r0 - mov r2, r2, lsl #0x18 - ldrb r6, [r7, #4] - ldrb r1, [r8, #0x12] - mov r2, r2, lsr #0x1f - add r1, r6, r1 - bl SND_AllocExChannel - movs r6, r0 - beq _037FE024 - ldrb r0, [r8] - mov r0, r0, lsl #0x1c - movs r0, r0, lsr #0x1f - movne r3, fp - bne _037FDF0C - cmp r4, #0 - movgt r3, r4 - movle r3, fp -_037FDF0C: - ldr r2, [sp, #0xc] - ldr r1, [r7, #0x20] - mov r0, r6 - str r1, [sp] - add r1, sp, #0x16 - str r1, [sp, #4] - mov r1, sb - bl SND_NoteOn - cmp r0, #0 - bne _037FDF48 - mov r0, #0 - strb r0, [r6, #0x22] - mov r0, r6 - bl SND_FreeExChannel - b _037FE024 -_037FDF48: - ldr r0, [r8, #0x3c] - str r0, [r6, #0x50] - str r6, [r8, #0x3c] -_037FDF54: - ldrb r1, [r8, #0xe] - cmp r1, #0xff - beq _037FDF68 - mov r0, r6 - bl SND_SetExChannelAttack -_037FDF68: - ldrb r1, [r8, #0xf] - cmp r1, #0xff - beq _037FDF7C - mov r0, r6 - bl SND_SetExChannelDecay -_037FDF7C: - ldrb r1, [r8, #0x10] - cmp r1, #0xff - beq _037FDF90 - mov r0, r6 - bl SND_SetExChannelSustain -_037FDF90: - ldrb r1, [r8, #0x11] - cmp r1, #0xff - beq _037FDFA4 - mov r0, r6 - bl SND_SetExChannelRelease -_037FDFA4: - ldrsh r0, [r8, #0x16] - strh r0, [r6, #0x32] - ldrb r0, [r8] - mov r0, r0, lsl #0x1a - movs r0, r0, lsr #0x1f - beq _037FDFD4 - ldrsh r1, [r6, #0x32] - ldrb r0, [r8, #0x14] - sub r0, r0, sb - mov r0, r0, lsl #0x16 - add r0, r1, r0, asr #16 - strh r0, [r6, #0x32] -_037FDFD4: - ldrb r0, [r8, #0x15] - cmp r0, #0 - bne _037FE000 - cmp r4, #0 - movgt r0, r4 - movle r0, fp - str r0, [r6, #0x18] - ldrb r0, [r6, #3] - bic r0, r0, #4 - strb r0, [r6, #3] - b _037FE01C -_037FE000: - mul r1, r0, r0 - ldrsh r0, [r6, #0x32] - cmp r0, #0 - rsblt r0, r0, #0 - mul r0, r1, r0 - mov r0, r0, asr #0xb - str r0, [r6, #0x18] -_037FE01C: - mov r0, #0 - str r0, [r6, #0x14] -_037FE024: - strb sb, [r8, #0x14] - ldrb r0, [r8] - mov r0, r0, lsl #0x1e - movs r0, r0, lsr #0x1f - beq _037FE768 - str r4, [r8, #0x20] - cmp r4, #0 - ldreqb r0, [r8] - orreq r0, r0, #0x10 - streqb r0, [r8] - b _037FE768 -_037FE050: - and r0, r6, #0xf0 - cmp r0, #0xc0 - bgt _037FE084 - bge _037FE1CC - cmp r0, #0x90 - bgt _037FE078 - bge _037FE0F0 - cmp r0, #0x80 - beq _037FE0A8 - b _037FE768 -_037FE078: - cmp r0, #0xb0 - beq _037FE47C - b _037FE768 -_037FE084: - cmp r0, #0xe0 - bgt _037FE09C - bge _037FE428 - cmp r0, #0xd0 - beq _037FE1CC - b _037FE768 -_037FE09C: - cmp r0, #0xf0 - beq _037FE6C4 - b _037FE768 -_037FE0A8: - cmp sb, #0 - movne r2, r5 - moveq r2, #2 - mov r0, r8 - mov r1, r7 - bl ReadArg - cmp r4, #0 - beq _037FE768 - cmp r6, #0x80 - beq _037FE0DC - cmp r6, #0x81 - beq _037FE0E4 - b _037FE768 -_037FE0DC: - str r0, [r8, #0x20] - b _037FE768 -_037FE0E4: - cmp r0, #0x10000 - strlth r0, [r8, #2] - b _037FE768 -_037FE0F0: - cmp r6, #0x93 - beq _037FE10C - cmp r6, #0x94 - beq _037FE16C - cmp r6, #0x95 - beq _037FE188 - b _037FE768 -_037FE10C: - mov r0, r8 - bl ReadByte - mov r6, r0 - mov r0, r8 - bl Read24 - cmp r4, #0 - mov sb, r0 - beq _037FE768 - mov r1, r6 - mov r0, r7 - bl GetPlayerTrack - movs r4, r0 - cmpne r4, r8 - beq _037FE768 - mov r1, r7 - mov r2, fp - bl ReleaseTrackChannelAll - mov r0, r4 - bl FreeTrackChannelAll - mov r0, r4 - mov r2, sb - ldr r1, [r8, #0x24] - bl StartTrack - b _037FE768 -_037FE16C: - mov r0, r8 - bl Read24 - cmp r4, #0 - ldrne r1, [r8, #0x24] - addne r0, r1, r0 - strne r0, [r8, #0x28] - b _037FE768 -_037FE188: - mov r0, r8 - bl Read24 - cmp r4, #0 - beq _037FE768 - ldrb r1, [r8, #0x3b] - cmp r1, #3 - bhs _037FE768 - add r1, r8, r1, lsl #2 - ldr r2, [r8, #0x28] - str r2, [r1, #0x2c] - ldrb r1, [r8, #0x3b] - add r1, r1, #1 - strb r1, [r8, #0x3b] - ldr r1, [r8, #0x24] - add r0, r1, r0 - str r0, [r8, #0x28] - b _037FE768 -_037FE1CC: - cmp sb, #0 - movne r2, r5 - moveq r2, #0 - mov r0, r8 - mov r1, r7 - bl ReadArg - cmp r4, #0 - strb r0, [sp, #0x14] - beq _037FE768 - sub r1, r6, #0xc0 - cmp r1, #0x17 - addls pc, pc, r1, lsl #2 - b _037FE768 -_037FE200: ; jump table - b _037FE3F8 ; case 0 - b _037FE260 ; case 1 - b _037FE278 ; case 2 - b _037FE3E0 ; case 3 - b _037FE3EC ; case 4 - b _037FE284 ; case 5 - b _037FE290 ; case 6 - b _037FE29C ; case 7 - b _037FE35C ; case 8 - b _037FE3A4 ; case 9 - b _037FE2C4 ; case 10 - b _037FE2D0 ; case 11 - b _037FE2DC ; case 12 - b _037FE2E8 ; case 13 - b _037FE3C4 ; case 14 - b _037FE2B8 ; case 15 - b _037FE2F4 ; case 16 - b _037FE300 ; case 17 - b _037FE30C ; case 18 - b _037FE318 ; case 19 - b _037FE324 ; case 20 - b _037FE26C ; case 21 - b _037FE408 ; case 22 - b _037FE390 ; case 23 -_037FE260: - and r0, r0, #0xff - strb r0, [r8, #4] - b _037FE768 -_037FE26C: - and r0, r0, #0xff - strb r0, [r8, #5] - b _037FE768 -_037FE278: - and r0, r0, #0xff - strb r0, [r7, #5] - b _037FE768 -_037FE284: - and r0, r0, #0xff - strb r0, [r8, #7] - b _037FE768 -_037FE290: - and r0, r0, #0xff - strb r0, [r8, #0x12] - b _037FE768 -_037FE29C: - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - ldrb r1, [r8] - bic r1, r1, #2 - orr r0, r1, r0, lsr #30 - strb r0, [r8] - b _037FE768 -_037FE2B8: - and r0, r0, #0xff - strb r0, [r8, #0x15] - b _037FE768 -_037FE2C4: - and r0, r0, #0xff - strb r0, [r8, #0x1a] - b _037FE768 -_037FE2D0: - and r0, r0, #0xff - strb r0, [r8, #0x19] - b _037FE768 -_037FE2DC: - and r0, r0, #0xff - strb r0, [r8, #0x18] - b _037FE768 -_037FE2E8: - and r0, r0, #0xff - strb r0, [r8, #0x1b] - b _037FE768 -_037FE2F4: - and r0, r0, #0xff - strb r0, [r8, #0xe] - b _037FE768 -_037FE300: - and r0, r0, #0xff - strb r0, [r8, #0xf] - b _037FE768 -_037FE30C: - and r0, r0, #0xff - strb r0, [r8, #0x10] - b _037FE768 -_037FE318: - and r0, r0, #0xff - strb r0, [r8, #0x11] - b _037FE768 -_037FE324: - ldrb r1, [r8, #0x3b] - cmp r1, #3 - bhs _037FE768 - add r2, r8, r1, lsl #2 - and r1, r0, #0xff - ldr r0, [r8, #0x28] - str r0, [r2, #0x2c] - ldrb r0, [r8, #0x3b] - add r0, r8, r0 - strb r1, [r0, #0x38] - ldrb r0, [r8, #0x3b] - add r0, r0, #1 - strb r0, [r8, #0x3b] - b _037FE768 -_037FE35C: - and r0, r0, #0xff - mov r1, r0, lsl #0x1f - ldrb r2, [r8] - mov r0, r8 - bic r2, r2, #8 - orr r1, r2, r1, lsr #28 - strb r1, [r8] - mov r1, r7 - mov r2, fp - bl ReleaseTrackChannelAll - mov r0, r8 - bl FreeTrackChannelAll - b _037FE768 -_037FE390: - and r2, r0, #0xff - mov r0, r8 - mov r1, r7 - bl SetTrackMute - b _037FE768 -_037FE3A4: - and r1, r0, #0xff - ldrsb r0, [r8, #0x13] - add r0, r1, r0 - strb r0, [r8, #0x14] - ldrb r0, [r8] - orr r0, r0, #0x20 - strb r0, [r8] - b _037FE768 -_037FE3C4: - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - ldrb r1, [r8] - bic r1, r1, #0x20 - orr r0, r1, r0, lsr #26 - strb r0, [r8] - b _037FE768 -_037FE3E0: - ldrsb r0, [sp, #0x14] - strb r0, [r8, #0x13] - b _037FE768 -_037FE3EC: - ldrsb r0, [sp, #0x14] - strb r0, [r8, #6] - b _037FE768 -_037FE3F8: - and r0, r0, #0xff - sub r0, r0, #0x40 - strb r0, [r8, #8] - b _037FE768 -_037FE408: - ldr r1, _037FE7D4 ; =sMmlPrintEnable - ldr r1, [r1] - cmp r1, #0 - beq _037FE768 - and r1, r0, #0xff - mov r0, r7 - bl GetVariablePtr - b _037FE768 -_037FE428: - cmp sb, #0 - movne r2, r5 - moveq r2, #1 - mov r0, r8 - mov r1, r7 - bl ReadArg - mov r0, r0, lsl #0x10 - cmp r4, #0 - mov r0, r0, asr #0x10 - beq _037FE768 - cmp r6, #0xe0 - beq _037FE474 - cmp r6, #0xe1 - beq _037FE46C - cmp r6, #0xe3 - streqh r0, [r8, #0x16] - b _037FE768 -_037FE46C: - strh r0, [r7, #0x18] - b _037FE768 -_037FE474: - strh r0, [r8, #0x1c] - b _037FE768 -_037FE47C: - mov r0, r8 - bl ReadByte - cmp sb, #0 - movne r2, r5 - mov sb, r0 - moveq r2, #1 - mov r0, r8 - mov r1, r7 - bl ReadArg - mov r0, r0, lsl #0x10 - mov r1, sb - mov sb, r0, asr #0x10 - mov r0, r7 - bl GetVariablePtr - cmp r4, #0 - mov r4, r0 - cmpne r4, #0 - beq _037FE768 - sub r0, r6, #0xb0 - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _037FE768 -_037FE4D4: ; jump table - b _037FE50C ; case 0 - b _037FE514 ; case 1 - b _037FE524 ; case 2 - b _037FE534 ; case 3 - b _037FE544 ; case 4 - b _037FE560 ; case 5 - b _037FE584 ; case 6 - b _037FE768 ; case 7 - b _037FE5BC ; case 8 - b _037FE5E8 ; case 9 - b _037FE614 ; case 10 - b _037FE640 ; case 11 - b _037FE66C ; case 12 - b _037FE698 ; case 13 -_037FE50C: - strh sb, [r4] - b _037FE768 -_037FE514: - ldrsh r0, [r4] - add r0, r0, sb - strh r0, [r4] - b _037FE768 -_037FE524: - ldrsh r0, [r4] - sub r0, r0, sb - strh r0, [r4] - b _037FE768 -_037FE534: - ldrsh r0, [r4] - mul r1, r0, sb - strh r1, [r4] - b _037FE768 -_037FE544: - cmp sb, #0 - beq _037FE768 - mov r1, sb - ldrsh r0, [r4] - bl _s32_div_f - strh r0, [r4] - b _037FE768 -_037FE560: - cmp sb, #0 - ldrgesh r0, [r4] - movge r0, r0, lsl sb - strgeh r0, [r4] - ldrltsh r1, [r4] - rsblt r0, sb, #0 - movlt r0, r1, asr r0 - strlth r0, [r4] - b _037FE768 -_037FE584: - cmp sb, #0 - rsblt r0, sb, #0 - movlt r0, r0, lsl #0x10 - mov r6, #0 - movlt sb, r0, asr #0x10 - movlt r6, #1 - bl SND_CalcRandom - add r1, sb, #1 - mul r1, r0, r1 - mov r0, r1, asr #0x10 - cmp r6, #0 - rsbne r0, r0, #0 - strh r0, [r4] - b _037FE768 -_037FE5BC: - ldrsh r0, [r4] - ldrb r1, [r8] - cmp r0, sb - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - bic r1, r1, #0x40 - orr r0, r1, r0, lsr #25 - strb r0, [r8] - b _037FE768 -_037FE5E8: - ldrsh r0, [r4] - ldrb r1, [r8] - cmp r0, sb - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - bic r1, r1, #0x40 - orr r0, r1, r0, lsr #25 - strb r0, [r8] - b _037FE768 -_037FE614: - ldrsh r0, [r4] - ldrb r1, [r8] - cmp r0, sb - movgt r0, #1 - movle r0, #0 - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - bic r1, r1, #0x40 - orr r0, r1, r0, lsr #25 - strb r0, [r8] - b _037FE768 -_037FE640: - ldrsh r0, [r4] - ldrb r1, [r8] - cmp r0, sb - movle r0, #1 - movgt r0, #0 - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - bic r1, r1, #0x40 - orr r0, r1, r0, lsr #25 - strb r0, [r8] - b _037FE768 -_037FE66C: - ldrsh r0, [r4] - ldrb r1, [r8] - cmp r0, sb - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - bic r1, r1, #0x40 - orr r0, r1, r0, lsr #25 - strb r0, [r8] - b _037FE768 -_037FE698: - ldrsh r0, [r4] - ldrb r1, [r8] - cmp r0, sb - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - mov r0, r0, lsl #0x1f - bic r1, r1, #0x40 - orr r0, r1, r0, lsr #25 - strb r0, [r8] - b _037FE768 -_037FE6C4: - cmp r4, #0 - beq _037FE768 - sub r0, r6, #0xfc - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _037FE768 -_037FE6DC: ; jump table - b _037FE714 ; case 0 - b _037FE6EC ; case 1 - b _037FE768 ; case 2 - b _037FE760 ; case 3 -_037FE6EC: - ldrb r0, [r8, #0x3b] - cmp r0, #0 - beq _037FE768 - sub r0, r0, #1 - strb r0, [r8, #0x3b] - and r0, r0, #0xff - add r0, r8, r0, lsl #2 - ldr r0, [r0, #0x2c] - str r0, [r8, #0x28] - b _037FE768 -_037FE714: - ldrb r0, [r8, #0x3b] - cmp r0, #0 - beq _037FE768 - add r1, r8, r0 - ldrb r0, [r1, #0x37] - cmp r0, #0 - beq _037FE748 - sub r0, r0, #1 - ands r0, r0, #0xff - ldreqb r0, [r8, #0x3b] - subeq r0, r0, #1 - streqb r0, [r8, #0x3b] - beq _037FE768 -_037FE748: - strb r0, [r1, #0x37] - ldrb r0, [r8, #0x3b] - add r0, r8, r0, lsl #2 - ldr r0, [r0, #0x28] - str r0, [r8, #0x28] - b _037FE768 -_037FE760: - mvn r0, #0 - b _037FE788 -_037FE768: - ldr r0, [r8, #0x20] - cmp r0, #0 - bne _037FE784 - ldrb r0, [r8] - mov r0, r0, lsl #0x1b - movs r0, r0, lsr #0x1f - beq _037FDD60 -_037FE784: - mov r0, #0 -_037FE788: - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x10] - beq _037FE7A4 - mov r0, r7 - mov r1, sl - bl ClosePlayerTrack -_037FE7A4: - add sl, sl, #1 - cmp sl, #0x10 - blt _037FDCA4 - ldr r0, [sp, #0x10] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FE7CC: .word 0x0000FFFF -_037FE7D0: .word ChannelCallback -_037FE7D4: .word sMmlPrintEnable - arm_func_end PlayerSeqMain - - arm_func_start GetVariablePtr -GetVariablePtr: ; 0x037FE7D8 - ldr r2, _037FE818 ; =SNDi_SharedWork - ldr r3, [r2] - cmp r3, #0 - moveq r0, #0 - bxeq lr - cmp r1, #0x10 - addge r2, r3, #0x260 - subge r0, r1, #0x10 - addge r0, r2, r0, lsl #1 - bxge lr - ldrb r2, [r0, #1] - add r3, r3, #0x20 - mov r0, #0x24 - mla r0, r2, r0, r3 - add r0, r0, r1, lsl #1 - bx lr - .align 2, 0 -_037FE818: .word SNDi_SharedWork - arm_func_end GetVariablePtr - - arm_func_start AllocTrack -AllocTrack: ; 0x037FE81C - ldr ip, _037FE85C ; =SNDi_Work + 0x780 - mov r0, #0 - b _037FE84C -_037FE828: - ldrb r1, [ip, r0, lsl #6] - mov r3, r0, lsl #6 - mov r2, r1, lsl #0x1f - movs r2, r2, lsr #0x1f - biceq r1, r1, #1 - orreq r1, r1, #1 - streqb r1, [ip, r3] - bxeq lr - add r0, r0, #1 -_037FE84C: - cmp r0, #0x20 - blt _037FE828 - mvn r0, #0 - bx lr - .align 2, 0 -_037FE85C: .word SNDi_Work + 0x780 - arm_func_end AllocTrack - - arm_func_start SetTrackMute -SetTrackMute: ; 0x037FE860 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r2, #3 - addls pc, pc, r2, lsl #2 - b _037FE8D8 -_037FE874: ; jump table - b _037FE884 ; case 0 - b _037FE894 ; case 1 - b _037FE8A4 ; case 2 - b _037FE8BC ; case 3 -_037FE884: - ldrb r0, [r4] - bic r0, r0, #4 - strb r0, [r4] - b _037FE8D8 -_037FE894: - ldrb r0, [r4] - orr r0, r0, #4 - strb r0, [r4] - b _037FE8D8 -_037FE8A4: - ldrb r3, [r4] - mvn r2, #0 - orr r3, r3, #4 - strb r3, [r4] - bl ReleaseTrackChannelAll - b _037FE8D8 -_037FE8BC: - ldrb r3, [r4] - mov r2, #0x7f - orr r3, r3, #4 - strb r3, [r4] - bl ReleaseTrackChannelAll - mov r0, r4 - bl FreeTrackChannelAll -_037FE8D8: - ldmia sp!, {r4, lr} - bx lr - arm_func_end SetTrackMute - - arm_func_start SND_ReadInstData -SND_ReadInstData: ; 0x037FE8E0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r1 - mov r6, r0 - mov r5, r2 - mov r4, r3 - movmi r0, #0 - bmi _037FEA58 - bl SNDi_LockMutex - ldr r0, [r6, #0x38] - cmp r7, r0 - blo _037FE918 - bl SNDi_UnlockMutex - mov r0, #0 - b _037FEA58 -_037FE918: - add r0, r6, r7, lsl #2 - ldr r1, [r0, #0x3c] - and r0, r1, #0xff - strb r1, [r4] - cmp r0, #0x11 - mov r1, r1, lsr #8 - addls pc, pc, r0, lsl #2 - b _037FEA44 -_037FE938: ; jump table - b _037FEA44 ; case 0 - b _037FE980 ; case 1 - b _037FE980 ; case 2 - b _037FE980 ; case 3 - b _037FE980 ; case 4 - b _037FE980 ; case 5 - b _037FEA44 ; case 6 - b _037FEA44 ; case 7 - b _037FEA44 ; case 8 - b _037FEA44 ; case 9 - b _037FEA44 ; case 10 - b _037FEA44 ; case 11 - b _037FEA44 ; case 12 - b _037FEA44 ; case 13 - b _037FEA44 ; case 14 - b _037FEA44 ; case 15 - b _037FE9A0 ; case 16 - b _037FE9F0 ; case 17 -_037FE980: - add r3, r6, r1 - add r2, r4, #2 - mov r1, #5 -_037FE98C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _037FE98C - b _037FEA50 -_037FE9A0: - ldrb r0, [r6, r1] - add r2, r6, r1 - ldrb r1, [r2, #1] - cmp r5, r0 - blt _037FE9BC - cmp r5, r1 - ble _037FE9C8 -_037FE9BC: - bl SNDi_UnlockMutex - mov r0, #0 - b _037FEA58 -_037FE9C8: - sub r1, r5, r0 - mov r0, #0xc - mla r0, r1, r0, r2 - add r2, r0, #2 - mov r1, #6 -_037FE9DC: - ldrh r0, [r2], #2 - subs r1, r1, #1 - strh r0, [r4], #2 - bne _037FE9DC - b _037FEA50 -_037FE9F0: - add r2, r6, r1 - mov r1, #0 - b _037FEA14 -_037FE9FC: - add r1, r1, #1 - cmp r1, #8 - blt _037FEA14 - bl SNDi_UnlockMutex - mov r0, #0 - b _037FEA58 -_037FEA14: - ldrb r0, [r2, r1] - cmp r5, r0 - bgt _037FE9FC - mov r0, #0xc - mla r0, r1, r0, r2 - add r2, r0, #8 - mov r1, #6 -_037FEA30: - ldrh r0, [r2], #2 - subs r1, r1, #1 - strh r0, [r4], #2 - bne _037FEA30 - b _037FEA50 -_037FEA44: - bl SNDi_UnlockMutex - mov r0, #0 - b _037FEA58 -_037FEA50: - bl SNDi_UnlockMutex - mov r0, #1 -_037FEA58: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end SND_ReadInstData - - arm_func_start SND_GetWaveDataAddress -SND_GetWaveDataAddress: ; 0x037FEA60 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl SNDi_LockMutex - add r0, r5, r4, lsl #2 - ldr r4, [r0, #0x3c] - cmp r4, #0 - beq _037FEA8C - cmp r4, #0x2000000 - addlo r4, r5, r4 - b _037FEA90 -_037FEA8C: - mov r4, #0 -_037FEA90: - bl SNDi_UnlockMutex - mov r0, r4 - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end SND_GetWaveDataAddress - - arm_func_start SND_NoteOn -SND_NoteOn: ; 0x037FEAA0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r5, [sp, #0x24] - mov sb, r0 - ldrb r4, [r5, #0xa] - ldrb r0, [r5] - cmp r4, #0xff - mov r6, r3 - mov r8, r1 - mov r7, r2 - mvneq r6, #0 - moveq r4, #0 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _037FEB80 -_037FEAD8: ; jump table - b _037FEB80 ; case 0 - b _037FEAEC ; case 1 - b _037FEB5C ; case 2 - b _037FEB70 ; case 3 - b _037FEAEC ; case 4 -_037FEAEC: - cmp r0, #1 - bne _037FEB30 - ldr r2, [sp, #0x20] - ldrh r0, [r5, #4] - ldrh r1, [r5, #2] - add r0, r2, r0, lsl #3 - ldr r0, [r0, #0x18] - cmp r0, #0 - moveq r1, #0 - beq _037FEB3C - ldr r2, [r0, #0x38] - cmp r1, r2 - movhs r1, #0 - bhs _037FEB3C - bl SND_GetWaveDataAddress - mov r1, r0 - b _037FEB3C -_037FEB30: - ldrh r1, [r5, #4] - ldrh r0, [r5, #2] - orr r1, r0, r1, lsl #16 -_037FEB3C: - cmp r1, #0 - moveq r0, #0 - beq _037FEB84 - mov r0, sb - mov r3, r6 - add r2, r1, #0xc - bl SND_StartExChannelPcm - b _037FEB84 -_037FEB5C: - ldrh r1, [r5, #2] - mov r0, sb - mov r2, r6 - bl SND_StartExChannelPsg - b _037FEB84 -_037FEB70: - mov r0, sb - mov r1, r6 - bl SND_StartExChannelNoise - b _037FEB84 -_037FEB80: - mov r0, #0 -_037FEB84: - cmp r0, #0 - moveq r0, #0 - beq _037FEBE0 - strb r8, [sb, #8] - ldrb r1, [r5, #6] - mov r0, sb - strb r1, [sb, #5] - strb r7, [sb, #9] - ldrb r1, [r5, #7] - bl SND_SetExChannelAttack - ldrb r1, [r5, #8] - mov r0, sb - bl SND_SetExChannelDecay - ldrb r1, [r5, #9] - mov r0, sb - bl SND_SetExChannelSustain - mov r0, sb - mov r1, r4 - bl SND_SetExChannelRelease - ldrb r1, [r5, #0xb] - mov r0, #1 - sub r1, r1, #0x40 - strb r1, [sb, #0xa] -_037FEBE0: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - arm_func_end SND_NoteOn - - arm_func_start SND_SetPlayerLocalVariable -SND_SetPlayerLocalVariable: ; 0x037FEBE8 - ldr ip, _037FEC04 ; =SNDi_SharedWork - mov r3, #0x24 - ldr ip, [ip] - mla r3, r0, r3, ip - add r0, r3, r1, lsl #1 - strh r2, [r0, #0x20] - bx lr - .align 2, 0 -_037FEC04: .word SNDi_SharedWork - arm_func_end SND_SetPlayerLocalVariable - - arm_func_start SND_SetPlayerGlobalVariable -SND_SetPlayerGlobalVariable: ; 0x037FEC08 - ldr r2, _037FEC20 ; =SNDi_SharedWork - ldr r2, [r2] - add r0, r2, r0, lsl #1 - add r0, r0, #0x200 - strh r1, [r0, #0x60] - bx lr - .align 2, 0 -_037FEC20: .word SNDi_SharedWork - arm_func_end SND_SetPlayerGlobalVariable - - arm_func_start SND_UpdateSharedWork -SND_UpdateSharedWork: ; 0x037FEC24 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _037FECB8 ; =SNDi_SharedWork - mov r4, #0 - ldr r0, [r0] - mov r5, r4 - cmp r0, #0 - beq _037FECB0 - mov r7, r4 - mov r6, #1 -_037FEC48: - mov r0, r7 - bl SND_IsChannelActive - cmp r0, #0 - orrne r0, r4, r6, lsl r7 - movne r0, r0, lsl #0x10 - add r7, r7, #1 - movne r4, r0, lsr #0x10 - cmp r7, #0x10 - blt _037FEC48 - mov r0, #0 - bl SND_IsCaptureActive - cmp r0, #0 - orrne r0, r5, #1 - movne r0, r0, lsl #0x10 - movne r5, r0, lsr #0x10 - mov r0, #1 - bl SND_IsCaptureActive - cmp r0, #0 - orrne r0, r5, #2 - movne r0, r0, lsl #0x10 - movne r5, r0, lsr #0x10 - ldr r0, _037FECB8 ; =SNDi_SharedWork - ldr r1, [r0] - strh r4, [r1, #8] - ldr r0, [r0] - strh r5, [r0, #0xa] -_037FECB0: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_037FECB8: .word SNDi_SharedWork - arm_func_end SND_UpdateSharedWork - - arm_func_start SND_AlarmInit -SND_AlarmInit: ; 0x037FECBC - ldr r1, _037FECE4 ; =SNDi_Work - mov r3, #0 - mov r2, r3 -_037FECC8: - add r0, r1, r3, lsl #6 - strb r2, [r0, #0xf80] - add r3, r3, #1 - strb r2, [r0, #0xf81] - cmp r3, #8 - blt _037FECC8 - bx lr - .align 2, 0 -_037FECE4: .word SNDi_Work - arm_func_end SND_AlarmInit - - arm_func_start SND_SetupAlarm -SND_SetupAlarm: ; 0x037FECE8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr lr, _037FED40 ; =SNDi_Work + 0xF80 - ldr r4, [sp, #0x18] - ldrb ip, [lr, r0, lsl #6] - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmp ip, #0 - add r8, lr, r0, lsl #6 - beq _037FED20 - add r0, r8, #0x14 - bl OS_CancelAlarm - mov r0, #0 - strb r0, [r8] -_037FED20: - str r7, [r8, #4] - str r6, [r8, #8] - str r5, [r8, #0xc] - ldr r0, [sp, #0x1c] - str r4, [r8, #0x10] - strb r0, [r8, #1] - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FED40: .word SNDi_Work + 0xF80 - arm_func_end SND_SetupAlarm - - arm_func_start SND_StartAlarm -SND_StartAlarm: ; 0x037FED44 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - ldr r1, _037FEDF8 ; =SNDi_Work + 0xF80 - mov sb, r0 - ldrb r0, [r1, sb, lsl #6] - add r8, r1, sb, lsl #6 - cmp r0, #0 - beq _037FED74 - add r0, r8, #0x14 - bl OS_CancelAlarm - mov r0, #0 - strb r0, [r8] -_037FED74: - ldrb r1, [r8, #1] - ldr r7, [r8, #0xc] - ldr r6, [r8, #0x10] - add r0, r8, #0x14 - ldr r5, [r8, #4] - ldr r4, [r8, #8] - orr sb, sb, r1, lsl #8 - bl OS_CreateAlarm - cmp r6, #0 - cmpeq r7, #0 - bne _037FEDBC - ldr r3, _037FEDFC ; =AlarmHandler - mov r1, r5 - mov r2, r4 - add r0, r8, #0x14 - str sb, [sp] - bl OS_SetAlarm - b _037FEDE4 -_037FEDBC: - bl OS_GetTick - ldr r2, _037FEDFC ; =AlarmHandler - adds r0, r5, r0 - stmib sp, {r2, sb} - adc r2, r4, r1 - mov r1, r0 - mov r3, r7 - add r0, r8, #0x14 - str r6, [sp] - bl OS_SetPeriodicAlarm -_037FEDE4: - mov r0, #1 - strb r0, [r8] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_037FEDF8: .word SNDi_Work + 0xF80 -_037FEDFC: .word AlarmHandler - arm_func_end SND_StartAlarm - - arm_func_start SND_StopAlarm -SND_StopAlarm: ; 0x037FEE00 - stmdb sp!, {r4, lr} - ldr r2, _037FEE3C ; =SNDi_Work + 0xF80 - ldrb r1, [r2, r0, lsl #6] - add r4, r2, r0, lsl #6 - cmp r1, #0 - beq _037FEE34 - add r0, r4, #0x14 - bl OS_CancelAlarm - ldrb r1, [r4, #1] - mov r0, #0 - add r1, r1, #1 - strb r1, [r4, #1] - strb r0, [r4] -_037FEE34: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FEE3C: .word SNDi_Work + 0xF80 - arm_func_end SND_StopAlarm - - arm_func_start AlarmHandler -AlarmHandler: ; 0x037FEE40 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #7 - mov r4, #0 -_037FEE50: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _037FEE50 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end AlarmHandler - - arm_func_start SND_CommandInit -SND_CommandInit: ; 0x037FEE70 - stmdb sp!, {r3, lr} - ldr r0, _037FEEA4 ; =sCommandMesgQueue - ldr r1, _037FEEA8 ; =sCommandMesgBuffer - mov r2, #8 - bl OS_InitMessageQueue - ldr r1, _037FEEAC ; =PxiFifoCallback - mov r0, #7 - bl PXI_SetFifoRecvCallback - ldr r0, _037FEEB0 ; =SNDi_SharedWork - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FEEA4: .word sCommandMesgQueue -_037FEEA8: .word sCommandMesgBuffer -_037FEEAC: .word PxiFifoCallback -_037FEEB0: .word SNDi_SharedWork - arm_func_end SND_CommandInit - - arm_func_start SND_CommandProc -SND_CommandProc: ; 0x037FEEB4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - b _037FF52C -_037FEEC0: - ldr sl, _037FF550 ; =0x04000509 - ldr r6, [sp, #0x18] - sub r4, sl, #1 - b _037FF510 -_037FEED0: - add r5, sp, #0x1c - ldmia r6!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - ldmia r6, {r0, r1} - stmia r5, {r0, r1} - ldr r0, [sp, #0x20] - cmp r0, #0x21 - addls pc, pc, r0, lsl #2 - b _037FF50C -_037FEEF4: ; jump table - b _037FEF7C ; case 0 - b _037FEF94 ; case 1 - b _037FEFA0 ; case 2 - b _037FEFB8 ; case 3 - b _037FEFC4 ; case 4 - b _037FEFD4 ; case 5 - b _037FEFE4 ; case 6 - b _037FEFFC ; case 7 - b _037FF024 ; case 8 - b _037FF038 ; case 9 - b _037FF04C ; case 10 - b _037FF068 ; case 11 - b _037FF080 ; case 12 - b _037FF148 ; case 13 - b _037FF324 ; case 14 - b _037FF3A4 ; case 15 - b _037FF3DC ; case 16 - b _037FF1EC ; case 17 - b _037FF234 ; case 18 - b _037FF25C ; case 19 - b _037FF29C ; case 20 - b _037FF2E4 ; case 21 - b _037FF40C ; case 22 - b _037FF418 ; case 23 - b _037FF424 ; case 24 - b _037FF430 ; case 25 - b _037FF448 ; case 26 - b _037FF458 ; case 27 - b _037FF468 ; case 28 - b _037FF4A8 ; case 29 - b _037FF478 ; case 30 - b _037FF488 ; case 31 - b _037FF498 ; case 32 - b _037FF4B8 ; case 33 -_037FEF7C: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - bl SND_StartSeq - b _037FF50C -_037FEF94: - ldr r0, [sp, #0x24] - bl SND_StopSeq - b _037FF50C -_037FEFA0: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - bl SND_PrepareSeq - b _037FF50C -_037FEFB8: - ldr r0, [sp, #0x24] - bl SND_StartPreparedSeq - b _037FF50C -_037FEFC4: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_PauseSeq - b _037FF50C -_037FEFD4: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_SkipSeq - b _037FF50C -_037FEFE4: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - bl SNDi_SetPlayerParam - b _037FF50C -_037FEFFC: - ldr r1, [sp, #0x24] - mov r0, r1, lsr #0x18 - and r0, r0, #0xff - str r0, [sp] - bic r0, r1, #0xff000000 - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - bl SNDi_SetTrackParam - b _037FF50C -_037FF024: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - bl SND_SetTrackMute - b _037FF50C -_037FF038: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - bl SND_SetTrackAllocatableChannel - b _037FF50C -_037FF04C: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - mov r2, r2, lsl #0x10 - mov r2, r2, asr #0x10 - bl SND_SetPlayerLocalVariable - b _037FF50C -_037FF068: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl SND_SetPlayerGlobalVariable - b _037FF50C -_037FF080: - ldr r7, [sp, #0x2c] - ldr r6, [sp, #0x28] - ldr r5, [sp, #0x24] - bl OS_DisableInterrupts - mov r8, r0 - mov r2, #0 - b _037FF0BC -_037FF09C: - tst r5, #1 - movne r0, r2, lsl #4 - addne r0, r0, #0x4000000 - ldrneb r1, [r0, #0x403] - add r2, r2, #1 - orrne r1, r1, #0x80 - strneb r1, [r0, #0x403] - mov r5, r5, lsr #1 -_037FF0BC: - cmp r2, #0x10 - bge _037FF0CC - cmp r5, #0 - bne _037FF09C -_037FF0CC: - tst r6, #1 - beq _037FF0F8 - tst r6, #2 - ldrneh r1, [r4] - orrne r0, r1, #0x80 - orrne r0, r0, #0x8000 - strneh r0, [r4] - ldreqb r0, [r4] - orreq r0, r0, #0x80 - streqb r0, [r4] - b _037FF108 -_037FF0F8: - tst r6, #2 - ldrneb r0, [sl] - orrne r0, r0, #0x80 - strneb r0, [sl] -_037FF108: - mov r5, #0 - b _037FF128 -_037FF110: - tst r7, #1 - beq _037FF120 - mov r0, r5 - bl SND_StartAlarm -_037FF120: - add r5, r5, #1 - mov r7, r7, lsr #1 -_037FF128: - cmp r5, #8 - bge _037FF138 - cmp r7, #0 - bne _037FF110 -_037FF138: - mov r0, r8 - bl OS_RestoreInterrupts - bl SND_UpdateSharedWork - b _037FF50C -_037FF148: - ldr sb, [sp, #0x30] - ldr r7, [sp, #0x2c] - ldr r6, [sp, #0x28] - ldr r5, [sp, #0x24] - bl OS_DisableInterrupts - mov fp, r0 - mov r8, #0 - b _037FF180 -_037FF168: - tst r7, #1 - beq _037FF178 - mov r0, r8 - bl SND_StopAlarm -_037FF178: - add r8, r8, #1 - mov r7, r7, lsr #1 -_037FF180: - cmp r8, #8 - bge _037FF190 - cmp r7, #0 - bne _037FF168 -_037FF190: - mov r7, #0 - b _037FF1B4 -_037FF198: - tst r5, #1 - beq _037FF1AC - mov r0, r7 - mov r1, sb - bl SND_StopChannel -_037FF1AC: - add r7, r7, #1 - mov r5, r5, lsr #1 -_037FF1B4: - cmp r7, #0x10 - bge _037FF1C4 - cmp r5, #0 - bne _037FF198 -_037FF1C4: - tst r6, #1 - movne r0, #0 - strneb r0, [r4] - tst r6, #2 - movne r0, #0 - strneb r0, [sl] - mov r0, fp - bl OS_RestoreInterrupts - bl SND_UpdateSharedWork - b _037FF50C -_037FF1EC: - ldr r1, [sp, #0x2c] - mov r0, r1, lsr #0x1d - and r0, r0, #1 - str r0, [sp] - mov r0, r1, lsr #0x1c - and r0, r0, #1 - str r0, [sp, #4] - mov r0, r1, lsr #0x1b - and r0, r0, #1 - str r0, [sp, #8] - mov r0, r1, lsr #0x1f - and r0, r0, #1 - mov r1, r1, lsr #0x1e - and r1, r1, #1 - ldr r2, [sp, #0x24] - ldr r3, [sp, #0x28] - bl SND_SetupCapture - b _037FF50C -_037FF234: - ldr r0, [sp, #0x30] - mov r2, #0 - str r0, [sp, #4] - ldr r3, [sp, #0x2c] - mov r0, #0 - str r0, [sp] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_SetupAlarm - b _037FF50C -_037FF25C: - ldr r6, [sp, #0x28] - ldr r5, [sp, #0x24] - mov r7, #0 - b _037FF288 -_037FF26C: - tst r5, #1 - beq _037FF280 - mov r0, r7 - mov r1, r6 - bl SND_SetChannelTimer -_037FF280: - add r7, r7, #1 - mov r5, r5, lsr #1 -_037FF288: - cmp r7, #0x10 - bge _037FF50C - cmp r5, #0 - bne _037FF26C - b _037FF50C -_037FF29C: - ldr r7, [sp, #0x2c] - ldr r6, [sp, #0x28] - ldr r5, [sp, #0x24] - mov r8, #0 - b _037FF2D0 -_037FF2B0: - tst r5, #1 - beq _037FF2C8 - mov r0, r8 - mov r1, r6 - mov r2, r7 - bl SND_SetChannelVolume -_037FF2C8: - add r8, r8, #1 - mov r5, r5, lsr #1 -_037FF2D0: - cmp r8, #0x10 - bge _037FF50C - cmp r5, #0 - bne _037FF2B0 - b _037FF50C -_037FF2E4: - ldr r6, [sp, #0x28] - ldr r5, [sp, #0x24] - mov r7, #0 - b _037FF310 -_037FF2F4: - tst r5, #1 - beq _037FF308 - mov r0, r7 - mov r1, r6 - bl SND_SetChannelPan -_037FF308: - add r7, r7, #1 - mov r5, r5, lsr #1 -_037FF310: - cmp r7, #0x10 - bge _037FF50C - cmp r5, #0 - bne _037FF2F4 - b _037FF50C -_037FF324: - ldr r3, [sp, #0x30] - ldr r0, [sp, #0x24] - mov r1, r3, lsl #0x10 - ldr r2, [sp, #0x2c] - mov r1, r1, lsr #0x10 - str r1, [sp] - ldr r1, _037FF554 ; =0x003FFFFF - and r1, r2, r1 - str r1, [sp, #4] - mov r1, r2, lsr #0x18 - and r1, r1, #0x7f - str r1, [sp, #8] - mov r1, r2, lsr #0x16 - and r1, r1, #3 - str r1, [sp, #0xc] - mov r1, r0, lsr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - str r1, [sp, #0x10] - mov r1, r3, lsr #0x10 - mov r2, r3, lsr #0x18 - and r1, r1, #0x7f - str r1, [sp, #0x14] - ldr r1, [sp, #0x28] - mov r0, r0, lsl #0x10 - mov r3, r3, lsr #0x1a - mov r0, r0, lsr #0x10 - bic r1, r1, #0xf8000000 - and r2, r2, #3 - and r3, r3, #3 - bl SND_SetupChannelPcm - b _037FF50C -_037FF3A4: - ldr r1, [sp, #0x2c] - ldr r3, [sp, #0x28] - mov r0, r1, lsl #8 - mov r0, r0, lsr #0x10 - str r0, [sp] - and r0, r1, #0x7f - str r0, [sp, #4] - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x30] - and r2, r3, #0x7f - mov r3, r3, lsr #8 - and r3, r3, #3 - bl SND_SetupChannelPsg - b _037FF50C -_037FF3DC: - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x28] - and r0, r1, #0x7f - str r0, [sp] - mov r0, r1, lsl #8 - mov r3, r0, lsr #0x10 - ldr r0, [sp, #0x24] - and r1, r2, #0x7f - mov r2, r2, lsr #8 - and r2, r2, #3 - bl SND_SetupChannelNoise - b _037FF50C -_037FF40C: - ldr r0, [sp, #0x24] - bl SNDi_SetSurroundDecay - b _037FF50C -_037FF418: - ldr r0, [sp, #0x24] - bl SND_SetMasterVolume - b _037FF50C -_037FF424: - ldr r0, [sp, #0x24] - bl SND_SetMasterPan - b _037FF50C -_037FF430: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x2c] - ldr r3, [sp, #0x30] - bl SND_SetOutputSelector - b _037FF50C -_037FF448: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_LockChannel - b _037FF50C -_037FF458: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_UnlockChannel - b _037FF50C -_037FF468: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_StopUnlockedChannel - b _037FF50C -_037FF478: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_InvalidateSeq - b _037FF50C -_037FF488: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_InvalidateBank - b _037FF50C -_037FF498: - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl SND_InvalidateWave - b _037FF50C -_037FF4A8: - ldr r1, [sp, #0x24] - ldr r0, _037FF558 ; =SNDi_SharedWork - str r1, [r0] - b _037FF50C -_037FF4B8: - ldr r5, [sp, #0x24] - ldr r0, _037FF55C ; =SNDi_Work - mov r1, r5 - mov r2, #0x1180 - bl MIi_CpuCopy32 - ldr r0, _037FF55C ; =SNDi_Work - add r1, r5, #0x1000 - str r0, [r1, #0x1c0] - mov r6, #0 -_037FF4DC: - mov r0, r6 - bl SND_GetChannelControl - add r1, r5, r6, lsl #2 - add r1, r1, #0x1000 - str r0, [r1, #0x180] - add r6, r6, #1 - cmp r6, #0x10 - blt _037FF4DC - mov r0, #0 - bl SND_GetLockedChannel - add r1, r5, #0x1000 - str r0, [r1, #0x1c4] -_037FF50C: - ldr r6, [sp, #0x1c] -_037FF510: - cmp r6, #0 - bne _037FEED0 - ldr r0, _037FF558 ; =SNDi_SharedWork - ldr r1, [r0] - ldr r0, [r1] - add r0, r0, #1 - str r0, [r1] -_037FF52C: - ldr r0, _037FF560 ; =sCommandMesgQueue - add r1, sp, #0x18 - mov r2, #0 - bl OS_ReceiveMessage - cmp r0, #0 - bne _037FEEC0 - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FF550: .word 0x04000509 -_037FF554: .word 0x003FFFFF -_037FF558: .word SNDi_SharedWork -_037FF55C: .word SNDi_Work -_037FF560: .word sCommandMesgQueue - arm_func_end SND_CommandProc - - arm_func_start PxiFifoCallback -PxiFifoCallback: ; 0x037FF564 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl OS_DisableInterrupts - mov r4, r0 - cmp r5, #0x2000000 - blo _037FF590 - ldr r0, _037FF5AC ; =sCommandMesgQueue - mov r1, r5 - mov r2, #0 - bl OS_SendMessage - b _037FF59C -_037FF590: - cmp r5, #0 - bne _037FF59C - bl SND_SendWakeupMessage -_037FF59C: - mov r0, r4 - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_037FF5AC: .word sCommandMesgQueue - arm_func_end PxiFifoCallback - - arm_func_start FS_Init -FS_Init: ; 0x037FF5B0 - ldr ip, _037FF5B8 ; =CARD_Init - bx ip - .align 2, 0 -_037FF5B8: .word CARD_Init - arm_func_end FS_Init - - arm_func_start CARDi_InitCommon -CARDi_InitCommon: ; 0x037FF5BC - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r4, _037FF660 ; =cardi_common - mov r2, #0 - mvn r1, #2 - str r1, [r4, #0xc] - mov r0, #4 - str r0, [r4, #0xf0] - str r2, [r4, #0x10] - str r2, [r4, #0x1c] - str r2, [r4] - str r2, [r4, #8] - str r2, [r4, #0x18] - str r2, [r4, #0x14] - str r2, [r4, #0xf8] - str r2, [r4, #0xf4] - mov r0, #0x400 - str r0, [sp] - ldr ip, [r4, #0xf0] - ldr r1, _037FF664 ; =CARDi_TaskThread - ldr r3, _037FF668 ; =status_checked$3825 - add r0, r4, #0x48 - str ip, [sp, #4] - bl OS_CreateThread - add r0, r4, #0x48 - bl OS_WakeupThreadDirect - ldr r1, _037FF66C ; =CARDi_OnFifoRecv - mov r0, #0xb - bl PXI_SetFifoRecvCallback - ldr r0, _037FF670 ; =0x027FFC40 - ldrh r0, [r0] - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - cmp r0, #0 - ldreq r0, _037FF674 ; =CARDi_EnableFlag - moveq r1, #1 - streq r1, [r0] - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FF660: .word cardi_common -_037FF664: .word CARDi_TaskThread -_037FF668: .word status_checked$3825 -_037FF66C: .word CARDi_OnFifoRecv -_037FF670: .word 0x027FFC40 -_037FF674: .word CARDi_EnableFlag - arm_func_end CARDi_InitCommon - - arm_func_start CARD_SetThreadPriority -CARD_SetThreadPriority: ; 0x037FF678 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, _037FF6B4 ; =cardi_common - mov r7, r0 - bl OS_DisableInterrupts - ldr r6, [r5, #0xf0] - mov r4, r0 - mov r1, r7 - add r0, r5, #0x48 - str r7, [r5, #0xf0] - bl OS_SetThreadPriority - mov r0, r4 - bl OS_RestoreInterrupts - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_037FF6B4: .word cardi_common - arm_func_end CARD_SetThreadPriority - - arm_func_start CARD_GetRomHeader -CARD_GetRomHeader: ; 0x037FF6B8 - ldr r0, _037FF6C0 ; =0x027FFA80 - bx lr - .align 2, 0 -_037FF6C0: .word 0x027FFA80 - arm_func_end CARD_GetRomHeader - - arm_func_start CARDi_CommandEnd -CARDi_CommandEnd: ; 0x037FF6C4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r0 - mov r4, r1 - adds r1, r5, r4 - beq _037FF75C - cmp r5, #0 - beq _037FF6E4 - bl OS_Sleep -_037FF6E4: - cmp r4, #0 - beq _037FF738 - sub r7, r4, r5 - mov r4, #0 - mov r5, #1 - mov r6, #5 - b _037FF718 -_037FF700: - cmp r7, #5 - movlt r8, r7 - movge r8, r6 - mov r0, r8 - bl OS_Sleep - sub r7, r7, r8 -_037FF718: - bl CARDi_CommandReadStatus - tst r0, #1 - moveq r0, r5 - movne r0, r4 - cmp r0, #0 - bne _037FF738 - cmp r7, #0 - bgt _037FF700 -_037FF738: - bl CARDi_CommandReadStatus - tst r0, #1 - moveq r0, #1 - movne r0, #0 - cmp r0, #0 - ldreq r0, _037FF764 ; =cardi_common - moveq r1, #4 - ldreq r0, [r0] - streq r1, [r0] -_037FF75C: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_037FF764: .word cardi_common - arm_func_end CARDi_CommandEnd - - arm_func_start CARDi_CommandReadStatus -CARDi_CommandReadStatus: ; 0x037FF768 - stmdb sp!, {r3, lr} - ldr ip, _037FF7AC ; =status_checked$3825 - mov lr, #2 - ldr r0, _037FF7B0 ; =arg$3983 - ldr r3, _037FF7B4 ; =CARDi_CommWriteCore - mov r1, #0 - mov r2, #1 - str lr, [ip, #4] - bl CARDi_CommArray - ldr r3, _037FF7B8 ; =CARDi_CommReadCore - add r1, sp, #0 - mov r0, #0 - mov r2, #1 - bl CARDi_CommArray - ldrb r0, [sp] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FF7AC: .word status_checked$3825 -_037FF7B0: .word arg$3983 -_037FF7B4: .word CARDi_CommWriteCore -_037FF7B8: .word CARDi_CommReadCore - arm_func_end CARDi_CommandReadStatus - - arm_func_start CARDi_WaitPrevCommand -CARDi_WaitPrevCommand: ; 0x037FF7BC - stmdb sp!, {r3, lr} - mov r0, #0 - mov r1, #0x32 - bl CARDi_CommandEnd - ldr r0, _037FF7F4 ; =cardi_common - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #4 - moveq r0, #6 - streq r0, [r1] - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FF7F4: .word cardi_common - arm_func_end CARDi_WaitPrevCommand - - arm_func_start CARDi_CommArray -CARDi_CommArray: ; 0x037FF7F8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _037FF9B0 ; =cardi_param - ldr r6, _037FF9B4 ; =0x0000A040 - ldr r5, _037FF9B8 ; =0x040001A0 - stmib r4, {r0, r1} - mov r8, r2 - mov r7, r3 - strh r6, [r5] - b _037FF98C -_037FF81C: - ldr r0, _037FF9BC ; =_03806AF4 - ldr r0, [r0, #4] - cmp r0, #0 - beq _037FF92C - ldr r0, _037FF9C0 ; =cardi_common - ldr r0, [r0] - ldr r0, [r0, #4] - mov r0, r0, asr #0x10 - and r0, r0, #0xff - cmp r0, #0xff - bne _037FF92C - bl OS_GetTick - ldr fp, _037FF9BC ; =_03806AF4 - mov r5, r0 - mov r6, r1 - mov sb, #0xfa00 -_037FF85C: - bl OS_GetTick - mov r3, #0 - subs sl, r0, r5 - sbc lr, r1, r6 - mov ip, r3 - umull r0, r1, sl, sb - mla r1, sl, ip, r1 - mla r1, lr, sb, r1 - ldr r2, _037FF9C4 ; =0x000082EA - bl _ll_udiv - ldrb r2, [fp] - cmp r1, r2, asr #31 - cmpeq r0, r2 - blo _037FF85C - ldr r0, _037FF9C8 ; =0x0000A042 - ldr r1, _037FF9B8 ; =0x040001A0 - strh r0, [r1] -_037FF8A0: - ldrh r0, [r1] - tst r0, #0x80 - bne _037FF8A0 - ldr r0, _037FF9CC ; =0x040001A2 - mov r1, #0 - strh r1, [r0] - sub r1, r0, #2 -_037FF8BC: - ldrh r0, [r1] - tst r0, #0x80 - bne _037FF8BC - ldr r1, _037FF9CC ; =0x040001A2 - ldr r0, _037FF9BC ; =_03806AF4 - ldrh r2, [r1] - mov r1, #0 - strh r2, [sp] - str r1, [r0, #4] - bl OS_GetTick - mov r6, r0 - mov sb, r1 - mov r5, #0xfa00 -_037FF8F0: - bl OS_GetTick - mov r3, #0 - subs ip, r0, r6 - sbc fp, r1, sb - mov sl, r3 - umull r0, r1, ip, r5 - mla r1, ip, sl, r1 - mla r1, fp, r5, r1 - ldr r2, _037FF9C4 ; =0x000082EA - bl _ll_udiv - ldr r2, _037FF9BC ; =_03806AF4 - ldrb r2, [r2] - cmp r1, r2, asr #31 - cmpeq r0, r2 - blo _037FF8F0 -_037FF92C: - ldr r0, [r4] - subs r0, r0, #1 - str r0, [r4] - ldrne r1, _037FF9B4 ; =0x0000A040 - ldrne r0, _037FF9B8 ; =0x040001A0 - strneh r1, [r0] - bne _037FF960 - ldr r1, _037FF9B8 ; =0x040001A0 - mov r2, #0xa000 - strh r2, [r1] - ldr r0, _037FF9BC ; =_03806AF4 - mov r1, #1 - str r1, [r0, #4] -_037FF960: - ldr r1, _037FF9B8 ; =0x040001A0 -_037FF964: - ldrh r0, [r1] - tst r0, #0x80 - bne _037FF964 - mov r0, r4 - mov lr, pc - bx r7 - ldr r0, [r4] - cmp r0, #0 - beq _037FF994 - sub r8, r8, #1 -_037FF98C: - cmp r8, #0 - bne _037FF81C -_037FF994: - ldr r0, [r4] - cmp r0, #0 - ldreq r0, _037FF9B8 ; =0x040001A0 - moveq r1, #0 - streqh r1, [r0] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FF9B0: .word cardi_param -_037FF9B4: .word 0x0000A040 -_037FF9B8: .word 0x040001A0 -_037FF9BC: .word _03806AF4 -_037FF9C0: .word cardi_common -_037FF9C4: .word 0x000082EA -_037FF9C8: .word 0x0000A042 -_037FF9CC: .word 0x040001A2 - arm_func_end CARDi_CommArray - - arm_func_start CARDi_CommReadCore -CARDi_CommReadCore: ; 0x037FF9D0 - ldr r1, _037FFA0C ; =0x040001A2 - mov r2, #0 - strh r2, [r1] - sub r2, r1, #2 -_037FF9E0: - ldrh r1, [r2] - tst r1, #0x80 - bne _037FF9E0 - ldr r2, _037FFA0C ; =0x040001A2 - ldr r1, [r0, #8] - ldrh r2, [r2] - strb r2, [r1] - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - bx lr - .align 2, 0 -_037FFA0C: .word 0x040001A2 - arm_func_end CARDi_CommReadCore - - arm_func_start CARDi_CommWriteCore -CARDi_CommWriteCore: ; 0x037FFA10 - stmdb sp!, {r3} - sub sp, sp, #4 - ldr r1, [r0, #4] - ldr r2, _037FFA5C ; =0x040001A2 - ldrb r1, [r1] - strh r1, [r2] - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - sub r1, r2, #2 -_037FFA38: - ldrh r0, [r1] - tst r0, #0x80 - bne _037FFA38 - ldr r0, _037FFA5C ; =0x040001A2 - ldrh r0, [r0] - strh r0, [sp] - add sp, sp, #4 - ldmia sp!, {r3} - bx lr - .align 2, 0 -_037FFA5C: .word 0x040001A2 - arm_func_end CARDi_CommWriteCore - - arm_func_start CARDi_CommVerifyCore -CARDi_CommVerifyCore: ; 0x037FFA60 - ldr r1, _037FFAC0 ; =0x040001A2 - mov r2, #0 - strh r2, [r1] - sub r2, r1, #2 -_037FFA70: - ldrh r1, [r2] - tst r1, #0x80 - bne _037FFA70 - ldr r2, _037FFAC0 ; =0x040001A2 - ldr r1, [r0, #4] - ldrh r2, [r2] - ldrb r1, [r1] - and r2, r2, #0xff - cmp r2, r1 - beq _037FFAB0 - mov r1, #0 - str r1, [r0, #0xc] - ldr r1, [r0] - cmp r1, #1 - movhi r1, #1 - strhi r1, [r0] -_037FFAB0: - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - bx lr - .align 2, 0 -_037FFAC0: .word 0x040001A2 - arm_func_end CARDi_CommVerifyCore - - arm_func_start CARDi_WriteEnable -CARDi_WriteEnable: ; 0x037FFAC4 - stmdb sp!, {r3, lr} - ldr ip, _037FFAEC ; =status_checked$3825 - mov r2, #1 - ldr r0, _037FFAF0 ; =buf$3759 - ldr r3, _037FFAF4 ; =CARDi_CommWriteCore - mov r1, #0 - str r2, [ip, #4] - bl CARDi_CommArray - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FFAEC: .word status_checked$3825 -_037FFAF0: .word buf$3759 -_037FFAF4: .word CARDi_CommWriteCore - arm_func_end CARDi_WriteEnable - - arm_func_start CARDi_SendSpiAddressingCommand -CARDi_SendSpiAddressingCommand: ; 0x037FFAF8 - stmdb sp!, {r3, lr} - ldr r2, _037FFB90 ; =cardi_common - ldr r2, [r2] - ldr r2, [r2, #0x28] - cmp r2, #1 - beq _037FFB24 - cmp r2, #2 - beq _037FFB40 - cmp r2, #3 - beq _037FFB58 - b _037FFB74 -_037FFB24: - mov r3, r0, lsr #5 - and r3, r3, #8 - mov ip, r0, lsl #0x18 - orr r0, r1, r3 - orr r0, r0, ip, lsr #16 - str r0, [sp] - b _037FFB74 -_037FFB40: - and r3, r0, #0xff00 - mov ip, r0, lsl #0x18 - orr r0, r1, r3 - orr r0, r0, ip, lsr #8 - str r0, [sp] - b _037FFB74 -_037FFB58: - mov r3, r0, lsr #8 - and r3, r3, #0xff00 - and ip, r0, #0xff00 - orr r1, r1, r3 - orr r1, r1, ip, lsl #8 - orr r0, r1, r0, lsl #24 - str r0, [sp] -_037FFB74: - ldr r3, _037FFB94 ; =CARDi_CommWriteCore - add r0, sp, #0 - add r2, r2, #1 - mov r1, #0 - bl CARDi_CommArray - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_037FFB90: .word cardi_common -_037FFB94: .word CARDi_CommWriteCore - arm_func_end CARDi_SendSpiAddressingCommand - - arm_func_start CARDi_InitStatusRegister -CARDi_InitStatusRegister: ; 0x037FFB98 - stmdb sp!, {r4, lr} - ldr r0, _037FFBE8 ; =cardi_common - ldr r0, [r0] - ldrb r4, [r0, #0x54] - cmp r4, #0xff - beq _037FFBE0 - ldr r0, _037FFBEC ; =status_checked$3825 - ldr r0, [r0] - cmp r0, #0 - bne _037FFBE0 - bl CARDi_CommandReadStatus - cmp r4, r0 - beq _037FFBD4 - mov r0, r4 - bl CARDi_SetWriteProtectCore -_037FFBD4: - ldr r0, _037FFBEC ; =status_checked$3825 - mov r1, #1 - str r1, [r0] -_037FFBE0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FFBE8: .word cardi_common -_037FFBEC: .word status_checked$3825 - arm_func_end CARDi_InitStatusRegister - - arm_func_start CARDi_ReadBackupCore -CARDi_ReadBackupCore: ; 0x037FFBF0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFC48 - ldr r0, _037FFC50 ; =cardi_common - ldr r2, _037FFC54 ; =status_checked$3825 - ldr r1, [r0] - mov r0, r6 - ldr r3, [r1, #0x28] - mov r1, #3 - add r3, r3, #1 - add r3, r3, r4 - str r3, [r2, #4] - bl CARDi_SendSpiAddressingCommand - ldr r3, _037FFC58 ; =CARDi_CommReadCore - mov r1, r5 - mov r2, r4 - mov r0, #0 - bl CARDi_CommArray -_037FFC48: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_037FFC50: .word cardi_common -_037FFC54: .word status_checked$3825 -_037FFC58: .word CARDi_CommReadCore - arm_func_end CARDi_ReadBackupCore - - arm_func_start CARDi_ProgramBackupCore -CARDi_ProgramBackupCore: ; 0x037FFC5C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFD00 - ldr r0, _037FFD08 ; =cardi_common - ldr fp, _037FFD0C ; =status_checked$3825 - ldr r5, [r0] - ldr r6, [r5, #0x24] - sub r4, r6, #1 - b _037FFCF8 -_037FFC90: - and r0, sl, r4 - sub r7, r6, r0 - cmp r7, r8 - movhi r7, r8 - bl CARDi_WriteEnable - ldr r1, [r5, #0x28] - mov r0, sl - add r1, r1, #1 - add r1, r1, r7 - str r1, [fp, #4] - mov r1, #2 - bl CARDi_SendSpiAddressingCommand - ldr r3, _037FFD10 ; =CARDi_CommWriteCore - mov r0, sb - mov r1, #0 - mov r2, r7 - bl CARDi_CommArray - ldr r0, [r5, #0x2c] - mov r1, #0 - bl CARDi_CommandEnd - ldr r0, [r5] - cmp r0, #0 - bne _037FFD00 - add sb, sb, r7 - add sl, sl, r7 - sub r8, r8, r7 -_037FFCF8: - cmp r8, #0 - bne _037FFC90 -_037FFD00: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FFD08: .word cardi_common -_037FFD0C: .word status_checked$3825 -_037FFD10: .word CARDi_CommWriteCore - arm_func_end CARDi_ProgramBackupCore - - arm_func_start CARDi_WriteBackupCore -CARDi_WriteBackupCore: ; 0x037FFD14 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFDB8 - ldr r0, _037FFDC0 ; =cardi_common - ldr fp, _037FFDC4 ; =status_checked$3825 - ldr r5, [r0] - ldr r6, [r5, #0x24] - sub r4, r6, #1 - b _037FFDB0 -_037FFD48: - and r0, sl, r4 - sub r7, r6, r0 - cmp r7, r8 - movhi r7, r8 - bl CARDi_WriteEnable - ldr r1, [r5, #0x28] - mov r0, sl - add r1, r1, #1 - add r1, r1, r7 - str r1, [fp, #4] - mov r1, #0xa - bl CARDi_SendSpiAddressingCommand - ldr r3, _037FFDC8 ; =CARDi_CommWriteCore - mov r0, sb - mov r1, #0 - mov r2, r7 - bl CARDi_CommArray - ldr r0, [r5, #0x30] - ldr r1, [r5, #0x34] - bl CARDi_CommandEnd - ldr r0, [r5] - cmp r0, #0 - bne _037FFDB8 - add sb, sb, r7 - add sl, sl, r7 - sub r8, r8, r7 -_037FFDB0: - cmp r8, #0 - bne _037FFD48 -_037FFDB8: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_037FFDC0: .word cardi_common -_037FFDC4: .word status_checked$3825 -_037FFDC8: .word CARDi_CommWriteCore - arm_func_end CARDi_WriteBackupCore - - arm_func_start CARDi_VerifyBackupCore -CARDi_VerifyBackupCore: ; 0x037FFDCC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFE48 - ldr r0, _037FFE50 ; =cardi_common - ldr r2, _037FFE54 ; =status_checked$3825 - ldr r4, [r0] - mov r0, #1 - str r0, [r2, #0x10] - ldr r1, [r4, #0x28] - mov r0, r7 - add r1, r1, #1 - add r3, r1, r5 - mov r1, #3 - str r3, [r2, #4] - bl CARDi_SendSpiAddressingCommand - ldr r3, _037FFE58 ; =CARDi_CommVerifyCore - mov r0, r6 - mov r2, r5 - mov r1, #0 - bl CARDi_CommArray - ldr r0, [r4] - cmp r0, #0 - ldreq r0, _037FFE54 ; =status_checked$3825 - ldreq r0, [r0, #0x10] - cmpeq r0, #0 - moveq r0, #1 - streq r0, [r4] -_037FFE48: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_037FFE50: .word cardi_common -_037FFE54: .word status_checked$3825 -_037FFE58: .word CARDi_CommVerifyCore - arm_func_end CARDi_VerifyBackupCore - - arm_func_start CARDi_EraseBackupSectorCore -CARDi_EraseBackupSectorCore: ; 0x037FFE5C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _037FFEF0 ; =cardi_common - mov r7, r0 - ldr r4, [r2] - mov r6, r1 - ldr r5, [r4, #0x1c] - orr r0, r7, r6 - sub r1, r5, #1 - tst r1, r0 - movne r0, #2 - strne r0, [r4] - bne _037FFEE8 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFEE8 - ldr r8, _037FFEF4 ; =status_checked$3825 - mov sb, #0xd8 - b _037FFEE0 -_037FFEA4: - bl CARDi_WriteEnable - ldr r1, [r4, #0x28] - mov r0, r7 - add r1, r1, #1 - str r1, [r8, #4] - mov r1, sb - bl CARDi_SendSpiAddressingCommand - ldr r0, [r4, #0x40] - ldr r1, [r4, #0x44] - bl CARDi_CommandEnd - ldr r0, [r4] - cmp r0, #0 - bne _037FFEE8 - add r7, r7, r5 - sub r6, r6, r5 -_037FFEE0: - cmp r6, #0 - bne _037FFEA4 -_037FFEE8: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_037FFEF0: .word cardi_common -_037FFEF4: .word status_checked$3825 - arm_func_end CARDi_EraseBackupSectorCore - - arm_func_start CARDi_EraseBackupSubSectorCore -CARDi_EraseBackupSubSectorCore: ; 0x037FFEF8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _037FFF8C ; =cardi_common - mov r7, r0 - ldr r4, [r2] - mov r6, r1 - ldr r5, [r4, #0x20] - orr r0, r7, r6 - sub r1, r5, #1 - tst r1, r0 - movne r0, #2 - strne r0, [r4] - bne _037FFF84 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFF84 - ldr r8, _037FFF90 ; =status_checked$3825 - mov sb, #0x20 - b _037FFF7C -_037FFF40: - bl CARDi_WriteEnable - ldr r1, [r4, #0x28] - mov r0, r7 - add r1, r1, #1 - str r1, [r8, #4] - mov r1, sb - bl CARDi_SendSpiAddressingCommand - ldr r0, [r4, #0x48] - ldr r1, [r4, #0x4c] - bl CARDi_CommandEnd - ldr r0, [r4] - cmp r0, #0 - bne _037FFF84 - add r7, r7, r5 - sub r6, r6, r5 -_037FFF7C: - cmp r6, #0 - bne _037FFF40 -_037FFF84: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_037FFF8C: .word cardi_common -_037FFF90: .word status_checked$3825 - arm_func_end CARDi_EraseBackupSubSectorCore - - arm_func_start CARDi_EraseChipCore -CARDi_EraseChipCore: ; 0x037FFF94 - stmdb sp!, {r4, lr} - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _037FFFD8 - ldr r0, _037FFFE0 ; =cardi_common - ldr r4, [r0] - bl CARDi_WriteEnable - ldr r1, _037FFFE4 ; =status_checked$3825 - mov r2, #1 - ldr r0, _037FFFE8 ; =arg$3806 - ldr r3, _037FFFEC ; =CARDi_CommWriteCore - str r2, [r1, #4] - mov r1, #0 - bl CARDi_CommArray - ldr r0, [r4, #0x38] - ldr r1, [r4, #0x3c] - bl CARDi_CommandEnd -_037FFFD8: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FFFE0: .word cardi_common -_037FFFE4: .word status_checked$3825 -_037FFFE8: .word arg$3806 -_037FFFEC: .word CARDi_CommWriteCore - arm_func_end CARDi_EraseChipCore - - arm_func_start CARDi_SetWriteProtectCore -CARDi_SetWriteProtectCore: ; 0x037FFFF0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - bl CARDi_WaitPrevCommand - cmp r0, #0 - beq _03800074 - ldr r0, _0380007C ; =cardi_common - strb r4, [sp, #1] - mov r1, #1 - ldr sb, [r0] - ldr r5, _03800080 ; =CARDi_CommWriteCore - ldr r4, _03800084 ; =status_checked$3825 - strb r1, [sp] - mov sl, #0xa - add r7, sp, #0 - mov r8, #2 - mov r6, #0 - mov fp, #5 -_03800034: - bl CARDi_WriteEnable - mov r0, r7 - str r8, [r4, #4] - mov r1, r6 - mov r2, r8 - mov r3, r5 - bl CARDi_CommArray - mov r0, fp - mov r1, #0 - bl CARDi_CommandEnd - ldr r0, [sb] - cmp r0, #4 - bne _03800074 - sub sl, sl, #1 - cmp sl, #0 - bgt _03800034 -_03800074: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_0380007C: .word cardi_common -_03800080: .word CARDi_CommWriteCore -_03800084: .word status_checked$3825 - arm_func_end CARDi_SetWriteProtectCore - - arm_func_start CARDi_SetRomOp -CARDi_SetRomOp: ; 0x03800088 - ldr r3, _038000E0 ; =0x040001A4 -_0380008C: - ldr r2, [r3] - tst r2, #-0x80000000 - bne _0380008C - ldr r3, _038000E4 ; =0x040001A1 - mov r2, #0xc0 - strb r2, [r3] - mov r2, r0, lsr #0x18 - strb r2, [r3, #7] - mov r2, r0, lsr #0x10 - strb r2, [r3, #8] - mov r2, r0, lsr #8 - strb r2, [r3, #9] - strb r0, [r3, #0xa] - mov r0, r1, lsr #0x18 - strb r0, [r3, #0xb] - mov r0, r1, lsr #0x10 - strb r0, [r3, #0xc] - mov r0, r1, lsr #8 - strb r0, [r3, #0xd] - strb r1, [r3, #0xe] - bx lr - .align 2, 0 -_038000E0: .word 0x040001A4 -_038000E4: .word 0x040001A1 - arm_func_end CARDi_SetRomOp - - arm_func_start CARDi_ReadEnd -CARDi_ReadEnd: ; 0x038000E8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _03800158 ; =cardi_common - mov r1, #0 - ldr r0, [r4] - str r1, [r0] - ldr r7, [r4, #0x3c] - ldr r6, [r4, #0x40] - bl OS_DisableInterrupts - ldr r1, [r4, #0xfc] - mov r5, r0 - bic r0, r1, #0x4c - str r0, [r4, #0xfc] - add r0, r4, #0xf4 - bl OS_WakeupThread - ldr r0, [r4, #0xfc] - tst r0, #0x10 - beq _03800134 - add r0, r4, #0x48 - bl OS_WakeupThreadDirect -_03800134: - mov r0, r5 - bl OS_RestoreInterrupts - cmp r7, #0 - beq _03800150 - mov r0, r6 - mov lr, pc - bx r7 -_03800150: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_03800158: .word cardi_common - arm_func_end CARDi_ReadEnd - - arm_func_start CARDi_GetRomFlag -CARDi_GetRomFlag: ; 0x0380015C - ldr r1, _03800178 ; =cardi_rom_header_addr - ldr r1, [r1] - ldr r1, [r1, #0x60] - bic r1, r1, #0x7000000 - orr r0, r1, r0 - orr r0, r0, #0xa0000000 - bx lr - .align 2, 0 -_03800178: .word cardi_rom_header_addr - arm_func_end CARDi_GetRomFlag - - arm_func_start CARDi_ReadCard -CARDi_ReadCard: ; 0x0380017C - bx lr - arm_func_end CARDi_ReadCard - - arm_func_start CARDi_ReadRomIDCore -CARDi_ReadRomIDCore: ; 0x03800180 - stmdb sp!, {r3, lr} - mov r0, #-0x48000000 - mov r1, #0 - bl CARDi_SetRomOp - mov r0, #0x7000000 - bl CARDi_GetRomFlag - mov r1, #0x2000 - rsb r1, r1, #0 - ldr r2, _038001C8 ; =0x040001A4 - and r0, r0, r1 - str r0, [r2] -_038001AC: - ldr r0, [r2] - tst r0, #0x800000 - beq _038001AC - ldr r0, _038001CC ; =0x04100010 - ldr r0, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_038001C8: .word 0x040001A4 -_038001CC: .word 0x04100010 - arm_func_end CARDi_ReadRomIDCore - - arm_func_start CARDi_ReadRomID -CARDi_ReadRomID: ; 0x038001D0 - stmdb sp!, {r4, lr} - ldr r0, _038001FC ; =cardi_common - mov r1, #0 - mov r2, r1 - bl CARDi_WaitTask - bl CARDi_ReadRomIDCore - mov r4, r0 - bl CARDi_ReadEnd - mov r0, r4 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_038001FC: .word cardi_common - arm_func_end CARDi_ReadRomID - - arm_func_start CARDi_WaitTask -CARDi_WaitTask: ; 0x03800200 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl OS_DisableInterrupts - mov r4, r0 - b _03800224 -_0380021C: - add r0, r7, #0xf4 - bl OS_SleepThread -_03800224: - ldr r0, [r7, #0xfc] - tst r0, #4 - bne _0380021C - ldr r1, [r7, #0xfc] - mov r0, r4 - orr r1, r1, #4 - str r1, [r7, #0xfc] - str r6, [r7, #0x3c] - str r5, [r7, #0x40] - bl OS_RestoreInterrupts - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end CARDi_WaitTask - - arm_func_start CARD_Init -CARD_Init: ; 0x03800254 - stmdb sp!, {r3, lr} - ldr ip, _038002B4 ; =cardi_common - ldr r0, [ip, #0xfc] - cmp r0, #0 - bne _038002AC - ldr r0, _038002B8 ; =cardi_rom_base - mov r2, #0 - sub r1, r2, #1 - mov r3, #1 - str r3, [ip, #0xfc] - str r2, [ip, #0x28] - str r2, [ip, #0x24] - str r2, [ip, #0x20] - str r1, [ip, #0x2c] - str r2, [ip, #0x3c] - str r2, [ip, #0x40] - str r2, [r0] - bl CARDi_InitCommon - ldr r1, _038002BC ; =CARDi_ReadCard - ldr r0, _038002C0 ; =rom_stat - str r1, [r0] - bl CARD_InitPulledOutCallback -_038002AC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_038002B4: .word cardi_common -_038002B8: .word cardi_rom_base -_038002BC: .word CARDi_ReadCard -_038002C0: .word rom_stat - arm_func_end CARD_Init - - arm_func_start CARDi_OnFifoRecv -CARDi_OnFifoRecv: ; 0x038002C4 - stmdb sp!, {r3, lr} - cmp r0, #0xb - bne _0380039C - cmp r2, #0 - beq _0380039C - ldr r0, _038003A4 ; =cardi_common - ldr r2, [r0, #8] - cmp r2, #0 - streq r1, [r0, #4] - ldr r2, [r0, #4] - cmp r2, #0xf - addls pc, pc, r2, lsl #2 - b _03800368 -_038002F8: ; jump table - b _03800338 ; case 0 - b _03800368 ; case 1 - b _0380035C ; case 2 - b _0380035C ; case 3 - b _0380035C ; case 4 - b _0380035C ; case 5 - b _0380035C ; case 6 - b _0380035C ; case 7 - b _0380035C ; case 8 - b _0380035C ; case 9 - b _0380035C ; case 10 - b _0380035C ; case 11 - b _0380035C ; case 12 - b _0380035C ; case 13 - b _0380035C ; case 14 - b _0380035C ; case 15 -_03800338: - ldr r2, [r0, #8] - cmp r2, #0 - beq _03800368 - cmp r2, #1 - ldreq r2, [r0, #0xfc] - streq r1, [r0] - orreq r1, r2, #0x10 - streq r1, [r0, #0xfc] - b _03800368 -_0380035C: - ldr r1, [r0, #0xfc] - orr r1, r1, #0x10 - str r1, [r0, #0xfc] -_03800368: - ldr r1, [r0, #0xfc] - tst r1, #0x10 - ldreq r1, [r0, #8] - addeq r1, r1, #1 - streq r1, [r0, #8] - beq _0380039C - ldr r1, [r0, #0xfc] - mov r2, #0 - str r2, [r0, #8] - tst r1, #4 - ldrne r0, [r0, #0xec] - addeq r0, r0, #0x48 - bl OS_WakeupThreadDirect -_0380039C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_038003A4: .word cardi_common - arm_func_end CARDi_OnFifoRecv - - arm_func_start CARDi_TaskThread -CARDi_TaskThread: ; 0x038003A8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _038005D8 ; =cardi_common -_038003B0: - mov r5, #0 - bl OS_DisableInterrupts - mov r6, r0 - add r8, r4, #0x48 - mov r7, r5 -_038003C4: - ldr r0, [r4, #0xfc] - tst r0, #4 - bne _038003FC - ldr r0, [r4, #0xfc] - tst r0, #0x10 - beq _03800408 - ldr r0, [r4, #0xfc] - mov r5, #1 - orr r0, r0, #4 - str r0, [r4, #0xfc] - ldr r0, [r4, #0xfc] - bic r0, r0, #0x10 - str r0, [r4, #0xfc] - b _03800418 -_038003FC: - ldr r0, [r4, #0xfc] - tst r0, #8 - bne _03800418 -_03800408: - mov r0, r7 - str r8, [r4, #0xec] - bl OS_SleepThread - b _038003C4 -_03800418: - mov r0, r6 - bl OS_RestoreInterrupts - cmp r5, #0 - beq _038005C4 - ldr r0, [r4] - mov r1, #0 - str r1, [r0] - ldr r3, [r4] - ldr r2, [r4, #4] - ldr r1, [r3, #0x58] - mov r0, #1 - tst r1, r0, lsl r2 - moveq r0, #3 - streq r0, [r3] - beq _03800568 - cmp r2, #0xf - addls pc, pc, r2, lsl #2 - b _03800560 -_03800460: ; jump table - b _03800568 ; case 0 - b _03800568 ; case 1 - b _038004A0 ; case 2 - b _038004A8 ; case 3 - b _038004B8 ; case 4 - b _03800560 ; case 5 - b _038004C4 ; case 6 - b _038004D8 ; case 7 - b _038004EC ; case 8 - b _03800500 ; case 9 - b _03800560 ; case 10 - b _03800514 ; case 11 - b _03800534 ; case 12 - b _0380053C ; case 13 - b _03800550 ; case 14 - b _03800524 ; case 15 -_038004A0: - bl CARDi_InitStatusRegister - b _03800568 -_038004A8: - bl CARDi_ReadRomIDCore - ldr r1, [r4] - str r0, [r1, #8] - b _03800568 -_038004B8: - mov r0, #3 - str r0, [r3] - b _03800568 -_038004C4: - ldr r0, [r3, #0xc] - ldr r1, [r3, #0x10] - ldr r2, [r3, #0x14] - bl CARDi_ReadBackupCore - b _03800568 -_038004D8: - ldr r0, [r3, #0x10] - ldr r1, [r3, #0xc] - ldr r2, [r3, #0x14] - bl CARDi_WriteBackupCore - b _03800568 -_038004EC: - ldr r0, [r3, #0x10] - ldr r1, [r3, #0xc] - ldr r2, [r3, #0x14] - bl CARDi_ProgramBackupCore - b _03800568 -_03800500: - ldr r0, [r3, #0x10] - ldr r1, [r3, #0xc] - ldr r2, [r3, #0x14] - bl CARDi_VerifyBackupCore - b _03800568 -_03800514: - ldr r0, [r3, #0x10] - ldr r1, [r3, #0x14] - bl CARDi_EraseBackupSectorCore - b _03800568 -_03800524: - ldr r0, [r3, #0x10] - ldr r1, [r3, #0x14] - bl CARDi_EraseBackupSubSectorCore - b _03800568 -_03800534: - bl CARDi_EraseChipCore - b _03800568 -_0380053C: - bl CARDi_CommandReadStatus - ldr r1, [r4] - ldr r1, [r1, #0x10] - strb r0, [r1] - b _03800568 -_03800550: - ldr r0, [r3, #0xc] - ldrb r0, [r0] - bl CARDi_SetWriteProtectCore - b _03800568 -_03800560: - mov r0, #3 - str r0, [r3] -_03800568: - mov r6, #0xb - mov r5, #1 -_03800570: - mov r0, r6 - mov r1, r5 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03800570 - bl OS_DisableInterrupts - ldr r1, [r4, #0xfc] - mov r5, r0 - bic r0, r1, #0x4c - str r0, [r4, #0xfc] - add r0, r4, #0xf4 - bl OS_WakeupThread - ldr r0, [r4, #0xfc] - tst r0, #0x10 - beq _038005B8 - add r0, r4, #0x48 - bl OS_WakeupThreadDirect -_038005B8: - mov r0, r5 - bl OS_RestoreInterrupts - b _038003B0 -_038005C4: - ldr r1, [r4, #0x44] - mov r0, r4 - mov lr, pc - bx r1 - b _038003B0 - .align 2, 0 -_038005D8: .word cardi_common - arm_func_end CARDi_TaskThread - - arm_func_start CARD_InitPulledOutCallback -CARD_InitPulledOutCallback: ; 0x038005DC - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0380062C ; =skipCheck$3668 - ldr r1, [r0, #8] - cmp r1, #0 - bne _03800624 - mov r1, #1 - str r1, [r0, #8] - bl PXI_Init - mov r5, #0xe - mov r4, #0 -_03800604: - mov r0, r5 - mov r1, r4 - bl PXI_IsCallbackReady - cmp r0, #0 - beq _03800604 - ldr r1, _03800630 ; =CARDi_CallbackForPulledOut - mov r0, #0xe - bl PXI_SetFifoRecvCallback -_03800624: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0380062C: .word skipCheck$3668 -_03800630: .word CARDi_CallbackForPulledOut - arm_func_end CARD_InitPulledOutCallback - - arm_func_start CARDi_CallbackForPulledOut -CARDi_CallbackForPulledOut: ; 0x03800634 - stmdb sp!, {r4, lr} - and r0, r1, #0x3f - cmp r0, #1 - bne _0380068C - mov r0, #0 - bl MI_StopDma - mov r0, #1 - bl MI_StopDma - mov r0, #2 - bl MI_StopDma - mov r0, #3 - bl MI_StopDma - mov r0, #0 - bl CTRDG_VibPulseEdgeUpdate - bl OS_DisableInterrupts - mov r4, r0 - bl SND_BeginSleep - bl WVR_Shutdown - mov r0, r4 - bl OS_RestoreInterrupts - bl OS_Terminate - b _03800690 -_0380068C: - bl OS_Terminate -_03800690: - ldmia sp!, {r4, lr} - bx lr - arm_func_end CARDi_CallbackForPulledOut - - arm_func_start CARD_IsPulledOut -CARD_IsPulledOut: ; 0x03800698 - stmdb sp!, {r3, lr} - ldr r0, _038006D8 ; =skipCheck$3668 - ldr r0, [r0, #0xc] - cmp r0, #0 - bne _038006C8 - ldr r0, _038006DC ; =0x027FFE1F - ldrb r0, [r0] - tst r0, #0x80 - beq _038006C4 - bl CARD_CompareCardID - b _038006C8 -_038006C4: - bl CARD_IsCardIreqLo -_038006C8: - ldr r0, _038006D8 ; =skipCheck$3668 - ldr r0, [r0, #0xc] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_038006D8: .word skipCheck$3668 -_038006DC: .word 0x027FFE1F - arm_func_end CARD_IsPulledOut - - arm_func_start CARD_CompareCardID -CARD_CompareCardID: ; 0x038006E0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #1 - bl OS_GetLockID - mov r4, r0 - mvn r0, #2 - cmp r4, r0 - beq _03800758 - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_TryLockCard - cmp r0, #0 - bne _0380074C - ldr r1, _03800778 ; =0x027FFC10 - ldrh r0, [r1] - cmp r0, #0 - subeq r0, r1, #0x410 - subne r0, r1, #0x10 - ldr r0, [r0] - str r0, [sp] - bl CARDi_ReadRomID - ldr r1, [sp] - cmp r0, r1 - mov r0, r4, lsl #0x10 - moveq r5, #1 - mov r0, r0, lsr #0x10 - movne r5, #0 - bl OS_UnlockCard -_0380074C: - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockID -_03800758: - ldr r1, _0380077C ; =skipCheck$3668 - cmp r5, #0 - moveq r2, #1 - movne r2, #0 - str r2, [r1, #0xc] - mov r0, r5 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_03800778: .word 0x027FFC10 -_0380077C: .word skipCheck$3668 - arm_func_end CARD_CompareCardID - - arm_func_start CARD_IsCardIreqLo -CARD_IsCardIreqLo: ; 0x03800780 - ldr r0, _038007A4 ; =0x04000214 - mov r2, #1 - ldr r1, [r0] - mov r0, r2 - tst r1, #0x100000 - ldrne r1, _038007A8 ; =skipCheck$3668 - movne r0, #0 - strne r2, [r1, #0xc] - bx lr - .align 2, 0 -_038007A4: .word 0x04000214 -_038007A8: .word skipCheck$3668 - arm_func_end CARD_IsCardIreqLo - - arm_func_start CARD_CheckPullOut_Polling -CARD_CheckPullOut_Polling: ; 0x038007AC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _03800898 ; =skipCheck$3668 - ldr r0, [r0, #4] - cmp r0, #0 - bne _03800890 - ldr r2, _0380089C ; =0x027FFC40 - ldrh r0, [r2] - cmp r0, #2 - beq _03800890 - ldr r1, _038008A0 ; =nextCount$3668 - mvn r0, #0 - ldr r3, [r1] - cmp r3, r0 - ldreq r0, [r2, #-4] - addeq r0, r0, #0xa - streq r0, [r1] - beq _03800890 - ldr r0, [r2, #-4]! - cmp r0, r3 - blo _03800890 - ldr r0, [r2] - add r0, r0, #0xa - str r0, [r1] - bl CARD_IsPulledOut - cmp r0, #0 - beq _03800840 - ldr r0, _03800898 ; =skipCheck$3668 - mov r1, #1 - str r1, [r0, #4] - bl CARD_GetRomHeader - ldr r0, [r0, #0xc] - cmp r0, #0 - bne _03800840 - ldr r0, _038008A0 ; =nextCount$3668 - ldr r0, [r0, #4] - cmp r0, #0 - bne _03800890 -_03800840: - ldr r0, _03800898 ; =skipCheck$3668 - ldr r1, _038008A0 ; =nextCount$3668 - ldr r0, [r0, #4] - mov r2, #0 - str r2, [r1, #4] - cmp r0, #0 - beq _03800890 - mov r7, #0x64 - mov r6, #0xe - mov r5, #0x11 - mov r4, r2 - b _03800878 -_03800870: - mov r0, r7 - bl VENEER_SVC_WaitByLoop -_03800878: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _03800870 -_03800890: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_03800898: .word skipCheck$3668 -_0380089C: .word 0x027FFC40 -_038008A0: .word nextCount$3668 - arm_func_end CARD_CheckPullOut_Polling - - .rodata - -SinTable: ; 0x0380664C - .byte 0x00, 0x06, 0x0C, 0x13 - .byte 0x19, 0x1F, 0x25, 0x2B, 0x31, 0x36, 0x3C, 0x41, 0x47, 0x4C, 0x51, 0x55, 0x5A, 0x5E, 0x62, 0x66 - .byte 0x6A, 0x6D, 0x70, 0x73, 0x75, 0x78, 0x7A, 0x7B, 0x7D, 0x7E, 0x7E, 0x7F, 0x7F - - .balign 4, 0 - -SNDi_DecibelTable: ; 0x03806670 - .byte 0x00, 0x80, 0x2E, 0xFD, 0x2F, 0xFD, 0x75, 0xFD, 0xA7, 0xFD, 0xCE, 0xFD, 0xEE, 0xFD, 0x09, 0xFE - .byte 0x20, 0xFE, 0x34, 0xFE, 0x46, 0xFE, 0x57, 0xFE, 0x66, 0xFE, 0x74, 0xFE, 0x81, 0xFE, 0x8D, 0xFE - .byte 0x98, 0xFE, 0xA3, 0xFE, 0xAD, 0xFE, 0xB6, 0xFE, 0xBF, 0xFE, 0xC7, 0xFE, 0xCF, 0xFE, 0xD7, 0xFE - .byte 0xDF, 0xFE, 0xE6, 0xFE, 0xEC, 0xFE, 0xF3, 0xFE, 0xF9, 0xFE, 0xFF, 0xFE, 0x05, 0xFF, 0x0B, 0xFF - .byte 0x11, 0xFF, 0x16, 0xFF, 0x1B, 0xFF, 0x20, 0xFF, 0x25, 0xFF, 0x2A, 0xFF, 0x2E, 0xFF, 0x33, 0xFF - .byte 0x37, 0xFF, 0x3C, 0xFF, 0x40, 0xFF, 0x44, 0xFF, 0x48, 0xFF, 0x4C, 0xFF, 0x50, 0xFF, 0x53, 0xFF - .byte 0x57, 0xFF, 0x5B, 0xFF, 0x5E, 0xFF, 0x62, 0xFF, 0x65, 0xFF, 0x68, 0xFF, 0x6B, 0xFF, 0x6F, 0xFF - .byte 0x72, 0xFF, 0x75, 0xFF, 0x78, 0xFF, 0x7B, 0xFF, 0x7E, 0xFF, 0x81, 0xFF, 0x83, 0xFF, 0x86, 0xFF - .byte 0x89, 0xFF, 0x8C, 0xFF, 0x8E, 0xFF, 0x91, 0xFF, 0x93, 0xFF, 0x96, 0xFF, 0x99, 0xFF, 0x9B, 0xFF - .byte 0x9D, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA5, 0xFF, 0xA7, 0xFF, 0xA9, 0xFF, 0xAB, 0xFF, 0xAE, 0xFF - .byte 0xB0, 0xFF, 0xB2, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF, 0xB8, 0xFF, 0xBA, 0xFF, 0xBC, 0xFF, 0xBE, 0xFF - .byte 0xC0, 0xFF, 0xC2, 0xFF, 0xC4, 0xFF, 0xC6, 0xFF, 0xC8, 0xFF, 0xCA, 0xFF, 0xCC, 0xFF, 0xCE, 0xFF - .byte 0xCF, 0xFF, 0xD1, 0xFF, 0xD3, 0xFF, 0xD5, 0xFF, 0xD6, 0xFF, 0xD8, 0xFF, 0xDA, 0xFF, 0xDC, 0xFF - .byte 0xDD, 0xFF, 0xDF, 0xFF, 0xE1, 0xFF, 0xE2, 0xFF, 0xE4, 0xFF, 0xE5, 0xFF, 0xE7, 0xFF, 0xE9, 0xFF - .byte 0xEA, 0xFF, 0xEC, 0xFF, 0xED, 0xFF, 0xEF, 0xFF, 0xF0, 0xFF, 0xF2, 0xFF, 0xF3, 0xFF, 0xF5, 0xFF - .byte 0xF6, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00 - -shift$4005: ; 0x03806770 - .byte 0x00, 0x01, 0x02, 0x04 - -channel_order$3829: ; 0x03806774 - .byte 0x04, 0x05, 0x06, 0x07, 0x02, 0x00, 0x03, 0x01, 0x08, 0x09, 0x0A, 0x0B - .byte 0x0E, 0x0C, 0x0F, 0x0D - -attack_table$3790: ; 0x03806784 - .byte 0x00, 0x01, 0x05, 0x0E, 0x1A, 0x26, 0x33, 0x3F, 0x49, 0x54, 0x5C, 0x64 - .byte 0x6D, 0x74, 0x7B, 0x7F, 0x84, 0x89, 0x8F - - .balign 4, 0 -arg$3806: ; 0x03806798 - .byte 0xC7 - - .balign 4, 0 -arg$3983: ; 0x0380679C - .byte 0x05 - - .balign 4, 0 -buf$3759: ; 0x038067A0 - .byte 0x06 - - .section .data,4,1,1 - -sMasterPan: ; 0x03806AEC - .word 0xFFFFFFFF - -u$3681: ; 0x03806AF0 - .word 0x12345678 - -_03806AF4: - .byte 50 - - .balign 4, 0 -_03806AF8: - .word 1 - -cardi_rom_header_addr: ; 0x03806AFC - .word 0x027FFE00 - -nextCount$3668: ; 0x03806B00 - .word 0xFFFFFFFF - -isFirstCheck$3676: ; 0x03806B04 - .word 1 - - .bss - - .type PADi_XYButtonAlarm,@object - .public PADi_XYButtonAlarm -PADi_XYButtonAlarm: ; 0x03806E80 - .space 0x2C - .size PADi_XYButtonAlarm,.-PADi_XYButtonAlarm - - .type sSurroundDecay,@object -sSurroundDecay: ; 0x03806EAC - .space 0x4 - .size sSurroundDecay,.-sSurroundDecay - - .type sOrgPan,@object -sOrgPan: ; 0x03806EB0 - .space 0x10 - .size sOrgPan,.-sOrgPan - - .type sOrgVolume,@object -sOrgVolume: ; 0x03806EC0 - .space 0x10 - .size sOrgVolume,.-sOrgVolume - - .type initialized$3619,@object -initialized$3619: ; 0x03806ED0 - .space 0x4 - .size initialized$3619,.-initialized$3619 - - .type sndMesgBuffer,@object -sndMesgBuffer: ; 0x03806ED4 - .space 0x20 - .size sndMesgBuffer,.-sndMesgBuffer - - .type sndMesgQueue,@object -sndMesgQueue: ; 0x03806EF4 - .space 0x20 - .size sndMesgQueue,.-sndMesgQueue - - .type sndAlarm,@object -sndAlarm: ; 0x03806F14 - .space 0x2C - .size sndAlarm,.-sndAlarm - - .type sndThread,@object -sndThread: ; 0x03806F40 - .space 0xA4 - .size sndThread,.-sndThread - - .type sndStack,@object -sndStack: ; 0x03806FE4 - .space 0x400 - .size sndStack,.-sndStack - - .type sWeakLockChannel,@object -sWeakLockChannel: ; 0x038073E4 - .space 0x4 - .size sWeakLockChannel,.-sWeakLockChannel - - .type sLockChannel,@object -sLockChannel: ; 0x038073E8 - .space 0x4 - .size sLockChannel,.-sLockChannel - - .type sMmlPrintEnable,@object -sMmlPrintEnable: ; 0x038073EC - .space 0x4 - .size sMmlPrintEnable,.-sMmlPrintEnable - - .type seqCache,@object -seqCache: ; 0x038073F0 - .space 0x18 - .size seqCache,.-seqCache - - .type SNDi_SharedWork,@object -SNDi_SharedWork: ; 0x03807408 - .space 0x4 - .size SNDi_SharedWork,.-SNDi_SharedWork - - .type SNDi_Work,@object -SNDi_Work: ; 0x0380740C - .space 0x1180 - .size SNDi_Work,.-SNDi_Work - - .type sCommandMesgQueue,@object -sCommandMesgQueue: ; 0x0380858C - .space 0x20 - .size sCommandMesgQueue,.-sCommandMesgQueue - - .type sCommandMesgBuffer,@object -sCommandMesgBuffer: ; 0x038085AC - .space 0x20 - .size sCommandMesgBuffer,.-sCommandMesgBuffer - - .type CARDi_EnableFlag,@object -CARDi_EnableFlag: ; 0x038085CC - .space 0x4 - .size CARDi_EnableFlag,.-CARDi_EnableFlag - - .balign 32, 0 - .type cardi_common,@object -cardi_common: ; 0x038085E0 - .space 0x200 - .size cardi_common,.-cardi_common - - .type cardi_thread_stack,@object -cardi_thread_stack: ; 0x038087E0 - .space 0x400 - .size cardi_thread_stack,.-cardi_thread_stack - - .type status_checked$3825,@object -status_checked$3825: ; 0x03808BE0 - .space 0x4 - .size status_checked$3825,.-status_checked$3825 - - .type cardi_param,@object -cardi_param: ; 0x03808BE4 - .space 0x10 - .size cardi_param,.-cardi_param - - .type cardi_rom_base,@object -cardi_rom_base: ; 0x03808BF4 - .space 0x4 - .size cardi_rom_base,.-cardi_rom_base - - .balign 32, 0 - .type rom_stat,@object -rom_stat: ; 0x03808C00 - .space 0x220 - .size rom_stat,.-rom_stat - - .type skipCheck$3668,@object -skipCheck$3668: ; 0x03808E20 - .space 0x4 - .size skipCheck$3668,.-skipCheck$3668 - - .type isCardPullOut,@object -isCardPullOut: ; 0x03808E24 - .space 0x4 - .size isCardPullOut,.-isCardPullOut - - .type isInitialized$3621,@object -isInitialized$3621: ; 0x03808E28 - .space 0x4 - .size isInitialized$3621,.-isInitialized$3621 - - .type detectPullOut,@object -detectPullOut: ; 0x03808E2C - .space 0x4 - .size detectPullOut,.-detectPullOut diff --git a/sub/asm/sub.wram_2.s b/sub/asm/sub.wram_2.s deleted file mode 100644 index 3ea93df5..00000000 --- a/sub/asm/sub.wram_2.s +++ /dev/null @@ -1,7471 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .public WMSP_CancelVAlarm - .public WMSP_CancelAllAlarms - .public WMSP_GetRequestThread - .public WL_Terminate - .public WMSP_GetIndicateThread - .public WMSP_Init - .public OS_IRQTable - .public wmspW - - .text - - arm_func_start SPI_Init -SPI_Init: ; 0x03800920 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - ldr r1, _03800A20 ; =spiInitialized - mov r4, r0 - ldrh r0, [r1] - cmp r0, #0 - bne _03800A14 - ldr r0, _03800A24 ; =spiWork - mov r2, #0 - str r2, [r0] - mov r3, #1 - mov r2, #5 - strh r3, [r1] - str r2, [r0, #4] - bl TP_Init - bl NVRAM_Init - bl MIC_Init - bl PM_Init - bl PXI_Init - ldr r1, _03800A28 ; =SpiPxiCallback - mov r0, #6 - bl PXI_SetFifoRecvCallback - ldr r1, _03800A28 ; =SpiPxiCallback - mov r0, #9 - bl PXI_SetFifoRecvCallback - ldr r1, _03800A28 ; =SpiPxiCallback - mov r0, #8 - bl PXI_SetFifoRecvCallback - ldr r1, _03800A28 ; =SpiPxiCallback - mov r0, #4 - bl PXI_SetFifoRecvCallback - ldr r0, _03800A2C ; =spiWork + 0x2AC - ldr r1, _03800A30 ; =spiWork + 0x2CC - mov r2, #0x10 - bl OS_InitMessageQueue - mov sb, #0 - mov r6, #0x18 - ldr r8, _03800A34 ; =spiWork + 0x30C - mov r7, sb - mov r5, r6 -_038009C0: - mla r0, sb, r5, r8 - mov r1, r7 - mov r2, r6 - bl MI_CpuFill8 - add sb, sb, #1 - cmp sb, #0x10 - blt _038009C0 - ldr r0, _03800A24 ; =spiWork - mov r2, #0 - str r2, [r0, #0x48c] - str r2, [r0, #0x494] - str r2, [r0, #0x490] - mov r0, #0x200 - str r0, [sp] - ldr r0, _03800A38 ; =spiWork + 0x8 - ldr r1, _03800A3C ; =SpiCommonThread - ldr r3, _03800A2C ; =spiWork + 0x2AC - str r4, [sp, #4] - bl OS_CreateThread - ldr r0, _03800A38 ; =spiWork + 0x8 - bl OS_WakeupThreadDirect -_03800A14: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_03800A20: .word spiInitialized -_03800A24: .word spiWork -_03800A28: .word SpiPxiCallback -_03800A2C: .word spiWork + 0x2AC -_03800A30: .word spiWork + 0x2CC -_03800A34: .word spiWork + 0x30C -_03800A38: .word spiWork + 0x8 -_03800A3C: .word SpiCommonThread - arm_func_end SPI_Init - - arm_func_start SPI_Lock -SPI_Lock: ; 0x03800A40 - stmdb sp!, {r4, r5, r6, lr} - ldr r5, _03800A94 ; =spiWork + 0x490 - ldr r4, _03800A98 ; =spiWork - mov r6, r0 -_03800A50: - bl OS_DisableInterrupts - ldr r1, [r4] - cmp r1, #0 - beq _03800A70 - bl OS_RestoreInterrupts - mov r0, r5 - bl OS_SleepThread - b _03800A50 -_03800A70: - ldr r1, _03800A98 ; =spiWork - mov r2, #1 - str r2, [r1] - mov r2, #4 - str r2, [r1, #4] - str r6, [r1, #0x498] - bl OS_RestoreInterrupts - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_03800A94: .word spiWork + 0x490 -_03800A98: .word spiWork - arm_func_end SPI_Lock - - arm_func_start SPI_Unlock -SPI_Unlock: ; 0x03800A9C - stmdb sp!, {r3, lr} - ldr r1, _03800AF4 ; =spiWork - ldr r2, [r1] - cmp r2, #0 - beq _03800AEC - ldr r2, [r1, #4] - cmp r2, #4 - ldreq r1, [r1, #0x498] - cmpeq r1, r0 - bne _03800AEC - bl OS_DisableInterrupts - ldr r1, _03800AF4 ; =spiWork - mov r2, #5 - str r2, [r1, #4] - mov r2, #0 - str r2, [r1] - str r2, [r1, #0x498] - bl OS_RestoreInterrupts - ldr r0, _03800AF8 ; =spiWork + 0x490 - bl OS_WakeupThread -_03800AEC: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03800AF4: .word spiWork -_03800AF8: .word spiWork + 0x490 - arm_func_end SPI_Unlock - - arm_func_start SPIi_ReturnResult -SPIi_ReturnResult: ; 0x03800AFC - stmdb sp!, {r4, r5, r6, lr} - and r2, r0, #0x70 - cmp r2, #0x30 - bgt _03800B34 - bge _03800B80 - cmp r2, #0x10 - bgt _03800B28 - bge _03800B68 - cmp r2, #0 - beq _03800B68 - b _03800B84 -_03800B28: - cmp r2, #0x20 - beq _03800B80 - b _03800B84 -_03800B34: - cmp r2, #0x50 - bgt _03800B4C - bge _03800B70 - cmp r2, #0x40 - beq _03800B70 - b _03800B84 -_03800B4C: - cmp r2, #0x60 - bgt _03800B5C - beq _03800B78 - b _03800B84 -_03800B5C: - cmp r2, #0x70 - beq _03800B78 - b _03800B84 -_03800B68: - mov r4, #6 - b _03800B84 -_03800B70: - mov r4, #9 - b _03800B84 -_03800B78: - mov r4, #8 - b _03800B84 -_03800B80: - mov r4, #4 -_03800B84: - and r0, r0, #0xff - orr r0, r0, #0x80 - mov r0, r0, lsl #8 - orr r2, r0, #0x3000000 - and r0, r1, #0xff - orr r6, r2, r0 - mov r5, #0 -_03800BA0: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03800BA0 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end SPIi_ReturnResult - - arm_func_start SPIi_CheckException -SPIi_CheckException: ; 0x03800BC0 - ldr r0, _03800BD8 ; =spiWork - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_03800BD8: .word spiWork - arm_func_end SPIi_CheckException - - arm_func_start SPIi_GetException -SPIi_GetException: ; 0x03800BDC - ldr r1, _03800BF0 ; =spiWork - mov r2, #1 - str r2, [r1] - str r0, [r1, #4] - bx lr - .align 2, 0 -_03800BF0: .word spiWork - arm_func_end SPIi_GetException - - arm_func_start SPIi_ReleaseException -SPIi_ReleaseException: ; 0x03800BF4 - stmdb sp!, {r3, lr} - ldr r1, _03800C28 ; =spiWork - ldr r2, [r1, #4] - cmp r2, r0 - bne _03800C20 - ldr r0, _03800C2C ; =spiWork + 0x490 - mov r2, #5 - str r2, [r1, #4] - mov r2, #0 - str r2, [r1] - bl OS_WakeupThread -_03800C20: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03800C28: .word spiWork -_03800C2C: .word spiWork + 0x490 - arm_func_end SPIi_ReleaseException - - arm_func_start SPIi_SetEntry -SPIi_SetEntry: ; 0x03800C30 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - ldrh r2, [sp, #0x18] - mov r5, r0 - cmp r2, #4 - mov r4, r1 - movhi r0, #0 - bhi _03800CEC - bl OS_DisableInterrupts - ldr ip, _03800CF8 ; =spiWork - add r2, sp, #0x18 - ldr r3, [ip, #0x48c] - mov r1, #0x18 - mul r6, r3, r1 - ldr lr, _03800CFC ; =spiWork + 0x30C - ldr r3, _03800D00 ; =spiWork + 0x310 - str r5, [lr, r6] - ldr r5, [ip, #0x48c] - bic r2, r2, #3 - mul lr, r5, r1 - add r5, r2, #4 - ldrh r1, [sp, #0x18] - str r4, [r3, lr] - mov r6, #0 - mov r2, #0x18 - b _03800CB4 -_03800C98: - ldr r4, [ip, #0x48c] - add r5, r5, #4 - mla r3, r4, r2, ip - add r3, r3, r6, lsl #2 - ldr r4, [r5, #-4] - add r6, r6, #1 - str r4, [r3, #0x314] -_03800CB4: - cmp r6, r1 - blt _03800C98 - ldr r1, _03800CF8 ; =spiWork - ldr r4, [r1, #0x48c] - add r2, r4, #1 - and r2, r2, #0xf - str r2, [r1, #0x48c] - bl OS_RestoreInterrupts - ldr r1, _03800CFC ; =spiWork + 0x30C - mov r0, #0x18 - mla r1, r4, r0, r1 - ldr r0, _03800D04 ; =spiWork + 0x2AC - mov r2, #0 - bl OS_SendMessage -_03800CEC: - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_03800CF8: .word spiWork -_03800CFC: .word spiWork + 0x30C -_03800D00: .word spiWork + 0x310 -_03800D04: .word spiWork + 0x2AC - arm_func_end SPIi_SetEntry - - arm_func_start SPIi_CheckEntry -SPIi_CheckEntry: ; 0x03800D08 - stmdb sp!, {r3, lr} - ldr r0, _03800D24 ; =spiWork + 0x2AC - add r1, sp, #0 - mov r2, #0 - bl OS_ReadMessage - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03800D24: .word spiWork + 0x2AC - arm_func_end SPIi_CheckEntry - - arm_func_start SpiCommonThread -SpiCommonThread: ; 0x03800D28 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r6, _03800D90 ; =spiWork + 0x2AC - add r5, sp, #0 - mov r4, #1 -_03800D3C: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl OS_ReceiveMessage - ldr r0, [sp] - ldr r1, [r0] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _03800D3C -_03800D60: ; jump table - b _03800D70 ; case 0 - b _03800D88 ; case 1 - b _03800D78 ; case 2 - b _03800D80 ; case 3 -_03800D70: - bl TP_ExecuteProcess - b _03800D3C -_03800D78: - bl MIC_ExecuteProcess - b _03800D3C -_03800D80: - bl PM_ExecuteProcess - b _03800D3C -_03800D88: - bl NVRAM_ExecuteProcess - b _03800D3C - .align 2, 0 -_03800D90: .word spiWork + 0x2AC - arm_func_end SpiCommonThread - - arm_func_start SpiPxiCallback -SpiPxiCallback: ; 0x03800D94 - stmdb sp!, {r3, lr} - cmp r2, #0 - bne _03800DF4 - sub r0, r0, #4 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _03800DF4 -_03800DB0: ; jump table - b _03800DEC ; case 0 - b _03800DF4 ; case 1 - b _03800DC8 ; case 2 - b _03800DF4 ; case 3 - b _03800DE0 ; case 4 - b _03800DD4 ; case 5 -_03800DC8: - mov r0, r1 - bl TP_AnalyzeCommand - b _03800DF4 -_03800DD4: - mov r0, r1 - bl MIC_AnalyzeCommand - b _03800DF4 -_03800DE0: - mov r0, r1 - bl PM_AnalyzeCommand - b _03800DF4 -_03800DEC: - mov r0, r1 - bl NVRAM_AnalyzeCommand -_03800DF4: - ldmia sp!, {r3, lr} - bx lr - arm_func_end SpiPxiCallback - - arm_func_start TP_Init -TP_Init: ; 0x03800DFC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, _03800EC4 ; =tpw - mov r3, #0 - str r3, [r0, #0x20] - mov r1, #0x14 - str r1, [r0, #0x24] - str r1, [r0, #0x28] - mov r2, r3 -_03800E1C: - mov r1, r3, lsl #1 - add r3, r3, #1 - strh r2, [r0, r1] - cmp r3, #0x10 - blt _03800E1C - bl OS_IsVAlarmAvailable - cmp r0, #0 - bne _03800E40 - bl OS_InitVAlarm -_03800E40: - ldr r7, _03800EC8 ; =tpw + 0x2C - ldr r5, _03800ECC ; =0x54505641 - mov r8, #0 - mov r4, #0x28 -_03800E50: - mul r6, r8, r4 - add r0, r7, r6 - bl OS_CreateVAlarm - mov r1, r5 - add r0, r7, r6 - bl OS_SetVAlarmTag - add r8, r8, #1 - cmp r8, #4 - blt _03800E50 - ldr r2, _03800ED0 ; =0x040001C0 -_03800E78: - ldrh r0, [r2] - tst r0, #0x80 - bne _03800E78 - ldr r1, _03800ED4 ; =0x00008A01 - ldr r0, _03800ED8 ; =0x040001C2 - strh r1, [r2] - mov r1, #0x84 - strh r1, [r0] - sub r1, r0, #2 -_03800E9C: - ldrh r0, [r1] - tst r0, #0x80 - bne _03800E9C - bl SPI_DummyWait_03800EE0 - ldr r1, _03800EDC ; =0x00008201 - ldr r0, _03800ED0 ; =0x040001C0 - strh r1, [r0] - bl SPI_DummyWait_03800EE0 - ldmia sp!, {r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_03800EC4: .word tpw -_03800EC8: .word tpw + 0x2C -_03800ECC: .word 0x54505641 -_03800ED0: .word 0x040001C0 -_03800ED4: .word 0x00008A01 -_03800ED8: .word 0x040001C2 -_03800EDC: .word 0x00008201 - arm_func_end TP_Init - - arm_func_start SPI_DummyWait_03800EE0 -SPI_DummyWait_03800EE0: ; 0x03800EE0 - ldr r0, _03800F00 ; =0x040001C2 - mov r1, #0 - strh r1, [r0] - sub r1, r0, #2 -_03800EF0: - ldrh r0, [r1] - tst r0, #0x80 - bne _03800EF0 - bx lr - .align 2, 0 -_03800F00: .word 0x040001C2 - arm_func_end SPI_DummyWait_03800EE0 - - arm_func_start TP_AnalyzeCommand -TP_AnalyzeCommand: ; 0x03800F04 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - tst r0, #0x2000000 - beq _03800F34 - ldr r1, _038010DC ; =tpw - mov r4, #0 - mov r3, r4 -_03800F20: - mov r2, r4, lsl #1 - add r4, r4, #1 - strh r3, [r1, r2] - cmp r4, #0x10 - blt _03800F20 -_03800F34: - ldr r2, _038010DC ; =tpw - and r1, r0, #0xf0000 - mov r1, r1, lsr #0x10 - mov r1, r1, lsl #1 - strh r0, [r2, r1] - tst r0, #0x1000000 - beq _038010D0 - ldrh r1, [r2] - and r0, r1, #0xff00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #0x10 - cmp r4, #3 - addls pc, pc, r4, lsl #2 - b _038010C4 -_03800F6C: ; jump table - b _03800FB0 ; case 0 - b _03800FD8 ; case 1 - b _03801074 ; case 2 - b _03800F7C ; case 3 -_03800F7C: - and r0, r1, #0xff - mov r0, r0, lsl #0x10 - movs r3, r0, lsr #0x10 - mov r0, #3 - bne _03800F9C - mov r1, #2 - bl SPIi_ReturnResult - b _038010D0 -_03800F9C: - str r3, [r2, #0x24] - mov r1, #0 - str r3, [r2, #0x28] - bl SPIi_ReturnResult - b _038010D0 -_03800FB0: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SPIi_SetEntry - cmp r0, #0 - bne _038010D0 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _038010D0 -_03800FD8: - ldr r0, [r2, #0x20] - cmp r0, #0 - beq _03800FF4 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _038010D0 -_03800FF4: - and r0, r1, #0xff - mov r0, r0, lsl #0x10 - movs r3, r0, lsr #0x10 - beq _0380100C - cmp r3, #4 - bls _0380101C -_0380100C: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _038010D0 -_0380101C: - ldrh ip, [r2, #2] - ldr r0, _038010E0 ; =0x00000107 - cmp ip, r0 - blo _0380103C - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _038010D0 -_0380103C: - mov r1, r4 - mov r0, #0 - mov r2, #2 - str ip, [sp] - bl SPIi_SetEntry - cmp r0, #0 - ldrne r0, _038010DC ; =tpw - movne r1, #1 - strne r1, [r0, #0x20] - bne _038010D0 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _038010D0 -_03801074: - ldr r0, [r2, #0x20] - cmp r0, #2 - beq _03801090 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _038010D0 -_03801090: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SPIi_SetEntry - cmp r0, #0 - ldrne r0, _038010DC ; =tpw - movne r1, #3 - strne r1, [r0, #0x20] - bne _038010D0 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _038010D0 -_038010C4: - mov r0, r4 - mov r1, #1 - bl SPIi_ReturnResult -_038010D0: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_038010DC: .word tpw -_038010E0: .word 0x00000107 - arm_func_end TP_AnalyzeCommand - - arm_func_start TP_ExecuteProcess -TP_ExecuteProcess: ; 0x038010E4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - ldr r1, [sl, #4] - cmp r1, #2 - bhi _03801118 - cmp r1, #0 - beq _03801130 - cmp r1, #1 - beq _038012A4 - cmp r1, #2 - beq _03801368 - b _038013B4 -_03801118: - cmp r1, #0x10 - bne _038013B4 - ldr r0, _038013C0 ; =tpw - ldr r0, [r0, #0x20] - cmp r0, #2 - bne _038013B4 -_03801130: - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #0 - bl SPIi_CheckException - cmp r0, #0 - bne _03801168 - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, [sl, #4] - mov r1, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - b _038013B4 -_03801168: - mov r0, #0 - bl SPIi_GetException - mov r0, r4 - bl OS_RestoreInterrupts - ldr r1, _038013C0 ; =tpw - add r0, sp, #8 - ldr r1, [r1, #0x24] - add r2, sp, #4 - bl TP_ExecSampling - ldr r0, [sp, #8] - ldrh r2, [sp, #4] - mov r1, r0, lsl #7 - movs r1, r1, lsr #0x1f - ldreq r0, _038013C4 ; =valid_cnt$3731 - moveq r1, #0 - streqb r1, [r0, #1] - streqb r1, [r0] - beq _03801250 - mov r0, r0, lsl #5 - movs r0, r0, lsr #0x1e - beq _038011FC - ldr r1, _038013C4 ; =valid_cnt$3731 - mov r3, #0 - strb r3, [r1] - ldrb r0, [r1, #1] - add r2, r0, #1 - and r0, r2, #0xff - strb r2, [r1, #1] - cmp r0, #4 - blo _03801250 - ldr r0, _038013C0 ; =tpw - strb r3, [r1, #1] - ldr r1, [r0, #0x24] - cmp r1, #0x23 - addlt r1, r1, #1 - strlt r1, [r0, #0x24] - b _03801250 -_038011FC: - ldr r0, _038013C0 ; =tpw - ldr r1, _038013C4 ; =valid_cnt$3731 - ldr r4, [r0, #0x24] - mov r5, #0 - strb r5, [r1, #1] - cmp r2, r4, asr #1 - strgeb r5, [r1] - bge _03801250 - ldrb r2, [r1] - add r3, r2, #1 - and r2, r3, #0xff - strb r3, [r1] - cmp r2, #4 - blo _03801250 - strb r5, [r1] - ldr r2, [r0, #0x28] - cmp r4, r2 - subgt r3, r4, #1 - movgt r2, #3 - strgt r3, [r0, #0x24] - strgtb r2, [r1, #1] -_03801250: - ldrh r0, [sp, #8] - ldr r1, _038013C8 ; =0x027FFFAA - strh r0, [r1] - ldrh r0, [sp, #0xa] - strh r0, [r1, #2] - ldr r0, [sl, #4] - cmp r0, #0 - bne _03801284 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - bl SPIi_ReturnResult - b _03801298 -_03801284: - ldr r1, [sl, #8] - mov r0, r0, lsl #0x10 - and r1, r1, #0xff - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult -_03801298: - mov r0, #0 - bl SPIi_ReleaseException - b _038013B4 -_038012A4: - ldr r6, _038013C0 ; =tpw - ldr r0, [r6, #0x20] - cmp r0, #1 - bne _03801354 - ldr r8, _038013CC ; =0x00000107 - ldr r5, _038013D0 ; =tpw + 0x2C - mov sb, #0 - mov r7, #0xd7 - mov fp, #0xa - mov r4, #0x28 - b _03801324 -_038012D0: - mul r0, sb, r8 - bl _u32_div_f - ldr r2, [sl, #0xc] - mov r1, r8 - add r0, r2, r0 - bl _u32_div_f - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #0xc8 - blo _03801300 - cmp r0, #0xd7 - movlo r0, r7 -_03801300: - add r1, r6, sb, lsl #1 - strh r0, [r1, #0xcc] - str sb, [sp] - mla r0, sb, r4, r5 - ldrsh r1, [r1, #0xcc] - ldr r3, _038013D4 ; =TpVAlarmHandler - mov r2, fp - bl OS_SetPeriodicVAlarm - add sb, sb, #1 -_03801324: - ldr r1, [sl, #8] - cmp sb, r1 - blo _038012D0 - ldr r0, [sl, #4] - mov r1, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - ldr r0, _038013C0 ; =tpw - mov r1, #2 - str r1, [r0, #0x20] - b _038013B4 -_03801354: - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #3 - bl SPIi_ReturnResult - b _038013B4 -_03801368: - ldr r0, _038013C0 ; =tpw - ldr r0, [r0, #0x20] - cmp r0, #3 - bne _038013A4 - ldr r0, _038013D8 ; =0x54505641 - bl OS_CancelVAlarms - ldr r0, [sl, #4] - mov r1, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - ldr r0, _038013C0 ; =tpw - mov r1, #0 - str r1, [r0, #0x20] - b _038013B4 -_038013A4: - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #3 - bl SPIi_ReturnResult -_038013B4: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_038013C0: .word tpw -_038013C4: .word valid_cnt$3731 -_038013C8: .word 0x027FFFAA -_038013CC: .word 0x00000107 -_038013D0: .word tpw + 0x2C -_038013D4: .word TpVAlarmHandler -_038013D8: .word 0x54505641 - arm_func_end TP_ExecuteProcess - - arm_func_start TpVAlarmHandler -TpVAlarmHandler: ; 0x038013DC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r3, r4 - mov r0, #0 - mov r1, #0x10 - mov r2, #1 - bl SPIi_SetEntry - cmp r0, #0 - bne _03801434 - ldr r0, [sp] - ldr r3, _03801440 ; =0x027FFFAA - bic r0, r0, #0x6000000 - orr r0, r0, #0x6000000 - str r0, [sp] - ldrh r0, [sp] - ldrh r2, [sp, #2] - strh r0, [r3] - and r1, r4, #0xff - mov r0, #0x10 - strh r2, [r3, #2] - bl SPIi_ReturnResult -_03801434: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_03801440: .word 0x027FFFAA - arm_func_end TpVAlarmHandler - - arm_func_start TPi_DetectTouch -TPi_DetectTouch: ; 0x03801444 - stmdb sp!, {r3, lr} - mov r0, #0x8000 - bl EXIi_SelectRcnt - ldr r2, _03801520 ; =0x040001C0 -_03801454: - ldrh r0, [r2] - tst r0, #0x80 - bne _03801454 - ldr r1, _03801524 ; =0x00008A01 - ldr r0, _03801528 ; =0x040001C2 - strh r1, [r2] - mov r1, #0x84 - strh r1, [r0] - sub r1, r0, #2 -_03801478: - ldrh r0, [r1] - tst r0, #0x80 - bne _03801478 - bl SPI_DummyWait_03801538 - ldr r1, _0380152C ; =0x00008201 - ldr r0, _03801520 ; =0x040001C0 - strh r1, [r0] - bl SPI_DummyWait_03801538 - ldr r0, _03801530 ; =last_touch_flg - ldrh r0, [r0] - cmp r0, #0 - bne _038014C0 - ldr r0, _03801534 ; =0x04000136 - ldrh r0, [r0] - tst r0, #0x40 - moveq r0, #1 - movne r0, #0 - b _03801518 -_038014C0: - ldr r2, _03801534 ; =0x04000136 - ldrh r0, [r2] - tst r0, #0x40 - moveq r0, #1 - beq _03801518 - ldr r1, _03801524 ; =0x00008A01 - mov r0, #0x84 - strh r1, [r2, #0x8a] - strh r0, [r2, #0x8c] -_038014E4: - ldrh r0, [r2, #0x8a] - tst r0, #0x80 - bne _038014E4 - bl SPI_DummyWait_03801538 - ldr r1, _0380152C ; =0x00008201 - ldr r0, _03801520 ; =0x040001C0 - strh r1, [r0] - bl SPI_DummyWait_03801538 - ldr r0, _03801534 ; =0x04000136 - ldrh r0, [r0] - tst r0, #0x40 - movne r0, #0 - moveq r0, #2 -_03801518: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03801520: .word 0x040001C0 -_03801524: .word 0x00008A01 -_03801528: .word 0x040001C2 -_0380152C: .word 0x00008201 -_03801530: .word last_touch_flg -_03801534: .word 0x04000136 - arm_func_end TPi_DetectTouch - - arm_func_start SPI_DummyWait_03801538 -SPI_DummyWait_03801538: ; 0x03801538 - ldr r0, _03801558 ; =0x040001C2 - mov r1, #0 - strh r1, [r0] - sub r1, r0, #2 -_03801548: - ldrh r0, [r1] - tst r0, #0x80 - bne _03801548 - bx lr - .align 2, 0 -_03801558: .word 0x040001C2 - arm_func_end SPI_DummyWait_03801538 - - arm_func_start TPi_DetectPos -TPi_DetectPos: ; 0x0380155C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - cmp r2, #0 - ldr r2, _03801738 ; =0x040001C0 - mov r5, r3 - moveq r3, #0xd1 - moveq r4, #1 - mov r7, r0 - mov r6, r1 - movne r3, #0x91 - movne r4, #2 -_03801588: - ldrh r0, [r2] - tst r0, #0x80 - bne _03801588 - ldr r1, _0380173C ; =0x00008A01 - ldr r0, _03801740 ; =0x040001C2 - strh r1, [r2] - and r2, r3, #0xff - strh r2, [r0] - sub r1, r0, #2 -_038015AC: - ldrh r0, [r1] - tst r0, #0x80 - bne _038015AC - mov r0, r2, lsl #0x10 - ldr r2, _03801738 ; =0x040001C0 - mov ip, #0 - ldr r8, _03801744 ; =0x00007FF8 - add r1, sp, #0 - mov r0, r0, lsr #0x10 - mov r3, ip -_038015D4: - strh r3, [r2, #2] -_038015D8: - ldrh sb, [r2] - tst sb, #0x80 - bne _038015D8 - ldrh sb, [r2, #2] - and sb, sb, #0xff - mov lr, sb, lsl #0x10 - mov sb, lr, lsr #8 - str sb, [r1, ip, lsl #2] - strh r0, [r2, #2] -_038015FC: - ldrh sb, [r2] - tst sb, #0x80 - bne _038015FC - ldrh lr, [r2, #2] - ldr sb, [r1, ip, lsl #2] - and lr, lr, #0xff - mov lr, lr, lsl #0x10 - orr sb, sb, lr, lsr #16 - and lr, sb, r8 - mov lr, lr, asr #3 - str lr, [r1, ip, lsl #2] - add ip, ip, #1 - cmp ip, #5 - blt _038015D4 - ldr r0, _03801748 ; =0x00008201 - strh r0, [r2] - bl SPI_DummyWait_03801538 - mov r8, #0 - mov sb, r8 - add r2, sp, #0 -_0380164C: - ldr r1, [r2, sb, lsl #2] - add r3, sb, #1 - b _03801670 -_03801658: - ldr r0, [r2, r3, lsl #2] - add r3, r3, #1 - subs r0, r1, r0 - rsbmi r0, r0, #0 - cmp r0, r8 - movgt r8, r0 -_03801670: - cmp r3, #5 - blt _03801658 - add sb, sb, #1 - cmp sb, #4 - blt _0380164C - strh r8, [r5] - mov r8, #0 - add r0, sp, #0 - b _03801708 -_03801694: - ldr r3, [r0, r8, lsl #2] - add sb, r8, #1 - b _038016FC -_038016A0: - ldr r2, [r0, sb, lsl #2] - subs r1, r3, r2 - rsbmi r1, r1, #0 - cmp r1, r6 - bgt _038016F8 - add r1, sb, #1 - b _038016F0 -_038016BC: - ldr r5, [r0, r1, lsl #2] - subs ip, r3, r5 - rsbmi ip, ip, #0 - cmp ip, r6 - bgt _038016EC - add r0, r2, r3, lsl #1 - add r0, r5, r0 - mov r0, r0, asr #2 - bic r0, r0, #7 - strh r0, [r7] - mov r0, #0 - b _0380172C -_038016EC: - add r1, r1, #1 -_038016F0: - cmp r1, #5 - blt _038016BC -_038016F8: - add sb, sb, #1 -_038016FC: - cmp sb, #4 - blt _038016A0 - add r8, r8, #1 -_03801708: - cmp r8, #3 - blt _03801694 - ldr r2, [sp] - ldr r1, [sp, #0x10] - mov r0, r4 - add r1, r2, r1 - mov r1, r1, asr #1 - bic r1, r1, #7 - strh r1, [r7] -_0380172C: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_03801738: .word 0x040001C0 -_0380173C: .word 0x00008A01 -_03801740: .word 0x040001C2 -_03801744: .word 0x00007FF8 -_03801748: .word 0x00008201 - arm_func_end TPi_DetectPos - - arm_func_start TP_ExecSampling -TP_ExecSampling: ; 0x0380174C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - movs r6, r1 - mov r5, r2 - mov r1, #0 - mov r7, r0 - strh r1, [r5] - rsbmi r6, r6, #0 - bl TPi_DetectTouch - movs r4, r0 - bne _038017B4 - ldr r1, [r7] - mov r0, #0x1000 - rsb r0, r0, #0 - and r1, r1, r0 - ldr r0, _03801930 ; =0xFF000FFF - and r0, r1, r0 - bic r1, r0, #0x1000000 - bic r0, r1, #0x6000000 - str r1, [r7] - orr r1, r0, #0x6000000 - str r1, [r7] - ldr r0, _03801934 ; =last_touch_flg - mov r1, #0 - strh r1, [r0] - b _03801924 -_038017B4: - add r0, sp, #4 - add r3, sp, #2 - mov r1, r6 - mov r2, #0 - bl TPi_DetectPos - ldr r1, [r7] - mov r0, r0, lsl #0x1e - bic r1, r1, #0x6000000 - orr ip, r1, r0, lsr #5 - str ip, [r7] - mov r1, #0x1000 - rsb r1, r1, #0 - ldrh r2, [sp, #4] - and ip, ip, r1 - and r1, r2, r1, lsr #20 - orr ip, ip, r1 - add r0, sp, #4 - add r3, sp, #0 - mov r1, r6 - mov r2, #1 - str ip, [r7] - bl TPi_DetectPos - cmp r0, #2 - bne _03801834 - ldr r1, [r7] - mov r0, r1, lsl #5 - mov r0, r0, lsr #0x1e - orr r0, r0, #2 - bic r1, r1, #0x6000000 - mov r0, r0, lsl #0x1e - orr r0, r1, r0, lsr #5 - str r0, [r7] -_03801834: - ldrh r1, [sp, #4] - ldr r2, [r7] - ldr r0, _03801930 ; =0xFF000FFF - mov r1, r1, lsl #0x14 - and r0, r2, r0 - orr r2, r0, r1, lsr #8 - ldr r1, _03801938 ; =0x00008A01 - ldr r0, _0380193C ; =0x040001C0 - str r2, [r7] - strh r1, [r0] - mov r6, #0 -_03801860: - bl SPI_DummyWait_03801538 - add r6, r6, #1 - cmp r6, #0xc - blt _03801860 - ldr r1, _03801940 ; =0x00008201 - ldr r0, _0380193C ; =0x040001C0 - strh r1, [r0] - bl SPI_DummyWait_03801538 - cmp r4, #2 - ldreq r0, [r7] - biceq r0, r0, #0x6000000 - orreq r0, r0, #0x6000000 - streq r0, [r7] - bl TPi_DetectTouch - cmp r0, #0 - beq _03801904 - cmp r0, #1 - beq _038018D4 - cmp r0, #2 - bne _03801920 - ldr r1, [r7] - ldr r0, _03801934 ; =last_touch_flg - orr r2, r1, #0x1000000 - bic r1, r2, #0x6000000 - orr r1, r1, #0x6000000 - str r1, [r7] - mov r1, #0 - strh r1, [r0] - b _03801924 -_038018D4: - ldr r1, [r7] - ldr r0, _03801934 ; =last_touch_flg - orr r1, r1, #0x1000000 - str r1, [r7] - mov r2, #1 - ldrh r1, [sp] - ldrh r3, [sp, #2] - strh r2, [r0] - cmp r3, r1 - movlo r3, r1 - strh r3, [r5] - b _03801924 -_03801904: - ldr r1, [r7] - ldr r0, _03801934 ; =last_touch_flg - bic r1, r1, #0x1000000 - str r1, [r7] - mov r1, #0 - strh r1, [r0] - b _03801924 -_03801920: - bl OS_Terminate -_03801924: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_03801930: .word 0xFF000FFF -_03801934: .word last_touch_flg -_03801938: .word 0x00008A01 -_0380193C: .word 0x040001C0 -_03801940: .word 0x00008201 - arm_func_end TP_ExecSampling - - arm_func_start PM_Init -PM_Init: ; 0x03801944 - ldr r0, _03801978 ; =PMi_KeyPattern - mov r1, #1 - str r1, [r0, #4] - mov r3, #0 - str r3, [r0, #0x28] - ldr r0, _0380197C ; =PMi_Work - mov r2, r3 -_03801960: - mov r1, r3, lsl #1 - add r3, r3, #1 - strh r2, [r0, r1] - cmp r3, #0x10 - blt _03801960 - bx lr - .align 2, 0 -_03801978: .word PMi_KeyPattern -_0380197C: .word PMi_Work - arm_func_end PM_Init - - arm_func_start PM_AnalyzeCommand -PM_AnalyzeCommand: ; 0x03801980 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - tst r0, #0x2000000 - beq _038019B0 - ldr r1, _03801B34 ; =PMi_Work - mov r4, #0 - mov r3, r4 -_0380199C: - mov r2, r4, lsl #1 - add r4, r4, #1 - strh r3, [r1, r2] - cmp r4, #0x10 - blt _0380199C -_038019B0: - ldr r1, _03801B34 ; =PMi_Work - and r2, r0, #0xf0000 - mov r2, r2, lsr #0x10 - mov r2, r2, lsl #1 - strh r0, [r1, r2] - tst r0, #0x1000000 - beq _03801B28 - ldr r1, _03801B38 ; =PMi_KeyPattern - ldrh r2, [r1, #8] - and r0, r2, #0xff00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #0x10 - sub r0, r4, #0x60 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _03801B1C -_038019F0: ; jump table - b _03801A10 ; case 0 - b _03801A20 ; case 1 - b _03801B1C ; case 2 - b _03801AB8 ; case 3 - b _03801A54 ; case 4 - b _03801A88 ; case 5 - b _03801AEC ; case 6 - b _03801B04 ; case 7 -_03801A10: - mov r0, #0x60 - mov r1, #0 - bl SPIi_ReturnResult - b _03801B28 -_03801A20: - ldrh ip, [r1, #0xa] - mov r1, r4 - and r3, r2, #0xff - mov r0, #3 - mov r2, #2 - str ip, [sp] - bl SPIi_SetEntry - cmp r0, #0 - bne _03801B28 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801B28 -_03801A54: - ldrh ip, [r1, #0xa] - mov r1, r4 - and r3, r2, #0xff - mov r0, #3 - mov r2, #2 - str ip, [sp] - bl SPIi_SetEntry - cmp r0, #0 - bne _03801B28 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801B28 -_03801A88: - mov r0, r2, lsl #0x10 - mov r1, r4 - mov r3, r0, lsr #0x10 - mov r0, #3 - mov r2, #1 - bl SPIi_SetEntry - cmp r0, #0 - bne _03801B28 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801B28 -_03801AB8: - ldrh r0, [r1, #0xa] - mov r2, r2, lsl #0x18 - mov r1, r4 - orr r3, r0, r2, lsr #8 - mov r0, #3 - mov r2, #1 - bl SPIi_SetEntry - cmp r0, #0 - bne _03801B28 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _03801B28 -_03801AEC: - and r0, r2, #0xff - bl PM_SetLEDPattern - mov r0, #0x66 - mov r1, #0 - bl SPIi_ReturnResult - b _03801B28 -_03801B04: - bl PM_GetLEDPattern - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, #0x67 - bl SPIi_ReturnResult - b _03801B28 -_03801B1C: - mov r0, r4 - mov r1, #1 - bl SPIi_ReturnResult -_03801B28: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - .align 2, 0 -_03801B34: .word PMi_Work -_03801B38: .word PMi_KeyPattern - arm_func_end PM_AnalyzeCommand - - arm_func_start PM_ExecuteProcess -PM_ExecuteProcess: ; 0x03801B3C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl OS_DisableInterrupts - mov r5, r0 - mov r0, #3 - bl SPIi_CheckException - cmp r0, #0 - bne _03801B7C - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #4] - mov r1, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - b _03801CA0 -_03801B7C: - mov r0, #3 - bl SPIi_GetException - mov r0, r5 - bl OS_RestoreInterrupts - ldr r1, [r4, #4] - sub r0, r1, #0x61 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _03801C88 -_03801BA0: ; jump table - b _03801BB8 ; case 0 - b _03801C88 ; case 1 - b _03801C54 ; case 2 - b _03801BDC ; case 3 - b _03801C18 ; case 4 - b _03801C7C ; case 5 -_03801BB8: - ldr r0, _03801CA8 ; =PMi_KeyPattern - mov r1, #1 - str r1, [r0, #0x28] - ldr r1, [r4, #8] - strh r1, [r0, #2] - ldr r1, [r4, #0xc] - strh r1, [r0] - bl PMi_DoSleep - b _03801C98 -_03801BDC: - ldr r2, _03801CA8 ; =PMi_KeyPattern - mov r0, #4 - str r0, [r2, #0x28] - ldr r0, [r4, #8] - str r0, [r2, #0x30] - ldr r3, [r4, #0xc] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - and r1, r3, #0xff - str r3, [r2, #0x2c] - bl PMi_SetRegister - mov r0, #0x64 - mov r1, #0 - bl SPIi_ReturnResult - b _03801C98 -_03801C18: - ldr r1, _03801CA8 ; =PMi_KeyPattern - mov r0, #3 - str r0, [r1, #0x28] - ldr r2, [r4, #8] - mov r0, r2, lsl #0x10 - mov r4, r0, lsr #0x10 - mov r0, r4 - str r2, [r1, #0x30] - bl PMi_GetRegister - add r1, r4, #0x70 - mov r2, r1, lsl #0x10 - mov r1, r0 - mov r0, r2, lsr #0x10 - bl SPIi_ReturnResult - b _03801C98 -_03801C54: - ldr r1, _03801CA8 ; =PMi_KeyPattern - mov r0, #2 - str r0, [r1, #0x28] - ldr r0, [r4, #8] - str r0, [r1, #0x2c] - bl PMi_SwitchUtilityProc - mov r0, #0x63 - mov r1, #0 - bl SPIi_ReturnResult - b _03801C98 -_03801C7C: - ldr r0, [r4, #8] - bl PMi_SetLED - b _03801C98 -_03801C88: - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #1 - bl SPIi_ReturnResult -_03801C98: - mov r0, #3 - bl SPIi_ReleaseException -_03801CA0: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_03801CA8: .word PMi_KeyPattern - arm_func_end PM_ExecuteProcess - - arm_func_start PMi_SendPxiCommand -PMi_SendPxiCommand: ; 0x03801CAC - stmdb sp!, {r4, r5, r6, lr} - and r1, r1, #0x3f0000 - and r3, r0, #0x3c00000 - mov r1, r1, lsl #0x10 - mov r0, r2, lsl #0x10 - orr r1, r1, r3, lsl #22 - orr r6, r1, r0, lsr #16 - mov r5, #8 - mov r4, #0 -_03801CD0: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _03801CD0 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end PMi_SendPxiCommand - - arm_func_start PMi_SetRegister -PMi_SetRegister: ; 0x03801CF0 - stmdb sp!, {r4, lr} - ldr r2, _03801D3C ; =0x040001C0 - mov r4, r1 -_03801CFC: - ldrh r1, [r2] - tst r1, #0x80 - bne _03801CFC - ldr r1, _03801D40 ; =0x00008202 - and r0, r0, #0xff - strh r1, [r2] - add r1, r1, #0x600 - strh r1, [r2] - bl SPI_SendWait_03801D48 - ldr r2, _03801D44 ; =0x00008002 - ldr r1, _03801D3C ; =0x040001C0 - and r0, r4, #0xff - strh r2, [r1] - strh r0, [r1, #2] - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_03801D3C: .word 0x040001C0 -_03801D40: .word 0x00008202 -_03801D44: .word 0x00008002 - arm_func_end PMi_SetRegister - - arm_func_start SPI_SendWait_03801D48 -SPI_SendWait_03801D48: ; 0x03801D48 - ldr r1, _03801D68 ; =0x040001C2 - and r0, r0, #0xff - strh r0, [r1] - sub r1, r1, #2 -_03801D58: - ldrh r0, [r1] - tst r0, #0x80 - bne _03801D58 - bx lr - .align 2, 0 -_03801D68: .word 0x040001C2 - arm_func_end SPI_SendWait_03801D48 - - arm_func_start PMi_GetRegister -PMi_GetRegister: ; 0x03801D6C - stmdb sp!, {r3, lr} - ldr r2, _03801DD0 ; =0x040001C0 -_03801D74: - ldrh r1, [r2] - tst r1, #0x80 - bne _03801D74 - ldr r1, _03801DD4 ; =0x00008202 - orr r0, r0, #0x80 - strh r1, [r2] - add r1, r1, #0x600 - and r0, r0, #0xff - strh r1, [r2] - bl SPI_SendWait_03801D48 - ldr r2, _03801DD8 ; =0x00008002 - ldr r1, _03801DD0 ; =0x040001C0 - mov r0, #0 - strh r2, [r1] - strh r0, [r1, #2] -_03801DB0: - ldrh r0, [r1] - tst r0, #0x80 - bne _03801DB0 - ldr r0, _03801DDC ; =0x040001C2 - ldrh r0, [r0] - and r0, r0, #0xff - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03801DD0: .word 0x040001C0 -_03801DD4: .word 0x00008202 -_03801DD8: .word 0x00008002 -_03801DDC: .word 0x040001C2 - arm_func_end PMi_GetRegister - - arm_func_start PMi_SetControl -PMi_SetControl: ; 0x03801DE0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - bl PMi_GetRegister - orr r1, r0, r4 - mov r0, #0 - bl PMi_SetRegister - ldmia sp!, {r4, lr} - bx lr - arm_func_end PMi_SetControl - - arm_func_start PMi_ResetControl -PMi_ResetControl: ; 0x03801E04 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - bl PMi_GetRegister - mvn r1, r4 - and r0, r0, r1 - and r1, r0, #0xff - mov r0, #0 - bl PMi_SetRegister - ldmia sp!, {r4, lr} - bx lr - arm_func_end PMi_ResetControl - - arm_func_start PMi_SwitchUtilityProc -PMi_SwitchUtilityProc: ; 0x03801E30 - stmdb sp!, {r3, lr} - cmp r0, #0xf - addls pc, pc, r0, lsl #2 - b _03801F4C -_03801E40: ; jump table - b _03801F4C ; case 0 - b _03801E80 ; case 1 - b _03801E94 ; case 2 - b _03801EA8 ; case 3 - b _03801EBC ; case 4 - b _03801EC8 ; case 5 - b _03801ED4 ; case 6 - b _03801EE0 ; case 7 - b _03801EEC ; case 8 - b _03801EF8 ; case 9 - b _03801F04 ; case 10 - b _03801F10 ; case 11 - b _03801F1C ; case 12 - b _03801F28 ; case 13 - b _03801F40 ; case 14 - b _03801F34 ; case 15 -_03801E80: - mov r0, #1 - bl PM_SetLEDPattern - mov r0, #1 - bl PMi_SetLED - b _03801F4C -_03801E94: - mov r0, #3 - bl PM_SetLEDPattern - mov r0, #3 - bl PMi_SetLED - b _03801F4C -_03801EA8: - mov r0, #2 - bl PM_SetLEDPattern - mov r0, #2 - bl PMi_SetLED - b _03801F4C -_03801EBC: - mov r0, #4 - bl PMi_SetControl - b _03801F4C -_03801EC8: - mov r0, #4 - bl PMi_ResetControl - b _03801F4C -_03801ED4: - mov r0, #8 - bl PMi_SetControl - b _03801F4C -_03801EE0: - mov r0, #8 - bl PMi_ResetControl - b _03801F4C -_03801EEC: - mov r0, #0xc - bl PMi_SetControl - b _03801F4C -_03801EF8: - mov r0, #0xc - bl PMi_ResetControl - b _03801F4C -_03801F04: - mov r0, #1 - bl PMi_SetControl - b _03801F4C -_03801F10: - mov r0, #1 - bl PMi_ResetControl - b _03801F4C -_03801F1C: - mov r0, #2 - bl PMi_ResetControl - b _03801F4C -_03801F28: - mov r0, #2 - bl PMi_SetControl - b _03801F4C -_03801F34: - mov r0, #0x40 - bl PMi_ResetControl - b _03801F4C -_03801F40: - bl SND_BeginSleep - mov r0, #0x40 - bl PMi_SetControl -_03801F4C: - ldmia sp!, {r3, lr} - bx lr - arm_func_end PMi_SwitchUtilityProc - - arm_func_start PMi_SetLED -PMi_SetLED: ; 0x03801F54 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #1 - beq _03801F78 - cmp r4, #2 - beq _03801F90 - cmp r4, #3 - beq _03801F84 - b _03801FA4 -_03801F78: - mov r0, #0x10 - bl PMi_ResetControl - b _03801FA8 -_03801F84: - mov r0, #0x30 - bl PMi_SetControl - b _03801FA8 -_03801F90: - mov r0, #0x20 - bl PMi_ResetControl - mov r0, #0x10 - bl PMi_SetControl - b _03801FA8 -_03801FA4: - bl OS_Terminate -_03801FA8: - ldr r0, _03801FB8 ; =PMi_LEDStatus - str r4, [r0] - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_03801FB8: .word PMi_LEDStatus - arm_func_end PMi_SetLED - - arm_func_start PMi_DoSleep -PMi_DoSleep: ; 0x03801FBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _03802178 ; =0x04000208 - mov r8, #0 - ldrh sb, [r0] - strh r8, [r0] - bl OS_DisableInterrupts - mov r4, r0 - mvn r0, #0xfe000000 - bl OS_DisableIrqMask - mov r5, r0 - mov r0, r8 - bl PMi_GetRegister - mov r6, r0 - mov r0, #2 - bl PM_SetLEDPattern - mov r0, #2 - bl PMi_SetLED - mov r0, #2 - bl PMi_SetLED - bl SND_BeginSleep - mov r0, #1 - bl PMi_ResetControl - ldr r0, _0380217C ; =PMi_TriggerBL - ldrh r0, [r0] - tst r0, #1 - beq _03802040 - ldr r0, _03802180 ; =PMi_KeyPattern - ldr r1, _03802184 ; =0x04000132 - ldrh r2, [r0] - mov r0, #0x1000 - orr r2, r2, #0x4000 - strh r2, [r1] - bl OS_EnableIrqMask -_03802040: - ldr r0, _0380217C ; =PMi_TriggerBL - ldrh r0, [r0] - tst r0, #4 - beq _03802058 - mov r0, #0x400000 - bl OS_EnableIrqMask -_03802058: - ldr r0, _0380217C ; =PMi_TriggerBL - ldrh r0, [r0] - tst r0, #2 - beq _0380209C - ldr r1, _03802188 ; =0x04000134 - mov r0, #0x8000 - ldrh r7, [r1] - mov r8, #1 - bl EXIi_SelectRcnt - mov r0, #0x40 - mov r1, #0 - bl EXIi_SetBitRcnt0L - mov r0, #0x100 - mov r1, r0 - bl EXIi_SetBitRcnt0L - mov r0, #0x80 - bl OS_EnableIrqMask -_0380209C: - ldr r0, _0380217C ; =PMi_TriggerBL - ldrh r0, [r0] - tst r0, #8 - beq _038020B4 - mov r0, #0x100000 - bl OS_EnableIrqMask -_038020B4: - ldr r0, _0380217C ; =PMi_TriggerBL - ldrh r0, [r0] - tst r0, #0x10 - beq _038020CC - mov r0, #0x2000 - bl OS_EnableIrqMask -_038020CC: - mov r0, r4 - bl OS_RestoreInterrupts - ldr r2, _03802178 ; =0x04000208 - mov r0, #1 - ldrh r1, [r2] - strh r0, [r2] - bl __VENEER_SVC_Sleep - mov r1, r6 - mov r0, #0 - bl PMi_SetRegister - ldr r0, _0380217C ; =PMi_TriggerBL - ldrh r1, [r0] - tst r1, #0x20 - movne r0, #6 - moveq r0, #7 - tst r1, #0x40 - movne r6, #4 - moveq r6, #5 - bl PMi_SwitchUtilityProc - mov r0, r6 - bl PMi_SwitchUtilityProc - cmp r8, #0 - ldrne r0, _03802188 ; =0x04000134 - strneh r7, [r0] - mov r0, #1 - bl PMi_SetControl - bl SND_EndSleep - mov r1, #0 - ldr r3, _0380218C ; =PMi_Work - mov r2, r1 - mov r0, #0x62 - str r1, [r3, #0x20] - bl PMi_SendPxiCommand - bl OS_DisableInterrupts - mov r0, r5 - bl OS_SetIrqMask - mov r0, r4 - bl OS_RestoreInterrupts - ldr r1, _03802178 ; =0x04000208 - ldrh r0, [r1] - strh sb, [r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bx lr - .align 2, 0 -_03802178: .word 0x04000208 -_0380217C: .word PMi_TriggerBL -_03802180: .word PMi_KeyPattern -_03802184: .word 0x04000132 -_03802188: .word 0x04000134 -_0380218C: .word PMi_Work - arm_func_end PMi_DoSleep - - arm_func_start __VENEER_SVC_Sleep -__VENEER_SVC_Sleep: ; 0x03802190 - ldr ip, _03802198 ; =SVC_Sleep - bx ip - .align 2, 0 -_03802198: .word SVC_Sleep - arm_func_end __VENEER_SVC_Sleep - - arm_func_start PM_SelfBlinkProc -PM_SelfBlinkProc: ; 0x0380219C - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _038022B0 ; =PMi_BlinkCounter - ldr r3, [r1, #4] - cmp r3, #0 - bne _038021D8 - mov r2, #1 - mov r3, r2 - mov r0, #3 - mov r1, #0x66 - bl SPIi_SetEntry - cmp r0, #0 - beq _038022A8 - mov r0, #1 - bl PM_SetLEDPattern - b _038022A8 -_038021D8: - cmp r3, #4 - bge _03802204 - ldr r0, _038022B4 ; =PMi_LEDStatus - ldr r0, [r0] - cmp r3, r0 - beq _038022A8 - mov r0, #3 - mov r1, #0x66 - mov r2, #1 - bl SPIi_SetEntry - b _038022A8 -_03802204: - sub r2, r3, #4 - mov r0, #0xc - mul r4, r2, r0 - ldr r5, _038022B8 ; =PMi_BlinkPatternData - ldr r0, [r1] - add r6, r5, r4 - ldrh r1, [r6, #0xa] - bl _u32_div_f - mov r1, #0 - mov r3, r1, lsr r0 - ldr ip, [r6, #4] - mov r2, #-0x80000000 - rsb r1, r0, #0x20 - orr r3, r3, r2, lsl r1 - sub r1, r0, #0x20 - and ip, ip, r2, lsr r0 - orr r3, r3, r2, lsr r1 - ldr r0, [r5, r4] - cmp ip, #0 - and r0, r0, r3 - cmpeq r0, #0 - movne r3, #1 - ldrh r2, [r6, #8] - ldrh r1, [r6, #0xa] - ldr r0, _038022B0 ; =PMi_BlinkCounter - mul r1, r2, r1 - ldr r2, [r0] - moveq r3, #2 - add r2, r2, #1 - cmp r2, r1 - str r2, [r0] - movhs r1, #0 - strhs r1, [r0] - ldr r0, _038022B4 ; =PMi_LEDStatus - ldr r0, [r0] - cmp r3, r0 - beq _038022A8 - mov r0, #3 - mov r1, #0x66 - mov r2, #1 - bl SPIi_SetEntry -_038022A8: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_038022B0: .word PMi_BlinkCounter -_038022B4: .word PMi_LEDStatus -_038022B8: .word PMi_BlinkPatternData - arm_func_end PM_SelfBlinkProc - - arm_func_start PM_SetLEDPattern -PM_SetLEDPattern: ; 0x038022BC - cmp r0, #0xf - ldrle r1, _038022D4 ; =PMi_BlinkCounter - movle r2, #0 - strle r0, [r1, #4] - strle r2, [r1] - bx lr - .align 2, 0 -_038022D4: .word PMi_BlinkCounter - arm_func_end PM_SetLEDPattern - - arm_func_start PM_GetLEDPattern -PM_GetLEDPattern: ; 0x038022D8 - ldr r0, _038022E4 ; =PMi_BlinkCounter - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_038022E4: .word PMi_BlinkCounter - arm_func_end PM_GetLEDPattern - - arm_func_start MIC_Init -MIC_Init: ; 0x038022E8 - ldr r0, _03802324 ; =micw - mov r3, #0 - str r3, [r0, #0x20] - ldr r0, _03802328 ; =micw - mov r2, r3 -_038022FC: - mov r1, r3, lsl #1 - add r3, r3, #1 - strh r2, [r0, r1] - cmp r3, #0x10 - blt _038022FC - ldr r1, _0380232C ; =0x0400010E - ldrh r0, [r1] - bic r0, r0, #0x80 - strh r0, [r1] - bx lr - .align 2, 0 -_03802324: .word micw -_03802328: .word micw -_0380232C: .word 0x0400010E - arm_func_end MIC_Init - - arm_func_start MIC_AnalyzeCommand -MIC_AnalyzeCommand: ; 0x03802330 - stmdb sp!, {r4, lr} - tst r0, #0x2000000 - beq _0380235C - ldr r1, _038025E8 ; =micw - mov r4, #0 - mov r3, r4 -_03802348: - mov r2, r4, lsl #1 - add r4, r4, #1 - strh r3, [r1, r2] - cmp r4, #0x10 - blt _03802348 -_0380235C: - ldr r1, _038025E8 ; =micw - and r2, r0, #0xf0000 - mov r2, r2, lsr #0x10 - mov r2, r2, lsl #1 - strh r0, [r1, r2] - tst r0, #0x1000000 - beq _038025E0 - ldr r1, _038025EC ; =micw - ldrh r2, [r1] - and r0, r2, #0xff00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #0x10 - sub r0, r4, #0x40 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _038025D4 -_0380239C: ; jump table - b _038023AC ; case 0 - b _038023E8 ; case 1 - b _038024EC ; case 2 - b _03802550 ; case 3 -_038023AC: - mov r1, r4 - and r3, r2, #0xff - mov r0, #2 - mov r2, #1 - bl SPIi_SetEntry - cmp r0, #0 - bne _038023D4 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult -_038023D4: - ldr r0, _038025F0 ; =0x027FFF94 - mov r1, #0 - strh r1, [r0] - str r1, [r0, #-4] - b _038025E0 -_038023E8: - ldr r0, [r1, #0x20] - cmp r0, #0 - beq _03802404 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _038025E0 -_03802404: - and r0, r2, #0xff - strh r0, [r1, #0x24] - ldrh r2, [r1, #2] - ldrh r0, [r1, #4] - orr r3, r0, r2, lsl #16 - cmp r3, #0x2000000 - blo _03802428 - cmp r3, #0x2400000 - blo _03802438 -_03802428: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _038025E0 -_03802438: - str r3, [r1, #0x28] - ldrh r2, [r1, #6] - ldrh r0, [r1, #8] - orr r2, r0, r2, lsl #16 - add r0, r3, r2 - cmp r0, #0x2400000 - bls _03802464 - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _038025E0 -_03802464: - str r2, [r1, #0x30] - ldrh r2, [r1, #0xa] - ldrh r0, [r1, #0xc] - orr r0, r0, r2, lsl #16 - bl MicSetTimerValue - cmp r0, #0 - bne _03802490 - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _038025E0 -_03802490: - ldr r3, _038025EC ; =micw - mov r2, #0 - str r2, [r3, #0x2c] - ldrh r0, [r3, #0x24] - mov r1, r4 - and ip, r0, #7 - mov r0, #2 - strh ip, [r3, #0x26] - bl SPIi_SetEntry - cmp r0, #0 - bne _038024CC - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _038025E0 -_038024CC: - ldr r1, _038025F0 ; =0x027FFF94 - mov r2, #0 - strh r2, [r1] - ldr r0, _038025EC ; =micw - str r2, [r1, #-4] - mov r1, #1 - str r1, [r0, #0x20] - b _038025E0 -_038024EC: - ldr r0, [r1, #0x20] - cmp r0, #2 - beq _03802508 - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _038025E0 -_03802508: - mov r1, r4 - mov r0, #2 - mov r2, #0 - bl SPIi_SetEntry - cmp r0, #0 - bne _03802530 - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult - b _038025E0 -_03802530: - ldr r0, _038025EC ; =micw - mov r2, #3 - ldr r1, _038025F4 ; =0x0400010E - str r2, [r0, #0x20] - ldrh r0, [r1] - bic r0, r0, #0x80 - strh r0, [r1] - b _038025E0 -_03802550: - ldr r0, [r1, #0x20] - cmp r0, #2 - beq _0380256C - mov r0, r4 - mov r1, #3 - bl SPIi_ReturnResult - b _038025E0 -_0380256C: - ldrh r2, [r1, #2] - ldrh r0, [r1, #4] - orr r0, r0, r2, lsl #16 - bl MicSetTimerValue - cmp r0, #0 - bne _03802594 - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _038025E0 -_03802594: - bl OS_DisableInterrupts - ldr r3, _038025F4 ; =0x0400010E - ldr r1, _038025EC ; =micw - ldrh r2, [r3] - bic r2, r2, #0x80 - strh r2, [r3] - ldrh r2, [r1, #0x34] - strh r2, [r3, #-2] - ldrh r1, [r1, #0x36] - orr r1, r1, #0xc0 - strh r1, [r3] - bl OS_RestoreInterrupts - mov r0, r4 - mov r1, #0 - bl SPIi_ReturnResult - b _038025E0 -_038025D4: - mov r0, r4 - mov r1, #1 - bl SPIi_ReturnResult -_038025E0: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_038025E8: .word micw -_038025EC: .word micw -_038025F0: .word 0x027FFF94 -_038025F4: .word 0x0400010E - arm_func_end MIC_AnalyzeCommand - - arm_func_start MicSetTimerValue -MicSetTimerValue: ; 0x038025F8 - cmp r0, #0x10000 - bhs _0380261C - ldr r1, _03802698 ; =micw - mov r2, #0 - strh r2, [r1, #0x36] - rsb r0, r0, #0x10000 - strh r0, [r1, #0x34] - mov r0, #1 - bx lr -_0380261C: - cmp r0, #0x400000 - bhs _03802644 - ldr r1, _03802698 ; =micw - mov r3, #1 - mov r0, r0, lsr #6 - rsb r2, r0, #0x10000 - strh r3, [r1, #0x36] - mov r0, r3 - strh r2, [r1, #0x34] - bx lr -_03802644: - cmp r0, #0x1000000 - bhs _0380266C - ldr r1, _03802698 ; =micw - mov r2, #2 - mov r0, r0, lsr #8 - strh r2, [r1, #0x36] - rsb r0, r0, #0x10000 - strh r0, [r1, #0x34] - mov r0, #1 - bx lr -_0380266C: - cmp r0, #0x4000000 - movhs r0, #0 - bxhs lr - ldr r1, _03802698 ; =micw - mov r2, #3 - mov r0, r0, lsr #0xa - strh r2, [r1, #0x36] - rsb r0, r0, #0x10000 - strh r0, [r1, #0x34] - mov r0, #1 - bx lr - .align 2, 0 -_03802698: .word micw - arm_func_end MicSetTimerValue - - arm_func_start MIC_ExecuteProcess -MIC_ExecuteProcess: ; 0x0380269C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r2, [r4, #4] - cmp r2, #0x40 - beq _038026C4 - cmp r2, #0x41 - beq _03802774 - cmp r2, #0x42 - beq _0380280C - b _038028A8 -_038026C4: - bl OS_DisableInterrupts - mov r5, r0 - mov r0, #2 - bl SPIi_CheckException - cmp r0, #0 - bne _038026FC - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #4] - mov r1, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - b _038028A8 -_038026FC: - mov r0, #2 - bl SPIi_GetException - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #8] - and r0, r0, #1 - cmp r0, #1 - bne _03802730 - bl MIC_ExecSampling12 - ldr r1, [r4, #8] - tst r1, #2 - eorne r0, r0, #0x8000 - b _03802740 -_03802730: - bl MIC_ExecSampling8 - ldr r1, [r4, #8] - tst r1, #2 - eorne r0, r0, #0x80 -_03802740: - ldr r1, _038028B0 ; =0x027FFF94 - movne r0, r0, lsl #0x10 - movne r0, r0, lsr #0x10 - strh r0, [r1] - str r1, [r1, #-4] - ldr r0, [r4, #4] - mov r1, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #2 - bl SPIi_ReleaseException - b _038028A8 -_03802774: - ldr r0, _038028B4 ; =micw - ldr r1, [r0, #0x20] - cmp r1, #1 - bne _038027F8 - mov r1, #0 - strh r1, [r0, #0x3a] - strh r1, [r0, #0x38] - bl OS_DisableInterrupts - mov r5, r0 - mov r0, #0x40 - bl OS_EnableIrqMask - ldr r1, _038028B8 ; =MIC_TimerHandler - mov r0, #0x40 - bl MIC_SetIrqFunction - bl MIC_EnableMultipleInterrupt - ldr r1, _038028B4 ; =micw - ldr r2, _038028BC ; =0x0400010C - ldrh r3, [r1, #0x34] - mov r0, r5 - strh r3, [r2] - ldrh r1, [r1, #0x36] - orr r1, r1, #0xc0 - strh r1, [r2, #2] - bl OS_RestoreInterrupts - ldr r0, [r4, #4] - mov r1, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - ldr r0, _038028B4 ; =micw - mov r1, #2 - str r1, [r0, #0x20] - b _038028A8 -_038027F8: - mov r0, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #3 - bl SPIi_ReturnResult - b _038028A8 -_0380280C: - ldr r0, _038028B4 ; =micw - ldr r1, [r0, #0x20] - sub r0, r1, #3 - cmp r0, #1 - bhi _03802888 - ldr r1, _038028C0 ; =0x0400010E - ldrh r0, [r1] - bic r0, r0, #0x80 - strh r0, [r1] - bl OS_DisableInterrupts - mov r4, r0 - mov r0, #0x40 - mov r1, #0 - bl MIC_SetIrqFunction - bl MIC_DisableMultipleInterrupt - mov r0, r4 - bl OS_RestoreInterrupts - ldr r0, _038028B4 ; =micw - mov r1, #0 - ldr r0, [r0, #0x20] - cmp r0, #3 - bne _03802870 - mov r0, #0x42 - bl SPIi_ReturnResult - b _03802878 -_03802870: - mov r0, #0x51 - bl SPIi_ReturnResult -_03802878: - ldr r0, _038028B4 ; =micw - mov r1, #0 - str r1, [r0, #0x20] - b _038028A8 -_03802888: - cmp r1, #3 - mov r1, #3 - bne _038028A0 - mov r0, #0x42 - bl SPIi_ReturnResult - b _038028A8 -_038028A0: - mov r0, #0x51 - bl SPIi_ReturnResult -_038028A8: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_038028B0: .word 0x027FFF94 -_038028B4: .word micw -_038028B8: .word MIC_TimerHandler -_038028BC: .word 0x0400010C -_038028C0: .word 0x0400010E - arm_func_end MIC_ExecuteProcess - - arm_func_start MIC_TimerHandler -MIC_TimerHandler: ; 0x038028C4 - stmdb sp!, {r3, lr} - bl MicTimerHandler - ldr r3, _038028F0 ; =0x0380FFF8 - ldr r0, _038028F4 ; =0x04000214 - ldr r2, [r3] - mov r1, #0x40 - orr r2, r2, #0x40 - str r2, [r3] - str r1, [r0] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_038028F0: .word 0x0380FFF8 -_038028F4: .word 0x04000214 - arm_func_end MIC_TimerHandler - - arm_func_start MicTimerHandler -MicTimerHandler: ; 0x038028F8 - stmdb sp!, {r4, r5, r6, r7, lr} - ldr r4, _03802A50 ; =micw - ldrh r5, [r4, #0x26] - and r0, r5, #4 - cmp r0, #4 - ldrh r6, [r4, #0x38] - ldrneh r7, [r4, #0x3a] - ldreq r7, _03802A54 ; =0x0000FFFF - bl SPIi_CheckEntry - cmp r0, #0 - bne _03802964 - mov r0, #2 - bl SPIi_CheckException - cmp r0, #0 - beq _03802964 - and r0, r5, #1 - cmp r0, #1 - bne _03802954 - bl MIC_ExecSampling12 - tst r5, #2 - moveq r7, r0 - eorne r7, r0, #0x8000 - b _03802964 -_03802954: - bl MIC_ExecSampling8 - tst r5, #2 - moveq r7, r0 - eorne r7, r0, #0x80 -_03802964: - and r0, r5, #1 - ldr r3, _03802A58 ; =0x027FFC00 - ldr r1, [r4, #0x2c] - cmp r0, #1 - bne _03802994 - ldr r2, [r4, #0x28] - strh r7, [r2, r1]! - str r2, [r3, #0x390] - add r3, r3, #0x394 - strh r7, [r3] - add r1, r1, #2 - b _038029CC -_03802994: - and r7, r7, #0xff - tst r1, #1 - bne _038029AC - mov r6, r7 - add r1, r1, #1 - b _038029CC -_038029AC: - orr r0, r6, r7, lsl #8 - ldr r2, [r4, #0x28] - sub r1, r1, #1 - strh r0, [r2, r1]! - str r2, [r3, #0x390] - add r3, r3, #0x394 - strh r0, [r3] - add r1, r1, #2 -_038029CC: - strh r6, [r4, #0x38] - strh r7, [r4, #0x3a] - ldr r0, [r4, #0x30] - cmp r1, r0 - movhs r1, #0 - str r1, [r4, #0x2c] - blo _03802A48 - ldrh r0, [r4, #0x24] - and r0, r0, #0x10 - cmp r0, #0x10 - bne _03802A08 - mov r0, #0x51 - mov r1, #0 - bl SPIi_ReturnResult - b _03802A48 -_03802A08: - mov r0, #2 - mov r1, #0x42 - mov r2, #0 - bl SPIi_SetEntry - cmp r0, #0 - bne _03802A30 - mov r0, #0x51 - mov r1, #4 - bl SPIi_ReturnResult - b _03802A48 -_03802A30: - mov r0, #4 - str r0, [r4, #0x20] - ldr r1, _03802A5C ; =0x0400010E - ldrh r0, [r1] - bic r0, r0, #0x80 - strh r0, [r1] -_03802A48: - ldmia sp!, {r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_03802A50: .word micw -_03802A54: .word 0x0000FFFF -_03802A58: .word 0x027FFC00 -_03802A5C: .word 0x0400010E - arm_func_end MicTimerHandler - - arm_func_start MIC_ExecSampling8 -MIC_ExecSampling8: ; 0x03802A60 - stmdb sp!, {r4, lr} - ldr r2, _03802B6C ; =0x040001C0 -_03802A68: - ldrh r0, [r2] - tst r0, #0x80 - bne _03802A68 - ldr r1, _03802B70 ; =0x00008A01 - ldr r0, _03802B74 ; =0x040001C2 - strh r1, [r2] - mov r1, #0xec - strh r1, [r0] - sub r1, r0, #2 -_03802A8C: - ldrh r0, [r1] - tst r0, #0x80 - bne _03802A8C - bl SPI_DummyWaitReceive - ldr r2, _03802B78 ; =0x00008201 - ldr r1, _03802B6C ; =0x040001C0 - mov r4, r0, lsl #0x18 - strh r2, [r1] - bl SPI_DummyWaitReceive - ldr r2, _03802B7C ; =micw + 0x3C - ldr r1, _03802B80 ; =0x00007F80 - orr r0, r0, r4, lsr #16 - and r1, r0, r1 - ldr r0, [r2, #0x10] - mov r1, r1, lsl #9 - add r3, r0, r1, lsr #16 - str r3, [r2, #0x10] - ldr r0, [r2, #0xc] - add r0, r0, #1 - str r0, [r2, #0xc] - cmp r0, #0x1000 - blo _03802B3C - ldrsb r4, [r2] - mov r0, r3, lsr #0xc - sub r0, r0, #0x80 - mov r0, r0, lsl #0x18 - cmp r4, r0, asr #24 - mov r0, r0, asr #0x18 - cmplt r4, #0xc - addlt r0, r4, #1 - strltb r0, [r2] - blt _03802B2C - cmp r0, r4 - bge _03802B2C - mvn r0, #0xb - cmp r4, r0 - ldrgt r0, _03802B7C ; =micw + 0x3C - ldrgtsb r2, [r0] - subgt r2, r2, #1 - strgtb r2, [r0] -_03802B2C: - ldr r0, _03802B7C ; =micw + 0x3C - mov r2, #0 - str r2, [r0, #0xc] - str r2, [r0, #0x10] -_03802B3C: - ldr r0, _03802B7C ; =micw + 0x3C - ldrsb r0, [r0] - rsb r0, r0, r1, lsr #16 - cmp r0, #0xff - movgt r0, #0xff - bgt _03802B5C - cmp r0, #0 - movlt r0, #0 -_03802B5C: - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_03802B6C: .word 0x040001C0 -_03802B70: .word 0x00008A01 -_03802B74: .word 0x040001C2 -_03802B78: .word 0x00008201 -_03802B7C: .word micw + 0x3C -_03802B80: .word 0x00007F80 - arm_func_end MIC_ExecSampling8 - - arm_func_start SPI_DummyWaitReceive -SPI_DummyWaitReceive: ; 0x03802B84 - ldr r0, _03802BB0 ; =0x040001C2 - mov r1, #0 - strh r1, [r0] - sub r1, r0, #2 -_03802B94: - ldrh r0, [r1] - tst r0, #0x80 - bne _03802B94 - ldr r0, _03802BB0 ; =0x040001C2 - ldrh r0, [r0] - and r0, r0, #0xff - bx lr - .align 2, 0 -_03802BB0: .word 0x040001C2 - arm_func_end SPI_DummyWaitReceive - - arm_func_start MIC_ExecSampling12 -MIC_ExecSampling12: ; 0x03802BB4 - stmdb sp!, {r4, lr} - ldr r2, _03802CCC ; =0x040001C0 -_03802BBC: - ldrh r0, [r2] - tst r0, #0x80 - bne _03802BBC - ldr r1, _03802CD0 ; =0x00008A01 - ldr r0, _03802CD4 ; =0x040001C2 - strh r1, [r2] - mov r1, #0xe4 - strh r1, [r0] - sub r1, r0, #2 -_03802BE0: - ldrh r0, [r1] - tst r0, #0x80 - bne _03802BE0 - bl SPI_DummyWaitReceive - ldr r2, _03802CD8 ; =0x00008201 - ldr r1, _03802CCC ; =0x040001C0 - mov r4, r0, lsl #0x18 - strh r2, [r1] - bl SPI_DummyWaitReceive - ldr r3, _03802CDC ; =micw + 0x3C - ldr r1, _03802CE0 ; =0x00007FF8 - orr r0, r0, r4, lsr #16 - and r2, r0, r1 - ldr r0, [r3, #4] - mov r2, r2, lsl #0x11 - add r4, r0, r2, lsr #16 - str r4, [r3, #4] - ldr r0, [r3, #8] - add r0, r0, #1 - str r0, [r3, #8] - cmp r0, #0x100 - blo _03802C98 - mov r0, r1, lsl #1 - and r0, r0, r4, lsr #8 - ldrsh r4, [r3, #2] - sub r0, r0, #0x8000 - mov r0, r0, lsl #0x10 - cmp r4, r0, asr #16 - mov r1, r0, asr #0x10 - cmplt r4, #0xc00 - addlt r0, r4, #0x10 - strlth r0, [r3, #2] - blt _03802C88 - cmp r1, r4 - bge _03802C88 - mov r0, #0xc00 - rsb r0, r0, #0 - cmp r4, r0 - ldrgt r0, _03802CDC ; =micw + 0x3C - ldrgtsh r1, [r0, #2] - subgt r1, r1, #0x10 - strgth r1, [r0, #2] -_03802C88: - ldr r0, _03802CDC ; =micw + 0x3C - mov r1, #0 - str r1, [r0, #8] - str r1, [r0, #4] -_03802C98: - ldr r1, _03802CDC ; =micw + 0x3C - ldr r0, _03802CE4 ; =0x0000FFF0 - ldrsh r1, [r1, #2] - rsb r1, r1, r2, lsr #16 - cmp r1, r0 - movgt r1, r0 - bgt _03802CBC - cmp r1, #0 - movlt r1, #0 -_03802CBC: - mov r0, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_03802CCC: .word 0x040001C0 -_03802CD0: .word 0x00008A01 -_03802CD4: .word 0x040001C2 -_03802CD8: .word 0x00008201 -_03802CDC: .word micw + 0x3C -_03802CE0: .word 0x00007FF8 -_03802CE4: .word 0x0000FFF0 - arm_func_end MIC_ExecSampling12 - - arm_func_start MIC_SetIrqFunction -MIC_SetIrqFunction: ; 0x03802CE8 - ldr r2, _03802D0C ; =OS_IRQTable - mov r3, #0 -_03802CF0: - tst r0, #1 - strne r1, [r2, r3, lsl #2] - add r3, r3, #1 - cmp r3, #0x19 - mov r0, r0, lsr #1 - blt _03802CF0 - bx lr - .align 2, 0 -_03802D0C: .word OS_IRQTable - arm_func_end MIC_SetIrqFunction - - arm_func_start MIC_EnableMultipleInterrupt -MIC_EnableMultipleInterrupt: ; 0x03802D10 - stmdb sp!, {r3, lr} - ldr r3, _03802D64 ; =0x0380FFFC - ldr r0, _03802D68 ; =MIC_IrqHandler - ldr r2, [r3] - cmp r2, r0 - beq _03802D5C - ldr r0, _03802D6C ; =micIntrInfo - mov r1, #0 - str r1, [r0] - sub r1, r3, #0x17c - str r1, [r0, #4] - mov r1, #0x40 - str r1, [r0, #8] - str r2, [r0, #0xc] - bl OS_DisableInterrupts - ldr r2, _03802D68 ; =MIC_IrqHandler - ldr r1, _03802D64 ; =0x0380FFFC - str r2, [r1] - bl OS_RestoreInterrupts -_03802D5C: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03802D64: .word 0x0380FFFC -_03802D68: .word MIC_IrqHandler -_03802D6C: .word micIntrInfo - arm_func_end MIC_EnableMultipleInterrupt - - arm_func_start MIC_DisableMultipleInterrupt -MIC_DisableMultipleInterrupt: ; 0x03802D70 - stmdb sp!, {r3, lr} - ldr r1, _03802DA8 ; =0x0380FFFC - ldr r0, _03802DAC ; =MIC_IrqHandler - ldr r1, [r1] - cmp r1, r0 - bne _03802DA0 - bl OS_DisableInterrupts - ldr r1, _03802DB0 ; =micIntrInfo - ldr r2, _03802DA8 ; =0x0380FFFC - ldr r1, [r1, #0xc] - str r1, [r2] - bl OS_RestoreInterrupts -_03802DA0: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03802DA8: .word 0x0380FFFC -_03802DAC: .word MIC_IrqHandler -_03802DB0: .word micIntrInfo - arm_func_end MIC_DisableMultipleInterrupt - - arm_func_start MIC_IrqHandler -MIC_IrqHandler: ; 0x03802DB4 - mov ip, #0x4000000 - add r1, ip, #0x208 - ldrh r0, [r1] - tst r0, r0 - bxeq lr - ldr r3, [ip, #0x210] - ldr r1, [ip, #0x214] - ands r2, r1, r3 - bxeq lr - ldr r0, _03802F20 ; =0x01DF3FFF - tst r2, r0 - streq r2, [ip, #0x214] - bxeq lr - stmdb sp!, {lr} - mrs r0, spsr - stmdb sp!, {r0} - stmdb sp, {sp, lr} ^ - sub sp, sp, #8 - mov r0, #0x9f - msr cpsr_c, r0 - ldr r1, _03802F24 ; =OSi_ThreadInfo - ldrh r0, [r1, #2] - add r0, r0, #1 - strh r0, [r1, #2] - ldr r1, _03802F28 ; =micIntrInfo - cmp r0, #1 - moveq r0, sp - ldreq sp, [r1, #4] - streq r0, [r1, #4] - stmdb sp!, {r3} - ldr r1, _03802F2C ; =micIntrPrio - ldr r0, [r1] - tst r0, r2 - strne r0, [ip, #0x214] - ldrne r0, [r1, #4] - ldrne r3, _03802F30 ; =OS_IRQTable - ldrne r0, [r3, r0, lsl #2] - bne _03802E90 - mov r3, #1 -_03802E50: - ldr r0, [r1, r3, lsl #3] - tst r0, r2 - addeq r3, r3, #1 - beq _03802E50 - str r0, [ip, #0x214] - add r0, r1, r3, lsl #3 - ldr r2, [r0, #4] - ldr r3, _03802F30 ; =OS_IRQTable - ldr r0, [r3, r2, lsl #2] - ldr r2, _03802F24 ; =OSi_ThreadInfo - ldrh r3, [r2, #2] - cmp r3, #1 - ldreq r2, [r1] - streq r2, [ip, #0x210] - moveq r2, #0x1f - msreq cpsr_c, r2 -_03802E90: - ldr r1, [ip, #0x210] - stmdb sp!, {r1} - add lr, pc, #0x0 ; =sub_03802EA0 - bx r0 - mov r0, #0x9f - msr cpsr_c, r0 - mov ip, #0x4000000 - ldmia sp!, {r0} - ldr r1, [ip, #0x210] - eor r2, r0, r1 - and r1, r2, r1 - and r0, r2, r0 - ldmia sp!, {r3} - orr r3, r3, r1 - bic r3, r3, r0 - str r3, [ip, #0x210] - ldr r2, _03802F24 ; =OSi_ThreadInfo - ldr r3, _03802F28 ; =micIntrInfo - ldrh r0, [r2, #2] - subs r1, r0, #1 - strh r1, [r2, #2] - moveq r0, sp - ldreq sp, [r3, #4] - streq r0, [r3, #4] - mov r0, #0x92 - msr cpsr_c, r0 - ldmia sp, {sp, lr} ^ - mov r0, r0 - add sp, sp, #8 - ldmia sp!, {r0} - msr spsr_fc, r0 - tst r1, r1 - ldreq r0, _03802F34 ; =OS_IrqHandler_ThreadSwitch - addeq lr, pc, #0x0 ; =_03802F1C - bxeq r0 -_03802F1C: - ldmia sp!, {pc} - .align 2, 0 -_03802F20: .word 0x01DF3FFF -_03802F24: .word OSi_ThreadInfo -_03802F28: .word micIntrInfo -_03802F2C: .word micIntrPrio -_03802F30: .word OS_IRQTable -_03802F34: .word OS_IrqHandler_ThreadSwitch - arm_func_end MIC_IrqHandler - - arm_func_start CTRDGi_InitCommon -CTRDGi_InitCommon: ; 0x03802F38 - stmdb sp!, {r3, lr} - ldr r1, _03802F68 ; =CTRDGi_Work - mov r3, #0 - ldr r2, _03802F6C ; =0x05000001 - add r0, sp, #0 - str r3, [sp] - bl __VENEER_SVC_CpuSet - bl OS_GetLockID - ldr r1, _03802F70 ; =CTRDGi_EnableFlag - strh r0, [r1, #6] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03802F68: .word CTRDGi_Work -_03802F6C: .word 0x05000001 -_03802F70: .word CTRDGi_EnableFlag - arm_func_end CTRDGi_InitCommon - - arm_func_start __VENEER_SVC_CpuSet -__VENEER_SVC_CpuSet: ; 0x03802F74 - ldr ip, _03802F7C ; =SVC_CpuSet - bx ip - .align 2, 0 -_03802F7C: .word SVC_CpuSet - arm_func_end __VENEER_SVC_CpuSet - - arm_func_start CTRDG_IsPulledOut -CTRDG_IsPulledOut: ; 0x03802F80 - stmdb sp!, {r3, lr} - ldr r2, _03802FC8 ; =0x027FFC30 - ldr r0, _03802FCC ; =0x0000FFFF - ldrh r1, [r2] - cmp r1, r0 - moveq r0, #0 - beq _03802FC0 - ldrb r0, [r2, #5] - mov r0, r0, lsl #0x1e - movs r0, r0, lsr #0x1f - bne _03802FB0 - bl CTRDG_IsExisting -_03802FB0: - ldr r0, _03802FC8 ; =0x027FFC30 - ldrb r0, [r0, #5] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f -_03802FC0: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03802FC8: .word 0x027FFC30 -_03802FCC: .word 0x0000FFFF - arm_func_end CTRDG_IsPulledOut - - arm_func_start CTRDG_IsExisting -CTRDG_IsExisting: ; 0x03802FD0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r2, _038030E8 ; =0x027FFC30 - mov r4, #1 - ldrh r1, [r2] - rsb r0, r4, #0x10000 - cmp r1, r0 - moveq r0, #0 - beq _038030DC - ldrb r0, [r2, #5] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f - cmp r0, #1 - moveq r0, #0 - beq _038030DC - ldr r0, _038030EC ; =CTRDGi_EnableFlag - add r1, sp, #8 - ldrh r0, [r0, #6] - bl CTRDGi_LockByProcessor - cmp r0, #0 - bne _03803034 - ldr r0, [sp, #0xc] - bl OS_RestoreInterrupts - mov r0, r4 - b _038030DC -_03803034: - add r0, sp, #0 - bl CTRDGi_ChangeLatestAccessCycle - mov r0, #0x8000000 - ldrb r2, [r0, #0xb2] - cmp r2, #0x96 - bne _03803060 - ldr r1, _038030E8 ; =0x027FFC30 - ldrh r0, [r0, #0xbe] - ldrh r1, [r1] - cmp r1, r0 - bne _038030A4 -_03803060: - cmp r2, #0x96 - ldrne r1, _038030E8 ; =0x027FFC30 - ldrne r0, _038030F0 ; =0x0801FFFE - ldrneh r1, [r1] - ldrneh r0, [r0] - cmpne r1, r0 - bne _038030A4 - ldr r2, _038030E8 ; =0x027FFC30 - mov r0, #0x8000000 - ldr r1, [r2, #8] - ldr r0, [r0, #0xac] - cmp r1, r0 - beq _038030B8 - ldrb r0, [r2, #5] - mov r0, r0, lsl #0x1f - movs r0, r0, lsr #0x1f - beq _038030B8 -_038030A4: - ldr r1, _038030E8 ; =0x027FFC30 - mov r4, #0 - ldrb r0, [r1, #5] - orr r0, r0, #2 - strb r0, [r1, #5] -_038030B8: - ldr r0, [sp] - bl MI_SetCartridgeRomCycle1st - ldr r0, [sp, #4] - bl MI_SetCartridgeRomCycle2nd - ldr r0, _038030EC ; =CTRDGi_EnableFlag - add r1, sp, #8 - ldrh r0, [r0, #6] - bl CTRDGi_UnlockByProcessor - mov r0, r4 -_038030DC: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_038030E8: .word 0x027FFC30 -_038030EC: .word CTRDGi_EnableFlag -_038030F0: .word 0x0801FFFE - arm_func_end CTRDG_IsExisting - - arm_func_start CTRDGi_ChangeLatestAccessCycle -CTRDGi_ChangeLatestAccessCycle: ; 0x038030F4 - stmdb sp!, {r3, lr} - ldr r2, _03803134 ; =0x04000204 - ldrh r1, [r2] - and r1, r1, #0xc - mov r1, r1, asr #2 - str r1, [r0] - ldrh r1, [r2] - and r1, r1, #0x10 - mov r1, r1, asr #4 - str r1, [r0, #4] - mov r0, #3 - bl MI_SetCartridgeRomCycle1st - mov r0, #0 - bl MI_SetCartridgeRomCycle2nd - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03803134: .word 0x04000204 - arm_func_end CTRDGi_ChangeLatestAccessCycle - - arm_func_start MI_SetCartridgeRomCycle1st -MI_SetCartridgeRomCycle1st: ; 0x03803138 - ldr r2, _03803150 ; =0x04000204 - ldrh r1, [r2] - bic r1, r1, #0xc - orr r0, r1, r0, lsl #2 - strh r0, [r2] - bx lr - .align 2, 0 -_03803150: .word 0x04000204 - arm_func_end MI_SetCartridgeRomCycle1st - - arm_func_start MI_SetCartridgeRomCycle2nd -MI_SetCartridgeRomCycle2nd: ; 0x03803154 - ldr r2, _0380316C ; =0x04000204 - ldrh r1, [r2] - bic r1, r1, #0x10 - orr r0, r1, r0, lsl #4 - strh r0, [r2] - bx lr - .align 2, 0 -_0380316C: .word 0x04000204 - arm_func_end MI_SetCartridgeRomCycle2nd - - arm_func_start CTRDGi_LockByProcessor -CTRDGi_LockByProcessor: ; 0x03803170 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - bl OS_DisableInterrupts - str r0, [r4, #4] - ldr r0, _038031BC ; =0x027FFFE8 - bl OS_ReadOwnerOfLockWord - ands r0, r0, #0x80 - str r0, [r4] - bne _038031A8 - mov r0, r5 - bl OS_TryLockCartridge - cmp r0, #0 - bne _038031B0 -_038031A8: - mov r0, #1 - b _038031B4 -_038031B0: - mov r0, #0 -_038031B4: - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_038031BC: .word 0x027FFFE8 - arm_func_end CTRDGi_LockByProcessor - - arm_func_start CTRDGi_UnlockByProcessor -CTRDGi_UnlockByProcessor: ; 0x038031C0 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4] - cmp r1, #0 - bne _038031D8 - bl OS_UnLockCartridge -_038031D8: - ldr r0, [r4, #4] - bl OS_RestoreInterrupts - ldmia sp!, {r4, lr} - bx lr - arm_func_end CTRDGi_UnlockByProcessor - - arm_func_start CTRDGi_SendtoPxi -CTRDGi_SendtoPxi: ; 0x038031E8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, #1 - mov r5, #0xd - mov r4, #0 - b _03803208 -_03803200: - mov r0, r6 - bl VENEER_SVC_WaitByLoop -_03803208: - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _03803200 - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end CTRDGi_SendtoPxi - - arm_func_start CTRDG_Init -CTRDG_Init: ; 0x03803228 - stmdb sp!, {r3, lr} - bl OS_InitTick - bl OS_InitAlarm - ldr r0, _038032B0 ; =pulse_edge_alarm - bl OS_CreateAlarm - ldr r0, _038032B4 ; =lock_id - ldr r1, [r0, #0x14] - cmp r1, #0 - bne _038032A8 - mov r1, #1 - str r1, [r0, #0x14] - bl CTRDGi_InitCommon - bl OS_GetLockID - mvn r1, #2 - cmp r0, r1 - beq _038032A8 - ldr r1, _038032B4 ; =lock_id - strh r0, [r1] - bl PXI_Init - ldr r1, _038032B8 ; =CTRDGi_CallbackForInitModuleInfo - mov r0, #0xd - bl PXI_SetFifoRecvCallback - bl CTRDGi_InitModuleInfo - ldr r1, _038032BC ; =CTRDGi_CallbackForPulledOut - mov r0, #0xd - bl PXI_SetFifoRecvCallback - ldr r1, _038032C0 ; =CTRDGi_CallbackForCTREx - mov r0, #0x10 - bl PXI_SetFifoRecvCallback - ldr r1, _038032C4 ; =CTRDGi_CallbackForSetPhi - mov r0, #0x11 - bl PXI_SetFifoRecvCallback -_038032A8: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_038032B0: .word pulse_edge_alarm -_038032B4: .word lock_id -_038032B8: .word CTRDGi_CallbackForInitModuleInfo -_038032BC: .word CTRDGi_CallbackForPulledOut -_038032C0: .word CTRDGi_CallbackForCTREx -_038032C4: .word CTRDGi_CallbackForSetPhi - arm_func_end CTRDG_Init - - arm_func_start CTRDGi_InitModuleInfo -CTRDGi_InitModuleInfo: ; 0x038032C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _03803424 ; =lock_id - ldr r1, [r0, #8] - cmp r1, #0 - bne _0380341C - ldr r1, _03803428 ; =0x04000300 - mov r2, #1 - ldrh r1, [r1] - str r2, [r0, #8] - tst r1, #1 - beq _0380341C - mov r0, #0x40000 - bl OS_SetIrqMask - ldr r2, _0380342C ; =0x04000208 - mov r1, #1 - ldrh sb, [r2] - ldr r5, _03803424 ; =lock_id - mov r4, r0 - strh r1, [r2] - mov r6, #0x100 - b _03803324 -_0380331C: - mov r0, r6 - bl VENEER_SVC_WaitByLoop -_03803324: - ldr r0, [r5, #0x28] - cmp r0, #1 - bne _0380331C - ldr r0, _03803424 ; =lock_id - mov r1, #0x8000000 - ldr r2, [r0, #0x18] - ldr r0, _03803430 ; =0x01FFFFC0 - add r8, r1, #4 - and r0, r2, r0 - mov r0, r0, lsr #6 - mov r0, r0, lsl #5 - add r5, r0, #0x2000000 - mov r6, #1 - bl OS_GetLockID - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 - mov r0, r7 - bl OS_LockCartridge - ldr ip, _03803434 ; =0x0000FFFF - mov sl, #0 - eor r0, ip, #3 - eor r1, ip, #0x84 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r0, lsr #0x10 - mov r3, r1, lsr #0x10 - b _038033CC -_03803390: - mov lr, ip - cmp sl, #0x4c - moveq lr, r3 - beq _038033A8 - cmp sl, #0x4d - moveq lr, r2 -_038033A8: - add r0, r5, sl, lsl #1 - mov r1, sl, lsl #1 - ldrh r0, [r0, #4] - ldrh r1, [r8, r1] - and r0, lr, r0 - cmp r0, r1 - movne r6, #0 - bne _038033D4 - add sl, sl, #1 -_038033CC: - cmp sl, #0x4e - blt _03803390 -_038033D4: - mov r0, r7 - bl OS_UnLockCartridge - mov r0, r7 - bl OS_ReleaseLockID - ldr r2, _03803438 ; =0x027FFC30 - and r0, r6, #0xff - ldrb r1, [r2, #5] - and r0, r0, #1 - bic r1, r1, #1 - orr r1, r1, r0 - mov r0, #1 - strb r1, [r2, #5] - bl CTRDGi_SendtoPxi - ldr r2, _0380342C ; =0x04000208 - mov r0, r4 - ldrh r1, [r2] - strh sb, [r2] - bl OS_SetIrqMask -_0380341C: - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_03803424: .word lock_id -_03803428: .word 0x04000300 -_0380342C: .word 0x04000208 -_03803430: .word 0x01FFFFC0 -_03803434: .word 0x0000FFFF -_03803438: .word 0x027FFC30 - arm_func_end CTRDGi_InitModuleInfo - - arm_func_start CTRDGi_CallbackForInitModuleInfo -CTRDGi_CallbackForInitModuleInfo: ; 0x0380343C - stmdb sp!, {r3, lr} - and r0, r1, #0x3f - cmp r0, #1 - ldreq r0, _03803468 ; =lock_id - moveq r2, #1 - streq r1, [r0, #0x18] - streq r2, [r0, #0x28] - beq _03803460 - bl OS_Terminate -_03803460: - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03803468: .word lock_id - arm_func_end CTRDGi_CallbackForInitModuleInfo - - arm_func_start CTRDGi_CallbackForPulledOut -CTRDGi_CallbackForPulledOut: ; 0x0380346C - stmdb sp!, {r3, lr} - and r0, r1, #0x3f - cmp r0, #2 - bne _03803494 - mov r0, #0 - bl CTRDG_VibPulseEdgeUpdate - bl SND_BeginSleep - bl WVR_Shutdown - bl OS_Terminate - b _03803498 -_03803494: - bl OS_Terminate -_03803498: - ldmia sp!, {r3, lr} - bx lr - arm_func_end CTRDGi_CallbackForPulledOut - - arm_func_start CTRDGi_CallbackForCTREx -CTRDGi_CallbackForCTREx: ; 0x038034A0 - ldr ip, _038034AC ; =CTRDG_VibPulseEdgeUpdate - mov r0, r1 - bx ip - .align 2, 0 -_038034AC: .word CTRDG_VibPulseEdgeUpdate - arm_func_end CTRDGi_CallbackForCTREx - - arm_func_start CTRDG_VibPulseEdgeUpdate -CTRDG_VibPulseEdgeUpdate: ; 0x038034B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs r5, r0 - beq _038034EC - ldr r0, [r5] - cmp r0, #0 - bne _038034EC - ldr r0, [r5, #0x44] - add r0, r0, #1 - str r0, [r5, #0x44] - ldr r1, [r5, #0x40] - cmp r1, #0 - beq _038034EC - ldr r0, [r5, #0x44] - cmp r0, r1 - movhi r5, #0 -_038034EC: - cmp r5, #0 - ldrne r0, [r5, #0x3c] - cmpne r0, #0 - bne _03803590 - bl OS_DisableInterrupts - ldr r4, _038036CC ; =lock_id - mov sb, r0 - ldr r0, [r4, #4] - cmp r0, #2 - bne _0380357C - mov sl, #0 - ldr r7, _038036D0 ; =0x027FFFE8 - ldr r5, _038036D4 ; =0x08001000 - mov r6, sl - mov fp, #1 - b _03803574 -_0380352C: - mov r0, r7 - bl OS_ReadOwnerOfLockWord - ands r8, r0, #0x80 - bne _0380354C - ldrh r0, [r4] - bl OS_TryLockCartridge - cmp r0, #0 - bne _0380356C -_0380354C: - str r6, [r4, #4] - mov sl, fp - strh r6, [r5] - cmp r8, #0 - bne _03803574 - ldrh r0, [r4] - bl OS_UnlockCartridge - b _03803574 -_0380356C: - ldr r0, _038036D8 ; =0x000080E8 - bl OS_SpinWait -_03803574: - cmp sl, #0 - beq _0380352C -_0380357C: - ldr r0, _038036DC ; =pulse_edge_alarm - bl OS_CancelAlarm - mov r0, sb - bl OS_RestoreInterrupts - b _038036C4 -_03803590: - cmp r5, #0 - beq _038036C4 - ldr r0, _038036D0 ; =0x027FFFE8 - bl OS_ReadOwnerOfLockWord - ands r4, r0, #0x80 - bne _038035BC - ldr r0, _038036CC ; =lock_id - ldrh r0, [r0] - bl OS_TryLockCartridge - cmp r0, #0 - bne _038036AC -_038035BC: - ldr r1, [r5] - ldr r0, [r5, #4] - cmp r1, r0 - bne _03803604 - ldr r0, _038036CC ; =lock_id - mov r2, #0 - ldr r1, _038036D4 ; =0x08001000 - str r2, [r0, #4] - strh r2, [r1] - str r5, [sp] - ldr r1, [r5, #8] - ldr r0, _038036DC ; =pulse_edge_alarm - ldr r3, _038036E0 ; =CTRDG_VibPulseEdgeUpdate - mov r2, #0 - bl OS_SetAlarm - mov r0, #0 - str r0, [r5] - b _03803694 -_03803604: - tst r1, #1 - ldr r1, _038036D4 ; =0x08001000 - beq _03803654 - ldr r0, _038036CC ; =lock_id - mov r2, #0 - str r2, [r0, #4] - strh r2, [r1] - str r5, [sp] - ldr r1, [r5] - ldr r0, _038036DC ; =pulse_edge_alarm - mov r1, r1, lsr #1 - add r1, r5, r1, lsl #2 - ldr r1, [r1, #0x24] - ldr r3, _038036E0 ; =CTRDG_VibPulseEdgeUpdate - mov r2, #0 - bl OS_SetAlarm - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _03803694 -_03803654: - ldr r0, _038036CC ; =lock_id - mov r2, #2 - str r2, [r0, #4] - strh r2, [r1] - str r5, [sp] - ldr r1, [r5] - ldr r0, _038036DC ; =pulse_edge_alarm - mov r1, r1, lsr #1 - add r1, r5, r1, lsl #2 - ldr r1, [r1, #0xc] - ldr r3, _038036E0 ; =CTRDG_VibPulseEdgeUpdate - mov r2, #0 - bl OS_SetAlarm - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] -_03803694: - cmp r4, #0 - bne _038036C4 - ldr r0, _038036CC ; =lock_id - ldrh r0, [r0] - bl OS_UnlockCartridge - b _038036C4 -_038036AC: - ldr r0, _038036DC ; =pulse_edge_alarm - ldr r1, _038036E4 ; =0x0000020B - ldr r3, _038036E0 ; =CTRDG_VibPulseEdgeUpdate - mov r2, #0 - str r5, [sp] - bl OS_SetAlarm -_038036C4: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_038036CC: .word lock_id -_038036D0: .word 0x027FFFE8 -_038036D4: .word 0x08001000 -_038036D8: .word 0x000080E8 -_038036DC: .word pulse_edge_alarm -_038036E0: .word CTRDG_VibPulseEdgeUpdate -_038036E4: .word 0x0000020B - arm_func_end CTRDG_VibPulseEdgeUpdate - - arm_func_start CTRDG_CheckPullOut_Polling -CTRDG_CheckPullOut_Polling: ; 0x038036E8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _038037D8 ; =isFirstCheck$3769 - mvn r0, #0 - ldr r3, [r1, #4] - cmp r3, r0 - ldreq r0, _038037DC ; =0x027FFC3C - ldreq r0, [r0] - addeq r0, r0, #0xa - streq r0, [r1, #4] - beq _038037D0 - ldr r0, _038037E0 ; =lock_id - ldr r2, [r0, #0x10] - cmp r2, #0 - ldreq r0, [r0, #0xc] - cmpeq r0, #0 - bne _038037D0 - ldr r2, _038037DC ; =0x027FFC3C - ldr r0, [r2] - cmp r0, r3 - blo _038037D0 - ldr r0, [r2] - add r0, r0, #0xa - str r0, [r1, #4] - bl CTRDG_IsPulledOut - ldr r1, _038037E0 ; =lock_id - str r0, [r1, #0xc] - bl CTRDG_IsExisting - cmp r0, #0 - bne _03803780 - ldr r0, _038037D8 ; =isFirstCheck$3769 - mov r1, #1 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, _038037E0 ; =lock_id - strne r1, [r0, #0x10] - bne _038037D0 - ldr r0, _038037E0 ; =lock_id - str r1, [r0, #0xc] -_03803780: - ldr r0, _038037E0 ; =lock_id - ldr r1, _038037D8 ; =isFirstCheck$3769 - ldr r0, [r0, #0xc] - mov r2, #0 - str r2, [r1] - cmp r0, #0 - beq _038037D0 - mov r7, #0x64 - mov r6, #0xd - mov r5, #0x11 - mov r4, r2 - b _038037B8 -_038037B0: - mov r0, r7 - bl OS_Sleep -_038037B8: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _038037B0 -_038037D0: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_038037D8: .word isFirstCheck$3769 -_038037DC: .word 0x027FFC3C -_038037E0: .word lock_id - arm_func_end CTRDG_CheckPullOut_Polling - - arm_func_start CTRDGi_CallbackForSetPhi -CTRDGi_CallbackForSetPhi: ; 0x038037E4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - and r0, r1, #0x3f - cmp r0, #3 - bne _0380384C - ldr r3, _03803858 ; =0x04000204 - ldr r0, _0380385C ; =0x01FFFFC0 - ldrh r2, [r3] - and r0, r1, r0 - mov r1, r0, lsr #6 - bic r0, r2, #0x60 - orr r0, r0, r1, lsl #5 - strh r0, [r3] - mov r7, #1 - mov r6, #0x11 - mov r5, #0x12 - mov r4, #0 - b _03803830 -_03803828: - mov r0, r7 - bl VENEER_SVC_WaitByLoop -_03803830: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - bne _03803828 - b _03803850 -_0380384C: - bl OS_Terminate -_03803850: - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_03803858: .word 0x04000204 -_0380385C: .word 0x01FFFFC0 - arm_func_end CTRDGi_CallbackForSetPhi - - arm_func_start NVRAM_Init -NVRAM_Init: ; 0x03803860 - ldr r0, _03803884 ; =nvramw - mov r3, #0 - mov r2, r3 -_0380386C: - mov r1, r3, lsl #1 - add r3, r3, #1 - strh r2, [r0, r1] - cmp r3, #0x10 - blt _0380386C - bx lr - .align 2, 0 -_03803884: .word nvramw - arm_func_end NVRAM_Init - - arm_func_start NVRAM_AnalyzeCommand -NVRAM_AnalyzeCommand: ; 0x03803888 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - tst r0, #0x2000000 - beq _038038B8 - ldr r2, _03803A28 ; =nvramw - mov r5, #0 - mov lr, r5 -_038038A4: - mov r4, r5, lsl #1 - add r5, r5, #1 - strh lr, [r2, r4] - cmp r5, #0x10 - blt _038038A4 -_038038B8: - ldr r2, _03803A28 ; =nvramw - and r4, r0, #0xf0000 - mov r4, r4, lsr #0x10 - mov r4, r4, lsl #1 - strh r0, [r2, r4] - tst r0, #0x1000000 - beq _03803A1C - ldr lr, _03803A2C ; =nvramw - ldrh r0, [lr] - and r2, r0, #0xff00 - mov r2, r2, lsl #8 - mov r4, r2, lsr #0x10 - sub r2, r4, #0x22 - cmp r2, #0xa - addls pc, pc, r2, lsl #2 - b _038039F0 -_038038F8: ; jump table - b _03803924 ; case 0 - b _0380395C ; case 1 - b _0380395C ; case 2 - b _038039A4 ; case 3 - b _038039A4 ; case 4 - b _038039E4 ; case 5 - b _038039E4 ; case 6 - b _038039F0 ; case 7 - b _038039F0 ; case 8 - b _038039F0 ; case 9 - b _03803924 ; case 10 -_03803924: - ldrh ip, [lr, #4] - ldrh r2, [lr, #2] - mov r0, r0, lsl #0x18 - and ip, ip, #0xff00 - orr r0, r0, r2, lsl #8 - orr ip, r0, ip, lsr #8 - cmp ip, #0x2000000 - blo _0380394C - cmp ip, #0x2800000 - blo _038039F0 -_0380394C: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803A1C -_0380395C: - ldrh r2, [lr, #8] - ldrh r1, [lr, #0xa] - orr ip, r1, r2, lsl #16 - cmp ip, #0x2000000 - blo _03803978 - cmp ip, #0x2800000 - blo _03803988 -_03803978: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803A1C -_03803988: - ldrh r2, [lr, #2] - mov r3, r0, lsl #0x18 - ldrh r1, [lr, #4] - ldrh r0, [lr, #6] - orr r3, r2, r3, lsr #8 - orr r1, r0, r1, lsl #16 - b _038039F0 -_038039A4: - ldrh r2, [lr, #6] - ldrh r1, [lr, #8] - orr ip, r1, r2, lsl #16 - cmp ip, #0x2000000 - blo _038039C0 - cmp ip, #0x2800000 - blo _038039D0 -_038039C0: - mov r0, r4 - mov r1, #2 - bl SPIi_ReturnResult - b _03803A1C -_038039D0: - ldrh r2, [lr, #2] - mov r0, r0, lsl #0x18 - ldrh r1, [lr, #4] - orr r3, r2, r0, lsr #8 - b _038039F0 -_038039E4: - ldrh r2, [lr, #2] - mov r0, r0, lsl #0x18 - orr r3, r2, r0, lsr #8 -_038039F0: - str r1, [sp] - mov r1, r4 - mov r0, #1 - mov r2, #3 - str ip, [sp, #4] - bl SPIi_SetEntry - cmp r0, #0 - bne _03803A1C - mov r0, r4 - mov r1, #4 - bl SPIi_ReturnResult -_03803A1C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_03803A28: .word nvramw -_03803A2C: .word nvramw - arm_func_end NVRAM_AnalyzeCommand - - arm_func_start NVRAM_ExecuteProcess -NVRAM_ExecuteProcess: ; 0x03803A30 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl OS_DisableInterrupts - mov r5, r0 - mov r0, #1 - bl SPIi_CheckException - cmp r0, #0 - bne _03803A70 - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #4] - mov r1, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - b _03803CFC -_03803A70: - mov r0, #1 - bl SPIi_GetException - mov r0, r5 - bl OS_RestoreInterrupts - ldr r0, [r4, #4] - sub r0, r0, #0x20 - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _03803CC0 -_03803A94: ; jump table - b _03803ACC ; case 0 - b _03803AD4 ; case 1 - b _03803ADC ; case 2 - b _03803AE8 ; case 3 - b _03803B28 ; case 4 - b _03803B68 ; case 5 - b _03803BB0 ; case 6 - b _03803BF8 ; case 7 - b _03803C30 ; case 8 - b _03803C68 ; case 9 - b _03803C70 ; case 10 - b _03803C78 ; case 11 - b _03803CAC ; case 12 - b _03803CB8 ; case 13 -_03803ACC: - bl NVRAM_WriteEnable - b _03803CE0 -_03803AD4: - bl NVRAM_WriteDisable - b _03803CE0 -_03803ADC: - ldr r0, [r4, #0x10] - bl NVRAM_ReadStatusRegister - b _03803CE0 -_03803AE8: - bl NvramCheckReadyToRead - cmp r0, #0 - bne _03803B14 - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803B14: - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x10] - bl NVRAM_ReadDataBytes - b _03803CE0 -_03803B28: - bl NvramCheckReadyToRead - cmp r0, #0 - bne _03803B54 - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803B54: - ldr r0, [r4, #8] - ldr r1, [r4, #0xc] - ldr r2, [r4, #0x10] - bl NVRAM_ReadDataBytesAtHigherSpeed - b _03803CE0 -_03803B68: - bl NvramCheckReadyToWrite - cmp r0, #0 - bne _03803B94 - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803B94: - ldr r1, [r4, #0xc] - ldr r0, [r4, #8] - mov r1, r1, lsl #0x10 - ldr r2, [r4, #0x10] - mov r1, r1, lsr #0x10 - bl NVRAM_PageWrite - b _03803CE0 -_03803BB0: - bl NvramCheckReadyToWrite - cmp r0, #0 - bne _03803BDC - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803BDC: - ldr r1, [r4, #0xc] - ldr r0, [r4, #8] - mov r1, r1, lsl #0x10 - ldr r2, [r4, #0x10] - mov r1, r1, lsr #0x10 - bl NVRAM_PageProgram - b _03803CE0 -_03803BF8: - bl NvramCheckReadyToWrite - cmp r0, #0 - bne _03803C24 - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803C24: - ldr r0, [r4, #8] - bl NVRAM_PageErase - b _03803CE0 -_03803C30: - bl NvramCheckReadyToWrite - cmp r0, #0 - bne _03803C5C - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803C5C: - ldr r0, [r4, #8] - bl NVRAM_SectorErase - b _03803CE0 -_03803C68: - bl NVRAM_DeepPowerDown - b _03803CE0 -_03803C70: - bl NVRAM_ReleaseFromDeepPowerDown - b _03803CE0 -_03803C78: - bl NvramCheckReadyToWrite - cmp r0, #0 - bne _03803CA4 - ldr r0, [r4, #4] - mov r1, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException - b _03803CFC -_03803CA4: - bl NVRAM_ChipErase - b _03803CE0 -_03803CAC: - ldr r0, [r4, #0x10] - bl NVRAM_ReadSiliconId - b _03803CE0 -_03803CB8: - bl NVRAM_SoftwareReset - b _03803CE0 -_03803CC0: - mov r0, #1 - bl SPIi_ReleaseException - ldr r0, [r4, #4] - mov r1, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - b _03803CFC -_03803CE0: - ldr r0, [r4, #4] - mov r1, #0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SPIi_ReturnResult - mov r0, #1 - bl SPIi_ReleaseException -_03803CFC: - ldmia sp!, {r3, r4, r5, lr} - bx lr - arm_func_end NVRAM_ExecuteProcess - - arm_func_start NvramCheckReadyToRead -NvramCheckReadyToRead: ; 0x03803D04 - stmdb sp!, {r3, lr} - add r0, sp, #0 - bl NVRAM_ReadStatusRegister - ldrh r0, [sp] - tst r0, #1 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, lr} - bx lr - arm_func_end NvramCheckReadyToRead - - arm_func_start NvramCheckReadyToWrite -NvramCheckReadyToWrite: ; 0x03803D28 - stmdb sp!, {r3, lr} - add r0, sp, #0 - bl NVRAM_ReadStatusRegister - ldrh r0, [sp] - tst r0, #1 - movne r0, #0 - bne _03803D50 - tst r0, #2 - movne r0, #1 - moveq r0, #0 -_03803D50: - ldmia sp!, {r3, lr} - bx lr - arm_func_end NvramCheckReadyToWrite - - arm_func_start NVRAM_WriteEnable -NVRAM_WriteEnable: ; 0x03803D58 - ldr r2, _03803D90 ; =0x040001C0 -_03803D5C: - ldrh r0, [r2] - tst r0, #0x80 - bne _03803D5C - ldr r0, _03803D94 ; =0x040001C2 - mov r1, #0x8100 - strh r1, [r2] - mov r1, #6 - strh r1, [r0] - sub r1, r0, #2 -_03803D80: - ldrh r0, [r1] - tst r0, #0x80 - bne _03803D80 - bx lr - .align 2, 0 -_03803D90: .word 0x040001C0 -_03803D94: .word 0x040001C2 - arm_func_end NVRAM_WriteEnable - - arm_func_start SPI_SendWait_03803D98 -SPI_SendWait_03803D98: ; 0x03803D98 - ldr r1, _03803DB8 ; =0x040001C2 - and r0, r0, #0xff - strh r0, [r1] - sub r1, r1, #2 -_03803DA8: - ldrh r0, [r1] - tst r0, #0x80 - bne _03803DA8 - bx lr - .align 2, 0 -_03803DB8: .word 0x040001C2 - arm_func_end SPI_SendWait_03803D98 - - arm_func_start NVRAM_WriteDisable -NVRAM_WriteDisable: ; 0x03803DBC - ldr r2, _03803DF4 ; =0x040001C0 -_03803DC0: - ldrh r0, [r2] - tst r0, #0x80 - bne _03803DC0 - ldr r0, _03803DF8 ; =0x040001C2 - mov r1, #0x8100 - strh r1, [r2] - mov r1, #4 - strh r1, [r0] - sub r1, r0, #2 -_03803DE4: - ldrh r0, [r1] - tst r0, #0x80 - bne _03803DE4 - bx lr - .align 2, 0 -_03803DF4: .word 0x040001C0 -_03803DF8: .word 0x040001C2 - arm_func_end NVRAM_WriteDisable - - arm_func_start NVRAM_ReadStatusRegister -NVRAM_ReadStatusRegister: ; 0x03803DFC - ldr r3, _03803E64 ; =0x040001C0 -_03803E00: - ldrh r1, [r3] - tst r1, #0x80 - bne _03803E00 - ldr r1, _03803E68 ; =0x040001C2 - mov r2, #0x8900 - strh r2, [r3] - mov r2, #5 - strh r2, [r1] - sub r3, r1, #2 -_03803E24: - ldrh r1, [r3] - tst r1, #0x80 - bne _03803E24 - ldr r1, _03803E68 ; =0x040001C2 - mov r2, #0x8100 - strh r2, [r3] - mov r2, #0 - strh r2, [r1] - sub r2, r1, #2 -_03803E48: - ldrh r1, [r2] - tst r1, #0x80 - bne _03803E48 - ldr r1, _03803E68 ; =0x040001C2 - ldrh r1, [r1] - strb r1, [r0] - bx lr - .align 2, 0 -_03803E64: .word 0x040001C0 -_03803E68: .word 0x040001C2 - arm_func_end NVRAM_ReadStatusRegister - - arm_func_start NVRAM_ReadDataBytes -NVRAM_ReadDataBytes: ; 0x03803E6C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r2 - cmp r1, #1 - blo _03803F5C - and r2, r0, #0xff00 - mov r2, r2, lsr #8 - and r3, r0, #0xff0000 - strh r2, [sp, #2] - mov r3, r3, lsr #0x10 - and r0, r0, #0xff - ldr r2, _03803F68 ; =0x040001C0 - strh r3, [sp] - strh r0, [sp, #4] -_03803EA4: - ldrh r0, [r2] - tst r0, #0x80 - bne _03803EA4 - ldr r4, _03803F6C ; =0x040001C2 - mov r0, #0x8900 - strh r0, [r2] - mov r0, #3 - strh r0, [r4] - mov ip, #0 - add r2, sp, #0 - sub r3, r4, #2 -_03803ED0: - ldrh r0, [r3] - tst r0, #0x80 - bne _03803ED0 - mov r0, ip, lsl #1 - ldrh r0, [r2, r0] - add ip, ip, #1 - and r0, r0, #0xff - strh r0, [r4] - cmp ip, #3 - blt _03803ED0 - ldr r2, _03803F68 ; =0x040001C0 -_03803EFC: - ldrh r0, [r2] - tst r0, #0x80 - bne _03803EFC - mov r4, #0 - ldr r2, _03803F68 ; =0x040001C0 - sub r0, r1, #1 - mov r3, r4 - b _03803F38 -_03803F1C: - strh r3, [r2, #2] -_03803F20: - ldrh r1, [r2] - tst r1, #0x80 - bne _03803F20 - ldrh r1, [r2, #2] - strb r1, [r5, r4] - add r4, r4, #1 -_03803F38: - cmp r4, r0 - blo _03803F1C - ldr r0, _03803F68 ; =0x040001C0 - mov r1, #0x8100 - strh r1, [r0] - bl SPI_DummyWait_03803F70 - ldr r0, _03803F6C ; =0x040001C2 - ldrh r0, [r0] - strb r0, [r5, r4] -_03803F5C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_03803F68: .word 0x040001C0 -_03803F6C: .word 0x040001C2 - arm_func_end NVRAM_ReadDataBytes - - arm_func_start SPI_DummyWait_03803F70 -SPI_DummyWait_03803F70: ; 0x03803F70 - ldr r0, _03803F90 ; =0x040001C2 - mov r1, #0 - strh r1, [r0] - sub r1, r0, #2 -_03803F80: - ldrh r0, [r1] - tst r0, #0x80 - bne _03803F80 - bx lr - .align 2, 0 -_03803F90: .word 0x040001C2 - arm_func_end SPI_DummyWait_03803F70 - - arm_func_start NVRAM_ReadDataBytesAtHigherSpeed -NVRAM_ReadDataBytesAtHigherSpeed: ; 0x03803F94 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r2 - cmp r1, #1 - blo _038040A0 - and r2, r0, #0xff00 - mov r2, r2, lsr #8 - and r3, r0, #0xff0000 - strh r2, [sp, #2] - mov r3, r3, lsr #0x10 - and r0, r0, #0xff - ldr r2, _038040AC ; =0x040001C0 - strh r3, [sp] - strh r0, [sp, #4] -_03803FCC: - ldrh r0, [r2] - tst r0, #0x80 - bne _03803FCC - ldr r4, _038040B0 ; =0x040001C2 - mov r0, #0x8900 - strh r0, [r2] - mov r0, #0xb - strh r0, [r4] - mov ip, #0 - add r2, sp, #0 - sub r3, r4, #2 -_03803FF8: - ldrh r0, [r3] - tst r0, #0x80 - bne _03803FF8 - mov r0, ip, lsl #1 - ldrh r0, [r2, r0] - add ip, ip, #1 - and r0, r0, #0xff - strh r0, [r4] - cmp ip, #3 - blt _03803FF8 - ldr r2, _038040AC ; =0x040001C0 -_03804024: - ldrh r0, [r2] - tst r0, #0x80 - bne _03804024 - ldr r0, _038040B0 ; =0x040001C2 - mov r2, #0 - strh r2, [r0] - sub r2, r0, #2 -_03804040: - ldrh r0, [r2] - tst r0, #0x80 - bne _03804040 - mov r4, #0 - ldr r2, _038040AC ; =0x040001C0 - sub r0, r1, #1 - mov r3, r4 - b _0380407C -_03804060: - strh r3, [r2, #2] -_03804064: - ldrh r1, [r2] - tst r1, #0x80 - bne _03804064 - ldrh r1, [r2, #2] - strb r1, [r5, r4] - add r4, r4, #1 -_0380407C: - cmp r4, r0 - blo _03804060 - ldr r0, _038040AC ; =0x040001C0 - mov r1, #0x8100 - strh r1, [r0] - bl SPI_DummyWait_03803F70 - ldr r0, _038040B0 ; =0x040001C2 - ldrh r0, [r0] - strb r0, [r5, r4] -_038040A0: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_038040AC: .word 0x040001C0 -_038040B0: .word 0x040001C2 - arm_func_end NVRAM_ReadDataBytesAtHigherSpeed - - arm_func_start NVRAM_PageWrite -NVRAM_PageWrite: ; 0x038040B4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - cmp r1, #1 - blo _038041AC - add r3, r0, r1 - sub r3, r3, #1 - mov r3, r3, lsr #8 - cmp r3, r0, lsr #8 - and r3, r0, #0xff00 - mov r3, r3, lsr #8 - andhi r1, r0, #0xff - and ip, r0, #0xff0000 - strh r3, [sp, #2] - rsbhi r1, r1, #0x100 - mov ip, ip, lsr #0x10 - and r0, r0, #0xff - movhi r1, r1, lsl #0x10 - ldr r3, _038041B8 ; =0x040001C0 - strh ip, [sp] - strh r0, [sp, #4] - movhi r1, r1, lsr #0x10 -_03804108: - ldrh r0, [r3] - tst r0, #0x80 - bne _03804108 - ldr lr, _038041BC ; =0x040001C2 - mov r0, #0x8900 - strh r0, [r3] - mov r0, #0xa - strh r0, [lr] - mov r4, #0 - add r3, sp, #0 - sub ip, lr, #2 -_03804134: - ldrh r0, [ip] - tst r0, #0x80 - bne _03804134 - mov r0, r4, lsl #1 - ldrh r0, [r3, r0] - add r4, r4, #1 - and r0, r0, #0xff - strh r0, [lr] - cmp r4, #3 - blt _03804134 - sub r3, r1, #1 - ldr r1, _038041B8 ; =0x040001C0 - mov r4, #0 - b _03804184 -_0380416C: - ldrh r0, [r1] - tst r0, #0x80 - bne _0380416C - ldrb r0, [r2, r4] - add r4, r4, #1 - strh r0, [r1, #2] -_03804184: - cmp r4, r3 - blt _0380416C - ldr r1, _038041B8 ; =0x040001C0 -_03804190: - ldrh r0, [r1] - tst r0, #0x80 - bne _03804190 - mov r0, #0x8100 - strh r0, [r1] - ldrb r0, [r2, r4] - bl SPI_SendWait_03803D98 -_038041AC: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_038041B8: .word 0x040001C0 -_038041BC: .word 0x040001C2 - arm_func_end NVRAM_PageWrite - - arm_func_start NVRAM_PageProgram -NVRAM_PageProgram: ; 0x038041C0 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - cmp r1, #1 - blo _038042B8 - add r3, r0, r1 - sub r3, r3, #1 - mov r3, r3, lsr #8 - cmp r3, r0, lsr #8 - and r3, r0, #0xff00 - mov r3, r3, lsr #8 - andhi r1, r0, #0xff - and ip, r0, #0xff0000 - strh r3, [sp, #2] - rsbhi r1, r1, #0x100 - mov ip, ip, lsr #0x10 - and r0, r0, #0xff - movhi r1, r1, lsl #0x10 - ldr r3, _038042C4 ; =0x040001C0 - strh ip, [sp] - strh r0, [sp, #4] - movhi r1, r1, lsr #0x10 -_03804214: - ldrh r0, [r3] - tst r0, #0x80 - bne _03804214 - ldr lr, _038042C8 ; =0x040001C2 - mov r0, #0x8900 - strh r0, [r3] - mov r0, #2 - strh r0, [lr] - mov r4, #0 - add r3, sp, #0 - sub ip, lr, #2 -_03804240: - ldrh r0, [ip] - tst r0, #0x80 - bne _03804240 - mov r0, r4, lsl #1 - ldrh r0, [r3, r0] - add r4, r4, #1 - and r0, r0, #0xff - strh r0, [lr] - cmp r4, #3 - blt _03804240 - sub r3, r1, #1 - ldr r1, _038042C4 ; =0x040001C0 - mov r4, #0 - b _03804290 -_03804278: - ldrh r0, [r1] - tst r0, #0x80 - bne _03804278 - ldrb r0, [r2, r4] - add r4, r4, #1 - strh r0, [r1, #2] -_03804290: - cmp r4, r3 - blt _03804278 - ldr r1, _038042C4 ; =0x040001C0 -_0380429C: - ldrh r0, [r1] - tst r0, #0x80 - bne _0380429C - mov r0, #0x8100 - strh r0, [r1] - ldrb r0, [r2, r4] - bl SPI_SendWait_03803D98 -_038042B8: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_038042C4: .word 0x040001C0 -_038042C8: .word 0x040001C2 - arm_func_end NVRAM_PageProgram - - arm_func_start NVRAM_PageErase -NVRAM_PageErase: ; 0x038042CC - stmdb sp!, {r3, r4, r5, lr} - and r1, r0, #0xff0000 - mov r1, r1, lsr #0x10 - and r2, r0, #0xff00 - mov r2, r2, lsl #8 - ldr r3, _0380434C ; =0x040001C0 - mov r1, r1, lsl #0x10 - and r5, r0, #0xff - mov r0, r1, lsr #0x10 - mov r4, r2, lsr #0x10 -_038042F4: - ldrh r1, [r3] - tst r1, #0x80 - bne _038042F4 - ldr r1, _03804350 ; =0x040001C2 - mov r2, #0x8900 - strh r2, [r3] - mov r2, #0xdb - strh r2, [r1] - sub r2, r1, #2 -_03804318: - ldrh r1, [r2] - tst r1, #0x80 - bne _03804318 - bl SPI_SendWait_03803D98 - mov r0, r4 - bl SPI_SendWait_03803D98 - ldr r1, _0380434C ; =0x040001C0 - mov r2, #0x8100 - mov r0, r5 - strh r2, [r1] - bl SPI_SendWait_03803D98 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0380434C: .word 0x040001C0 -_03804350: .word 0x040001C2 - arm_func_end NVRAM_PageErase - - arm_func_start NVRAM_SectorErase -NVRAM_SectorErase: ; 0x03804354 - stmdb sp!, {r3, r4, r5, lr} - and r1, r0, #0xff0000 - mov r1, r1, lsr #0x10 - and r2, r0, #0xff00 - mov r2, r2, lsl #8 - ldr r3, _038043D4 ; =0x040001C0 - mov r1, r1, lsl #0x10 - and r5, r0, #0xff - mov r0, r1, lsr #0x10 - mov r4, r2, lsr #0x10 -_0380437C: - ldrh r1, [r3] - tst r1, #0x80 - bne _0380437C - ldr r1, _038043D8 ; =0x040001C2 - mov r2, #0x8900 - strh r2, [r3] - mov r2, #0xd8 - strh r2, [r1] - sub r2, r1, #2 -_038043A0: - ldrh r1, [r2] - tst r1, #0x80 - bne _038043A0 - bl SPI_SendWait_03803D98 - mov r0, r4 - bl SPI_SendWait_03803D98 - ldr r1, _038043D4 ; =0x040001C0 - mov r2, #0x8100 - mov r0, r5 - strh r2, [r1] - bl SPI_SendWait_03803D98 - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_038043D4: .word 0x040001C0 -_038043D8: .word 0x040001C2 - arm_func_end NVRAM_SectorErase - - arm_func_start NVRAM_DeepPowerDown -NVRAM_DeepPowerDown: ; 0x038043DC - ldr r2, _03804414 ; =0x040001C0 -_038043E0: - ldrh r0, [r2] - tst r0, #0x80 - bne _038043E0 - ldr r0, _03804418 ; =0x040001C2 - mov r1, #0x8100 - strh r1, [r2] - mov r1, #0xb9 - strh r1, [r0] - sub r1, r0, #2 -_03804404: - ldrh r0, [r1] - tst r0, #0x80 - bne _03804404 - bx lr - .align 2, 0 -_03804414: .word 0x040001C0 -_03804418: .word 0x040001C2 - arm_func_end NVRAM_DeepPowerDown - - arm_func_start NVRAM_ReleaseFromDeepPowerDown -NVRAM_ReleaseFromDeepPowerDown: ; 0x0380441C - ldr r2, _03804454 ; =0x040001C0 -_03804420: - ldrh r0, [r2] - tst r0, #0x80 - bne _03804420 - ldr r0, _03804458 ; =0x040001C2 - mov r1, #0x8100 - strh r1, [r2] - mov r1, #0xab - strh r1, [r0] - sub r1, r0, #2 -_03804444: - ldrh r0, [r1] - tst r0, #0x80 - bne _03804444 - bx lr - .align 2, 0 -_03804454: .word 0x040001C0 -_03804458: .word 0x040001C2 - arm_func_end NVRAM_ReleaseFromDeepPowerDown - - arm_func_start NVRAM_ChipErase -NVRAM_ChipErase: ; 0x0380445C - ldr r2, _03804494 ; =0x040001C0 -_03804460: - ldrh r0, [r2] - tst r0, #0x80 - bne _03804460 - ldr r0, _03804498 ; =0x040001C2 - mov r1, #0x8100 - strh r1, [r2] - mov r1, #0xc7 - strh r1, [r0] - sub r1, r0, #2 -_03804484: - ldrh r0, [r1] - tst r0, #0x80 - bne _03804484 - bx lr - .align 2, 0 -_03804494: .word 0x040001C0 -_03804498: .word 0x040001C2 - arm_func_end NVRAM_ChipErase - - arm_func_start NVRAM_ReadSiliconId -NVRAM_ReadSiliconId: ; 0x0380449C - stmdb sp!, {r3, lr} - ldr r3, _03804530 ; =0x040001C0 -_038044A4: - ldrh r1, [r3] - tst r1, #0x80 - bne _038044A4 - ldr r1, _03804534 ; =0x040001C2 - mov r2, #0x8900 - strh r2, [r3] - mov r2, #0x9f - strh r2, [r1] - sub r2, r1, #2 -_038044C8: - ldrh r1, [r2] - tst r1, #0x80 - bne _038044C8 - ldr r1, _03804534 ; =0x040001C2 - mov r2, #0 - strh r2, [r1] - sub lr, r1, #2 -_038044E4: - ldrh r1, [lr] - tst r1, #0x80 - bne _038044E4 - ldr ip, _03804534 ; =0x040001C2 - mov r2, #0x8100 - ldrh r3, [ip] - mov r1, #0 - strb r3, [r0] - strh r2, [lr] - strh r1, [ip] - sub r2, ip, #2 -_03804510: - ldrh r1, [r2] - tst r1, #0x80 - bne _03804510 - ldr r1, _03804534 ; =0x040001C2 - ldrh r1, [r1] - strb r1, [r0, #1] - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03804530: .word 0x040001C0 -_03804534: .word 0x040001C2 - arm_func_end NVRAM_ReadSiliconId - - arm_func_start NVRAM_SoftwareReset -NVRAM_SoftwareReset: ; 0x03804538 - ldr r2, _03804570 ; =0x040001C0 -_0380453C: - ldrh r0, [r2] - tst r0, #0x80 - bne _0380453C - ldr r0, _03804574 ; =0x040001C2 - mov r1, #0x8100 - strh r1, [r2] - mov r1, #0xff - strh r1, [r0] - sub r1, r0, #2 -_03804560: - ldrh r0, [r1] - tst r0, #0x80 - bne _03804560 - bx lr - .align 2, 0 -_03804570: .word 0x040001C0 -_03804574: .word 0x040001C2 - arm_func_end NVRAM_SoftwareReset - - arm_func_start RTC_Init -RTC_Init: ; 0x03804578 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - ldr r2, _038047B8 ; =rtcInitialized - mov r8, r0 - ldrh r0, [r2] - cmp r0, #0 - bne _038047AC - ldr r1, _038047BC ; =rtcWork - mov r3, #1 - add r0, sp, #8 - strh r3, [r2] - str r3, [r1, #0x1d4] - bl RTC_ReadStatus1 - add r0, sp, #0xa - bl RTC_ReadStatus2 - ldrh r0, [sp, #8] - mov r1, r0, lsl #0x18 - movs r1, r1, lsr #0x1f - bne _038045E0 - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1f - bne _038045E0 - ldrh r0, [sp, #0xa] - mov r0, r0, lsl #0x18 - movs r0, r0, lsr #0x1f - beq _038045F8 -_038045E0: - ldrh r1, [sp, #8] - add r0, sp, #8 - bic r1, r1, #1 - orr r1, r1, #1 - strh r1, [sp, #8] - bl RTC_WriteStatus1 -_038045F8: - ldrh r0, [sp, #8] - mov r1, r0, lsl #0x1b - movs r1, r1, lsr #0x1f - bne _03804614 - mov r0, r0, lsl #0x1a - movs r0, r0, lsr #0x1f - beq _03804634 -_03804614: - ldrh r1, [sp, #0xa] - add r0, sp, #0xa - bic r1, r1, #0xf - strh r1, [sp, #0xa] - ldrh r1, [sp, #0xa] - bic r1, r1, #0x40 - strh r1, [sp, #0xa] - bl RTC_WriteStatus2 -_03804634: - ldr r0, _038047C0 ; =0x027FFDE8 - bl RTC_ReadDateTime - ldr r0, _038047C0 ; =0x027FFDE8 - ldr r0, [r0] - mov r0, r0, lsl #0xa - mov r0, r0, lsr #0x1a - bl RtcBCD2HEX - ldr r1, _038047C0 ; =0x027FFDE8 - mov r5, r0 - ldr r0, [r1] - mov r0, r0, lsl #0x13 - mov r0, r0, lsr #0x1b - bl RtcBCD2HEX - ldr r1, _038047C0 ; =0x027FFDE8 - mov r6, r0 - ldr r0, [r1] - mov r0, r0, lsl #0x18 - mov r0, r0, lsr #0x18 - bl RtcBCD2HEX - sub r1, r6, #1 - cmp r1, #1 - add r7, r0, #0x7d0 - subls r7, r7, #1 - mov r0, r7 - mov r1, #0x190 - addls r6, r6, #0xc - bl _u32_div_f - mov r4, r0 - mov r0, r7 - mov r1, #0x64 - bl _u32_div_f - mov r1, #0xd - mul r1, r6, r1 - mov r6, r0 - add r0, r1, #8 - mov r1, #5 - bl _u32_div_f - add r1, r7, r7, lsr #2 - sub r1, r1, r6 - add r1, r4, r1 - add r0, r1, r0 - add r0, r5, r0 - mov r1, #7 - bl _u32_div_f - ldr r0, _038047C0 ; =0x027FFDE8 - ldr r2, [r0] - mov r3, r2, lsl #5 - mov r3, r3, lsr #0x1d - cmp r3, r1 - beq _03804710 - bic r2, r2, #0x7000000 - mov r1, r1, lsl #0x1d - orr r1, r2, r1, lsr #5 - str r1, [r0] - bl RTC_WriteDateTime -_03804710: - mov r0, #1 - bl RTC_SetHourFormat - ldr r0, _038047BC ; =rtcWork - mov r1, #0 - str r1, [r0, #0x1d4] - bl PXI_Init - ldr r1, _038047C4 ; =RtcPxiCallback - mov r0, #5 - bl PXI_SetFifoRecvCallback - ldr r0, _038047BC ; =rtcWork - ldr r1, _038047C8 ; =rtcWork + 0x20 - mov r2, #4 - bl OS_InitMessageQueue - mov r0, #0x100 - stmia sp, {r0, r8} - ldr r0, _038047CC ; =rtcWork + 0x30 - ldr r1, _038047D0 ; =RtcThread - ldr r3, _038047D4 ; =rtcWork + 0x1D4 - mov r2, #0 - bl OS_CreateThread - ldr r0, _038047CC ; =rtcWork + 0x30 - bl OS_WakeupThreadDirect - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r0, #0x40 - mov r1, #0 - bl EXIi_SetBitRcnt0L - mov r0, #0x100 - mov r1, r0 - bl EXIi_SetBitRcnt0L - bl OS_DisableInterrupts - mov r4, r0 - ldr r1, _038047D8 ; =RtcAlarmIntr - mov r0, #0x80 - bl OS_SetIrqFunction - mov r0, #0x80 - bl OS_EnableIrqMask - mov r0, r4 - bl OS_RestoreInterrupts -_038047AC: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, lr} - bx lr - .align 2, 0 -_038047B8: .word rtcInitialized -_038047BC: .word rtcWork -_038047C0: .word 0x027FFDE8 -_038047C4: .word RtcPxiCallback -_038047C8: .word rtcWork + 0x20 -_038047CC: .word rtcWork + 0x30 -_038047D0: .word RtcThread -_038047D4: .word rtcWork + 0x1D4 -_038047D8: .word RtcAlarmIntr - arm_func_end RTC_Init - - arm_func_start RtcPxiCallback -RtcPxiCallback: ; 0x038047DC - stmdb sp!, {r4, lr} - cmp r2, #0 - bne _03804908 - and r0, r1, #0x7f00 - mov r0, r0, lsl #8 - mov r4, r0, lsr #0x10 - cmp r4, #0x29 - addls pc, pc, r4, lsl #2 - b _038048FC -_03804800: ; jump table - b _038048A8 ; case 0 - b _038048A8 ; case 1 - b _038048FC ; case 2 - b _038048FC ; case 3 - b _038048FC ; case 4 - b _038048FC ; case 5 - b _038048FC ; case 6 - b _038048FC ; case 7 - b _038048FC ; case 8 - b _038048FC ; case 9 - b _038048FC ; case 10 - b _038048FC ; case 11 - b _038048FC ; case 12 - b _038048FC ; case 13 - b _038048FC ; case 14 - b _038048FC ; case 15 - b _038048A8 ; case 16 - b _038048A8 ; case 17 - b _038048A8 ; case 18 - b _038048A8 ; case 19 - b _038048A8 ; case 20 - b _038048A8 ; case 21 - b _038048A8 ; case 22 - b _038048A8 ; case 23 - b _038048A8 ; case 24 - b _038048A8 ; case 25 - b _038048FC ; case 26 - b _038048FC ; case 27 - b _038048FC ; case 28 - b _038048FC ; case 29 - b _038048FC ; case 30 - b _038048FC ; case 31 - b _038048FC ; case 32 - b _038048FC ; case 33 - b _038048FC ; case 34 - b _038048A8 ; case 35 - b _038048A8 ; case 36 - b _038048A8 ; case 37 - b _038048A8 ; case 38 - b _038048A8 ; case 39 - b _038048A8 ; case 40 - b _038048A8 ; case 41 -_038048A8: - ldr r0, _03804910 ; =rtcWork - ldr r1, [r0, #0x1d4] - cmp r1, #0 - beq _038048C8 - mov r0, r4 - mov r1, #3 - bl RtcReturnResult - b _03804908 -_038048C8: - ldr r3, _03804914 ; =rtcWork + 0x100 - mov r1, #1 - str r1, [r0, #0x1d4] - mov r1, #0 - mov r2, r1 - strh r4, [r3, #0xd8] - bl OS_SendMessage - cmp r0, #0 - bne _03804908 - mov r0, r4 - mov r1, #4 - bl RtcReturnResult - b _03804908 -_038048FC: - mov r0, r4 - mov r1, #1 - bl RtcReturnResult -_03804908: - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_03804910: .word rtcWork -_03804914: .word rtcWork + 0x100 - arm_func_end RtcPxiCallback - - arm_func_start RtcReturnResult -RtcReturnResult: ; 0x03804918 - stmdb sp!, {r4, r5, r6, lr} - mov r0, r0, lsl #8 - and r0, r0, #0x7f00 - orr r2, r0, #0x8000 - and r0, r1, #0xff - orr r6, r2, r0 - mov r5, #5 - mov r4, #0 -_03804938: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03804938 - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end RtcReturnResult - - arm_func_start RtcThread -RtcThread: ; 0x03804958 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r8, _03804DCC ; =0x027FFDE8 - mov r7, #0 - ldr sb, _03804DD0 ; =rtcWork - mov r6, r7 - mov r5, r7 - mov r4, r7 - mov sl, r7 - mov fp, r7 -_0380497C: - mov r0, sb - add r1, sp, #0 - mov r2, #1 - bl OS_ReceiveMessage - ldr r0, _03804DD4 ; =rtcWork + 0x100 - ldrh r0, [r0, #0xd8] - cmp r0, #0x29 - addls pc, pc, r0, lsl #2 - b _03804DB8 -_038049A0: ; jump table - b _03804A48 ; case 0 - b _03804A60 ; case 1 - b _03804DB8 ; case 2 - b _03804DB8 ; case 3 - b _03804DB8 ; case 4 - b _03804DB8 ; case 5 - b _03804DB8 ; case 6 - b _03804DB8 ; case 7 - b _03804DB8 ; case 8 - b _03804DB8 ; case 9 - b _03804DB8 ; case 10 - b _03804DB8 ; case 11 - b _03804DB8 ; case 12 - b _03804DB8 ; case 13 - b _03804DB8 ; case 14 - b _03804DB8 ; case 15 - b _03804A88 ; case 16 - b _03804AA8 ; case 17 - b _03804AC8 ; case 18 - b _03804AE8 ; case 19 - b _03804B24 ; case 20 - b _03804B60 ; case 21 - b _03804B9C ; case 22 - b _03804BBC ; case 23 - b _03804BDC ; case 24 - b _03804BFC ; case 25 - b _03804DB8 ; case 26 - b _03804DB8 ; case 27 - b _03804DB8 ; case 28 - b _03804DB8 ; case 29 - b _03804DB8 ; case 30 - b _03804DB8 ; case 31 - b _03804C1C ; case 32 - b _03804C3C ; case 33 - b _03804C64 ; case 34 - b _03804C84 ; case 35 - b _03804CC0 ; case 36 - b _03804CFC ; case 37 - b _03804D38 ; case 38 - b _03804D58 ; case 39 - b _03804D78 ; case 40 - b _03804D98 ; case 41 -_03804A48: - bl RTC_Reset - mov r0, #0 - mov r1, r0 - str r0, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804A60: - ldrh r0, [r8] - mov r0, r0, lsl #0x1e - mov r0, r0, lsr #0x1f - bl RTC_SetHourFormat - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #1 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804A88: - mov r0, r8 - bl RTC_ReadDateTime - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x10 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804AA8: - mov r0, r8 - bl RTC_ReadDate - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x11 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804AC8: - add r0, r8, #4 - bl RTC_ReadTime - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x12 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804AE8: - add r0, r8, #4 - bl RTC_ReadPulse - cmp r0, #0 - bne _03804B0C - mov r0, #0x13 - mov r1, #2 - str r7, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804B0C: - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x13 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804B24: - add r0, r8, #4 - bl RTC_ReadAlarm1 - cmp r0, #0 - bne _03804B48 - mov r0, #0x14 - mov r1, #2 - str r6, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804B48: - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x14 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804B60: - add r0, r8, #4 - bl RTC_ReadAlarm2 - cmp r0, #0 - bne _03804B84 - mov r0, #0x15 - mov r1, #2 - str r5, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804B84: - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x15 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804B9C: - mov r0, r8 - bl RTC_ReadStatus1 - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x16 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804BBC: - add r0, r8, #2 - bl RTC_ReadStatus2 - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x17 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804BDC: - add r0, r8, #4 - bl RTC_ReadAdjust - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x18 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804BFC: - add r0, r8, #4 - bl RTC_ReadFree - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x19 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804C1C: - mov r0, r8 - bl RTC_WriteDateTime - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x20 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804C3C: - add r0, r8, #4 - bl RTC_ReadTime - mov r0, r8 - bl RTC_WriteDateTime - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x21 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804C64: - add r0, r8, #4 - bl RTC_WriteTime - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x22 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804C84: - add r0, r8, #4 - bl RTC_WritePulse - cmp r0, #0 - bne _03804CA8 - mov r0, #0x23 - mov r1, #2 - str r4, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804CA8: - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x23 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804CC0: - add r0, r8, #4 - bl RTC_WriteAlarm1 - cmp r0, #0 - bne _03804CE4 - mov r0, #0x24 - mov r1, #2 - str sl, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804CE4: - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x24 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804CFC: - add r0, r8, #4 - bl RTC_WriteAlarm2 - cmp r0, #0 - bne _03804D20 - mov r0, #0x25 - mov r1, #2 - str fp, [sb, #0x1d4] - bl RtcReturnResult - b _0380497C -_03804D20: - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x25 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804D38: - mov r0, r8 - bl RTC_WriteStatus1 - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x26 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804D58: - add r0, r8, #2 - bl RTC_WriteStatus2 - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x27 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804D78: - add r0, r8, #4 - bl RTC_WriteAdjust - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x28 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804D98: - add r0, r8, #4 - bl RTC_WriteFree - mov r0, #0 - str r0, [sb, #0x1d4] - mov r0, #0x29 - mov r1, #0 - bl RtcReturnResult - b _0380497C -_03804DB8: - mov r1, #0 - str r1, [sb, #0x1d4] - mov r1, #1 - bl RtcReturnResult - b _0380497C - .align 2, 0 -_03804DCC: .word 0x027FFDE8 -_03804DD0: .word rtcWork -_03804DD4: .word rtcWork + 0x100 - arm_func_end RtcThread - - arm_func_start RtcAlarmIntr -RtcAlarmIntr: ; 0x03804DD8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - add r0, sp, #2 - bl RTC_ReadStatus1 - ldrh r0, [sp, #2] - mov r1, r0, lsl #0x1b - movs r1, r1, lsr #0x1f - bne _03804E04 - mov r0, r0, lsl #0x1a - movs r0, r0, lsr #0x1f - beq _03804E5C -_03804E04: - add r0, sp, #0 - bl RTC_ReadStatus2 - ldrh r0, [sp, #2] - mov r4, #0 - mov r0, r0, lsl #0x1b - movs r0, r0, lsr #0x1f - ldrneh r0, [sp] - orrne r4, r4, #1 - bicne r0, r0, #0xf - strneh r0, [sp] - ldrh r0, [sp, #2] - mov r0, r0, lsl #0x1a - movs r0, r0, lsr #0x1f - ldrneh r0, [sp] - orrne r4, r4, #2 - bicne r0, r0, #0x40 - strneh r0, [sp] - add r0, sp, #0 - bl RTC_WriteStatus2 - mov r1, r4 - mov r0, #0x30 - bl RtcReturnResult -_03804E5C: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RtcAlarmIntr - - arm_func_start RtcBCD2HEX -RtcBCD2HEX: ; 0x03804E68 - stmdb sp!, {r4, lr} - mov ip, #0 - mov r2, ip - b _03804E94 -_03804E78: - mov r1, r2, lsl #2 - mov r1, r0, lsr r1 - and r1, r1, #0xf - cmp r1, #0xa - movhs r0, #0 - bhs _03804ED0 - add r2, r2, #1 -_03804E94: - cmp r2, #8 - blt _03804E78 - mov r4, #0 - mov lr, #1 - mov r2, #0xa -_03804EA8: - mov r1, r4, lsl #2 - mov r1, r0, lsr r1 - and r3, r1, #0xf - mul r1, lr, r2 - mla ip, lr, r3, ip - add r4, r4, #1 - mov lr, r1 - cmp r4, #8 - blt _03804EA8 - mov r0, ip -_03804ED0: - ldmia sp!, {r4, lr} - bx lr - arm_func_end RtcBCD2HEX - - arm_func_start RTC_Reset -RTC_Reset: ; 0x03804ED8 - stmdb sp!, {r3, lr} - mov r0, #0x8000 - bl EXIi_SelectRcnt - ldrh r0, [sp] - bic r0, r0, #1 - orr r0, r0, #1 - strh r0, [sp] - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0 - bl RTCi_GpioSendCommand - add r0, sp, #0 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r3, lr} - bx lr - arm_func_end RTC_Reset - - arm_func_start RTC_SetHourFormat -RTC_SetHourFormat: ; 0x03804F1C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - and r4, r4, #1 - cmp r4, #1 - bne _03805034 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r1, r0, lsl #0x1e - mov r1, r1, lsr #0x1f - cmp r1, r4 - beq _03805034 - bic r1, r0, #2 - mov r0, r4, lsl #0x1f - orr r1, r1, r0, lsr #30 - mov r0, #0x8000 - strh r1, [sp] - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0 - bl RTCi_GpioSendCommand - add r0, sp, #0 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - mov r0, #0x86 - mov r1, #0x10 - add r2, sp, #4 - mov r3, #3 - bl RtcGpioTransfer - cmp r4, #0 - add r0, sp, #4 - bne _03804FC4 - bl RtcChangeAlarmFormat24to12 - b _03804FC8 -_03804FC4: - bl RtcChangeAlarmFormat12to24 -_03804FC8: - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x10 - bl RTCi_GpioSendCommand - add r0, sp, #4 - mov r1, #3 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - mov r0, #0x86 - mov r1, #0x50 - add r2, sp, #4 - mov r3, #3 - bl RtcGpioTransfer - cmp r4, #0 - add r0, sp, #4 - bne _03805010 - bl RtcChangeAlarmFormat24to12 - b _03805014 -_03805010: - bl RtcChangeAlarmFormat12to24 -_03805014: - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x50 - bl RTCi_GpioSendCommand - add r0, sp, #4 - mov r1, #3 - bl RTCi_GpioSendData - bl RTCi_GpioEnd -_03805034: - add sp, sp, #8 - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_SetHourFormat - - arm_func_start RTC_ReadDateTime -RTC_ReadDateTime: ; 0x03805040 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0x20 - mov r3, #7 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadDateTime - - arm_func_start RTC_WriteDateTime -RTC_WriteDateTime: ; 0x0380506C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x20 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #7 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_WriteDateTime - - arm_func_start RTC_ReadDate -RTC_ReadDate: ; 0x038050A4 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0x20 - mov r3, #4 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadDate - - arm_func_start RTC_ReadTime -RTC_ReadTime: ; 0x038050D0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0x60 - mov r3, #3 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadTime - - arm_func_start RTC_WriteTime -RTC_WriteTime: ; 0x038050FC - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x60 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #3 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_WriteTime - - arm_func_start RTC_ReadPulse -RTC_ReadPulse: ; 0x03805134 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r0, r0, lsl #0x1c - mov r0, r0, lsr #0x1c - and r0, r0, #0xb - cmp r0, #1 - movne r0, #0 - bne _03805190 - mov r2, r4 - mov r0, #0x86 - mov r1, #0x10 - mov r3, #1 - bl RtcGpioTransfer - mov r0, #1 -_03805190: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RTC_ReadPulse - - arm_func_start RTC_WritePulse -RTC_WritePulse: ; 0x0380519C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r0, r0, lsl #0x1c - mov r0, r0, lsr #0x1c - and r0, r0, #0xb - cmp r0, #1 - movne r0, #0 - bne _03805204 - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x10 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - mov r0, #1 -_03805204: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RTC_WritePulse - - arm_func_start RTC_ReadAlarm1 -RTC_ReadAlarm1: ; 0x03805210 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r0, r0, lsl #0x1c - mov r0, r0, lsr #0x1c - cmp r0, #4 - movne r0, #0 - bne _03805268 - mov r2, r4 - mov r0, #0x86 - mov r1, #0x10 - mov r3, #3 - bl RtcGpioTransfer - mov r0, #1 -_03805268: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RTC_ReadAlarm1 - - arm_func_start RTC_WriteAlarm1 -RTC_WriteAlarm1: ; 0x03805274 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r0, r0, lsl #0x1c - mov r0, r0, lsr #0x1c - cmp r0, #4 - movne r0, #0 - bne _038052D8 - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x10 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #3 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - mov r0, #1 -_038052D8: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RTC_WriteAlarm1 - - arm_func_start RTC_ReadAlarm2 -RTC_ReadAlarm2: ; 0x038052E4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1f - moveq r0, #0 - beq _03805338 - mov r2, r4 - mov r0, #0x86 - mov r1, #0x50 - mov r3, #3 - bl RtcGpioTransfer - mov r0, #1 -_03805338: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RTC_ReadAlarm2 - - arm_func_start RTC_WriteAlarm2 -RTC_WriteAlarm2: ; 0x03805344 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - add r2, sp, #0 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldrh r0, [sp] - mov r0, r0, lsl #0x19 - movs r0, r0, lsr #0x1f - moveq r0, #0 - beq _038053A4 - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x50 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #3 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - mov r0, #1 -_038053A4: - add sp, sp, #4 - ldmia sp!, {r3, r4, lr} - bx lr - arm_func_end RTC_WriteAlarm2 - - arm_func_start RTC_ReadStatus1 -RTC_ReadStatus1: ; 0x038053B0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0 - mov r3, #1 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadStatus1 - - arm_func_start RTC_WriteStatus1 -RTC_WriteStatus1: ; 0x038053DC - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_WriteStatus1 - - arm_func_start RTC_ReadStatus2 -RTC_ReadStatus2: ; 0x03805414 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0x40 - mov r3, #1 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadStatus2 - - arm_func_start RTC_WriteStatus2 -RTC_WriteStatus2: ; 0x03805440 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x40 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_WriteStatus2 - - arm_func_start RTC_ReadAdjust -RTC_ReadAdjust: ; 0x03805478 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0x30 - mov r3, #1 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadAdjust - - arm_func_start RTC_WriteAdjust -RTC_WriteAdjust: ; 0x038054A4 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x30 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_WriteAdjust - - arm_func_start RTC_ReadFree -RTC_ReadFree: ; 0x038054DC - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - mov r2, r4 - mov r0, #0x86 - mov r1, #0x70 - mov r3, #1 - bl RtcGpioTransfer - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_ReadFree - - arm_func_start RTC_WriteFree -RTC_WriteFree: ; 0x03805508 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x8000 - bl EXIi_SelectRcnt - bl RTCi_GpioStart - mov r0, #6 - mov r1, #0x70 - bl RTCi_GpioSendCommand - mov r0, r4 - mov r1, #1 - bl RTCi_GpioSendData - bl RTCi_GpioEnd - ldmia sp!, {r4, lr} - bx lr - arm_func_end RTC_WriteFree - - arm_func_start RtcChangeAlarmFormat24to12 -RtcChangeAlarmFormat24to12: ; 0x03805540 - ldr r1, [r0] - mov r2, r1, lsl #0x12 - mov r2, r2, lsr #0x1a - cmp r2, #0x23 - addls pc, pc, r2, lsl #2 - b _0380563C -_03805558: ; jump table - b _038055E8 ; case 0 - b _038055E8 ; case 1 - b _038055E8 ; case 2 - b _038055E8 ; case 3 - b _038055E8 ; case 4 - b _038055E8 ; case 5 - b _038055E8 ; case 6 - b _038055E8 ; case 7 - b _038055E8 ; case 8 - b _038055E8 ; case 9 - b _0380563C ; case 10 - b _0380563C ; case 11 - b _0380563C ; case 12 - b _0380563C ; case 13 - b _0380563C ; case 14 - b _0380563C ; case 15 - b _038055E8 ; case 16 - b _038055E8 ; case 17 - b _038055F4 ; case 18 - b _038055F4 ; case 19 - b _038055F4 ; case 20 - b _038055F4 ; case 21 - b _038055F4 ; case 22 - b _038055F4 ; case 23 - b _038055F4 ; case 24 - b _038055F4 ; case 25 - b _0380563C ; case 26 - b _0380563C ; case 27 - b _0380563C ; case 28 - b _0380563C ; case 29 - b _0380563C ; case 30 - b _0380563C ; case 31 - b _03805618 ; case 32 - b _03805618 ; case 33 - b _038055F4 ; case 34 - b _038055F4 ; case 35 -_038055E8: - bic r1, r1, #0x4000 - str r1, [r0] - bx lr -_038055F4: - orr r2, r1, #0x4000 - mov r1, r2, lsl #0x12 - mov r1, r1, lsr #0x1a - sub r1, r1, #0x12 - bic r2, r2, #0x3f00 - mov r1, r1, lsl #0x1a - orr r1, r2, r1, lsr #18 - str r1, [r0] - bx lr -_03805618: - orr r2, r1, #0x4000 - mov r1, r2, lsl #0x12 - mov r1, r1, lsr #0x1a - sub r1, r1, #0x18 - bic r2, r2, #0x3f00 - mov r1, r1, lsl #0x1a - orr r1, r2, r1, lsr #18 - str r1, [r0] - bx lr -_0380563C: - ldr r1, [r0] - bic r1, r1, #0x4000 - bic r1, r1, #0x3f00 - str r1, [r0] - bx lr - arm_func_end RtcChangeAlarmFormat24to12 - - arm_func_start RtcChangeAlarmFormat12to24 -RtcChangeAlarmFormat12to24: ; 0x03805650 - ldr r2, [r0] - mov r1, r2, lsl #0x12 - mov r3, r1, lsr #0x1a - cmp r3, #0x23 - addls pc, pc, r3, lsl #2 - b _0380574C -_03805668: ; jump table - b _038056F8 ; case 0 - b _038056F8 ; case 1 - b _038056F8 ; case 2 - b _038056F8 ; case 3 - b _038056F8 ; case 4 - b _038056F8 ; case 5 - b _038056F8 ; case 6 - b _038056F8 ; case 7 - b _0380571C ; case 8 - b _0380571C ; case 9 - b _0380574C ; case 10 - b _0380574C ; case 11 - b _0380574C ; case 12 - b _0380574C ; case 13 - b _0380574C ; case 14 - b _0380574C ; case 15 - b _038056F8 ; case 16 - b _038056F8 ; case 17 - b _03805740 ; case 18 - b _03805740 ; case 19 - b _03805740 ; case 20 - b _03805740 ; case 21 - b _03805740 ; case 22 - b _03805740 ; case 23 - b _03805740 ; case 24 - b _03805740 ; case 25 - b _0380574C ; case 26 - b _0380574C ; case 27 - b _0380574C ; case 28 - b _0380574C ; case 29 - b _0380574C ; case 30 - b _0380574C ; case 31 - b _03805740 ; case 32 - b _03805740 ; case 33 - b _03805740 ; case 34 - b _03805740 ; case 35 -_038056F8: - mov r1, r2, lsl #0x11 - movs r1, r1, lsr #0x1f - bxeq lr - add r1, r3, #0x12 - bic r2, r2, #0x3f00 - mov r1, r1, lsl #0x1a - orr r1, r2, r1, lsr #18 - str r1, [r0] - bx lr -_0380571C: - mov r1, r2, lsl #0x11 - movs r1, r1, lsr #0x1f - bxeq lr - add r1, r3, #0x18 - bic r2, r2, #0x3f00 - mov r1, r1, lsl #0x1a - orr r1, r2, r1, lsr #18 - str r1, [r0] - bx lr -_03805740: - orr r1, r2, #0x4000 - str r1, [r0] - bx lr -_0380574C: - ldr r1, [r0] - bic r1, r1, #0x4000 - bic r1, r1, #0x3f00 - str r1, [r0] - bx lr - arm_func_end RtcChangeAlarmFormat12to24 - - arm_func_start RtcGpioTransfer -RtcGpioTransfer: ; 0x03805760 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl RTCi_GpioStart - mov r0, r7 - mov r1, r6 - bl RTCi_GpioSendCommand - cmp r7, #6 - beq _038057A4 - cmp r7, #0x86 - bne _038057B0 - mov r0, r5 - mov r1, r4 - bl RTCi_GpioReceiveData - b _038057B0 -_038057A4: - mov r0, r5 - mov r1, r4 - bl RTCi_GpioSendData -_038057B0: - bl RTCi_GpioEnd - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - arm_func_end RtcGpioTransfer - - arm_func_start RTCi_GpioStart -RTCi_GpioStart: ; 0x038057BC - mov ip, #0x4000000 - add ip, ip, #0x138 - ldrh r0, [ip] - bic r0, r0, #0x77 - orr r0, r0, #0x72 - strh r0, [ip] - mov r3, #2 -_038057D8: - subs r3, r3, #1 - bne _038057D8 - bic r0, r0, #4 - orr r0, r0, #4 - strh r0, [ip] - mov r3, #2 -_038057F0: - subs r3, r3, #1 - bne _038057F0 - bx lr - arm_func_end RTCi_GpioStart - - arm_func_start RTCi_GpioEnd -RTCi_GpioEnd: ; 0x038057FC - mov ip, #0x4000000 - add ip, ip, #0x138 - mov r3, #2 -_03805808: - subs r3, r3, #1 - bne _03805808 - ldrh r0, [ip] - bic r0, r0, #4 - orr r0, r0, #0 - strh r0, [ip] - mov r3, #2 -_03805824: - subs r3, r3, #1 - bne _03805824 - bx lr - arm_func_end RTCi_GpioEnd - - arm_func_start RTCi_GpioSendCommand -RTCi_GpioSendCommand: ; 0x03805830 - mov ip, #0x4000000 - add ip, ip, #0x138 - orr r1, r0, r1 - ldrh r0, [ip] - bic r0, r0, #0x77 - orr r0, r0, #0x74 - mov r2, #0 -_0380584C: - bic r0, r0, #3 - orr r0, r0, #0 - mov r3, #1 - tst r3, r1, lsr r2 - movne r3, #1 - moveq r3, #0 - orr r0, r0, r3 - strh r0, [ip] - mov r3, #9 -_03805870: - subs r3, r3, #1 - bne _03805870 - bic r0, r0, #2 - orr r0, r0, #2 - strh r0, [ip] - mov r3, #9 -_03805888: - subs r3, r3, #1 - bne _03805888 - add r2, r2, #1 - cmp r2, #8 - bne _0380584C - bx lr - arm_func_end RTCi_GpioSendCommand - - arm_func_start RTCi_GpioSendData -RTCi_GpioSendData: ; 0x038058A0 - mov ip, #0x4000000 - add ip, ip, #0x138 -_038058A8: - stmdb sp!, {r0, r1} - tst r0, #1 - ldreqh r1, [r0] - ldrneh r1, [r0, #-1] - movne r1, r1, lsr #8 - ldrh r0, [ip] - bic r0, r0, #0x77 - orr r0, r0, #0x74 - mov r2, #0 -_038058CC: - bic r0, r0, #3 - orr r0, r0, #0 - mov r3, #1 - tst r3, r1, lsr r2 - movne r3, #1 - moveq r3, #0 - orr r0, r0, r3 - strh r0, [ip] - mov r3, #9 -_038058F0: - subs r3, r3, #1 - bne _038058F0 - bic r0, r0, #2 - orr r0, r0, #2 - strh r0, [ip] - mov r3, #9 -_03805908: - subs r3, r3, #1 - bne _03805908 - add r2, r2, #1 - cmp r2, #8 - bne _038058CC - ldmia sp!, {r0, r1} - add r0, r0, #1 - subs r1, r1, #1 - bne _038058A8 - bx lr - arm_func_end RTCi_GpioSendData - - arm_func_start RTCi_GpioReceiveData -RTCi_GpioReceiveData: ; 0x03805930 - mov ip, #0x4000000 - add ip, ip, #0x138 -_03805938: - stmdb sp!, {r0, r1} - ldrh r0, [ip] - bic r0, r0, #0x77 - orr r0, r0, #0x64 - mov r2, #0 - mov r1, #0 -_03805950: - bic r0, r0, #3 - orr r0, r0, #0 - strh r0, [ip] - mov r3, #9 -_03805960: - subs r3, r3, #1 - bne _03805960 - ldrh r0, [ip] - and r3, r0, #1 - cmp r3, #1 - moveq r3, #0x80 - movne r3, #0 - orr r2, r3, r2, lsr #1 - bic r0, r0, #2 - orr r0, r0, #2 - strh r0, [ip] - mov r3, #9 -_03805990: - subs r3, r3, #1 - bne _03805990 - add r1, r1, #1 - cmp r1, #8 - bne _03805950 - ldmia sp!, {r0, r1} - tst r0, #1 - beq _038059C8 - ldrh r3, [r0, #-1] - bic r3, r3, #0xff00 - mov r2, r2, lsl #8 - orr r3, r2, r3 - strh r3, [r0, #-1] - b _038059D8 -_038059C8: - ldrh r3, [r0] - bic r3, r3, #0xff - orr r3, r3, r2 - strh r3, [r0] -_038059D8: - add r0, r0, #1 - subs r1, r1, #1 - bne _03805938 - bx lr - arm_func_end RTCi_GpioReceiveData - - ; wvr.s(.wram) - - arm_func_start WVR_Init -WVR_Init: ; 0x038059E8 - stmdb sp!, {r3, lr} - ldr r3, _03805A2C ; =wvrStatus - mov ip, #1 - str r0, [r3, #8] - ldr r0, _03805A30 ; =wvrThread - mov r1, #0 - mov r2, #0xa4 - strb ip, [r3] - bl MI_CpuFill8 - ldr r1, _03805A34 ; =WvrPxiReceiveCallback - mov r0, #0xf - bl PXI_SetFifoRecvCallback - ldr r1, _03805A38 ; =WvrPxiWmSubstituteCallback - mov r0, #0xa - bl PXI_SetFifoRecvCallback - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03805A2C: .word wvrStatus -_03805A30: .word wvrThread -_03805A34: .word WvrPxiReceiveCallback -_03805A38: .word WvrPxiWmSubstituteCallback - arm_func_end WVR_Init - - arm_func_start WVR_Shutdown -WVR_Shutdown: ; 0x03805A3C - stmdb sp!, {r3, lr} - ldr r2, _03805A68 ; =0x04000304 - mov r0, #1 - ldrh r1, [r2] - bic r1, r1, #2 - strh r1, [r2] - bl PM_SetLEDPattern - mov r0, #1 - bl PMi_SetLED - ldmia sp!, {r3, lr} - bx lr - .align 2, 0 -_03805A68: .word 0x04000304 - arm_func_end WVR_Shutdown - - arm_func_start WvrBegin -WvrBegin: ; 0x03805A6C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x50 - str r0, [sp, #0x44] - ldr r0, _03805B04 ; =wvrWlWork - mov sb, #4 - mov r7, #8 - mov r4, #3 - ldr r1, _03805B08 ; =wvrWlWork - ldr r6, _03805B0C ; =wvrWlStaElement - mov sl, #0x600 - mov r8, #0 - mov r5, #0x1c0 - mov lr, #0x40 - mov ip, #5 - mov r3, #7 - mov r2, #9 - str r0, [sp, #0x1c] - str r1, [sp, #0x20] - add r0, sp, #0x1c - add r1, sp, #0 - str sl, [sp, #0x24] - str sb, [sp, #0x28] - str r8, [sp, #0x3c] - str r7, [sp, #0x40] - str r6, [sp, #0x48] - str r5, [sp, #0x4c] - str r4, [sp] - str lr, [sp, #0x38] - str r4, [sp, #8] - str sb, [sp, #0x18] - str ip, [sp, #0x10] - str r3, [sp, #4] - str r7, [sp, #0x14] - str r2, [sp, #0xc] - bl __VENEER_WMSP_Init - add sp, sp, #0x50 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bx lr - .align 2, 0 -_03805B04: .word wvrWlWork -_03805B08: .word wvrWlWork -_03805B0C: .word wvrWlStaElement - arm_func_end WvrBegin - - arm_func_start __VENEER_WMSP_Init -__VENEER_WMSP_Init: ; 0x03805B10 - ldr pc, _03805B14 ; =WMSP_Init - .align 2, 0 -_03805B14: .word WMSP_Init - arm_func_end __VENEER_WMSP_Init - - arm_func_start WvrPxiWmSubstituteCallback -WvrPxiWmSubstituteCallback: ; 0x03805B18 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r1 - ldrh r4, [r6] - beq _03805B60 - mov r0, #0 - mov r2, #0x100 - bl MIi_CpuClear32 - strh r4, [r6] - mov r0, #4 - strh r0, [r6, #2] - mov r5, #0xa - mov r4, #0 -_03805B48: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03805B48 -_03805B60: - ldmia sp!, {r4, r5, r6, lr} - bx lr - arm_func_end WvrPxiWmSubstituteCallback - - arm_func_start WvrCheckThreadRunning -WvrCheckThreadRunning: ; 0x03805B68 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r1, _03805BC4 ; =OSi_ThreadInfo - ldr r1, [r1, #8] - b _03805BB4 -_03805B80: - cmp r1, r0 - bne _03805BB0 - ldr r0, [r0, #0x48] - cmp r0, #0 - cmpne r0, #1 - beq _03805BA0 - cmp r0, #2 - b _03805BA8 -_03805BA0: - mov r0, #1 - bx lr -_03805BA8: - mov r0, #0 - bx lr -_03805BB0: - ldr r1, [r1, #0x4c] -_03805BB4: - cmp r1, #0 - bne _03805B80 - mov r0, #0 - bx lr - .align 2, 0 -_03805BC4: .word OSi_ThreadInfo - arm_func_end WvrCheckThreadRunning - - arm_func_start WvrPxiReceiveCallback -WvrPxiReceiveCallback: ; 0x03805BC8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r4, r1 - cmp r4, #0x10000 - beq _03805BE8 - cmp r4, #0x20000 - beq _03805C80 - b _03805D24 -_03805BE8: - bl OS_DisableInterrupts - mov r5, r0 - ldr r0, _03805D54 ; =wvrThread - bl WvrCheckThreadRunning - cmp r0, #0 - beq _03805C10 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - b _03805C70 -_03805C10: - ldr r1, _03805D58 ; =wvrStatus - ldrb r0, [r1] - cmp r0, #1 - beq _03805C30 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - b _03805C70 -_03805C30: - mov r2, #2 - mov r0, r5 - strb r2, [r1] - bl OS_RestoreInterrupts - mov r2, #0x400 - ldr r0, _03805D54 ; =wvrThread - ldr r1, _03805D5C ; =WvrStartUpThread - ldr r3, _03805D60 ; =wvrWlStack - str r2, [sp] - mov r5, #0xa - mov r2, #0 - str r5, [sp, #4] - bl OS_CreateThread - ldr r0, _03805D54 ; =wvrThread - bl OS_WakeupThreadDirect - mov r0, #1 -_03805C70: - cmp r0, #0 - bne _03805D48 - orr r6, r4, #5 - b _03805D28 -_03805C80: - bl OS_DisableInterrupts - mov r5, r0 - ldr r0, _03805D54 ; =wvrThread - bl WvrCheckThreadRunning - cmp r0, #0 - beq _03805CA8 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - b _03805D14 -_03805CA8: - ldr r1, _03805D58 ; =wvrStatus - ldrb r0, [r1] - cmp r0, #3 - beq _03805CC8 - mov r0, r5 - bl OS_RestoreInterrupts - mov r0, #0 - b _03805D14 -_03805CC8: - mov r2, #4 - mov r0, r5 - strb r2, [r1] - bl OS_RestoreInterrupts - ldr r1, _03805D64 ; =WvrPxiWmSubstituteCallback - mov r0, #0xa - bl PXI_SetFifoRecvCallback - mov r2, #0x400 - ldr r0, _03805D54 ; =wvrThread - ldr r1, _03805D68 ; =WvrTerminateThread - ldr r3, _03805D60 ; =wvrWlStack - str r2, [sp] - mov r5, #2 - mov r2, #0 - str r5, [sp, #4] - bl OS_CreateThread - ldr r0, _03805D54 ; =wvrThread - bl OS_WakeupThreadDirect - mov r0, #1 -_03805D14: - cmp r0, #0 - bne _03805D48 - orr r6, r4, #5 - b _03805D28 -_03805D24: - orr r6, r4, #7 -_03805D28: - mov r5, #0xf - mov r4, #0 -_03805D30: - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03805D30 -_03805D48: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_03805D54: .word wvrThread -_03805D58: .word wvrStatus -_03805D5C: .word WvrStartUpThread -_03805D60: .word wvrWlStack -_03805D64: .word WvrPxiWmSubstituteCallback -_03805D68: .word WvrTerminateThread - arm_func_end WvrPxiReceiveCallback - - arm_func_start WvrStartUpThread -WvrStartUpThread: ; 0x03805D6C - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _03805DD8 ; =wvrStatus - ldr r0, [r1, #4] - cmp r0, #0 - beq _03805D8C - ldr r2, [r1, #0xc] - mov r1, #0x6000000 - bl MIi_CpuCopyFast -_03805D8C: - ldr r0, _03805DD8 ; =wvrStatus - ldr r0, [r0, #8] - bl WvrBegin - mov r6, #0xf - mov r5, #0x10000 - mov r4, #0 -_03805DA4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03805DA4 - bl OS_DisableInterrupts - ldr r0, _03805DD8 ; =wvrStatus - mov r1, #3 - strb r1, [r0] - bl OS_ExitThread - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_03805DD8: .word wvrStatus - arm_func_end WvrStartUpThread - - arm_func_start WvrTerminateThread -WvrTerminateThread: ; 0x03805DDC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _03805FDC ; =wmspW + 0x1000 - ldr sl, _03805FE0 ; =wmspW - ldr r0, [r0, #0x54c] - cmp r0, #0 - addne r0, sl, #0x1000 - ldrne r0, [r0, #0x54c] - ldrne r0, [r0] - ldrneh r0, [r0] - cmpne r0, #0 - beq _03805E10 - bl __VENEER_WMSP_CancelVAlarm - bl __VENEER_WMSP_CancelAllAlarms -_03805E10: - mov r6, #0 - add sb, sp, #0 - add r4, sl, #0x1000 - mov fp, #0x100 - mov r5, #4 - mov r8, r6 -_03805E28: - mov r1, sb - mov r2, r8 - add r0, sl, #0x88 - bl OS_ReceiveMessage - cmp r0, #0 - beq _03805E90 - ldr r0, [r4, #0x54c] - cmp r0, #0 - beq _03805E28 - bl WMSP_GetBuffer4Callback2Wm9 - mov r7, r0 - mov r0, r6 - mov r1, r7 - mov r2, fp - bl MIi_CpuClear32 - ldr r1, [sp] - mov r0, r7 - ldrh r1, [r1] - strh r1, [r7] - strh r5, [r7, #2] - bl WMSP_ReturnResult2Wm9 - ldr r1, [sp] - ldrh r0, [r1] - orr r0, r0, #0x8000 - strh r0, [r1] - b _03805E28 -_03805E90: - bl __VENEER_WMSP_GetRequestThread - bl WvrCheckThreadRunning - cmp r0, #0 - beq _03805EB8 - add r0, sl, #0x88 - mov r1, #0 - mov r2, #1 - bl OS_SendMessage - bl __VENEER_WMSP_GetRequestThread - bl OS_JoinThread -_03805EB8: - add r1, sp, #0 - add r0, sl, #0x88 - mov r2, #0 - bl OS_ReceiveMessage - mov r5, r0 - add r1, sp, #0 - add r0, sl, #0x58 - mov r2, #0 - bl OS_ReceiveMessage - mov r4, r0 - add r1, sp, #0 - mov r0, sl - mov r2, #0 - bl OS_ReceiveMessage - orr r1, r5, r4 - orrs r0, r0, r1 - beq _03805F00 - bl OS_Terminate -_03805F00: - bl __VENEER_WL_Terminate - add r5, sp, #0 - mov r4, #0 -_03805F0C: - mov r1, r5 - mov r2, r4 - add r0, sl, #0x28 - bl OS_ReceiveMessage - cmp r0, #0 - bne _03805F0C - bl __VENEER_WMSP_GetIndicateThread - bl WvrCheckThreadRunning - cmp r0, #0 - beq _03805F4C - add r0, sl, #0x28 - mov r1, #0 - mov r2, #1 - bl OS_SendMessage - bl __VENEER_WMSP_GetIndicateThread - bl OS_JoinThread -_03805F4C: - mov r0, #1 - bl PM_SetLEDPattern - mov r0, #1 - bl PMi_SetLED - add r0, sl, #0x1000 - ldr r0, [r0, #0x54c] - cmp r0, #0 - ldrne r1, [r0] - ldrneh r0, [r1] - cmpne r0, #0 - movne r0, #0 - strneh r0, [r1] - ldr r0, _03805FE4 ; =wvrStatus - ldr r1, [r0, #4] - cmp r1, #0 - beq _03805F9C - ldr r2, [r0, #0xc] - mov r0, #0 - mov r1, #0x6000000 - bl MIi_CpuClearFast -_03805F9C: - mov r6, #0xf - mov r5, #0x20000 - mov r4, #0 -_03805FA8: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _03805FA8 - bl OS_DisableInterrupts - ldr r0, _03805FE4 ; =wvrStatus - mov r1, #1 - strb r1, [r0] - bl OS_ExitThread - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bx lr - .align 2, 0 -_03805FDC: .word wmspW + 0x1000 -_03805FE0: .word wmspW -_03805FE4: .word wvrStatus - arm_func_end WvrTerminateThread - - ; veneers into wvram - - arm_func_start __VENEER_WMSP_CancelVAlarm -__VENEER_WMSP_CancelVAlarm: ; 0x03805FE8 - ldr pc, _03805FEC ; =WMSP_CancelVAlarm - .align 2, 0 -_03805FEC: .word WMSP_CancelVAlarm - arm_func_end __VENEER_WMSP_CancelVAlarm - - arm_func_start __VENEER_WMSP_CancelAllAlarms -__VENEER_WMSP_CancelAllAlarms: ; 0x03805FF0 - ldr pc, _03805FF4 ; =WMSP_CancelAllAlarms - .align 2, 0 -_03805FF4: .word WMSP_CancelAllAlarms - arm_func_end __VENEER_WMSP_CancelAllAlarms - - arm_func_start __VENEER_WMSP_GetRequestThread -__VENEER_WMSP_GetRequestThread: ; 0x03805FF8 - ldr pc, _03805FFC ; =WMSP_GetRequestThread - .align 2, 0 -_03805FFC: .word WMSP_GetRequestThread - arm_func_end __VENEER_WMSP_GetRequestThread - - arm_func_start __VENEER_WL_Terminate -__VENEER_WL_Terminate: ; 0x03806000 - ldr pc, _03806004 ; =WL_Terminate - .align 2, 0 -_03806004: .word WL_Terminate - arm_func_end __VENEER_WL_Terminate - - arm_func_start __VENEER_WMSP_GetIndicateThread -__VENEER_WMSP_GetIndicateThread: ; 0x03806008 - ldr pc, _0380600C ; =WMSP_GetIndicateThread - .align 2, 0 -_0380600C: .word WMSP_GetIndicateThread - arm_func_end __VENEER_WMSP_GetIndicateThread - - ; math - - arm_func_start MATH_CountPopulation -MATH_CountPopulation: ; 0x03806010 - ldr r1, _03806048 ; =0x55555555 - ldr r2, _0380604C ; =0x33333333 - and r1, r1, r0, lsr #1 - sub r1, r0, r1 - ldr r0, _03806050 ; =0x0F0F0F0F - and r3, r1, r2 - and r1, r2, r1, lsr #2 - add r1, r3, r1 - add r1, r1, r1, lsr #4 - and r0, r1, r0 - add r0, r0, r0, lsr #8 - add r0, r0, r0, lsr #16 - and r0, r0, #0xff - bx lr - .align 2, 0 -_03806048: .word 0x55555555 -_0380604C: .word 0x33333333 -_03806050: .word 0x0F0F0F0F - arm_func_end MATH_CountPopulation - - ; msl - - .public _ll_mod -_ll_mod: ; 0x03806054 - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - mov r4, r1 - orr r4, r4, #1 - b _03806074 - - .public _ll_div - .public _ll_sdiv -_ll_div: ; 0x03806064 -_ll_sdiv: ; 0x03806064 - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - eor r4, r1, r3 - mov r4, r4, asr #1 - mov r4, r4, lsl #1 -_03806074: - orrs r5, r3, r2 - bne _03806084 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_03806084: - mov r5, r0, lsr #0x1f - add r5, r5, r1 - mov r6, r2, lsr #0x1f - add r6, r6, r3 - orrs r6, r5, r6 - bne _038060B8 - mov r1, r2 - bl _s32_div_f - ands r4, r4, #1 - movne r0, r1 - mov r1, r0, asr #0x1f - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_038060B8: - cmp r1, #0 - bge _038060C8 - rsbs r0, r0, #0 - rsc r1, r1, #0 -_038060C8: - cmp r3, #0 - bge _038060D8 - rsbs r2, r2, #0 - rsc r3, r3, #0 -_038060D8: - orrs r5, r1, r0 - beq _038061FC - mov r5, #0 - mov r6, #1 - cmp r3, #0 - bmi _03806104 -_038060F0: - add r5, r5, #1 - adds r2, r2, r2 - adcs r3, r3, r3 - bpl _038060F0 - add r6, r6, r5 -_03806104: - cmp r1, #0 - blt _03806124 -_0380610C: - cmp r6, #1 - beq _03806124 - sub r6, r6, #1 - adds r0, r0, r0 - adcs r1, r1, r1 - bpl _0380610C -_03806124: - mov r7, #0 - mov ip, #0 - mov fp, #0 - b _0380614C -_03806134: - orr ip, ip, #1 - subs r6, r6, #1 - beq _038061A4 - adds r0, r0, r0 - adcs r1, r1, r1 - adcs r7, r7, r7 -_0380614C: - subs r0, r0, r2 - sbcs r1, r1, r3 - sbcs r7, r7, #0 - adds ip, ip, ip - adc fp, fp, fp - cmp r7, #0 - bge _03806134 -_03806168: - subs r6, r6, #1 - beq _0380619C - adds r0, r0, r0 - adcs r1, r1, r1 - adc r7, r7, r7 - adds r0, r0, r2 - adcs r1, r1, r3 - adc r7, r7, #0 - adds ip, ip, ip - adc fp, fp, fp - cmp r7, #0 - bge _03806134 - b _03806168 -_0380619C: - adds r0, r0, r2 - adc r1, r1, r3 -_038061A4: - ands r7, r4, #1 - moveq r0, ip - moveq r1, fp - beq _038061DC - subs r7, r5, #0x20 - movge r0, r1, lsr r7 - bge _03806200 - rsb r7, r5, #0x20 - mov r0, r0, lsr r5 - orr r0, r0, r1, lsl r7 - mov r1, r1, lsr r5 - b _038061DC -_038061D4: ; 0x038061D4 - mov r0, r1, lsr r7 - mov r1, #0 -_038061DC: - cmp r4, #0 - blt _038061EC - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_038061EC: - rsbs r0, r0, #0 - rsc r1, r1, #0 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_038061FC: - mov r0, #0 -_03806200: - mov r1, #0 - cmp r4, #0 - blt _038061EC - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr - - arm_func_start _ll_udiv - arm_func_start _ull_div -_ll_udiv: ; 0x03806214 -_ull_div: ; 0x03806214 - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - mov r4, #0 - b _03806228 - - .public _ull_mod -_ull_mod: ; 0x03806220 - stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} - mov r4, #1 -_03806228: - orrs r5, r3, r2 - bne _03806238 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr -_03806238: - orrs r5, r1, r3 - bne _038060D8 - mov r1, r2 - bl _u32_div_not_0_f - cmp r4, #0 - movne r0, r1 - mov r1, #0 - ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} - bx lr - - .public _s32_div_f -_s32_div_f: ; 0x0380625C - eor ip, r0, r1 - and ip, ip, #0x80000000 - cmp r0, #0 - rsblt r0, r0, #0 - addlt ip, ip, #1 - cmp r1, #0 - rsblt r1, r1, #0 - beq _03806454 - cmp r0, r1 - movlo r1, r0 - movlo r0, #0 - blo _03806454 - mov r2, #0x1c - mov r3, r0, lsr #4 - cmp r1, r3, lsr #12 - suble r2, r2, #0x10 - movle r3, r3, lsr #0x10 - cmp r1, r3, lsr #4 - suble r2, r2, #8 - movle r3, r3, lsr #8 - cmp r1, r3 - suble r2, r2, #4 - movle r3, r3, lsr #4 - mov r0, r0, lsl r2 - rsb r1, r1, #0 - adds r0, r0, r0 - add r2, r2, r2, lsl #1 - add pc, pc, r2, lsl #2 - mov r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - mov r1, r3 -_03806454: - ands r3, ip, #0x80000000 - rsbne r0, r0, #0 - ands r3, ip, #1 - rsbne r1, r1, #0 - bx lr - - .public _u32_div_f -_u32_div_f: ; 0x03806468 - cmp r1, #0 - bxeq lr - - .public _u32_div_not_0_f -_u32_div_not_0_f: ; 0x03806470 - cmp r0, r1 - movlo r1, r0 - movlo r0, #0 - bxlo lr - mov r2, #0x1c - mov r3, r0, lsr #4 - cmp r1, r3, lsr #12 - suble r2, r2, #0x10 - movle r3, r3, lsr #0x10 - cmp r1, r3, lsr #4 - suble r2, r2, #8 - movle r3, r3, lsr #8 - cmp r1, r3 - suble r2, r2, #4 - movle r3, r3, lsr #4 - mov r0, r0, lsl r2 - rsb r1, r1, #0 - adds r0, r0, r0 - add r2, r2, r2, lsl #1 - add pc, pc, r2, lsl #2 - mov r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - adcs r3, r1, r3, lsl #1 - sublo r3, r3, r1 - adcs r0, r0, r0 - mov r1, r3 - bx lr - - .rodata - - .balign 4, 0 -micIntrPrio: ; 0x038067A4 - .byte 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 - .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x16, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00 - .byte 0x17, 0x00, 0x00, 0x00 - - .section .wram,4,1,5 - - arm_func_start WMSP_ReturnResult2Wm9 -WMSP_ReturnResult2Wm9: ; 0x038068C8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, #0x100 - mov r5, #0xa - mov r4, #0 - b _038068E8 -_038068E0: - mov r0, r6 - bl VENEER_SVC_WaitByLoop -_038068E8: - mov r0, r5 - mov r1, r7 - mov r2, r4 - bl PXI_SendWordByFifo - cmp r0, #0 - blt _038068E0 - ldr r0, _03806910 ; =wmspW + 0x1528 - bl OS_UnlockMutex - ldmia sp!, {r3, r4, r5, r6, r7, lr} - bx lr - .align 2, 0 -_03806910: .word wmspW + 0x1528 - arm_func_end WMSP_ReturnResult2Wm9 - - arm_func_start WMSP_GetBuffer4Callback2Wm9 -WMSP_GetBuffer4Callback2Wm9: ; 0x03806914 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0380695C ; =wmspW + 0x1528 - bl OS_LockMutex - ldr r4, _03806960 ; =0x027FFF96 - mov r5, #0x100 - b _03806934 -_0380692C: - mov r0, r5 - bl VENEER_SVC_WaitByLoop -_03806934: - ldrh r1, [r4] - tst r1, #1 - bne _0380692C - ldr r0, _03806964 ; =wmspW + 0x1000 - orr r1, r1, #1 - strh r1, [r4] - ldr r0, [r0, #0x54c] - ldr r0, [r0, #8] - ldmia sp!, {r3, r4, r5, lr} - bx lr - .align 2, 0 -_0380695C: .word wmspW + 0x1528 -_03806960: .word 0x027FFF96 -_03806964: .word wmspW + 0x1000 - arm_func_end WMSP_GetBuffer4Callback2Wm9 - - arm_func_start WMSP_GetAllowedChannel -WMSP_GetAllowedChannel: ; 0x03806968 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _03806A70 ; =0x00001FFF - and r0, r0, r1 - mov r0, r0, lsl #0x10 - movs r2, r0, lsr #0x10 - moveq r0, #0 - beq _03806A68 - mov r1, #0 - mov r0, #1 - b _0380699C -_03806990: - tst r2, r0, lsl r1 - bne _038069A4 - add r1, r1, #1 -_0380699C: - cmp r1, #0x10 - blt _03806990 -_038069A4: - mov r0, #0xf - mov r3, #1 - b _038069BC -_038069B0: - tst r2, r3, lsl r0 - bne _038069C4 - sub r0, r0, #1 -_038069BC: - cmp r0, #0 - bne _038069B0 -_038069C4: - sub r6, r0, r1 - cmp r6, #5 - movlt r0, #1 - movlt r0, r0, lsl r1 - movlt r0, r0, lsl #0x10 - movlt r0, r0, lsr #0x10 - blt _03806A68 - add r3, r0, r1 - add r3, r3, r3, lsr #31 - mov r4, r3, asr #1 - mov r5, #0 - mov lr, #1 - b _03806A1C -_038069F8: - mov ip, r5, lsr #0x1f - rsb r3, ip, r5, lsl #31 - add r3, ip, r3, ror #31 - mov r3, r3, lsl #1 - sub r3, r3, #1 - mla r4, r5, r3, r4 - tst r2, lr, lsl r4 - bne _03806A24 - add r5, r5, #1 -_03806A1C: - cmp r5, r6 - blt _038069F8 -_03806A24: - sub r2, r0, r4 - cmp r2, #5 - subge r2, r4, r1 - cmpge r2, #5 - bge _03806A50 - mov r2, #1 - mov r0, r2, lsl r0 - orr r0, r0, r2, lsl r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - b _03806A68 -_03806A50: - mov r3, #1 - mov r2, r3, lsl r4 - orr r0, r2, r3, lsl r0 - orr r0, r0, r3, lsl r1 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 -_03806A68: - ldmia sp!, {r4, r5, r6, lr} - bx lr - .align 2, 0 -_03806A70: .word 0x00001FFF - arm_func_end WMSP_GetAllowedChannel - - .data - -PMi_LEDStatus: ; 0x03806B08 - .word 1 - -PMi_BlinkPatternData: ; 0x03806B0C - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0xAA, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC - .byte 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE3, 0x0C, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x3E, 0xF8, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC - .byte 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0xFF, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF - .byte 0x20, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x28, 0x00, 0x02, 0x00 - -isFirstCheck$3769: ; 0x03806B9C - .word 1 - -nextCount$3767: ; 0x03806BA0 - .word 0xFFFFFFFF - - .bss - -spiInitialized: ; 0x03808E30 - .space 0x2 - - .balign 4, 0 -spiWork: ; 0x03808E34 - .space 0x49C - -valid_cnt$3731: ; 0x038092D0 - .space 1 - -invalid_cnt$3730: ; 0x038092D1 - .space 1 - - .balign 4, 0 -tpw: ; 0x038092D4 - .space 0xD4 - -last_touch_flg: ; 0x038093A8 - .space 0x2 - - .balign 4, 0 -PMi_KeyPattern: ; 0x038093AC - .space 0x2 - -PMi_TriggerBL: ; 0x038093AE - .space 0x2 - - .public PMi_Initialized -PMi_Initialized: ; 0x038093B0 - .space 0x4 - -PMi_Work: ; 0x038093B4 - .space 0x2C - -PMi_BlinkCounter: ; 0x038093E0 - .space 0x4 - -PMi_BlinkPatternNo: ; 0x038093E4 - .space 0x4 - -micw: ; 0x038093E8 - .space 0x50 - -micIntrInfo: ; 0x03809438 - .space 0x10 - -CTRDGi_EnableFlag: ; 0x03809448 - .space 0x4 - -CTRDGi_Work: ; 0x0380944C - .space 0x4 - -lock_id: ; 0x03809450 - .space 0x2 - - .balign 4, 0 -current_vib: ; 0x03809454 - .space 0x4 - -isInitialized$3644: ; 0x03809458 - .space 0x4 - -isCartridgePullOut$3768: ; 0x0380945C - .space 0x4 - -skipCheck$3770: ; 0x03809460 - .space 0x4 - -isInitialized$3633: ; 0x03809464 - .space 0x4 - -ctw_sp: ; 0x03809468 - .space 0x18 - -pulse_edge_alarm: ; 0x03809480 - .space 0x2C - -nvramw: ; 0x038094AC - .space 0x20 - -rtcInitialized: ; 0x038094CC - .space 0x2 - - .balign 4, 0 -rtcWork: ; 0x038094D0 - .space 0x3B4 - - .public WVR_BSS_START -WVR_BSS_START: -wvrStatus: ; 0x03809884 - .space 0x1 - - .balign 4, 0 -wvrVramImageBuf: ; 0x03809888 - .space 0x4 - -wvrHeapHandle: ; 0x0380988C - .space 0x4 - -wvrVramImageBufSize: ; 0x03809890 - .space 0x4 - -wvrThread: ; 0x03809894 - .space 0xA4 - -wvrWlStaElement: ; 0x03809938 - .space 0x1C0 - -wvrThreadStack: ; 0x03809AF8 - .space 0x400 - -wvrWlStack: ; 0x03809EF8 - .space 0x600 - -wvrWlWork: ; 0x0380A4F8 - .space 0x700 - - .public wmspRequestThread -wmspRequestThread: ; 0x0380ABF8 - .space 0xA4 - - .public wmspIndicateThread -wmspIndicateThread: ; 0x0380AC9C - .space 0xA4 - - .public wmspMPAckAlarm -wmspMPAckAlarm: ; 0x0380AD40 - .space 0x2C - - .public wmspMPIntervalAlarm -wmspMPIntervalAlarm: ; 0x0380AD6C - .space 0x2C - - .public wmspVAlarm -wmspVAlarm: ; 0x0380AD98 - .space 0x28 - -; 0x0380ADC0 diff --git a/sub/global.inc b/sub/global.inc deleted file mode 100644 index 4dfead12..00000000 --- a/sub/global.inc +++ /dev/null @@ -1,164 +0,0 @@ -.public OS_Terminate -.public OS_SetIrqFunction -.public OS_EnableIrqMask -.public OS_DisableIrqMask -.public OS_GetLockID -.public OS_CreateThread -.public OS_ExitThread -.public OS_JoinThread -.public OS_IsThreadTerminated -.public OS_WakeupThreadDirect -.public OS_SetThreadPriority -.public OS_Sleep -.public OS_DisableScheduler -.public OS_EnableScheduler -.public OS_InitMessageQueue -.public OS_SendMessage -.public OS_ReceiveMessage -.public OS_InitMutex -.public OS_LockMutex -.public OS_UnlockMutex -.public OS_AllocFromHeap -.public OS_FreeToHeap -.public OS_GetTick -.public OS_IsAlarmAvailable -.public OS_CreateAlarm -.public OS_SetAlarm -.public OS_SetPeriodicAlarm -.public OS_CancelAlarm -.public OS_InitVAlarm -.public OS_IsVAlarmAvailable -.public OS_SetVAlarm -.public OS_CancelVAlarm -.public OS_DisableInterrupts -.public OS_RestoreInterrupts -.public MI_WaitDma -.public MIi_CpuClear16 -.public MIi_CpuCopy16 -.public MIi_CpuClear32 -.public MIi_CpuCopy32 -.public MIi_CpuClearFast -.public MI_CpuFill8 -.public MI_CpuCopy8 -.public PXI_Init -.public PXI_SetFifoRecvCallback -.public SND_BeginSleep -.public SPI_Lock -.public SPI_Unlock -.public PM_SetLEDPattern -.public NVRAM_ReadStatusRegister -.public NVRAM_ReadDataBytes -.public NVRAM_SoftwareReset -.public MATH_CountPopulation -.public _ll_udiv -.public _s32_div_f -.public _u32_div_f -.public WMSP_ReturnResult2Wm9 -.public WMSP_GetBuffer4Callback2Wm9 -.public WMSP_GetAllowedChannel -.public OS_IrqHandler_ThreadSwitch -.public OS_SetIrqMask -.public VENEER_SVC_WaitByLoop -.public OS_LockCartridge -.public OS_UnlockCartridge -.public OS_UnLockCartridge -.public OS_TryLockCartridge -.public OS_ReadOwnerOfLockWord -.public OS_ReleaseLockID -.public OS_SleepThread -.public OS_WakeupThread -.public OS_ReadMessage -.public OS_InitTick -.public OS_InitAlarm -.public OS_CreateVAlarm -.public OS_SetPeriodicVAlarm -.public OS_SetVAlarmTag -.public OS_CancelVAlarms -.public OS_SpinWait -.public MIi_CpuCopyFast -.public PXI_SendWordByFifo -.public EXIi_SetBitRcnt0L -.public EXIi_SelectRcnt -.public SND_EndSleep -.public SVC_Sleep -.public SVC_CpuSet -.public WVR_ShelterExtWram -.public SVC_WaitByLoop -.public SVC_Halt -.public SVC_SetSoundBias -.public SVC_ResetSoundBias -.public SVC_GetCRC16 -.public SVC_GetPitchTable -.public SVC_GetVolumeTable -.public SPI_Init -.public PMi_SetControl -.public PMi_ResetControl -.public PM_SelfBlinkProc -.public CTRDG_Init -.public CTRDG_VibPulseEdgeUpdate -.public CTRDG_CheckPullOut_Polling -.public RTC_Init -.public WVR_Init -.public WVR_Shutdown -.public _ll_sdiv -.public OSi_DoBoot -.public OS_Init -.public OS_GetArenaHi -.public OS_GetArenaLo -.public OS_InitAlloc -.public OS_SetArenaLo -.public OSi_UnlockAllMutex -.public OS_CreateHeap -.public OS_SetCurrentHeap -.public OS_CheckHeap -.public SND_Init -.public PAD_InitXYButton -.public OS_EnableInterrupts -.public FS_Init -.public CARD_SetThreadPriority -.public OS_IsResetOccurred -.public OS_ResetSystem -.public CARD_CheckPullOut_Polling -.public OS_DisableInterrupts_IrqAndFiq -.public OS_RestoreInterrupts_IrqAndFiq -.public OS_DisableInterrupts_IrqAndFiq -.public MI_SwapWord -.public OS_RestoreInterrupts_IrqAndFiq -.public OS_GetProcMode -.public OSi_IrqCallbackInfoIndex -.public OSi_RemoveMutexLinkFromQueue -.public OS_InitLock -.public OS_InitIrqTable -.public OS_InitThread -.public OSi_EnterTimerCallback -.public OS_TryLockCard -.public OS_UnlockCard -.public OS_ResetRequestIrqMask -.public OSi_ThreadInfo -.public OS_SaveContext -.public OS_LoadContext -.public OS_InitContext -.public OSi_CurrentThreadPtr -.public NitroSpMain -.public OSi_LauncherThread -.public MIi_CpuClear32 -.public _sub_wram1_bss_start -.public OSi_IdleThread -.public OSi_SystemCallbackInSwitchThread -.public OSi_RescheduleCount -.public OSi_IsThreadInitialized -.public OSi_StackForDestructor -.public OSi_ThreadIdCount -.public OSi_ThreadInfo -.public OSi_LauncherThread -.public OSi_Initialized -.public OSi_IrqTimer0 -.public OSi_IrqTimer1 -.public OSi_IrqTimer2 -.public OSi_IrqTimer3 -.public OSi_IrqVBlank -.public OSi_IrqDma0 -.public OSi_IrqDma1 -.public OSi_IrqDma2 -.public OSi_IrqDma3 -.public OS_IrqDummy diff --git a/sub/ichneumon_sub.lsf b/sub/ichneumon_sub.lsf deleted file mode 100644 index 25805dea..00000000 --- a/sub/ichneumon_sub.lsf +++ /dev/null @@ -1,53 +0,0 @@ -Static ichneumon_sub -{ - Address 0x02380000 - StackSize 1024 1024 -} - -Autoload MAIN -{ - Address 0x027E0000 - Object asm/sub.ext.o -} - -Autoload WRAM -{ - Address 0x037F8000 - Object asm/sp_main.o - Object asm/sp_main_help.o - Object lib/src/OS_irqHandler.o - Object lib/src/OS_irqTable.o - Object lib/src/OS_interrupt.o - Object lib/src/OS_spinLock.o - Object lib/src/OS_thread.o - Object lib/src/OS_context.o - Object lib/src/OS_message.o - Object lib/src/OS_mutex.o - Object lib/src/OS_init.o - Object lib/src/OS_arena.o - Object lib/src/OS_alloc.o - Object lib/src/OS_timer.o - Object lib/src/OS_tick.o - Object lib/src/OS_alarm.o - Object lib/src/OS_valarm.o - Object lib/src/OS_system.o - Object lib/src/OS_reset.o - Object lib/src/OS_terminate_proc.o - Object lib/asm/MI_dma.o - Object lib/asm/MI_memory.o - Object lib/asm/MI_swap.o - Object lib/src/PXI_fifo.o - Object lib/src/EXI_genPort.o - Object lib/src/PAD_xyButton.o - Object asm/sub.wram_1.o - Object asm/libsyscall.o - Object asm/sub.wram_2.o - Object lib/src/OS_reset.o (.wram) - Object asm/sub.wram_2.o (.wram) -} - -Autoload EXT_WRAM -{ - Address 0x06000000 - Object asm/sub.ext_wram.o -} diff --git a/sub/ichneumon_sub.sha1 b/sub/ichneumon_sub.sha1 deleted file mode 100644 index 5ef98671..00000000 --- a/sub/ichneumon_sub.sha1 +++ /dev/null @@ -1 +0,0 @@ -1d0b3418b85fa8b5e1a9e345d3a182073cb968ac *build/ichneumon_sub.sbin diff --git a/sub/lib/asm/MI_dma.s b/sub/lib/asm/MI_dma.s deleted file mode 100644 index db89f279..00000000 --- a/sub/lib/asm/MI_dma.s +++ /dev/null @@ -1,76 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start MI_WaitDma -MI_WaitDma: ; 0x037FAEAC - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - add r1, r4, r4, lsl #1 - add r1, r1, #2 - mov r1, r1, lsl #2 - add r1, r1, #0xb0 - add r2, r1, #0x4000000 -_037FAECC: - ldr r1, [r2] - tst r1, #-0x80000000 - bne _037FAECC - cmp r4, #0 - bne _037FAF08 - mov r1, #0xc - mul r1, r4, r1 - add r2, r1, #0x4000000 - mov r3, #0 - add r1, r1, #0xb0 - str r3, [r2, #0xb0] - add r2, r1, #0x4000000 - ldr r1, _037FAF14 ; =0x81400001 - str r3, [r2, #4] - str r1, [r2, #8] -_037FAF08: - bl OS_RestoreInterrupts - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FAF14: .word 0x81400001 - arm_func_end MI_WaitDma - - arm_func_start MI_StopDma -MI_StopDma: ; 0x037FAF18 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_DisableInterrupts - mov r1, #6 - mul r1, r4, r1 - add r1, r1, #5 - mov r1, r1, lsl #1 - add r1, r1, #0x4000000 - ldrh r2, [r1, #0xb0] - cmp r4, #0 - bic r2, r2, #0x3200 - strh r2, [r1, #0xb0] - ldrh r2, [r1, #0xb0] - bic r2, r2, #0x8000 - strh r2, [r1, #0xb0] - ldrh r2, [r1, #0xb0] - ldrh r1, [r1, #0xb0] - bne _037FAF88 - mov r1, #0xc - mul r1, r4, r1 - add r2, r1, #0x4000000 - mov r3, #0 - add r1, r1, #0xb0 - str r3, [r2, #0xb0] - add r2, r1, #0x4000000 - ldr r1, _037FAF94 ; =0x81400001 - str r3, [r2, #4] - str r1, [r2, #8] -_037FAF88: - bl OS_RestoreInterrupts - ldmia sp!, {r4, lr} - bx lr - .align 2, 0 -_037FAF94: .word 0x81400001 - arm_func_end MI_StopDma diff --git a/sub/lib/asm/MI_memory.s b/sub/lib/asm/MI_memory.s deleted file mode 100644 index 84e251a4..00000000 --- a/sub/lib/asm/MI_memory.s +++ /dev/null @@ -1,229 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start MIi_CpuClear16 -MIi_CpuClear16: ; 0x037FAF98 - mov r3, #0 -_037FAF9C: - cmp r3, r2 - strlth r0, [r1, r3] - addlt r3, r3, #2 - blt _037FAF9C - bx lr - arm_func_end MIi_CpuClear16 - - arm_func_start MIi_CpuCopy16 -MIi_CpuCopy16: ; 0x037FAFB0 - mov ip, #0 -_037FAFB4: - cmp ip, r2 - ldrlth r3, [r0, ip] - strlth r3, [r1, ip] - addlt ip, ip, #2 - blt _037FAFB4 - bx lr - arm_func_end MIi_CpuCopy16 - - arm_func_start MIi_CpuClear32 -MIi_CpuClear32: ; 0x037FAFCC - add ip, r1, r2 -_037FAFD0: - cmp r1, ip - stmltia r1!, {r0} - blt _037FAFD0 - bx lr - arm_func_end MIi_CpuClear32 - - arm_func_start MIi_CpuCopy32 -MIi_CpuCopy32: ; 0x037FAFE0 - add ip, r1, r2 -_037FAFE4: - cmp r1, ip - ldmltia r0!, {r2} - stmltia r1!, {r2} - blt _037FAFE4 - bx lr - arm_func_end MIi_CpuCopy32 - - arm_func_start MIi_CpuClearFast -MIi_CpuClearFast: ; 0x037FAFF8 - stmdb sp!, {r4, r5, r6, r7, r8, sb} - add sb, r1, r2 - mov ip, r2, lsr #5 - add ip, r1, ip, lsl #5 - mov r2, r0 - mov r3, r2 - mov r4, r2 - mov r5, r2 - mov r6, r2 - mov r7, r2 - mov r8, r2 -_037FB024: - cmp r1, ip - stmltia r1!, {r0, r2, r3, r4, r5, r6, r7, r8} - blt _037FB024 -_037FB030: - cmp r1, sb - stmltia r1!, {r0} - blt _037FB030 - ldmia sp!, {r4, r5, r6, r7, r8, sb} - bx lr - arm_func_end MIi_CpuClearFast - - arm_func_start MIi_CpuCopyFast -MIi_CpuCopyFast: ; 0x037FB044 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl} - add sl, r1, r2 - mov ip, r2, lsr #5 - add ip, r1, ip, lsl #5 -_037FB054: - cmp r1, ip - ldmltia r0!, {r2, r3, r4, r5, r6, r7, r8, sb} - stmltia r1!, {r2, r3, r4, r5, r6, r7, r8, sb} - blt _037FB054 -_037FB064: - cmp r1, sl - ldmltia r0!, {r2} - stmltia r1!, {r2} - blt _037FB064 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl} - bx lr - arm_func_end MIi_CpuCopyFast - - arm_func_start MI_CpuFill8 -MI_CpuFill8: ; 0x037FB07C - cmp r2, #0 - bxeq lr - tst r0, #1 - beq _037FB0A8 - ldrh ip, [r0, #-1] - and ip, ip, #0xff - orr r3, ip, r1, lsl #8 - strh r3, [r0, #-1] - add r0, r0, #1 - subs r2, r2, #1 - bxeq lr -_037FB0A8: - cmp r2, #2 - blo _037FB0F0 - orr r1, r1, r1, lsl #8 - tst r0, #2 - beq _037FB0C8 - strh r1, [r0], #2 - subs r2, r2, #2 - bxeq lr -_037FB0C8: - orr r1, r1, r1, lsl #16 - bics r3, r2, #3 - beq _037FB0E8 - sub r2, r2, r3 - add ip, r3, r0 -_037FB0DC: - str r1, [r0], #4 - cmp r0, ip - blo _037FB0DC -_037FB0E8: - tst r2, #2 - strneh r1, [r0], #2 -_037FB0F0: - tst r2, #1 - bxeq lr - ldrh r3, [r0] - and r3, r3, #0xff00 - and r1, r1, #0xff - orr r1, r1, r3 - strh r1, [r0] - bx lr - arm_func_end MI_CpuFill8 - - arm_func_start MI_CpuCopy8 -MI_CpuCopy8: ; 0x037FB110 - cmp r2, #0 - bxeq lr - tst r1, #1 - beq _037FB150 - ldrh ip, [r1, #-1] - and ip, ip, #0xff - tst r0, #1 - ldrneh r3, [r0, #-1] - movne r3, r3, lsr #8 - ldreqh r3, [r0] - orr r3, ip, r3, lsl #8 - strh r3, [r1, #-1] - add r0, r0, #1 - add r1, r1, #1 - subs r2, r2, #1 - bxeq lr -_037FB150: - eor ip, r1, r0 - tst ip, #1 - beq _037FB1A4 - bic r0, r0, #1 - ldrh ip, [r0], #2 - mov r3, ip, lsr #8 - subs r2, r2, #2 - blo _037FB188 -_037FB170: - ldrh ip, [r0], #2 - orr ip, r3, ip, lsl #8 - strh ip, [r1], #2 - mov r3, ip, lsr #0x10 - subs r2, r2, #2 - bhs _037FB170 -_037FB188: - tst r2, #1 - bxeq lr - ldrh ip, [r1] - and ip, ip, #0xff00 - orr ip, ip, r3 - strh ip, [r1] - bx lr -_037FB1A4: - tst ip, #2 - beq _037FB1D0 - bics r3, r2, #1 - beq _037FB21C - sub r2, r2, r3 - add ip, r3, r1 -_037FB1BC: - ldrh r3, [r0], #2 - strh r3, [r1], #2 - cmp r1, ip - blo _037FB1BC - b _037FB21C -_037FB1D0: - cmp r2, #2 - blo _037FB21C - tst r1, #2 - beq _037FB1F0 - ldrh r3, [r0], #2 - strh r3, [r1], #2 - subs r2, r2, #2 - bxeq lr -_037FB1F0: - bics r3, r2, #3 - beq _037FB210 - sub r2, r2, r3 - add ip, r3, r1 -_037FB200: - ldr r3, [r0], #4 - str r3, [r1], #4 - cmp r1, ip - blo _037FB200 -_037FB210: - tst r2, #2 - ldrneh r3, [r0], #2 - strneh r3, [r1], #2 -_037FB21C: - tst r2, #1 - bxeq lr - ldrh r2, [r1] - ldrh r0, [r0] - and r2, r2, #0xff00 - and r0, r0, #0xff - orr r0, r2, r0 - strh r0, [r1] - bx lr - arm_func_end MI_CpuCopy8 diff --git a/sub/lib/asm/MI_swap.s b/sub/lib/asm/MI_swap.s deleted file mode 100644 index 6234ad18..00000000 --- a/sub/lib/asm/MI_swap.s +++ /dev/null @@ -1,10 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - arm_func_start MI_SwapWord -MI_SwapWord: ; 0x037FB240 - swp r0, r0, [r1] - bx lr - arm_func_end MI_SwapWord diff --git a/sub/lib/asm/crt0.s b/sub/lib/asm/crt0.s deleted file mode 100644 index 6d3e9fed..00000000 --- a/sub/lib/asm/crt0.s +++ /dev/null @@ -1,154 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .public OS_IrqHandler - .public NitroSpMain - .public SDK_STATIC_BSS_START - .public SDK_AUTOLOAD_LIST - .public SDK_AUTOLOAD_LIST_END - .public SDK_AUTOLOAD_START - .public SDK_STATIC_BSS_START - .public SDK_STATIC_BSS_END - .public SDK_IRQ_STACKSIZE - - .text - - arm_func_start _start -_start: ; 0x02380000 - mov ip, #0x4000000 - str ip, [ip, #0x208] - ldr r1, _023800CC ; =SDK_STATIC_BSS_END - mov r0, #0x3800000 ; HW_PRV_WRAM - cmp r0, r1 - movpl r1, r0 - ldr r2, _023800D0 ; =0x0380FF00 - mov r0, #0 -_02380020: - cmp r1, r2 - stmltia r1!, {r0} - blt _02380020 - mov r0, #0x13 - msr cpsr_c, r0 - ldr sp, _023800D4 ; =0x0380FFC0 HW_PRV_WRAM_SVC_STACK_END - mov r0, #0x12 - msr cpsr_c, r0 - ldr r0, _023800D8 ; =0x0380FF80 HW_PRV_WRAM_IRQ_STACK_END - mov sp, r0 - ldr r1, _023800DC ; =SDK_IRQ_STACKSIZE - sub r1, r0, r1 - mov r0, #0x1f - msr cpsr_fsxc, r0 - sub sp, r1, #4 - ldr r0, _023800E0 ; =0x023FE940 - ldr r1, _023800E4 ; =0x027FFA80 HW_CARD_ROM_HEADER - add r2, r1, #0x160 ; HW_CARD_ROM_HEADER_SIZE -_02380068: - ldr r3, [r0], #4 - str r3, [r1], #4 - cmp r1, r2 - bmi _02380068 - ldr r0, _023800E8 ; =0x023FE904 - add r2, r1, #0x20 ; HW_DOWNLOAD_PARAMETER_SIZE -_02380080: - ldr r3, [r0], #4 - str r3, [r1], #4 - cmp r1, r2 - bmi _02380080 - bl do_autoload - ldr r0, _023800EC ; =_start_ModuleParams - ldr r1, [r0, #0xc] - ldr r2, [r0, #0x10] - mov r0, #0 -_023800A4: - cmp r1, r2 - strlo r0, [r1], #4 - blo _023800A4 - bl detect_main_memory_size - ldr r1, _023800F0 ; =0x0380FFFC - ldr r0, _023800F4 ; =OS_IrqHandler - str r0, [r1] - ldr r1, _023800F8 ; =NitroSpMain - ldr lr, _023800FC ; =0xFFFF0000 - bx r1 - .align 2, 0 -_023800CC: .word SDK_STATIC_BSS_END -_023800D0: .word 0x0380FF00 -_023800D4: .word 0x0380FFC0 ; HW_PRV_WRAM_SVC_STACK_END -_023800D8: .word 0x0380FF80 ; HW_PRV_WRAM_IRQ_STACK_END -_023800DC: .word SDK_IRQ_STACKSIZE -_023800E0: .word 0x023FE940 -_023800E4: .word 0x027FFA80 ; HW_CARD_ROM_HEADER -_023800E8: .word 0x023FE904 -_023800EC: .word _start_ModuleParams -_023800F0: .word 0x0380FFFC -_023800F4: .word OS_IrqHandler -_023800F8: .word NitroSpMain -_023800FC: .word 0xFFFF0000 - arm_func_end _start - - arm_func_start do_autoload -do_autoload: ; 0x02380100 - ldr r0, _02380154 ; =_start_ModuleParams - ldr r1, [r0] - ldr r2, [r0, #4] - ldr r3, [r0, #8] -_02380110: - cmp r1, r2 - beq _02380150 - ldr r4, [r1], #4 - ldr r5, [r1], #4 - add r6, r4, r5 -_02380124: - cmp r4, r6 - ldrmi r7, [r3], #4 - strmi r7, [r4], #4 - bmi _02380124 - ldr r5, [r1], #4 - add r6, r4, r5 - mov r7, #0 -_02380140: - cmp r4, r6 - strlo r7, [r4], #4 - blo _02380140 - beq _02380110 -_02380150: - b _start_AutoloadDoneCallback - .align 2, 0 -_02380154: .word _start_ModuleParams - arm_func_end do_autoload - - arm_func_start _start_AutoloadDoneCallback -_start_AutoloadDoneCallback: - bx lr - arm_func_end _start_AutoloadDoneCallback - - arm_func_start detect_main_memory_size -detect_main_memory_size: ; 0x0238015C - mov r0, #1 - mov r1, #0 - ldr r2, _02380194 ; =0x027FFFFA - sub r3, r2, #0x400000 -_0238016C: - strh r1, [r2] - ldrh ip, [r3] - cmp r1, ip - movne r0, #2 - bne _0238018C - add r1, r1, #1 - cmp r1, #2 - bne _0238016C -_0238018C: - strh r0, [r2] - bx lr - .align 2, 0 -_02380194: .word 0x027FFFFA - arm_func_end detect_main_memory_size - - .public _start_ModuleParams -_start_ModuleParams: ; 0x02380198 - .word SDK_AUTOLOAD_LIST - .word SDK_AUTOLOAD_LIST_END - .word SDK_AUTOLOAD_START - .word SDK_STATIC_BSS_START - .word SDK_STATIC_BSS_END -; SDK_STATIC_TEXT_END = 0x023801B0 diff --git a/sub/lib/src/EXI_genPort.c b/sub/lib/src/EXI_genPort.c deleted file mode 100644 index cf7f04de..00000000 --- a/sub/lib/src/EXI_genPort.c +++ /dev/null @@ -1,10 +0,0 @@ -#include - -__declspec(noinline) -void EXIi_SetBitRcnt0L(u16 mask, u16 data) { - reg_EXI_RCNT0_L = (~mask & reg_EXI_RCNT0_L) | data; -} - -void EXIi_SelectRcnt(EXIGpioIF type) { - EXIi_SetBitRcnt0L(REG_EXI_RCNT0_L_RE1_MASK | REG_EXI_RCNT0_L_RE0_MASK, type); -} diff --git a/sub/lib/src/OS_alarm.c b/sub/lib/src/OS_alarm.c deleted file mode 100644 index 732abfec..00000000 --- a/sub/lib/src/OS_alarm.c +++ /dev/null @@ -1,198 +0,0 @@ -#include - -void OSi_AlarmHandler(void *arg); -void OSi_ArrangeTimer(void); - -#define OSi_ALARM_TIMER OS_TIMER_1 -#define OSi_ALARM_TIMERCONTROL ((1 << REG_OS_TM1CNT_H_E_SHIFT) | (1 << REG_OS_TM1CNT_H_I_SHIFT) | OS_TIMER_PRESCALER_64) -#define OSi_ALARM_IE_TIMER OS_IE_TIMER1 - -u16 OSi_UseAlarm = FALSE; -struct OSiAlarmQueue OSi_AlarmQueue; - -void OSi_SetTimer(OSAlarm *alarm) { - s64 delta; - OSTick tick = OS_GetTick(); - u16 timerCount; - - OS_SetTimerControl(OSi_ALARM_TIMER, 0); - delta = alarm->fire - tick; - OSi_EnterTimerCallback(OSi_ALARM_TIMER, OSi_AlarmHandler, NULL); - if (delta < 0) { - timerCount = (u16)~1; - } else if (delta < 0x10000) { - timerCount = (u16)~delta; - } else { - timerCount = 0; - } - OS_SetTimerCount(OSi_ALARM_TIMER, timerCount); - OS_SetTimerControl(OSi_ALARM_TIMER, OSi_ALARM_TIMERCONTROL); - OS_EnableIrqMask(OSi_ALARM_IE_TIMER); -} - -void OS_InitAlarm(void) { - if (OSi_UseAlarm) { - return; - } - OSi_UseAlarm = TRUE; - OSi_SetTimerReserved(OSi_ALARM_TIMER); - OSi_AlarmQueue.head = NULL; - OSi_AlarmQueue.tail = NULL; - OS_DisableIrqMask(OSi_ALARM_IE_TIMER); -} - -BOOL OS_IsAlarmAvailable(void) { - return OSi_UseAlarm; -} - -void OS_CreateAlarm(OSAlarm *alarm) { - alarm->handler = NULL; - alarm->tag = 0; -} - -void OSi_InsertAlarm(OSAlarm *alarm, OSTick fire) { - OSAlarm *prev; - OSAlarm *next; - - if (alarm->period > 0) { - OSTick tick = OS_GetTick(); - fire = alarm->start; - if (alarm->start < tick) { - fire += alarm->period * ((tick - alarm->start) / alarm->period + 1); - } - } - alarm->fire = fire; - for (next = OSi_AlarmQueue.head; next; next = next->next) { - if ((s64)(fire - next->fire) >= 0) { // cast required to match - continue; - } - alarm->prev = next->prev; - next->prev = alarm; - alarm->next = next; - prev = alarm->prev; - if (prev) { - prev->next = alarm; - } else { - OSi_AlarmQueue.head = alarm; - OSi_SetTimer(alarm); - } - return; - } - alarm->next = NULL; - prev = OSi_AlarmQueue.tail; - OSi_AlarmQueue.tail = alarm; - alarm->prev = prev; - if (prev) { - prev->next = alarm; - } else { - OSi_AlarmQueue.head = OSi_AlarmQueue.tail = alarm; // why set .tail twice? - OSi_SetTimer(alarm); - } -} - -void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg) { - OSIntrMode enabled; - - if (alarm == NULL || alarm->handler != NULL) { - OS_Panic(""); - } - - enabled = OS_DisableInterrupts(); - alarm->period = 0; - alarm->handler = handler; - alarm->arg = arg; - OSi_InsertAlarm(alarm, tick + OS_GetTick()); - OS_RestoreInterrupts(enabled); -} - -void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, void *arg) { - OSIntrMode enabled; - - if (alarm == NULL || alarm->handler != NULL) { - OS_Panic(""); - } - - enabled = OS_DisableInterrupts(); - alarm->period = period; - alarm->start = start; - alarm->handler = handler; - alarm->arg = arg; - OSi_InsertAlarm(alarm, 0); - OS_RestoreInterrupts(enabled); -} - -void OS_CancelAlarm(OSAlarm *alarm) { - OSAlarm *next; - OSIntrMode enabled; - - enabled = OS_DisableInterrupts(); - if (alarm->handler == NULL) { - OS_RestoreInterrupts(enabled); - return; - } - next = alarm->next; - if (next == NULL) { - OSi_AlarmQueue.tail = alarm->prev; - } else { - next->prev = alarm->prev; - } - if (alarm->prev != NULL) { - alarm->prev->next = next; - } else { - OSi_AlarmQueue.head = next; - if (next != NULL) { - OSi_SetTimer(next); - } - } - alarm->handler = NULL; - alarm->period = 0; - OS_RestoreInterrupts(enabled); -} - -asm void OSi_AlarmHandler(void *arg) { - stmdb sp!, {r0, lr} - bl OSi_ArrangeTimer - ldmia sp!, {r0, lr} - bx lr -} - -void OSi_ArrangeTimer(void) { - OSTick tick; - OSAlarm *alarm; - OSAlarm *next; - OSAlarmHandler handler; - - OS_SetTimerControl(OSi_ALARM_TIMER, 0); - OS_DisableIrqMask(OSi_ALARM_IE_TIMER); - OS_SetIrqCheckFlag(OSi_ALARM_IE_TIMER); - tick = OS_GetTick(); - alarm = OSi_AlarmQueue.head; - if (alarm == NULL) { - return; - } - if (tick < alarm->fire) { - OSi_SetTimer(alarm); - return; - } - next = alarm->next; - OSi_AlarmQueue.head = next; - if (next == NULL) { - OSi_AlarmQueue.tail = NULL; - } else { - next->prev = NULL; - } - handler = alarm->handler; - if (alarm->period == 0) { - alarm->handler = NULL; - } - if (handler) { - handler(alarm->arg); - } - if (alarm->period > 0) { - alarm->handler = handler; - OSi_InsertAlarm(alarm, 0); - } - if (OSi_AlarmQueue.head) { - OSi_SetTimer(OSi_AlarmQueue.head); - } -} diff --git a/sub/lib/src/OS_alloc.c b/sub/lib/src/OS_alloc.c deleted file mode 100644 index a6dcb853..00000000 --- a/sub/lib/src/OS_alloc.c +++ /dev/null @@ -1,272 +0,0 @@ -#include - -#define OFFSET(n, a) (((u32) (n)) & ((a) - 1)) -#define TRUNC(n, a) (((u32) (n)) & ~((a) - 1)) -#define ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) - -#define ALIGNMENT 32 -#define MINOBJSIZE (HEADERSIZE + ALIGNMENT) -#define HEADERSIZE ROUND(sizeof(Cell), ALIGNMENT) - -void *OSiHeapInfo[OS_ARENA_MAX] = {}; - -static -#ifdef SDK_ARM7 -inline -#endif //SDK_ARM7 -Cell *DLAddFront(Cell *list, Cell *cell) { - cell->next = list; - cell->prev = NULL; - if (list != NULL) { - list->prev = cell; - } - return cell; -} - -Cell *DLExtract(Cell *list, Cell *cell) { - if (cell->next != NULL) { - cell->next->prev = cell->prev; - } - if (cell->prev == NULL) { - return cell->next; - } else { - cell->prev->next = cell->next; - return list; - } -} - -Cell *DLInsert(Cell *list, Cell *cell) { - Cell *prev; - Cell *next; - - for (next = list, prev = NULL; next; prev = next, next = next->next) { - if (cell <= next) { - break; - } - } - - cell->next = next; - cell->prev = prev; - - if (next) { - next->prev = cell; - if ((char *)cell + cell->size == (char *)next) { - cell->size += next->size; - cell->next = next = next->next; - if (next) { - next->prev = cell; - } - } - } - if (prev) { - prev->next = cell; - if ((char *)prev + prev->size == (char *)cell) { - prev->size += cell->size; - prev->next = next; - if (next) { - next->prev = prev; - } - } - return list; - } else { - return cell; - } -} - -void *OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size) { - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - Cell *newCell; - long leftoverSize; - OSIntrMode enabled = OS_DisableInterrupts(); - - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - if (heapInfo == NULL) { - OS_RestoreInterrupts(enabled); - return NULL; - } - - if (heap < 0) { - heap = heapInfo->currentHeap; - } - hd = &heapInfo->heapArray[heap]; - size += HEADERSIZE; - size = ROUND(size, ALIGNMENT); - for (cell = hd->free; cell != NULL; cell = cell->next) { - if ((long)size <= cell->size) { - break; - } - } - if (cell == NULL) { - OS_RestoreInterrupts(enabled); - return NULL; - } - leftoverSize = cell->size - size; - if (leftoverSize < MINOBJSIZE) { - hd->free = DLExtract(hd->free, cell); - } else { - cell->size = (long)size; - newCell = (Cell*)((char *)cell + size); - newCell->size = leftoverSize; - newCell->prev = cell->prev; - newCell->next = cell->next; - if (newCell->next != NULL) { - newCell->next->prev = newCell; - } - if (newCell->prev != NULL) { - newCell->prev->next = newCell; - } else { - // debug assert here: "broken heap" - hd->free = newCell; - } - } - hd->allocated = DLAddFront(hd->allocated, cell); - OS_RestoreInterrupts(enabled); - return (void *)((char *)cell + HEADERSIZE); -} - -void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void *ptr) { - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - if (heap < 0) { - heap = heapInfo->currentHeap; - } - hd = &heapInfo->heapArray[heap]; - cell = (Cell *)((char *)ptr - HEADERSIZE); - hd->allocated = DLExtract(hd->allocated, cell); - hd->free = DLInsert(hd->free, cell); - OS_RestoreInterrupts(enabled); -} - -OSHeapHandle OS_SetCurrentHeap(OSArenaId id, OSHeapHandle heap) { - OSHeapInfo *heapInfo; - OSHeapHandle prev; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - prev = heapInfo->currentHeap; - heapInfo->currentHeap = heap; - OS_RestoreInterrupts(enabled); - return prev; -} - -void *OS_InitAlloc(OSArenaId id, void *arenaStart, void *arenaEnd, s32 maxHeaps) { - OSHeapInfo *heapInfo; - OSHeapHandle i; - u32 arraySize; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = arenaStart; - OSiHeapInfo[id] = heapInfo; - arraySize = sizeof(HeapDesc) * maxHeaps; - heapInfo->heapArray = (void *)((u32)arenaStart + sizeof(OSHeapInfo)); - heapInfo->numHeaps = maxHeaps; - for (i = 0; i < heapInfo->numHeaps; i++) { - HeapDesc *hd = &heapInfo->heapArray[i]; - hd->size = -1; - hd->free = hd->allocated = NULL; - } - heapInfo->currentHeap = -1; - arenaStart = (void *)((char *)heapInfo->heapArray + arraySize); - arenaStart = (void *)ROUND(arenaStart, ALIGNMENT); - heapInfo->arenaStart = arenaStart; - heapInfo->arenaEnd = (void *)TRUNC(arenaEnd, ALIGNMENT); - OS_RestoreInterrupts(enabled); - return heapInfo->arenaStart; -} - -void OS_ClearAlloc(OSArenaId id) { - OSiHeapInfo[id] = NULL; // Act like it never existed -} - -OSHeapHandle OS_CreateHeap(OSArenaId id, void *start, void *end) { - OSHeapInfo *heapInfo; - OSHeapHandle heap; - HeapDesc *hd; - Cell *cell; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = (OSHeapInfo *)OSiHeapInfo[id]; - start = (void *)ROUND(start, ALIGNMENT); - end = (void *)TRUNC(end, ALIGNMENT); - for (heap = 0; heap < heapInfo->numHeaps; heap++) { - hd = &heapInfo->heapArray[heap]; - if (hd->size < 0) { - // This heap is available, asign it - hd->size = (char *)end - (char *)start; - cell = (Cell *)start; - cell->prev = NULL; - cell->next = NULL; - cell->size = hd->size; - hd->free = cell; - hd->allocated = NULL; - OS_RestoreInterrupts(enabled); - return heap; - } - } - // No heap is available, signal such - OS_RestoreInterrupts(enabled); - return -1; -} - -#define InRange(targ, a, b)((u32)(a) <= (u32)(targ) && (u32)(targ) < (u32)(b)) - -#define OSi_CHECK(exp) do { \ - if (!(exp)) { \ - goto exit_OS_CheckHeap; \ - } \ -} while (0) - -s32 OS_CheckHeap(OSArenaId id, OSHeapHandle heap) { - OSHeapInfo *heapInfo; - HeapDesc *hd; - Cell *cell; - long total = 0; - long free = 0; - long retValue = -1; - OSIntrMode enabled = OS_DisableInterrupts(); - heapInfo = OSiHeapInfo[id]; - if (heap == -1) { - heap = heapInfo->currentHeap; - } - OSi_CHECK(heapInfo->heapArray); - OSi_CHECK(0 <= heap && heap < heapInfo->numHeaps); - - hd = &heapInfo->heapArray[heap]; - OSi_CHECK(0 <= hd->size); - - OSi_CHECK(hd->allocated == NULL || hd->allocated->prev == NULL); - for (cell = hd->allocated; cell; cell = cell->next) { - OSi_CHECK(InRange(cell, heapInfo->arenaStart, heapInfo->arenaEnd)); - OSi_CHECK(OFFSET(cell, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || cell->next->prev == cell); - OSi_CHECK(MINOBJSIZE <= cell->size); - OSi_CHECK(OFFSET(cell->size, ALIGNMENT) == 0); - - total += cell->size; - OSi_CHECK(0 < total && total <= hd->size); - - } - - OSi_CHECK(hd->free == NULL || hd->free->prev == NULL); - for (cell = hd->free; cell; cell = cell->next) { - OSi_CHECK(InRange(cell, heapInfo->arenaStart, heapInfo->arenaEnd)); - OSi_CHECK(OFFSET(cell, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || cell->next->prev == cell); - OSi_CHECK(MINOBJSIZE <= cell->size); - OSi_CHECK(OFFSET(cell->size, ALIGNMENT) == 0); - OSi_CHECK(cell->next == NULL || (char *) cell + cell->size < (char *) cell->next); - - total += cell->size; - free += cell->size - HEADERSIZE; - OSi_CHECK(0 < total && total <= hd->size); - } - - OSi_CHECK(total == hd->size); - retValue = free; - -exit_OS_CheckHeap: - OS_RestoreInterrupts(enabled); - return retValue; -} diff --git a/sub/lib/src/OS_arena.c b/sub/lib/src/OS_arena.c deleted file mode 100644 index fa894f69..00000000 --- a/sub/lib/src/OS_arena.c +++ /dev/null @@ -1,243 +0,0 @@ -#include - -extern void SDK_IRQ_STACKSIZE(void); -#define OSi_IRQ_STACKSIZE ((s32)SDK_IRQ_STACKSIZE) -extern void SDK_SYS_STACKSIZE(void); -#define OSi_SYS_STACKSIZE ((s32)SDK_SYS_STACKSIZE) - -#ifdef SDK_ARM9 -extern void SDK_SECTION_ARENA_DTCM_START(void); -#define OSi_DTCM_ARENA_LO_DEFAULT ((s32)SDK_SECTION_ARENA_DTCM_START) - -extern void SDK_SECTION_ARENA_ITCM_START(void); -#define OSi_ITCM_ARENA_LO_DEFAULT ((s32)SDK_SECTION_ARENA_ITCM_START) - -extern void SDK_MAIN_ARENA_LO(void); -#define OSi_MAIN_ARENA_LO_DEFAULT ((s32)SDK_MAIN_ARENA_LO) -#else -extern void SDK_SUBPRIV_ARENA_LO(void); -#define OSi_SUBPRIV_ARENA_LO_DEFAULT ((s32)SDK_SUBPRIV_ARENA_LO) - -extern void SDK_WRAM_ARENA_LO(void); -#define OSi_WRAM_ARENA_LO_DEFAULT ((s32)SDK_WRAM_ARENA_LO) -#endif //SDK_ARM9 - -static BOOL OSi_Initialized = FALSE; -#ifdef SDK_ARM9 -static BOOL OSi_MainArenaEnabled = FALSE; -#endif - -void OS_InitArena(void) { - if (OSi_Initialized) { - return; - } - OSi_Initialized = TRUE; -#ifdef SDK_ARM9 - OS_SetArenaHi(OS_ARENA_MAIN, OS_GetInitArenaHi(OS_ARENA_MAIN)); - OS_SetArenaLo(OS_ARENA_MAIN, OS_GetInitArenaLo(OS_ARENA_MAIN)); - OS_SetArenaLo(OS_ARENA_MAINEX, NULL); - OS_SetArenaHi(OS_ARENA_MAINEX, NULL); - OS_SetArenaHi(OS_ARENA_ITCM, OS_GetInitArenaHi(OS_ARENA_ITCM)); - OS_SetArenaLo(OS_ARENA_ITCM, OS_GetInitArenaLo(OS_ARENA_ITCM)); - OS_SetArenaHi(OS_ARENA_DTCM, OS_GetInitArenaHi(OS_ARENA_DTCM)); - OS_SetArenaLo(OS_ARENA_DTCM, OS_GetInitArenaLo(OS_ARENA_DTCM)); - OS_SetArenaHi(OS_ARENA_SHARED, OS_GetInitArenaHi(OS_ARENA_SHARED)); - OS_SetArenaLo(OS_ARENA_SHARED, OS_GetInitArenaLo(OS_ARENA_SHARED)); - OS_SetArenaHi(OS_ARENA_WRAM_MAIN, OS_GetInitArenaHi(OS_ARENA_WRAM_MAIN)); - OS_SetArenaLo(OS_ARENA_WRAM_MAIN, OS_GetInitArenaLo(OS_ARENA_WRAM_MAIN)); -#else - OS_InitArenaHiAndLo(OS_ARENA_MAIN_SUBPRIV); - OS_InitArenaHiAndLo(OS_ARENA_WRAM_SUB); - OS_InitArenaHiAndLo(OS_ARENA_WRAM_SUBPRIV); -#endif -} - -#ifdef SDK_ARM9 -void OS_InitArenaEx(void) { - OS_SetArenaHi(OS_ARENA_MAINEX, OS_GetInitArenaHi(OS_ARENA_MAINEX)); - OS_SetArenaLo(OS_ARENA_MAINEX, OS_GetInitArenaLo(OS_ARENA_MAINEX)); - if (!OSi_MainArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) { - OS_SetProtectionRegion(1, HW_MAIN_MEM_MAIN, 4MB); - OS_SetProtectionRegion(2, HW_MAIN_MEM_MAIN_END, 128KB); - } -} -#else -static inline void OS_InitArenaHi(OSArenaId id) -{ - OS_SetArenaHi(id, OS_GetInitArenaHi((OSArenaId)id)); -} - -static inline void OS_InitArenaLo(OSArenaId id) -{ - OS_SetArenaLo(id, OS_GetInitArenaLo(id)); -} - -void OS_InitArenaHiAndLo(OSArenaId id) -{ - OS_InitArenaHi(id); - OS_InitArenaLo(id); -} -#endif //SDK_ARM9 - -void *OS_GetArenaHi(OSArenaId id) { - return OSi_GetArenaInfo().hi[id]; -} - -void *OS_GetArenaLo(OSArenaId id) { - return OSi_GetArenaInfo().lo[id]; -} - -void *OS_GetInitArenaHi(OSArenaId id) { - switch (id) { -#ifdef SDK_ARM9 - case OS_ARENA_MAIN: - return (void *)OSi_MAIN_ARENA_HI_DEFAULT; - case OS_ARENA_MAINEX: - if (!OSi_MainArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) { - return NULL; - } else { - return (void *)OSi_MAINEX_ARENA_HI_DEFAULT; - } - case OS_ARENA_ITCM: - return (void *)HW_ITCM_ARENA_HI_DEFAULT; - case OS_ARENA_DTCM: { - u32 irqStackLo; - u32 sysStackLo; - - irqStackLo = (u32)HW_DTCM_IRQ_STACK_END - OSi_IRQ_STACKSIZE; - - if (OSi_SYS_STACKSIZE == 0) { - sysStackLo = HW_DTCM; - if (sysStackLo < OSi_DTCM_ARENA_LO_DEFAULT) { - sysStackLo = OSi_DTCM_ARENA_LO_DEFAULT; - } - } else if (OSi_SYS_STACKSIZE < 0) { - sysStackLo = OSi_DTCM_ARENA_LO_DEFAULT - OSi_SYS_STACKSIZE; - } else { - sysStackLo = irqStackLo - OSi_SYS_STACKSIZE; - } - return (void *)sysStackLo; - } - case OS_ARENA_SHARED: - return (void *)HW_SHARED_ARENA_HI_DEFAULT; - case OS_ARENA_WRAM_MAIN: - return (void *)OSi_WRAM_MAIN_ARENA_HI_DEFAULT; -#else - case OS_ARENA_MAIN_SUBPRIV: - return (void *)HW_MAIN_MEM_SUB_END; - case OS_ARENA_WRAM_SUB: - return (void *)HW_WRAM_END; - case OS_ARENA_WRAM_SUBPRIV: - { - u32 irqStackLo = (u32)HW_PRV_WRAM_IRQ_STACK_END - OSi_IRQ_STACKSIZE; - u32 sysStackLo = (u32)HW_PRV_WRAM; - - if ((u32)OSi_WRAM_ARENA_LO_DEFAULT > (u32)HW_PRV_WRAM) { - sysStackLo = (u32)OSi_WRAM_ARENA_LO_DEFAULT; - } - - if (!OSi_SYS_STACKSIZE) { - return (void *)sysStackLo; - } else if (OSi_SYS_STACKSIZE < 0) { - sysStackLo -= OSi_SYS_STACKSIZE; - } else { - sysStackLo = irqStackLo - OSi_SYS_STACKSIZE; - } - - return (void *)sysStackLo; - } -#endif //SDK_ARM9 - default: - return NULL; - } -} - -void *OS_GetInitArenaLo(OSArenaId id) { - switch (id) { -#ifdef SDK_ARM9 - case OS_ARENA_MAIN: - return (void *)OSi_MAIN_ARENA_LO_DEFAULT; - case OS_ARENA_MAINEX: - if (!OSi_MainArenaEnabled || (OS_GetConsoleType() & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_4MB) { - return NULL; - } else { - return (void *)OSi_MAINEX_ARENA_LO_DEFAULT; - } - case OS_ARENA_ITCM: - return (void *)OSi_ITCM_ARENA_LO_DEFAULT; - case OS_ARENA_DTCM: - return (void *)OSi_DTCM_ARENA_LO_DEFAULT; - case OS_ARENA_SHARED: - return (void *)HW_SHARED_ARENA_LO_DEFAULT; - case OS_ARENA_WRAM_MAIN: - return (void *)OSi_WRAM_MAIN_ARENA_LO_DEFAULT; -#else - case OS_ARENA_MAIN_SUBPRIV: - return (void *)OSi_SUBPRIV_ARENA_LO_DEFAULT; - case OS_ARENA_WRAM_SUB: - { - u32 wramSubLo = ((u32)OSi_WRAM_ARENA_LO_DEFAULT); - if ((u32)HW_WRAM_END < (u32)wramSubLo) { - wramSubLo = (u32)HW_WRAM_END; - } - return (void *)wramSubLo; - } - case OS_ARENA_WRAM_SUBPRIV: - { - u32 privWramLo = HW_PRV_WRAM; - if ((u32)OSi_WRAM_ARENA_LO_DEFAULT > (u32)privWramLo) { - privWramLo = (u32)OSi_WRAM_ARENA_LO_DEFAULT; - } - return (void *)privWramLo; - } -#endif - default: - return NULL; - } -} - -void OS_SetArenaHi(OSArenaId id, void *ptr) { - OSi_GetArenaInfo().hi[id] = ptr; -} - -void OS_SetArenaLo(OSArenaId arena, void *ptr) { - OSi_GetArenaInfo().lo[arena] = ptr; -} - -void *OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align) { - void *ptr; - u8 *arenaLo; - - ptr = OS_GetArenaLo(id); - if (ptr == NULL) { - return NULL; - } - - arenaLo = ptr = (void *)OSi_ROUND(ptr, align); - arenaLo += size; - arenaLo = (u8 *)OSi_ROUND(arenaLo, align); - if (arenaLo > (u8 *)OS_GetArenaHi(id)) { - return NULL; - } - OS_SetArenaLo(id, arenaLo); - return ptr; -} - -void *OS_AllocFromArenaHi(OSArenaId arena, u32 size, u32 align) { - void *ptr; - u8 *arenaHi; - - arenaHi = OS_GetArenaHi(arena); - if (arenaHi == NULL) { - return NULL; - } - - arenaHi = (u8 *)OSi_TRUNC(arenaHi, align); - arenaHi -= size; - arenaHi = ptr = (void *)OSi_TRUNC(arenaHi, align); - if (arenaHi < (u8 *)OS_GetArenaLo(arena)) { - return NULL; - } - OS_SetArenaHi(arena, arenaHi); - return ptr; -} diff --git a/sub/lib/src/OS_context.c b/sub/lib/src/OS_context.c deleted file mode 100644 index 098a5399..00000000 --- a/sub/lib/src/OS_context.c +++ /dev/null @@ -1,96 +0,0 @@ -#include -#include - -asm void OS_InitContext(register OSContext *context, register u32 newpc, register u32 newsp) { -add newpc, newpc, #4 -str newpc, [context, #OS_CONTEXT_PC_PLUS4] - -#ifdef SDK_CONTEXT_HAS_SP_SVC -str newsp, [context, #OS_CONTEXT_SP_SVC] -sub newsp, newsp, #HW_SVC_STACK_SIZE -#endif - -tst newsp, #4 -subne newsp, newsp, #4 -str newsp, [context, #OS_CONTEXT_SP] - -ands newpc, newpc, #1 -movne r1, #HW_PSR_SYS_MODE | HW_PSR_THUMB_STATE -moveq r1, #HW_PSR_SYS_MODE | HW_PSR_ARM_STATE -str r1, [context, #OS_CONTEXT_CPSR] - -// Zero-initialize the registers -mov r1, #0 -str r1, [context, #OS_CONTEXT_R0] -str r1, [context, #OS_CONTEXT_R1] -str r1, [context, #OS_CONTEXT_R2] -str r1, [context, #OS_CONTEXT_R3] -str r1, [context, #OS_CONTEXT_R4] -str r1, [context, #OS_CONTEXT_R5] -str r1, [context, #OS_CONTEXT_R6] -str r1, [context, #OS_CONTEXT_R7] -str r1, [context, #OS_CONTEXT_R8] -str r1, [context, #OS_CONTEXT_R9] -str r1, [context, #OS_CONTEXT_R10] -str r1, [context, #OS_CONTEXT_R11] -str r1, [context, #OS_CONTEXT_R12] -str r1, [context, #OS_CONTEXT_R14] -bx lr -} - -asm BOOL OS_SaveContext(register OSContext *context) { -#ifdef SDK_ARM9 -stmdb sp!, {r0, lr} - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, =CP_SaveContext - blx r1 - ldmia sp!, {r0, lr} -#endif -add r1, r0, #0 - -mrs r2, cpsr -str r2, [r1], #OS_CONTEXT_R0 - OS_CONTEXT_CPSR - -#ifdef SDK_CONTEXT_HAS_SP_SVC -mov r0, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE | HW_PSR_ARM_STATE -msr cpsr_c, r0 -str sp, [r1, #OS_CONTEXT_SP_SVC - OS_CONTEXT_R0] -msr cpsr_c, r2 -#endif - -mov r0, #1 // Return value if restoring context via OS_LoadContext -stmia r1, {r0-r14} -add r0, pc, #0x8 -str r0, [r1, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_R0] - -mov r0, #0 -bx lr -} - -asm void OS_LoadContext(register OSContext *context) { -#ifdef SDK_ARM9 -stmdb sp!, {r0, lr} - add r0, r0, #OS_CONTEXT_CP_CONTEXT - ldr r1, =CPi_RestoreContext - blx r1 - ldmia sp!, {r0, lr} -#endif - -mrs r1, cpsr -bic r1, r1, #HW_PSR_CPU_MODE_MASK -orr r1, r1, #HW_PSR_SVC_MODE | HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE -msr cpsr_c, r1 - -ldr r1, [r0], #OS_CONTEXT_R0 - OS_CONTEXT_CPSR -msr spsr_fsxc, r1 - -#ifdef SDK_CONTEXT_HAS_SP_SVC -ldr sp, [r0, #OS_CONTEXT_SP_SVC - OS_CONTEXT_R0] -#endif - -ldr lr, [r0, #OS_CONTEXT_PC_PLUS4 - OS_CONTEXT_R0] -ldmia r0, {r0-r14} ^ -nop - - subs pc, lr, #4 -} diff --git a/sub/lib/src/OS_init.c b/sub/lib/src/OS_init.c deleted file mode 100644 index fff1b1f9..00000000 --- a/sub/lib/src/OS_init.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -extern void PXI_Init(void); -extern void OS_InitThread(void); -extern void OS_InitAlarm(void); -extern void CTRDG_Init(void); - -void OS_Init(void) -{ - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitIrqTable(); - OS_InitTick(); - OS_InitAlarm(); - OS_InitThread(); - OS_InitReset(); - CTRDG_Init(); -} diff --git a/sub/lib/src/OS_interrupt.c b/sub/lib/src/OS_interrupt.c deleted file mode 100644 index bf6893c1..00000000 --- a/sub/lib/src/OS_interrupt.c +++ /dev/null @@ -1,147 +0,0 @@ -#include - -extern OSThreadQueue OSi_IrqThreadQueue; - -static u32 OSi_IrqStackWarningOffset = 0; - -void OS_InitIrqTable(void) { - OS_InitThreadQueue(&OSi_IrqThreadQueue); -#ifdef SDK_ARM7 - OSi_SetVBlankCount(0); -#endif -} - -void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function) { - int i; - OSIrqCallbackInfo * info; - for (i = 0; i < OS_IRQ_TABLE_MAX; i++) { - if (intrBit & 1) { - info = NULL; - if (REG_OS_IE_D0_SHIFT <= i && i <= REG_OS_IE_D3_SHIFT) { - info = &OSi_IrqCallbackInfo[i - REG_OS_IE_D0_SHIFT]; - } else if (REG_OS_IE_T0_SHIFT <= i && i <= REG_OS_IE_T3_SHIFT) { - info = &OSi_IrqCallbackInfo[i - REG_OS_IE_T0_SHIFT + OSi_IRQCALLBACK_NO_TIMER0]; - } -#ifdef SDK_ARM7 - else if (i == REG_OS_IE_VB_SHIFT) { - info = &OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK]; - } -#endif - else { - OS_IRQTable[i] = function; - } - if (info) { - info->func = (void (*)(void*))function; - info->arg = 0; - info->enable = TRUE; - } - } - intrBit >>= 1; - } -} - -OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit) { - int i; - OSIrqFunction *funcPtr = &OS_IRQTable[0]; - for (i = 0; i < OS_IRQ_TABLE_MAX; i++) { - if (intrBit & 1) { - if (REG_OS_IE_D0_SHIFT <= i && i <= REG_OS_IE_D3_SHIFT) { - return (OSIrqFunction)OSi_IrqCallbackInfo[i - REG_OS_IE_D0_SHIFT].func; - } else if (REG_OS_IE_T0_SHIFT <= i && i <= REG_OS_IE_T3_SHIFT) { - return (OSIrqFunction)OSi_IrqCallbackInfo[i - REG_OS_IE_T0_SHIFT + OSi_IRQCALLBACK_NO_TIMER0].func; - } -#ifdef SDK_ARM7 - else if (i == REG_OS_IE_VB_SHIFT) { - return (OSIrqFunction)OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK].func; - } -#endif - return *funcPtr; - } - intrBit >>= 1; - funcPtr++; - } - return NULL; -} - -void OSi_EnterDmaCallback(u32 dmaNo, void (*callback)(void * arg), void * arg) { - OSIrqMask imask = (1UL << (dmaNo + REG_OS_IE_D0_SHIFT)); - OSi_IrqCallbackInfo[dmaNo].func = callback; - OSi_IrqCallbackInfo[dmaNo].arg = arg; - OSi_IrqCallbackInfo[dmaNo].enable = OS_EnableIrqMask(imask) & imask; -} - -void OSi_EnterTimerCallback(u32 timerNo, void (*callback)(void * arg), void * arg) { - OSIrqMask imask = (1UL << (timerNo + REG_OS_IE_T0_SHIFT)); - OSi_IrqCallbackInfo[timerNo + OSi_IRQCALLBACK_NO_TIMER0].func = callback; - OSi_IrqCallbackInfo[timerNo + OSi_IRQCALLBACK_NO_TIMER0].arg = arg; - OS_EnableIrqMask(imask); - OSi_IrqCallbackInfo[timerNo + OSi_IRQCALLBACK_NO_TIMER0].enable = TRUE; -} - -OSIrqMask OS_SetIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = newMask; - OS_RestoreIrq(ime); - return prep; -} - -#ifdef SDK_ARM7 -BOOL OS_DisableIrq(void) { - BOOL ime = reg_OS_IME; - reg_OS_IME = 0; - return ime; -} -#endif - -OSIrqMask OS_EnableIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = prep | newMask; - OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_DisableIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IE; - reg_OS_IE = prep & ~newMask; - OS_RestoreIrq(ime); - return prep; -} - -OSIrqMask OS_ResetRequestIrqMask(OSIrqMask newMask) { - BOOL ime = OS_DisableIrq(); - OSIrqMask prep = reg_OS_IF; - reg_OS_IF = newMask; - OS_RestoreIrq(ime); - return prep; -} - -extern void SDK_IRQ_STACKSIZE(void); - -//---- defs for irq stack -#ifdef SDK_ARM9 -#define OSi_IRQ_STACK_TOP (HW_DTCM_SVC_STACK - ((s32)SDK_IRQ_STACKSIZE)) -#define OSi_IRQ_STACK_BOTTOM HW_DTCM_SVC_STACK -#else -#define OSi_IRQ_STACK_TOP (HW_PRV_WRAM_IRQ_STACK_END - ((s32)SDK_IRQ_STACKSIZE)) -#define OSi_IRQ_STACK_BOTTOM HW_PRV_WRAM_IRQ_STACK_END -#endif - -//---- Stack CheckNumber -#ifdef SDK_ARM9 -#define OSi_IRQ_STACK_CHECKNUM_BOTTOM 0xfddb597dUL -#define OSi_IRQ_STACK_CHECKNUM_TOP 0x7bf9dd5bUL -#define OSi_IRQ_STACK_CHECKNUM_WARN 0x597dfbd9UL -#else -#define OSi_IRQ_STACK_CHECKNUM_BOTTOM 0xd73bfdf7UL -#define OSi_IRQ_STACK_CHECKNUM_TOP 0xfbdd37bbUL -#define OSi_IRQ_STACK_CHECKNUM_WARN 0xbdf7db3dUL -#endif - - -void OS_SetIrqStackChecker(void) { - *(u32 *)(OSi_IRQ_STACK_BOTTOM - sizeof(u32)) = OSi_IRQ_STACK_CHECKNUM_BOTTOM; - *(u32 *)(OSi_IRQ_STACK_TOP) = OSi_IRQ_STACK_CHECKNUM_TOP; -} diff --git a/sub/lib/src/OS_irqHandler.c b/sub/lib/src/OS_irqHandler.c deleted file mode 100644 index f0360fdd..00000000 --- a/sub/lib/src/OS_irqHandler.c +++ /dev/null @@ -1,171 +0,0 @@ -#include -#include -#include -#include -#include -#include - -extern OSThreadQueue OSi_IrqThreadQueue; -asm void OS_IrqHandler_ThreadSwitch(void); - -void OS_WaitIrq(BOOL clear, OSIrqMask irqFlags) { - OSIntrMode enabled = OS_DisableInterrupts(); - if (clear) { - OS_ClearIrqCheckFlag(irqFlags); - } - OS_RestoreInterrupts(enabled); - while (!(OS_GetIrqCheckFlag() & irqFlags)) { - OS_SleepThread(&OSi_IrqThreadQueue); - } -} - -#ifdef SDK_ARM9 -#include -#endif - -OSThreadQueue OSi_IrqThreadQueue = {NULL, NULL}; - -#ifdef SDK_ARM9 -#include -#endif - -#ifdef SDK_ARM9 -#include -#endif //SDK_ARM9 - -asm void OS_IrqHandler(register OSIrqMask irq) { - stmdb sp!, {lr} - mov r12, #HW_REG_BASE - add r12, r12, #REG_IE_OFFSET - // Are intr disabled? - ldr r1, [r12, #REG_IME_OFFSET - REG_IE_OFFSET] - cmp r1, #0 - ldmeqia sp!, {pc} - // Is intr requested? - ldmia r12, {r1, r2} - ands r1, r1, r2 - ldmeqia sp!, {pc} - // Least significant intr flag takes highest priority -#ifdef SDK_ARM9 - mov r3, #1 << 31 -@clzLoop: - clz r0, r1 - bics r1, r1, r3, lsr r0 - bne @clzLoop - mov r1, r3, lsr r0 - str r1, [r12, #REG_IF_OFFSET - REG_IE_OFFSET] - rsbs r0, r0, #31 -#else - mov r3, #1 - mov r0, #0 -@clzLoop: - ands r2, r1, r3, lsl r0 - addeq r0, r0, #1 - beq @clzLoop - str r2, [r12, #REG_IF_OFFSET - REG_IE_OFFSET] -#endif - ldr r1, =OS_IRQTable - ldr r0, [r1, r0, lsl #2] - ldr lr, =OS_IrqHandler_ThreadSwitch - bx r0 -} - -asm void OS_IrqHandler_ThreadSwitch(void) { - ldr r12, =OSi_IrqThreadQueue - mov r3, #0 - ldr r12, [r12, #OSThreadQueue.head] - mov r2, #1 - cmp r12, #0 - beq @noThreadsToWake -@wakeThreadsLoop: - str r2, [r12, #OSThread.state] - str r3, [r12, #OSThread.queue] - str r3, [r12, #OSThread.link.prev] - ldr r0, [r12, #OSThread.link.next] - str r3, [r12, #OSThread.link.next] - mov r12, r0 - cmp r12, #0 - bne @wakeThreadsLoop - ldr r12, =OSi_IrqThreadQueue - str r3, [r12, #OSThreadQueue.head] - str r3, [r12, #OSThreadQueue.tail] - ldr r12, =OSi_ThreadInfo - mov r1, #1 - strh r1, [r12, #OSThreadInfo.isNeedRescheduling] -@noThreadsToWake: - ldr r12, =OSi_ThreadInfo - ldrh r1, [r12, #OSThreadInfo.isNeedRescheduling] - cmp r1, #0 - ldreq pc, [sp], #4 - mov r1, #0 - strh r1, [r12, #OSThreadInfo.isNeedRescheduling] - mov r3, #HW_PSR_DISABLE_IRQ_FIQ | HW_PSR_IRQ_MODE - msr cpsr_c, r3 - add r2, r12, #OSThreadInfo.list - ldr r1, [r2] -@listLoop: - cmp r1, #0 - ldrneh r0, [r1, #OSThread.state] - cmpne r0, #OS_THREAD_STATE_READY - ldrne r1, [r1, #OSThread.next] - bne @listLoop - cmp r1, #0 - bne @checkNext -@enableFiqAndBail: - mov r3, #HW_PSR_DISABLE_IRQ | HW_PSR_IRQ_MODE - msr cpsr_c, r3 - ldr pc, [sp], #4 -@checkNext: - ldr r0, [r12, #OSThreadInfo.current] - cmp r1, r0 - beq @enableFiqAndBail - ldr r3, [r12, #OSThreadInfo.switchCallback] - cmp r3, #0 - beq @noSwitchCB - stmdb sp!, {r0, r1, r12} - mov lr, pc - bx r3 - ldmia sp!, {r0, r1, r12} -@noSwitchCB: - str r1, [r12, #OSThreadInfo.current] - mrs r2, spsr - str r2, [r0, #OSThread.context + OS_CONTEXT_CPSR]! -#ifdef SDK_ARM9 - stmdb sp!, {r0, r1} - add r0, r0, #OSThread.context - add r0, r0, #OSContext.cp_context - ldr r1, =CP_SaveContext - blx r1 - ldmia sp!, {r0, r1} -#endif - ldmib sp!, {r2, r3} - stmib r0!, {r2, r3} - ldmib sp!, {r2, r3, r12, lr} - stmib r0!, {r2-r14} ^ - stmib r0!, {lr} -#ifdef SDK_CONTEXT_HAS_SP_SVC - mov r3, #HW_PSR_DISABLE_IRQ_FIQ | HW_PSR_SVC_MODE - msr cpsr_c, r3 - stmib r0!, {sp} -#endif -#ifdef SDK_ARM9 -stmdb sp!, {r1} - add r0, r1, #OSThread.context - add r0, r0, #OSContext.cp_context - ldr r1, =CPi_RestoreContext - blx r1 - ldmia sp!, {r1} -#endif -#ifdef SDK_CONTEXT_HAS_SP_SVC - ldr sp, [r1, #OSThread.context + OSContext.sp_svc] - mov r3, #HW_PSR_DISABLE_IRQ_FIQ | HW_PSR_IRQ_MODE - msr cpsr_c, r3 -#endif - ldr r2, [r1, #OSThread.context + OSContext.cpsr]! - msr spsr_fc, r2 - ldr lr, [r1, #OSThread.context + OSContext.pc_plus4] - ldmib r1, {r0-r14} ^ - nop - stmda sp!, {r0-r3, r12, lr} - ldmia sp!, {pc} -} diff --git a/sub/lib/src/OS_irqTable.c b/sub/lib/src/OS_irqTable.c deleted file mode 100644 index 647924dc..00000000 --- a/sub/lib/src/OS_irqTable.c +++ /dev/null @@ -1,114 +0,0 @@ -#include -#include - -OSIrqCallbackInfo OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NUM]; - -u16 OSi_IrqCallbackInfoIndex[] = { - REG_OS_IE_D0_SHIFT, - REG_OS_IE_D1_SHIFT, - REG_OS_IE_D2_SHIFT, - REG_OS_IE_D3_SHIFT, - REG_OS_IE_T0_SHIFT, - REG_OS_IE_T1_SHIFT, - REG_OS_IE_T2_SHIFT, - REG_OS_IE_T3_SHIFT, -#ifdef SDK_ARM7 - REG_OS_IE_VB_SHIFT, -#endif -}; - -#ifdef SDK_ARM9 -#include -#endif -OSIrqFunction OS_IRQTable[] = { -#ifdef SDK_ARM7 - OSi_IrqVBlank, -#else - OS_IrqDummy, -#endif - OS_IrqDummy, - OS_IrqDummy, - OSi_IrqTimer0, - OSi_IrqTimer1, - OSi_IrqTimer2, - OSi_IrqTimer3, - OS_IrqDummy, - OSi_IrqDma0, - OSi_IrqDma1, - OSi_IrqDma2, - OSi_IrqDma3, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, -#ifdef SDK_ARM7 - OS_IrqDummy, - OS_IrqDummy, - OS_IrqDummy, -#endif -}; - -#ifdef SDK_ARM9 -#include -#endif - -void OS_IrqDummy(void) {} - -void OSi_IrqCallback(s32 index) { - OSIrqMask imask = (1UL << OSi_IrqCallbackInfoIndex[index]); - void (*callback)(void *) = OSi_IrqCallbackInfo[index].func; - OSi_IrqCallbackInfo[index].func = NULL; - if (callback) callback(OSi_IrqCallbackInfo[index].arg); - OS_SetIrqCheckFlag(imask); - if (!OSi_IrqCallbackInfo[index].enable) - OS_DisableIrqMask(imask); -} - -void OSi_IrqDma0(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA0); -} - -void OSi_IrqDma1(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA1); -} - -void OSi_IrqDma2(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA2); -} - -void OSi_IrqDma3(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_DMA3); -} - -void OSi_IrqTimer0(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER0); -} - -void OSi_IrqTimer1(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER1); -} - -void OSi_IrqTimer2(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER2); -} - -void OSi_IrqTimer3(void) { - OSi_IrqCallback(OSi_IRQCALLBACK_NO_TIMER3); -} - -#ifdef SDK_ARM7 -void OSi_IrqVBlank(void) { - void (*callback)(void) = (void(*)(void))OSi_IrqCallbackInfo[OSi_IRQCALLBACK_NO_VBLANK].func; - (*(u32 *)HW_VBLANK_COUNT_BUF)++; - if (callback) { - callback(); - } - OS_SetIrqCheckFlag(1UL << REG_OS_IE_VB_SHIFT); -} -#endif //SDK_ARM7 diff --git a/sub/lib/src/OS_message.c b/sub/lib/src/OS_message.c deleted file mode 100644 index 57f205fa..00000000 --- a/sub/lib/src/OS_message.c +++ /dev/null @@ -1,96 +0,0 @@ -#include -#include -#include - -void OS_InitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount) -{ - OS_InitThreadQueue(&mq->queueSend); - OS_InitThreadQueue(&mq->queueReceive); - mq->msgArray = msgArray; - mq->msgCount = msgCount; - mq->firstIndex = 0; - mq->usedCount = 0; -} - -BOOL OS_SendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->msgCount <= mq->usedCount) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueSend); - } - } - - s32 lastIndex = (mq->firstIndex + mq->usedCount) % mq->msgCount; - mq->msgArray[lastIndex] = msg; - mq->usedCount++; - - OS_WakeupThread(&mq->queueReceive); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_ReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueReceive); - } - } - - if (msg != NULL) - { - *msg = mq->msgArray[mq->firstIndex]; - } - mq->firstIndex = (mq->firstIndex + 1) % mq->msgCount; - mq->usedCount--; - - OS_WakeupThread(&mq->queueSend); - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} - -BOOL OS_ReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - while (mq->usedCount == 0) - { - if (!(flags & OS_MESSAGE_BLOCK)) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - else - { - OS_SleepThread(&mq->queueReceive); - } - } - - if (msg != NULL) - { - *msg = mq->msgArray[mq->firstIndex]; - } - - (void)OS_RestoreInterrupts(enabled); - return TRUE; -} diff --git a/sub/lib/src/OS_mutex.c b/sub/lib/src/OS_mutex.c deleted file mode 100644 index a162b84e..00000000 --- a/sub/lib/src/OS_mutex.c +++ /dev/null @@ -1,94 +0,0 @@ -#include -#include -#include - -void OS_InitMutex(OSMutex* mutex) { - OS_InitThreadQueue(&mutex->queue); - mutex->thread = NULL; - mutex->count = 0; -} - -void OS_LockMutex(OSMutex* mutex) { - OSIntrMode mode; - OSThread* current; - - mode = OS_DisableInterrupts(); - current = OS_GetCurrentThread(); - while (1) { - OSThread* owner = mutex->thread; - if (owner == NULL) { - mutex->thread = current; - mutex->count++; - OSi_EnqueueTail(current, mutex); - break; - } - else if (owner == current) { - mutex->count++; - break; - } - else { - current->mutex = mutex; - OS_SleepThread(&mutex->queue); - current->mutex = NULL; - } - } - (void)OS_RestoreInterrupts(mode); -} - -void OS_UnlockMutex(OSMutex* mutex) { - OSIntrMode mode; - OSThread* current; - - mode = OS_DisableInterrupts(); - current = OS_GetCurrentThread(); - if (mutex->thread == current) { - if (--mutex->count == 0) { - OSi_DequeueItem(current, mutex); - mutex->thread = NULL; - OS_WakeupThread(&mutex->queue); - } - } - (void)OS_RestoreInterrupts(mode); -} - -void OSi_UnlockAllMutex(OSThread * thread) { - OSMutex * mutex; - while (thread->mutexQueue.head) { - mutex = OSi_RemoveMutexLinkFromQueue(&thread->mutexQueue); - mutex->count = 0; - mutex->thread = NULL; - OS_WakeupThread(&mutex->queue); - } -} - -void OSi_EnqueueTail(OSThread * thread, OSMutex * mutex) { - OSMutex * tail = thread->mutexQueue.tail; - if (tail == NULL) { - thread->mutexQueue.head = mutex; - } - else { - tail->link.next = mutex; - } - mutex->link.prev = tail; - mutex->link.next = NULL; - thread->mutexQueue.tail = mutex; -} - -void OSi_DequeueItem(OSThread * thread, OSMutex * mutex) { - OSMutex *next = mutex->link.next; - OSMutex *prev = mutex->link.prev; - - if (next == NULL) { - thread->mutexQueue.tail = prev; - } - else { - next->link.prev = prev; - } - - if (prev == NULL) { - thread->mutexQueue.head = next; - } - else { - prev->link.next = next; - } -} diff --git a/sub/lib/src/OS_reset.c b/sub/lib/src/OS_reset.c deleted file mode 100644 index 44cd7771..00000000 --- a/sub/lib/src/OS_reset.c +++ /dev/null @@ -1,293 +0,0 @@ -#include - -extern void SDK_IRQ_STACKSIZE(void); - -#define OSi_HW_DTCM SDK_AUTOLOAD_DTCM_START -#define RESET_HW_DTCM_IRQ_STACK_END SDK_AUTOLOAD_DTCM_START + 0x00003fc0 - HW_SVC_STACK_SIZE - -#ifdef SDK_ARM9 -static vu16 OSi_IsResetOccurred = FALSE; -static u16 OSi_IsInitReset = FALSE; -#else -static u16 OSi_IsInitReset = FALSE; -static vu16 OSi_IsResetOccurred = FALSE; -#endif - -u32 OSi_CpuClear32(u32 value, void *ptr, u32 size); -void OSi_ReadCardRom32(u32 src, void *dst, int len); - -void OSi_DoResetSystem(void); -void OSi_ReloadRomData(void); -void OSi_DoBoot(void); - -void OS_InitReset(void) { - if (OSi_IsInitReset) { - return; - } - OSi_IsInitReset = TRUE; -#ifdef SDK_ARM9 - PXI_Init(); - while (!PXI_IsCallbackReady(PXI_FIFO_TAG_OS, PXI_PROC_ARM7)) {} -#endif //SDK_ARM9 - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_OS, OSi_CommonCallback); -} - -BOOL OS_IsResetOccurred(void) { - return OSi_IsResetOccurred; -} - -void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err) { -#pragma unused(tag) -#pragma unused(err) - u16 command; - u16 commandArg; - - command = (u16)((data & OS_PXI_COMMAND_MASK) >> OS_PXI_COMMAND_SHIFT); - commandArg = (u16)((data & OS_PXI_DATA_MASK) >> OS_PXI_DATA_SHIFT); - if (command == OS_PXI_COMMAND_RESET) { - OSi_IsResetOccurred = TRUE; - } else { - OS_Panic(""); - } -} - -void OSi_SendToPxi(u16 data) { - u32 pxi_send_data; - - pxi_send_data = (u32)(data) << OS_PXI_COMMAND_SHIFT; - while (PXI_SendWordByFifo(PXI_FIFO_TAG_OS, pxi_send_data, FALSE) != PXI_FIFO_SUCCESS) {} -} - -#ifdef SDK_ARM9 -void OS_ResetSystem(u32 parameter) { - u16 lockId; - - if (MB_IsMultiBootChild()) { - OS_Panic(""); - } - - lockId = OS_GetLockID(); - CARD_LockRom(lockId); - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - OS_SetIrqMask(OS_IE_SPFIFO_RECV); - OS_ResetRequestIrqMask(~OS_IE_SPFIFO_RECV); - *(vu32 *)HW_RESET_PARAMETER_BUF = parameter; - OSi_SendToPxi(OS_PXI_COMMAND_RESET); - asm { - ldr r0, =RESET_HW_DTCM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r0, r0, r1 - mov sp, r0 - bl OSi_DoResetSystem // noreturn - } -} - -#include -void OSi_DoResetSystem(void) { - while (!OSi_IsResetOccurred) {} - reg_OS_IME = 0; - OSi_ReloadRomData(); - OSi_DoBoot(); // noreturn -} - -asm void OSi_DoBoot(void) { - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - ldr r1, =OSi_HW_DTCM - add r1, r1, #0x3FC0 - add r1, r1, #HW_DTCM_SYSRV_OFS_INTR_VECTOR - mov r0, #0 - str r0, [r1] - ldr r1, =REG_SUBINTF_ADDR - @waitSubIntf: - ldrh r0, [r1] - and r0, r0, #0x000F - cmp r0, #0x0001 - bne @waitSubIntf - mov r0, #0x0100 - strh r0, [r1] - mov r0, #0 - ldr r3, =HW_EXCP_VECTOR_MAIN - ldr r4, [r3] - ldr r1, =HW_BIOS_EXCP_STACK_MAIN - mov r2, #0x80 - bl OSi_CpuClear32 - str r4, [r3] - ldr r1, =HW_PXI_SIGNAL_PARAM_ARM9 - mov r2, #0x18 - bl OSi_CpuClear32 - ldr r1, =HW_WM_RSSI_POOL - strh r0, [r1] - ldr r1, =HW_COMPONENT_PARAM - mov r2, #0x64 - bl OSi_CpuClear32 - ldr r1, =REG_SUBINTF_ADDR - @waitSubIntf2: - ldrh r0, [r1] - and r0, r0, #0x000F - cmp r0, #0x0001 - beq @waitSubIntf2 - mov r0, #0x0000 - strh r0, [r1] - ldr r3, =HW_ROM_HEADER_BUF - ldr r12, [r3, #0x24] // ARM9 entry - mov lr, r12 - ldr r11, =HW_PXI_SIGNAL_PARAM_ARM9 - ldmia r11, {r0-r10} - mov r11, #0 - bx r12 -} - -asm u32 OSi_CpuClear32(register u32 value, register void * startAddr, register u32 size) { - add r12, r1, r2 - @loop: - cmp r1, r12 - stmltia r1!, {r0} - blt @loop - bx lr -} - -void OSi_ReloadRomData(void) { - u32 p = (u32)HW_ROM_HEADER_BUF; - const u32 rom_base = *(u32 *)HW_ROM_BASE_OFFSET_BUF; - if (rom_base >= 0x8000) { - OSi_ReadCardRom32(rom_base, (void *)p, 0x160); - } - u32 src_arm9 = *(u32 *)(p + 0x20); - u32 dst_arm9 = *(u32 *)(p + 0x28); - u32 len_arm9 = *(u32 *)(p + 0x2C); - u32 src_arm7 = *(u32 *)(p + 0x30); - u32 dst_arm7 = *(u32 *)(p + 0x38); - u32 len_arm7 = *(u32 *)(p + 0x3C); - OSIntrMode bak_cpsr = OS_DisableInterrupts(); - DC_StoreAll(); - DC_InvalidateAll(); - OS_RestoreInterrupts(bak_cpsr); - IC_InvalidateAll(); - DC_WaitWriteBufferEmpty(); - src_arm9 += rom_base; - src_arm7 += rom_base; - if (src_arm9 < 0x8000) { - u32 diff = 0x8000 - src_arm9; - src_arm9 = 0x8000; - dst_arm9 += diff; - len_arm9 -= diff; - } - OSi_ReadCardRom32(src_arm9, (void *)dst_arm9, len_arm9); - OSi_ReadCardRom32(src_arm7, (void *)dst_arm7, len_arm7); -} - -#undef reg_CARD_MASTERCNT -#undef reg_CARD_CMD -#undef reg_CARD_CNT -#undef reg_CARD_DATA - -void OSi_ReadCardRom32(u32 src, void *dst, int len) { - vu8 *reg_CARD_MASTERCNT = (vu8 *)(HW_REG_BASE + 0x1a1); - vu8 *reg_CARD_CMD = (vu8 *)(HW_REG_BASE + 0x1a8); - vu32 *reg_CARD_CNT = (vu32 *)(HW_REG_BASE + 0x1a4); - vu32 *reg_CARD_DATA = (vu32 *)(HW_REG_BASE + 0x100010); - vu32 *hdr_GAME_BUF = (vu32 *)(HW_ROM_HEADER_BUF + 0x60); - - enum { - CARD_MASTER_SELECT_ROM = 0x00, - CARD_MASTER_ENABLE = 0x80, - CARD_CMD_READ_PAGE = 0xb7, - CARD_CTRL_CMD_MASK = 0x07000000, - CARD_CTRL_CMD_PAGE = 0x01000000, - CARD_CTRL_READ = 0x00000000, - CARD_CTRL_RESET_HI = 0x20000000, - CARD_CTRL_START = 0x80000000, - CARD_CTRL_READY = 0x00800000, - CARD_ENUM_END - }; - - const u32 ctrl_start = ((*hdr_GAME_BUF & ~CARD_CTRL_CMD_MASK) | (CARD_CTRL_CMD_PAGE | CARD_CTRL_READ | CARD_CTRL_START | CARD_CTRL_RESET_HI)); - int pos = -(src & 0x1FF); - while ((*reg_CARD_CNT & CARD_CTRL_START) != 0) {} - *reg_CARD_MASTERCNT = (u32)(CARD_MASTER_SELECT_ROM | CARD_MASTER_ENABLE); - for (src += pos; pos < len; src += 512) - { - //---- setting for command of one page reading - reg_CARD_CMD[0] = CARD_CMD_READ_PAGE; - reg_CARD_CMD[1] = src >> 24; - reg_CARD_CMD[2] = src >> 16; - reg_CARD_CMD[3] = src >> 8; - reg_CARD_CMD[4] = src >> 0; - reg_CARD_CMD[5] = 0; - reg_CARD_CMD[6] = 0; - reg_CARD_CMD[7] = 0; - *reg_CARD_CNT = ctrl_start; - for (;;) - { - u32 ctrl = *reg_CARD_CNT; - if ((ctrl & CARD_CTRL_READY) != 0) { - const u32 data = *reg_CARD_DATA; - if ((pos >= 0) && (pos < len)) { - *(u32 *)(dst + pos) = data; - } - pos += sizeof(u32); - } - if (!(ctrl & CARD_CTRL_START)) { - break; - } - } - } -} - -#include - -#else -void OS_ResetSystem(void) { - MI_StopDma(0); - MI_StopDma(1); - MI_StopDma(2); - MI_StopDma(3); - OS_SetIrqMask(OS_IE_FIFO_RECV); - OS_ResetRequestIrqMask(0xFFFFFFFF); - SND_Shutdown(); - OSi_SendToPxi(OS_PXI_COMMAND_RESET); - OSi_DoResetSystem(); -} - -void OSi_DoResetSystem(void) { - reg_OS_IME = 0; - OSi_DoBoot(); -} - -#include -asm void OSi_DoBoot(void) { - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - ldr r1, =HW_INTR_VECTOR_BUF - mov r0, #0 - str r0, [r1] - ldr r1, =REG_MAINPINTF_ADDR - mov r0, #0x100 - strh r0, [r1] -@waitMainpIntf: - ldrh r0, [r1] - and r0, r0, #0x000F - cmp r0, #0x0001 - bne @waitMainpIntf - ldr r1, =REG_MAINPINTF_ADDR - mov r0, #0 - strh r0, [r1] -@waitMainpIntf2: - ldrh r0, [r1] - cmp r0, #0x0001 - beq @waitMainpIntf2 - ldr r3, =HW_ROM_HEADER_BUF - ldr r12, [r3, #0x34] // ARM7 entry - mov lr, r12 - mov r0, #0 - mov r1, #0 - mov r2, #0 - mov r3, #0 - bx r12 -} -#include -#endif diff --git a/sub/lib/src/OS_spinLock.c b/sub/lib/src/OS_spinLock.c deleted file mode 100644 index c91b0d86..00000000 --- a/sub/lib/src/OS_spinLock.c +++ /dev/null @@ -1,262 +0,0 @@ -#include - -#define OSi_LOCKID_INITIAL_FLAG_0 0xffffffff -#define OSi_LOCKID_INITIAL_FLAG_1 0xffff0000 - -#ifdef SDK_ARM9 -#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_MAIN -#define OSi_ANYP_LOCK_ID_START OS_MAINP_LOCK_ID_START -#else -#define OSi_ANYP_LOCK_ID_FLAG HW_LOCK_ID_FLAG_SUB -#define OSi_ANYP_LOCK_ID_START OS_SUBP_LOCK_ID_START -#endif - -void OSi_AllocateCartridgeBus(void); -void OSi_FreeCartridgeBus(void); -void OSi_AllocateCardBus(void); -void OSi_FreeCardBus(void); - -// FIXME: This looks like it's meant to be a linker-inserted veneer, but I can't get it to insert properly yet -#ifdef SDK_ARM9 -static inline void OSi_WaitByLoop(void) { - SVC_WaitByLoop(0x1000 / 4); -} -#else -void VENEER_SVC_WaitByLoop(s32 count); -static inline void OSi_WaitByLoop(void) { - VENEER_SVC_WaitByLoop(0x1000 / 4); -} -#endif - -void OS_InitLock(void) { - static BOOL isInitialized = FALSE; - OSLockWord *lockp; - - if (isInitialized) - return; - - isInitialized = TRUE; - lockp = (OSLockWord *)HW_INIT_LOCK_BUF; - -#ifdef SDK_ARM9 - lockp->lockFlag = 0; - OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); - while (lockp->extension != 0) { - OSi_WaitByLoop(); - } - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; - MI_CpuClear32((void *)HW_SHARED_LOCK_BUF, HW_CTRDG_LOCK_BUF - HW_SHARED_LOCK_BUF); - MIi_SetCardProcessor(MI_PROCESSOR_ARM7); - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); - OS_UnlockByWord(OS_MAINP_SYSTEM_LOCK_ID - 1, lockp, NULL); - OS_LockByWord(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL); -#else - lockp->extension = 0; - while (lockp->ownerID != OS_MAINP_SYSTEM_LOCK_ID) { - OSi_WaitByLoop(); - } - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[0] = OSi_LOCKID_INITIAL_FLAG_0; - ((u32 *)OSi_ANYP_LOCK_ID_FLAG)[1] = OSi_LOCKID_INITIAL_FLAG_1; - lockp->extension = OS_SUBP_SYSTEM_LOCK_ID; -#endif -} - -#ifdef SDK_ARM7 -asm void VENEER_SVC_WaitByLoop(register s32 count) { - ldr ip, =SVC_WaitByLoop - bx ip -} -#endif - -#ifdef SDK_ARM7 -static inline -#endif //SDK_ARM7 -s32 OSi_DoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq) { - s32 lastLockFlag; - - while ((lastLockFlag = OSi_DoTryLockByWord(lockID, lockp, ctrlFuncp, disableFiq)) > 0) { - OSi_WaitByLoop(); - } - return lastLockFlag; -} - -s32 OS_LockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) { - return OSi_DoLockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OSi_DoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq) { - if (lockID != lockp->ownerID) { - return -2; - } - OSIntrMode ime = disableFiq ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); - lockp->ownerID = 0; - if (ctrlFuncp != NULL) { - ctrlFuncp(); - } - lockp->lockFlag = 0; - if (disableFiq) { - OS_RestoreInterrupts_IrqAndFiq(ime); - } else { - OS_RestoreInterrupts(ime); - } - return 0; -} - -s32 OS_UnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void)) { - return OSi_DoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -s32 OSi_DoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp)(void), BOOL disableFiq) { - s32 lastLockFlag; - OSIntrMode ime; - - ime = disableFiq ? OS_DisableInterrupts_IrqAndFiq() : OS_DisableInterrupts(); - lastLockFlag = MI_SwapWord(lockID, &lockp->lockFlag); - if (lastLockFlag == 0) { - if (ctrlFuncp != NULL) { - ctrlFuncp(); - } - lockp->ownerID = lockID; - } - if (disableFiq) { - OS_RestoreInterrupts_IrqAndFiq(ime); - } else { - OS_RestoreInterrupts(ime); - } - return lastLockFlag; -} - -s32 OS_LockCartridge(u16 lockID) { - return OSi_DoLockByWord(lockID, (OSLockWord*)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); -} - -s32 OS_UnlockCartridge(u16 lockID) { - return OSi_DoUnlockByWord(lockID, (OSLockWord*)HW_CTRDG_LOCK_BUF, OSi_FreeCartridgeBus, TRUE); -} - -// For backwards compatibility. -// Nintendo decided they didn't want to use a define here, -// so they made an asm func instead -asm s32 OS_UnLockCartridge(u16 lockID) { - ldr r1, =OS_UnlockCartridge - bx r1 -} - -s32 OS_TryLockCartridge(u16 lockID) { - return OSi_DoTryLockByWord(lockID, (OSLockWord*)HW_CTRDG_LOCK_BUF, OSi_AllocateCartridgeBus, TRUE); -} - -void OSi_AllocateCartridgeBus(void) { -#ifdef SDK_ARM9 - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM9); -#endif -} - -void OSi_FreeCartridgeBus(void) { -#ifdef SDK_ARM9 - MIi_SetCartridgeProcessor(MI_PROCESSOR_ARM7); -#endif -} - -s32 OS_LockCard(u16 lockID) { - return OS_LockByWord(lockID, (OSLockWord*)HW_CARD_LOCK_BUF, OSi_AllocateCardBus); -} - -s32 OS_UnlockCard(u16 lockID) { - return OS_UnlockByWord(lockID, (OSLockWord*)HW_CARD_LOCK_BUF, OSi_FreeCardBus); -} - -// For backwards compatibility. -// Nintendo decided they didn't want to use a define here, -// so they made an asm func instead -asm s32 OS_UnLockCard(u16 lockID) { - ldr r1, =OS_UnlockCard - bx r1 -} - -BOOL OS_TryLockCard(u16 lockID) { - return OSi_DoTryLockByWord(lockID, (OSLockWord*)HW_CARD_LOCK_BUF, OSi_AllocateCardBus, FALSE); -} - -void OSi_AllocateCardBus(void) { -#ifdef SDK_ARM9 - MIi_SetCardProcessor(MI_PROCESSOR_ARM9); -#endif -} - -void OSi_FreeCardBus(void) { -#ifdef SDK_ARM9 - MIi_SetCardProcessor(MI_PROCESSOR_ARM7); -#endif -} - -u16 OS_ReadOwnerOfLockWord(OSLockWord *lockp) { - return lockp->ownerID; -} - -asm s32 OS_GetLockID(void) { - ldr r3, =OSi_ANYP_LOCK_ID_FLAG; - ldr r1, [r3] -#ifdef SDK_ARM9 - clz r2, r1 -#else //SDK_ARM7 - mov r2, #0 - mov r0, #0x80000000 -_lp1: - tst r1, r0 - bne _ex1 - add r2, r2, #1 - cmp r2, #32 - beq _ex1 - mov r0, r0, lsr #1 - b _lp1 -_ex1: -#endif //SDK_ARM9 - cmp r2, #32 - movne r0, #OSi_ANYP_LOCK_ID_START - bne @movne - add r3, r3, #4 - ldr r1, [r3] -#ifdef SDK_ARM9 - clz r2, r1 -#else //SDK_ARM7 - mov r2, #0 - mov r0, #0x80000000 -_lp2: - tst r1, r0 - bne _ex2 - add r2, r2, #1 - cmp r2, #32 - beq _ex2 - mov r0, r0, lsr #1 - b _lp2 -_ex2: -#endif //SDK_ARM9 - cmp r2, #32 - ldr r0, =-3 - bxeq lr - mov r0, #OSi_ANYP_LOCK_ID_START + 32 -@movne: - add r0, r0, r2 - mov r1, #0x80000000 - mov r1, r1, lsr r2 - ldr r2, [r3] - bic r2, r2, r1 - str r2, [r3] - bx lr -} - -asm void OS_ReleaseLockID(register u16 lockID) { - ldr r3, =OSi_ANYP_LOCK_ID_FLAG - cmp r0, #OSi_ANYP_LOCK_ID_START + 32 - addpl r3, r3, #4 - subpl r0, r0, #OSi_ANYP_LOCK_ID_START + 32 - submi r0, r0, #OSi_ANYP_LOCK_ID_START - mov r1, #0x80000000 - mov r1, r1, lsr r0 - ldr r2, [r3] - orr r2, r2, r1 - str r2, [r3] - bx lr -} diff --git a/sub/lib/src/OS_system.c b/sub/lib/src/OS_system.c deleted file mode 100644 index b15f1145..00000000 --- a/sub/lib/src/OS_system.c +++ /dev/null @@ -1,75 +0,0 @@ -#include - -asm OSIntrMode OS_EnableInterrupts(void) { - mrs r0, cpsr - bic r1, r0, #HW_PSR_IRQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_DisableInterrupts(void) { - mrs r0, cpsr - orr r1, r0, #HW_PSR_IRQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_RestoreInterrupts(register OSIntrMode prev) { - mrs r1, cpsr - bic r2, r1, #HW_PSR_IRQ_DISABLE - orr r2, r2, r0 - msr cpsr_c, r2 - and r0, r1, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSIntrMode OS_DisableInterrupts_IrqAndFiq(void) { - mrs r0, cpsr - orr r1, r0, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - msr cpsr_c, r1 - and r0, r0, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - bx lr -} - -asm OSIntrMode OS_RestoreInterrupts_IrqAndFiq(register OSIntrMode prev) { - mrs r1, cpsr - bic r2, r1, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - orr r2, r2, r0 - msr cpsr_c, r2 - and r0, r1, #HW_PSR_IRQ_DISABLE | HW_PSR_FIQ_DISABLE - bx lr -} - -asm OSIntrMode_Irq OS_GetCpsrIrq(void) { - mrs r0, cpsr - and r0, r0, #HW_PSR_IRQ_DISABLE - bx lr -} - -asm OSProcMode OS_GetProcMode(void) { - mrs r0, cpsr - and r0, r0, #HW_PSR_CPU_MODE_MASK - bx lr -} - -#ifdef SDK_ARM9 -#include -asm void OS_SpinWait(register u32 cycles) { -@loop: - subs r0, r0, #4 - bhs @loop - bx lr -} -#include -#else -void OS_SpinWait(u32 cycles) { - SVC_WaitByLoop((s32)cycles / 4); -} -#endif - -void OS_WaitVBlankIntr(void) { - SVC_WaitByLoop(1); - OS_WaitIrq(TRUE, OS_IE_VBLANK); -} diff --git a/sub/lib/src/OS_terminate_proc.c b/sub/lib/src/OS_terminate_proc.c deleted file mode 100644 index d84dbb95..00000000 --- a/sub/lib/src/OS_terminate_proc.c +++ /dev/null @@ -1,19 +0,0 @@ -#include - -void OS_Terminate(void) { -#ifdef SDK_ARM7 - CTRDG_VibPulseEdgeUpdate(0); -#endif - while (1) { - OS_DisableInterrupts(); - OS_Halt(); - } -} - -#ifdef SDK_ARM9 -asm void OS_Halt(void) { - mov r0, #0 - mcr p15, 0, r0, c7, c0, 4 - bx lr -} -#endif diff --git a/sub/lib/src/OS_thread.c b/sub/lib/src/OS_thread.c deleted file mode 100644 index 42cb4a74..00000000 --- a/sub/lib/src/OS_thread.c +++ /dev/null @@ -1,610 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -extern void SDK_SYS_STACKSIZE(void); -extern void SDK_IRQ_STACKSIZE(void); - -OSThread OSi_LauncherThread; -OSThread OSi_IdleThread; -OSThreadInfo OSi_ThreadInfo; -OSThread **OSi_CurrentThreadPtr; -void *OSi_SystemCallbackInSwitchThread = NULL; -u32 OSi_RescheduleCount = 0; -static int OSi_ThreadIdCount = 0; -void *OSi_StackForDestructor = NULL; -static u32 exitThreadStatus = 0; -static u32 killThreadStatus = 0; -static u32 OSi_SystemStackBuffer = 0; -BOOL OSi_IsThreadInitialized = FALSE; - - -static s32 OSi_GetUnusedThreadId(void); -//static void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread); -//static OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue); -//static OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread); -static void OSi_InsertThreadToList(OSThread *thread); -//static void OSi_RemoveThreadFromList(OSThread *thread); -static void OSi_RescheduleThread(void); -void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg); -static void OSi_ExitThread(void *arg); -void OSi_ExitThread_Destroy(void); -static void OSi_SleepAlarmCallback(void *arg); - -#pragma warn_no_side_effect off -static inline s32 OSi_GetUnusedThreadId(void) -{ - OSi_SystemStackBuffer; - killThreadStatus; - exitThreadStatus; - return ++OSi_ThreadIdCount; -} -#pragma warn_no_side_effect on - -static inline void OS_RescheduleThread(void) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - OSi_RescheduleThread(); - (void)OS_RestoreInterrupts(enabled); -} - -inline void OS_SetThreadDestructor(OSThread *thread, OSThreadDestructor dtor) -{ - thread->destructor = dtor; -} - -void OSi_InsertLinkToQueue(OSThreadQueue *queue, OSThread *thread) -{ - OSThread *next = queue->head; - - while (next && next->priority <= thread->priority) - { - if (next == thread) - return; - next = next->link.next; - } - - if (!next) - { - OSThread *prev = queue->tail; - - if (!prev) - { - queue->head = thread; - } - else - { - prev->link.next = thread; - } - - thread->link.prev = prev; - thread->link.next = NULL; - queue->tail = thread; - } - else - { - OSThread *prev = next->link.prev; - - if (!prev) - { - queue->head = thread; - } - else - { - prev->link.next = thread; - } - - thread->link.prev = prev; - thread->link.next = next; - next->link.prev = thread; - } -} - -static OSThread *OSi_RemoveLinkFromQueue(OSThreadQueue *queue) -{ - OSThread *thread = queue->head; - - if (thread) - { - OSThread *next = thread->link.next; - - queue->head = next; - - if (next) - { - next->link.prev = NULL; - } - else - { - queue->tail = NULL; - thread->queue = NULL; - } - } - - return thread; -} - -OSThread *OSi_RemoveSpecifiedLinkFromQueue(OSThreadQueue *queue, OSThread *thread) -{ - OSThread *queueHead = queue->head; - - while (queueHead) - { - OSThread *next = queueHead->link.next; - - if (queueHead == thread) - { - OSThread *prev = queueHead->link.prev; - - if (queue->head == queueHead) - { - queue->head = next; - } - else - { - prev->link.next = next; - } - - if (queue->tail == queueHead) - { - queue->tail = prev; - } - else - { - next->link.prev = prev; - } - - break; - } - - queueHead = next; - } - - return queueHead; -} - -OSMutex *OSi_RemoveMutexLinkFromQueue(OSMutexQueue *queue) -{ - OSMutex *mutexHead = queue->head; - - if (mutexHead) - { - OSMutex *next = mutexHead->link.next; - - queue->head = next; - - if (next) - { - next->link.prev = NULL; - } - else - { - queue->tail = NULL; - } - } - - return mutexHead; -} - -static void OSi_InsertThreadToList(OSThread *thread) -{ - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - - while(t && t->priority < thread->priority) - { - pre = t; - t = t->next; - } - - if (!pre) - { - thread->next = OSi_ThreadInfo.list; - OSi_ThreadInfo.list = thread; - } - else - { - thread->next = pre->next; - pre->next = thread; - } -} - -void OSi_RemoveThreadFromList(OSThread *thread) -{ - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - - while (t && t != thread) - { - pre = t; - t = t-> next; - } - - if (!pre) - { - OSi_ThreadInfo.list = thread->next; - } - else - { - pre->next = thread->next; - } -} - -static void OSi_RescheduleThread(void) -{ - if (OSi_RescheduleCount <= 0) - { - OSThreadInfo *info = &OSi_ThreadInfo; - if (info->irqDepth > 0 || OS_GetProcMode() == OS_PROCMODE_IRQ) - { - info->isNeedRescheduling = TRUE; - } - else - { - OSThread *currentThread = OSi_GetCurrentThread(); - OSThread *nextThread = OS_SelectThread(); - - if (currentThread == nextThread || !nextThread) - return; - - if (currentThread->state != OS_THREAD_STATE_TERMINATED - && OS_SaveContext(¤tThread->context)) - return; - - if (OSi_SystemCallbackInSwitchThread) - { - ((OSSwitchThreadCallback)OSi_SystemCallbackInSwitchThread) (currentThread, nextThread); - } - - if (info->switchCallback) - { - ((OSSwitchThreadCallback)info->switchCallback) (currentThread, nextThread); - } - - OS_SetCurrentThread(nextThread); - - OS_LoadContext(&nextThread->context); - } - } -} - -void OS_InitThread(void) -{ - if (OSi_IsThreadInitialized) - return; - OSi_IsThreadInitialized = TRUE; - - OSi_CurrentThreadPtr = &(OSi_ThreadInfo.current); - - OSi_LauncherThread.priority = OS_THREAD_LAUNCHER_PRIORITY; - OSi_LauncherThread.id = 0; - OSi_LauncherThread.state = OS_THREAD_STATE_READY; - OSi_LauncherThread.next = NULL; - - OSi_LauncherThread.profiler = NULL; - - OSi_ThreadInfo.list = &OSi_LauncherThread; - - OS_SetCurrentThread(&OSi_LauncherThread); - - void *stackLo = (((s32)SDK_SYS_STACKSIZE) <= 0) ? - (void *)((u32)HW_WRAM - (s32)SDK_SYS_STACKSIZE) : - (void *)((u32)(HW_PRV_WRAM_IRQ_STACK_END - (s32)SDK_IRQ_STACKSIZE) - (s32)SDK_SYS_STACKSIZE); - - OSi_LauncherThread.stackBottom = (u32)(HW_PRV_WRAM_IRQ_STACK_END - (s32)SDK_IRQ_STACKSIZE); - OSi_LauncherThread.stackTop = (u32)stackLo; - OSi_LauncherThread.stackWarningOffset = 0; - - //checksums - *(u32 *)(OSi_LauncherThread.stackBottom - sizeof(u32)) = 0xd73bfdf7UL; - *(u32 *)OSi_LauncherThread.stackTop = 0xfbdd37bbUL; - - OS_InitThreadQueue(&OSi_LauncherThread.joinQueue); - - OSi_ThreadInfo.isNeedRescheduling = FALSE; - OSi_ThreadInfo.irqDepth = 0; - - OS_GetSystemWork()->threadinfo_subp = &OSi_ThreadInfo; - - (void)OS_SetSwitchThreadCallback(NULL); -} - -void OS_CreateThread(OSThread *thread, void (*func) (void *), void *arg, void *stack, u32 stackSize, u32 prio) -{ - OSIntrMode enable = OS_DisableInterrupts(); - - s32 index = OSi_GetUnusedThreadId(); - - thread->priority = prio; - thread->id = (u32)index; - thread->state = OS_THREAD_STATE_WAITING; - - thread->profiler = NULL; - - OSi_InsertThreadToList(thread); - - thread->stackBottom = (u32)stack; - thread->stackTop = (u32)stack - stackSize; - thread->stackWarningOffset = 0; - - *(u32 *)(thread->stackBottom - sizeof(u32)) = 0xd73bfdf7UL; - *(u32 *)thread->stackTop = 0xfbdd37bbUL; - - OS_InitThreadQueue(&thread->joinQueue); - - OS_InitContext(&thread->context, (u32)func, (u32)stack - 4); - - thread->context.r[0] = (u32)arg; - thread->context.lr = (u32)OS_ExitThread; - - MI_CpuClear32((void *)((u32)stack - stackSize + 4), stackSize - 8); - - thread->mutex = NULL; - thread->mutexQueue.head = NULL; - thread->mutexQueue.tail = NULL; - - OS_SetThreadDestructor(thread, NULL); - - thread->queue = NULL; - thread->link.prev = thread->link.next = NULL; - - MI_CpuClear32(&thread->specific[0], sizeof(void *) * OS_THREAD_SPECIFIC_MAX); - - thread->alarmForSleep = NULL; - - (void)OS_RestoreInterrupts(enable); -} - -void OS_ExitThread(void) -{ - (void)OS_DisableInterrupts(); - OSi_ExitThread_ArgSpecified(OS_GetCurrentThread(), 0); -} - -void OSi_ExitThread_ArgSpecified(OSThread *thread, void *arg) -{ - if (OSi_StackForDestructor) - { - OS_InitContext(&thread->context, (u32)OSi_ExitThread, (u32)OSi_StackForDestructor); - thread->context.r[0] = (u32)arg; - thread->context.cpsr |= HW_PSR_DISABLE_IRQ; - thread->state = OS_THREAD_STATE_READY; - OS_LoadContext(&thread->context); - } - else - { - OSi_ExitThread(arg); - } -} - -static void OSi_ExitThread(void *arg) -{ - OSThread *currentThread = OSi_GetCurrentThread(); - OSThreadDestructor destructor = currentThread->destructor; - - if (destructor) - { - currentThread->destructor = NULL; - destructor(arg); - (void)OS_DisableInterrupts(); - } - - OSi_ExitThread_Destroy(); -} - -void OSi_ExitThread_Destroy(void) -{ - OSThread *currentThread = OSi_GetCurrentThread(); - (void)OS_DisableScheduler(); - - OSi_UnlockAllMutex(currentThread); - - if (currentThread->queue) - { - (void)OSi_RemoveSpecifiedLinkFromQueue(currentThread->queue, currentThread); - } - - OSi_RemoveThreadFromList(currentThread); - - currentThread->state = OS_THREAD_STATE_TERMINATED; - - OS_WakeupThread(¤tThread->joinQueue); - - (void)OS_EnableScheduler(); - - OS_RescheduleThread(); - - OS_Terminate(); -} - -void OS_JoinThread(OSThread *thread) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - if (thread->state != OS_THREAD_STATE_TERMINATED) - { - OS_SleepThread(&thread->joinQueue); - } - - (void)OS_RestoreInterrupts(enabled); -} - -BOOL OS_IsThreadTerminated(const OSThread *thread) -{ - return (thread->state == OS_THREAD_STATE_TERMINATED) ? TRUE : FALSE; -} - -void OS_SleepThread(OSThreadQueue *queue) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - OSThread *currentThread = OSi_GetCurrentThread(); - - if (queue) - { - currentThread->queue = queue; - OSi_InsertLinkToQueue(queue, currentThread); - } - - currentThread->state = OS_THREAD_STATE_WAITING; - OSi_RescheduleThread(); - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_WakeupThread(OSThreadQueue *queue) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - if (queue->head) - { - while (queue->head) - { - OSThread *thread = OSi_RemoveLinkFromQueue(queue); - - thread->state = OS_THREAD_STATE_READY; - thread->queue = NULL; - thread->link.prev = thread->link.next = NULL; - } - - OS_InitThreadQueue(queue); - OSi_RescheduleThread(); - } - - (void)OS_RestoreInterrupts(enabled); -} - -void OS_WakeupThreadDirect(OSThread *thread) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - thread->state = OS_THREAD_STATE_READY; - OSi_RescheduleThread(); - - (void)OS_RestoreInterrupts(enabled); -} - -OSThread *OS_SelectThread(void) -{ - OSThread *thread = OSi_ThreadInfo.list; - - while (thread && !OS_IsThreadRunnable(thread)) - { - thread = thread->next; - } - - return thread; -} - -BOOL OS_SetThreadPriority(OSThread *thread, u32 prio) -{ - OSThread *t = OSi_ThreadInfo.list; - OSThread *pre = NULL; - OSIntrMode enabled = OS_DisableInterrupts(); - - while (t && t != thread) - { - pre = t; - t = t->next; - } - - if (!t || t == &OSi_IdleThread) - { - (void)OS_RestoreInterrupts(enabled); - return FALSE; - } - - if (t->priority != prio) - { - if (!pre) - { - OSi_ThreadInfo.list = thread->next; - } - else - { - pre->next = thread->next; - } - - thread->priority = prio; - OSi_InsertThreadToList(thread); - - OSi_RescheduleThread(); - } - - (void)OS_RestoreInterrupts(enabled); - - return TRUE; -} - -void OS_Sleep(u32 msec) -{ - OSAlarm alarm; - - OS_CreateAlarm(&alarm); - OSThread *volatile p_thread = OSi_GetCurrentThread(); - OSIntrMode enabled = OS_DisableInterrupts(); - - p_thread->alarmForSleep = &alarm; - - OS_SetAlarm(&alarm, OS_MilliSecondsToTicks(msec), &OSi_SleepAlarmCallback, - (void*)&p_thread); - while (p_thread != NULL) - { - OS_SleepThread(NULL); - } - (void)OS_RestoreInterrupts(enabled); -} - -static void OSi_SleepAlarmCallback(void *arg) -{ - OSThread **pp_thread = (OSThread **)arg; - OSThread *p_thread = *pp_thread; - *pp_thread = NULL; - - p_thread->alarmForSleep = NULL; - - OS_WakeupThreadDirect(p_thread); -} - -OSSwitchThreadCallback OS_SetSwitchThreadCallback(OSSwitchThreadCallback callback) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - OSSwitchThreadCallback prev = OSi_ThreadInfo.switchCallback; - OSi_ThreadInfo.switchCallback = callback; - - (void)OS_RestoreInterrupts(enabled); - return prev; -} - -u32 OS_DisableScheduler(void) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - u32 count; - - if (OSi_RescheduleCount < (u32)-1) - { - count = OSi_RescheduleCount++; - } - (void)OS_RestoreInterrupts(enabled); - - return count; -} - -u32 OS_EnableScheduler(void) -{ - OSIntrMode enabled = OS_DisableInterrupts(); - u32 count = 0; - - if (OSi_RescheduleCount > 0) - { - count = OSi_RescheduleCount--; - } - (void)OS_RestoreInterrupts(enabled); - - return count; -} diff --git a/sub/lib/src/OS_tick.c b/sub/lib/src/OS_tick.c deleted file mode 100644 index 08f3146e..00000000 --- a/sub/lib/src/OS_tick.c +++ /dev/null @@ -1,71 +0,0 @@ -#include - -static u16 OSi_UseTick = FALSE; -vu64 OSi_TickCounter; -BOOL OSi_NeedResetTimer = FALSE; - -#define OSi_TICK_TIMERCONTROL ( REG_OS_TM0CNT_H_E_MASK | REG_OS_TM0CNT_H_I_MASK | OS_TIMER_PRESCALER_64 ) -#define OSi_TICK_TIMER OS_TIMER_0 -#define OSi_TICK_IE_TIMER OS_IE_TIMER0 - -void OSi_CountUpTick(void); - -void OS_InitTick(void) { - if (OSi_UseTick) { - return; - } - OSi_UseTick = TRUE; - OSi_SetTimerReserved(OSi_TICK_TIMER); - OSi_TickCounter = 0; - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount(OSi_TICK_TIMER, 0); - OS_SetTimerControl(OSi_TICK_TIMER, OSi_TICK_TIMERCONTROL); - OS_SetIrqFunction(OSi_TICK_IE_TIMER, OSi_CountUpTick); - OS_EnableIrqMask(OSi_TICK_IE_TIMER); - OSi_NeedResetTimer = FALSE; -} - -BOOL OS_IsTickAvailable(void) { - return OSi_UseTick; -} - -void OSi_CountUpTick(void) { - // timer0 interrupt - OSi_TickCounter++; - if (OSi_NeedResetTimer) { - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount(OSi_TICK_TIMER, 0); - OS_SetTimerControl(OSi_TICK_TIMER, OSi_TICK_TIMERCONTROL); - OSi_NeedResetTimer = FALSE; - } - OSi_EnterTimerCallback(OSi_TICK_TIMER, (void (*)(void *))OSi_CountUpTick, NULL); -} - -OSTick OS_GetTick(void) { - vu16 countL; - vu64 countH; - OSIntrMode enabled = OS_DisableInterrupts(); - - countL = *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); - countH = OSi_TickCounter & 0xffffffffffffULL; - if (reg_OS_IF & OSi_TICK_IE_TIMER && !(countL & 0x8000)) { - countH++; - } - OS_RestoreInterrupts(enabled); - return (countH << 16) | countL; -} - -u16 OS_GetTickLo(void) { - return *(REGType16 *)((u32)REG_TM0CNT_L_ADDR + OSi_TICK_TIMER * 4); -} - -void OS_SetTick(OSTick tick) { - OSIntrMode enabled = OS_DisableInterrupts(); - reg_OS_IF = OSi_TICK_IE_TIMER; - OSi_NeedResetTimer = TRUE; - OSi_TickCounter = tick >> 16; - OS_SetTimerControl(OSi_TICK_TIMER, 0); - OS_SetTimerCount(OSi_TICK_TIMER, tick & 0xFFFF); - OS_SetTimerControl(OSi_TICK_TIMER, OSi_TICK_TIMERCONTROL); - OS_RestoreInterrupts(enabled); -} diff --git a/sub/lib/src/OS_timer.c b/sub/lib/src/OS_timer.c deleted file mode 100644 index a285545f..00000000 --- a/sub/lib/src/OS_timer.c +++ /dev/null @@ -1,7 +0,0 @@ -#include - -static u16 OSi_TimerReserved = 0; - -void OSi_SetTimerReserved(s32 timerNum) { - OSi_TimerReserved |= (1 << timerNum); -} diff --git a/sub/lib/src/OS_valarm.c b/sub/lib/src/OS_valarm.c deleted file mode 100644 index 855dd312..00000000 --- a/sub/lib/src/OS_valarm.c +++ /dev/null @@ -1,258 +0,0 @@ -#include - -#define HW_LCD_LINES (263) - -#define OSi_VHIGHT HW_LCD_LINES - -#define OSi_VALARM_LATER 0 -#define OSi_VALARM_NOW 1 -#define OSi_VALARM_TIMEOUT 2 - -struct OSiVAlarmQueue { - OSVAlarm *head; - OSVAlarm *tail; -} OSi_VAlarmQueue; - -u16 OSi_UseVAlarm = FALSE; -s32 OSi_VFrameCount; -s32 OSi_PreviousVCount; - -static void OSi_SetNextVAlarm(OSVAlarm *alarm); -static void OSi_AppendVAlarm(OSVAlarm *alarm); -static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVCount, s32 currentVFrame); -static s32 OSi_GetVFrame(s32 vcount); -static void OSi_VAlarmHandler(void); - -void OS_InitVAlarm(void) { - if (!OSi_UseVAlarm) { - OSi_UseVAlarm = TRUE; - OSi_VAlarmQueue.head = NULL; - OSi_VAlarmQueue.tail = NULL; - OS_DisableIrqMask(OS_IE_V_COUNT); - OSi_VFrameCount = 0; - OSi_PreviousVCount = 0; - } -} - -BOOL OS_IsVAlarmAvailable(void) { - return OSi_UseVAlarm; -} - -void OSi_InsertVAlarm(OSVAlarm *alarm) { - OSVAlarm *prev; - OSVAlarm *next; - for (next = OSi_VAlarmQueue.head; next; next = next->next) { - if ((next->frame < alarm->frame) || (next->frame == alarm->frame) && (next->fire <= alarm->fire)) { - continue; - } - prev = next->prev; - alarm->prev = prev; - alarm->next = next; - next->prev = alarm; - if (prev) { - prev->next = alarm; - } else { - OSi_VAlarmQueue.head = alarm; - OSi_SetNextVAlarm(alarm); - } - return; - } - OSi_AppendVAlarm(alarm); -} - -static void OSi_AppendVAlarm(OSVAlarm *alarm) { - OSVAlarm *prev = OSi_VAlarmQueue.tail; - alarm->prev = prev; - alarm->next = NULL; - OSi_VAlarmQueue.tail = alarm; - if (prev) { - prev->next = alarm; - } else { - OSi_VAlarmQueue.head = alarm; - OSi_SetNextVAlarm(alarm); - } -} - -void OSi_DetachVAlarm(OSVAlarm *alarm) { - OSVAlarm *prev; - OSVAlarm *next; - if (alarm == NULL) { - return; - } - prev = alarm->prev; - next = alarm->next; - if (next) { - next->prev = prev; - } else { - OSi_VAlarmQueue.tail = prev; - } - if (prev) { - prev->next = next; - } else { - OSi_VAlarmQueue.head = next; - } -} - -void OS_CreateVAlarm(OSVAlarm *alarm) { - alarm->handler = NULL; - alarm->tag = 0; - alarm->finish = FALSE; -} - -void OS_SetVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) { - OSIntrMode enabled = OS_DisableInterrupts(); - s32 currentVCount; - s32 currentVFrame; - if (!alarm || alarm->handler) { - OS_Panic(""); - } - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - alarm->period = FALSE; - alarm->fire = count; - alarm->frame = ((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); - alarm->delay = delay; - alarm->handler = handler; - alarm->arg = arg; - alarm->canceled = FALSE; - OSi_InsertVAlarm(alarm); - OS_RestoreInterrupts(enabled); -} - -void OS_SetPeriodicVAlarm(OSVAlarm *alarm, s16 count, s16 delay, OSVAlarmHandler handler, void *arg) { - OSIntrMode enabled = OS_DisableInterrupts(); - s32 currentVCount; - s32 currentVFrame; - if (!alarm || alarm->handler) { - OS_Panic(""); - } - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - alarm->period = TRUE; - alarm->fire = count; - alarm->frame = ((count > currentVCount) ? currentVFrame : (currentVFrame + 1)); - alarm->delay = delay; - alarm->handler = handler; - alarm->arg = arg; - alarm->canceled = FALSE; - OSi_InsertVAlarm(alarm); - OS_RestoreInterrupts(enabled); -} - -__declspec(noinline) -static void OSi_SetNextVAlarm(OSVAlarm *alarm) { - OS_SetIrqFunction(OS_IE_V_COUNT, (void(*)())OSi_VAlarmHandler); - GX_SetVCountEqVal(alarm->fire); - GX_VCountEqIntr(TRUE); - OS_EnableIrqMask(OS_IE_V_COUNT); -} - -void OS_SetVAlarmTag(OSVAlarm *alarm, u32 tag) { - if (tag == 0) { - OS_Panic(""); - } - if (alarm) { - alarm->tag = tag; - } -} - -void OS_CancelVAlarm(OSVAlarm *alarm) { - OSIntrMode enabled = OS_DisableInterrupts(); - alarm->canceled = TRUE; - if (alarm->handler == NULL) { - OS_RestoreInterrupts(enabled); - return; - } - OSi_DetachVAlarm(alarm); - alarm->handler = NULL; - OS_RestoreInterrupts(enabled); -} - -void OS_CancelVAlarms(u32 tag) { - OSIntrMode enabled = OS_DisableInterrupts(); - OSVAlarm *alarm; - OSVAlarm *next; - if (tag == 0) { - OS_Panic(""); - } - for (alarm = OSi_VAlarmQueue.head, next = alarm ? alarm->next : NULL; alarm; alarm = next, next = alarm? alarm->next : NULL) { - if (alarm->tag == tag) { - OS_CancelVAlarm(alarm); - } - } - OS_RestoreInterrupts(enabled); -} - -void OSi_VAlarmHandler(void) { - OSVAlarm *alarm; - OSVAlarmHandler handler; - int check; - s32 currentVCount; - s32 currentVFrame; - - OS_DisableIrqMask(OS_IE_V_COUNT); - GX_VCountEqIntr(FALSE); - OS_SetIrqCheckFlag(OS_IE_V_COUNT); - currentVCount = GX_GetVCountEqVal(); - currentVFrame = OSi_GetVFrame(currentVCount - 1); - - while (NULL != (alarm = OSi_VAlarmQueue.head)) { - currentVCount = GX_GetVCount(); - currentVFrame = OSi_GetVFrame(currentVCount); - check = OSi_CompareVCount(alarm, currentVFrame, currentVCount); - switch (check) { - case OSi_VALARM_LATER: - OSi_SetNextVAlarm(alarm); - if (alarm->fire != GX_GetVCount() || alarm->frame != currentVFrame) { - return; - } - OS_DisableIrqMask(OS_IE_V_COUNT); - GX_VCountEqIntr(FALSE); - OS_ResetRequestIrqMask(OS_IE_V_COUNT); - // fallthrough - case OSi_VALARM_NOW: - handler = alarm->handler; - OSi_DetachVAlarm(alarm); - alarm->handler = NULL; - if (handler) { - (handler)(alarm->arg); - } - if (alarm->period && !alarm->canceled) { - alarm->handler = handler; - alarm->frame = OSi_VFrameCount + 1; - OSi_InsertVAlarm(alarm); - } - break; - case OSi_VALARM_TIMEOUT: - OSi_DetachVAlarm(alarm); - alarm->frame = OSi_VFrameCount + 1; - OSi_InsertVAlarm(alarm); - break; - } - } -} - -static int OSi_CompareVCount(OSVAlarm *alarm, s32 currentVFrame, s32 currentVCount) { - s32 delayVFrame; - s32 delayVCount; - - delayVFrame = currentVFrame - alarm->frame; - delayVCount = currentVCount - alarm->fire; - if (delayVFrame < 0 || (delayVFrame == 0 && delayVCount < 0)) { - return OSi_VALARM_LATER; - } - if (delayVCount < 0) { - delayVCount += OSi_VHIGHT; - } - return (delayVCount <= alarm->delay) ? OSi_VALARM_NOW : OSi_VALARM_TIMEOUT; -} - -static s32 OSi_GetVFrame(s32 vcount) { - OSIntrMode enabled = OS_DisableInterrupts(); - if (vcount < OSi_PreviousVCount) { - OSi_VFrameCount++; - } - OSi_PreviousVCount = vcount; - OS_RestoreInterrupts(enabled); - return OSi_VFrameCount; -} diff --git a/sub/lib/src/PAD_xyButton.c b/sub/lib/src/PAD_xyButton.c deleted file mode 100644 index 7058118e..00000000 --- a/sub/lib/src/PAD_xyButton.c +++ /dev/null @@ -1,31 +0,0 @@ -#include - -BOOL PADi_XYButtonAvailable = FALSE; -// OSAlarm PADi_XYButtonAlarm = {}; -extern OSAlarm PADi_XYButtonAlarm; - -void PADi_XYButton_Callback(void); - -BOOL PAD_InitXYButton(void) { - if (!OS_IsTickAvailable() || !OS_IsAlarmAvailable()) { - return FALSE; - } - if (PADi_XYButtonAvailable) { - return FALSE; - } - OS_CreateAlarm(&PADi_XYButtonAlarm); - OS_SetPeriodicAlarm(&PADi_XYButtonAlarm, OS_GetTick() + 2094ll, 2094ll, (OSAlarmHandler)PADi_XYButton_Callback, NULL); - PADi_XYButtonAvailable = TRUE; - return TRUE; -} - -void PADi_XYButton_Callback(void) { - u16 rcnt0_h; - u16 data_r7 = 0; - EXIi_SelectRcnt(EXI_GPIOIF_GPIO); - rcnt0_h = reg_EXI_RCNT0_H; - if (rcnt0_h & REG_EXI_RCNT0_H_DATA_R7_MASK) { - data_r7 = 0x8000; - } - *(u16 *)HW_BUTTON_XY_BUF = data_r7 | ((rcnt0_h & (REG_EXI_RCNT0_H_DATA_R3_MASK | REG_EXI_RCNT0_H_DATA_R1_MASK | REG_EXI_RCNT0_H_DATA_R0_MASK)) << 10); -} diff --git a/sub/lib/src/PXI_fifo.c b/sub/lib/src/PXI_fifo.c deleted file mode 100644 index 7c57935f..00000000 --- a/sub/lib/src/PXI_fifo.c +++ /dev/null @@ -1,148 +0,0 @@ -#include - -// Stub file for now -u16 FifoCtrlInit = 0; -PXIFifoCallback FifoRecvCallbackTable[PXI_MAX_FIFO_TAG]; - -PXIFifoStatus PXIi_SetToFifo(u32 data); - -void PXI_Init(void) { - PXI_InitFifo(); -} - -void PXI_InitFifo(void) { - int i; - OSSystemWork *work; - OSIntrMode enabled = OS_DisableInterrupts(); - if (!FifoCtrlInit) { - FifoCtrlInit = TRUE; - work = OS_GetSystemWork(); - work->pxiHandleChecker[PXI_PROC_ARM7] = 0; - for (i = 0; i < PXI_MAX_FIFO_TAG; i++) { - FifoRecvCallbackTable[i] = NULL; - } - reg_PXI_FIFO_CNT = REG_PXI_FIFO_CNT_FIELD( - 1,1,1,0,0,1,0,0,0 - ); - OS_ResetRequestIrqMask(OS_IE_FIFO_RECV); - OS_SetIrqFunction(OS_IE_FIFO_RECV, PXIi_HandlerRecvFifoNotEmpty); - OS_EnableIrqMask(OS_IE_FIFO_RECV); -#ifdef SDK_ARM7 - for (i = 8; i >= 0; i--) { - reg_PXI_INTF = (i << REG_PXI_INTF_A7STATUS_SHIFT); - OS_SpinWait(1000); - if (((reg_PXI_INTF & REG_PXI_INTF_A9STATUS_MASK) >> REG_PXI_INTF_A9STATUS_SHIFT) != i) { - i = 8; - } - } -#else - { - int timeout; - s32 c; - for (i = 0;; i++) { - c = (reg_PXI_INTF & REG_PXI_INTF_A9STATUS_MASK) >> REG_PXI_INTF_A9STATUS_SHIFT; - reg_PXI_INTF = c << REG_PXI_INTF_A7STATUS_SHIFT; - if (c == 0 && i > 4) { - break; - } - for (timeout = 1000; ((reg_PXI_INTF & REG_PXI_INTF_A9STATUS_MASK) >> REG_PXI_INTF_A9STATUS_SHIFT) == c; timeout--) { - if (timeout == 0) { - i = 0; - break; - } - } - } - } -#endif - } - OS_RestoreInterrupts(enabled); -} - -void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback) { - OSIntrMode enabled = OS_DisableInterrupts(); - OSSystemWork *work = OS_GetSystemWork(); - - FifoRecvCallbackTable[fifotag] = callback; - if (callback != NULL) { - work->pxiHandleChecker[PXI_PROC_ARM7] |= (1 << fifotag); - } else { - work->pxiHandleChecker[PXI_PROC_ARM7] &= ~(1 << fifotag); - } - OS_RestoreInterrupts(enabled); -} - -BOOL PXI_IsCallbackReady(s32 fifotag, PXIProc proc) { - OSSystemWork *work = OS_GetSystemWork(); - return ((work->pxiHandleChecker[proc] & (1 << fifotag)) != 0); -} - -s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err) { - PXIFifoMessage fifomsg; - - fifomsg.e.tag = fifotag; - fifomsg.e.err = err; - fifomsg.e.data = data; - return PXIi_SetToFifo(fifomsg.raw); -} - -#ifdef SDK_ARM9 -static inline -#endif -PXIFifoStatus PXIi_SetToFifo(u32 data) { - OSIntrMode enabled; - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_ERR_MASK) { - reg_PXI_FIFO_CNT |= (REG_PXI_FIFO_CNT_E_MASK | REG_PXI_FIFO_CNT_ERR_MASK); - return PXI_FIFO_FAIL_SEND_ERR; - } - enabled = OS_DisableInterrupts(); - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_SEND_FULL_MASK) { - OS_RestoreInterrupts(enabled); - return PXI_FIFO_FAIL_SEND_FULL; - } - - reg_PXI_SEND_FIFO = data; - OS_RestoreInterrupts(enabled); - return PXI_FIFO_SUCCESS; -} - -static inline PXIFifoStatus PXIi_GetFromFifo(u32 *data_p) { - OSIntrMode enabled; - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_ERR_MASK) { - reg_PXI_FIFO_CNT |= (REG_PXI_FIFO_CNT_E_MASK | REG_PXI_FIFO_CNT_ERR_MASK); - return PXI_FIFO_FAIL_RECV_ERR; - } - enabled = OS_DisableInterrupts(); - if (reg_PXI_FIFO_CNT & REG_PXI_FIFO_CNT_RECV_EMP_MASK) { - OS_RestoreInterrupts(enabled); - return PXI_FIFO_FAIL_RECV_EMPTY; - } - *data_p = reg_PXI_RECV_FIFO; - OS_RestoreInterrupts(enabled); - return PXI_FIFO_SUCCESS; -} - -void PXIi_HandlerRecvFifoNotEmpty(void) { - PXIFifoMessage fifomsg; - s32 result; - PXIFifoCallback callback; - - while (1) { - result = PXIi_GetFromFifo(&fifomsg.raw); - if (result == PXI_FIFO_FAIL_RECV_EMPTY) { - return; - } - if (result == PXI_FIFO_FAIL_RECV_ERR) { - continue; - } - if (fifomsg.e.tag == 0) { - continue; - } - callback = FifoRecvCallbackTable[fifomsg.e.tag]; - if (callback != NULL) { - callback((PXIFifoTag)fifomsg.e.tag, fifomsg.e.data, fifomsg.e.err); - } else if (!fifomsg.e.err) { - fifomsg.e.err = TRUE; - PXIi_SetToFifo(fifomsg.raw); - } - } -}