diff --git a/asm/code_8099360.s b/asm/code_8099360.s deleted file mode 100644 index df6619244..000000000 --- a/asm/code_8099360.s +++ /dev/null @@ -1,1908 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8099708 -sub_8099708: - push {lr} - sub sp, 0x4 - str r1, [sp] - lsls r0, 16 - lsrs r0, 16 - bl sub_8003810 - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8099708 - - thumb_func_start sub_809971C -sub_809971C: - push {r4-r6,lr} - adds r6, r1, 0 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r2, 0 - ble _0809973E - adds r4, r2, 0 -_0809972A: - adds r0, r5, 0 - adds r1, r0, 0x1 - lsls r1, 16 - lsrs r5, r1, 16 - ldm r6!, {r1} - bl sub_8003810 - subs r4, 0x1 - cmp r4, 0 - bne _0809972A -_0809973E: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_809971C - - thumb_func_start sub_8099744 -sub_8099744: - push {lr} - bl sub_80039B8 - pop {r0} - bx r0 - thumb_func_end sub_8099744 - - thumb_func_start sub_8099750 -sub_8099750: - push {lr} - bl TransferBGPaletteBuffer - pop {r0} - bx r0 - thumb_func_end sub_8099750 - - thumb_func_start sub_809975C -sub_809975C: - push {lr} - bl sub_809977C - pop {r0} - bx r0 - thumb_func_end sub_809975C - - thumb_func_start sub_8099768 -sub_8099768: - push {lr} - bl sub_809977C - bl sub_8099744 - bl sub_8099750 - pop {r0} - bx r0 - thumb_func_end sub_8099768 - - thumb_func_start sub_809977C -sub_809977C: - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r1, _080997DC - movs r0, 0 - strb r0, [r1] - ldr r1, _080997E0 - movs r0, 0 - strh r0, [r1] - ldr r6, _080997E4 - adds r0, r6, 0 - bl sub_8099838 - ldr r0, _080997E8 - mov r8, r0 - bl sub_8099838 - ldr r4, _080997EC - adds r0, r4, 0 - bl sub_8099838 - subs r4, 0x8 - movs r0, 0 - str r0, [r4] - movs r5, 0x80 - lsls r5, 1 - strh r5, [r4, 0x14] - strh r0, [r6, 0xC] - bl sub_8099DD0 - mov r0, r8 - strh r5, [r0, 0xC] - adds r0, r5, 0 - bl sub_8099E58 - ldr r1, _080997F0 - movs r2, 0 - adds r0, r1, 0 - adds r0, 0x40 -_080997CA: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _080997CA - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080997DC: .4byte gUnknown_2039990 -_080997E0: .4byte gUnknown_2039992 -_080997E4: .4byte gUnknown_2039958 -_080997E8: .4byte gUnknown_2039968 -_080997EC: .4byte gUnknown_2039980 -_080997F0: .4byte gUnknown_2039998 - thumb_func_end sub_809977C - - thumb_func_start sub_80997F4 -sub_80997F4: - push {lr} - lsls r0, 16 - ldr r2, _08099818 - lsrs r0, 15 - adds r0, r2 - strh r1, [r0] - ldr r0, _0809981C - bl sub_8099848 - ldr r0, _08099820 - bl sub_8099848 - ldr r0, _08099824 - bl sub_8099848 - pop {r0} - bx r0 - .align 2, 0 -_08099818: .4byte gUnknown_2039998 -_0809981C: .4byte gUnknown_2039958 -_08099820: .4byte gUnknown_2039968 -_08099824: .4byte gUnknown_2039980 - thumb_func_end sub_80997F4 - - thumb_func_start sub_8099828 -sub_8099828: - lsls r0, 16 - ldr r1, _08099834 - lsrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_08099834: .4byte gUnknown_2039998 - thumb_func_end sub_8099828 - - thumb_func_start sub_8099838 -sub_8099838: - movs r1, 0x1 - str r1, [r0] - movs r1, 0 - strh r1, [r0, 0xC] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - bx lr - thumb_func_end sub_8099838 - - thumb_func_start sub_8099848 -sub_8099848: - push {lr} - adds r1, r0, 0 - ldr r0, [r1] - cmp r0, 0 - bne _08099856 - movs r0, 0x1 - str r0, [r1] -_08099856: - pop {r0} - bx r0 - thumb_func_end sub_8099848 - - thumb_func_start sub_809985C -sub_809985C: - push {lr} - adds r2, r0, 0 - cmp r1, 0 - blt _08099872 - cmp r1, 0 - bne _08099874 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r2, 0xC] - movs r0, 0x1 - b _08099876 -_08099872: - movs r1, 0x1E -_08099874: - movs r0, 0x2 -_08099876: - str r0, [r2] - strh r1, [r2, 0x4] - strh r1, [r2, 0x6] - pop {r0} - bx r0 - thumb_func_end sub_809985C - - thumb_func_start sub_8099880 -sub_8099880: - push {lr} - adds r2, r0, 0 - cmp r1, 0 - blt _08099892 - cmp r1, 0 - bne _08099894 - strh r1, [r2, 0xC] - movs r0, 0x1 - b _08099896 -_08099892: - movs r1, 0x1E -_08099894: - movs r0, 0x3 -_08099896: - str r0, [r2] - strh r1, [r2, 0x4] - strh r1, [r2, 0x6] - pop {r0} - bx r0 - thumb_func_end sub_8099880 - - thumb_func_start sub_80998A0 -sub_80998A0: - push {r4,lr} - adds r4, r0, 0 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 16 - lsrs r3, 16 - cmp r1, 0 - bge _080998B2 - movs r1, 0x1E -_080998B2: - cmp r2, r3 - bls _080998BE - movs r0, 0x5 - str r0, [r4] - subs r0, r2, r3 - b _080998D0 -_080998BE: - cmp r2, r3 - bcs _080998CA - movs r0, 0x4 - str r0, [r4] - subs r0, r3, r2 - b _080998D0 -_080998CA: - movs r0, 0x1 - str r0, [r4] - movs r0, 0 -_080998D0: - strh r0, [r4, 0xA] - strh r1, [r4, 0x4] - strh r1, [r4, 0x6] - strh r2, [r4, 0xC] - strh r3, [r4, 0x8] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80998A0 - - thumb_func_start sub_80998E0 -sub_80998E0: - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4] - cmp r0, 0x5 - bhi _080999CA - lsls r0, 2 - ldr r1, _080998F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080998F4: .4byte _080998F8 - .align 2, 0 -_080998F8: - .4byte _080999CA - .4byte _080999C2 - .4byte _08099910 - .4byte _08099946 - .4byte _08099976 - .4byte _0809999A -_08099910: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _08099940 - movs r1, 0x4 - ldrsh r0, [r4, r1] - lsls r0, 8 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - ldrh r0, [r4, 0xC] - cmp r0, r1 - bcs _080999C6 - strh r1, [r4, 0xC] - b _080999C6 -_08099940: - movs r0, 0x80 - lsls r0, 1 - b _080999C0 -_08099946: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _08099970 - movs r1, 0x4 - ldrsh r0, [r4, r1] - lsls r0, 8 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r0, [r4, 0xC] - cmp r0, r1 - bls _080999C6 - strh r1, [r4, 0xC] - b _080999C6 -_08099970: - strh r1, [r4, 0xC] - str r1, [r4] - b _080999C6 -_08099976: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _080999BE - movs r0, 0x4 - ldrsh r1, [r4, r0] - ldrh r0, [r4, 0xA] - muls r0, r1 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x8] - subs r1, r0 - strh r1, [r4, 0xC] - b _080999C6 -_0809999A: - ldrh r0, [r4, 0x4] - subs r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - cmp r0, 0 - ble _080999BE - movs r0, 0x4 - ldrsh r1, [r4, r0] - ldrh r0, [r4, 0xA] - muls r0, r1 - movs r2, 0x6 - ldrsh r1, [r4, r2] - bl __divsi3 - ldrh r1, [r4, 0x8] - adds r1, r0 - strh r1, [r4, 0xC] - b _080999C6 -_080999BE: - ldrh r0, [r4, 0x8] -_080999C0: - strh r0, [r4, 0xC] -_080999C2: - movs r0, 0 - str r0, [r4] -_080999C6: - movs r0, 0x1 - b _080999CC -_080999CA: - movs r0, 0 -_080999CC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80998E0 - - thumb_func_start sub_80999D4 -sub_80999D4: - ldr r2, _080999E0 - movs r1, 0x1 - strb r1, [r2] - ldr r1, _080999E4 - strh r0, [r1] - bx lr - .align 2, 0 -_080999E0: .4byte gUnknown_2039990 -_080999E4: .4byte gUnknown_2039992 - thumb_func_end sub_80999D4 - - thumb_func_start sub_80999E8 -sub_80999E8: - push {lr} - adds r1, r0, 0 - ldr r0, _080999F8 - bl sub_809985C - pop {r0} - bx r0 - .align 2, 0 -_080999F8: .4byte gUnknown_2039958 - thumb_func_end sub_80999E8 - - thumb_func_start sub_80999FC -sub_80999FC: - push {lr} - adds r1, r0, 0 - ldr r0, _08099A0C - bl sub_8099880 - pop {r0} - bx r0 - .align 2, 0 -_08099A0C: .4byte gUnknown_2039958 - thumb_func_end sub_80999FC - - thumb_func_start sub_8099A10 -sub_8099A10: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r3, r2, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r3, 16 - lsrs r3, 16 - ldr r0, _08099A30 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_80998A0 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099A30: .4byte gUnknown_2039958 - thumb_func_end sub_8099A10 - - thumb_func_start sub_8099A34 -sub_8099A34: - push {lr} - adds r1, r0, 0 - ldr r0, _08099A44 - bl sub_809985C - pop {r0} - bx r0 - .align 2, 0 -_08099A44: .4byte gUnknown_2039968 - thumb_func_end sub_8099A34 - - thumb_func_start sub_8099A48 -sub_8099A48: - push {lr} - adds r1, r0, 0 - ldr r0, _08099A58 - bl sub_8099880 - pop {r0} - bx r0 - .align 2, 0 -_08099A58: .4byte gUnknown_2039968 - thumb_func_end sub_8099A48 - - thumb_func_start sub_8099A5C -sub_8099A5C: - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - str r2, [sp] - ldr r0, _08099A88 - str r4, [r0] - ldr r2, [sp] - str r2, [r0, 0x4] - movs r2, 0 - strh r2, [r0, 0x14] - adds r0, 0x8 - bl sub_809985C - subs r0, r4, 0x1 - cmp r0, 0xD - bhi _08099AF0 - lsls r0, 2 - ldr r1, _08099A8C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099A88: .4byte gUnknown_2039978 -_08099A8C: .4byte _08099A90 - .align 2, 0 -_08099A90: - .4byte _08099AC8 - .4byte _08099AF0 - .4byte _08099AC8 - .4byte _08099AF0 - .4byte _08099AE8 - .4byte _08099AF0 - .4byte _08099AE8 - .4byte _08099AF0 - .4byte _08099AE0 - .4byte _08099AF0 - .4byte _08099AE0 - .4byte _08099AF0 - .4byte _08099AE8 - .4byte _08099AE8 -_08099AC8: - ldr r0, _08099AD8 - movs r1, 0x80 - lsls r1, 1 - strh r1, [r0, 0xC] - ldr r0, _08099ADC - strh r1, [r0, 0xC] - b _08099AF0 - .align 2, 0 -_08099AD8: .4byte gUnknown_2039968 -_08099ADC: .4byte gUnknown_2039958 -_08099AE0: - ldr r1, _08099AE4 - b _08099AEA - .align 2, 0 -_08099AE4: .4byte gUnknown_2039968 -_08099AE8: - ldr r1, _08099AF8 -_08099AEA: - movs r0, 0x80 - lsls r0, 1 - strh r0, [r1, 0xC] -_08099AF0: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08099AF8: .4byte gUnknown_2039958 - thumb_func_end sub_8099A5C - - thumb_func_start sub_8099AFC -sub_8099AFC: - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - str r2, [sp] - ldr r0, _08099B28 - str r4, [r0] - ldr r2, [sp] - str r2, [r0, 0x4] - movs r2, 0x80 - lsls r2, 1 - strh r2, [r0, 0x14] - adds r0, 0x8 - bl sub_8099880 - subs r0, r4, 0x2 - cmp r0, 0xC - bhi _08099B86 - lsls r0, 2 - ldr r1, _08099B2C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099B28: .4byte gUnknown_2039978 -_08099B2C: .4byte _08099B30 - .align 2, 0 -_08099B30: - .4byte _08099B64 - .4byte _08099B86 - .4byte _08099B64 - .4byte _08099B86 - .4byte _08099B80 - .4byte _08099B86 - .4byte _08099B80 - .4byte _08099B86 - .4byte _08099B78 - .4byte _08099B86 - .4byte _08099B78 - .4byte _08099B80 - .4byte _08099B80 -_08099B64: - ldr r0, _08099B70 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r0, _08099B74 - strh r1, [r0, 0xC] - b _08099B86 - .align 2, 0 -_08099B70: .4byte gUnknown_2039968 -_08099B74: .4byte gUnknown_2039958 -_08099B78: - ldr r1, _08099B7C - b _08099B82 - .align 2, 0 -_08099B7C: .4byte gUnknown_2039968 -_08099B80: - ldr r1, _08099B90 -_08099B82: - movs r0, 0 - strh r0, [r1, 0xC] -_08099B86: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08099B90: .4byte gUnknown_2039958 - thumb_func_end sub_8099AFC - - thumb_func_start sub_8099B94 -sub_8099B94: - push {lr} - ldr r0, _08099BA4 - ldrb r0, [r0] - cmp r0, 0 - beq _08099BA8 - movs r0, 0x1 - b _08099BD6 - .align 2, 0 -_08099BA4: .4byte gUnknown_2039990 -_08099BA8: - ldr r1, _08099BBC - ldr r0, [r1] - cmp r0, 0 - beq _08099BC0 - ldr r0, [r1, 0x8] - cmp r0, 0 - beq _08099BD6 - movs r0, 0x1 - b _08099BD6 - .align 2, 0 -_08099BBC: .4byte gUnknown_2039978 -_08099BC0: - movs r1, 0 - ldr r0, _08099BDC - ldr r0, [r0] - cmp r0, 0 - bne _08099BD2 - ldr r0, _08099BE0 - ldr r0, [r0] - cmp r0, 0 - beq _08099BD4 -_08099BD2: - movs r1, 0x1 -_08099BD4: - adds r0, r1, 0 -_08099BD6: - pop {r1} - bx r1 - .align 2, 0 -_08099BDC: .4byte gUnknown_2039958 -_08099BE0: .4byte gUnknown_2039968 - thumb_func_end sub_8099B94 - - thumb_func_start sub_8099BE4 -sub_8099BE4: - push {r4,r5,lr} - ldr r4, _08099C10 - ldr r0, [r4] - cmp r0, 0 - bne _08099BF6 - ldr r0, [r4, 0x8] - cmp r0, 0 - bne _08099BF6 - b _08099D08 -_08099BF6: - adds r0, r4, 0 - adds r0, 0x8 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099C14 - ldrh r0, [r4, 0x14] - ldr r1, [r4, 0x4] - bl sub_8099E80 - b _08099DC0 - .align 2, 0 -_08099C10: .4byte gUnknown_2039978 -_08099C14: - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _08099C1C - b _08099DC0 -_08099C1C: - ldr r0, [r4] - cmp r0, 0xE - bls _08099C24 - b _08099DC0 -_08099C24: - lsls r0, 2 - ldr r1, _08099C30 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099C30: .4byte _08099C34 - .align 2, 0 -_08099C34: - .4byte _08099DC0 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099C70 - .4byte _08099CD8 - .4byte _08099CD8 - .4byte _08099CD8 -_08099C70: - ldr r0, _08099C80 - ldrh r1, [r0, 0x14] - adds r3, r0, 0 - cmp r1, 0xFF - bls _08099C84 - movs r0, 0 - str r0, [r3] - b _08099DC0 - .align 2, 0 -_08099C80: .4byte gUnknown_2039978 -_08099C84: - ldr r0, _08099CA0 - ldrb r0, [r0] - cmp r0, 0 - bne _08099C8E - b _08099DC0 -_08099C8E: - movs r2, 0 - ldr r0, [r3] - cmp r0, 0x3 - beq _08099CB2 - cmp r0, 0x3 - bhi _08099CA4 - cmp r0, 0x1 - beq _08099CAE - b _08099CBC - .align 2, 0 -_08099CA0: .4byte gUnknown_2039990 -_08099CA4: - cmp r0, 0x5 - beq _08099CB6 - cmp r0, 0x7 - beq _08099CBA - b _08099CBC -_08099CAE: - movs r2, 0x2 - b _08099CC0 -_08099CB2: - movs r2, 0x4 - b _08099CC0 -_08099CB6: - movs r2, 0x6 - b _08099CC0 -_08099CBA: - movs r2, 0x8 -_08099CBC: - cmp r2, 0 - beq _08099CD4 -_08099CC0: - ldr r0, _08099CD0 - movs r4, 0 - ldrsh r1, [r0, r4] - adds r0, r2, 0 - ldr r2, [r3, 0x4] - bl sub_8099AFC - b _08099DC0 - .align 2, 0 -_08099CD0: .4byte gUnknown_2039992 -_08099CD4: - str r2, [r3] - b _08099DC0 -_08099CD8: - ldr r2, _08099CE4 - ldrh r0, [r2, 0x14] - cmp r0, 0 - bne _08099CE8 - str r0, [r2] - b _08099DC0 - .align 2, 0 -_08099CE4: .4byte gUnknown_2039978 -_08099CE8: - ldr r0, _08099D00 - ldrb r0, [r0] - cmp r0, 0 - beq _08099DC0 - ldr r0, [r2] - ldr r1, _08099D04 - movs r3, 0 - ldrsh r1, [r1, r3] - ldr r2, [r2, 0x4] - bl sub_8099AFC - b _08099DC0 - .align 2, 0 -_08099D00: .4byte gUnknown_2039990 -_08099D04: .4byte gUnknown_2039992 -_08099D08: - ldr r0, _08099D88 - ldrb r0, [r0] - cmp r0, 0 - beq _08099D98 - movs r5, 0x1 - ldr r4, _08099D8C - ldrh r0, [r4, 0xC] - cmp r0, 0 - bne _08099D20 - ldr r0, [r4] - cmp r0, 0 - beq _08099D46 -_08099D20: - movs r5, 0 - ldr r0, [r4] - cmp r0, 0x3 - beq _08099D34 - ldr r0, _08099D90 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r0, r4, 0 - bl sub_8099880 -_08099D34: - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099D46 - ldrh r0, [r4, 0xC] - bl sub_8099DD0 -_08099D46: - ldr r4, _08099D94 - ldrh r0, [r4, 0xC] - cmp r0, 0 - bne _08099D54 - ldr r0, [r4] - cmp r0, 0 - beq _08099D7A -_08099D54: - movs r5, 0 - ldr r0, [r4] - cmp r0, 0x3 - beq _08099D68 - ldr r0, _08099D90 - movs r3, 0 - ldrsh r1, [r0, r3] - adds r0, r4, 0 - bl sub_8099880 -_08099D68: - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099D7A - ldrh r0, [r4, 0xC] - bl sub_8099E58 -_08099D7A: - cmp r5, 0 - beq _08099DC0 - ldr r1, _08099D88 - movs r0, 0 - strb r0, [r1] - b _08099DC0 - .align 2, 0 -_08099D88: .4byte gUnknown_2039990 -_08099D8C: .4byte gUnknown_2039958 -_08099D90: .4byte gUnknown_2039992 -_08099D94: .4byte gUnknown_2039968 -_08099D98: - ldr r4, _08099DC8 - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099DAC - ldrh r0, [r4, 0xC] - bl sub_8099DD0 -_08099DAC: - ldr r4, _08099DCC - adds r0, r4, 0 - bl sub_80998E0 - lsls r0, 24 - cmp r0, 0 - beq _08099DC0 - ldrh r0, [r4, 0xC] - bl sub_8099E58 -_08099DC0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08099DC8: .4byte gUnknown_2039958 -_08099DCC: .4byte gUnknown_2039968 - thumb_func_end sub_8099BE4 - - thumb_func_start sub_8099DD0 -sub_8099DD0: - push {r4-r7,lr} - lsls r0, 16 - lsrs r7, r0, 16 - movs r4, 0 - ldr r6, _08099DF4 - movs r5, 0xD -_08099DDC: - ldrh r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08099DF8 - lsrs r0, r4, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099E00 - .align 2, 0 -_08099DF4: .4byte gUnknown_2039998 -_08099DF8: - lsrs r0, r4, 16 - adds r1, r7, 0 - bl sub_8003664 -_08099E00: - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _08099DDC - ldr r0, _08099E30 - movs r4, 0x80 - lsls r4, 13 - adds r6, r0, 0 - adds r6, 0x20 - movs r5, 0xE -_08099E1A: - ldrh r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08099E34 - lsrs r0, r4, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099E3C - .align 2, 0 -_08099E30: .4byte gUnknown_2039998 -_08099E34: - lsrs r0, r4, 16 - adds r1, r7, 0 - bl sub_8003664 -_08099E3C: - movs r0, 0x80 - lsls r0, 9 - adds r4, r0 - adds r6, 0x2 - subs r5, 0x1 - cmp r5, 0 - bge _08099E1A - movs r0, 0x20 - adds r1, r7, 0 - bl sub_8003664 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8099DD0 - - thumb_func_start sub_8099E58 -sub_8099E58: - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xF - adds r1, r4, 0 - bl sub_8003664 - movs r0, 0xE - adds r1, r4, 0 - bl sub_8003664 - movs r0, 0x1F - adds r1, r4, 0 - bl sub_8003664 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8099E58 - - thumb_func_start sub_8099E80 -sub_8099E80: - push {r4-r7,lr} - sub sp, 0x4 - str r1, [sp] - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _08099EA0 - ldr r1, [r0] - adds r2, r0, 0 - cmp r1, 0xE - bls _08099E96 - b _0809A558 -_08099E96: - lsls r0, r1, 2 - ldr r1, _08099EA4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08099EA0: .4byte gUnknown_2039978 -_08099EA4: .4byte _08099EA8 - .align 2, 0 -_08099EA8: - .4byte _0809A558 - .4byte _08099EE4 - .4byte _0809A05A - .4byte _0809A1D2 - .4byte _0809A34A - .4byte _08099FDE - .4byte _0809A156 - .4byte _0809A2CE - .4byte _0809A4BC - .4byte _08099F5E - .4byte _0809A0D6 - .4byte _0809A24E - .4byte _0809A3EA - .4byte _0809A48A - .4byte _0809A48A -_08099EE4: - movs r4, 0 - movs r5, 0 - ldr r7, _08099F00 -_08099EEA: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099F04 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099F0E - .align 2, 0 -_08099F00: .4byte gUnknown_2039998 -_08099F04: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099F0E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _08099EEA - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _08099F40 - adds r7, r0, 0 - adds r7, 0x20 -_08099F28: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099F44 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099F4E - .align 2, 0 -_08099F40: .4byte gUnknown_2039998 -_08099F44: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099F4E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _08099F28 - b _0809A558 -_08099F5E: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 - ldr r0, _08099F80 - adds r7, r0, 0 - adds r7, 0x1C -_08099F6A: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099F84 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099F8E - .align 2, 0 -_08099F80: .4byte gUnknown_2039998 -_08099F84: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099F8E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _08099F6A - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 - ldr r0, _08099FC0 - adds r7, r0, 0 - adds r7, 0x3E -_08099FA8: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08099FC4 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _08099FCE - .align 2, 0 -_08099FC0: .4byte gUnknown_2039998 -_08099FC4: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_08099FCE: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _08099FA8 - b _0809A558 -_08099FDE: - movs r4, 0 - movs r5, 0 - ldr r7, _08099FFC -_08099FE4: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A000 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A00A - .align 2, 0 -_08099FFC: .4byte gUnknown_2039998 -_0809A000: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_0809A00A: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xD - ble _08099FE4 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A03C - adds r7, r0, 0 - adds r7, 0x20 -_0809A024: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A040 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A04A - .align 2, 0 -_0809A03C: .4byte gUnknown_2039998 -_0809A040: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036AC -_0809A04A: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A024 - b _0809A558 -_0809A05A: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A078 -_0809A060: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A07C - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A086 - .align 2, 0 -_0809A078: .4byte gUnknown_2039998 -_0809A07C: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A086: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A060 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A0B8 - adds r7, r0, 0 - adds r7, 0x20 -_0809A0A0: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A0BC - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A0C6 - .align 2, 0 -_0809A0B8: .4byte gUnknown_2039998 -_0809A0BC: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A0C6: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A0A0 - b _0809A558 -_0809A0D6: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 - ldr r0, _0809A0F8 - adds r7, r0, 0 - adds r7, 0x1C -_0809A0E2: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A0FC - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A106 - .align 2, 0 -_0809A0F8: .4byte gUnknown_2039998 -_0809A0FC: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A106: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A0E2 - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 - ldr r0, _0809A138 - adds r7, r0, 0 - adds r7, 0x3E -_0809A120: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A13C - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A146 - .align 2, 0 -_0809A138: .4byte gUnknown_2039998 -_0809A13C: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A146: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A120 - b _0809A558 -_0809A156: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A174 -_0809A15C: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A178 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A182 - .align 2, 0 -_0809A174: .4byte gUnknown_2039998 -_0809A178: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A182: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xD - ble _0809A15C - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A1B4 - adds r7, r0, 0 - adds r7, 0x20 -_0809A19C: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A1B8 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A1C2 - .align 2, 0 -_0809A1B4: .4byte gUnknown_2039998 -_0809A1B8: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80036F4 -_0809A1C2: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A19C - b _0809A558 -_0809A1D2: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A1F0 -_0809A1D8: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A1F4 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A1FE - .align 2, 0 -_0809A1F0: .4byte gUnknown_2039998 -_0809A1F4: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A1FE: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A1D8 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A230 - adds r7, r0, 0 - adds r7, 0x20 -_0809A218: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A234 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A23E - .align 2, 0 -_0809A230: .4byte gUnknown_2039998 -_0809A234: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A23E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A218 - b _0809A558 -_0809A24E: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 - ldr r0, _0809A270 - adds r7, r0, 0 - adds r7, 0x1C -_0809A25A: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A274 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A27E - .align 2, 0 -_0809A270: .4byte gUnknown_2039998 -_0809A274: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A27E: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A25A - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 - ldr r0, _0809A2B0 - adds r7, r0, 0 - adds r7, 0x3E -_0809A298: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A2B4 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A2BE - .align 2, 0 -_0809A2B0: .4byte gUnknown_2039998 -_0809A2B4: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A2BE: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A298 - b _0809A558 -_0809A2CE: - movs r4, 0 - movs r5, 0 - ldr r7, _0809A2EC -_0809A2D4: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A2F0 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A2FA - .align 2, 0 -_0809A2EC: .4byte gUnknown_2039998 -_0809A2F0: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A2FA: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0xD - ble _0809A2D4 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 - ldr r0, _0809A32C - adds r7, r0, 0 - adds r7, 0x20 -_0809A314: - ldrh r1, [r7] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A330 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A33A - .align 2, 0 -_0809A32C: .4byte gUnknown_2039998 -_0809A330: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_8003780 -_0809A33A: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r7, 0x2 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A314 - b _0809A558 -_0809A34A: - movs r4, 0 - movs r5, 0 -_0809A34E: - ldr r0, _0809A36C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A370 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A38C - .align 2, 0 -_0809A36C: .4byte gUnknown_2039998 -_0809A370: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A382 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A38C -_0809A382: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A38C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A34E - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 -_0809A39E: - ldr r0, _0809A3BC - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A3C0 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A3DC - .align 2, 0 -_0809A3BC: .4byte gUnknown_2039998 -_0809A3C0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A3D2 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A3DC -_0809A3D2: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A3DC: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A39E - b _0809A558 -_0809A3EA: - movs r4, 0xE - movs r5, 0xE0 - lsls r5, 12 -_0809A3F0: - ldr r0, _0809A40C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A410 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A42C - .align 2, 0 -_0809A40C: .4byte gUnknown_2039998 -_0809A410: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A422 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A42C -_0809A422: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A42C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0xF - ble _0809A3F0 - movs r4, 0x1F - movs r5, 0xF8 - lsls r5, 13 -_0809A43E: - ldr r0, _0809A45C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A460 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A47C - .align 2, 0 -_0809A45C: .4byte gUnknown_2039998 -_0809A460: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A472 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A47C -_0809A472: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A47C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x1F - ble _0809A43E - b _0809A558 -_0809A48A: - ldr r0, [r2] - cmp r0, 0xD - beq _0809A496 - cmp r0, 0xE - beq _0809A4AA - b _0809A4BC -_0809A496: - mov r0, sp - movs r1, 0x90 - strb r1, [r0] - strb r1, [r0, 0x1] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x2] - movs r0, 0x1 - negs r0, r0 - b _0809A4BA -_0809A4AA: - mov r1, sp - movs r0, 0xFF - strb r0, [r1] - movs r0, 0xC0 - strb r0, [r1, 0x1] - movs r0, 0x80 - strb r0, [r1, 0x2] - subs r0, 0x81 -_0809A4BA: - strb r0, [r1, 0x3] -_0809A4BC: - movs r4, 0 - movs r5, 0 -_0809A4C0: - ldr r0, _0809A4DC - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A4E0 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A4FC - .align 2, 0 -_0809A4DC: .4byte gUnknown_2039998 -_0809A4E0: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A4F2 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A4FC -_0809A4F2: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A4FC: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0xD - ble _0809A4C0 - movs r4, 0x10 - movs r5, 0x80 - lsls r5, 13 -_0809A50E: - ldr r0, _0809A52C - lsls r1, r4, 1 - adds r1, r0 - ldrh r1, [r1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0809A530 - lsrs r0, r5, 16 - movs r1, 0x80 - lsls r1, 1 - bl sub_8003664 - b _0809A54C - .align 2, 0 -_0809A52C: .4byte gUnknown_2039998 -_0809A530: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809A542 - lsrs r0, r5, 16 - adds r1, r6, 0 - bl sub_8003664 - b _0809A54C -_0809A542: - lsrs r0, r5, 16 - adds r1, r6, 0 - ldr r2, [sp] - bl sub_80037C8 -_0809A54C: - movs r0, 0x80 - lsls r0, 9 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x1E - ble _0809A50E -_0809A558: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8099E80 - - .align 2,0 diff --git a/ld_script.ld b/ld_script.ld index 73fcce55e..99e396318 100755 --- a/ld_script.ld +++ b/ld_script.ld @@ -329,7 +329,6 @@ SECTIONS { src/ground_main.o(.text); src/code_8099328.o(.text); src/code_8099360.o(.text); - asm/code_8099360.o(.text); src/code_809A560.o(.text); src/code_809C5C4.o(.text); src/code_809D148.o(.text); diff --git a/src/code_8099360.c b/src/code_8099360.c index 9365f79fe..d2292369e 100644 --- a/src/code_8099360.c +++ b/src/code_8099360.c @@ -389,3 +389,743 @@ void sub_8099690(u32 param_1) } CloseFile(temp); } + +// TODO: figure out if a new file starts here... + +typedef struct unkStruct_3000400 +{ + // size: 0x4 + u8 unk0[0x4]; +} unkStruct_3000400; + +extern void sub_8003810(u16 idx, unkStruct_3000400 param_2); +extern void sub_80039B8(void); +extern void TransferBGPaletteBuffer(void); +extern void sub_80037C8(u16, u32, unkStruct_3000400); +extern void sub_8003664(u16 param_1, u16 param_2); +extern void sub_80036AC(u16, u32, unkStruct_3000400); +extern void sub_80036F4(u16, u32, unkStruct_3000400); +extern void sub_8003780(u16, u32, unkStruct_3000400); + +void sub_809977C(void); + +UNUSED static void sub_8099708(u16 a0, unkStruct_3000400 a1) +{ + sub_8003810(a0, a1); +} + +void sub_809971C(u16 idx, unkStruct_3000400 *strPtrs, s32 n) +{ + s32 i; + + for (i = 0; i < n; i++) { + sub_8003810(idx++, *strPtrs++); + } +} + +void sub_8099744(void) +{ + sub_80039B8(); +} + +void sub_8099750(void) +{ + TransferBGPaletteBuffer(); +} + +void sub_809975C(void) +{ + sub_809977C(); +} + +void sub_8099768(void) +{ + sub_809977C(); + sub_8099744(); + sub_8099750(); +} + +struct UnkStruct_2039958 +{ + s32 unk0; + s16 unk4; + s16 unk6; + u16 unk8; + u16 unkA; + u16 unkC; +}; + +struct UnkStruct_2039978 +{ + u32 unk0; + unkStruct_3000400 unk4; + struct UnkStruct_2039958 unk8; +}; + +static EWRAM_DATA struct UnkStruct_2039958 gUnknown_2039958 = {0}; +static EWRAM_DATA struct UnkStruct_2039958 gUnknown_2039968 = {0}; +static EWRAM_DATA struct UnkStruct_2039978 gUnknown_2039978 = {0}; +static EWRAM_DATA u8 gUnknown_2039990 = FALSE; +static EWRAM_DATA s16 gUnknown_2039992 = 0; +UNUSED static EWRAM_DATA s32 sUnused = 0; +#define ARR_COUNT_2039998 33 +static EWRAM_DATA u16 gUnknown_2039998[ARR_COUNT_2039998] = {0}; + +void sub_8099838(struct UnkStruct_2039958 *a0); +void sub_8099848(struct UnkStruct_2039958 *a0); +void sub_8099DD0(u16 a0); +void sub_8099E58(u16 a0); +void sub_8099E80(u16 a0, unkStruct_3000400 a1); + +void sub_809977C(void) +{ + s32 i; + + gUnknown_2039990 = FALSE; + gUnknown_2039992 = 0; + sub_8099838(&gUnknown_2039958); + sub_8099838(&gUnknown_2039968); + sub_8099838(&gUnknown_2039978.unk8); + gUnknown_2039978.unk0 = 0; + gUnknown_2039978.unk8.unkC = 0x100; + gUnknown_2039958.unkC = 0; + sub_8099DD0(0); + gUnknown_2039968.unkC = 0x100; + sub_8099E58(0x100); + for (i = 0; i < ARR_COUNT_2039998; i++) { + gUnknown_2039998[i] = 0; + } +} + +void sub_80997F4(u16 a0, u32 a1) +{ + gUnknown_2039998[a0] = a1; + sub_8099848(&gUnknown_2039958); + sub_8099848(&gUnknown_2039968); + sub_8099848(&gUnknown_2039978.unk8); +} + +UNUSED static u32 sub_8099828(u16 a0) +{ + return gUnknown_2039998[a0]; +} + +void sub_8099838(struct UnkStruct_2039958 *a0) +{ + a0->unk0 = 1; + a0->unkC = 0; + a0->unk4 = 0; + a0->unk6 = 0; +} + +void sub_8099848(struct UnkStruct_2039958 *a0) +{ + if (a0->unk0 == 0) { + a0->unk0 = 1; + } +} + +void sub_809985C(struct UnkStruct_2039958 *a0, s32 a1) +{ + if (a1 >= 0) { + if (a1 == 0) { + a0->unkC = 0x100; + a0->unk0 = 1; + } + else { + a0->unk0 = 2; + } + } + else { + a1 = 30; + a0->unk0 = 2; + } + + a0->unk4 = a1; + a0->unk6 = a1; +} + +void sub_8099880(struct UnkStruct_2039958 *a0, s32 a1) +{ + if (a1 >= 0) { + if (a1 == 0) { + a0->unkC = a1; + a0->unk0 = 1; + } + else { + a0->unk0 = 3; + } + } + else { + a1 = 30; + a0->unk0 = 3; + } + + a0->unk4 = a1; + a0->unk6 = a1; +} + +void sub_80998A0(struct UnkStruct_2039958 *a0, s32 a1, u16 a2, u16 a3) +{ + if (a1 < 0) a1 = 30; + + if (a2 > a3) { + a0->unk0 = 5; + a0->unkA = a2 - a3; + } + else if (a2 < a3) { + a0->unk0 = 4; + a0->unkA = a3 - a2; + } + else { + a0->unk0 = 1; + a0->unkA = 0; + } + + a0->unk4 = a1; + a0->unk6 = a1; + a0->unkC = a2; + a0->unk8 = a3; +} + +bool8 sub_80998E0(struct UnkStruct_2039958 *a0) +{ + switch (a0->unk0) { + case 0: + break; + case 1: + a0->unk0 = 0; + return TRUE; + case 2: + if (--a0->unk4 > 0) { + u16 var = 0x100 - ((a0->unk4 << 8) / a0->unk6); + if (a0->unkC < var) { + a0->unkC = var; + } + } + else { + a0->unkC = 0x100; + a0->unk0 = 0; + } + return TRUE; + case 3: + if (--a0->unk4 > 0) { + u16 var = (a0->unk4 << 8) / a0->unk6; + if (a0->unkC > var) { + a0->unkC = var; + } + } + else { + a0->unkC = 0; + a0->unk0 = 0; + } + return TRUE; + case 4: + if (--a0->unk4 > 0) { + a0->unkC = a0->unk8 - ((a0->unk4 * a0->unkA) / a0->unk6); + } + else { + a0->unkC = a0->unk8; + a0->unk0 = 0; + } + return TRUE; + case 5: + if (--a0->unk4 > 0) { + a0->unkC = a0->unk8 + ((a0->unk4 * a0->unkA) / a0->unk6); + } + else { + a0->unkC = a0->unk8; + a0->unk0 = 0; + } + return TRUE; + } + + return FALSE; +} + +void sub_80999D4(s32 a0) +{ + gUnknown_2039990 = TRUE; + gUnknown_2039992 = a0; +} + +void sub_80999E8(s32 a0) +{ + sub_809985C(&gUnknown_2039958, a0); +} + +void sub_80999FC(s32 a0) +{ + sub_8099880(&gUnknown_2039958, a0); +} + +void sub_8099A10(s32 a1, u16 a2, u16 a3) +{ + sub_80998A0(&gUnknown_2039958, a1, a2, a3); +} + +void sub_8099A34(s32 a0) +{ + sub_809985C(&gUnknown_2039968, a0); +} + +void sub_8099A48(s32 a0) +{ + sub_8099880(&gUnknown_2039968, a0); +} + +void sub_8099A5C(s32 a0, s32 a1, unkStruct_3000400 a2) +{ + gUnknown_2039978.unk0 = a0; + gUnknown_2039978.unk4 = a2; + gUnknown_2039978.unk8.unkC = 0; + sub_809985C(&gUnknown_2039978.unk8, a1); + + switch (a0) { + case 1: + case 3: + gUnknown_2039968.unkC = 0x100; + gUnknown_2039958.unkC = 0x100; + break; + case 9: + case 11: + gUnknown_2039968.unkC = 0x100; + break; + case 5: + case 7: + case 13: + case 14: + gUnknown_2039958.unkC = 0x100; + break; + } +} + +void sub_8099AFC(s32 a0, s32 a1, unkStruct_3000400 a2) +{ + gUnknown_2039978.unk0 = a0; + gUnknown_2039978.unk4 = a2; + gUnknown_2039978.unk8.unkC = 0x100; + sub_8099880(&gUnknown_2039978.unk8, a1); + + switch (a0) { + case 2: + case 4: + gUnknown_2039968.unkC = 0; + gUnknown_2039958.unkC = 0; + break; + case 10: + case 12: + gUnknown_2039968.unkC = 0; + break; + case 6: + case 8: + case 13: + case 14: + gUnknown_2039958.unkC = 0; + break; + } +} + +bool8 sub_8099B94(void) +{ + if (gUnknown_2039990) + return TRUE; + if (gUnknown_2039978.unk0 != 0) { + return (gUnknown_2039978.unk8.unk0 != 0); + } + return (gUnknown_2039958.unk0 != 0 || gUnknown_2039968.unk0 != 0); +} + +void sub_8099BE4(void) +{ + if (gUnknown_2039978.unk0 != 0 || gUnknown_2039978.unk8.unk0 != 0) { + if (sub_80998E0(&gUnknown_2039978.unk8)) { + sub_8099E80(gUnknown_2039978.unk8.unkC, gUnknown_2039978.unk4); + } + else if (gUnknown_2039978.unk8.unk0 == 0) { + switch (gUnknown_2039978.unk0) { + case 0: + break; + case 1: + case 3: + case 5: + case 7: + case 9: + case 11: + if (gUnknown_2039978.unk8.unkC >= 256) { + gUnknown_2039978.unk0 = 0; + } + else if (gUnknown_2039990) { + s32 var = 0; + switch (gUnknown_2039978.unk0) { + case 1: var = 2; break; + case 3: var = 4; break; + case 5: var = 6; break; + case 7: var = 8; break; + } + + if (var != 0) { + sub_8099AFC(var, gUnknown_2039992, gUnknown_2039978.unk4); + } + else { + gUnknown_2039978.unk0 = 0; + } + } + break; + case 2: + case 4: + case 6: + case 8: + case 10: + case 12: + case 13: + case 14: + if (gUnknown_2039978.unk8.unkC == 0) { + gUnknown_2039978.unk0 = 0; + } + else if (gUnknown_2039990) { + sub_8099AFC(gUnknown_2039978.unk0, gUnknown_2039992, gUnknown_2039978.unk4); + } + break; + } + } + } + else if (gUnknown_2039990) { + bool8 r5 = TRUE; + if (gUnknown_2039958.unkC != 0 || gUnknown_2039958.unk0 != 0) { + r5 = FALSE; + if (gUnknown_2039958.unk0 != 3) { + sub_8099880(&gUnknown_2039958, gUnknown_2039992); + } + if (sub_80998E0(&gUnknown_2039958)) { + sub_8099DD0(gUnknown_2039958.unkC); + } + } + if (gUnknown_2039968.unkC != 0 || gUnknown_2039968.unk0 != 0) { + r5 = FALSE; + if (gUnknown_2039968.unk0 != 3) { + sub_8099880(&gUnknown_2039968, gUnknown_2039992); + } + if (sub_80998E0(&gUnknown_2039968)) { + sub_8099E58(gUnknown_2039968.unkC); + } + } + + if (r5) { + gUnknown_2039990 = FALSE; + } + } + else { + if (sub_80998E0(&gUnknown_2039958)) { + sub_8099DD0(gUnknown_2039958.unkC); + } + if (sub_80998E0(&gUnknown_2039968)) { + sub_8099E58(gUnknown_2039968.unkC); + } + } +} + +void sub_8099DD0(u16 a0) +{ + s32 i; + + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i, 0x100); + } + else { + sub_8003664(i, a0); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i, 0x100); + } + else { + sub_8003664(i, a0); + } + } + + sub_8003664(32, a0); +} + +void sub_8099E58(u16 a0) +{ + sub_8003664(15, a0); + sub_8003664(14, a0); + sub_8003664(31, a0); +} + +void sub_8099E80(u16 param_1,unkStruct_3000400 param_2) +{ + s32 i; + + switch (gUnknown_2039978.unk0) { + case 0: + break; + case 1: + for (i = 0; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + break; + case 9: + for (i = 14; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + break; + case 5: + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036AC(i,param_1,param_2); + } + } + break; + case 2: + for (i = 0; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + break; + case 10: + for (i = 14; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + break; + case 6: + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_80036F4(i,param_1,param_2); + } + } + break; + case 3: + for (i = 0; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + break; + case 11: + for (i = 14; i < 16; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + break; + case 7: + for (i = 0; i < 14; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i++) { + if (gUnknown_2039998[i] & 2) { + sub_8003664(i,0x100); + } + else { + sub_8003780(i,param_1,param_2); + } + } + break; + case 4: + for (i = 0; i < 16; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + + for (i = 16; i < 32; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + break; + case 12: + for (i = 14; i < 16; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + + for (i = 31; i < 32; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + break; + case 13: + case 14: + switch (gUnknown_2039978.unk0) { + case 13: + param_2.unk0[0] = 0x90; + param_2.unk0[1] = 0x90; + param_2.unk0[2] = 0xFF; + param_2.unk0[3] = 0xFF; + break; + case 14: + param_2.unk0[0] = 0xFF; + param_2.unk0[1] = 0xC0; + param_2.unk0[2] = 0x80; + param_2.unk0[3] = 0xFF; + break; + } + // NOTE: fallthrough needed here + case 8: + for (i = 0; i < 14; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + + for (i = 16; i < 31; i ++) { + if (gUnknown_2039998[i] & 1) { + sub_8003664(i,0x100); + } + else if (gUnknown_2039998[i] & 2) { + sub_8003664(i,param_1); + } + else { + sub_80037C8(i,param_1,param_2); + } + } + break; + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 1d7909447..f6e5e6548 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -80,24 +80,10 @@ .include "src/exclusive_pokemon.o" .space 0x4 .include "src/ground_main.o" + .space 0x4 + .include "src/code_8099360.o" - .space 0x7 - -gUnknown_2039958: /* 2039958 (sub_809977C - sub_8099BE4) */ - .space 0x10 -gUnknown_2039968: /* 2039968 (sub_809977C - sub_8099BE4) */ - .space 0x10 -gUnknown_2039978: /* 2039978 (sub_8099A5C - sub_8099E80) */ - .space 0x8 -gUnknown_2039980: /* 2039980 (sub_809977C - sub_80997F4) */ - .space 0x10 -gUnknown_2039990: /* 2039990 (sub_809977C - sub_8099BE4) */ .space 0x2 -gUnknown_2039992: /* 2039992 (sub_809977C - sub_8099BE4) */ - .space 0x6 -gUnknown_2039998: /* 2039998 (sub_809977C - sub_8099E80) */ - .space 0x44 - gUnknown_20399DC: /* 20399DC (sub_809A560 - sub_809B614) */ .space 0x2 gUnknown_20399DE: /* 20399DE (sub_809A560 - sub_809B614) */