diff --git a/asm/beanstalk.s b/asm/beanstalk.s index 91857daf..1afe4276 100644 --- a/asm/beanstalk.s +++ b/asm/beanstalk.s @@ -23,7 +23,253 @@ _08089D18: .4byte gUnk_08120DF4 thumb_func_start sub_08089D1C sub_08089D1C: @ 0x08089D1C .ifdef EU - .incbin "baserom_eu.gba", 0x089620, 0x00001E0 @TODO disassemble + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0x19] + movs r4, #0x3f + adds r0, r4, #0 + ands r0, r1 + movs r6, #0x80 + orrs r0, r6 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x1b] + adds r0, r4, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5, #0x1b] + adds r0, r5, #0 + movs r1, #4 + bl sub_0805E3A0 + ldrb r0, [r5, #0xa] + cmp r0, #7 + bne _08089688 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _0808966C + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0808966C + bl CheckLocalFlag + cmp r0, #0 + bne _08089662 + b _080897FE +_08089662: + ldrb r1, [r5, #0x1b] + adds r0, r4, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r5, #0x1b] +_0808966C: + ldr r4, _08089684 @ =gUnk_08120E3C + ldrb r0, [r5, #0xb] + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + adds r0, r5, #0 + bl InitializeAnimation + ldrb r0, [r5, #0xb] + lsls r0, r0, #2 + adds r0, r0, r4 + b _080896C6 + .align 2, 0 +_08089684: .4byte gUnk_08120E3C +_08089688: + cmp r0, #0 + beq _080896A4 + ldr r0, _080896A0 @ =gUnk_08120E14 + ldrb r1, [r5, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r5, #0 + bl InitializeAnimation + b _080896BE + .align 2, 0 +_080896A0: .4byte gUnk_08120E14 +_080896A4: + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + bl sub_080AE008 + ldr r0, _08089700 @ =gUnk_08120E14 + ldrb r1, [r5, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r5, #0 + bl InitAnimationForceUpdate +_080896BE: + ldr r1, _08089700 @ =gUnk_08120E14 + ldrb r0, [r5, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 +_080896C6: + ldrb r0, [r0, #1] + adds r3, r5, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + cmp r0, #1 + bge _080896F4 + b _080897F8 +_080896F4: + cmp r0, #6 + ble _08089704 + cmp r0, #7 + beq _08089714 + b _080897F8 + .align 2, 0 +_08089700: .4byte gUnk_08120E14 +_08089704: + adds r0, r5, #0 + adds r0, #0x60 + movs r2, #0 + movs r1, #0xe0 + lsls r1, r1, #1 + strh r1, [r0] + strb r2, [r5, #0xe] + b _080897F8 +_08089714: + ldrb r1, [r5, #0xb] + cmp r1, #3 + bgt _08089724 + cmp r1, #2 + bge _080897E4 + cmp r1, #0 + beq _0808972A + b _080897F8 +_08089724: + cmp r1, #4 + beq _080897F0 + b _080897F8 +_0808972A: + movs r0, #0x10 + str r0, [r5, #0x6c] + strb r1, [r5, #0xe] +_08089730: + movs r0, #0x2c + movs r1, #7 + movs r2, #1 + bl CreateObject + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _080897C0 + ldrh r0, [r5, #0x2e] + strh r0, [r1, #0x2e] + ldr r2, [r5, #0x54] + ldr r1, [r5, #0x6c] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r2, #0x32] + movs r0, #3 + strb r0, [r5, #0xf] +_08089754: + ldrb r0, [r5, #0xe] + lsls r0, r0, #2 + ldr r1, _080897DC @ =gUnk_08120DFC + adds r4, r0, r1 + ldrb r2, [r4] + subs r2, #2 + movs r0, #0x2c + movs r1, #7 + bl CreateObject + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _080897A2 + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r2, [r5, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + ldr r2, [r5, #0x54] + ldr r1, [r5, #0x6c] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + movs r1, #2 + ldrsb r1, [r4, r1] + subs r0, r0, r1 + strh r0, [r2, #0x32] + ldr r3, [r5, #0x54] + ldrb r2, [r4, #3] + movs r0, #1 + ands r2, r0 + lsls r2, r2, #6 + ldrb r0, [r3, #0x18] + movs r4, #0x41 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] +_080897A2: + ldrb r0, [r5, #0xe] + adds r2, r0, #1 + strb r2, [r5, #0xe] + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08089754 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _080897C0 + strb r1, [r5, #0xe] +_080897C0: + ldr r0, [r5, #0x6c] + adds r0, #0x38 + str r0, [r5, #0x6c] + ldrh r1, [r5, #0x32] + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _080897E0 @ =gRoomControls + ldrh r0, [r0, #8] + cmp r1, r0 + bge _08089730 + movs r0, #1 + strb r0, [r5, #0xe] + b _080897F8 + .align 2, 0 +_080897DC: .4byte gUnk_08120DFC +_080897E0: .4byte gRoomControls +_080897E4: + ldrb r0, [r5, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r5, #0x19] +_080897F0: + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] +_080897F8: + adds r0, r5, #0 + bl sub_08089F08 +_080897FE: + pop {r4, r5, r6, pc} .else push {r4, r5, r6, lr} adds r5, r0, #0 diff --git a/asm/chuchuBoss.s b/asm/chuchuBoss.s index bbbc3632..8ec4ff2e 100644 --- a/asm/chuchuBoss.s +++ b/asm/chuchuBoss.s @@ -1728,7 +1728,279 @@ _080269C8: .4byte 0xFFFFFF00 thumb_func_start sub_080269CC sub_080269CC: @ 0x080269CC .ifdef EU - .incbin "baserom_eu.gba", 0x0269B0, 0x218 @ TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + movs r7, #0 + ldr r5, [r6, #0x54] + ldr r0, [r6, #0x68] + mov sl, r0 + ldr r1, [r6, #0x50] + mov sb, r1 + ldrb r1, [r6, #0x15] + movs r0, #0x10 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + mov r8, r1 + cmp r0, #0 + beq _080269DC + ldr r0, _080269FC @ =0xFFFFFD00 + mov r8, r0 +_080269DC: + mov r0, sl + adds r0, #0x83 + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x20 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3f + bhi _08026A00 + mov r1, sl + adds r1, #0x82 + ldrh r0, [r1] + add r0, r8 + strh r0, [r1] + b _08026A02 + .align 2, 0 +_080269FC: .4byte 0xFFFFFD00 +_08026A00: + movs r7, #1 +_08026A02: + mov r0, sb + adds r0, #0x83 + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x44 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x87 + bhi _08026A20 + mov r1, sb + adds r1, #0x82 + ldrh r0, [r1] + add r0, r8 + strh r0, [r1] + b _08026A22 +_08026A20: + adds r7, #1 +_08026A22: + adds r0, r5, #0 + adds r0, #0x83 + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x40 + adds r0, #0x20 + cmp r0, #0x40 + bls _08026A62 + ldrb r1, [r6, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08026A50 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #6 + beq _08026A62 + adds r0, r5, #0 + movs r1, #6 + bl InitAnimationForceUpdate + b _08026A62 +_08026A50: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #5 + beq _08026A62 + adds r0, r5, #0 + movs r1, #5 + bl InitAnimationForceUpdate +_08026A62: + lsls r0, r4, #0x18 + cmp r0, #0 + blt _08026A74 + adds r1, r5, #0 + adds r1, #0x82 + ldrh r0, [r1] + add r0, r8 + strh r0, [r1] + b _08026A76 +_08026A74: + adds r7, #1 +_08026A76: + cmp r7, #3 + beq _08026A7C + b _08026B98 +_08026A7C: + ldrb r1, [r6, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r6, #0x10] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x76 + ldrh r0, [r1] + adds r0, #3 + strh r0, [r1] + movs r0, #0x20 + movs r1, #0 + bl sub_08080964 + ldr r0, _08026B24 @ =0x0000010B + bl SoundReq + adds r0, r6, #0 + movs r1, #0x15 + movs r2, #0 + movs r3, #0 + bl CreateObjectWithParent + adds r4, r0, #0 + cmp r4, #0 + beq _08026B2E + movs r0, #0xc9 + strh r0, [r4, #0x12] + adds r0, r6, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r1, [r6, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + adds r1, r4, #0 + adds r1, #0x58 + movs r0, #1 + strb r0, [r1] + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r2, [r5, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x1b] + ldrb r1, [r6, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08026B28 + ldrh r0, [r4, #0x2e] + subs r0, #0x38 + b _08026B2C + .align 2, 0 +_08026B24: .4byte 0x0000010B +_08026B28: + ldrh r0, [r4, #0x2e] + adds r0, #0x38 +_08026B2C: + strh r0, [r4, #0x2e] +_08026B2E: + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x54] + ldr r0, [r6, #0x68] + adds r0, #0x84 + movs r1, #1 + strb r1, [r0] + adds r2, #0x84 + strb r1, [r2] + adds r3, #0x84 + strb r1, [r3] + mov r0, sb + adds r0, #0x7a + movs r1, #0x98 + strh r1, [r0] + mov r0, sl + adds r0, #0x7a + strh r1, [r0] + adds r0, r5, #0 + adds r0, #0x7a + strh r1, [r0] + bl Random + ldr r2, _08026B94 @ =gUnk_080CC278 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r7, r6, #0 + adds r7, #0x7c + strb r0, [r7] + adds r0, r6, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + adds r0, r5, #0 + movs r1, #0x49 + movs r2, #0xa + movs r3, #0 + bl CreateObjectWithParent + adds r4, r0, #0 + cmp r4, #0 + beq _08026BB4 + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r7] + str r0, [r1] + b _08026BB4 + .align 2, 0 +_08026B94: .4byte gUnk_080CC278 +_08026B98: + adds r0, r5, #0 + adds r0, #0x76 + ldrh r0, [r0] + cmp r0, #0xef + bhi _08026BB4 + ldr r0, [r5, #0x74] + movs r1, #0x80 + lsls r1, r1, #0xb + adds r0, r0, r1 + str r0, [r5, #0x74] + ldr r0, [r5, #0x78] + ldr r1, _08026BC4 @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r5, #0x78] +_08026BB4: + adds r0, r6, #0 + bl sub_08027870 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08026BC4: .4byte 0xFFFF8000 .else push {r4, r5, r6, r7, lr} mov r7, sl @@ -4289,7 +4561,42 @@ _08027D1E: thumb_func_start sub_08027D20 sub_08027D20: @ 0x08027D20 .ifdef EU - .incbin "baserom_eu.gba", 0x027D00, 0x48 @TODO disassemble + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x15 + movs r2, #0 + movs r3, #0 + bl CreateObjectWithParent + adds r3, r0, #0 + cmp r3, #0 + beq _08027D44 + movs r0, #0xc9 + strh r0, [r3, #0x12] + adds r0, r4, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r3, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r1, [r4, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r3, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1a] + ldrh r0, [r3, #0x32] + adds r0, #1 + strh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x63 + movs r0, #8 + strb r0, [r1] +_08027D44: + adds r0, r3, #0 + pop {r4, pc} .else push {r4, r5, lr} adds r5, r0, #0 diff --git a/asm/code_08000108.s b/asm/code_08000108.s index 12ce1f80..c3f2ab5f 100644 --- a/asm/code_08000108.s +++ b/asm/code_08000108.s @@ -6,7 +6,41 @@ .text .ifdef EU - .incbin "baserom_eu.gba", 0x000118, 0x38 @TODO disassemble + thumb_func_start sub_08000118 +sub_08000118: @ 0x08000118 + add r0, pc, #0x28 + ldm r0!, {r1, r2, r3} +_0800011C: + subs r2, #4 + str r1, [r2] + cmp r2, r3 + bgt _0800011C + bx lr + + non_word_aligned_thumb_func_start sub_08000126 +sub_08000126: @ 0x08000126 + add r0, pc, #0x1C + ldm r0!, {r1, r2, r3} +_0800012A: + ldr r0, [r3] + adds r3, #4 + cmp r0, r1 + beq _0800012A + subs r2, #0xa0 +_08000134: + ldr r0, [r2] + adds r2, #4 + cmp r0, r1 + beq _08000134 + subs r1, r2, #4 + subs r0, r3, #4 + bx lr + .align 2, 0 +_08000144EU: + .byte 0x33, 0x5A, 0x43, 0x4D + .4byte gUnk_03007FA0 + .4byte gUnk_03006C14 + .endif thumb_func_start sub_08000108 diff --git a/asm/code_0801D79C.s b/asm/code_0801D79C.s index b135154c..a4614d00 100644 --- a/asm/code_0801D79C.s +++ b/asm/code_0801D79C.s @@ -2191,10 +2191,145 @@ _0801E8D2: thumb_func_start sub_0801E8D4 sub_0801E8D4: @ 0x0801E8D4 .ifdef JP - .incbin "baserom_jp.gba", 0x01E8B8, 0x90 @TODO disassemble + push {r4, r5, lr} + movs r4, #0xa +_0801E8BC: + adds r0, r4, #0 + bl CheckKinstoneFused + cmp r0, #0 + beq _0801E93A + adds r0, r4, #0 + bl sub_0801E810 + cmp r0, #0 + bne _0801E93A + ldr r1, _0801E8F4 @ =0x080C9A5C + lsls r0, r4, #3 + adds r0, r0, r1 + ldrb r1, [r0, #4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0801E8F8 @ =0x080FDFD0 + adds r2, r0, r1 + ldrb r0, [r2, #0x10] + cmp r0, #4 + bhi _0801E926 + lsls r0, r0, #2 + ldr r1, _0801E8FC @ =_0801E900 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E8F4: .4byte 0x080C9A5C +_0801E8F8: .4byte 0x080FDFD0 +_0801E8FC: .4byte _0801E900 +_0801E900: @ jump table + .4byte _0801E914 @ case 0 + .4byte _0801E918 @ case 1 + .4byte _0801E91C @ case 2 + .4byte _0801E920 @ case 3 + .4byte _0801E924 @ case 4 +_0801E914: + movs r5, #0 + b _0801E926 +_0801E918: + ldrb r5, [r2, #0x11] + b _0801E926 +_0801E91C: + movs r5, #0xf + b _0801E926 +_0801E920: + movs r5, #0x10 + b _0801E926 +_0801E924: + movs r5, #0x11 +_0801E926: + ldrh r1, [r2, #0x12] + adds r0, r5, #0 + bl sub_0807CB24 + cmp r0, #0 + beq _0801E93A + ldr r0, _0801E944 @ =0x02002C8E + adds r1, r4, #0 + bl WriteBit +_0801E93A: + adds r4, #1 + cmp r4, #0x64 + bls _0801E8BC + pop {r4, r5, pc} + .align 2, 0 +_0801E944: .4byte 0x02002C8E .else .ifdef EU - .incbin "baserom_eu.gba", 0x01E90C, 0x90 @TODO probably the same as JP? + push {r4, r5, lr} + movs r4, #0xa +_0801E910: + adds r0, r4, #0 + bl CheckKinstoneFused + cmp r0, #0 + beq _0801E98E + adds r0, r4, #0 + bl sub_0801E810 + cmp r0, #0 + bne _0801E98E + ldr r1, _0801E948 @ =gUnk_080C9CBC + lsls r0, r4, #3 + adds r0, r0, r1 + ldrb r1, [r0, #4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0801E94C @ =gUnk_080FE320 + adds r2, r0, r1 + ldrb r0, [r2, #0x10] + cmp r0, #4 + bhi _0801E97A + lsls r0, r0, #2 + ldr r1, _0801E950 @ =_0801E954 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E948: .4byte gUnk_080C9CBC +_0801E94C: .4byte gUnk_080FE320 +_0801E950: .4byte _0801E954 +_0801E954: @ jump table + .4byte _0801E968 @ case 0 + .4byte _0801E96C @ case 1 + .4byte _0801E970 @ case 2 + .4byte _0801E974 @ case 3 + .4byte _0801E978 @ case 4 +_0801E968: + movs r5, #0 + b _0801E97A +_0801E96C: + ldrb r5, [r2, #0x11] + b _0801E97A +_0801E970: + movs r5, #0xf + b _0801E97A +_0801E974: + movs r5, #0x10 + b _0801E97A +_0801E978: + movs r5, #0x11 +_0801E97A: + ldrh r1, [r2, #0x12] + adds r0, r5, #0 + bl sub_0807CB24 + cmp r0, #0 + beq _0801E98E + ldr r0, _0801E998 @ =gUnk_02002C8E + adds r1, r4, #0 + bl WriteBit +_0801E98E: + adds r4, #1 + cmp r4, #0x64 + bls _0801E910 + pop {r4, r5, pc} + .align 2, 0 +_0801E998: .4byte gUnk_02002C8E + .else push {r4, r5, lr} movs r5, #0xa diff --git a/asm/code_080A3BD0.s b/asm/code_080A3BD0.s index 041f3bc9..e32620f3 100644 --- a/asm/code_080A3BD0.s +++ b/asm/code_080A3BD0.s @@ -545,7 +545,99 @@ _080A407C: .4byte gUnk_02019EE0 thumb_func_start sub_080A4080 sub_080A4080: @ 0x080A4080 .ifdef EU - .incbin "baserom_eu.gba", 0x0A3898, 0x00000CC @TODO disassemble + push {r4, r5, r6, r7, lr} + ldr r4, _080A394C @ =gOamCmd + movs r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + ldr r5, _080A3950 @ =gChooseFileState + adds r0, r5, #0 + adds r0, #0x2f + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x10 + subs r0, r0, r1 + strh r0, [r4, #2] + movs r0, #0x40 + strh r0, [r4] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #8] + movs r0, #0xfd + lsls r0, r0, #1 + movs r1, #0 + bl sub_080ADA14 + movs r0, #0x94 + strh r0, [r4, #2] + movs r0, #0x50 + strh r0, [r4] + movs r0, #0x90 + lsls r0, r0, #3 + strh r0, [r4, #8] + ldr r7, _080A3954 @ =0x000001F9 + adds r0, r7, #0 + movs r1, #0 + bl sub_080ADA14 + movs r0, #0xb8 + strh r0, [r4] + movs r0, #0x94 + lsls r0, r0, #3 + strh r0, [r4, #8] + adds r0, r7, #0 + movs r1, #1 + bl sub_080ADA14 + ldr r0, _080A3958 @ =gMain + ldrh r0, [r0, #0xc] + lsrs r0, r0, #2 + movs r1, #0xe + ands r0, r1 + ldr r1, _080A395C @ =gUnk_08128110 + adds r6, r0, r1 + ldrb r1, [r6] + movs r0, #0xa + subs r0, r0, r1 + strh r0, [r4] + movs r0, #0x9c + lsls r0, r0, #3 + strh r0, [r4, #8] + bl sub_080A3B48 + subs r0, #1 + cmp r0, #0 + ble _080A3948 + ldr r1, [r5, #0x10] + cmp r1, #0 + bge _080A3920 + ldr r2, _080A3960 @ =0x0000FFFF + adds r1, r1, r2 +_080A3920: + asrs r5, r1, #0x10 + cmp r5, r0 + beq _080A3934 + ldrb r0, [r6, #1] + adds r0, #0x77 + strh r0, [r4, #2] + adds r0, r7, #0 + movs r1, #3 + bl sub_080ADA14 +_080A3934: + cmp r5, #0 + beq _080A3948 + ldrb r1, [r6, #1] + movs r0, #0x27 + subs r0, r0, r1 + strh r0, [r4, #2] + adds r0, r7, #0 + movs r1, #2 + bl sub_080ADA14 +_080A3948: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A394C: .4byte gOamCmd +_080A3950: .4byte gChooseFileState +_080A3954: .4byte 0x000001F9 +_080A3958: .4byte gMain +_080A395C: .4byte gUnk_08128110 +_080A3960: .4byte 0x0000FFFF .else push {r4, r5, r6, r7, lr} ldr r4, _080A4134 @ =gOamCmd @@ -1712,7 +1804,224 @@ _080A4974: .4byte gSave thumb_func_start sub_080A4978 sub_080A4978: @ 0x080A4978 .ifdef EU - .incbin "baserom_eu.gba", 0x0A4190, 0x00001CC @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, _080A432C @ =gOamCmd + movs r0, #0 + strh r0, [r5, #4] + strh r0, [r5, #6] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r5, #8] + movs r0, #0x9c + strh r0, [r5] + movs r0, #0x48 + strh r0, [r5, #2] + ldr r7, _080A4330 @ =0x000001FB + adds r0, r7, #0 + movs r1, #0 + bl sub_080ADA14 + ldr r0, _080A4334 @ =gSave + ldrb r0, [r0, #6] + movs r2, #0x88 + cmp r0, #0 + bne _080A41C2 + movs r2, #0x82 +_080A41C2: + ldr r3, _080A4338 @ =gChooseFileState + ldrb r1, [r3, #1] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080A4226 + ldrb r4, [r3, #0x1c] + cmp r2, r4 + blt _080A4226 + movs r6, #0xe8 + strh r6, [r5] + movs r0, #0xa0 + lsls r0, r0, #7 + adds r1, r2, #0 + bl __divsi3 + subs r1, r4, #1 + muls r0, r1, r0 + cmp r0, #0 + bge _080A41EC + adds r0, #0xff +_080A41EC: + asrs r0, r0, #8 + adds r0, #0x20 + strh r0, [r5, #2] + adds r0, r7, #0 + movs r1, #1 + bl sub_080ADA14 + ldr r0, _080A433C @ =gMain + ldrh r1, [r0, #0xc] + movs r0, #0x10 + ands r0, r1 + movs r4, #2 + cmp r0, #0 + beq _080A420A + movs r4, #4 +_080A420A: + strh r6, [r5] + movs r0, #0x1a + strh r0, [r5, #2] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080ADA14 + strh r6, [r5] + movs r0, #0x76 + strh r0, [r5, #2] + adds r1, r4, #1 + adds r0, r7, #0 + bl sub_080ADA14 +_080A4226: + ldr r0, _080A433C @ =gMain + ldrh r1, [r0, #0xc] + movs r2, #0x10 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080A427C + ldr r5, _080A4338 @ =gChooseFileState + ldrb r1, [r5, #1] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080A427C + ldrb r0, [r5, #0x1e] + cmp r0, #0 + beq _080A427C + ldr r4, _080A432C @ =gOamCmd + strh r2, [r4, #2] + movs r0, #0x1f + ldrsb r0, [r5, r0] + cmp r0, #0 + ble _080A4262 + movs r0, #6 + strh r0, [r4] + movs r0, #0x9c + strh r0, [r4, #2] + ldr r0, _080A4330 @ =0x000001FB + movs r1, #6 + bl sub_080ADA14 +_080A4262: + ldrb r1, [r5, #0x1e] + movs r0, #0x1f + ldrsb r0, [r5, r0] + cmp r1, r0 + ble _080A427C + movs r0, #0xea + strh r0, [r4] + movs r0, #0x9c + strh r0, [r4, #2] + ldr r0, _080A4330 @ =0x000001FB + movs r1, #7 + bl sub_080ADA14 +_080A427C: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _080A42D0 + ldr r2, _080A4338 @ =gChooseFileState + ldrb r1, [r2, #1] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080A42D0 + ldr r1, _080A432C @ =gOamCmd + movs r0, #0x10 + strh r0, [r1, #2] + ldrb r4, [r2, #0x1c] + movs r6, #2 + adds r7, r1, #0 + movs r5, #0x6b +_080A42A0: + strh r5, [r7] + adds r0, r4, #0 + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #1 + movs r2, #0x9e + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7, #8] + movs r0, #0 + movs r1, #9 + bl sub_080ADA14 + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + adds r4, r0, #0 + subs r5, #7 + subs r6, #1 + cmp r6, #0 + bge _080A42A0 +_080A42D0: + ldr r4, _080A4338 @ =gChooseFileState + ldrb r1, [r4, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A4352 + ldrb r0, [r4, #0x1c] + bl sub_080A4948 + cmp r0, #0 + beq _080A4352 + ldr r1, _080A432C @ =gOamCmd + movs r0, #0x2c + strh r0, [r1] + movs r0, #0x48 + strh r0, [r1, #2] + movs r0, #0xd4 + lsls r0, r0, #7 + strh r0, [r1, #8] + ldr r0, _080A4340 @ =0x000001F7 + ldrb r1, [r4, #0x1c] + subs r1, #1 + bl sub_080ADA14 + ldrb r1, [r4, #0x1c] + ldrb r0, [r4, #0x1d] + cmp r0, r1 + beq _080A4352 + strb r1, [r4, #0x1d] + ldrb r4, [r4, #0x1c] + lsls r4, r4, #4 + ldr r0, _080A4344 @ =gUnk_081281A8 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #0x16 + movs r2, #9 + bl LoadPalettes + ldr r0, [r4, #4] + ldr r2, [r4, #8] + cmp r2, #0 + bge _080A434CEU + ldr r1, _080A4348EU @ =0x06014000 + bl LZ77UnCompVram + b _080A4352 + .align 2, 0 +_080A432C: .4byte gOamCmd +_080A4330: .4byte 0x000001FB +_080A4334: .4byte gSave +_080A4338: .4byte gChooseFileState +_080A433C: .4byte gMain +_080A4340: .4byte 0x000001F7 +_080A4344: .4byte gUnk_081281A8 +_080A4348EU: .4byte 0x06014000 +_080A434CEU: + ldr r1, _080A4358EU @ =0x06014000 + bl LoadResourceAsync +_080A4352: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A4358EU: .4byte 0x06014000 .else push {r4, r5, r6, r7, lr} mov r7, r8 @@ -3007,7 +3316,227 @@ _080A5380: thumb_func_start sub_080A5384 sub_080A5384: @ 0x080A5384 .ifdef EU - .incbin "baserom_eu.gba", 0x0A4B98, 0x00001C8 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080A4C14EU @ =gOamCmd + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #3 + strh r1, [r0, #4] + strh r2, [r0, #6] + strh r2, [r0, #8] + movs r5, #0 + ldr r4, _080A4C18 @ =gSave + movs r0, #0xb6 + adds r0, r0, r4 + mov sl, r0 + movs r1, #0xac + adds r1, r1, r4 + mov sb, r1 + movs r2, #0xad + adds r2, r2, r4 + mov r8, r2 + movs r6, #0 +_080A4BC8: + ldr r0, _080A4C1C @ =gChooseFileState + adds r0, #0x10 + adds r2, r5, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _080A4C68 + ldr r0, _080A4C20 @ =gUnk_08128B64 + adds r1, r6, r0 + ldrb r0, [r1, #6] + ldr r3, _080A4C14EU @ =gOamCmd + strh r0, [r3] + ldrb r0, [r1, #7] + strh r0, [r3, #2] + ldrb r3, [r2] + cmp r3, #0x1f + bhi _080A4BF4 + cmp r3, #0x1c + blo _080A4BF4 + adds r0, r3, #0 + subs r0, #0x1c + add r0, sl + ldrb r3, [r0] +_080A4BF4: + movs r2, #3 + cmp r3, #7 + blo _080A4C42 + cmp r3, #8 + bhi _080A4C28 + ldr r0, _080A4C24 @ =gBombBagSizes + adds r1, r4, #0 + adds r1, #0xae + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + mov r7, sb + ldrb r7, [r7] + cmp r0, r7 + bhi _080A4C42 + b _080A4C40 + .align 2, 0 +_080A4C14EU: .4byte gOamCmd +_080A4C18: .4byte gSave +_080A4C1C: .4byte gChooseFileState +_080A4C20: .4byte gUnk_08128B64 +_080A4C24: .4byte gBombBagSizes +_080A4C28: + cmp r3, #0xa + bhi _080A4C42 + ldr r0, _080A4D40 @ =gQuiverSizes + adds r1, r4, #0 + adds r1, #0xaf + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bhi _080A4C42 +_080A4C40: + movs r2, #4 +_080A4C42: + lsls r2, r2, #0xc + movs r7, #0xd8 + lsls r7, r7, #2 + adds r0, r6, r7 + movs r7, #0x80 + lsls r7, r7, #4 + adds r1, r7, #0 + orrs r0, r1 + orrs r2, r0 + ldr r0, _080A4D44 @ =gOamCmd + strh r2, [r0, #8] + ldr r1, _080A4D48 @ =gUnk_080FDFD8 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r1, [r0] + ldr r0, _080A4D4C @ =0x00000141 + bl sub_080ADA14 +_080A4C68: + adds r6, #8 + adds r5, #1 + cmp r5, #0x10 + bls _080A4BC8 + ldr r0, _080A4D44 @ =gOamCmd + movs r1, #0x80 + lsls r1, r1, #4 + strh r1, [r0, #8] + ldr r1, _080A4D50EU @ =gChooseFileState + ldrb r1, [r1, #3] + mov sb, r0 + cmp r1, #0x10 + bne _080A4C8E + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _080A4C8E + movs r1, #0x11 +_080A4C8E: + lsls r0, r1, #3 + ldr r1, _080A4D54EU @ =gUnk_08128B64 + mov r8, r1 + adds r1, r0, r1 + mov r4, sb + ldrb r0, [r1, #6] + strh r0, [r4] + ldrb r0, [r1, #7] + strh r0, [r4, #2] + ldrb r2, [r1, #4] + ldr r0, _080A4D58 @ =gMain + ldrh r1, [r0, #0xc] + movs r0, #0x10 + ands r0, r1 + adds r1, r2, #4 + cmp r0, #0 + beq _080A4CB2EU + adds r1, r2, #3 +_080A4CB2EU: + movs r6, #0xfd + lsls r6, r6, #1 + adds r0, r6, #0 + bl sub_080ADA14 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #0x11 + cmp r0, #0 + beq _080A4CCA + movs r1, #0x10 +_080A4CCA: + lsls r0, r1, #3 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1, #6] + strh r0, [r4] + ldrb r0, [r1, #7] + strh r0, [r4, #2] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r4, #8] + adds r0, r6, #0 + movs r1, #0x22 + bl sub_080ADA14 + ldr r7, _080A4D5C @ =gSave + adds r0, r7, #0 + adds r0, #0xb4 + ldrb r0, [r0] + bl sub_080A554C + adds r5, r0, #0 + cmp r5, #0x10 + bhi _080A4D0E + lsls r0, r5, #3 + mov r3, r8 + adds r1, r0, r3 + ldrb r0, [r1, #6] + strh r0, [r4] + ldrb r0, [r1, #7] + strh r0, [r4, #2] + adds r0, r6, #0 + movs r1, #3 + bl sub_080ADA14 +_080A4D0E: + adds r0, r7, #0 + adds r0, #0xb5 + ldrb r0, [r0] + bl sub_080A554C + adds r5, r0, #0 + cmp r5, #0x10 + bhi _080A4D36 + lsls r0, r5, #3 + mov r7, r8 + adds r1, r0, r7 + ldrb r0, [r1, #6] + mov r2, sb + strh r0, [r2] + ldrb r0, [r1, #7] + strh r0, [r2, #2] + adds r0, r6, #0 + movs r1, #3 + bl sub_080ADA14 +_080A4D36: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A4D40: .4byte gQuiverSizes +_080A4D44: .4byte gOamCmd +_080A4D48: .4byte gUnk_080FDFD8 +_080A4D4C: .4byte 0x00000141 +_080A4D50EU: .4byte gChooseFileState +_080A4D54EU: .4byte gUnk_08128B64 +_080A4D58: .4byte gMain +_080A4D5C: .4byte gSave .else push {r4, r5, r6, r7, lr} mov r7, sl diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index 8951bdc2..e7582e86 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -351,7 +351,211 @@ _080A57F0: thumb_func_start sub_080A57F4 sub_080A57F4: @ 0x080A57F4 .ifdef EU - .incbin "baserom_eu.gba", 0x0A5008, 0x000019C @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r2, _080A50A8 @ =gOamCmd + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2, #4] + strh r1, [r2, #6] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + ldr r1, _080A50AC @ =gUnk_08128C94 + mov sb, r1 + cmp r0, #0 + bne _080A502E + ldr r3, _080A50B0 @ =gUnk_08128C14 + mov sb, r3 +_080A502E: + ldr r0, _080A50B4 @ =gChooseFileState + ldrb r0, [r0, #3] + lsls r0, r0, #3 + mov r1, sb + adds r3, r1, r0 + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r2, #8] + ldrb r0, [r3, #6] + strh r0, [r2] + ldrb r0, [r3, #7] + strh r0, [r2, #2] + ldrb r2, [r3, #4] + ldr r0, _080A50B8 @ =gMain + ldrh r1, [r0, #0xc] + movs r0, #0x10 + ands r0, r1 + adds r1, r2, #0 + adds r1, #0xa + cmp r0, #0 + bne _080A505A + adds r1, #1 +_080A505A: + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 + movs r3, #0 + mov r8, r3 + mov r7, sb + adds r7, #5 +_080A506A: + ldr r0, _080A50B4 @ =gChooseFileState + adds r0, #0x10 + mov r1, r8 + adds r6, r1, r0 + ldrb r1, [r6] + cmp r1, #0 + beq _080A50FA + mov r3, r8 + lsls r5, r3, #3 + mov r0, sb + adds r3, r0, r5 + ldr r4, _080A50A8 @ =gOamCmd + ldrb r0, [r7, #1] + strh r0, [r4] + ldrb r2, [r7, #2] + strh r2, [r4, #2] + movs r0, #0xe8 + lsls r0, r0, #8 + strh r0, [r4, #8] + cmp r1, #0x33 + bhi _080A50CA + mov r1, r8 + cmp r1, #2 + bne _080A50BC + ldrb r0, [r7] + adds r1, r0, #0 + adds r1, #0xa + movs r0, #0xfd + lsls r0, r0, #1 + b _080A50F6 + .align 2, 0 +_080A50A8: .4byte gOamCmd +_080A50AC: .4byte gUnk_08128C94 +_080A50B0: .4byte gUnk_08128C14 +_080A50B4: .4byte gChooseFileState +_080A50B8: .4byte gMain +_080A50BC: + ldrb r0, [r6] + adds r0, #9 + ldrb r3, [r3, #5] + adds r1, r0, r3 + movs r0, #0xfd + lsls r0, r0, #1 + b _080A50F6 +_080A50CA: + ldr r3, _080A50E0 @ =0x0000EB80 + adds r0, r5, r3 + strh r0, [r4, #8] + cmp r1, #0x3d + beq _080A50E4 + cmp r1, #0x3e + bne _080A50EA + adds r0, r2, #0 + adds r0, #8 + b _080A50E8 + .align 2, 0 +_080A50E0: .4byte 0x0000EB80 +_080A50E4: + adds r0, r2, #0 + adds r0, #0xd +_080A50E8: + strh r0, [r4, #2] +_080A50EA: + ldr r0, _080A5190 @ =gUnk_080FDFD8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + ldrb r1, [r0] + ldr r0, _080A5194 @ =0x00000141 +_080A50F6: + bl sub_080ADA14 +_080A50FA: + adds r7, #8 + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #0xf + bls _080A506A + ldr r4, _080A5198 @ =gChooseFileState + ldrb r0, [r4, #0x12] + cmp r0, #0 + beq _080A5132 + ldr r2, _080A519C @ =gOamCmd + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r2, #8] + mov r3, sb + adds r3, #0x10 + ldrb r0, [r3, #6] + adds r0, #9 + strh r0, [r2] + ldrb r0, [r3, #7] + adds r0, #7 + strh r0, [r2, #2] + movs r0, #0 + movs r1, #1 + bl sub_080ADA14 +_080A5132: + ldrb r0, [r4, #0x13] + cmp r0, #0x3f + bne _080A5188 + mov r3, sb + adds r3, #0x18 + ldr r1, _080A519C @ =gOamCmd + ldrb r0, [r3, #6] + adds r0, #8 + strh r0, [r1] + ldrb r0, [r3, #7] + adds r0, #8 + strh r0, [r1, #2] + ldr r0, _080A51A0 @ =gSave + adds r0, #0xc2 + ldrh r4, [r0] + movs r0, #0 + mov r8, r0 + adds r5, r1, #0 +_080A5156: + adds r0, r4, #0 + movs r1, #0xa + bl __modsi3 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r0, r1 + strh r0, [r5, #8] + movs r0, #0 + movs r1, #1 + bl sub_080ADA14 + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + adds r4, r0, #0 + ldrh r0, [r5] + subs r0, #8 + strh r0, [r5] + movs r3, #1 + add r8, r3 + mov r0, r8 + cmp r0, #2 + bls _080A5156 +_080A5188: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5190: .4byte gUnk_080FDFD8 +_080A5194: .4byte 0x00000141 +_080A5198: .4byte gChooseFileState +_080A519C: .4byte gOamCmd +_080A51A0: .4byte gSave + + .else push {r4, r5, r6, r7, lr} mov r7, sb @@ -1039,7 +1243,263 @@ _080A5D18: .4byte gUnk_02019EE0 thumb_func_start sub_080A5D1C sub_080A5D1C: @ 0x080A5D1C .ifdef EU - .incbin "baserom_eu.gba", 0x0A550C, 0x000020C @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080A5690 @ =gArea + ldrb r0, [r0, #3] + lsls r0, r0, #2 + ldr r1, _080A5694 @ =gUnk_080C9C6C + adds r7, r0, r1 + ldr r1, _080A5698EU @ =gUnk_08128D3C + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r6, [r0] + bl sub_0801DB94 + mov r8, r0 + ldr r5, _080A569CEU @ =gOamCmd + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r5, #4] + movs r0, #0 + strh r0, [r5, #6] + strh r0, [r5, #8] + movs r0, #0x34 + strh r0, [r5] + ldr r0, _080A56A0 @ =gChooseFileState + ldrb r1, [r0, #3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r6, r0 + strh r0, [r5, #2] + ldr r1, _080A56A4 @ =gMain + mov sl, r1 + ldrh r1, [r1, #0xc] + movs r0, #0x10 + ands r0, r1 + movs r1, #0x74 + cmp r0, #0 + bne _080A5560 + movs r1, #0x75 +_080A5560: + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 + movs r0, #0x20 + mov sb, r0 + mov r1, sb + strh r1, [r5] + mov r1, r8 + lsls r0, r1, #1 + add r0, r8 + lsls r0, r0, #2 + adds r0, r6, r0 + strh r0, [r5, #2] + mov r0, sl + ldrh r1, [r0, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0x79 + cmp r0, #0 + beq _080A558C + movs r1, #0x78 +_080A558C: + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 + movs r0, #0x7e + strh r0, [r5, #2] + movs r0, #0x87 + lsls r0, r0, #7 + strh r0, [r5, #8] + bl sub_080527CC + cmp r0, #0 + beq _080A55BE + movs r0, #0x18 + strh r0, [r5] + ldr r0, _080A56A8 @ =gUnk_080FDFD8 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r4, [r0] + ldr r0, _080A56ACEU @ =0x00000143 + adds r1, r4, #0 + bl sub_080ADA14 +_080A55BE: + bl sub_08052764 + cmp r0, #0 + beq _080A55DE + movs r0, #0x2e + strh r0, [r5] + ldr r0, _080A56A8 @ =gUnk_080FDFD8 + movs r1, #0xa4 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r4, [r0] + ldr r0, _080A56ACEU @ =0x00000143 + adds r1, r4, #0 + bl sub_080ADA14 +_080A55DE: + bl sub_0805279C + cmp r0, #0 + beq _080A563CEU + movs r0, #0x45 + strh r0, [r5] + movs r0, #0xe0 + lsls r0, r0, #2 + strh r0, [r5, #8] + ldr r0, _080A56A8 @ =gUnk_080FDFD8 + movs r1, #0xa2 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r4, [r0] + ldr r0, _080A56ACEU @ =0x00000143 + adds r1, r4, #0 + bl sub_080ADA14 + bl sub_080A5F24 + cmp r0, #0 + beq _080A563CEU + movs r0, #0 + strh r0, [r5, #8] + movs r0, #0x46 + strh r0, [r5] + ldrb r1, [r7, #1] + ldrb r0, [r7, #2] + subs r1, r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r6, r0 + strh r0, [r5, #2] + mov r0, sl + ldrh r1, [r0, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0x7b + cmp r0, #0 + beq _080A5634EU + movs r1, #0x7a +_080A5634EU: + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 +_080A563CEU: + ldr r1, _080A569CEU @ =gOamCmd + movs r0, #0 + strh r0, [r1, #8] + movs r0, #0x34 + strh r0, [r1] + strh r6, [r1, #2] + ldrb r0, [r7, #1] + adds r4, r0, #0 + adds r4, #0x82 + movs r5, #0 + ldrb r0, [r7] + cmp r5, r0 + bhs _080A5672 + adds r6, r1, #0 +_080A5658: + movs r0, #0xfd + lsls r0, r0, #1 + adds r1, r4, #0 + bl sub_080ADA14 + subs r4, #1 + ldrh r0, [r6, #2] + adds r0, #0xc + strh r0, [r6, #2] + adds r5, #1 + ldrb r1, [r7] + cmp r5, r1 + blo _080A5658 +_080A5672: + ldr r5, _080A56B0 @ =gUnk_02019EE0 + ldrb r0, [r5] + cmp r0, #0 + beq _080A570E + ldr r7, _080A569CEU @ =gOamCmd + ldr r6, _080A56B4 @ =gScreen +_080A567E: + ldrb r0, [r5] + cmp r0, #2 + beq _080A56D4EU + cmp r0, #2 + bgt _080A56B8 + cmp r0, #1 + beq _080A56C2 + b _080A56E6 + .align 2, 0 +_080A5690: .4byte gArea +_080A5694: .4byte gUnk_080C9C6C +_080A5698EU: .4byte gUnk_08128D3C +_080A569CEU: .4byte gOamCmd +_080A56A0: .4byte gChooseFileState +_080A56A4: .4byte gMain +_080A56A8: .4byte gUnk_080FDFD8 +_080A56ACEU: .4byte 0x00000143 +_080A56B0: .4byte gUnk_02019EE0 +_080A56B4: .4byte gScreen +_080A56B8: + cmp r0, #3 + beq _080A56D8EU + cmp r0, #4 + beq _080A56DCEU + b _080A56E6 +_080A56C2: + movs r4, #0x7d + ldr r0, _080A56D0EU @ =gChooseFileState + ldrb r0, [r0, #3] + cmp r8, r0 + beq _080A56E8 + movs r4, #0x7e + b _080A56E8 + .align 2, 0 +_080A56D0EU: .4byte gChooseFileState +_080A56D4EU: + movs r4, #0x80 + b _080A56E8 +_080A56D8EU: + movs r4, #0x81 + b _080A56E8 +_080A56DCEU: + bl sub_080A5F24 + movs r4, #0x7f + cmp r0, #0 + bne _080A56E8 +_080A56E6: + movs r4, #0xff +_080A56E8: + ldrb r0, [r5, #1] + adds r0, #0x50 + ldrh r1, [r6, #0x16] + subs r0, r0, r1 + strh r0, [r7] + ldrb r0, [r5, #2] + adds r0, #0x10 + ldrh r1, [r6, #0x18] + subs r0, r0, r1 + strh r0, [r7, #2] + movs r0, #0xfd + lsls r0, r0, #1 + adds r1, r4, #0 + bl sub_080ADA14 + adds r5, #3 + ldrb r0, [r5] + cmp r0, #0 + bne _080A567E +_080A570E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + .else push {r4, r5, r6, r7, lr} mov r7, sl @@ -1597,7 +2057,121 @@ _080A6178: thumb_func_start sub_080A617C sub_080A617C: @ 0x080A617C .ifdef EU - .incbin "baserom_eu.gba", 0x0A5970, 0x00000F4 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r6, _080A5A50 @ =gOamCmd + movs r0, #0 + strh r0, [r6, #4] + strh r0, [r6, #6] + movs r7, #0xc0 + lsls r7, r7, #4 + strh r7, [r6, #8] + movs r0, #0x2f + mov r8, r0 + mov r2, r8 + strh r2, [r6, #2] + ldr r4, _080A5A54 @ =gChooseFileState + ldrb r1, [r4, #3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + adds r0, #0x1a + strh r0, [r6] + ldr r0, _080A5A58 @ =gMain + ldrh r1, [r0, #0xc] + movs r0, #0x20 + ands r0, r1 + movs r1, #9 + cmp r0, #0 + beq _080A59AC + movs r1, #8 +_080A59AC: + ldr r5, _080A5A5C @ =0x000001FB + adds r0, r5, #0 + bl sub_080ADA14 + ldrb r0, [r4, #3] + lsls r0, r0, #3 + ldr r1, _080A5A60 @ =gUnk_08128D70 + adds r4, r0, r1 + ldrb r0, [r4] + bl GetInventoryValue + cmp r0, #0 + beq _080A5A0E + strh r7, [r6, #8] + movs r0, #0xcc + strh r0, [r6] + movs r0, #0x88 + strh r0, [r6, #2] + adds r0, r5, #0 + movs r1, #0xb + bl sub_080ADA14 + movs r0, #0x30 + strh r0, [r6] + movs r0, #0x6c + strh r0, [r6, #2] + ldrb r0, [r4, #1] + lsls r0, r0, #0xc + movs r2, #0xd8 + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r6, #8] + ldrb r1, [r4, #2] + adds r0, r5, #0 + bl sub_080ADA14 + ldrb r0, [r4, #1] + lsls r0, r0, #0xc + orrs r0, r7 + strh r0, [r6, #8] + movs r0, #0x78 + strh r0, [r6] + movs r0, #0x68 + strh r0, [r6, #2] + adds r0, r5, #0 + movs r1, #0xc + bl sub_080ADA14 +_080A5A0E: + mov r0, r8 + strh r0, [r6, #2] + movs r5, #0 + adds r7, r6, #0 + movs r6, #0x18 +_080A5A18: + lsls r1, r5, #3 + ldr r0, _080A5A60 @ =gUnk_08128D70 + adds r4, r1, r0 + ldrb r0, [r4] + bl GetInventoryValue + cmp r0, #0 + beq _080A5A40 + ldrb r0, [r4, #1] + lsls r0, r0, #0xc + movs r2, #0xc0 + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7, #8] + strh r6, [r7] + ldr r0, _080A5A5C @ =0x000001FB + movs r1, #0xa + bl sub_080ADA14 +_080A5A40: + adds r6, #0x1b + adds r5, #1 + cmp r5, #7 + bls _080A5A18 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5A50: .4byte gOamCmd +_080A5A54: .4byte gChooseFileState +_080A5A58: .4byte gMain +_080A5A5C: .4byte 0x000001FB +_080A5A60: .4byte gUnk_08128D70 + .else push {r4, r5, r6, r7, lr} mov r7, r8 @@ -1850,7 +2424,95 @@ _080A6374: .4byte gMenu thumb_func_start sub_080A6378 sub_080A6378: @ 0x080A6378 .ifdef EU - .incbin "baserom_eu.gba", 0x0A5B6C, 0x00000C0 @TODO disassemble + push {r4, r5, r6, lr} + ldr r0, _080A5C18 @ =gChooseFileState + adds r4, r0, #0 + adds r4, #0x2c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r6, #0x20 + ands r0, r6 + cmp r0, #0 + beq _080A5B86 + bl sub_080A6438 +_080A5B86: + ldr r5, _080A5C1C @ =gOamCmd + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r5, #4] + movs r0, #0 + strh r0, [r5, #6] + movs r0, #0xe0 + lsls r0, r0, #7 + strh r0, [r5, #8] + ldrb r1, [r4] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _080A5BE0 + ldr r4, _080A5C20 @ =gScreenTransition + ldrh r1, [r4, #0x20] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #5 + movs r1, #0xf9 + lsls r1, r1, #4 + bl __divsi3 + adds r0, #0x28 + strh r0, [r5] + ldrh r0, [r4, #0x22] + lsls r0, r0, #7 + movs r1, #0xc6 + lsls r1, r1, #4 + bl __divsi3 + adds r0, #0xc + strh r0, [r5, #2] + ldr r0, _080A5C24 @ =gPlayerState + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + movs r1, #0x59 + cmp r0, #0 + beq _080A5BD8 + movs r1, #0x5a +_080A5BD8: + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 +_080A5BE0: + ldr r3, _080A5C18 @ =gChooseFileState + ldrb r0, [r3, #3] + lsls r0, r0, #3 + ldr r1, _080A5C28 @ =gUnk_08128DE8 + adds r0, r0, r1 + ldr r2, _080A5C1C @ =gOamCmd + ldrb r1, [r0, #6] + strh r1, [r2] + ldrb r0, [r0, #7] + strh r0, [r2, #2] + ldrb r0, [r3, #3] + lsls r2, r0, #1 + adds r2, r2, r0 + adds r2, #0x26 + adds r3, #0x2c + ldrb r1, [r3] + lsrs r1, r1, #4 + movs r0, #1 + bics r0, r1 + adds r1, r2, r0 + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 + bl sub_080A6498 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A5C18: .4byte gChooseFileState +_080A5C1C: .4byte gOamCmd +_080A5C20: .4byte gScreenTransition +_080A5C24: .4byte gPlayerState +_080A5C28: .4byte gUnk_08128DE8 + .else push {r4, r5, r6, lr} ldr r0, _080A6420 @ =gMenu @@ -1944,7 +2606,53 @@ _080A6434: .4byte gUnk_08128DE8 thumb_func_start sub_080A6438 sub_080A6438: @ 0x080A6438 .ifdef EU - .incbin "baserom_eu.gba", 0x0A5C2C, 0x0000060 @TODO disassemble + push {r4, r5, r6, r7, lr} + ldr r2, _080A5C7C @ =gOamCmd + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2, #4] + strh r1, [r2, #6] + strh r1, [r2, #8] + ldr r0, _080A5C80 @ =gSave + ldr r1, _080A5C84 @ =gChooseFileState + ldrh r0, [r0, #0x20] + ldrh r5, [r1, #0x10] + ands r5, r0 + ldr r4, _080A5C88EU @ =gUnk_08128F58 + movs r6, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _080A5C78 + adds r7, r2, #0 +_080A5C52: + movs r0, #1 + lsls r0, r6 + ands r0, r5 + cmp r0, #0 + beq _080A5C6E + ldrb r0, [r4, #1] + strh r0, [r7] + ldrb r0, [r4, #2] + strh r0, [r7, #2] + ldrb r1, [r4] + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 +_080A5C6E: + adds r6, #1 + adds r4, #8 + ldrb r0, [r4] + cmp r0, #0 + bne _080A5C52 +_080A5C78: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5C7C: .4byte gOamCmd +_080A5C80: .4byte gSave +_080A5C84: .4byte gChooseFileState +_080A5C88EU: .4byte gUnk_08128F58 + .else push {r4, r5, r6, r7, lr} ldr r2, _080A6484 @ =gOamCmd @@ -1997,7 +2705,53 @@ _080A6494: .4byte 0x000001FB thumb_func_start sub_080A6498 sub_080A6498: @ 0x080A6498 .ifdef EU - .incbin "baserom_eu.gba", 0x0A5C8C, 0x0000064 @TODO disassemble + push {r4, r5, r6, r7, lr} + ldr r0, _080A5CDCEU @ =gOamCmd + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #4 + strh r1, [r0, #4] + strh r2, [r0, #6] + strh r2, [r0, #8] + movs r4, #0 + ldr r7, _080A5CE0 @ =gSave + adds r6, r0, #0 + movs r5, #0x28 +_080A5CA4: + movs r1, #1 + lsls r1, r4 + ldr r0, [r7, #0x40] + ands r0, r1 + cmp r0, #0 + bne _080A5CC8EU + lsls r1, r4, #3 + ldr r0, _080A5CE4 @ =gUnk_08128DE8 + adds r1, r1, r0 + ldrb r0, [r1, #6] + strh r0, [r6] + ldrb r0, [r1, #7] + strh r0, [r6, #2] + movs r0, #0xfd + lsls r0, r0, #1 + adds r1, r5, #0 + bl sub_080ADA14 +_080A5CC8EU: + adds r5, #3 + adds r4, #1 + cmp r4, #0x10 + bls _080A5CA4 + ldr r0, _080A5CE8 @ =gScreen + adds r0, #0x62 + ldr r1, _080A5CEC @ =0x00003D3F + strh r1, [r0] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5CDCEU: .4byte gOamCmd +_080A5CE0: .4byte gSave +_080A5CE4: .4byte gUnk_08128DE8 +_080A5CE8: .4byte gScreen +_080A5CEC: .4byte 0x00003D3F + .else push {r4, r5, r6, r7, lr} ldr r0, _080A64E4 @ =gOamCmd @@ -2272,7 +3026,129 @@ _080A66C2: thumb_func_start sub_080A66D0 sub_080A66D0: @ 0x080A66D0 .ifdef EU - .incbin "baserom_eu.gba", 0x0A5EC4, 0x00000F4 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r6, _080A5F74 @ =gOamCmd + movs r0, #0 + strh r0, [r6, #4] + strh r0, [r6, #6] + movs r0, #0x78 + strh r0, [r6] + ldr r4, _080A5F78 @ =gChooseFileState + ldrb r0, [r4, #3] + lsls r0, r0, #3 + ldr r1, _080A5F7C @ =gUnk_08128E94 + adds r5, r0, r1 + adds r1, r4, #0 + adds r1, #0x2c + ldrb r0, [r1] + adds r2, r0, #1 + strb r2, [r1] + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + beq _080A5F30 + movs r0, #0x10 + ands r2, r0 + cmp r2, #0 + beq _080A5F30 + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r6, #8] + ldrh r0, [r4, #0xa] + cmp r0, #0 + beq _080A5F1A + movs r0, #0xc + strh r0, [r6, #2] + movs r0, #0xfd + lsls r0, r0, #1 + movs r1, #0x71 + bl sub_080ADA14 +_080A5F1A: + ldrb r0, [r5, #2] + ldrh r4, [r4, #0xa] + cmp r0, r4 + bls _080A5F30 + movs r0, #0x84 + strh r0, [r6, #2] + movs r0, #0xfd + lsls r0, r0, #1 + movs r1, #0x72 + bl sub_080ADA14 +_080A5F30: + ldrb r0, [r5, #7] + mov sl, r0 + ldrb r5, [r5, #3] + mov sb, r5 + ldr r1, _080A5F78 @ =gChooseFileState + ldrh r0, [r1, #0xa] + mov r8, r0 + ldr r2, _080A5F74 @ =gOamCmd + movs r0, #0 + strh r0, [r2, #4] + strh r0, [r2, #6] + movs r0, #0xc0 + lsls r0, r0, #4 + strh r0, [r2, #8] + adds r1, #0x2c + ldrb r1, [r1] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _080A5F80 @ =gUnk_02019EE0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _080A5FAE + rsbs r5, r6, #0 + orrs r5, r6 + adds r7, r2, #0 +_080A5F66: + movs r1, #0 + ldrb r0, [r4] + cmp r0, #1 + bne _080A5F84 + lsrs r1, r5, #0x1f + b _080A5F8A + .align 2, 0 +_080A5F74: .4byte gOamCmd +_080A5F78: .4byte gChooseFileState +_080A5F7C: .4byte gUnk_08128E94 +_080A5F80: .4byte gUnk_02019EE0 +_080A5F84: + cmp r6, #0 + bne _080A5F8A + movs r1, #1 +_080A5F8A: + cmp r1, #0 + beq _080A5FA6 + ldrh r0, [r4, #4] + add r0, sl + strh r0, [r7] + ldrh r0, [r4, #6] + add r0, sb + mov r1, r8 + subs r0, r0, r1 + strh r0, [r7, #2] + ldrh r0, [r4, #2] + ldrb r1, [r4, #1] + bl sub_080ADA14 +_080A5FA6: + adds r4, #8 + ldrh r0, [r4, #2] + cmp r0, #0 + bne _080A5F66 +_080A5FAE: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .else push {r4, r5, r6, r7, lr} mov r7, sl @@ -2533,7 +3409,93 @@ _080A68D0: .4byte gUnk_02019EE0 thumb_func_start sub_080A68D4 sub_080A68D4: @ 0x080A68D4 .ifdef EU - .incbin "baserom_eu.gba", 0x0A60C8, 0x00000B4 @TODO disassemble + push {r4, r5, r6, lr} + ldr r0, _080A6100EU @ =gPlayerState + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + movs r4, #0x64 + cmp r0, #0 + beq _080A60DA + movs r4, #0x65 +_080A60DA: + ldr r1, _080A6104EU @ =gScreenTransition + ldrh r0, [r1, #0x20] + ldrh r1, [r1, #0x22] + movs r2, #0xfd + lsls r2, r2, #1 + movs r3, #0x80 + lsls r3, r3, #1 + adds r3, r4, r3 + bl sub_080A698C + bl sub_080A6F40 + adds r6, r0, #0 + ldr r0, _080A6108 @ =gSave + ldrh r0, [r0, #0x20] + ands r6, r0 + ldr r4, _080A610C @ =gUnk_08128F58 + movs r5, #0 + b _080A612C + .align 2, 0 +_080A6100EU: .4byte gPlayerState +_080A6104EU: .4byte gScreenTransition +_080A6108: .4byte gSave +_080A610C: .4byte gUnk_08128F58 +_080A6110: + movs r0, #1 + lsls r0, r5 + ands r0, r6 + cmp r0, #0 + beq _080A6128EU + ldrh r0, [r4, #4] + ldrh r1, [r4, #6] + ldrb r3, [r4, #3] + movs r2, #0xfd + lsls r2, r2, #1 + bl sub_080A698C +_080A6128EU: + adds r5, #1 + adds r4, #8 +_080A612C: + ldrb r0, [r4] + cmp r0, #0 + bne _080A6110 + movs r5, #0xa +_080A6134: + adds r0, r5, #0 + bl CheckKinstoneFused + cmp r0, #0 + beq _080A616A + adds r0, r5, #0 + bl sub_0801E810 + cmp r0, #0 + bne _080A616A + ldr r1, _080A6174 @ =gUnk_080C9CBC + lsls r0, r5, #3 + adds r0, r0, r1 + ldrb r3, [r0, #7] + ldrb r0, [r0, #4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080A6178EU @ =gUnk_080FE320 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + ldrh r1, [r1, #0xe] + adds r3, #0x64 + movs r2, #0xfd + lsls r2, r2, #1 + bl sub_080A698C +_080A616A: + adds r5, #1 + cmp r5, #0x64 + bls _080A6134 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A6174: .4byte gUnk_080C9CBC +_080A6178EU: .4byte gUnk_080FE320 + + .else push {r4, r5, r6, lr} ldr r0, _080A690C @ =gPlayerState @@ -3175,7 +4137,34 @@ _080A6DC6: thumb_func_start sub_080A6DD0 sub_080A6DD0: @ 0x080A6DD0 .ifdef EU - .incbin "baserom_eu.gba", 0x0A65BC, 0x0000034 @TODO disassemble + push {lr} + bl sub_08056338 + cmp r0, #0 + beq _080A65CC + cmp r0, #1 + beq _080A65D8 + b _080A65EA +_080A65CC: + ldr r1, _080A65D4 @ =gChooseFileState + movs r0, #2 + b _080A65DC + .align 2, 0 +_080A65D4: .4byte gChooseFileState +_080A65D8: + ldr r1, _080A65ECEU @ =gChooseFileState + movs r0, #3 +_080A65DC: + strb r0, [r1] + movs r0, #1 + cmp r0, #0 + beq _080A65EA + movs r0, #3 + bl sub_080A7114 +_080A65EA: + pop {pc} + .align 2, 0 +_080A65ECEU: .4byte gChooseFileState + .else push {lr} bl sub_08056338 @@ -3260,7 +4249,60 @@ _080A6E6C: .4byte gUnk_08128024 thumb_func_start sub_080A6E70 sub_080A6E70: @ 0x080A6E70 .ifdef EU - .incbin "baserom_eu.gba", 0x0A6668, 0x0000070 @TODO disassemble + push {r4, r5, lr} + ldr r1, _080A66CC @ =gOamCmd + movs r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1, #8] + ldr r1, _080A66D0 @ =gChooseFileState + adds r4, r1, #0 + adds r4, #0x2c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldrb r0, [r1, #3] + bl sub_080A6EE0 + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + movs r1, #0x5e + cmp r0, #0 + beq _080A6698 + movs r1, #0x5d +_080A6698: + movs r0, #0xfd + lsls r0, r0, #1 + bl sub_080ADA14 + movs r4, #0 + ldr r5, _080A66D4 @ =gSave +_080A66A4EU: + adds r0, r4, #0 + adds r0, #0x18 + movs r1, #1 + lsls r1, r0 + ldr r0, [r5, #0x40] + ands r0, r1 + cmp r0, #0 + beq _080A66C4 + adds r0, r4, #0 + bl sub_080A6EE0 + movs r0, #0xfd + lsls r0, r0, #1 + movs r1, #0x5c + bl sub_080ADA14 +_080A66C4: + adds r4, #1 + cmp r4, #7 + bls _080A66A4EU + pop {r4, r5, pc} + .align 2, 0 +_080A66CC: .4byte gOamCmd +_080A66D0: .4byte gChooseFileState +_080A66D4: .4byte gSave + .else push {r4, r5, lr} ldr r1, _080A6ED0 @ =gOamCmd diff --git a/asm/code_080ADD30.s b/asm/code_080ADD30.s index 3bf23ff7..2420ef4b 100644 --- a/asm/code_080ADD30.s +++ b/asm/code_080ADD30.s @@ -44,7 +44,53 @@ _080ADD6C: .4byte gUnk_02024490 thumb_func_start sub_080ADD70 sub_080ADD70: @ 0x080ADD70 .ifdef EU - .incbin "baserom_eu.gba", 0x0AD514, 0x0000058 @TODO disassemble + push {r4, r5, lr} + ldr r0, _080AD540 @ =gUnk_02024490 + ldrb r0, [r0] + cmp r0, #0 + beq _080AD56A + movs r4, #0 + movs r5, #0 +_080AD522: + ldr r0, _080AD544 @ =gUnk_02024494 + adds r2, r5, r0 + ldrb r1, [r2] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #2 + bne _080AD548 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _080AD562 + .align 2, 0 +_080AD540: .4byte gUnk_02024490 +_080AD544: .4byte gUnk_02024494 +_080AD548: + cmp r0, #2 + blt _080AD562 + cmp r0, #6 + bgt _080AD562 + cmp r0, #4 + blt _080AD562 + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x30 + bne _080AD562 + adds r0, r4, #0 + bl sub_080ADE74 +_080AD562: + adds r5, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080AD522 +_080AD56A: + pop {r4, r5, pc} + .else push {r4, r5, lr} ldr r1, _080ADD88 @ =gUnk_02024490 @@ -322,7 +368,63 @@ _080ADF7C: thumb_func_start LoadFixedGFX LoadFixedGFX: @ 0x080ADF80 .ifdef EU - .incbin "baserom_eu.gba", 0x0AD714, 0x0000070 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r5, r1, #0 + cmp r5, #0 + bne _080AD726 + movs r0, #1 + b _080AD77E +_080AD726: + movs r4, #4 + ldr r0, _080AD774 @ =gUnk_02024490 + adds r0, #0x30 +_080AD72C: + ldrh r1, [r0, #8] + cmp r5, r1 + beq _080AD766 + adds r0, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080AD72C + ldr r0, _080AD778 @ =gUnk_08132B30 + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r7, [r1] + movs r0, #0xfe + lsls r0, r0, #0x17 + ands r0, r7 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl sub_080AE174 + adds r4, r0, #0 + cmp r4, #0 + beq _080AD77C + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080AE104 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_080ADDD8 +_080AD766: + adds r0, r4, #0 + mov r1, r8 + movs r2, #4 + bl sub_080AE0C8 + movs r0, #1 + b _080AD77E + .align 2, 0 +_080AD774: .4byte gUnk_02024490 +_080AD778: .4byte gUnk_08132B30 +_080AD77C: + movs r0, #0 +_080AD77E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .else push {r4, r5, r6, r7, lr} mov r7, r8 @@ -394,7 +496,47 @@ _080AE004: .4byte gUnk_08132B30 thumb_func_start sub_080AE008 sub_080AE008: @ 0x080AE008 .ifdef EU - .incbin "baserom_eu.gba", 0x0AD784, 0x0000050 @TODO disassemble + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + cmp r4, #0 + bne _080AD79C + adds r0, r5, #0 + bl sub_080AE174 + adds r4, r0, #0 + cmp r4, #0 + beq _080AD7C4 +_080AD79C: + ldr r0, _080AD7D0 @ =gUnk_02024490 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x1c + lsrs r2, r0, #0x1c + cmp r2, #6 + beq _080AD7BC + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl sub_080AE104 + movs r2, #5 +_080AD7BC: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080AE0C8 +_080AD7C4: + adds r0, r4, #0 + cmp r0, #0 + beq _080AD7CC + movs r0, #1 +_080AD7CC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AD7D0: .4byte gUnk_02024490 + .else push {r4, r5, r6, lr} adds r6, r0, #0 diff --git a/asm/crt0.s b/asm/crt0.s index a0daf080..d72915b1 100644 --- a/asm/crt0.s +++ b/asm/crt0.s @@ -35,5 +35,5 @@ sp_usr: .4byte gUnk_03007F00 INTR_VECTOR_BUF: .4byte 0x03007FFC intr_main: .4byte IntrMain .ifdef EU -unk_function: .4byte 0x08000119 @ TODO ptr +unk_function: .4byte sub_08000118 .endif diff --git a/asm/enemy50.s b/asm/enemy50.s index 02c6683e..7b044061 100644 --- a/asm/enemy50.s +++ b/asm/enemy50.s @@ -10,7 +10,47 @@ thumb_func_start Enemy50 Enemy50: @ 0x08040B2C .ifdef EU - .incbin "baserom_eu.gba", 0x040a2c, 0x5c @TODO disassemble + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _08040A5E + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08040A5E + ldrb r0, [r5, #0xc] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08040A50 + adds r0, r5, #0 + bl sub_0803F6EC +_08040A50: + adds r0, r5, #0 + movs r1, #2 + movs r2, #0 + bl CreateFx + bl DeleteThisEntity +_08040A5E: + ldr r4, _08040A84 @ =gUnk_080D0DC4 + adds r0, r5, #0 + bl GetNextFunction + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl SetChildOffset + pop {r4, r5, pc} + .align 2, 0 +_08040A84: .4byte gUnk_080D0DC4 .else push {r4, r5, lr} adds r5, r0, #0 diff --git a/asm/figurineDevice.s b/asm/figurineDevice.s index c7767f27..5a4e395b 100644 --- a/asm/figurineDevice.s +++ b/asm/figurineDevice.s @@ -365,7 +365,118 @@ _08087E5A: thumb_func_start sub_08087E5C sub_08087E5C: @ 0x08087E5C .ifdef EU - .incbin "baserom_eu.gba", 0x087838, 0x00000E0 @TODO disassemble + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7a + ldrb r1, [r5] + cmp r1, #1 + beq _08087888 + cmp r1, #1 + bgt _08087850 + cmp r1, #0 + beq _08087856 + b _0808790C +_08087850: + cmp r1, #2 + beq _080878EA + b _0808790C +_08087856: + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #4 + bne _08087880 + movs r0, #1 + bl CheckRoomFlag + cmp r0, #0 + beq _0808790C + movs r0, #1 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0x81 + strb r0, [r1] + bl ClearRoomFlag + adds r0, r4, #0 + bl sub_0808826C + b _080878E2 +_08087880: + adds r0, r4, #0 + bl sub_080880D8 + b _0808790C +_08087888: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08087892 + subs r0, #1 + strb r0, [r4, #0xe] +_08087892: + ldr r2, _080878B0 @ =gInput + ldrh r0, [r2, #2] + ands r1, r0 + cmp r1, #0 + beq _080878B4 + movs r0, #0x6a + bl SoundReq + movs r0, #2 + strb r0, [r5] + movs r0, #0x3c + strb r0, [r4, #0xe] + bl sub_08050384 + b _0808790C + .align 2, 0 +_080878B0: .4byte gInput +_080878B4: + adds r0, r4, #0 + adds r0, #0x81 + ldrb r6, [r0] + ldrh r1, [r2, #4] + adds r5, r0, #0 + cmp r1, #0x40 + beq _080878C8 + cmp r1, #0x80 + beq _080878D2 + b _080878DC +_080878C8: + adds r0, r4, #0 + movs r1, #1 + bl sub_08087F94 + b _080878DC +_080878D2: + movs r1, #1 + rsbs r1, r1, #0 + adds r0, r4, #0 + bl sub_08087F94 +_080878DC: + ldrb r5, [r5] + cmp r6, r5 + beq _0808790C +_080878E2: + adds r0, r4, #0 + bl sub_080882A8 + b _0808790C +_080878EA: + movs r0, #0 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0x7b + movs r0, #4 + strb r0, [r1] + movs r0, #3 + bl SetRoomFlag + ldr r0, _08087910 @ =0x0000431A + bl TextboxNoOverlapFollow + ldr r1, _08087914 @ =gTextBox + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + str r0, [r1, #0x10] +_0808790C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08087910: .4byte 0x0000431A +_08087914: .4byte gTextBox + .else push {r4, r5, r6, r7, lr} adds r4, r0, #0 @@ -538,10 +649,181 @@ _08087F90: .4byte 0x00004022 thumb_func_start sub_08087F94 sub_08087F94: @ 0x08087F94 .ifdef JP - .incbin "baserom_jp.gba", 0x087dac, 0xb0 @TODO disassemble + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0x5f + bl CheckLocalFlag + cmp r0, #0 + bne _08087E3E + adds r0, r5, #0 + adds r0, #0x83 + movs r7, #0 + ldrsb r7, [r0, r7] + adds r3, r7, r4 + mov ip, r0 + cmp r4, #0 + bge _08087E0A + adds r2, r5, #0 + adds r2, #0x82 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r3, r0 + bge _08087DF4 + mov r0, ip + movs r1, #0 + ldrsb r1, [r0, r1] + ldrb r3, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r1, r0 + beq _08087E3E + mov r2, ip + strb r3, [r2] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #1 + b _08087E00 +_08087DF4: + mov r0, ip + strb r3, [r0] + adds r1, r5, #0 + adds r1, #0x81 + ldrb r0, [r1] + adds r0, r0, r4 +_08087E00: + strb r0, [r1] + movs r0, #0x69 + bl SoundReq + b _08087E58 +_08087E0A: + adds r1, r5, #0 + adds r1, #0x81 + ldrb r6, [r1] + adds r2, r6, r4 + ldr r0, _08087E2C @ =0x02002A40 + adds r0, #0xc2 + ldrh r0, [r0] + cmp r2, r0 + ble _08087E30 + cmp r0, r6 + beq _08087E3E + adds r2, r0, #0 + subs r4, r2, r6 + adds r3, r7, r4 + cmp r3, #0x64 + ble _08087E4C + b _08087E46 + .align 2, 0 +_08087E2C: .4byte 0x02002A40 +_08087E30: + cmp r3, #0x64 + ble _08087E4C + mov r2, ip + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0x64 + bne _08087E46 +_08087E3E: + adds r0, r5, #0 + bl sub_08088034 + b _08087E58 +_08087E46: + movs r3, #0x64 + subs r4, r3, r7 + adds r2, r6, r4 +_08087E4C: + mov r0, ip + strb r3, [r0] + strb r2, [r1] + movs r0, #0x69 + bl SoundReq +_08087E58: + pop {r4, r5, r6, r7, pc} + .align 2, 0 .else .ifdef EU - .incbin "baserom_eu.gba", 0x087954, 0x000009C @TODO disassemble + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r5, #0 + adds r7, #0x83 + ldrb r0, [r7] + adds r4, r0, r6 + movs r0, #0x5f + bl CheckLocalFlag + cmp r0, #0 + bne _080879CE + cmp r6, #0 + bge _0808799E + adds r0, r5, #0 + adds r0, #0x82 + ldrb r1, [r0] + cmp r4, r1 + bhs _0808798A + ldrb r0, [r7] + cmp r0, r1 + beq _080879CE + strb r1, [r7] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #1 + b _08087994 +_0808798A: + strb r4, [r7] + adds r1, r5, #0 + adds r1, #0x81 + ldrb r0, [r1] + adds r0, r0, r6 +_08087994: + strb r0, [r1] + movs r0, #0x69 + bl SoundReq + b _080879EC +_0808799E: + adds r1, r5, #0 + adds r1, #0x81 + ldrb r3, [r1] + adds r2, r3, r6 + ldr r0, _080879C0 @ =gSave + adds r0, #0xc2 + ldrh r0, [r0] + cmp r2, r0 + bls _080879C4 + cmp r0, r3 + beq _080879CE + adds r2, r0, #0 + subs r0, r2, r3 + ldrb r7, [r7] + adds r4, r0, r7 + b _080879DE + .align 2, 0 +_080879C0: .4byte gSave +_080879C4: + cmp r4, #0x64 + bls _080879DE + ldrb r0, [r7] + cmp r0, #0x64 + bne _080879D6 +_080879CE: + adds r0, r5, #0 + bl sub_08088034 + b _080879EC +_080879D6: + movs r4, #0x64 + ldrb r0, [r7] + subs r6, r4, r0 + adds r2, r3, r6 +_080879DE: + adds r0, r5, #0 + adds r0, #0x83 + strb r4, [r0] + strb r2, [r1] + movs r0, #0x69 + bl SoundReq +_080879EC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 .else push {r4, r5, r6, r7, lr} adds r5, r0, #0 @@ -813,10 +1095,237 @@ _0808815C: .4byte gSave thumb_func_start sub_08088160 sub_08088160: @ 0x08088160 .ifdef JP - .incbin "baserom_jp.gba", 0x087f88, 0xe8 @TODO disassemble + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #3 + ldr r0, _08087FB0 @ =0x080FC094 + adds r1, r1, r0 + movs r4, #0 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + ldrb r3, [r1, #6] + cmp r0, r3 + bhs _08088068 + ldrb r0, [r1, #6] + cmp r0, #0x10 + beq _08087FC6 + cmp r0, #0x10 + bgt _08087FB4 + cmp r0, #8 + beq _08087FBC + b _0808806A + .align 2, 0 +_08087FB0: .4byte 0x080FC094 +_08087FB4: + cmp r0, #0x20 + beq _08087FCA + cmp r0, #0x40 + bne _0808806A +_08087FBC: + ldr r0, [r1] + ldrh r1, [r1, #4] + bl CheckLocalFlagByOffset + b _08088064EU +_08087FC6: + ldrh r0, [r1, #4] + b _08088060EU +_08087FCA: + ldrh r0, [r1, #4] + cmp r0, #4 + bhi _0808806A + lsls r0, r0, #2 + ldr r1, _08087FDC @ =_08087FE0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08087FDC: .4byte _08087FE0 +_08087FE0: @ jump table + .4byte _08087FF4 @ case 0 + .4byte _0808800C @ case 1 + .4byte _0808801A @ case 2 + .4byte _08088032 @ case 3 + .4byte _0808804A @ case 4 +_08087FF4: + movs r0, #0x20 + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x10 + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x19 + b _08088060EU +_0808800C: + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #4 + bls _0808806A + movs r0, #0x28 + b _08088060EU +_0808801A: + movs r0, #0x54 + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x56 + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x3d + b _08088060EU +_08088032: + movs r0, #0x3b + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x4a + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0xd + b _08088060EU +_0808804A: + movs r0, #0x49 + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x55 + bl CheckKinstoneFused + cmp r0, #0 + bne _08088068 + movs r0, #0x3c +_08088060EU: + bl CheckKinstoneFused +_08088064EU: + cmp r0, #0 + beq _0808806A +_08088068: + movs r4, #1 +_0808806A: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 + .else .ifdef EU - .incbin "baserom_eu.gba", 0x087B1C, 0x00000E8 @ TODO same as JP + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #3 + ldr r0, _08087B44 @ =gUnk_080FC3E4 + adds r1, r1, r0 + movs r4, #0 + adds r0, r2, #0 + adds r0, #0x7d + ldrb r0, [r0] + ldrb r3, [r1, #6] + cmp r0, r3 + bhs _08087BFC + ldrb r0, [r1, #6] + cmp r0, #0x10 + beq _08087B5A + cmp r0, #0x10 + bgt _08087B48 + cmp r0, #8 + beq _08087B50 + b _08087BFE + .align 2, 0 +_08087B44: .4byte gUnk_080FC3E4 +_08087B48: + cmp r0, #0x20 + beq _08087B5E + cmp r0, #0x40 + bne _08087BFE +_08087B50: + ldr r0, [r1] + ldrh r1, [r1, #4] + bl CheckLocalFlagByOffset + b _08087BF8 +_08087B5A: + ldrh r0, [r1, #4] + b _08087BF4 +_08087B5E: + ldrh r0, [r1, #4] + cmp r0, #4 + bhi _08087BFE + lsls r0, r0, #2 + ldr r1, _08087B70 @ =_08087B74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08087B70: .4byte _08087B74 +_08087B74: @ jump table + .4byte _08087B88 @ case 0 + .4byte _08087BA0 @ case 1 + .4byte _08087BAE @ case 2 + .4byte _08087BC6 @ case 3 + .4byte _08087BDE @ case 4 +_08087B88: + movs r0, #0x20 + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x10 + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x19 + b _08087BF4 +_08087BA0: + adds r0, r2, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #4 + bls _08087BFE + movs r0, #0x28 + b _08087BF4 +_08087BAE: + movs r0, #0x54 + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x56 + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x3d + b _08087BF4 +_08087BC6: + movs r0, #0x3b + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x4a + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0xd + b _08087BF4 +_08087BDE: + movs r0, #0x49 + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x55 + bl CheckKinstoneFused + cmp r0, #0 + bne _08087BFC + movs r0, #0x3c +_08087BF4: + bl CheckKinstoneFused +_08087BF8: + cmp r0, #0 + beq _08087BFE +_08087BFC: + movs r4, #1 +_08087BFE: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 .else push {r4, lr} adds r2, r0, #0 @@ -1049,7 +1558,132 @@ _08088324: .4byte gScreen thumb_func_start sub_08088328 sub_08088328: @ 0x08088328 .ifdef EU - .incbin "baserom_eu.gba", 0x087CBC, 0x00000F8 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r4, #0x7f +_08087CC6: + bl Random + adds r5, r0, #0 + ands r5, r4 + cmp r5, #0x63 + bhi _08087CC6 + adds r0, r6, #0 + adds r0, #0x81 + ldrb r0, [r0] + rsbs r0, r0, #0 + bl sub_080542C0 + bl Random + movs r1, #0x7f + ands r1, r0 + adds r4, r1, #1 + adds r7, r4, #0 + adds r0, r6, #0 + bl sub_08088424 + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r5, r0 + bhs _08087D34EU + movs r5, #0 + movs r0, #0x7e + adds r0, r0, r6 + mov r8, r0 +_08087D02EU: + cmp r5, #0 + bne _08087D72 + cmp r4, #0x88 + bls _08087D0C + movs r4, #1 +_08087D0C: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08088160 + cmp r0, #0 + beq _08087D2C + ldr r0, _08087D28 @ =gUnk_02002B0E + adds r1, r4, #0 + bl ReadBit + cmp r0, #0 + bne _08087D2C + movs r5, #1 + b _08087D2E + .align 2, 0 +_08087D28: .4byte gUnk_02002B0E +_08087D2C: + adds r4, #1 +_08087D2E: + cmp r7, r4 + bne _08087D02EU + b _08087D6E +_08087D34EU: + movs r5, #1 + movs r0, #0x7e + adds r0, r0, r6 + mov r8, r0 +_08087D3C: + cmp r5, #0 + beq _08087DA4 + cmp r4, #0x88 + bls _08087D46 + movs r4, #1 +_08087D46: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08088160 + cmp r0, #0 + beq _08087D68 + ldr r0, _08087D64 @ =gUnk_02002B0E + adds r1, r4, #0 + bl ReadBit + cmp r0, #0 + beq _08087D68 + movs r5, #0 + b _08087D6A + .align 2, 0 +_08087D64: .4byte gUnk_02002B0E +_08087D68: + adds r4, #1 +_08087D6A: + cmp r7, r4 + bne _08087D3C +_08087D6E: + cmp r5, #0 + beq _08087DA4 +_08087D72: + ldr r0, _08087D94 @ =gSave + adds r0, #0xb0 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + adds r0, r6, #0 + adds r0, #0x7c + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r0] + cmp r1, r0 + beq _08087D98 + movs r0, #7 + bl SetRoomFlag + b _08087DA4 + .align 2, 0 +_08087D94: .4byte gSave +_08087D98: + movs r0, #0x5f + bl SetLocalFlag + movs r0, #8 + bl SetRoomFlag +_08087DA4: + mov r0, r8 + strb r4, [r0] + ldr r0, [r6, #0x50] + adds r0, #0x7e + strb r4, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .else push {r4, r5, r6, r7, lr} mov r7, r8 @@ -1473,7 +2107,31 @@ _08088618: .4byte gSave thumb_func_start sub_0808861C sub_0808861C: @ 0x0808861C .ifdef JP - .incbin "baserom_jp.gba", 0x088420, 0x34 @TODO disassemble + push {r4, lr} + adds r4, r1, #0 + movs r0, #0xa8 + movs r1, #0x54 + movs r2, #0xc + movs r3, #8 + bl CheckPlayerInRegion + str r0, [r4, #0x14] + ldr r0, _0808844C @ =0x03001160 + ldrb r0, [r0, #0x14] + cmp r0, #0 + beq _0808843E + movs r0, #0 + str r0, [r4, #0x14] +_0808843E: + ldr r2, _08088450 @ =0x02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0808844C: .4byte 0x03001160 +_08088450: .4byte 0x02033280 + .else push {r4, lr} adds r4, r1, #0 diff --git a/asm/fileScreen.s b/asm/fileScreen.s index a289b6f3..49177655 100755 --- a/asm/fileScreen.s +++ b/asm/fileScreen.s @@ -39,10 +39,10 @@ HandleGameplayScreen: @ 08051A28 _08051A64: pop {r4, pc} .byte 0x00, 0x00 -_08051A68: .4byte 0x030010A0 @TODO ptr -_08051A6C: .4byte 0x080FC55C @TODO ptr -_08051A70x: .4byte 0x03001000 @TODO ptr -_08051A74x: .4byte 0x02002A40 @TODO ptr +_08051A68: .4byte gUnk_030010A0 +_08051A6C: .4byte gUnk_080FC9D8 +_08051A70x: .4byte gMain +_08051A74x: .4byte gUnk_02002A40 .else thumb_func_start HandleGameplayScreen HandleGameplayScreen: @ 0x08051988 @@ -201,7 +201,83 @@ _08051AEC: .4byte gScreenTransition thumb_func_start sub_08051AF0 sub_08051AF0: @ 0x08051AF0 .ifdef EU - .incbin "baserom_eu.gba", 0x05172C, 0x00000D0 @TODO disassemble + push {r4, lr} + bl sub_0805E5C0 + bl sub_0805BBBC + cmp r0, #0 + bne _0805173E + bl UpdateScroll +_0805173E: + bl UpdateBgAnim + bl sub_08000108 + bl sub_0801C344 + bl sub_0805E5F8 + bl FlushSprites + bl sub_0801C208 + bl sub_08078CB4 + bl sub_080AD9B0 + bl sub_080AD918 + ldr r0, _080517E0 @ =gFadeControl + ldrb r0, [r0] + cmp r0, #0 + bne _080517DC + ldr r0, _080517E4 @ =gRoomControls + ldrh r0, [r0] + cmp r0, #0 + bne _080517DC + bl sub_08052F1C + ldr r0, _080517E8 @ =gArea + movs r1, #0x86 + lsls r1, r1, #4 + adds r3, r0, r1 + adds r1, #4 + adds r0, r0, r1 + ldr r1, [r3] + ldr r2, [r0] + cmp r1, r2 + beq _08051796 + str r2, [r3] + ldr r0, _080517EC @ =0x800B0000 + orrs r2, r0 + adds r0, r2, #0 + bl SoundReq +_08051796: + bl sub_0805E9F4 + bl sub_0805BC04 + adds r4, r0, #0 + cmp r4, #0 + bne _080517DC + bl sub_08052C5C + bl sub_0805E5B4 + bl sub_08051E04 + bl sub_080300C4 + ldr r1, _080517F0 @ =gMain + movs r0, #2 + strb r0, [r1, #4] + movs r0, #0 + bl sub_08078A90 + ldr r0, _080517F4 @ =gUnk_02034490 + strb r4, [r0] + bl sub_08053178 + bl sub_0801855C + ldr r0, _080517F8 @ =gRoomVars + ldrb r0, [r0] + cmp r0, #0 + bne _080517DC + movs r0, #0 + movs r1, #1 + bl sub_0805E4E0 +_080517DC: + pop {r4, pc} + .align 2, 0 +_080517E0: .4byte gFadeControl +_080517E4: .4byte gRoomControls +_080517E8: .4byte gArea +_080517EC: .4byte 0x800B0000 +_080517F0: .4byte gMain +_080517F4: .4byte gUnk_02034490 +_080517F8: .4byte gRoomVars + .else push {r4, r5, lr} bl sub_0805E5C0 @@ -448,7 +524,16 @@ _08051D28: .4byte gScreenTransition thumb_func_start sub_08051D2C sub_08051D2C: @ 0x08051D2C .ifdef DEMO - .incbin "baserom_demo.gba", 0x051df4, 0x14 @TODO disassemble + push {lr} + ldr r0, _08051E04 @ =0x03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08051E02 + bl DoSoftReset +_08051E02: + pop {pc} + .align 2, 0 +_08051E04: .4byte 0x03000FD0 .else push {lr} movs r0, #7 diff --git a/asm/gleerok.s b/asm/gleerok.s index 5367db12..b1e611bb 100644 --- a/asm/gleerok.s +++ b/asm/gleerok.s @@ -993,7 +993,91 @@ _0802D7B0: .4byte gScreenTransition thumb_func_start sub_0802D7B4 sub_0802D7B4: @ 0x0802D7B4 .ifdef EU - .incbin "baserom_eu.gba", 0x02d73c, 0xb0 @TODO disassemble + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + adds r2, r0, #0 + cmp r2, #0 + bne _0802D7ACEU + ldr r4, _0802D780 @ =gUnk_080CD7F8 + ldrb r3, [r5, #0xf] + adds r0, r3, r4 + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #0xff + bne _0802D790 + strb r2, [r5, #0xf] + strb r2, [r5, #0xe] + movs r0, #1 + strb r0, [r5, #0xc] + strb r2, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, [r0, #0x50] + movs r0, #0x18 + strb r0, [r1, #0xe] + ldr r1, _0802D784 @ =gRoomControls + ldr r0, _0802D788 @ =gPlayerEntity + str r0, [r1, #0x30] + ldr r0, _0802D78C @ =gUnk_02034490 + strb r2, [r0] + movs r0, #0x2e + bl SoundReq + b _0802D7E8 + .align 2, 0 +_0802D780: .4byte gUnk_080CD7F8 +_0802D784: .4byte gRoomControls +_0802D788: .4byte gPlayerEntity +_0802D78C: .4byte gUnk_02034490 +_0802D790: + strb r1, [r5, #0xe] + adds r0, r3, #1 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r5, #0x15] + ldrb r0, [r5, #0xf] + adds r0, #2 + strb r0, [r5, #0xf] + ldr r0, _0802D7A8 @ =0x00000127 + bl SoundReq + b _0802D7B0EU + .align 2, 0 +_0802D7A8: .4byte 0x00000127 +_0802D7ACEU: + subs r0, #1 + strb r0, [r5, #0xe] +_0802D7B0EU: + ldrb r0, [r5, #0x15] + cmp r0, #1 + bhi _0802D7C8 + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA48 + b _0802D7DC +_0802D7C8: + adds r4, r5, #0 + adds r4, #0x84 + cmp r0, #0xff + beq _0802D7DC + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA68 +_0802D7DC: + ldr r0, [r4] + bl sub_0802E768 + adds r0, r5, #0 + bl sub_0802E518 +_0802D7E8: + pop {r4, r5, pc} + .align 2, 0 + .else push {r4, r5, lr} adds r5, r0, #0 diff --git a/asm/gyorgFemale.s b/asm/gyorgFemale.s index acb064ee..49dd9eda 100644 --- a/asm/gyorgFemale.s +++ b/asm/gyorgFemale.s @@ -472,7 +472,6 @@ _08046494: pop {r4, r5, r6, pc} .align 2, 0 -@ TODO move inside, if EU no longer references this function thumb_func_start sub_08046498 sub_08046498: @ 0x08046498 .ifndef EU @@ -708,7 +707,33 @@ _0804665A: thumb_func_start sub_08046668 sub_08046668: @ 0x08046668 .ifdef EU - .incbin "baserom_eu.gba", 0x046438, 0x38 @TODO disassemble + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _08046468EU + bl Random + ldr r2, _0804646C @ =gUnk_080D1AF8 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + movs r2, #0 + strb r1, [r0] + adds r0, #7 + strb r2, [r0] + adds r0, #3 + strb r2, [r0] + adds r0, r4, #0 + bl sub_080467DC +_08046468EU: + pop {r4, pc} + .align 2, 0 +_0804646C: .4byte gUnk_080D1AF8 + .else push {r4, r5, lr} adds r4, r0, #0 @@ -745,7 +770,157 @@ _080466A4: .4byte gUnk_080D1AF8 thumb_func_start sub_080466A8 sub_080466A8: @ 0x080466A8 .ifdef EU - .incbin "baserom_eu.gba", 0x046470, 0x12c @TODO disassemble + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r2, [r0] + cmp r2, #0 + beq _08046514EU + adds r0, #1 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4, #0xe] + adds r5, r0, #0 + cmp r1, #0 + bne _08046498 + subs r0, #5 + ldrb r0, [r0] + cmp r0, #0xff + beq _08046498 + movs r0, #3 + strb r0, [r4, #0xe] +_08046498: + ldrb r0, [r5] + bl sub_08000E62 + cmp r0, #2 + bls _08046514EU + movs r0, #0 + strb r0, [r4, #0xe] + strb r0, [r5] + adds r7, r4, #0 + adds r7, #0x78 + subs r0, #1 + adds r6, r0, #0 + movs r0, #0xff + strb r0, [r7] + adds r0, #0x28 + bl SoundReq + adds r5, r4, #0 + adds r5, #0x45 + ldrb r0, [r5] + cmp r0, #0 + beq _0804650E + movs r0, #8 + movs r1, #0 + bl sub_08080964 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ands r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc + bhi _080464E6 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] +_080464E6: + ldrb r0, [r5] + cmp r0, #0 + bne _080464F8 + strb r0, [r7] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0xa5 + lsls r0, r0, #3 + b _0804650CEU +_080464F8: + adds r1, r4, #0 + adds r1, #0x7f + ldrb r0, [r1] + cmp r0, #0 + bne _0804650E + movs r0, #1 + strb r0, [r1] + subs r1, #5 + movs r0, #0x87 + lsls r0, r0, #3 +_0804650CEU: + strh r0, [r1] +_0804650E: + adds r0, r4, #0 + bl sub_080467DC +_08046514EU: + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _0804658C + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0xff + beq _0804658C + subs r0, r1, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0804658C + adds r2, r4, #0 + adds r2, #0x80 + adds r3, r4, #0 + adds r3, #0x7d + ldrb r0, [r2] + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r2] + strb r5, [r3] + adds r0, r4, #0 + bl sub_080467DC + ldr r2, _08046598 @ =gPlayerEntity + ldr r0, [r4, #0x64] + adds r0, #0x3c + ldrb r0, [r0] + adds r1, r2, #0 + adds r1, #0x3e + strb r0, [r1] + subs r1, #1 + movs r0, #0xf4 + strb r0, [r1] + adds r1, #5 + movs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + movs r2, #0 + bl CreateFx + adds r2, r0, #0 + cmp r2, #0 + beq _0804658C + ldr r0, [r4, #0x64] + ldrh r0, [r0, #0x38] + strh r0, [r2, #0x2e] + ldr r0, [r4, #0x64] + ldrh r0, [r0, #0x3a] + strh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + bl UpdateSpriteForCollisionLayer +_0804658C: + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0 + strb r0, [r1] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08046598: .4byte gPlayerEntity + + .else push {r4, r5, r6, r7, lr} adds r4, r0, #0 diff --git a/asm/gyorgFemaleEye.s b/asm/gyorgFemaleEye.s index 6e26f54c..0876c5fa 100644 --- a/asm/gyorgFemaleEye.s +++ b/asm/gyorgFemaleEye.s @@ -45,7 +45,71 @@ _080489C8: .4byte gUnk_080D1F7C thumb_func_start sub_080489CC sub_080489CC: @ 0x080489CC .ifdef EU - .incbin "baserom_eu.gba", 0x048788, 0x84 @TODO disassemble + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x45 + adds r0, r0, r5 + mov ip, r0 + ldrb r0, [r0] + cmp r0, #0xff + beq _080487F4 + ldr r3, [r5, #0x50] + adds r2, r3, #0 + adds r2, #0x7c + movs r0, #1 + ldrb r1, [r5, #0xa] + lsls r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + ldr r4, [r3, #0x64] + ldrb r0, [r5, #0xa] + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x18 + adds r1, r1, r0 + ldr r0, [r5, #0x4c] + str r0, [r1] + ldr r2, _08048804 @ =gPlayerEntity + movs r6, #0x2e + ldrsh r0, [r2, r6] + movs r6, #0x2e + ldrsh r1, [r5, r6] + adds r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x38] + ldr r4, [r3, #0x64] + movs r1, #0x32 + ldrsh r0, [r2, r1] + movs r2, #0x32 + ldrsh r1, [r5, r2] + adds r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x3a] + ldr r2, [r3, #0x64] + adds r3, r5, #0 + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #0x10 + eors r0, r1 + strb r0, [r3] + adds r2, #0x3c + strb r0, [r2] +_080487F4: + movs r0, #0xff + mov r6, ip + strb r0, [r6] + ldr r1, _08048808 @ =gUnk_080D1F64 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08048804: .4byte gPlayerEntity +_08048808: .4byte gUnk_080D1F64 .else push {r4, r5, r6, lr} mov ip, r0 diff --git a/asm/intr.s b/asm/intr.s index aea16317..c8c67bea 100644 --- a/asm/intr.s +++ b/asm/intr.s @@ -815,7 +815,54 @@ _080B23EC: .4byte gUnk_0800464E arm_func_start sub_080B23F0 sub_080B23F0: @ 0x080B23F0 .ifdef EU - .incbin "baserom_eu.gba", 0x0B1950, 0x00000A8 @TODO disassemble + push {r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr fp, _080B2A30 @ =gUnk_03000000 + ldrb r2, [fp, #3] + cmp r2, #0x80 + bhs _080B19C0EU + add r0, pc, #0x54 @ =_080B19C0 + str r0, [fp, #0x18] + str sp, [fp, #0x14] + ldrb r0, [fp, #0xf] + cmp r0, #0xff + bne _080B1984 + bl _080B1FBC +_080B1980: + mov r0, #0x0 +_080B1984: + ldr r1, _080B2154 @ =0x03006958 + ldr r1, [r1, r0, lsl #2] + str r1, [fp, #0x1c] + ldr r0, _080B2A34 @ =gUnk_081326EC + ldr r0, [r0] + bl sub_080B19C8 + ldr r0, _080B2A38 @ =gUnk_081326EC + ldr r0, [r0, #4] + bl sub_080B19C8 + ldr r0, _080B2A3C @ =gUnk_081326EC + ldr r0, [r0, #8] + bl sub_080B19C8 + ldr r0, _080B2A40 @ =gUnk_081326EC + ldr r0, [r0, #0xc] + bl sub_080B19C8 +_080B19C0EU: + pop {r4, r5, r6, r7, r8, sb, sl, fp, lr} + bx lr + + arm_func_start sub_080B19C8 +sub_080B19C8: @ 0x080B19C8 + ldrb r2, [r0] + cmp r2, #0 + bxeq lr + ldr r1, _080B2A44 @ =0x08131D3C + ldr r1, [r1, #0x10] + mov r2, #0 + strb r2, [r1] + stmdb sp!, {lr} + bl sub_080B2478 + bl sub_080B2534 + ldm sp!, {lr} + b _080B1C40EU .else push {r4, r5, r6, r7, r8, sb, sl, fp, lr} ldr fp, _080B2A30 @ =gUnk_03000000 @@ -932,7 +979,131 @@ _080B2540: arm_func_start sub_080B255C sub_080B255C: @ 0x080B255C .ifdef EU - .incbin "baserom_eu.gba", 0x0B1ADC, 0x00001C8 @TODO disassemble + stmdb sp!, {lr} + mov r4, r0 + bl sub_080B299C + ldr r3, [fp, #0x1c] + mov lr, pc + bxne r3 + mov r5, #0 + strb r5, [fp, #0x12] + ldrsb r2, [r4, #0x29] + ands r2, r2, #8 + beq _080B1BB8 + ldrsh r3, [r4, #0x36] + cmp r3, #0 + bmi _080B1BA4 + mov r1, #0 + mov r2, #0 + bl sub_080B1BCC + ldrb r1, [r4, #0x18] + and r1, r1, #0x30 + mov r1, r1 + cmp r0, #0x19 + beq _080B1B98 + cmp r0, #0x2f + beq _080B1B64 + cmp r0, #0xf + bne _080B1BA4 + mov r5, #2 + strb r5, [fp, #0x12] + add r7, r7, r5 + ldrb r2, [fp, #1] + and r2, r2, #0x18 + add r2, r2, #0x80 + lsr r2, r2, #2 + b _080B1B74 +_080B1B64: + ldrb r2, [r4, #0x2e] + ldrb r3, [r4, #0x32] + eor r2, r2, r3 + and r2, r2, #6 +_080B1B74: + ldr r3, _080B2A48 @ =gUnk_030068CC + add r2, r1, r2, lsl #1 + ldr sl, [r3, r2] + push {r4, r8, sb} + mov r8, #0 + and sb, sb, #0xc00 + bl _080B2874 + pop {r4, r8, sb, lr} + b _080B2718 +_080B1B98: + mov r5, #2 + strb r5, [fp, #0x12] + add r7, r7, r5 +_080B1BA4: + stmdb sp!, {r4} + mov r0, r4 + bl _080B2718 + pop {r4, lr} + b _080B1BC0 +_080B1BB8: + ldm sp!, {lr} + b _080B2718 +_080B1BC0: + ldrsh r1, [r4, #0x36] + ldrb r0, [r4, #0x29] + tst r0, #0x10 + beq _080B1BD8 + cmp r1, #0 + bxpl lr +_080B1BD8: + tst r0, #0x20 + beq _080B1BEC + ldrb r0, [fp, #1] + tst r0, #1 + bxne lr +_080B1BEC: + mov r2, r7 + cmp r1, #0 + submi r2, r2, r1 + ldr r3, _080B2A4C @ =gUnk_081326EC + ldr r3, [r3, #0x10] + ldrb r0, [r3] + cmp r0, #0x40 + bxhs lr + add r0, r0, #1 + strb r0, [r3] + add r3, r3, r0, lsl #2 + lsr r0, sb, #0xa + and r0, r0, #3 + orr r0, r0, r2, lsl #6 + strh r0, [r3, #2] + ldrb r0, [r4, #0x18] + and r0, r0, #0x30 + lsr r0, r0, #4 + orr r0, r0, r6, lsl #6 + strh r0, [r3] + bx lr +_080B1C40EU: + ldr r4, _080B2A50 @ =gUnk_081326EC + ldr r4, [r4, #0x10] + ldrb r5, [r4] + cmp r5, #0 + bxeq lr + stmdb sp!, {lr} + add r4, r4, #4 +_080B1C5C: + ldrsh r0, [r4] + asr r6, r0, #6 + and r1, r0, #7 + ldr sl, _080B2A54 @ =gUnk_0300694C + ldr sl, [sl, r1, lsl #2] + ldrsh r0, [r4, #2] + asr r7, r0, #6 + and r1, r0, #3 + lsl sb, r1, #0xa + mov r8, #0 + push {r4, r5} + bl _080B2874 + pop {r4, r5} + add r4, r4, #4 + subs r5, r5, #1 + bgt _080B1C5C + ldm sp!, {lr} + bx lr + .else stmdb sp!, {lr} mov r4, r0 @@ -1057,6 +1228,8 @@ _080B26D0: bx lr .endif + + _080B2718: ldrsb r0, [r4, #0x28] cmp r0, #0 @@ -1282,12 +1455,124 @@ _080B2A0C: .align 2, 0 .ifdef EU - .incbin "baserom_eu.gba", 0x0B1FBC, 0x0000194 @TODO disassemble +_080B1FBC: + mov sl, lr + ldrsh r0, [fp, #0x1c] + ldrsh r1, [fp, #0x1e] + ldrsh r2, [fp, #4] + sub r0, r0, r2 + ldrsh r3, [fp, #6] + sub r1, r1, r3 + mov r2, #0 + mov r3, #0 + bl sub_080B20ECEU + mov r5, #0 + ldr r4, _080B2194 @ =0x03003DF8 +_080B1FECEU: + ldr r0, [r4, #8] + cmp r0, #0 + beq _080B2074EU + ldrsh r6, [r0, #0x2e] + ldrsh r7, [r0, #0x32] + ldr r3, [r4, #4] + cmp r3, #0 + beq _080B2024 + ldrsb r0, [r3] + add r6, r6, r0 + ldrsb r0, [r3, #1] + add r7, r7, r0 + add r3, r3, #2 + b _080B202C +_080B2024: + ldr r3, [r0, #0x48] + add r3, r3, #6 +_080B202C: + ldrsh r0, [fp, #4] + sub r6, r6, r0 + ldrsh r0, [fp, #6] + sub r7, r7, r0 + ldrb r0, [r3] + ldrb r1, [r3, #1] + ldr r2, [fp, #1] + and r2, r2, #3 + lsl r3, r2, #0x1c + lsrs r2, r2, #1 + rsblo r0, r0, #0 + subhs r0, r0, #8 + rsbeq r1, r1, #0 + subne r1, r1, #8 + add r0, r0, r6 + add r1, r1, r7 + mov r2, #0 + bl sub_080B20ECEU +_080B2074EU: + add r4, r4, #0xc + add r5, r5, #1 + cmp r5, #0x1f + bls _080B1FECEU + bx sl + arm_func_start sub_080B2088 +sub_080B2088: @ 0x080B2088 + ldr r5, [r4, #0x48] + cmp r5, #0 + bxeq lr + ldrb r0, [r5, #6] + ldrb r1, [r5, #7] + ldr r2, [fp, #1] + and r2, r2, #3 + lsl r3, r2, #0x1c + lsrs r2, r2, #1 + rsblo r0, r0, #0 + subhs r0, r0, #8 + rsbeq r1, r1, #0 + subne r1, r1, #8 + ldrsb r2, [r5] + add r0, r6, r0 + add r0, r0, r2 + ldrsb r2, [r5, #1] + add r1, r7, r1 + add r1, r1, r2 + mov r2, sb + b sub_080B20ECEU +_080B20DC: + mov r0, r6 + mov r1, r7 + mov r2, r9 + mov r3, #0x0 + + arm_func_start sub_080B20ECEU +sub_080B20ECEU: @ 0x080B20EC + add ip, r1, #7 + cmp ip, #0xa8 + bxhs lr + add ip, r0, #7 + cmp ip, #0xf8 + bxhs lr + and r1, r1, #0xff + lsl r0, r0, #0x17 + orr r0, r1, r0, lsr #7 + eor r0, r0, r3 + and r1, r2, #0xc00 + add r1, r1, #0xff + ldrb r3, [fp, #3] + add ip, fp, #0x20 + add ip, ip, r3, lsl #3 + str r0, [ip] + strh r1, [ip, #4] + add r3, r3, #1 + cmp r3, #0x80 + bhs _080B298C + strb r3, [fp, #3] + bx lr +_080B2144: + .4byte gUnk_03006954 + .4byte gUnk_030068F0 + .4byte gUnk_0300689C .endif _080B2A30: .4byte gUnk_03000000 .ifdef EU - .4byte 0x03006958 @TODO make pointer? +_080B2154: .4byte 0x03006958 @TODO make pointer? .endif _080B2A34: .4byte gUnk_081326EC _080B2A38: .4byte gUnk_081326EC @@ -1305,5 +1590,5 @@ _080B2A64: .4byte gUnk_03000000 _080B2A68: .4byte gUnk_0300695C _080B2A6C: .4byte 0x3E003F00 .ifdef EU - .4byte 0x03003DF8 @TODO pointer? +_080B2194: .4byte 0x03003DF8 @TODO pointer? .endif diff --git a/asm/item/itemLantern.s b/asm/item/itemLantern.s index 0c26709a..08f5e893 100644 --- a/asm/item/itemLantern.s +++ b/asm/item/itemLantern.s @@ -119,7 +119,62 @@ _08075AD8: .4byte gUnk_08126EEC thumb_func_start sub_08075ADC sub_08075ADC: @ 0x08075ADC .ifdef EU - .incbin "baserom_eu.gba", 0x07550C, 0x0000074 @TODO disassemble + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075532 + ldr r0, _08075570 @ =gPlayerState + ldr r0, [r0, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08075532 + bl sub_08079D48 + cmp r0, #0 + bne _08075578 +_08075532: + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + ldr r3, _08075570 @ =gPlayerState + ldr r0, [r3, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + orrs r0, r1 + str r0, [r3, #0x30] + movs r2, #8 + asrs r2, r5 + lsls r1, r2, #4 + orrs r1, r2 + ldrb r0, [r3, #4] + bics r0, r1 + strb r0, [r3, #4] + mvns r2, r2 + ldrb r1, [r3, #0xa] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + ands r2, r0 + strb r2, [r3, #0xb] + ldr r0, _08075574 @ =0x0000013D + bl SoundReq + b _0807557E + .align 2, 0 +_08075570: .4byte gPlayerState +_08075574: .4byte 0x0000013D +_08075578: + adds r0, r4, #0 + bl UpdateItemAnim +_0807557E: + pop {r4, r5, pc} .else push {r4, r5, lr} adds r4, r0, #0 diff --git a/asm/item/itemSword.s b/asm/item/itemSword.s index d14add13..4e6af7b5 100644 --- a/asm/item/itemSword.s +++ b/asm/item/itemSword.s @@ -27,7 +27,185 @@ _08075334: .4byte gUnk_0811BD44 thumb_func_start sub_08075338 sub_08075338: @ 0x08075338 .ifdef EU - .incbin "baserom_eu.gba", 0x074D74, 0x0000174 @TODO disassemble + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + ldr r4, _08074DA8 @ =gPlayerState + ldr r1, [r4, #0x30] + movs r3, #0x80 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08074DAC + ldrb r0, [r5, #9] + movs r1, #0x80 + orrs r1, r0 + strb r1, [r5, #9] + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + movs r0, #0xc0 + lsls r0, r0, #4 + strh r0, [r4, #8] + movs r0, #0x75 + bl SoundReq + b _08074EE2 + .align 2, 0 +_08074DA8: .4byte gPlayerState +_08074DAC: + ldrb r2, [r4, #2] + cmp r2, #0 + beq _08074E22 + movs r6, #7 + adds r0, r6, #0 + ands r0, r2 + cmp r0, #3 + beq _08074E18 + movs r0, #0x78 + ands r0, r2 + cmp r0, #0 + bne _08074E18 + ldr r3, _08074E10 @ =gPlayerEntity + ldr r1, [r3, #0x20] + ldr r0, _08074E14 @ =0x00017FFF + cmp r1, r0 + bhi _08074E18 + adds r0, r4, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08074E18 + ldr r0, [r3, #0x34] + cmp r0, #0 + beq _08074E18 + movs r0, #0x20 + orrs r0, r2 + strb r0, [r4, #2] + adds r0, r4, #0 + adds r0, #0xab + strb r6, [r0] + movs r0, #8 + asrs r0, r7 + lsls r1, r0, #4 + orrs r0, r1 + ldrb r1, [r4, #4] + orrs r0, r1 + strb r0, [r4, #4] + adds r0, r5, #0 + bl sub_08077B98 + movs r0, #6 + strb r0, [r5, #4] + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08075898 + b _08074EE2 + .align 2, 0 +_08074E10: .4byte gPlayerEntity +_08074E14: .4byte 0x00017FFF +_08074E18: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_080759B8 + b _08074EE2 +_08074E22: + movs r6, #0x80 + lsls r6, r6, #0xb + ands r6, r1 + cmp r6, #0 + beq _08074EAE + adds r0, r4, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _08074E4C + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _08074EE2 + bl DeleteEntity + str r6, [r4, #0x2c] + b _08074EE2 +_08074E4C: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + adds r0, r5, #0 + bl sub_08077B98 + movs r3, #8 + adds r1, r3, #0 + asrs r1, r7 + lsls r0, r1, #4 + orrs r0, r1 + ldrb r2, [r4, #4] + orrs r0, r2 + strb r0, [r4, #4] + ldrb r2, [r4, #0xa] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xb] + orrs r1, r0 + strb r1, [r4, #0xb] + strb r3, [r5, #4] + movs r0, #0x14 + strb r0, [r5, #7] + movs r0, #6 + strb r0, [r5, #0xf] + ldrb r1, [r5, #9] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #9] + adds r1, r4, #0 + adds r1, #0xab + movs r0, #2 + strb r0, [r1] + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x14 + orrs r0, r1 + str r0, [r4, #0x30] + movs r1, #0x98 + lsls r1, r1, #1 + adds r0, r5, #0 + bl sub_08077DF4 + movs r0, #0x77 + bl SoundReq + b _08074EE2 +_08074EAE: + ldrb r1, [r4, #0x1b] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08074EC0 + strb r6, [r4, #0x1b] + ldr r0, _08074EE4 @ =gPlayerEntity + bl sub_0806F948 +_08074EC0: + ldr r1, [r4, #0x2c] + cmp r1, #0 + beq _08074ED4 + ldrb r0, [r1, #9] + cmp r0, #1 + beq _08074ED4 + adds r0, r1, #0 + bl DeleteEntity + str r6, [r4, #0x2c] +_08074ED4: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + adds r0, r5, #0 + bl sub_08077B98 +_08074EE2: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08074EE4: .4byte gPlayerEntity + .else push {r4, r5, r6, r7, lr} adds r5, r0, #0 diff --git a/asm/ladderUp.s b/asm/ladderUp.s index 6137f152..785c3f3b 100644 --- a/asm/ladderUp.s +++ b/asm/ladderUp.s @@ -10,7 +10,256 @@ thumb_func_start LadderUp LadderUp: @ 0x0808DB54 .ifdef EU - .incbin "baserom_eu.gba", 0x08D44C, 0x0000200 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrb r0, [r7, #0xc] + cmp r0, #1 + beq _0808D4D8 + cmp r0, #1 + bgt _0808D518 + cmp r0, #0 + bne _0808D518 + ldrb r0, [r7, #0xe] + movs r1, #2 + cmp r0, #0 + beq _0808D46C + movs r1, #1 +_0808D46C: + strb r1, [r7, #0xc] + adds r1, r7, #0 + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0xa + bl InitializeAnimation + ldrb r0, [r7, #0xc] + cmp r0, #1 + bne _0808D48A + ldr r0, _0808D4CC @ =0x0000FF80 + strh r0, [r7, #0x36] +_0808D48A: + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _0808D492 + b _0808D642 +_0808D492: + ldrh r1, [r7, #0x32] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + adds r0, #0xc + strh r0, [r7, #0x32] + ldr r0, _0808D4D0 @ =0x00004023 + movs r2, #0x2e + ldrsh r1, [r7, r2] + ldr r3, _0808D4D4 @ =gRoomControls + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r5, #0x32 + ldrsh r2, [r7, r5] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r7, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl SetTile + b _0808D642 + .align 2, 0 +_0808D4CC: .4byte 0x0000FF80 +_0808D4D0: .4byte 0x00004023 +_0808D4D4: .4byte gRoomControls +_0808D4D8: + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r7, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _0808D4E8 + b _0808D642 +_0808D4E8: + adds r0, r7, #0 + movs r1, #0x46 + movs r2, #0x40 + bl CreateFx + adds r1, r0, #0 + cmp r1, #0 + beq _0808D4FE + ldrh r0, [r1, #0x32] + adds r0, #8 + strh r0, [r1, #0x32] +_0808D4FE: + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 + ldr r0, _0808D514 @ =0x0000010B + bl SoundReq + movs r0, #2 + strb r0, [r7, #0xc] + b _0808D642 + .align 2, 0 +_0808D514: .4byte 0x0000010B +_0808D518: + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _0808D520 + b _0808D642 +_0808D520: + ldr r0, _0808D598 @ =gPlayerEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r0, [r7, r3] + cmp r1, r0 + bge _0808D5AC + ldr r0, _0808D59C @ =gPlayerState + ldrb r0, [r0, #0x12] + cmp r0, #0x1e + bne _0808D538 + b _0808D642 +_0808D538: + adds r0, r7, #0 + bl GetTileTypeByEntity + ldr r1, _0808D5A0 @ =0x00004017 + cmp r0, r1 + beq _0808D546 + b _0808D642 +_0808D546: + ldr r0, _0808D5A4 @ =0x00004023 + movs r5, #0x2e + ldrsh r1, [r7, r5] + ldr r4, _0808D5A8 @ =gRoomControls + ldrh r2, [r4, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r5, #0x3f + ands r1, r5 + movs r3, #0x32 + ldrsh r2, [r7, r3] + ldrh r3, [r4, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + adds r6, r7, #0 + adds r6, #0x38 + ldrb r2, [r6] + bl SetTile + movs r1, #0x2e + ldrsh r0, [r7, r1] + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r5 + movs r2, #0x32 + ldrsh r1, [r7, r2] + ldrh r2, [r4, #8] + adds r2, #0x10 + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + lsls r1, r1, #6 + orrs r0, r1 + ldrb r1, [r6] + bl sub_0807BA8C + b _0808D642 + .align 2, 0 +_0808D598: .4byte gPlayerEntity +_0808D59C: .4byte gPlayerState +_0808D5A0: .4byte 0x00004017 +_0808D5A4: .4byte 0x00004023 +_0808D5A8: .4byte gRoomControls +_0808D5AC: + adds r0, r7, #0 + bl GetTileTypeByEntity + ldr r3, _0808D614 @ =0x00004017 + mov r8, r3 + cmp r0, r8 + beq _0808D642 + movs r5, #0x2e + ldrsh r1, [r7, r5] + ldr r5, _0808D618 @ =gRoomControls + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r6, #0x3f + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r7, r2] + ldrh r2, [r5, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r7, #0 + adds r4, #0x38 + ldrb r2, [r4] + mov r0, r8 + bl SetTile + ldrb r0, [r7, #0xa] + cmp r0, #0 + bne _0808D61C + movs r3, #0x2e + ldrsh r1, [r7, r3] + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r7, r2] + ldrh r2, [r5, #8] + adds r2, #0x10 + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + ldrb r2, [r4] + mov r0, r8 + bl SetTile + b _0808D642 + .align 2, 0 +_0808D614: .4byte 0x00004017 +_0808D618: .4byte gRoomControls +_0808D61C: + ldr r0, _0808D648 @ =0x00004014 + movs r3, #0x2e + ldrsh r1, [r7, r3] + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + movs r3, #0x32 + ldrsh r2, [r7, r3] + ldrh r3, [r5, #8] + adds r3, #0x10 + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r4] + bl SetTile +_0808D642: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808D648: .4byte 0x00004014 + + .else push {r4, r5, r6, r7, lr} mov r7, r8 diff --git a/asm/manager37.s b/asm/manager37.s index 43657704..35b69824 100644 --- a/asm/manager37.s +++ b/asm/manager37.s @@ -35,10 +35,65 @@ _0805DE64: .4byte gUnk_08108DC4 thumb_func_start sub_0805DE68 sub_0805DE68: @ 0x0805DE68 .ifdef JP - .incbin "baserom_jp.gba", 0x05dcbc, 0x3c @TODO disassemble + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x7b + bl CheckLocalFlag + cmp r0, #0 + bne _0805DCCE + bl DeleteThisEntity +_0805DCCE: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0805DCF4 @ =0x030010A0 + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x39 + movs r0, #0xf + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3a + movs r1, #0x20 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + pop {r4, pc} + .align 2, 0 +_0805DCF4: .4byte gScreenTransition .else .ifdef EU - .incbin "baserom_eu.gba", 0x05D904, 0x3c @TODO same as JP + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x7b + bl CheckLocalFlag + cmp r0, #0 + bne _0805D916 + bl DeleteThisEntity +_0805D916: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0805D93C @ =gScreenTransition + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x39 + movs r0, #0xf + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3a + movs r1, #0x20 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + pop {r4, pc} + .align 2, 0 +_0805D93C: .4byte gScreenTransition + .else push {r4, lr} adds r4, r0, #0 diff --git a/asm/managerF.s b/asm/managerF.s index 73263595..e8a21841 100644 --- a/asm/managerF.s +++ b/asm/managerF.s @@ -805,10 +805,9 @@ _080594D2: _080594D4: .4byte gUnk_08108380 _080594D8: .4byte gPlayerEntity -@TODO move down once EU pointers are fixed +.ifndef EU thumb_func_start sub_080594DC sub_080594DC: @ 0x080594DC -.ifndef EU push {r4, lr} adds r4, r0, #0 ldrb r0, [r4, #0xc] diff --git a/asm/non_matching/eu/HandlePlayerLife.inc b/asm/non_matching/eu/HandlePlayerLife.inc new file mode 100644 index 00000000..96134c53 --- /dev/null +++ b/asm/non_matching/eu/HandlePlayerLife.inc @@ -0,0 +1,251 @@ +.syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080170E4 @ =gUnk_0200AF00 + adds r2, r0, #0 + adds r2, #0x2f + movs r1, #0 + strb r1, [r2] + subs r2, #2 + strb r1, [r2] + adds r0, #0x2e + strb r1, [r0] + ldr r2, _080170E8 @ =gPlayerEntity + adds r0, r2, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08017072 + adds r0, r2, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08017072 + movs r0, #0x86 + bl SoundReq +_08017072: + ldr r4, _080170EC @ =gPlayerState + ldr r0, [r4, #0x30] + ldr r1, _080170F0 @ =0xFDFFFDFF + ands r0, r1 + str r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _0801708A + bl ResetPlayer +_0801708A: + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _080170A4 + adds r0, r4, #0 + adds r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _080170A4 + bl sub_0807A108 +_080170A4: + bl sub_08079B24 + cmp r0, #0 + bne _080170B2 + adds r0, r5, #0 + bl sub_08079708 +_080170B2: + ldr r0, _080170F4 @ =gUnk_03003DF0 + movs r4, #0 + strb r4, [r0] + ldr r2, _080170EC @ =gPlayerState + adds r1, r2, #0 + adds r1, #0x27 + ldrb r0, [r1] + cmp r0, #0 + beq _080170C8 + subs r0, #1 + strb r0, [r1] +_080170C8: + adds r1, r2, #0 + adds r1, #0xa8 + ldrb r0, [r1] + adds r3, r2, #0 + adds r3, #0xa9 + strb r0, [r3] + strb r4, [r1] + subs r1, #0x1e + ldrb r0, [r1] + cmp r0, #0 + beq _080170F8 + subs r0, #1 + strb r0, [r1] + b _08017222 + .align 2, 0 +_080170E4: .4byte gUnk_0200AF00 +_080170E8: .4byte gPlayerEntity +_080170EC: .4byte gPlayerState +_080170F0: .4byte 0xFDFFFDFF +_080170F4: .4byte gUnk_03003DF0 +_080170F8: + adds r0, r2, #0 + adds r0, #0x8b + ldrb r0, [r0] + cmp r0, #0 + beq _08017104 + b _08017222 +_08017104: + ldr r0, _08017160 @ =gTextBox + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _08017112 + b _08017222 +_08017112: + ldr r0, _08017164 @ =gUnk_0200AF00 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0801714E + ldr r0, _08017168 @ =gScreenTransition + ldr r0, [r0] + movs r1, #0x5a + bl __modsi3 + cmp r0, #0 + bne _0801714E + ldr r2, _0801716C @ =gSave + adds r0, r2, #0 + adds r0, #0xab + ldrb r0, [r0] + lsrs r1, r0, #2 + cmp r1, #0x18 + bls _08017138 + movs r1, #0x18 +_08017138: + cmp r1, #7 + bhi _0801713E + movs r1, #8 +_0801713E: + adds r0, r2, #0 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, r1 + bhi _0801714E + ldr r0, _08017170 @ =0x0000011F + bl EnqueueSFX +_0801714E: + ldr r0, _0801716C @ =gSave + adds r2, r0, #0 + adds r2, #0xb2 + ldrb r1, [r2] + cmp r1, #0 + bne _08017174 + adds r0, #0xc4 + strh r1, [r0] + b _08017192 + .align 2, 0 +_08017160: .4byte gTextBox +_08017164: .4byte gUnk_0200AF00 +_08017168: .4byte gScreenTransition +_0801716C: .4byte gSave +_08017170: .4byte 0x0000011F +_08017174: + adds r1, r0, #0 + adds r1, #0xc4 + ldrh r0, [r1] + cmp r0, #0 + beq _08017188 + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08017192 +_08017188: + movs r0, #0 + strb r0, [r2] + ldr r0, _080171A4 @ =0x000001B3 + bl SoundReq +_08017192: + ldr r0, _080171A8 @ =gSave + adds r3, r0, #0 + adds r3, #0xb3 + ldrb r1, [r3] + cmp r1, #0 + bne _080171AC + adds r0, #0xc6 + strh r1, [r0] + b _080171DC + .align 2, 0 +_080171A4: .4byte 0x000001B3 +_080171A8: .4byte gSave +_080171AC: + adds r2, r0, #0 + adds r2, #0xc6 + ldrh r0, [r2] + cmp r0, #0 + beq _080171C0 + subs r1, r0, #1 + strh r1, [r2] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _080171CE +_080171C0: + movs r0, #0 + strb r0, [r3] + movs r0, #0xa0 + lsls r0, r0, #1 + bl SoundReq + b _080171DC +_080171CE: + movs r0, #0xf + ands r1, r0 + cmp r1, #0 + bne _080171DC + adds r0, r5, #0 + bl CreateSparkle +_080171DC: + ldr r0, _080171F0 @ =gSave + adds r3, r0, #0 + adds r3, #0xba + ldrb r1, [r3] + cmp r1, #0 + bne _080171F4 + adds r0, #0xc8 + strh r1, [r0] + b _08017222 + .align 2, 0 +_080171F0: .4byte gSave +_080171F4: + adds r2, r0, #0 + adds r2, #0xc8 + ldrh r0, [r2] + cmp r0, #0 + beq _08017208 + subs r1, r0, #1 + strh r1, [r2] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _0801720E +_08017208: + movs r0, #0 + strb r0, [r3] + b _08017222 +_0801720E: + movs r0, #0x3f + ands r1, r0 + cmp r1, #0 + bne _08017222 + ldrb r1, [r3] + adds r1, #0x55 + adds r0, r5, #0 + movs r2, #0 + bl CreateFx +_08017222: + pop {r4, r5} + pop {r0} + bx r0 +.syntax divided diff --git a/asm/non_matching/eu/Manager7_Main.inc b/asm/non_matching/eu/Manager7_Main.inc new file mode 100644 index 00000000..83617e4d --- /dev/null +++ b/asm/non_matching/eu/Manager7_Main.inc @@ -0,0 +1,95 @@ +.syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080578C4 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x20 + movs r0, #0xff + strb r0, [r1] + ldr r1, _0805791C @ =sub_080582F8 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_080578C4: + ldr r0, _08057920 @ =gRoomControls + ldrh r5, [r0] + cmp r5, #0 + bne _08057960 + adds r0, r4, #0 + bl sub_08057E40 + cmp r0, #0 + beq _080578E8 + ldr r0, _08057924 @ =gRoomVars + ldrb r6, [r0, #0x10] + adds r1, r4, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, r6 + beq _080578E8 + strb r6, [r1] + strb r5, [r4, #0xe] +_080578E8: + lsls r1, r6, #6 + ldr r0, _08057928 @ =gUnk_081080A4 + adds r2, r1, r0 + ldrb r1, [r4, #0xe] + cmp r1, #0 + bne _08057938 + ldr r1, _0805792C @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + ldr r0, [r2] + ldr r1, _08057930 @ =gGlobalGfxAndPalettes + adds r0, r0, r1 + ldr r1, [r2, #4] + movs r2, #0x80 + lsls r2, r2, #5 + bl LoadResourceAsync + ldr r0, _08057934 @ =gUnk_081081E4 + adds r0, r6, r0 + ldrb r0, [r0] + bl LoadPaletteGroup + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + b _08057960 + .align 2, 0 +_0805791C: .4byte sub_08057E30 +_08057920: .4byte gRoomControls +_08057924: .4byte gRoomVars +_08057928: .4byte gUnk_081080A4 +_0805792C: .4byte gUnk_02034490 +_08057930: .4byte gGlobalGfxAndPalettes +_08057934: .4byte gUnk_081081E4 +_08057938: + cmp r1, #0 + blt _08057960 + cmp r1, #7 + bgt _08057960 + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, [r1] + ldr r2, _08057964 @ =gGlobalGfxAndPalettes + adds r0, r0, r2 + ldr r1, [r1, #4] + movs r2, #0x80 + lsls r2, r2, #5 + bl LoadResourceAsync + ldrb r0, [r4, #0xe] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xe] + ldr r0, _08057968 @ =gUnk_02034490 + strb r1, [r0] +_08057960: + pop {r4, r5, r6, pc} + .align 2, 0 +_08057964: .4byte gGlobalGfxAndPalettes +_08057968: .4byte gUnk_02034490 +.syntax divided diff --git a/asm/non_matching/eu/TextBoxHandlerQuestion.inc b/asm/non_matching/eu/TextBoxHandlerQuestion.inc new file mode 100644 index 00000000..86aee30b --- /dev/null +++ b/asm/non_matching/eu/TextBoxHandlerQuestion.inc @@ -0,0 +1,153 @@ +.syntax unified + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + ldr r0, _08056570 @ =gUnk_02024030 + movs r7, #3 + ldrsb r7, [r0, r7] + ldr r0, _08056574 @ =gInput + ldrh r0, [r0, #2] + cmp r0, #8 + beq _08056582 + cmp r0, #8 + bgt _08056578 + cmp r0, #1 + beq _08056582 + b _080565EA + .align 2, 0 +_08056570: .4byte gUnk_02024030 +_08056574: .4byte gInput +_08056578: + cmp r0, #0x10 + beq _080565E8 + cmp r0, #0x20 + beq _080565E4 + b _080565EA +_08056582: + ldr r0, _08056598EU @ =gUnk_02024030 + lsls r1, r7, #1 + adds r0, #0x10 + adds r1, r1, r0 + ldrh r1, [r1] + cmp r1, #0 + bne _080565A0EU + ldr r1, _0805659CEU @ =gUnk_08107C14 + adds r0, r6, #0 + adds r0, #0x20 + b _080565B0EU + .align 2, 0 +_08056598EU: .4byte gUnk_02024030 +_0805659CEU: .4byte gUnk_08107C14 +_080565A0EU: + strh r1, [r6, #8] + adds r4, r6, #0 + adds r4, #0x20 + adds r0, r4, #0 + bl sub_0805EEB4 + ldr r1, _080565D8 @ =gUnk_08107C0F + adds r0, r4, #0 +_080565B0EU: + bl sub_0805EF40 + ldr r2, _080565DC @ =gUnk_02000040 + ldr r0, _080565E0 @ =gUnk_02024030 + ldrb r1, [r0, #3] + strb r1, [r2, #1] + movs r1, #3 + strb r1, [r2] + movs r1, #0x18 + bl MemClear + movs r0, #0x6a + bl SoundReq + adds r1, r6, #0 + adds r1, #0x89 + movs r0, #1 + strb r0, [r1] + b _080565EA + .align 2, 0 +_080565D8: .4byte gUnk_08107C0F +_080565DC: .4byte gUnk_02000040 +_080565E0: .4byte gUnk_02024030 +_080565E4: + subs r7, #1 + b _080565EA +_080565E8: + adds r7, #1 +_080565EA: + ldr r4, _0805660C @ =gUnk_02024030 + movs r1, #2 + ldrsb r1, [r4, r1] + adds r0, r7, r1 + bl __modsi3 + adds r7, r0, #0 + movs r5, #3 + ldrsb r5, [r4, r5] + cmp r7, r5 + beq _08056610 + strb r7, [r4, #3] + movs r0, #0x69 + bl SoundReq + movs r1, #1 + b _08056612 + .align 2, 0 +_0805660C: .4byte gUnk_02024030 +_08056610: + movs r1, #0 +_08056612: + ldr r2, _08056674 @ =gUnk_02000040 + ldrb r0, [r2] + cmp r0, #1 + bne _08056624 + ldr r1, _08056678 @ =gUnk_02024030 + movs r0, #2 + strb r0, [r2] + strb r0, [r1] + movs r1, #1 +_08056624: + cmp r1, #0 + beq _0805666A + ldr r0, _0805667C @ =gCurrentTextBox + mov sl, r0 + movs r1, #0x56 + add r1, sl + mov sb, r1 + ldrh r0, [r1] + mov r8, r0 + ldr r4, _08056678 @ =gUnk_02024030 + lsls r0, r5, #1 + adds r4, #8 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r1] + adds r6, #0x50 + movs r0, #0 + adds r1, r6, #0 + bl sub_0805F8E4 + lsls r0, r7, #1 + adds r0, r0, r4 + ldrh r0, [r0] + mov r1, sb + strh r0, [r1] + movs r0, #1 + adds r1, r6, #0 + bl sub_0805F8E4 + mov r1, r8 + mov r0, sb + strh r1, [r0] + movs r0, #1 + ldr r1, _08056680 @ =0x0202281D + strb r0, [r1] +_0805666A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08056674: .4byte gUnk_02000040 +_08056678: .4byte gUnk_02024030 +_0805667C: .4byte gCurrentTextBox +_08056680: .4byte 0x0202281D +.syntax divided diff --git a/asm/non_matching/eu/sub_0801F428.inc b/asm/non_matching/eu/sub_0801F428.inc new file mode 100644 index 00000000..6c876322 --- /dev/null +++ b/asm/non_matching/eu/sub_0801F428.inc @@ -0,0 +1,47 @@ +.syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0804A720 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + bl Random + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x3b + strb r1, [r0] + adds r0, #2 + strb r4, [r0] + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0801F484 + movs r0, #3 + strb r0, [r5, #0xc] + movs r0, #0x1e + strb r0, [r5, #0xf] + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r5, #0x15] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + movs r1, #2 + bl InitializeAnimation +_0801F484: + pop {r4, r5, pc} + .align 2, 0 +.syntax divided diff --git a/asm/non_matching/eu/sub_0802AAC0.inc b/asm/non_matching/eu/sub_0802AAC0.inc new file mode 100644 index 00000000..9004a523 --- /dev/null +++ b/asm/non_matching/eu/sub_0802AAC0.inc @@ -0,0 +1,101 @@ +.syntax unified + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + bl sub_0802AC40 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AAB4 + adds r0, r4, #0 + movs r1, #4 + bl sub_0802AD1C +_0802AAB4: + adds r6, r4, #0 + adds r6, #0x81 + ldrb r0, [r6] + cmp r0, #0 + beq _0802AB38 + ldr r5, [r4, #0x54] + cmp r5, #0 + bne _0802AAC8 + strb r5, [r6] + b _0802AB56 +_0802AAC8: + ldr r0, [r5, #4] + cmp r0, #0 + bne _0802AAD4 + strb r0, [r6] + str r0, [r4, #0x54] + b _0802AB56 +_0802AAD4: + ldrb r0, [r5, #0xe] + mov r8, r0 + cmp r0, #0 + bne _0802AB56 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0802AB24 @ =gRoomControls + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r7, #0x32 + ldrsh r1, [r4, r7] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #1 + bl sub_080002E0 + cmp r0, #0 + bne _0802AB2C + ldr r1, _0802AB28 @ =gPlayerEntity + adds r0, r4, #0 + movs r2, #0x10 + movs r3, #0x10 + bl sub_080041A0 + cmp r0, #0 + beq _0802AB56 + ldrb r0, [r5, #0xf] + cmp r0, #0x50 + bhi _0802AB56 + mov r0, r8 + strb r0, [r6] + b _0802AB56 + .align 2, 0 +_0802AB24: .4byte gRoomControls +_0802AB28: .4byte gPlayerEntity +_0802AB2C: + ldrb r0, [r5, #0xf] + cmp r0, #0x13 + bhi _0802AB56 + mov r1, r8 + strb r1, [r6] + b _0802AB56 +_0802AB38: + movs r1, #4 + strb r1, [r4, #0xc] + movs r0, #0xc0 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x80 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + bl InitializeAnimation +_0802AB56: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} +.syntax divided diff --git a/asm/non_matching/eu/sub_0802AB40.inc b/asm/non_matching/eu/sub_0802AB40.inc new file mode 100644 index 00000000..8e4b9440 --- /dev/null +++ b/asm/non_matching/eu/sub_0802AB40.inc @@ -0,0 +1,50 @@ +.syntax unified + push {r4, lr} + adds r4, r0, #0 + bl sub_0802AC40 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802ABA6 + adds r0, r4, #0 + adds r0, #0x7a + ldrb r0, [r0] + cmp r0, #4 + bhi _0802AB90 + movs r0, #5 + strb r0, [r4, #0xc] + strh r1, [r4, #0x24] + ldrb r1, [r4, #0xa] + adds r1, #1 + adds r0, r4, #0 + bl InitializeAnimation + b _0802ABBA +_0802AB90: + movs r0, #0xc0 + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x80 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] + b _0802ABBA +_0802ABA6: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r2 + cmp r0, #0 + bne _0802ABBA + adds r0, r4, #0 + movs r1, #4 + bl sub_0802ACDC +_0802ABBA: + pop {r4, pc} +.syntax divided diff --git a/asm/non_matching/eu/sub_0802AC40.inc b/asm/non_matching/eu/sub_0802AC40.inc new file mode 100644 index 00000000..80e3632d --- /dev/null +++ b/asm/non_matching/eu/sub_0802AC40.inc @@ -0,0 +1,43 @@ +.syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + bl GetNextFrame + adds r0, r4, #0 + bl sub_0806F69C + adds r5, r4, #0 + adds r5, #0x7a + ldrb r0, [r5] + cmp r0, #0 + beq _0802AC26 + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + bne _0802AC44 + strb r0, [r5] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + b _0802AC42 +_0802AC26: + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + beq _0802AC44 + movs r0, #1 + strb r0, [r5] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3a + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 +_0802AC42: + strb r0, [r2] +_0802AC44: + pop {r4, r5, pc} + .align 2, 0 +.syntax divided diff --git a/asm/non_matching/eu/sub_0802ADDC.inc b/asm/non_matching/eu/sub_0802ADDC.inc new file mode 100644 index 00000000..115c4495 --- /dev/null +++ b/asm/non_matching/eu/sub_0802ADDC.inc @@ -0,0 +1,38 @@ +.syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xa] + adds r1, #2 + movs r0, #0x1b + bl CreateEnemy + adds r4, r0, #0 + cmp r4, #0 + beq _0802AD92 + adds r0, r5, #0 + bl sub_0802B234 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + strb r1, [r4, #0xb] + str r5, [r4, #0x50] + str r4, [r5, #0x54] + adds r0, r5, #0 + adds r1, r4, #0 + bl CopyPosition + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _0802AD92 + subs r1, #7 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0802AD92: + pop {r4, r5, pc} +.syntax divided diff --git a/asm/non_matching/eu/sub_0802AE68.inc b/asm/non_matching/eu/sub_0802AE68.inc new file mode 100644 index 00000000..76996976 --- /dev/null +++ b/asm/non_matching/eu/sub_0802AE68.inc @@ -0,0 +1,78 @@ +.syntax unified + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x50] + cmp r2, #0 + bne _0802ADFA + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] +_0802ADFA: + adds r0, r2, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802AE1E + adds r0, r2, #0 + adds r1, r4, #0 + bl CopyPosition + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0802AE68 +_0802AE1E: + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x80 + movs r2, #1 + movs r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + beq _0802AE54 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x18 + orrs r1, r0 + strb r1, [r2] + b _0802AE62 +_0802AE54: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0802AE62: + adds r0, r4, #0 + bl GetNextFrame +_0802AE68: + pop {r4, pc} + .align 2, 0 +.syntax divided diff --git a/asm/non_matching/eu/sub_0802B1BC.inc b/asm/non_matching/eu/sub_0802B1BC.inc new file mode 100644 index 00000000..5e2f6265 --- /dev/null +++ b/asm/non_matching/eu/sub_0802B1BC.inc @@ -0,0 +1,71 @@ +.syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802B17A + subs r0, #1 + strb r0, [r4, #0xe] +_0802B17A: + ldr r2, [r4, #0x50] + cmp r2, #0 + bne _0802B190 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_0802B190: + adds r0, r2, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B1AA + adds r0, r2, #0 + adds r1, r4, #0 + bl CopyPosition + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + b _0802B1EC +_0802B1AA: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + beq _0802B1D8 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x18 + orrs r1, r0 + strb r1, [r2] + b _0802B1E6 +_0802B1D8: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0802B1E6: + adds r0, r4, #0 + bl GetNextFrame +_0802B1EC: + pop {r4, pc} + .align 2, 0 +.syntax divided diff --git a/asm/non_matching/eu/sub_0805457C.inc b/asm/non_matching/eu/sub_0805457C.inc new file mode 100644 index 00000000..55d3bca5 --- /dev/null +++ b/asm/non_matching/eu/sub_0805457C.inc @@ -0,0 +1,207 @@ +.syntax unified + push {r4, r5, r6, r7, lr} + sub sp, #0x20 + adds r6, r0, #0 + adds r3, r1, #0 + ldr r0, _08054138 @ =gRoomVars + ldrb r0, [r0, #2] + cmp r0, #1 + bne _08054126 + b _080542CC +_08054126: + ldr r2, _0805413C @ =gUnk_08001A1C + movs r4, #0 + cmp r3, #0x18 + bhi _080541BC + lsls r0, r3, #2 + ldr r1, _08054140 @ =_08054144 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08054138: .4byte gRoomVars +_0805413C: .4byte gUnk_08001A1C +_08054140: .4byte _08054144 +_08054144: @ jump table + .4byte _080541BC @ case 0 + .4byte _080541A8 @ case 1 + .4byte _080541A8 @ case 2 + .4byte _080541A8 @ case 3 + .4byte _080541A8 @ case 4 + .4byte _080541A8 @ case 5 + .4byte _080541A8 @ case 6 + .4byte _080541A8 @ case 7 + .4byte _080541A8 @ case 8 + .4byte _080541A8 @ case 9 + .4byte _080541A8 @ case 10 + .4byte _080541A8 @ case 11 + .4byte _080541A8 @ case 12 + .4byte _080541BC @ case 13 + .4byte _080541BC @ case 14 + .4byte _080541BA @ case 15 + .4byte _080541B4 @ case 16 + .4byte _080541B4 @ case 17 + .4byte _080541B4 @ case 18 + .4byte _080541B4 @ case 19 + .4byte _080541B4 @ case 20 + .4byte _080541B4 @ case 21 + .4byte _080541B4 @ case 22 + .4byte _080541B4 @ case 23 + .4byte _080541B4 @ case 24 +_080541A8: + lsls r1, r3, #5 + ldr r0, _080541B0 @ =gUnk_0800137C + adds r4, r1, r0 + b _080541BC + .align 2, 0 +_080541B0: .4byte gUnk_0800137C +_080541B4: + lsls r1, r3, #5 + ldr r0, _080541D0 @ =gUnk_0800161C + adds r2, r1, r0 +_080541BA: + ldr r4, _080541D4 @ =gUnk_02034398 +_080541BC: + cmp r4, #0 + bne _080541C2 + b _080542CC +_080541C2: + ldr r0, _080541D8 @ =gSave + adds r0, #0xb3 + ldrb r1, [r0] + cmp r1, #0 + bne _080541E0 + ldr r3, _080541DC @ =gUnk_08001A1C + b _080541E6 + .align 2, 0 +_080541D0: .4byte gUnk_0800161C +_080541D4: .4byte gUnk_02034398 +_080541D8: .4byte gSave +_080541DC: .4byte gUnk_08001A1C +_080541E0: + lsls r1, r1, #5 + ldr r0, _080542BC @ =0x080014E4 + adds r3, r1, r0 +_080541E6: + mov r0, sp + adds r1, r4, #0 + bl sub_08000F14 + ldr r4, _080542C0 @ =gSave + adds r0, r4, #0 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #8 + bhi _08054204 + mov r1, sp + mov r0, sp + ldrh r0, [r0, #8] + adds r0, #5 + strh r0, [r1, #8] +_08054204: + adds r0, r4, #0 + adds r0, #0xac + ldrb r0, [r0] + cmp r0, #0 + bne _08054218 + mov r1, sp + mov r0, sp + ldrh r0, [r0, #0xc] + adds r0, #3 + strh r0, [r1, #0xc] +_08054218: + adds r0, r4, #0 + adds r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + bne _0805422C + mov r1, sp + mov r0, sp + ldrh r0, [r0, #0xe] + adds r0, #3 + strh r0, [r1, #0xe] +_0805422C: + adds r0, r4, #0 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r0, #0xa + bhi _08054240 + mov r1, sp + mov r0, sp + ldrh r0, [r0, #4] + adds r0, #1 + strh r0, [r1, #4] +_08054240: + ldr r2, _080542C4 @ =gUnk_08001A1C + adds r0, r4, #0 + adds r0, #0xbb + ldrb r0, [r0] + adds r3, r2, #0 + cmp r0, #0 + beq _08054250 + adds r2, #0x20 +_08054250: + movs r1, #0x8b + lsls r1, r1, #1 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0805425E + adds r3, #0x40 +_0805425E: + mov r0, sp + mov r1, sp + bl sub_08000F2C + adds r4, r0, #0 + bl Random + adds r2, r0, #0 + asrs r5, r2, #0x18 + movs r0, #0xf + ands r5, r0 + adds r0, r2, #0 + adds r1, r4, #0 + bl __modsi3 + adds r2, r0, #0 + movs r3, #0 + lsls r0, r5, #1 + add r0, sp + movs r4, #0 + ldrsh r1, [r0, r4] + cmp r1, r2 + bgt _080542A6 + movs r4, #0xf +_0805428E: + adds r3, #1 + adds r5, #1 + ands r5, r4 + cmp r3, #0xf + bhi _080542A6 + lsls r0, r5, #1 + add r0, sp + movs r7, #0 + ldrsh r0, [r0, r7] + adds r1, r1, r0 + cmp r1, r2 + ble _0805428E +_080542A6: + ldr r0, _080542C8 @ =gUnk_080FE1B4 + adds r0, r5, r0 + ldrb r1, [r0] + cmp r1, #0 + beq _080542CC + adds r0, r6, #0 + movs r2, #0 + bl CreateItemDrop + b _080542CE + .align 2, 0 +_080542BC: .4byte 0x080014E4 +_080542C0: .4byte gSave +_080542C4: .4byte gUnk_08001A1C +_080542C8: .4byte gUnk_080FE1B4 +_080542CC: + movs r0, #0 +_080542CE: + add sp, #0x20 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + +.syntax divided diff --git a/asm/non_matching/eu/sub_08057A18.inc b/asm/non_matching/eu/sub_08057A18.inc new file mode 100644 index 00000000..3ea092df --- /dev/null +++ b/asm/non_matching/eu/sub_08057A18.inc @@ -0,0 +1,56 @@ +.syntax unified + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + mov r8, r0 + adds r4, r1, #0 + bl sub_0805E5A8 + ldr r5, _080575E8 @ =gUnk_03004030 + ldrb r0, [r5, #9] + strb r0, [r5, #0xa] + ldr r3, _080575EC @ =gRoomControls + ldrb r0, [r3, #4] + strb r0, [r5, #9] + ldr r1, _080575F0 @ =gScreenTransition + ldrb r0, [r4, #4] + strb r0, [r1, #0xc] + ldrb r0, [r4, #5] + strb r0, [r1, #0xd] + ldrb r0, [r4, #4] + strb r0, [r3, #4] + ldrb r0, [r4, #5] + strb r0, [r3, #5] + str r4, [r5] + ldr r6, _080575F4 @ =gPlayerEntity + ldrh r1, [r6, #0x2e] + ldrh r0, [r3, #6] + subs r1, r1, r0 + ldrh r2, [r4] + movs r0, #0x3f + ands r0, r2 + lsls r0, r0, #4 + subs r1, r1, r0 + strh r1, [r5, #4] + ldrh r1, [r6, #0x32] + ldrh r0, [r3, #8] + subs r1, r1, r0 + ldrh r2, [r4] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r2 + lsrs r0, r0, #2 + subs r1, r1, r0 + strh r1, [r5, #6] + ldrb r0, [r4, #3] + bl sub_08080930 + mov r0, r8 + bl DeleteManager + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_080575E8: .4byte gUnk_03004030 +_080575EC: .4byte gRoomControls +_080575F0: .4byte gScreenTransition +_080575F4: .4byte gPlayerEntity +.syntax divided diff --git a/asm/non_matching/eu/sub_08057E7C.inc b/asm/non_matching/eu/sub_08057E7C.inc new file mode 100644 index 00000000..34c9421b --- /dev/null +++ b/asm/non_matching/eu/sub_08057E7C.inc @@ -0,0 +1,37 @@ +.syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _080579F0 @ =gUnk_081081E4 + adds r0, r4, r0 + ldrb r0, [r0] + bl LoadPaletteGroup + lsls r1, r4, #6 + ldr r0, _080579F4 @ =gUnk_081080A4 + adds r1, r1, r0 + movs r3, #0 + ldr r2, _080579F8 @ =0x040000D4 + ldr r6, _080579FC @ =gGlobalGfxAndPalettes + ldr r5, _08057A00 @ =0x84000400 +_080579D4: + ldr r0, [r1] + adds r0, r0, r6 + str r0, [r2] + ldr r0, [r1, #4] + str r0, [r2, #4] + str r5, [r2, #8] + ldr r0, [r2, #8] + adds r3, #1 + adds r1, #8 + cmp r3, #7 + bls _080579D4 + ldr r0, _08057A04 @ =gRoomVars + strb r4, [r0, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_080579F0: .4byte gUnk_081081E4 +_080579F4: .4byte gUnk_081080A4 +_080579F8: .4byte 0x040000D4 +_080579FC: .4byte gGlobalGfxAndPalettes +_08057A00: .4byte 0x84000400 +_08057A04: .4byte gRoomVars +.syntax divided diff --git a/asm/non_matching/eu/sub_0806EABC.inc b/asm/non_matching/eu/sub_0806EABC.inc new file mode 100644 index 00000000..623a31db --- /dev/null +++ b/asm/non_matching/eu/sub_0806EABC.inc @@ -0,0 +1,24 @@ +.syntax unified + push {r4, lr} + adds r4, r0, #0 + bl sub_08050384 + adds r4, #0x68 + movs r1, #0 + ldrsh r0, [r4, r1] + ldr r1, _0806E520 @ =gUnk_020227E8 + ldr r2, _0806E524 @ =0x00202020 + bl sub_08057044 + ldr r0, _0806E528 @ =0x00003302 + ldr r1, _0806E52C @ =gUnk_081146B8 + bl sub_0805F46C + ldr r1, _0806E530 @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] + pop {r4, pc} + .align 2, 0 +_0806E520: .4byte gUnk_020227E8 +_0806E524: .4byte 0x00202020 +_0806E528: .4byte 0x00003302 +_0806E52C: .4byte gUnk_081146B8 +_0806E530: .4byte gScreen +.syntax divided diff --git a/asm/non_matching/eu/sub_080AA044.inc b/asm/non_matching/eu/sub_080AA044.inc new file mode 100644 index 00000000..bc193574 --- /dev/null +++ b/asm/non_matching/eu/sub_080AA044.inc @@ -0,0 +1,98 @@ +.syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + cmp r5, #0 + bne _080A984A + bl DeleteThisEntity +_080A984A: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A9856 + bl DeleteThisEntity + b _080A989A +_080A9856: + ldrh r0, [r5, #0x12] + ldrb r1, [r5, #0x1e] + bl GetSpriteSubEntryOffsetDataPointer + adds r3, r0, #0 + ldrb r1, [r5, #0x14] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080A9884 + movs r2, #0 + ldrsb r2, [r3, r2] + rsbs r2, r2, #0 + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl PositionRelative + b _080A989A +_080A9884: + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl PositionRelative +_080A989A: + adds r0, r5, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _080A98F8 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080A98B0 + subs r0, #1 + strb r0, [r4, #0xf] + b _080A98F8 +_080A98B0: + adds r0, r4, #0 + bl UpdateAnimationSingleFrame + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A98F8 + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #3 + strb r0, [r1] + movs r2, #0x40 + movs r0, #0x40 + strb r0, [r4, #0xf] + ldrb r0, [r5, #0x14] + lsls r1, r0, #2 + strb r1, [r4, #0x15] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldr r0, _080A98FC @ =gUnk_080FD150 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #0 + bl sub_080AA3E0 +_080A98F8: + pop {r4, r5, pc} + .align 2, 0 +_080A98FC: .4byte gUnk_080FD150 +.syntax divided diff --git a/asm/non_matching/phonograph/sub_0806E964.inc b/asm/non_matching/phonograph/sub_0806E964.inc index 63091404..6c6123f1 100644 --- a/asm/non_matching/phonograph/sub_0806E964.inc +++ b/asm/non_matching/phonograph/sub_0806E964.inc @@ -1,7 +1,154 @@ .syntax unified .ifdef EU - .incbin "baserom_eu.gba", 0x06E3DC, 0x000011C @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r2, r1, #0 + ldr r4, _0806E3F8 @ =gInput + ldrh r1, [r4, #2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806E3FC + bl sub_08050384 + b _0806E4EA + .align 2, 0 +_0806E3F8: .4byte gInput +_0806E3FC: + ldrb r0, [r2, #0x18] + adds r1, r0, #0 + mov r6, r8 + adds r6, #0x6c + cmp r1, #0 + bne _0806E414 + adds r0, #1 + strb r0, [r2, #0x18] + strh r1, [r6] + mov r0, r8 + bl sub_0806EABC +_0806E414: + ldrh r2, [r4, #4] + movs r0, #0xc0 + ands r0, r2 + cmp r0, #0 + beq _0806E466 + mov r1, r8 + adds r1, #0x68 + movs r0, #0 + ldrsh r4, [r1, r0] + movs r0, #0x40 + ands r0, r2 + adds r7, r1, #0 + cmp r0, #0 + beq _0806E434 + adds r4, #1 + b _0806E436 +_0806E434: + subs r4, #1 +_0806E436: + cmp r4, #0 + bgt _0806E43C + movs r4, #1 +_0806E43C: + movs r5, #0x1c + movs r0, #0x55 + bl CheckGlobalFlag + cmp r0, #0 + beq _0806E44A + movs r5, #0x34 +_0806E44A: + cmp r4, r5 + ble _0806E450 + adds r4, r5, #0 +_0806E450: + strh r4, [r7] + mov r0, r8 + bl sub_0806EABC + ldrh r1, [r6] + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #0 + ble _0806E466 + subs r0, r1, #1 + strh r0, [r6] +_0806E466: + ldr r0, _0806E4B4 @ =gInput + ldrh r1, [r0, #2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806E4C6 + mov r5, r8 + adds r5, #0x68 + mov r7, r8 + adds r7, #0x6a + movs r0, #0 + ldrsh r1, [r5, r0] + movs r2, #0 + ldrsh r0, [r7, r2] + cmp r1, r0 + bne _0806E48E + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0806E4BC +_0806E48E: + ldr r4, _0806E4B8 @ =gUnk_081145E4 + movs r2, #0 + ldrsh r0, [r5, r2] + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + ldrsh r0, [r0, r1] + bl SoundReq + ldrh r0, [r5] + strh r0, [r7] + movs r2, #0 + ldrsh r0, [r5, r2] + lsls r0, r0, #2 + adds r4, #2 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r6] + b _0806E4C6 + .align 2, 0 +_0806E4B4: .4byte gInput +_0806E4B8: .4byte gUnk_081145E4 +_0806E4BC: + ldr r0, _0806E4F0 @ =0x80010000 + bl SoundReq + movs r0, #0 + strh r0, [r7] +_0806E4C6: + ldrh r1, [r6] + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #0 + ble _0806E4E4 + subs r0, r1, #1 + movs r1, #0 + strh r0, [r6] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0806E4E4 + mov r0, r8 + adds r0, #0x6a + strh r1, [r0] + strh r1, [r6] +_0806E4E4: + ldr r1, _0806E4F4 @ =gActiveScriptInfo + movs r0, #0 + strb r0, [r1, #6] +_0806E4EA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806E4F0: .4byte 0x80010000 +_0806E4F4: .4byte gActiveScriptInfo + .else push {r4, r5, r6, r7, lr} mov r7, sb diff --git a/asm/non_matching/stockwell/sub_08065370.inc b/asm/non_matching/stockwell/sub_08065370.inc index 0c4e91c1..14d83cbc 100644 --- a/asm/non_matching/stockwell/sub_08065370.inc +++ b/asm/non_matching/stockwell/sub_08065370.inc @@ -1,7 +1,184 @@ .syntax unified .ifdef EU - .incbin "baserom_eu.gba", 0x064DE8, 0x0000164 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + mov r8, r1 + movs r6, #1 + ldr r0, _08064E14 @ =gRoomVars + ldrb r5, [r0, #6] + movs r0, #0 + mov sb, r0 + cmp r5, #0x66 + beq _08064E8E + cmp r5, #0x66 + bhi _08064E1E + cmp r5, #0x61 + beq _08064E94 + cmp r5, #0x61 + bhi _08064E18 + cmp r5, #0xd + beq _08064E44 + b _08064EAA + .align 2, 0 +_08064E14: .4byte gRoomVars +_08064E18: + cmp r5, #0x64 + beq _08064E88 + b _08064EAA +_08064E1E: + cmp r5, #0x6c + blo _08064EAA + cmp r5, #0x6d + bls _08064E60 + cmp r5, #0x6f + bhi _08064EAA + ldr r2, _08064E3C @ =gQuiverSizes + ldr r1, _08064E40 @ =gSave + adds r0, r1, #0 + adds r0, #0xaf + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xad + b _08064E6E + .align 2, 0 +_08064E3C: .4byte gQuiverSizes +_08064E40: .4byte gSave +_08064E44: + movs r0, #0xd + bl GetInventoryValue + cmp r0, #0 + bne _08064E58 + movs r0, #0xe + bl GetInventoryValue + cmp r0, #0 + beq _08064EAA +_08064E58: + ldr r0, _08064E5C @ =0x00002C0B + b _08064F32 + .align 2, 0 +_08064E5C: .4byte 0x00002C0B +_08064E60: + ldr r2, _08064E7C @ =gBombBagSizes + ldr r1, _08064E80 @ =gSave + adds r0, r1, #0 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xac +_08064E6E: + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhi _08064EAA + ldr r0, _08064E84 @ =0x00002C0E + b _08064F32 + .align 2, 0 +_08064E7C: .4byte gBombBagSizes +_08064E80: .4byte gSave +_08064E84: .4byte 0x00002C0E +_08064E88: + movs r1, #0x55 + mov sb, r1 + b _08064EAA +_08064E8E: + movs r0, #0x56 + mov sb, r0 + b _08064EAA +_08064E94: + ldr r0, _08064F04 @ =gSave + adds r0, #0xc2 + ldrh r1, [r0] + ldr r0, _08064F08 @ =0x000003E6 + cmp r1, r0 + bls _08064EAA + ldr r0, _08064F0C @ =0x00002C0E + adds r1, r4, #0 + bl TextboxNoOverlap + movs r6, #0 +_08064EAA: + cmp r6, #0 + beq _08064F38 + adds r0, r5, #0 + bl GetItemPrice + adds r6, r0, #0 + ldr r7, _08064F04 @ =gSave + adds r0, r7, #0 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r6, r0 + bhi _08064F30 + rsbs r0, r6, #0 + bl ModRupees + ldr r4, _08064F10 @ =gRoomVars + ldrb r1, [r4, #7] + adds r0, r5, #0 + movs r2, #2 + bl sub_080A7C18 + movs r0, #0 + strb r0, [r4, #6] + strb r0, [r4, #7] + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] + mov r0, sb + cmp r0, #0 + beq _08064EEA + bl SetLocalFlag +_08064EEA: + ldr r1, [r7, #0x5c] + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bhi _08064EF8 + adds r0, r1, #1 + str r0, [r7, #0x5c] +_08064EF8: + ldr r0, [r7, #0x5c] + cmp r0, #9 + bls _08064F18 + ldr r0, _08064F14 @ =0x00002C11 + b _08064F26 + .align 2, 0 +_08064F04: .4byte gSave +_08064F08: .4byte 0x000003E6 +_08064F0C: .4byte 0x00002C0E +_08064F10: .4byte gRoomVars +_08064F14: .4byte 0x00002C11 +_08064F18: + cmp r6, #0x63 + bls _08064F24 + ldr r0, _08064F20 @ =0x00002C10 + b _08064F26 + .align 2, 0 +_08064F20: .4byte 0x00002C10 +_08064F24: + ldr r0, _08064F2C @ =0x00002C0F +_08064F26: + mov r1, r8 + str r0, [r1, #4] + b _08064F3E + .align 2, 0 +_08064F2C: .4byte 0x00002C0F +_08064F30: + ldr r0, _08064F48 @ =0x00002C0D +_08064F32: + adds r1, r4, #0 + bl TextboxNoOverlap +_08064F38: + movs r0, #0 + mov r1, r8 + str r0, [r1, #0x14] +_08064F3E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08064F48: .4byte 0x00002C0D .else push {r4, r5, r6, r7, lr} mov r7, sb diff --git a/asm/object29.s b/asm/object29.s index e973f20e..72e20190 100644 --- a/asm/object29.s +++ b/asm/object29.s @@ -31,7 +31,106 @@ _08089870: .4byte gUnk_08120D90 thumb_func_start sub_08089874 sub_08089874: @ 0x08089874 .ifdef EU - .incbin "baserom_eu.gba", 0x089184, 0x00000C4 @TODO disassemble + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x38 + movs r2, #3 + strb r2, [r0] + ldrb r1, [r4, #0xb] + cmp r1, #0 + bne _08089200 + ldrb r0, [r4, #0xa] + cmp r0, #0x80 + bne _080891B4 + strb r2, [r4, #0xc] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #0 + bl InitializeAnimation + adds r0, r4, #0 + bl sub_08089AE0 + b _08089246 +_080891B4: + str r1, [r4, #0x50] + adds r0, r4, #0 + movs r1, #0x29 + movs r2, #0 + movs r3, #0xff + bl CreateObjectWithParent + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080891FA +_080891C8: + ldrb r3, [r4, #0xa] + adds r0, r4, #0 + movs r1, #0x29 + movs r2, #0 + bl CreateObjectWithParent + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _080891EE + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _080891EA + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] +_080891EA: + ldr r0, [r4, #0x54] + str r0, [r4, #0x50] +_080891EE: + ldrb r0, [r4, #0xa] + subs r0, #1 + strb r0, [r4, #0xa] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080891C8 +_080891FA: + bl DeleteThisEntity + b _08089246 +_08089200: + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, [r4, #0x50] + cmp r0, #0 + bne _08089214 + adds r0, r4, #0 + movs r1, #0 + bl InitializeAnimation + b _0808921C +_08089214: + adds r0, r4, #0 + movs r1, #1 + bl InitializeAnimation +_0808921C: + ldrb r0, [r4, #0xb] + cmp r0, #0xff + bne _0808923A + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A30 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0801D2B4 + b _08089246 +_0808923A: + ldrb r1, [r4, #0xb] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + rsbs r0, r0, #0 + strh r0, [r4, #0x36] +_08089246: + pop {r4, pc} + .else push {r4, r5, lr} adds r4, r0, #0 diff --git a/asm/object6A.s b/asm/object6A.s index 54e443d7..8e01d30f 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -729,7 +729,87 @@ sub_08094F98: @ 0x08094F98 thumb_func_start sub_08094FA8 sub_08094FA8: @ 0x08094FA8 .ifdef EU - .incbin "baserom_eu.gba", 0x09487C, 0x000009C @TODO disassemble + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #1 + beq _080948B4 + cmp r1, #1 + bgt _08094890 + cmp r1, #0 + beq _0809489A + b _08094912 +_08094890: + cmp r1, #2 + beq _080948E0 + cmp r1, #3 + beq _080948FC + b _08094912 +_0809489A: + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080787B4 + b _08094912 +_080948B4: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08094912 + movs r0, #0 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080788E0 + ldr r0, _080948DC @ =gPlayerState + movs r1, #0xc + strb r1, [r0, #0xc] + adds r0, #0x38 + movs r1, #0x36 + strb r1, [r0] + b _08094912 + .align 2, 0 +_080948DC: .4byte gPlayerState +_080948E0: + movs r0, #0x36 + bl GetInventoryValue + cmp r0, #2 + bne _08094912 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08094912 +_080948FC: + ldr r0, _08094914 @ =gPlayerEntity + ldrb r0, [r0, #0xc] + cmp r0, #0xc + beq _08094912 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x1c + movs r1, #0 + movs r2, #0 + bl CreateItemEntity +_08094912: + pop {r4, pc} + .align 2, 0 +_08094914: .4byte gPlayerEntity + .else push {r4, lr} adds r4, r0, #0 diff --git a/asm/objectBA.s b/asm/objectBA.s index 65210428..66229321 100644 --- a/asm/objectBA.s +++ b/asm/objectBA.s @@ -29,7 +29,145 @@ _080A1700: .4byte gUnk_08124ED0 thumb_func_start sub_080A1704 sub_080A1704: @ 0x080A1704 .ifdef EU - .incbin "baserom_eu.gba", 0x0A0F40, 0x0000128 @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + movs r0, #0x7b + bl CheckFlags + cmp r0, #0 + beq _080A0F5A + bl DeleteThisEntity +_080A0F5A: + ldr r0, _080A1050 @ =gEntCount + ldrb r0, [r0] + cmp r0, #0x45 + bhi _080A1044 + movs r0, #0x40 + bl zMalloc + adds r7, r0, #0 + cmp r7, #0 + beq _080A1044 + movs r6, #0 + movs r0, #1 + mov sb, r0 + mov r2, sb + mov r1, sl + strb r2, [r1, #0xc] + str r7, [r1, #0x64] + adds r1, #0x6e + movs r3, #0 + mov r8, r3 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r1] + mov r0, sl + adds r0, #0x6c + strh r6, [r0] + mov r0, sl + str r0, [r7] + movs r0, #0x5c + movs r1, #0 + bl CreateEnemy + adds r1, r0, #0 + str r7, [r1, #0x64] + str r1, [r7, #4] + movs r0, #0x5d + movs r1, #0 + bl CreateEnemy + adds r1, r0, #0 + ldr r4, _080A1054 @ =gRoomControls + movs r2, #0x80 + lsls r2, r2, #2 + adds r5, r2, #0 + ldrh r3, [r4, #6] + adds r0, r5, r3 + strh r0, [r1, #0x2e] + movs r2, #0xe0 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r4, #8] + adds r0, r0, r3 + strh r0, [r1, #0x32] + str r7, [r1, #0x64] + str r1, [r7, #8] + movs r0, #0x5d + movs r1, #1 + bl CreateEnemy + adds r1, r0, #0 + movs r2, #0x98 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r4, #6] + adds r0, r0, r3 + strh r0, [r1, #0x2e] + movs r2, #0xd8 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r4, #8] + adds r0, r0, r3 + strh r0, [r1, #0x32] + str r7, [r1, #0x64] + str r1, [r7, #0xc] + ldr r2, _080A1058 @ =gScreen + ldr r0, _080A105C @ =0x00001E07 + strh r0, [r2, #0x2c] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + mov r0, sl + adds r0, #0x70 + strh r6, [r0] + adds r0, #2 + strh r6, [r0] + adds r0, #2 + mov r1, r8 + strb r1, [r0] + adds r0, #6 + strb r1, [r0] + subs r0, #4 + movs r1, #0xc0 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + ldr r0, _080A1060 @ =gScreenTransition + adds r0, #0x39 + mov r2, sb + strb r2, [r0] + ldr r2, _080A1064 @ =gPlayerState + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xa + orrs r0, r1 + str r0, [r2, #0x30] + ldrh r3, [r4, #6] + adds r5, r5, r3 + strh r5, [r2, #0x16] + movs r1, #0x84 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r4, [r4, #8] + adds r0, r0, r4 + strh r0, [r2, #0x18] +_080A1044: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A1050: .4byte gEntCount +_080A1054: .4byte gRoomControls +_080A1058: .4byte gScreen +_080A105C: .4byte 0x00001E07 +_080A1060: .4byte gScreenTransition +_080A1064: .4byte gPlayerState + .else push {r4, r5, r6, r7, lr} mov r7, sl diff --git a/asm/octorokBoss.s b/asm/octorokBoss.s index 5b9f204d..59ca7773 100644 --- a/asm/octorokBoss.s +++ b/asm/octorokBoss.s @@ -177,10 +177,500 @@ _080352FA: thumb_func_start sub_080352FC sub_080352FC: @ 0x080352FC .ifdef JP - .incbin "baserom_jp.gba", 0x0352a0, 0x1fc @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + adds r0, #0x7c + ldrb r0, [r0] + movs r6, #1 + adds r4, r6, #0 + ands r4, r0 + cmp r4, #0 + bne _08035390 + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldr r1, [r1, #0xc] + adds r1, #0x7d + ldrb r2, [r1] + mov sb, r0 + cmp r2, #0 + beq _080352D0 + subs r0, r2, #1 + strb r0, [r1] +_080352D0: + ldr r3, _08035334 @ =gRoomControls + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r0, [r3, #6] + adds r1, r1, r0 + ldrh r0, [r5, #0x2e] + subs r1, r1, r0 + adds r1, #4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r0, [r3, #8] + ldrh r2, [r5, #0x32] + subs r0, r0, r2 + adds r0, #0x8c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, #8 + bhi _080352FAJP + cmp r0, #8 + bls _08035338 +_080352FAJP: + mov r1, sb + ldr r0, [r1] + strb r6, [r0, #2] + ldrh r0, [r3, #6] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, [r5, #0x2c] + subs r0, r0, r1 + ldrh r1, [r3, #8] + adds r1, #0x88 + lsls r1, r1, #0x10 + ldr r2, [r5, #0x30] + subs r1, r1, r2 + bl sub_080045DA + asrs r0, r0, #3 + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl ProcessMovement + adds r7, r5, #0 + adds r7, #0x79 + b _080353FA + .align 2, 0 +_08035334: .4byte gRoomControls +_08035338: + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _0803537C + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #0 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #1 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #2 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #3 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #4 + bl CreateObjectWithParent + strb r6, [r5, #0xb] +_0803537C: + mov r1, sb + ldr r0, [r1] + strb r4, [r0, #2] + adds r1, r5, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r7, r1, #0 + b _080353FA +_08035390: + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r1, [r1, #1] + subs r4, r1, #1 + mov sb, r0 + adds r7, r5, #0 + adds r7, #0x79 + cmp r4, #0 + beq _080353DC + mov ip, sb + movs r0, #1 + mov sl, r0 + lsls r0, r4, #2 + subs r6, r0, #4 + movs r1, #3 + mov r8, r1 +_080353B2: + mov r1, ip + ldr r0, [r1] + adds r0, #0xc + adds r0, r0, r6 + ldr r3, [r0] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + mov r0, sl + orrs r1, r0 + mov r0, r8 + ands r1, r0 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + subs r6, #4 + subs r4, #1 + cmp r4, #0 + bne _080353B2 +_080353DC: + ldr r1, _08035450 @ =gScreenTransition + ldr r0, [r1] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080353F4 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #6 + movs r3, #0 + bl CreateObjectWithParent +_080353F4: + ldrb r0, [r7] + subs r0, #1 + strb r0, [r7] +_080353FA: + ldrb r0, [r7] + cmp r0, #0 + bne _0803548C + movs r0, #2 + strb r0, [r5, #0xd] + adds r4, r5, #0 + adds r4, #0x7c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r0, r5, #0 + bl sub_080AE068 + ldrb r1, [r4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08035454 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x5f + strb r0, [r1] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r5, #0 + bl LoadFixedGFX + adds r0, r5, #0 + movs r1, #0xef + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xef + bl sub_08036F14 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #0xc] + movs r1, #1 + bl InitAnimationForceUpdate + b _08035480 + .align 2, 0 +_08035450: .4byte gScreenTransition +_08035454: + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x61 + strb r0, [r1] + ldr r1, _08035498 @ =0x00000109 + adds r0, r5, #0 + bl LoadFixedGFX + adds r0, r5, #0 + movs r1, #0xf0 + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xf3 + bl sub_08036F14 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #0xc] + movs r1, #2 + bl InitAnimationForceUpdate +_08035480: + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #8 + movs r3, #0 + bl CreateObjectWithParent +_0803548C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08035498: .4byte 0x00000109 + .else .ifdef EU - .incbin "baserom_eu.gba", 0x03527C, 0x1fc @TODO disassemble same as JP + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + adds r0, #0x7c + ldrb r0, [r0] + movs r6, #1 + adds r4, r6, #0 + ands r4, r0 + cmp r4, #0 + bne _0803536C + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldr r1, [r1, #0xc] + adds r1, #0x7d + ldrb r2, [r1] + mov sb, r0 + cmp r2, #0 + beq _080352AC + subs r0, r2, #1 + strb r0, [r1] +_080352AC: + ldr r3, _08035310 @ =gRoomControls + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r0, [r3, #6] + adds r1, r1, r0 + ldrh r0, [r5, #0x2e] + subs r1, r1, r0 + adds r1, #4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r0, [r3, #8] + ldrh r2, [r5, #0x32] + subs r0, r0, r2 + adds r0, #0x8c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, #8 + bhi _080352D6 + cmp r0, #8 + bls _08035314 +_080352D6: + mov r1, sb + ldr r0, [r1] + strb r6, [r0, #2] + ldrh r0, [r3, #6] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, [r5, #0x2c] + subs r0, r0, r1 + ldrh r1, [r3, #8] + adds r1, #0x88 + lsls r1, r1, #0x10 + ldr r2, [r5, #0x30] + subs r1, r1, r2 + bl sub_080045DA + asrs r0, r0, #3 + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl ProcessMovement + adds r7, r5, #0 + adds r7, #0x79 + b _080353D6 + .align 2, 0 +_08035310: .4byte gRoomControls +_08035314: + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _08035358 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #0 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #1 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #2 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #3 + bl CreateObjectWithParent + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #4 + bl CreateObjectWithParent + strb r6, [r5, #0xb] +_08035358: + mov r1, sb + ldr r0, [r1] + strb r4, [r0, #2] + adds r1, r5, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r7, r1, #0 + b _080353D6 +_0803536C: + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r1, [r1, #1] + subs r4, r1, #1 + mov sb, r0 + adds r7, r5, #0 + adds r7, #0x79 + cmp r4, #0 + beq _080353B8 + mov ip, sb + movs r0, #1 + mov sl, r0 + lsls r0, r4, #2 + subs r6, r0, #4 + movs r1, #3 + mov r8, r1 +_0803538E: + mov r1, ip + ldr r0, [r1] + adds r0, #0xc + adds r0, r0, r6 + ldr r3, [r0] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + mov r0, sl + orrs r1, r0 + mov r0, r8 + ands r1, r0 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + subs r6, #4 + subs r4, #1 + cmp r4, #0 + bne _0803538E +_080353B8: + ldr r1, _0803542C @ =gScreenTransition + ldr r0, [r1] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080353D0 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #6 + movs r3, #0 + bl CreateObjectWithParent +_080353D0: + ldrb r0, [r7] + subs r0, #1 + strb r0, [r7] +_080353D6: + ldrb r0, [r7] + cmp r0, #0 + bne _08035468 + movs r0, #2 + strb r0, [r5, #0xd] + adds r4, r5, #0 + adds r4, #0x7c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r0, r5, #0 + bl sub_080AE068 + ldrb r1, [r4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08035430 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x5f + strb r0, [r1] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r5, #0 + bl LoadFixedGFX + adds r0, r5, #0 + movs r1, #0xef + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xef + bl sub_08036F14 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #0xc] + movs r1, #1 + bl InitAnimationForceUpdate + b _0803545C + .align 2, 0 +_0803542C: .4byte gScreenTransition +_08035430: + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x61 + strb r0, [r1] + ldr r1, _08035474 @ =0x00000109 + adds r0, r5, #0 + bl LoadFixedGFX + adds r0, r5, #0 + movs r1, #0xf0 + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xf3 + bl sub_08036F14 + mov r1, sb + ldr r0, [r1] + ldr r0, [r0, #0xc] + movs r1, #2 + bl InitAnimationForceUpdate +_0803545C: + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #8 + movs r3, #0 + bl CreateObjectWithParent +_08035468: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08035474: .4byte 0x00000109 + .else push {r4, r5, r6, r7, lr} mov r7, sl diff --git a/asm/playerItem/playerItem15.s b/asm/playerItem/playerItem15.s index b2d26ba1..32384227 100644 --- a/asm/playerItem/playerItem15.s +++ b/asm/playerItem/playerItem15.s @@ -206,19 +206,448 @@ _080A3200: // DEMO only functions .ifdef DEMO -thumb_func_start HandleChooseDemoScreen + thumb_func_start HandleChooseDemoScreen HandleChooseDemoScreen: @ 0x080A2E18 -.incbin "baserom_demo.gba", 0x0a2e18, 0x28 @TODO disassemble + push {lr} + bl FlushSprites + ldr r1, _080A2E38 @ =demoFunctions + ldr r0, _080A2E3C @ =gMain + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A30AC + bl sub_080AD918 + pop {pc} + .align 2, 0 +_080A2E38: .4byte demoFunctions +_080A2E3C: .4byte gMain thumb_func_start sub_080A2E40 sub_080A2E40: @ 0x080A2E40 -.incbin "baserom_demo.gba", 0x0a2e40, 0x14c @TODO disassemble + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + movs r0, #1 + bl DispReset + bl InitSoundPlayingInfo + movs r0, #0xc0 + lsls r0, r0, #0x13 + mov sb, r0 + movs r1, #0x80 + bl MemClear + bl MessageInitialize + bl EraseAllEntities + bl sub_080ADD30 + movs r0, #0 + bl sub_0801CFA8 + ldr r0, _080A2F4C @ =gUnk_02032EC0 + movs r1, #0xed + lsls r1, r1, #2 + bl MemClear + ldr r0, _080A2F50 @ =gChooseFileState + movs r1, #0x30 + bl MemClear + ldr r0, _080A2F54 @ =gBG0Buffer + movs r1, #0x80 + lsls r1, r1, #4 + mov r8, r1 + bl MemClear + bl sub_08053320 + movs r0, #0xb5 + bl LoadPaletteGroup + movs r0, #0x56 + bl LoadGfxGroup + ldr r5, _080A2F58 @ =0x089FD1B4 + ldr r4, _080A2F5C @ =0x02017760 + movs r6, #0x80 + lsls r6, r6, #1 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl MemCopy + movs r0, #0x80 + lsls r0, r0, #2 + adds r4, r4, r0 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl MemCopy + ldr r4, _080A2F60 @ =0x089FD2F4 + movs r5, #0x80 + lsls r5, r5, #8 + adds r0, r4, #0 + mov r1, sb + adds r2, r5, #0 + bl MemCopy + ldr r1, _080A2F64 @ =0x06010000 + adds r0, r4, #0 + adds r2, r5, #0 + bl MemCopy + ldr r4, _080A2F68 @ =0x08A05751 + ldr r1, _080A2F6C @ =gBG1Buffer + adds r0, r4, #0 + mov r2, r8 + bl MemCopy + movs r1, #0x80 + lsls r1, r1, #4 + adds r4, r4, r1 + ldr r1, _080A2F70 @ =gBG2Buffer + adds r0, r4, #0 + mov r2, r8 + bl MemCopy + ldr r1, _080A2F74 @ =gScreen + movs r2, #0 + movs r0, #0xf8 + lsls r0, r0, #5 + strh r0, [r1] + ldr r0, _080A2F78 @ =0x00001C81 + strh r0, [r1, #0x14] + ldr r0, _080A2F7C @ =0x00001D82 + strh r0, [r1, #0x20] + adds r0, #0x89 + strh r0, [r1, #0x2c] + movs r4, #1 + movs r0, #1 + strh r0, [r1, #0x1a] + strh r0, [r1, #0x26] + strh r0, [r1, #0x32] + adds r3, r1, #0 + adds r3, #0x66 + ldr r0, _080A2F80 @ =0x00001044 + strh r0, [r3] + adds r1, #0x68 + ldr r0, _080A2F84 @ =0x00000B04 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #0x12 + strb r2, [r0, #4] + movs r0, #0 + movs r1, #0 + bl sub_080A3198 + ldr r0, _080A2F88 @ =gMain + strb r4, [r0, #3] + movs r0, #7 + bl SoundReq + movs r0, #4 + movs r1, #8 + bl DoFade + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A2F4C: .4byte gUnk_02032EC0 +_080A2F50: .4byte gChooseFileState +_080A2F54: .4byte gBG0Buffer +_080A2F58: .4byte gUnk_089FD1B4 +_080A2F5C: .4byte 0x02017760 +_080A2F60: .4byte gUnk_089FD2F4 +_080A2F64: .4byte 0x06010000 +_080A2F68: .4byte gUnk_08A05751 +_080A2F6C: .4byte gBG1Buffer +_080A2F70: .4byte gBG2Buffer +_080A2F74: .4byte gScreen +_080A2F78: .4byte 0x00001C81 +_080A2F7C: .4byte 0x00001D82 +_080A2F80: .4byte 0x00001044 +_080A2F84: .4byte 0x00000B04 +_080A2F88: .4byte gMain -thumb_func_start sub_080A2F8C + + thumb_func_start sub_080A2F8C sub_080A2F8C: @ 0x080A2F8C -.incbin "baserom_demo.gba", 0x0A2F8C, 0x44 @TODO disassemble + push {lr} + ldr r0, _080A2FA4 @ =gFadeControl + ldrb r0, [r0] + cmp r0, #0 + bne _080A2FCC + ldr r2, _080A2FA8 @ =gMain + ldrb r0, [r2, #4] + cmp r0, #0 + beq _080A2FAC + cmp r0, #1 + beq _080A2FC6 + b _080A2FCC + .align 2, 0 +_080A2FA4: .4byte gFadeControl +_080A2FA8: .4byte gMain +_080A2FAC: + movs r0, #1 + strb r0, [r2, #4] + movs r1, #0x80 + lsls r1, r1, #0x12 + strb r0, [r1, #5] + strb r0, [r1, #6] + movs r0, #2 + strb r0, [r2, #3] + movs r0, #5 + movs r1, #8 + bl DoFade + b _080A2FCC +_080A2FC6: + movs r0, #2 + bl InitScreen +_080A2FCC: + pop {pc} + .align 2, 0 -thumb_func_start sub_080A2FD0 + + thumb_func_start sub_080A2FD0 sub_080A2FD0: @ 0x080A2FD0 -.incbin "baserom_demo.gba", 0x0A2FD0, 0x210 @TODO disassemble + push {r4, r5, lr} + ldr r0, _080A2FF4 @ =gFadeControl + ldrb r0, [r0] + cmp r0, #0 + bne _080A30A8 + movs r5, #0 + ldr r0, _080A2FF8 @ =gInput + ldrh r0, [r0] + cmp r0, #0x10 + beq _080A3020 + cmp r0, #0x10 + bgt _080A2FFC + cmp r0, #1 + beq _080A303C + cmp r0, #8 + beq _080A303C + b _080A3052 + .align 2, 0 +_080A2FF4: .4byte gFadeControl +_080A2FF8: .4byte gInput +_080A2FFC: + cmp r0, #0x40 + beq _080A3052 + cmp r0, #0x40 + bgt _080A3052 + cmp r0, #0x20 + bne _080A3052 + ldr r1, _080A301C @ =gChooseFileState + ldrb r0, [r1] + cmp r0, #0 + bne _080A3052 + movs r5, #1 + rsbs r5, r5, #0 + adds r1, #0x20 + movs r0, #0xfc + b _080A302E + .align 2, 0 +_080A301C: .4byte gChooseFileState +_080A3020: + ldr r1, _080A3038 @ =gChooseFileState + ldrb r0, [r1] + cmp r0, #0 + bne _080A3052 + movs r5, #1 + adds r1, #0x20 + movs r0, #4 +_080A302E: + strb r0, [r1] + movs r0, #0x69 + bl SoundReq + b _080A3052 + .align 2, 0 +_080A3038: .4byte gChooseFileState +_080A303C: + ldr r0, _080A3090 @ =gChooseFileState + ldrb r2, [r0] + cmp r2, #0 + bne _080A3052 + ldr r1, _080A3094 @ =gMain + movs r0, #2 + strb r0, [r1, #3] + strb r2, [r1, #4] + movs r0, #0x6a + bl SoundReq +_080A3052: + movs r4, #0x80 + lsls r4, r4, #0x12 + ldrb r0, [r4, #4] + adds r1, r5, #3 + adds r0, r0, r1 + movs r1, #3 + bl __modsi3 + strb r0, [r4, #4] + ldr r5, _080A3090 @ =gChooseFileState + movs r0, #0x10 + ldrsh r2, [r5, r0] + ldrb r1, [r4, #4] + movs r0, #0x68 + muls r0, r1, r0 + cmp r0, r2 + beq _080A3098 + adds r0, r5, #0 + adds r0, #0x20 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r2, r0 + movs r1, #0x9c + lsls r1, r1, #1 + adds r0, r0, r1 + bl __modsi3 + strh r0, [r5, #0x10] + movs r0, #1 + b _080A309A + .align 2, 0 +_080A3090: .4byte gChooseFileState +_080A3094: .4byte gMain +_080A3098: + movs r0, #0 +_080A309A: + strb r0, [r5] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #4] + movs r1, #0 + bl sub_080A3198 +_080A30A8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A30AC +sub_080A30AC: @ 0x080A30AC + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r4, _080A3188 @ =gOamCmd + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #6 + strh r0, [r4, #4] + strh r1, [r4, #6] + movs r0, #0xc0 + lsls r0, r0, #4 + strh r0, [r4, #8] + movs r0, #0x40 + strh r0, [r4, #2] + ldr r0, _080A318C @ =gChooseFileState + movs r1, #0x10 + ldrsh r6, [r0, r1] + ldr r1, _080A3190 @ =0xFFFFFED8 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r0, _080A3194 @ =0x08A068BF + mov r8, r0 + ldr r1, [r0] + mov r5, r8 + subs r5, #0xc + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0xc0 + rsbs r1, r1, #0 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #4] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0x58 + rsbs r1, r1, #0 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #8] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r0, #0x10 + subs r0, r0, r6 + strh r0, [r4] + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r0, #0x78 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #4] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r0, #0xe0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #8] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0xa4 + lsls r1, r1, #1 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + mov r0, r8 + ldr r1, [r0] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0xd8 + lsls r1, r1, #1 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #4] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + movs r1, #0x86 + lsls r1, r1, #2 + adds r0, r1, #0 + subs r0, r0, r6 + strh r0, [r4] + ldr r1, [r5, #8] + adds r1, r1, r5 + adds r0, r4, #0 + bl sub_080ADA04 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A3188: .4byte gOamCmd +_080A318C: .4byte gChooseFileState +_080A3190: .4byte 0xFFFFFED8 +_080A3194: .4byte gUnk_08A068BF + + thumb_func_start sub_080A3198 +sub_080A3198: @ 0x080A3198 + push {r4, r5, lr} + ldr r1, _080A31D0 @ =0x08127CC8 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + ldr r1, _080A31D4 @ =gChooseFileState + ldrh r0, [r1, #0x12] + cmp r0, r4 + beq _080A31CC + strh r4, [r1, #0x12] + ldr r5, _080A31D8 @ =something2 + ldr r0, [r5] + subs r0, #0x1e + movs r1, #0xc0 + lsls r1, r1, #1 + bl MemClear + cmp r4, #0 + beq _080A31C6DEMO + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805F46C +_080A31C6DEMO: + ldr r1, _080A31DC @ =gScreen + movs r0, #1 + strh r0, [r1, #0xe] +_080A31CC: + pop {r4, r5, pc} + .align 2, 0 +_080A31D0: .4byte gUnk_08127CC8 +_080A31D4: .4byte gChooseFileState +_080A31D8: .4byte gUnk_08127C98 +_080A31DC: .4byte gScreen + .endif diff --git a/asm/playerItem/playerItem3.s b/asm/playerItem/playerItem3.s index 09952ea8..6c16303d 100644 --- a/asm/playerItem/playerItem3.s +++ b/asm/playerItem/playerItem3.s @@ -67,7 +67,107 @@ _0801B4C4: .4byte 0xFFFFE000 thumb_func_start sub_0801B4C8 sub_0801B4C8: @ 0x0801B4C8 .ifdef EU - .incbin "baserom_eu.gba", 0x01B4F4, 0xc8 @ TODO disassemble + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _0801B564 @ =gPlayerState + str r4, [r3, #0x2c] + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0801B568 @ =gUnk_081271CC + str r0, [r4, #0x48] + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + ldr r5, _0801B56C @ =gPlayerEntity + adds r0, r5, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x58 + movs r0, #0xb + strb r0, [r1] + str r5, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x86 + strh r2, [r0] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801B550 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + movs r1, #1 + bics r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0801B550: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xc + bne _0801B570 + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x3c + b _0801B578 + .align 2, 0 +_0801B564: .4byte gPlayerState +_0801B568: .4byte gUnk_081271CC +_0801B56C: .4byte gPlayerEntity +_0801B570: + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x1e +_0801B578: + strb r0, [r4, #0xe] + ldrb r1, [r3, #0xd] + movs r0, #0xd + ldrsb r0, [r3, r0] + cmp r0, #0 + blt _0801B588 + strb r1, [r4, #0x15] + b _0801B58E +_0801B588: + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_0801B58E: + ldrb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x83 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _0801B5A4 + movs r0, #1 + strb r0, [r4, #0xb] +_0801B5A4: + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + bl sub_0801B584 + pop {r4, r5, pc} .else push {r4, r5, lr} adds r4, r0, #0 diff --git a/asm/sub_0807CA18.s b/asm/sub_0807CA18.s index 34669d14..8db5f175 100644 --- a/asm/sub_0807CA18.s +++ b/asm/sub_0807CA18.s @@ -107,13 +107,13 @@ _0807CA04: str r0, [r2, #0x00] movs r0, #0x01 pop {r4, r5, r6, pc} -_0807CA38: .4byte 0x02002A40 @TODO ptr -_0807CA3C: .4byte 0x0811DFF4 @TODO ptr -_0807CA40: .4byte 0x0811EF10 @TODO ptr +_0807CA38: .4byte gSave +_0807CA3C: .4byte gUnk_0811E470 +_0807CA40: .4byte demoPointers _0807CA44: .4byte 0x000004B4 _0807CA48: .4byte 0xFFFFD8F1 -_0807CA4C: .4byte 0x02000010 @TODO ptr -_0807CA50: .4byte 0x0811DFF9 @TODO ptr +_0807CA4C: .4byte gUnk_02000010 +_0807CA50: .4byte demoUnknown1 .else thumb_func_start sub_0807CA18 sub_0807CA18: @ 0x0807CA18 diff --git a/asm/vaatiArm.s b/asm/vaatiArm.s index 39a63f98..e0bb1f35 100644 --- a/asm/vaatiArm.s +++ b/asm/vaatiArm.s @@ -3165,10 +3165,42 @@ _08043C8C: thumb_func_start sub_08043C98 sub_08043C98: @ 0x08043C98 .ifdef JP - .incbin "baserom_jp.gba", 0x043BB0, 0x20 @TODO disassemble + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x64] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + beq _08043BC4JP + movs r0, #0 + b _08043BCC +_08043BC4JP: + adds r0, r1, #0 + bl sub_08043D08 + movs r0, #1 +_08043BCC: + pop {pc} + .align 2, 0 .else .ifdef EU - .incbin "baserom_eu.gba", 0x043AC4, 0x20 @TODO same as JP + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x64] + ldr r0, [r0, #0xc] + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + beq _08043AD8 + movs r0, #0 + b _08043AE0 +_08043AD8: + adds r0, r1, #0 + bl sub_08043D08 + movs r0, #1 +_08043AE0: + pop {pc} + .align 2, 0 .else push {lr} adds r3, r0, #0 diff --git a/asm/vaatiProjectile.s b/asm/vaatiProjectile.s index 119c72e3..2b7617e5 100644 --- a/asm/vaatiProjectile.s +++ b/asm/vaatiProjectile.s @@ -52,7 +52,57 @@ _0803E0D8: .4byte gUnk_080D0660 thumb_func_start sub_0803E0DC sub_0803E0DC: @ 0x0803E0DC .ifdef EU - .incbin "baserom_eu.gba", 0x03E038, 0x68 @TODO disassemble + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _0803E08E + movs r0, #5 + strb r0, [r5, #0xc] + ldrb r2, [r5, #0x10] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r5, #0x10] + adds r3, r5, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldr r3, _0803E098 @ =gPlayerEntity + ldrb r0, [r3, #0x10] + ands r1, r0 + strb r1, [r3, #0x10] + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r4, [r3, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r3, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r3, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x19] + adds r0, r5, #0 + bl sub_0803E444 +_0803E08E: + ldr r1, _0803E09C @ =gUnk_080D0648 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_0803E098: .4byte gPlayerEntity +_0803E09C: .4byte gUnk_080D0648 + .else push {r4, r5, r6, lr} adds r5, r0, #0 @@ -560,7 +610,33 @@ _0803E49E: thumb_func_start sub_0803E4A0 sub_0803E4A0: @ 0x0803E4A0 .ifdef EU - .incbin "baserom_eu.gba", 0x03e3b8, 0x30 @TODO disassemble + push {lr} + adds r1, r0, #0 + ldr r0, _0803E3CCEU @ =gScreenTransition + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _0803E3D0EU + movs r0, #1 + b _0803E3E6 + .align 2, 0 +_0803E3CCEU: .4byte gScreenTransition +_0803E3D0EU: + ldr r0, [r1, #0x50] + cmp r0, #0 + bne _0803E3DA + movs r0, #0 + b _0803E3E6 +_0803E3DA: + movs r1, #0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _0803E3E4EU + movs r1, #1 +_0803E3E4EU: + adds r0, r1, #0 +_0803E3E6: + pop {pc} .else push {lr} adds r1, r0, #0 diff --git a/asm/vaatiWrath.s b/asm/vaatiWrath.s index e31fe4b3..5fb19bab 100644 --- a/asm/vaatiWrath.s +++ b/asm/vaatiWrath.s @@ -65,10 +65,28 @@ _0804139C: .4byte gUnk_080D0E1C thumb_func_start sub_080413A0 sub_080413A0: @ 0x080413A0 .ifdef JP - .incbin "baserom_jp.gba", 0x041344, 0x18 @TODO disassemble + push {lr} + ldr r2, _08041358 @ =gUnk_080D0E2C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08041358: .4byte gUnk_080D0E2C .else .ifdef EU - .incbin "baserom_eu.gba", 0x041274, 0x18 @TODO same as JP + push {lr} + ldr r2, _08041288 @ =gUnk_080D0E2C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08041288: .4byte gUnk_080D0E2C .else push {r4, lr} adds r4, r0, #0 @@ -1126,7 +1144,96 @@ _08041BE4: .4byte gUnk_080D0E68 thumb_func_start sub_08041BE8 sub_08041BE8: @ 0x08041BE8 .ifdef EU - .incbin "baserom_eu.gba", 0x041AB4, 0xCA @TODO disassemble + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + bl sub_08079F8C + cmp r0, #0 + beq _08041B72 + movs r5, #0 + movs r0, #1 + strb r0, [r6, #0xd] + movs r0, #0x78 + strb r0, [r6, #0xe] + ldrb r1, [r6, #0x11] + movs r4, #0x10 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #3 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r6, #0x11] + adds r0, r6, #0 + movs r1, #0xa + bl InitAnimationForceUpdate + ldr r0, [r6, #0x64] + ldr r7, [r0, #4] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl DeleteEntity + ldr r0, [r6, #0x64] + str r5, [r0, #4] + ldr r7, [r0, #8] + ldrb r0, [r7, #0x11] + ands r4, r0 + mov r0, r8 + orrs r4, r0 + strb r4, [r7, #0x11] + adds r0, r7, #0 + bl sub_080AE068 + ldr r1, _08041B78 @ =0x000001F5 + adds r0, r7, #0 + bl LoadFixedGFX + ldr r1, _08041B7C @ =0x0000016B + adds r0, r7, #0 + bl sub_0801D2B4 + adds r0, r7, #0 + movs r1, #0x1a + bl InitializeAnimation + ldr r0, [r6, #0x64] + ldr r7, [r0, #0xc] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl DeleteEntity + ldr r0, [r6, #0x64] + str r5, [r0, #0xc] + ldr r7, [r0, #0x1c] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl DeleteEntity + ldr r0, [r6, #0x64] + str r5, [r0, #0x1c] + ldr r7, [r0, #0x20] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl DeleteEntity + ldr r0, [r6, #0x64] + str r5, [r0, #0x20] + ldr r7, [r0, #0x24] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl DeleteEntity + ldr r0, [r6, #0x64] + str r5, [r0, #0x24] + ldr r7, [r0, #0x28] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl DeleteEntity + ldr r0, [r6, #0x64] + str r5, [r0, #0x28] + movs r0, #2 + bl sub_08078A90 +_08041B72: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08041B78: .4byte 0x000001F5 +_08041B7C: .4byte 0x0000016B + .else push {r4, r5, r6, r7, lr} mov r7, r8 diff --git a/asm/waterfallOpening.s b/asm/waterfallOpening.s index b2e767f9..b75c7cb1 100644 --- a/asm/waterfallOpening.s +++ b/asm/waterfallOpening.s @@ -10,7 +10,164 @@ thumb_func_start WaterfallOpening WaterfallOpening: @ 0x0809FF68 .ifdef EU - .incbin "baserom_eu.gba", 0x09F7C8, 0x000013C @TODO disassemble + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _0809F802 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0809F824 @ =gUnk_08124868 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x68 + movs r0, #0x78 + strh r0, [r1] +_0809F802: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0809F8BC + movs r0, #0xff + bl CheckRoomFlag + cmp r0, #0 + beq _0809F8FE + ldrb r2, [r4, #0xd] + cmp r2, #1 + beq _0809F85A + cmp r2, #1 + bgt _0809F828 + cmp r2, #0 + beq _0809F82E + b _0809F8AE + .align 2, 0 +_0809F824: .4byte gUnk_08124868 +_0809F828: + cmp r2, #2 + beq _0809F88C + b _0809F8AE +_0809F82E: + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809F8AE + movs r0, #0x20 + strh r0, [r1] + movs r1, #1 + strb r1, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xf] + strb r1, [r4, #0xd] + strb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080AE068 + movs r1, #0xc6 + lsls r1, r1, #1 + b _0809F87E +_0809F85A: + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809F8AE + movs r0, #0x2d + strh r0, [r1] + strb r2, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xd] + strb r0, [r4, #0xa] + adds r0, r4, #0 + bl sub_080AE068 + ldr r1, _0809F888 @ =0x0000018D +_0809F87E: + adds r0, r4, #0 + bl LoadFixedGFX + b _0809F8AE + .align 2, 0 +_0809F888: .4byte 0x0000018D +_0809F88C: + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809F8AE + movs r0, #3 + strb r0, [r4, #0xd] + ldr r1, _0809F8B8 @ =gChooseFileState + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #0x73 + bl SoundReq +_0809F8AE: + adds r0, r4, #0 + bl sub_080A00B0 + b _0809F8FE + .align 2, 0 +_0809F8B8: .4byte gChooseFileState +_0809F8BC: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0809F8F8 + cmp r0, #2 + bne _0809F8F8 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0809F8F8 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0809F900 @ =gRoomControls + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0x39 + movs r2, #1 + bl SetTileType +_0809F8F8: + adds r0, r4, #0 + bl sub_080A00B0 +_0809F8FE: + pop {r4, r5, pc} + .align 2, 0 +_0809F900: .4byte gRoomControls + .else push {r4, r5, lr} adds r4, r0, #0 diff --git a/asm/windTribeTeleporter.s b/asm/windTribeTeleporter.s index 9349cf93..6a9d2e91 100644 --- a/asm/windTribeTeleporter.s +++ b/asm/windTribeTeleporter.s @@ -116,10 +116,231 @@ _080A0FFE: thumb_func_start sub_080A1000 sub_080A1000: @ 0x080A1000 .ifdef JP - .incbin "baserom_jp.gba", 0x0a0dc8, 0xd0 @TODO disassemble + push {lr} + adds r1, r0, #0 + ldrb r2, [r1, #0xd] + cmp r2, #1 + beq _080A0DF2 + cmp r2, #1 + bgt _080A0DDC + cmp r2, #0 + beq _080A0DE6 + b _080A0E50 +_080A0DDC: + cmp r2, #2 + beq _080A0E00 + cmp r2, #3 + beq _080A0E2C + b _080A0E50 +_080A0DE6: + movs r0, #0x1e + strb r0, [r1, #0xe] + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + b _080A0E8C +_080A0DF2: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0E8C + b _080A0E38 +_080A0E00: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0E1E + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + movs r0, #0x1e + strb r0, [r1, #0xe] + adds r0, #0xf5 + bl SoundReq + b _080A0E8C +_080A0E1E: + ldr r0, _080A0E28 @ =0x030010A0 + ldr r0, [r0] + movs r1, #7 + b _080A0E7A + .align 2, 0 +_080A0E28: .4byte 0x030010A0 +_080A0E2C: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0E44 +_080A0E38: + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + movs r0, #0x1e + strb r0, [r1, #0xe] + b _080A0E8C +_080A0E44: + ldr r0, _080A0E4C @ =0x030010A0 + ldr r0, [r0] + ands r0, r2 + b _080A0E7C + .align 2, 0 +_080A0E4C: .4byte 0x030010A0 +_080A0E50: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0E74 + ldrb r1, [r1, #0xb] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A0E70 @ =0x0813AA18 + adds r0, r0, r1 + bl DoExitTransition + b _080A0E8C + .align 2, 0 +_080A0E70: .4byte 0x0813AA18 +_080A0E74: + ldr r0, _080A0E90 @ =0x030010A0 + ldr r0, [r0] + movs r1, #1 +_080A0E7A: + ands r0, r1 +_080A0E7C: + cmp r0, #0 + bne _080A0E8C + ldr r0, _080A0E94 @ =0x03001160 + ldrb r1, [r0, #0x14] + adds r1, #2 + movs r2, #6 + ands r1, r2 + strb r1, [r0, #0x14] +_080A0E8C: + pop {pc} + .align 2, 0 +_080A0E90: .4byte 0x030010A0 +_080A0E94: .4byte 0x03001160 .else .ifdef EU - .incbin "baserom_eu.gba", 0x0A084C, 0xd0 @TODO same as JP + push {lr} + adds r1, r0, #0 + ldrb r2, [r1, #0xd] + cmp r2, #1 + beq _080A0876 + cmp r2, #1 + bgt _080A0860 + cmp r2, #0 + beq _080A086A + b _080A08D4 +_080A0860: + cmp r2, #2 + beq _080A0884 + cmp r2, #3 + beq _080A08B0 + b _080A08D4 +_080A086A: + movs r0, #0x1e + strb r0, [r1, #0xe] + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + b _080A0910 +_080A0876: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0910 + b _080A08BC +_080A0884: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A08A2 + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + movs r0, #0x1e + strb r0, [r1, #0xe] + adds r0, #0xf5 + bl SoundReq + b _080A0910 +_080A08A2: + ldr r0, _080A08AC @ =gScreenTransition + ldr r0, [r0] + movs r1, #7 + b _080A08FE + .align 2, 0 +_080A08AC: .4byte gScreenTransition +_080A08B0: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A08C8 +_080A08BC: + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + movs r0, #0x1e + strb r0, [r1, #0xe] + b _080A0910 +_080A08C8: + ldr r0, _080A08D0 @ =gScreenTransition + ldr r0, [r0] + ands r0, r2 + b _080A0900 + .align 2, 0 +_080A08D0: .4byte gScreenTransition +_080A08D4: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A08F8 + ldrb r1, [r1, #0xb] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A08F4 @ =gUnk_0813ADEC + adds r0, r0, r1 + bl DoExitTransition + b _080A0910 + .align 2, 0 +_080A08F4: .4byte gUnk_0813ADEC +_080A08F8: + ldr r0, _080A0914 @ =gScreenTransition + ldr r0, [r0] + movs r1, #1 +_080A08FE: + ands r0, r1 +_080A0900: + cmp r0, #0 + bne _080A0910 + ldr r0, _080A0918 @ =gPlayerEntity + ldrb r1, [r0, #0x14] + adds r1, #2 + movs r2, #6 + ands r1, r2 + strb r1, [r0, #0x14] +_080A0910: + pop {pc} + .align 2, 0 +_080A0914: .4byte gScreenTransition +_080A0918: .4byte gPlayerEntity + .else push {r4, lr} adds r4, r0, #0 diff --git a/data/const/playerItem/playerItem15.s b/data/const/playerItem/playerItem15.s index c962fa97..66a8ff96 100644 --- a/data/const/playerItem/playerItem15.s +++ b/data/const/playerItem/playerItem15.s @@ -13,13 +13,15 @@ gUnk_08127278:: @ 08127278 .ifdef DEMO @ TODO choose demo screen -something: +demoFunctions:: .4byte sub_080A2E40 .4byte sub_080A2FD0 .4byte sub_080A2F8C -something2:: -.incbin "baserom_demo.gba", 0x127c98, 0x38 +gUnk_08127C98:: +.incbin "baserom_demo.gba", 0x127c98, 0x30 +gUnk_08127CC8:: +.incbin "baserom_demo.gba", 0x127CC8, 0x8 .endif diff --git a/data/data_08108E6C.s b/data/data_08108E6C.s index 625a6cea..ef668635 100644 --- a/data/data_08108E6C.s +++ b/data/data_08108E6C.s @@ -420,7 +420,7 @@ gUnk_08109230:: @ 08109230 gUnk_08109244:: @ 08109244 .incbin "baserom.gba", 0x109244, 0x0000004 -gUnk_08109248:: @ 08109248 TODO might be a pointer array? +gUnk_08109248:: @ 08109248 .4byte gUnk_08692F60 .4byte gUnk_08692F60 .4byte gUnk_086978E0 diff --git a/data/data_0812AA88.s b/data/data_0812AA88.s index bc3cc62a..88fb300c 100644 --- a/data/data_0812AA88.s +++ b/data/data_0812AA88.s @@ -2237,7 +2237,6 @@ ENUM_12AED0_LV1_CLEAR_MES: .4byte gUnk_0812AC84 .endif -.ifndef JP gUnk_0812B604:: @ 0812B604 .incbin "baserom.gba", 0x12B604, 0x0000008 @@ -2249,12 +2248,6 @@ gUnk_0812B614:: @ 0812B614 gUnk_0812B61C:: @ 0812B61C .incbin "baserom.gba", 0x12B61C, 0x0000008 -.else -gUnk_0812B61C:: -.space 0x3c -.endif - - gUnk_0812B624:: @ 0812B624 diff --git a/data/map_headers.s b/data/map_headers.s index 5cd95b2e..914e306f 100755 --- a/data/map_headers.s +++ b/data/map_headers.s @@ -3955,8 +3955,6 @@ gAreaRoomMap_TempleOfDroplets_31:: @ 08105EAC map_bottom 0x20A614+0x154, 0x1BA, 1 map_top 0x20A64C+0x1CC, 0x1BA, 1, 1 .else -@nocheckin map_bottom 0x20A614, 0x186, 1 - @nocheckin map_top 0x20A64C, 0x186, 1, 1 map_bottom 0x20A784, 0x1BA, 1 map_top 0x20A834, 0x1BA, 1, 1 .endif diff --git a/data/sounds.s b/data/sounds.s index 4833d395..670a54b2 100644 --- a/data/sounds.s +++ b/data/sounds.s @@ -3840,7 +3840,32 @@ bgmDarkHyruleCastle:: @ 08DD6BFC bgmSecretCastleEntrance_track0:: @ 08DD6C20 .ifdef EU - .incbin "baserom_eu.gba", 0xEE2278, 0x0000073 @TODO pointers inside + .incbin "baserom_eu.gba", 0xEE2278, 0x000000B +gUnk_08EE2283:: + .incbin "baserom_eu.gba", 0xEE2283, 0x000000D +gUnk_08EE2290:: + .incbin "baserom_eu.gba", 0xEE2290, 0x000000F + .4byte gUnk_08EE2290 + .byte 0xB3 + .4byte gUnk_08EE2290 + .byte 0xB3 + .4byte gUnk_08EE2290 + .byte 0xB3 + .4byte gUnk_08EE2290 + .incbin "baserom_eu.gba", 0xEE22B2, 0x0000010 + .4byte gUnk_08EE2290 +gUnk_08EE22C6:: + .incbin "baserom_eu.gba", 0xEE22C6, 0x000000F + .4byte gUnk_08EE22C6 + .byte 0xB3 + .4byte gUnk_08EE22C6 + .byte 0xB3 + .4byte gUnk_08EE22C6 + .byte 0xBB + .byte 0x3C + .byte 0xB2 + .4byte gUnk_08EE2283 + .byte 0xB1 .else .incbin "baserom.gba", 0xDD6C20, 0x000000B gUnk_08DD6C2B:: @ 08DD6C2B @@ -3865,7 +3890,32 @@ gUnk_08DD6C85:: @ 08DD6C85 bgmSecretCastleEntrance_track1:: @ 08DD6CB6 .ifdef EU - .incbin "baserom_eu.gba", 0xEE22EB, 0x0000063 @TODO pointers inside + .incbin "baserom_eu.gba", 0xEE22EB, 0x0000007 +gUnk_08EE22F2:: @ 08EE22F2 + .incbin "baserom_eu.gba", 0xEE22F2, 0x000000D +gUnk_08EE22FF:: @ 08EE22FF + .incbin "baserom_eu.gba", 0xEE22FF, 0x000000F + .4byte gUnk_08EE22FF + .incbin "baserom_eu.gba", 0xEE2312, 0x0000001 + .4byte gUnk_08EE22FF + .incbin "baserom_eu.gba", 0xEE2317, 0x0000001 + .4byte gUnk_08EE22FF + .incbin "baserom_eu.gba", 0xEE231C, 0x0000001 + .4byte gUnk_08EE22FF + .incbin "baserom_eu.gba", 0xEE2321, 0x0000001 + .4byte gUnk_08EE22FF + .incbin "baserom_eu.gba", 0xEE2326, 0x0000001 + .4byte gUnk_08EE22FF +gUnk_08EE232B:: @ 08EE232B + .incbin "baserom_eu.gba", 0xEE232B, 0x000000F + .4byte gUnk_08EE232B + .incbin "baserom_eu.gba", 0xEE233E, 0x0000001 + .4byte gUnk_08EE232B + .incbin "baserom_eu.gba", 0xEE2343, 0x0000001 + .4byte gUnk_08EE232B + .incbin "baserom_eu.gba", 0xEE2348, 0x0000001 + .4byte gUnk_08EE22F2 + .incbin "baserom_eu.gba", 0xEE234D, 0x0000001 .else .incbin "baserom.gba", 0xDD6CB6, 0x0000007 gUnk_08DD6CBD:: @ 08DD6CBD @@ -3980,7 +4030,11 @@ gUnk_08DD6ECD:: @ 08DD6ECD bgmSecretCastleEntrance_track7:: @ 08DD6F8A .ifdef EU - .incbin "baserom_eu.gba", 0xEE259D, 0x000003B @TODO pointers inside + .incbin "baserom_eu.gba", 0xEE259D, 0x0000003 +gUnk_08EE25A0:: @ 08EE25A0 + .incbin "baserom_eu.gba", 0xEE25A0, 0x0000030 + .4byte gUnk_08EE25A0 + .incbin "baserom_eu.gba", 0xEE25D4, 0x0000004 .else .incbin "baserom.gba", 0xDD6F8A, 0x0000003 gUnk_08DD6F8D:: @ 08DD6F8D @@ -6058,7 +6112,11 @@ bgmDiggingCave:: @ 08DDC394 bgmSwiftbladeDojo_track0:: @ 08DDC3B4 .ifdef EU - .incbin "baserom_eu.gba", 0xEE79C8, 0x000002B @TODO pointers inside + .incbin "baserom_eu.gba", 0xEE79C8, 0x000000B +gUnk_08EE79D3:: @ 08EE79D3 + .incbin "baserom_eu.gba", 0xEE79D3, 0x000001B + .4byte gUnk_08EE79D3 + .incbin "baserom_eu.gba", 0xEE79F2, 0x0000001 .else .incbin "baserom.gba", 0xDDC3B4, 0x000000B gUnk_08DDC3BF:: @ 08DDC3BF @@ -6068,7 +6126,12 @@ gUnk_08DDC3BF:: @ 08DDC3BF .endif .ifdef EU - .incbin "baserom_eu.gba", 0xEE79F3, 0x000009D @TODO pointers inside +gUnk_08EE79F3:: @ 08EE79F3 + .incbin "baserom_eu.gba", 0xEE79F3, 0x0000007 +gUnk_08EE79FA:: @ 08EE79FA + .incbin "baserom_eu.gba", 0xEE79FA, 0x000008E + .4byte gUnk_08EE79FA + .incbin "baserom_eu.gba", 0xEE7A8C, 0x0000004 .else bgmSwiftbladeDojo_track1:: @ 08DDC3E2 .incbin "baserom.gba", 0xDDC3E2, 0x0000007 @@ -6092,7 +6155,10 @@ gUnk_08DDC423:: @ 08DDC423 bgmSwiftbladeDojo:: @ 08DDC4B4 .ifdef EU - .incbin "baserom_eu.gba",0xEE7A90, 0x0000010 @TODO pointers inside + .incbin "baserom_eu.gba", 0xEE7A90, 0x0000004 + .4byte gUnk_08A0CF44 + .4byte bgmSwiftbladeDojo_track0 + .4byte gUnk_08EE79F3 .else sound_header 4 0 0 0x9e gUnk_08A0CF44 bgmSwiftbladeDojo_track0 bgmSwiftbladeDojo_track1 bgmSwiftbladeDojo_track2 bgmSwiftbladeDojo_track3 .endif @@ -7142,7 +7208,20 @@ bgmWindRuins:: @ 08DDEC38 sound_header 7 0 0 0xa8 gUnk_08A0F014 bgmWindRuins_track0 bgmWindRuins_track1 bgmWindRuins_track2 bgmWindRuins_track3 bgmWindRuins_track4 bgmWindRuins_track5 bgmWindRuins_track6 .ifdef EU - .incbin "baserom_eu.gba", 0xEEA230, 0x00000DC @TODO pointers inside +gUnk_08EEA230:: @ 08EEA230 + .incbin "baserom_eu.gba", 0xEEA230, 0x000000E +gUnk_08EEA23E:: @ 08EEA23E + .incbin "baserom_eu.gba", 0xEEA23E, 0x000001B + .4byte gUnk_08EEA23E + .incbin "baserom_eu.gba", 0xEEA25D, 0x0000001 +gUnk_08EEA25E:: @ 08EEA25E + .incbin "baserom_eu.gba", 0xEEA25E, 0x000000B +gUnk_08EEA269:: @ 08EEA269 + .incbin "baserom_eu.gba", 0xEEA269, 0x0000010 +gUnk_08EEA279:: @ 08EEA279 + .incbin "baserom_eu.gba", 0xEEA279, 0x000008E + .4byte gUnk_08EEA279 + .incbin "baserom_eu.gba", 0xEEA30B, 0x0000001 .else bgmLearnScroll_track0:: @ 08DDEC5C .incbin "baserom.gba", 0xDDEC5C, 0x000000C @@ -7174,7 +7253,11 @@ gUnk_08DDECDA:: @ 08DDECDA bgmLearnScroll:: @ 08DDED6C .ifdef EU - .incbin "baserom_eu.gba", 0xEEA30C, 0x0000014 @TODO pointers inside + .incbin "baserom_eu.gba", 0xEEA30C, 0x0000004 + .4byte gUnk_08A0CF44 + .4byte gUnk_08EEA230 + .4byte gUnk_08EEA25E + .4byte gUnk_08EEA269 .else sound_header 5 0 0 0x9e gUnk_08A0CF44 bgmLearnScroll_track0 bgmLearnScroll_track1 bgmLearnScroll_track2 bgmLearnScroll_track3 bgmLearnScroll_track4 .endif diff --git a/data/sprite_table.s b/data/sprite_table.s index 1b549c3d..0b04dede 100644 --- a/data/sprite_table.s +++ b/data/sprite_table.s @@ -15,5 +15,13 @@ gUnk_089FB780:: @ 089FB780 .endif @ More sprites in demo .ifdef DEMO - .incbin "baserom_demo.gba", 0x9FD0F4, 0x984c + .incbin "baserom_demo.gba", 0x9FD0F4, 0xC0 +gUnk_089FD1B4:: + .incbin "baserom_demo.gba", 0x9FD1B4, 0x140 +gUnk_089FD2F4:: + .incbin "baserom_demo.gba", 0x9FD2F4, 0x845D +gUnk_08A05751:: + .incbin "baserom_demo.gba", 0xA05751, 0x116e +gUnk_08A068BF:: + .incbin "baserom_demo.gba", 0xA068BF, 0x81 .endif diff --git a/linker.ld b/linker.ld index 7de90bc8..c4dbb416 100644 --- a/linker.ld +++ b/linker.ld @@ -32,6 +32,7 @@ SECTIONS { . = 0x00001A40; gBG3Buffer = .; . = 0x00001B40; gUnk_02001B40 = .; . = 0x00002A40; gSave = .; + . = 0x00002A40; gUnk_02002A40 = .; . = 0x00002AA0; gUnk_02002AA0 = .; . = 0x00002AC0; gUnk_02002AC0 = .; . = 0x00002AC8; gUnk_02002AC8 = .; @@ -192,6 +193,7 @@ SECTIONS { . = 0x00001010; gOamCmd = .; . = 0x00001020; gUnk_03001020 = .; . = 0x000010A0; gScreenTransition = .; + . = 0x000010A0; gUnk_030010A0 = .; . = 0x000010AC; gUnk_030010AC = .; . = 0x000010EC; gUnk_030010EC = .; . = 0x0000110C; gUnk_0300110C = .; @@ -283,10 +285,14 @@ SECTIONS { #ifdef EU . = 0x000065AC; gUnk_03006580 = .; . = 0x000065C8; gUnk_0300659C = .; + . = 0x0000689C; gUnk_0300689C = .; + . = 0x000068F0; gUnk_030068F0 = .; + . = 0x00006954; gUnk_03006954 = .; . = 0x000069AC; gUnk_030067E4 = .; . = 0x00006A94; gUnk_030068CC = .; . = 0x00006B14; gUnk_0300694C = .; . = 0x00006B24; gUnk_0300695C = .; + . = 0x00006C14; gUnk_03006C14 = .; #else . = 0x00006580; gUnk_03006580 = .; . = 0x0000659C; gUnk_0300659C = .; diff --git a/src/arm_proxy.c b/src/arm_proxy.c index b3b71deb..e1f13c74 100644 --- a/src/arm_proxy.c +++ b/src/arm_proxy.c @@ -158,9 +158,7 @@ void PlayerUpdate(Entity* this) { // Responsible for some life things like low health beep and initiating the death sequence #ifdef EU -NAKED void HandlePlayerLife(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x017038, 0x1f0"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/HandlePlayerLife.inc", void HandlePlayerLife(Entity* this)); #else void HandlePlayerLife(Entity* this) { u32 temp; diff --git a/src/code_0805436C.c b/src/code_0805436C.c index 4793e016..5f8a1821 100644 --- a/src/code_0805436C.c +++ b/src/code_0805436C.c @@ -173,9 +173,7 @@ void sub_08054570(void) { } #ifdef EU -NAKED u32 sub_0805457C(u32 arg0, u32 arg1) { - asm(".incbin \"baserom_eu.gba\", 0x054114, 0x1c0"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0805457C.inc", u32 sub_0805457C(u32 arg0, u32 arg1)); #else ASM_FUNC("asm/non_matching/sub_0805457C.inc", u32 sub_0805457C(u32 arg0, u32 arg1)); #endif diff --git a/src/enemy/bombPeahat.c b/src/enemy/bombPeahat.c index 4e7bbdad..e096feda 100644 --- a/src/enemy/bombPeahat.c +++ b/src/enemy/bombPeahat.c @@ -189,9 +189,7 @@ void sub_0802AA40(Entity* this) { } #ifdef EU -NAKED void sub_0802AAC0(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x02aa94, 0xc8"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0802AAC0.inc", void sub_0802AAC0(Entity* this)) #else void sub_0802AAC0(Entity* this) { sub_0802AC40(this); @@ -223,9 +221,7 @@ void sub_0802AAC0(Entity* this) { #endif #ifdef EU -NAKED void sub_0802AB40(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x02ab5c, 0x60"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0802AB40.inc", void sub_0802AB40(Entity* this)); #else void sub_0802AB40(Entity* this) { sub_0802AC40(this); @@ -280,9 +276,7 @@ void sub_0802AC08(Entity* this) { } #ifdef EU -NAKED void sub_0802AC40(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x02ABF4, 0x54"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0802AC40.inc", void sub_0802AC40(Entity* this)) #else void sub_0802AC40(Entity* this) { GetNextFrame(this); @@ -364,9 +358,7 @@ void sub_0802AD54(Entity* this) { #ifdef EU // TODO regalloc in EU version -NAKED void sub_0802ADDC(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x02AD48, 0x000004C"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0802ADDC.inc", void sub_0802ADDC(Entity* this)) #else void sub_0802ADDC(Entity* this) { Entity* ent = CreateEnemy(BOMB_PEAHAT, this->type + 2); @@ -400,9 +392,7 @@ void sub_0802AE24(Entity* this) { } #ifdef EU -NAKED void sub_0802AE68(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x02add8, 0x94"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0802AE68.inc", void sub_0802AE68(Entity* this)) #else void sub_0802AE68(Entity* this) { Entity* ent = sub_0802B250(this); @@ -579,9 +569,7 @@ void sub_0802B1A0(Entity* this) { } #ifdef EU -NAKED void sub_0802B1BC(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x02b16c, 0x84"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0802B1BC.inc", void sub_0802B1BC(Entity* this)) #else void sub_0802B1BC(Entity* this) { Entity* ent; diff --git a/src/enemy/chuchu.c b/src/enemy/chuchu.c index 7ca16f40..7c891a9f 100644 --- a/src/enemy/chuchu.c +++ b/src/enemy/chuchu.c @@ -333,9 +333,7 @@ void sub_0801F3AC(Entity* this) { } #ifdef EU -NAKED void sub_0801F428(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x01F428, 0x60"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0801F428.inc", void sub_0801F428(Entity* this)) #else void sub_0801F428(Entity* this) { sub_0804A720(this); diff --git a/src/manager/manager4.c b/src/manager/manager4.c index 99b61179..2fb5fd49 100644 --- a/src/manager/manager4.c +++ b/src/manager/manager4.c @@ -97,9 +97,7 @@ END_NONMATCH extern void sub_08080930(); #ifdef EU -NAKED void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { - asm(".incbin \"baserom_eu.gba\", 0x057580, 0x0000078"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_08057A18.inc", void sub_08057A18(Manager* this, DiggingCaveEntrance* entr)) #else void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { u16 tmp; diff --git a/src/manager/manager7.c b/src/manager/manager7.c index 70af525c..85e49295 100644 --- a/src/manager/manager7.c +++ b/src/manager/manager7.c @@ -56,9 +56,7 @@ const u32 gUnk_081080A4[0x50] = { const u8 gUnk_081081E4[] = { 0x16, 0x17, 0x17, 0x18, 0x18 }; #ifdef EU -NAKED void Manager7_Main(Manager7* this) { - asm(".incbin \"baserom_eu.gba\", 0x0578A0, 0x00000CC"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/Manager7_Main.inc", void Manager7_Main(Manager7* this)) #else void Manager7_Main(Manager7* this) { u32 tmp; @@ -133,9 +131,7 @@ void sub_08057E64() { } #ifdef EU -NAKED void sub_08057E7C(u32 unk1) { - asm(".incbin \"baserom_eu.gba\", 0x0579B8, 0x0000050"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_08057E7C.inc", void sub_08057E7C(u32 unk1)) #else void sub_08057E7C(u32 unk1) { u32 tmp; diff --git a/src/npc/phonograph.c b/src/npc/phonograph.c index e6c23f1e..38604490 100644 --- a/src/npc/phonograph.c +++ b/src/npc/phonograph.c @@ -26,9 +26,7 @@ ASM_FUNC("asm/non_matching/phonograph/sub_0806E964.inc", void sub_0806E964(Entity* this, ScriptExecutionContext* context)) #ifdef EU -NAKED void sub_0806EABC(Entity* this, u32 param) { - asm(".incbin \"baserom_eu.gba\", 0x06E4F8, 0x000003C"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_0806EABC.inc", void sub_0806EABC(Entity* this, u32 param)) #else void sub_0806EABC(Entity* this, u32 param) { sub_08050384(); diff --git a/src/projectile/projectile13.c b/src/projectile/projectile13.c index 1397a72e..fc8e06a2 100644 --- a/src/projectile/projectile13.c +++ b/src/projectile/projectile13.c @@ -124,9 +124,7 @@ void sub_080A9FD0(Entity* this) { } #ifdef EU -NAKED void sub_080AA044(Entity* this) { - asm(".incbin \"baserom_eu.gba\", 0x0A983C, 0x00000C4"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/sub_080AA044.inc", void sub_080AA044(Entity* this)) #else void sub_080AA044(Entity* this) { u32 uVar1; diff --git a/src/save.c b/src/save.c index 04495ae3..7039ca5a 100644 --- a/src/save.c +++ b/src/save.c @@ -44,7 +44,8 @@ const u16 gUnk_0811E454[] = { 0x0, 0x0, 0x100, 0x200, 0x300, 0x400, 0x500, const char gUnk_0811E470[4] = "LINK"; #ifdef DEMO -const u8 unknown[] = { 0x0, 0x0f, 0x0a, 0x0a, 0x0f, 0x0f, 0x0f, 0x08, 0x05, 0x05, 0x00, 0x00 }; +const u8 demoUnknown0 = 0x0; +const u8 demoUnknown1[] = { 0x0f, 0x0a, 0x0a, 0x0f, 0x0f, 0x0f, 0x08, 0x05, 0x05, 0x00, 0x00 }; #else const u8 padding[2] = { 0, 0 }; #endif @@ -52,7 +53,16 @@ const u8 padding[2] = { 0, 0 }; static SaveResult (*const sSaveHandlers[])(u32) = { HandleSaveInit, HandleSaveInProgress, HandleSaveDone }; #ifdef DEMO -asm(".incbin \"baserom_demo.gba\", 0x11e010, 0xf0c"); // TODO disassemble +asm("demoPointer1: .incbin \"baserom_demo.gba\", 0x11e010, 0x500"); +asm("demoPointer2: .incbin \"baserom_demo.gba\", 0x11e510, 0x500"); +asm("demoPointer3: .incbin \"baserom_demo.gba\", 0x11ea10, 0x500"); + +extern const u32 demoPointer1; +extern const u32 demoPointer2; +extern const u32 demoPointer3; + +const u32 demoPointers[] = { (u32)&demoPointer1, (u32)&demoPointer2, (u32)&demoPointer3 }; + #else #if defined(JP) || defined(EU) diff --git a/src/textbox.c b/src/textbox.c index 676d6857..01b7bbae 100644 --- a/src/textbox.c +++ b/src/textbox.c @@ -477,9 +477,7 @@ extern u8 gUnk_08107C14; extern u8 gUnk_08107C0F; #ifdef EU -NAKED void TextBoxHandlerQuestion(CurrentTextBox* ctb) { - asm(".incbin \"baserom_eu.gba\", 0x05654c, 0x138"); // TODO disassemble -} +ASM_FUNC("asm/non_matching/eu/TextBoxHandlerQuestion.inc", void TextBoxHandlerQuestion(CurrentTextBox* ctb)) #else void TextBoxHandlerQuestion(CurrentTextBox* ctb) {