diff --git a/asm/disasm_0x08057d04.s b/asm/disasm_0x08057d04.s index 8c6f320a..11ae9204 100644 --- a/asm/disasm_0x08057d04.s +++ b/asm/disasm_0x08057d04.s @@ -7600,8 +7600,8 @@ lbl_0805b752: bx r0 .align 2, 0 - thumb_func_start sub_0805b764 -sub_0805b764: @ 0x0805b764 + thumb_func_start ApplySmoothPaletteTransition +ApplySmoothPaletteTransition: @ 0x0805b764 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb diff --git a/asm/disasm_0x08067080.s b/asm/disasm_0x08068168.s similarity index 92% rename from asm/disasm_0x08067080.s rename to asm/disasm_0x08068168.s index 826f643a..6c2e9600 100644 --- a/asm/disasm_0x08067080.s +++ b/asm/disasm_0x08068168.s @@ -2,2131 +2,6 @@ .syntax unified - thumb_func_start enter_tourian_anim -enter_tourian_anim: @ 0x08067080 - push {r4, r5, r6, lr} - ldr r0, lbl_08067098 @ =sNonGameplayRamPointer - ldr r0, [r0] - ldrb r0, [r0, #4] - cmp r0, #9 - bls lbl_0806708e - b lbl_080672fe -lbl_0806708e: - lsls r0, r0, #2 - ldr r1, lbl_0806709c @ =lbl_080670a0 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -lbl_08067098: .4byte sNonGameplayRamPointer -lbl_0806709c: .4byte lbl_080670a0 -lbl_080670a0: @ jump table - .4byte lbl_080670c8 @ case 0 - .4byte lbl_080670e0 @ case 1 - .4byte lbl_08067106 @ case 2 - .4byte lbl_0806712c @ case 3 - .4byte lbl_080671b8 @ case 4 - .4byte lbl_080671e0 @ case 5 - .4byte lbl_08067220 @ case 6 - .4byte lbl_0806723c @ case 7 - .4byte lbl_080672cc @ case 8 - .4byte lbl_080672e8 @ case 9 -lbl_080670c8: - bl unk_61f44 - cmp r0, #0 - bne lbl_080670d2 - b lbl_080672fe -lbl_080670d2: - ldr r0, lbl_080670dc @ =0x00000295 - bl SoundPlay - b lbl_080672d4 - .align 2, 0 -lbl_080670dc: .4byte 0x00000295 -lbl_080670e0: - ldr r5, lbl_080670fc @ =sNonGameplayRamPointer - ldr r1, [r5] - ldrb r4, [r1, #0xa] - cmp r4, #0 - bne lbl_08067100 - ldrh r0, [r1, #0x1e] - movs r1, #0 - movs r2, #8 - movs r3, #1 - bl CutsceneStartSpriteEffect - ldr r1, [r5] - strh r4, [r1, #2] - b lbl_080672dc - .align 2, 0 -lbl_080670fc: .4byte sNonGameplayRamPointer -lbl_08067100: - movs r0, #0 - strh r0, [r1, #2] - b lbl_080672fe -lbl_08067106: - ldr r0, lbl_08067128 @ =sNonGameplayRamPointer - ldr r2, [r0] - adds r0, r2, #0 - adds r0, #0xa8 - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne lbl_0806711a - b lbl_080672fe -lbl_0806711a: - movs r0, #0 - strh r0, [r2, #2] - ldrb r0, [r2, #4] - adds r0, #1 - strb r0, [r2, #4] - b lbl_080672fe - .align 2, 0 -lbl_08067128: .4byte sNonGameplayRamPointer -lbl_0806712c: - ldr r4, lbl_0806714c @ =sNonGameplayRamPointer - ldr r1, [r4] - ldrh r0, [r1, #2] - cmp r0, #8 - bne lbl_08067158 - ldr r0, lbl_08067150 @ =0x0000011d - adds r2, r1, r0 - ldrb r0, [r2] - movs r1, #2 - orrs r1, r0 - strb r1, [r2] - ldr r0, lbl_08067154 @ =0x00000296 - bl SoundPlay - b lbl_080672fe - .align 2, 0 -lbl_0806714c: .4byte sNonGameplayRamPointer -lbl_08067150: .4byte 0x0000011d -lbl_08067154: .4byte 0x00000296 -lbl_08067158: - cmp r0, #0x5a - bne lbl_08067170 - ldr r0, lbl_0806716c @ =0x0000015d - adds r2, r1, r0 - ldrb r1, [r2] - movs r0, #2 - orrs r0, r1 - strb r0, [r2] - b lbl_080672fe - .align 2, 0 -lbl_0806716c: .4byte 0x0000015d -lbl_08067170: - cmp r0, #0x64 - bne lbl_08067198 - ldr r0, lbl_08067190 @ =0x0000019d - adds r1, r1, r0 - ldrb r0, [r1] - movs r2, #2 - orrs r0, r2 - strb r0, [r1] - ldr r0, [r4] - ldr r1, lbl_08067194 @ =0x000001fd - adds r0, r0, r1 - ldrb r1, [r0] - orrs r2, r1 - strb r2, [r0] - b lbl_080672fe - .align 2, 0 -lbl_08067190: .4byte 0x0000019d -lbl_08067194: .4byte 0x000001fd -lbl_08067198: - cmp r0, #0x77 - bhi lbl_0806719e - b lbl_080672fe -lbl_0806719e: - ldr r0, lbl_080671b4 @ =0x000001dd - adds r3, r1, r0 - ldrb r1, [r3] - movs r0, #2 - movs r2, #0 - orrs r0, r1 - strb r0, [r3] - ldr r1, [r4] - strh r2, [r1, #2] - b lbl_080672dc - .align 2, 0 -lbl_080671b4: .4byte 0x000001dd -lbl_080671b8: - ldr r3, lbl_080671dc @ =sNonGameplayRamPointer - ldr r2, [r3] - ldrh r1, [r2, #2] - movs r0, #0x96 - lsls r0, r0, #1 - cmp r1, r0 - bhi lbl_080671c8 - b lbl_080672fe -lbl_080671c8: - subs r0, #0x12 - adds r1, r2, r0 - ldrb r0, [r1] - adds r0, #1 - movs r2, #0 - strb r0, [r1] - ldr r1, [r3] - strh r2, [r1, #2] - b lbl_080672dc - .align 2, 0 -lbl_080671dc: .4byte sNonGameplayRamPointer -lbl_080671e0: - ldr r4, lbl_08067214 @ =sNonGameplayRamPointer - ldr r2, [r4] - ldr r1, lbl_08067218 @ =0x0000011b - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - bne lbl_080671fe - ldrh r1, [r2, #2] - movs r0, #0x96 - lsls r0, r0, #1 - cmp r1, r0 - bhi lbl_080671fe - b lbl_080672fe -lbl_080671fe: - ldr r0, lbl_0806721c @ =0x0000011d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, #0xfb - ands r0, r1 - movs r2, #0 - strb r0, [r3] - ldr r1, [r4] - strh r2, [r1, #2] - b lbl_080672dc - .align 2, 0 -lbl_08067214: .4byte sNonGameplayRamPointer -lbl_08067218: .4byte 0x0000011b -lbl_0806721c: .4byte 0x0000011d -lbl_08067220: - ldr r4, lbl_08067234 @ =sNonGameplayRamPointer - ldr r0, [r4] - ldrh r0, [r0, #2] - cmp r0, #0x3c - bls lbl_080672fe - ldr r0, lbl_08067238 @ =0x00000297 - bl SoundPlay - ldr r1, [r4] - b lbl_080672d8 - .align 2, 0 -lbl_08067234: .4byte sNonGameplayRamPointer -lbl_08067238: .4byte 0x00000297 -lbl_0806723c: - ldr r4, lbl_080672a4 @ =gCurrentOamScaling - ldrh r0, [r4] - adds r0, #8 - strh r0, [r4] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #0x80 - lsls r1, r1, #2 - cmp r0, r1 - bls lbl_08067266 - strh r1, [r4] - movs r0, #8 - bl CutsceneStartBackgroundFading - ldr r0, lbl_080672a8 @ =sNonGameplayRamPointer - ldr r1, [r0] - movs r0, #0 - strh r0, [r1, #2] - ldrb r0, [r1, #4] - adds r0, #1 - strb r0, [r1, #4] -lbl_08067266: - ldr r3, lbl_080672a8 @ =sNonGameplayRamPointer - ldr r1, [r3] - ldr r2, lbl_080672ac @ =0x00000119 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, #6 - beq lbl_08067290 - movs r0, #0x8d - lsls r0, r0, #1 - adds r1, r1, r0 - movs r0, #5 - strb r0, [r1] - ldrh r1, [r4] - movs r0, #0xd0 - lsls r0, r0, #1 - cmp r1, r0 - bls lbl_08067290 - ldr r0, [r3] - adds r0, r0, r2 - movs r1, #6 - strb r1, [r0] -lbl_08067290: - ldr r0, lbl_080672a4 @ =gCurrentOamScaling - ldrh r1, [r0] - lsls r2, r1, #0x10 - movs r0, #0xd8 - lsls r0, r0, #1 - cmp r1, r0 - bls lbl_080672b0 - movs r4, #6 - rsbs r4, r4, #0 - b lbl_080672b6 - .align 2, 0 -lbl_080672a4: .4byte gCurrentOamScaling -lbl_080672a8: .4byte sNonGameplayRamPointer -lbl_080672ac: .4byte 0x00000119 -lbl_080672b0: - lsrs r1, r2, #0x16 - movs r0, #0x10 - subs r4, r0, r1 -lbl_080672b6: - ldr r0, lbl_080672c8 @ =sNonGameplayRamPointer - ldr r1, [r0] - movs r0, #0x88 - lsls r0, r0, #1 - adds r1, r1, r0 - ldrh r0, [r1] - adds r0, r0, r4 - strh r0, [r1] - b lbl_080672fe - .align 2, 0 -lbl_080672c8: .4byte sNonGameplayRamPointer -lbl_080672cc: - bl unk_61f44 - cmp r0, #0 - beq lbl_080672fe -lbl_080672d4: - ldr r0, lbl_080672e4 @ =sNonGameplayRamPointer - ldr r1, [r0] -lbl_080672d8: - movs r0, #0 - strh r0, [r1, #2] -lbl_080672dc: - ldrb r0, [r1, #4] - adds r0, #1 - strb r0, [r1, #4] - b lbl_080672fe - .align 2, 0 -lbl_080672e4: .4byte sNonGameplayRamPointer -lbl_080672e8: - bl unk_61f0c - ldr r3, lbl_0806733c @ =sNonGameplayRamPointer - ldr r1, [r3] - ldrb r0, [r1] - adds r0, #1 - movs r2, #0 - strb r0, [r1] - ldr r0, [r3] - strb r2, [r0, #4] - strh r2, [r0, #2] -lbl_080672fe: - bl sub_08067390 - movs r4, #1 - ldr r6, lbl_0806733c @ =sNonGameplayRamPointer - movs r5, #0x88 - lsls r5, r5, #1 -lbl_0806730a: - ldr r0, [r6] - adds r0, r0, r5 - subs r1, r4, #1 - lsrs r2, r1, #0x1f - adds r1, r1, r2 - asrs r1, r1, #1 - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - bl sub_080673e0 - adds r5, #0x40 - adds r4, #2 - cmp r4, #7 - ble lbl_0806730a - movs r3, #0 - movs r4, #1 - ldr r2, lbl_0806733c @ =sNonGameplayRamPointer - ldr r0, [r2] - ldr r1, lbl_08067340 @ =0x0000011d - adds r0, r0, r1 - ldrb r1, [r0] - adds r0, r4, #0 - ands r0, r1 - adds r5, r2, #0 - b lbl_08067358 - .align 2, 0 -lbl_0806733c: .4byte sNonGameplayRamPointer -lbl_08067340: .4byte 0x0000011d -lbl_08067344: - adds r4, #2 - cmp r4, #7 - bgt lbl_0806735e - ldr r0, [r5] - lsls r1, r4, #5 - adds r0, r0, r1 - adds r0, #0xfd - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 -lbl_08067358: - cmp r0, #0 - beq lbl_08067344 - movs r3, #1 -lbl_0806735e: - ldr r0, [r5] - adds r0, #0xc - adds r4, r3, #0 - adds r1, r4, #0 - bl sub_08067758 - ldr r0, [r5] - ldr r1, lbl_0806738c @ =0x000001fd - adds r0, r0, r1 - ldrb r1, [r0] - orrs r4, r1 - strb r4, [r0] - ldr r0, [r5] - movs r1, #0xf8 - lsls r1, r1, #1 - adds r0, r0, r1 - bl sub_080677e4 - movs r0, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 - .align 2, 0 -lbl_0806738c: .4byte 0x000001fd - - thumb_func_start sub_08067390 -sub_08067390: @ 0x08067390 - push {r4, lr} - ldr r4, lbl_080673d8 @ =sNonGameplayRamPointer - ldr r0, [r4] - ldrb r0, [r0, #0xa] - cmp r0, #0 - beq lbl_080673d2 - ldr r0, lbl_080673dc @ =0x083f0390 - ldrh r0, [r0, #0xc] - bl CutsceneGetBGHOFSPointer - adds r1, r0, #0 - ldrh r0, [r1] - movs r2, #0xac - lsls r2, r2, #3 - cmp r0, r2 - bls lbl_080673bc - subs r0, #2 - strh r0, [r1] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, r2 - bhi lbl_080673c2 -lbl_080673bc: - ldr r1, [r4] - movs r0, #0 - strb r0, [r1, #0xa] -lbl_080673c2: - ldr r0, lbl_080673dc @ =0x083f0390 - ldrh r0, [r0, #4] - bl CutsceneGetBGHOFSPointer - adds r1, r0, #0 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] -lbl_080673d2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -lbl_080673d8: .4byte sNonGameplayRamPointer -lbl_080673dc: .4byte 0x083f0390 - - thumb_func_start sub_080673e0 -sub_080673e0: @ 0x080673e0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #0xc - adds r4, r0, #0 - lsls r1, r1, #0x18 - lsrs r7, r1, #0x18 - subs r0, #0x20 - str r0, [sp, #4] - ldrb r1, [r4, #0xd] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq lbl_0806741c - adds r0, r4, #0 - movs r1, #3 - bl UpdateCutsceneOamDataID - ldrb r1, [r4, #0xd] - movs r0, #0xfe - ands r0, r1 - movs r2, #0 - movs r1, #2 - eors r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r4, #0xd] - strh r2, [r4, #0x14] -lbl_0806741c: - ldrb r1, [r4, #0xd] - movs r5, #1 - adds r0, r5, #0 - ands r0, r1 - cmp r0, #0 - bne lbl_0806742a - b lbl_0806751c -lbl_0806742a: - ldrh r1, [r4, #0x14] - ldr r0, lbl_08067444 @ =0x0000ffff - cmp r1, r0 - beq lbl_08067436 - adds r0, r1, #1 - strh r0, [r4, #0x14] -lbl_08067436: - ldrh r0, [r4, #0x16] - adds r2, r0, #0 - cmp r2, #0 - beq lbl_08067448 - subs r0, #1 - b lbl_0806749c - .align 2, 0 -lbl_08067444: .4byte 0x0000ffff -lbl_08067448: - ldrh r1, [r4, #0xe] - movs r3, #0xe - ldrsh r0, [r4, r3] - cmp r0, #0 - beq lbl_08067464 - ldrh r0, [r4, #2] - subs r0, r0, r1 - strh r0, [r4, #2] - strh r2, [r4, #0xe] - ldr r2, lbl_08067460 @ =0x0808c99c - ldrh r6, [r4, #0x14] - b lbl_0806748c - .align 2, 0 -lbl_08067460: .4byte 0x0808c99c -lbl_08067464: - ldr r2, lbl_080674ac @ =0x0808c99c - ldrh r3, [r4, #0x14] - adds r0, r3, r7 - movs r1, #0xff - ands r0, r1 - adds r0, r0, r2 - ldrb r1, [r0] - adds r0, r5, #0 - ands r0, r1 - movs r1, #4 - adds r6, r3, #0 - cmp r0, #0 - beq lbl_08067484 - movs r5, #4 - rsbs r5, r5, #0 - adds r1, r5, #0 -lbl_08067484: - strh r1, [r4, #0xe] - ldrh r3, [r4, #2] - adds r0, r1, r3 - strh r0, [r4, #2] -lbl_0806748c: - subs r0, r6, r7 - movs r1, #0xff - ands r0, r1 - adds r0, r0, r2 - ldrb r1, [r0] - movs r0, #0x1f - ands r0, r1 - adds r0, #8 -lbl_0806749c: - strh r0, [r4, #0x16] - ldrh r0, [r4, #0x18] - adds r2, r0, #0 - cmp r2, #0 - beq lbl_080674b0 - subs r0, #1 - strh r0, [r4, #0x18] - b lbl_080676f4 - .align 2, 0 -lbl_080674ac: .4byte 0x0808c99c -lbl_080674b0: - ldrh r1, [r4, #0x10] - movs r5, #0x10 - ldrsh r0, [r4, r5] - cmp r0, #0 - beq lbl_080674cc - ldrh r0, [r4] - subs r0, r0, r1 - strh r0, [r4] - strh r2, [r4, #0x10] - ldr r2, lbl_080674c8 @ =0x0808c99c - ldrh r6, [r4, #0x14] - b lbl_080674f4 - .align 2, 0 -lbl_080674c8: .4byte 0x0808c99c -lbl_080674cc: - ldr r2, lbl_08067518 @ =0x0808c99c - ldrh r3, [r4, #0x14] - adds r0, r3, r7 - movs r1, #0xff - ands r0, r1 - adds r0, r0, r2 - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - movs r1, #4 - adds r6, r3, #0 - cmp r0, #0 - beq lbl_080674ec - movs r0, #4 - rsbs r0, r0, #0 - adds r1, r0, #0 -lbl_080674ec: - strh r1, [r4, #0x10] - ldrh r3, [r4] - adds r0, r1, r3 - strh r0, [r4] -lbl_080674f4: - subs r0, r6, r7 - movs r1, #0xff - ands r0, r1 - adds r0, r0, r2 - ldrb r0, [r0] - movs r1, #0x3f - ands r1, r0 - adds r0, r1, #0 - adds r0, #8 - strh r0, [r4, #0x18] - ldrh r5, [r4, #0x16] - cmp r0, r5 - beq lbl_08067510 - b lbl_080676f4 -lbl_08067510: - adds r0, #0x10 - strh r0, [r4, #0x18] - b lbl_080676f4 - .align 2, 0 -lbl_08067518: .4byte 0x0808c99c -lbl_0806751c: - movs r0, #4 - ands r0, r1 - cmp r0, #0 - bne lbl_08067526 - b lbl_080676f4 -lbl_08067526: - ldrh r1, [r4, #0x14] - ldr r0, lbl_08067550 @ =0x0000ffff - cmp r1, r0 - beq lbl_08067532 - adds r0, r1, #1 - strh r0, [r4, #0x14] -lbl_08067532: - movs r6, #0x3c - str r6, [sp] - cmp r7, #0 - bne lbl_0806753e - movs r0, #0xb4 - str r0, [sp] -lbl_0806753e: - ldrh r6, [r4, #0x14] - ldr r1, [sp] - cmp r6, r1 - bge lbl_08067554 - movs r2, #1 - mov sl, r2 - movs r3, #2 - str r3, [sp] - b lbl_0806755c - .align 2, 0 -lbl_08067550: .4byte 0x0000ffff -lbl_08067554: - movs r5, #2 - mov sl, r5 - movs r0, #1 - str r0, [sp] -lbl_0806755c: - ldrh r0, [r4, #0x16] - adds r0, #1 - strh r0, [r4, #0x16] - ldrh r2, [r4, #0xe] - mov r1, sp - strh r2, [r1, #8] - movs r3, #0xe - ldrsh r0, [r4, r3] - cmp r0, #0 - bne lbl_080675d4 - ldr r2, lbl_080675c4 @ =0x087600b4 - lsls r3, r7, #2 - adds r0, r3, r2 - ldrh r1, [r0] - ldrh r0, [r4, #2] - subs r1, r1, r0 - mov ip, r1 - mov r5, ip - strh r5, [r4, #0xe] - ldr r0, lbl_080675c8 @ =0x0808c99c - mov sl, r0 - adds r0, r6, #0 - muls r0, r7, r0 - movs r1, #0xff - mov r8, r1 - ands r0, r1 - add r0, sl - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - movs r5, #1 - rsbs r5, r5, #0 - mov sb, r3 - cmp r0, #0 - beq lbl_080675a4 - movs r5, #1 -lbl_080675a4: - adds r0, r6, r7 - mov r2, r8 - ands r0, r2 - add r0, sl - ldrb r1, [r0] - movs r0, #3 - ands r0, r1 - muls r5, r0, r5 - mov r3, ip - lsls r0, r3, #0x10 - cmp r0, #0 - ble lbl_080675cc - lsls r0, r5, #2 - adds r0, #0x20 - strh r0, [r4, #0xe] - b lbl_0806765a - .align 2, 0 -lbl_080675c4: .4byte 0x087600b4 -lbl_080675c8: .4byte 0x0808c99c -lbl_080675cc: - lsls r0, r5, #2 - subs r0, #0x20 - strh r0, [r4, #0xe] - b lbl_0806765a -lbl_080675d4: - cmp r0, #0 - ble lbl_08067618 - ldr r1, lbl_08067614 @ =0x087600b4 - lsls r2, r7, #2 - adds r0, r2, r1 - movs r3, #0 - ldrsh r5, [r0, r3] - mov ip, r5 - movs r5, #2 - ldrsh r0, [r4, r5] - ldrh r3, [r4, #2] - mov r8, r3 - mov sb, r2 - cmp ip, r0 - bgt lbl_080675fa - mov r5, sp - ldrh r0, [r5, #8] - subs r0, #2 - strh r0, [r4, #0xe] -lbl_080675fa: - movs r1, #0xe - ldrsh r0, [r4, r1] - movs r1, #0xc - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - adds r5, r0, #1 - cmp r5, sl - ble lbl_08067654 - mov r5, sl - b lbl_08067654 - .align 2, 0 -lbl_08067614: .4byte 0x087600b4 -lbl_08067618: - ldr r1, lbl_080676b4 @ =0x087600b4 - lsls r2, r7, #2 - adds r0, r2, r1 - movs r5, #0 - ldrsh r3, [r0, r5] - mov ip, r3 - movs r3, #2 - ldrsh r0, [r4, r3] - ldrh r5, [r4, #2] - mov r8, r5 - mov sb, r2 - cmp ip, r0 - blt lbl_0806763a - mov r1, sp - ldrh r0, [r1, #8] - adds r0, #2 - strh r0, [r4, #0xe] -lbl_0806763a: - movs r2, #0xe - ldrsh r0, [r4, r2] - movs r1, #0xc - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - subs r5, r0, #1 - mov r3, sl - rsbs r0, r3, #0 - cmp r5, r0 - bge lbl_08067654 - adds r5, r0, #0 -lbl_08067654: - mov r1, r8 - adds r0, r1, r5 - strh r0, [r4, #2] -lbl_0806765a: - ldrh r0, [r4, #0x18] - adds r1, r0, #1 - strh r1, [r4, #0x18] - ldrh r3, [r4, #0x10] - movs r5, #0x10 - ldrsh r2, [r4, r5] - cmp r2, #0 - bne lbl_080676c8 - ldr r3, lbl_080676b8 @ =0x0808c99c - ldrb r0, [r4, #8] - ldrb r1, [r4, #9] - adds r0, r0, r1 - movs r2, #0xff - ands r0, r2 - adds r0, r0, r3 - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - movs r5, #1 - rsbs r5, r5, #0 - cmp r0, #0 - beq lbl_08067688 - movs r5, #1 -lbl_08067688: - adds r0, r6, r7 - ands r0, r2 - adds r0, r0, r3 - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - muls r5, r0, r5 - ldr r0, lbl_080676b4 @ =0x087600b4 - adds r0, #2 - add r0, sb - ldrh r2, [r0] - movs r6, #0 - ldrsh r1, [r0, r6] - ldrh r3, [r4] - movs r6, #0 - ldrsh r0, [r4, r6] - cmp r1, r0 - bge lbl_080676bc - adds r0, r5, #4 - lsls r0, r0, #2 - subs r0, r2, r0 - b lbl_080676c2 - .align 2, 0 -lbl_080676b4: .4byte 0x087600b4 -lbl_080676b8: .4byte 0x0808c99c -lbl_080676bc: - adds r0, r5, #4 - lsls r0, r0, #2 - adds r0, r2, r0 -lbl_080676c2: - subs r0, r0, r3 - strh r0, [r4, #0x10] - b lbl_080676f4 -lbl_080676c8: - movs r0, #1 - ands r1, r0 - cmp r1, #0 - beq lbl_080676f4 - cmp r2, #0 - ble lbl_080676d8 - subs r0, r3, #1 - b lbl_080676da -lbl_080676d8: - adds r0, r3, #1 -lbl_080676da: - strh r0, [r4, #0x10] - movs r0, #0 - ldrsh r1, [r4, r0] - movs r2, #0x10 - ldrsh r0, [r4, r2] - cmp r0, #0 - bgt lbl_080676ee - ldr r3, [sp] - subs r0, r1, r3 - b lbl_080676f2 -lbl_080676ee: - ldr r5, [sp] - adds r0, r1, r5 -lbl_080676f2: - strh r0, [r4] -lbl_080676f4: - ldrh r0, [r4] - ldr r6, [sp, #4] - strh r0, [r6] - ldrh r0, [r4, #2] - strh r0, [r6, #2] - ldr r0, lbl_0806774c @ =0x083f0390 - ldrh r0, [r0, #4] - bl CutsceneGetBGHOFSPointer - ldrh r1, [r0] - movs r2, #2 - ldrsh r0, [r4, r2] - subs r5, r1, r0 - ldr r3, lbl_08067750 @ =0x000007df - adds r1, r5, r3 - ldr r0, lbl_08067754 @ =0x00000bde - movs r5, #1 - cmp r1, r0 - bhi lbl_0806771c - movs r5, #0 -lbl_0806771c: - movs r0, #1 - ands r5, r0 - lsls r3, r5, #5 - ldrb r2, [r4, #0xb] - movs r1, #0x21 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - orrs r0, r3 - strb r0, [r4, #0xb] - ldr r5, [sp, #4] - ldrb r0, [r5, #0xb] - ands r1, r0 - orrs r1, r3 - strb r1, [r5, #0xb] - add sp, #0xc - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -lbl_0806774c: .4byte 0x083f0390 -lbl_08067750: .4byte 0x000007df -lbl_08067754: .4byte 0x00000bde - - thumb_func_start sub_08067758 -sub_08067758: @ 0x08067758 - push {lr} - sub sp, #4 - adds r2, r0, #0 - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - cmp r1, #1 - bne lbl_080677bc - ldrb r0, [r2] - cmp r0, #0 - beq lbl_0806777a - movs r0, #0 - strb r1, [r2] - strb r0, [r2, #1] - strb r0, [r2, #2] - movs r0, #0x20 - strb r0, [r2, #3] - b lbl_080677d6 -lbl_0806777a: - ldrb r0, [r2, #1] - adds r1, r0, #0 - cmp r1, #0 - beq lbl_08067788 - subs r0, #1 - strb r0, [r2, #1] - b lbl_080677d6 -lbl_08067788: - ldrb r0, [r2, #3] - strb r0, [r2, #1] - ldrb r0, [r2, #2] - adds r0, #1 - strb r0, [r2, #2] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #4 - bls lbl_0806779c - strb r1, [r2, #2] -lbl_0806779c: - ldrb r1, [r2, #2] - lsls r1, r1, #5 - ldr r0, lbl_080677b4 @ =0x082ed988 - adds r1, r1, r0 - ldr r2, lbl_080677b8 @ =0x05000380 - movs r0, #0x10 - str r0, [sp] - movs r0, #3 - movs r3, #0x20 - bl DMATransfer - b lbl_080677d6 - .align 2, 0 -lbl_080677b4: .4byte 0x082ed988 -lbl_080677b8: .4byte 0x05000380 -lbl_080677bc: - ldrb r0, [r2] - cmp r0, #0 - beq lbl_080677d6 - movs r0, #0 - strb r0, [r2] - ldr r1, lbl_080677dc @ =0x082edb08 - ldr r2, lbl_080677e0 @ =0x05000380 - movs r0, #0x10 - str r0, [sp] - movs r0, #3 - movs r3, #0x20 - bl DMATransfer -lbl_080677d6: - add sp, #4 - pop {r0} - bx r0 - .align 2, 0 -lbl_080677dc: .4byte 0x082edb08 -lbl_080677e0: .4byte 0x05000380 - - thumb_func_start sub_080677e4 -sub_080677e4: @ 0x080677e4 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0xd] - movs r5, #1 - adds r0, r5, #0 - ands r0, r1 - cmp r0, #0 - beq lbl_080678a0 - ldrh r0, [r4, #0x16] - adds r2, r0, #0 - cmp r2, #0 - beq lbl_08067800 - subs r0, #1 - b lbl_0806784c -lbl_08067800: - ldrh r1, [r4, #0xe] - movs r3, #0xe - ldrsh r0, [r4, r3] - cmp r0, #0 - beq lbl_08067820 - ldrh r0, [r4, #2] - subs r0, r0, r1 - strh r0, [r4, #2] - strh r2, [r4, #0xe] - ldr r2, lbl_08067818 @ =0x0808c99c - ldr r3, lbl_0806781c @ =gFrameCounter8Bit - b lbl_08067842 - .align 2, 0 -lbl_08067818: .4byte 0x0808c99c -lbl_0806781c: .4byte gFrameCounter8Bit -lbl_08067820: - ldr r2, lbl_0806785c @ =0x0808c99c - ldr r3, lbl_08067860 @ =gFrameCounter8Bit - ldrb r0, [r3] - adds r0, r0, r2 - ldrb r1, [r0] - adds r0, r5, #0 - ands r0, r1 - movs r1, #4 - cmp r0, #0 - beq lbl_0806783a - movs r5, #4 - rsbs r5, r5, #0 - adds r1, r5, #0 -lbl_0806783a: - strh r1, [r4, #0xe] - ldrh r5, [r4, #2] - adds r0, r1, r5 - strh r0, [r4, #2] -lbl_08067842: - ldrb r0, [r3] - subs r0, #1 - adds r0, r0, r2 - ldrb r0, [r0] - adds r0, #8 -lbl_0806784c: - strh r0, [r4, #0x16] - ldrh r0, [r4, #0x18] - adds r2, r0, #0 - cmp r2, #0 - beq lbl_08067864 - subs r0, #1 - b lbl_0806789e - .align 2, 0 -lbl_0806785c: .4byte 0x0808c99c -lbl_08067860: .4byte gFrameCounter8Bit -lbl_08067864: - ldrh r1, [r4, #0x10] - movs r3, #0x10 - ldrsh r0, [r4, r3] - cmp r0, #0 - beq lbl_08067878 - ldrh r0, [r4] - subs r0, r0, r1 - strh r0, [r4] - strh r2, [r4, #0x10] - b lbl_08067882 -lbl_08067878: - ldr r1, lbl_08067928 @ =0x0000fffc - strh r1, [r4, #0x10] - ldrh r0, [r4] - adds r0, r0, r1 - strh r0, [r4] -lbl_08067882: - ldr r1, lbl_0806792c @ =0x0808c99c - ldr r0, lbl_08067930 @ =gFrameCounter8Bit - ldrb r0, [r0] - adds r0, r0, r1 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - adds r0, r1, #0 - adds r0, #8 - strh r0, [r4, #0x18] - ldrh r5, [r4, #0x16] - cmp r0, r5 - bne lbl_080678a0 - adds r0, #0x10 -lbl_0806789e: - strh r0, [r4, #0x18] -lbl_080678a0: - ldrb r1, [r4, #0xd] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq lbl_080678ea - ldrh r0, [r4, #0x1a] - adds r0, #1 - strh r0, [r4, #0x1a] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #4 - bls lbl_080678ea - movs r0, #0 - strh r0, [r4, #0x1a] - ldrh r3, [r4, #0x12] - adds r3, #1 - strh r3, [r4, #0x12] - ldr r0, lbl_08067934 @ =sEwramPointer - ldr r1, [r0] - movs r2, #0xa0 - lsls r2, r2, #2 - adds r0, r1, r2 - ldr r5, lbl_08067938 @ =0x00003aa0 - adds r1, r1, r5 - ldr r2, lbl_0806793c @ =0x05000280 - lsls r3, r3, #0x18 - lsrs r3, r3, #0x18 - bl sub_0805b764 - movs r1, #0x12 - ldrsh r0, [r4, r1] - cmp r0, #0x1e - ble lbl_080678ea - ldrb r0, [r4, #0xd] - movs r1, #2 - eors r0, r1 - strb r0, [r4, #0xd] -lbl_080678ea: - ldrb r1, [r4, #0xd] - movs r0, #0xfe - ands r0, r1 - strb r0, [r4, #0xd] - ldr r0, lbl_08067940 @ =0x083f0390 - ldrh r0, [r0, #4] - bl CutsceneGetBGHOFSPointer - ldrh r1, [r0] - movs r2, #2 - ldrsh r0, [r4, r2] - subs r2, r1, r0 - ldr r3, lbl_08067944 @ =0x000005df - adds r1, r2, r3 - ldr r0, lbl_08067948 @ =0x000006de - movs r2, #1 - cmp r1, r0 - bhi lbl_08067910 - movs r2, #0 -lbl_08067910: - movs r0, #1 - ands r2, r0 - lsls r2, r2, #5 - ldrb r1, [r4, #0xb] - movs r0, #0x21 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r4, #0xb] - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -lbl_08067928: .4byte 0x0000fffc -lbl_0806792c: .4byte 0x0808c99c -lbl_08067930: .4byte gFrameCounter8Bit -lbl_08067934: .4byte sEwramPointer -lbl_08067938: .4byte 0x00003aa0 -lbl_0806793c: .4byte 0x05000280 -lbl_08067940: .4byte 0x083f0390 -lbl_08067944: .4byte 0x000005df -lbl_08067948: .4byte 0x000006de - - thumb_func_start enter_tourian_init -enter_tourian_init: @ 0x0806794c - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - bl unk_61f0c - ldr r1, lbl_08067c94 @ =0x083f0410 - movs r5, #0xa0 - lsls r5, r5, #0x13 - movs r3, #0xa0 - lsls r3, r3, #1 - movs r4, #0x10 - str r4, [sp] - movs r0, #3 - adds r2, r5, #0 - bl DMATransfer - movs r0, #0 - strh r0, [r5] - ldr r1, lbl_08067c98 @ =0x083f0550 - ldr r2, lbl_08067c9c @ =0x05000200 - str r4, [sp] - movs r0, #3 - movs r3, #0xc0 - bl DMATransfer - ldr r1, lbl_08067ca0 @ =0x082ed8e8 - ldr r2, lbl_08067ca4 @ =0x05000300 - str r4, [sp] - movs r0, #3 - movs r3, #0xa0 - bl DMATransfer - ldr r0, lbl_08067ca8 @ =0x083f5d74 - ldr r1, lbl_08067cac @ =0x06010000 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cb0 @ =0x083f5e50 - ldr r1, lbl_08067cb4 @ =0x06010400 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cb8 @ =0x083f5f84 - ldr r1, lbl_08067cbc @ =0x06010800 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cc0 @ =0x082ecc84 - ldr r1, lbl_08067cc4 @ =0x06014000 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cc8 @ =0x083f0610 - ldr r6, lbl_08067ccc @ =0x083f0390 - ldrb r1, [r6] - lsls r1, r1, #0xe - movs r4, #0xc0 - lsls r4, r4, #0x13 - adds r1, r1, r4 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cd0 @ =0x083f36a8 - ldrb r1, [r6, #8] - lsls r1, r1, #0xe - adds r1, r1, r4 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cd4 @ =0x083f6004 - ldrb r1, [r6, #1] - lsls r1, r1, #0xb - adds r1, r1, r4 - bl CallLZ77UncompVRAM - ldr r0, lbl_08067cd8 @ =0x083f6608 - ldrb r1, [r6, #9] - lsls r1, r1, #0xb - adds r1, r1, r4 - bl CallLZ77UncompVRAM - ldr r0, [r6] - ldr r1, [r6, #4] - bl CutsceneSetBGCNTPageData - ldr r0, [r6, #8] - ldr r1, [r6, #0xc] - bl CutsceneSetBGCNTPageData - bl CutsceneReset - ldrh r0, [r6, #4] - mov r8, r0 - movs r4, #0x80 - lsls r4, r4, #4 - movs r0, #2 - mov r1, r8 - adds r2, r4, #0 - bl CutsceneSetBackgroundPosition - ldrh r5, [r6, #0xc] - movs r0, #2 - adds r1, r5, #0 - adds r2, r4, #0 - bl CutsceneSetBackgroundPosition - movs r2, #0x95 - lsls r2, r2, #4 - movs r0, #1 - mov r1, r8 - bl CutsceneSetBackgroundPosition - movs r0, #1 - adds r1, r5, #0 - adds r2, r4, #0 - bl CutsceneSetBackgroundPosition - ldr r2, lbl_08067cdc @ =sNonGameplayRamPointer - ldr r0, [r2] - movs r3, #0x8d - lsls r3, r3, #1 - adds r1, r0, r3 - movs r0, #6 - strb r0, [r1] - ldr r1, [r2] - ldr r4, lbl_08067ce0 @ =0x0000011b - adds r1, r1, r4 - ldrb r3, [r1] - movs r5, #0x3f - mov r8, r5 - mov r0, r8 - ands r0, r3 - movs r7, #0x40 - orrs r0, r7 - strb r0, [r1] - ldr r1, [r2] - movs r0, #0x8e - lsls r0, r0, #1 - mov ip, r0 - add r1, ip - ldrb r3, [r1] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r3 - movs r3, #3 - mov sb, r3 - mov r5, sb - orrs r0, r5 - strb r0, [r1] - ldr r1, [r2] - adds r1, r1, r4 - ldrb r6, [r6, #2] - ands r6, r5 - ldrb r3, [r1] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r6 - strb r0, [r1] - ldr r0, [r2] - adds r7, #0xdd - adds r0, r0, r7 - movs r1, #1 - mov sl, r1 - mov r3, sl - strb r3, [r0] - ldr r0, [r2] - movs r3, #0x88 - lsls r3, r3, #1 - adds r4, #0x35 - adds r1, r0, r4 - adds r0, r0, r3 - ldm r0!, {r4, r5, r7} - stm r1!, {r4, r5, r7} - ldm r0!, {r4, r5, r7} - stm r1!, {r4, r5, r7} - ldm r0!, {r5, r7} - stm r1!, {r5, r7} - ldr r0, [r2] - movs r4, #0xc8 - lsls r4, r4, #1 - adds r1, r0, r4 - adds r0, r0, r3 - ldm r0!, {r4, r5, r7} - stm r1!, {r4, r5, r7} - ldm r0!, {r4, r5, r7} - stm r1!, {r4, r5, r7} - ldm r0!, {r5, r7} - stm r1!, {r5, r7} - ldr r0, [r2] - movs r4, #0xe8 - lsls r4, r4, #1 - adds r1, r0, r4 - adds r0, r0, r3 - ldm r0!, {r3, r5, r7} - stm r1!, {r3, r5, r7} - ldm r0!, {r4, r5, r7} - stm r1!, {r4, r5, r7} - ldm r0!, {r3, r4} - stm r1!, {r3, r4} - ldr r1, [r2] - add r1, ip - ldrb r0, [r1] - movs r3, #0x10 - orrs r0, r3 - strb r0, [r1] - ldr r0, [r2] - ldr r5, lbl_08067ce4 @ =0x00000159 - adds r0, r0, r5 - movs r1, #2 - strb r1, [r0] - ldr r0, [r2] - ldr r7, lbl_08067ce8 @ =0x00000199 - adds r7, r7, r0 - movs r0, #4 - strb r0, [r7] - ldr r0, [r2] - ldr r4, lbl_08067cec @ =0x000001d9 - adds r4, r4, r0 - movs r0, #8 - strb r0, [r4] - ldr r0, [r2] - adds r0, #0xfa - strb r1, [r0] - ldr r0, [r2] - adds r0, #0xfb - ldrb r1, [r0] - mov r5, r8 - ands r5, r1 - movs r7, #0x40 - orrs r5, r7 - strb r5, [r0] - ldr r0, [r2] - adds r0, #0xfc - ldrb r1, [r0] - movs r5, #0x10 - rsbs r5, r5, #0 - ands r5, r1 - mov r1, sb - orrs r5, r1 - strb r5, [r0] - ldr r0, [r2] - adds r0, #0xfb - ldrb r1, [r0] - movs r4, #4 - rsbs r4, r4, #0 - ands r4, r1 - orrs r4, r6 - strb r4, [r0] - ldr r0, [r2] - movs r4, #0x98 - lsls r4, r4, #1 - adds r1, r0, r4 - adds r0, #0xf0 - ldm r0!, {r5, r6, r7} - stm r1!, {r5, r6, r7} - ldm r0!, {r4, r5, r6} - stm r1!, {r4, r5, r6} - ldm r0!, {r4, r7} - stm r1!, {r4, r7} - ldr r0, [r2] - movs r5, #0xb8 - lsls r5, r5, #1 - adds r1, r0, r5 - adds r0, #0xf0 - ldm r0!, {r4, r6, r7} - stm r1!, {r4, r6, r7} - ldm r0!, {r5, r6, r7} - stm r1!, {r5, r6, r7} - ldm r0!, {r4, r5} - stm r1!, {r4, r5} - ldr r0, [r2] - movs r6, #0xd8 - lsls r6, r6, #1 - adds r1, r0, r6 - adds r0, #0xf0 - ldm r0!, {r4, r5, r7} - stm r1!, {r4, r5, r7} - ldm r0!, {r4, r6, r7} - stm r1!, {r4, r6, r7} - ldm r0!, {r5, r6} - stm r1!, {r5, r6} - ldr r1, [r2] - adds r1, #0xfc - ldrb r0, [r1] - orrs r0, r3 - strb r0, [r1] - ldr r0, [r2] - ldr r7, lbl_08067cf0 @ =0x00000139 - adds r0, r0, r7 - mov r1, sl - strb r1, [r0] - ldr r0, [r2] - ldr r3, lbl_08067cf4 @ =0x00000179 - adds r0, r0, r3 - strb r1, [r0] - movs r4, #0 - adds r6, r2, #0 - ldr r5, lbl_08067cf8 @ =0x08760090 - adds r7, r5, #2 - mov r8, r7 - adds r7, r6, #0 -lbl_08067ba2: - ldr r2, [r6] - lsls r0, r4, #5 - adds r2, r2, r0 - asrs r1, r4, #1 - lsls r1, r1, #2 - adds r0, r1, r5 - ldrh r0, [r0] - adds r3, r2, #0 - adds r3, #0xf2 - strh r0, [r3] - add r1, r8 - ldrh r0, [r1] - adds r2, #0xf0 - strh r0, [r2] - adds r4, #1 - cmp r4, #7 - ble lbl_08067ba2 - ldr r0, [r7] - movs r4, #0xf8 - lsls r4, r4, #1 - adds r0, r0, r4 - movs r1, #1 - bl UpdateCutsceneOamDataID - ldr r1, [r7] - movs r0, #0xfe - lsls r0, r0, #1 - adds r1, r1, r0 - ldrb r2, [r1] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r2 - movs r2, #3 - orrs r0, r2 - strb r0, [r1] - ldr r0, [r7] - ldr r5, lbl_08067ccc @ =0x083f0390 - ldr r1, lbl_08067cfc @ =0x000001fb - adds r3, r0, r1 - ldrb r1, [r5, #2] - ands r1, r2 - ldrb r2, [r3] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldr r0, [r7] - ldr r3, lbl_08067d00 @ =0x000001fd - adds r0, r0, r3 - movs r6, #0 - mov r8, r6 - movs r3, #1 - strb r3, [r0] - ldr r2, [r7] - ldr r1, lbl_08067cf8 @ =0x08760090 - ldrh r0, [r1, #0x10] - movs r6, #0xf9 - lsls r6, r6, #1 - adds r6, r6, r2 - mov sb, r6 - movs r6, #0 - mov sl, r6 - mov r6, sb - strh r0, [r6] - ldrh r0, [r1, #0x12] - adds r4, r2, r4 - strh r0, [r4] - movs r0, #0xd0 - strh r0, [r2, #0x1e] - ldr r1, lbl_08067d04 @ =gWrittenToBLDY_NonGameplay - movs r0, #0x10 - strh r0, [r1] - strb r3, [r2, #0xa] - movs r0, #0x44 - movs r1, #0 - bl PlayMusic - ldr r1, lbl_08067c9c @ =0x05000200 - ldr r0, lbl_08067d08 @ =sEwramPointer - ldr r2, [r0] - movs r0, #0xe8 - lsls r0, r0, #6 - adds r2, r2, r0 - movs r3, #0x80 - lsls r3, r3, #2 - movs r0, #0x10 - str r0, [sp] - movs r0, #3 - bl DMATransfer - movs r0, #3 - bl CutsceneStartBackgroundFading - ldr r2, [r7] - ldrh r0, [r5, #4] - movs r3, #0x80 - lsls r3, r3, #5 - adds r1, r3, #0 - orrs r0, r1 - ldrh r1, [r5, #0xc] - orrs r0, r1 - strh r0, [r2, #0x1c] - mov r4, r8 - strh r4, [r2, #2] - mov r5, sl - strb r5, [r2, #4] - ldr r1, [r7] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #0 - add sp, #4 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 - .align 2, 0 -lbl_08067c94: .4byte 0x083f0410 -lbl_08067c98: .4byte 0x083f0550 -lbl_08067c9c: .4byte 0x05000200 -lbl_08067ca0: .4byte 0x082ed8e8 -lbl_08067ca4: .4byte 0x05000300 -lbl_08067ca8: .4byte 0x083f5d74 -lbl_08067cac: .4byte 0x06010000 -lbl_08067cb0: .4byte 0x083f5e50 -lbl_08067cb4: .4byte 0x06010400 -lbl_08067cb8: .4byte 0x083f5f84 -lbl_08067cbc: .4byte 0x06010800 -lbl_08067cc0: .4byte 0x082ecc84 -lbl_08067cc4: .4byte 0x06014000 -lbl_08067cc8: .4byte 0x083f0610 -lbl_08067ccc: .4byte 0x083f0390 -lbl_08067cd0: .4byte 0x083f36a8 -lbl_08067cd4: .4byte 0x083f6004 -lbl_08067cd8: .4byte 0x083f6608 -lbl_08067cdc: .4byte sNonGameplayRamPointer -lbl_08067ce0: .4byte 0x0000011b -lbl_08067ce4: .4byte 0x00000159 -lbl_08067ce8: .4byte 0x00000199 -lbl_08067cec: .4byte 0x000001d9 -lbl_08067cf0: .4byte 0x00000139 -lbl_08067cf4: .4byte 0x00000179 -lbl_08067cf8: .4byte 0x08760090 -lbl_08067cfc: .4byte 0x000001fb -lbl_08067d00: .4byte 0x000001fd -lbl_08067d04: .4byte gWrittenToBLDY_NonGameplay -lbl_08067d08: .4byte sEwramPointer - - thumb_func_start enter_tourian_subroutine -enter_tourian_subroutine: @ 0x08067d0c - push {r4, lr} - ldr r1, lbl_08067d38 @ =0x087600c4 - ldr r0, lbl_08067d3c @ =sNonGameplayRamPointer - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, r0, #3 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - adds r4, r0, #0 - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - movs r0, #1 - bl CutsceneUpdateBackgroundsPosition - bl sub_08067d40 - adds r0, r4, #0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -lbl_08067d38: .4byte 0x087600c4 -lbl_08067d3c: .4byte sNonGameplayRamPointer - - thumb_func_start sub_08067d40 -sub_08067d40: @ 0x08067d40 - push {lr} - ldr r1, lbl_08067d74 @ =gNextOamSlot - movs r0, #0 - strb r0, [r1] - ldr r2, lbl_08067d78 @ =0x087600c4 - ldr r0, lbl_08067d7c @ =sNonGameplayRamPointer - ldr r1, [r0] - ldrb r0, [r1] - lsls r0, r0, #3 - adds r0, r0, r2 - ldrb r0, [r0, #4] - adds r1, #0xf0 - ldr r2, lbl_08067d80 @ =0x083f03b0 - bl ProcessCutsceneOam - bl ResetFreeOAM - ldr r0, lbl_08067d84 @ =gCurrentOamRotation - ldrh r0, [r0] - ldr r1, lbl_08067d88 @ =gCurrentOamScaling - ldrh r1, [r1] - movs r2, #0 - bl CalculateOamPart4 - pop {r0} - bx r0 - .align 2, 0 -lbl_08067d74: .4byte gNextOamSlot -lbl_08067d78: .4byte 0x087600c4 -lbl_08067d7c: .4byte sNonGameplayRamPointer -lbl_08067d80: .4byte 0x083f03b0 -lbl_08067d84: .4byte gCurrentOamRotation -lbl_08067d88: .4byte gCurrentOamScaling - - thumb_func_start samus_in_blue_ship_powering_up -samus_in_blue_ship_powering_up: @ 0x08067d8c - push {r4, lr} - ldr r0, lbl_08067da4 @ =sNonGameplayRamPointer - ldr r0, [r0] - ldrb r0, [r0, #4] - cmp r0, #5 - bhi lbl_08067e66 - lsls r0, r0, #2 - ldr r1, lbl_08067da8 @ =lbl_08067dac - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -lbl_08067da4: .4byte sNonGameplayRamPointer -lbl_08067da8: .4byte lbl_08067dac -lbl_08067dac: @ jump table - .4byte lbl_08067dc4 @ case 0 - .4byte lbl_08067dd8 @ case 1 - .4byte lbl_08067df4 @ case 2 - .4byte lbl_08067e08 @ case 3 - .4byte lbl_08067e34 @ case 4 - .4byte lbl_08067e50 @ case 5 -lbl_08067dc4: - bl unk_61f44 - cmp r0, #0 - beq lbl_08067e66 - ldr r0, lbl_08067dd4 @ =sNonGameplayRamPointer - ldr r1, [r0] - b lbl_08067e3e - .align 2, 0 -lbl_08067dd4: .4byte sNonGameplayRamPointer -lbl_08067dd8: - ldr r3, lbl_08067df0 @ =sNonGameplayRamPointer - ldr r1, [r3] - ldrh r0, [r1, #2] - cmp r0, #0x1e - bls lbl_08067e66 - adds r1, #0xfd - movs r2, #0 - movs r0, #1 - strb r0, [r1] - ldr r1, [r3] - strh r2, [r1, #2] - b lbl_08067e42 - .align 2, 0 -lbl_08067df0: .4byte sNonGameplayRamPointer -lbl_08067df4: - ldr r0, lbl_08067e04 @ =sNonGameplayRamPointer - ldr r1, [r0] - adds r0, r1, #0 - adds r0, #0xfd - ldrb r0, [r0] - cmp r0, #4 - bne lbl_08067e66 - b lbl_08067e3e - .align 2, 0 -lbl_08067e04: .4byte sNonGameplayRamPointer -lbl_08067e08: - ldr r4, lbl_08067e30 @ =sNonGameplayRamPointer - ldr r0, [r4] - ldrh r0, [r0, #2] - cmp r0, #0x1e - bls lbl_08067e66 - movs r0, #0x95 - lsls r0, r0, #2 - bl SoundPlay - ldr r0, [r4] - adds r0, #0xc0 - movs r2, #0 - movs r1, #1 - strb r1, [r0] - ldr r1, [r4] - adds r0, r1, #0 - adds r0, #0xc4 - strh r2, [r0] - strh r2, [r1, #2] - b lbl_08067e42 - .align 2, 0 -lbl_08067e30: .4byte sNonGameplayRamPointer -lbl_08067e34: - ldr r0, lbl_08067e4c @ =sNonGameplayRamPointer - ldr r1, [r0] - ldrh r0, [r1, #2] - cmp r0, #0x5a - bls lbl_08067e66 -lbl_08067e3e: - movs r0, #0 - strh r0, [r1, #2] -lbl_08067e42: - ldrb r0, [r1, #4] - adds r0, #1 - strb r0, [r1, #4] - b lbl_08067e66 - .align 2, 0 -lbl_08067e4c: .4byte sNonGameplayRamPointer -lbl_08067e50: - bl unk_61f0c - ldr r3, lbl_08067e80 @ =sNonGameplayRamPointer - ldr r1, [r3] - ldrb r0, [r1] - adds r0, #1 - movs r2, #0 - strb r0, [r1] - ldr r0, [r3] - strb r2, [r0, #4] - strh r2, [r0, #2] -lbl_08067e66: - ldr r4, lbl_08067e80 @ =sNonGameplayRamPointer - ldr r0, [r4] - adds r0, #0xc0 - bl sub_08067e84 - ldr r0, [r4] - adds r0, #0xf0 - bl sub_08067ed0 - movs r0, #0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -lbl_08067e80: .4byte sNonGameplayRamPointer - - thumb_func_start sub_08067e84 -sub_08067e84: @ 0x08067e84 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2] - cmp r0, #0 - beq lbl_08067ec6 - ldrh r0, [r2, #4] - adds r1, r0, #1 - strh r1, [r2, #4] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne lbl_08067ec6 - movs r0, #2 - ands r1, r0 - cmp r1, #0 - beq lbl_08067eb8 - ldr r0, lbl_08067eb4 @ =0x083f6c0c - ldrh r0, [r0, #4] - bl CutsceneGetBGHOFSPointer - ldrh r1, [r0] - adds r1, #4 - b lbl_08067ec4 - .align 2, 0 -lbl_08067eb4: .4byte 0x083f6c0c -lbl_08067eb8: - ldr r0, lbl_08067ecc @ =0x083f6c0c - ldrh r0, [r0, #4] - bl CutsceneGetBGHOFSPointer - ldrh r1, [r0] - subs r1, #4 -lbl_08067ec4: - strh r1, [r0] -lbl_08067ec6: - pop {r0} - bx r0 - .align 2, 0 -lbl_08067ecc: .4byte 0x083f6c0c - - thumb_func_start sub_08067ed0 -sub_08067ed0: @ 0x08067ed0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #4 - bhi lbl_08067f88 - lsls r0, r0, #2 - ldr r1, lbl_08067ee4 @ =lbl_08067ee8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -lbl_08067ee4: .4byte lbl_08067ee8 -lbl_08067ee8: @ jump table - .4byte lbl_08067f88 @ case 0 - .4byte lbl_08067efc @ case 1 - .4byte lbl_08067f24 @ case 2 - .4byte lbl_08067f34 @ case 3 - .4byte lbl_08067f46 @ case 4 -lbl_08067efc: - adds r0, r4, #0 - movs r1, #2 - bl UpdateCutsceneOamDataID - ldr r0, lbl_08067f18 @ =0x00000253 - bl SoundPlay - ldr r1, lbl_08067f1c @ =gWrittenToBLDALPHA_L - movs r0, #0x10 - strh r0, [r1] - ldr r1, lbl_08067f20 @ =gWrittenToBLDALPHA_H - movs r0, #0 - strh r0, [r1] - b lbl_08067f3e - .align 2, 0 -lbl_08067f18: .4byte 0x00000253 -lbl_08067f1c: .4byte gWrittenToBLDALPHA_L -lbl_08067f20: .4byte gWrittenToBLDALPHA_H -lbl_08067f24: - ldrb r1, [r4, #0xb] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq lbl_08067f88 - movs r0, #0 - strh r0, [r4, #0x14] - b lbl_08067f3e -lbl_08067f34: - movs r1, #0 - strh r1, [r4, #0x1a] - movs r0, #2 - strb r0, [r4, #0x1e] - strh r1, [r4, #0x14] -lbl_08067f3e: - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - b lbl_08067f88 -lbl_08067f46: - ldrh r0, [r4, #0x1a] - adds r1, r0, #0 - cmp r1, #0 - bne lbl_08067f84 - ldrb r0, [r4, #0x1e] - strh r0, [r4, #0x1a] - ldrh r0, [r4, #0x14] - adds r0, #1 - strh r0, [r4, #0x14] - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #3 - bls lbl_08067f62 - strh r1, [r4, #0x14] -lbl_08067f62: - ldr r2, lbl_08067f78 @ =gWrittenToBLDALPHA_L - ldr r1, lbl_08067f7c @ =0x087600dc - ldrh r0, [r4, #0x14] - adds r0, r0, r1 - ldrb r1, [r0] - strh r1, [r2] - ldr r2, lbl_08067f80 @ =gWrittenToBLDALPHA_H - movs r0, #0x10 - subs r0, r0, r1 - strh r0, [r2] - b lbl_08067f88 - .align 2, 0 -lbl_08067f78: .4byte gWrittenToBLDALPHA_L -lbl_08067f7c: .4byte 0x087600dc -lbl_08067f80: .4byte gWrittenToBLDALPHA_H -lbl_08067f84: - subs r0, #1 - strh r0, [r4, #0x1a] -lbl_08067f88: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 - - thumb_func_start samus_in_blue_ship_init -samus_in_blue_ship_init: @ 0x08067f90 - push {r4, r5, r6, lr} - mov r6, sb - mov r5, r8 - push {r5, r6} - sub sp, #4 - bl unk_61f0c - ldr r5, lbl_08068090 @ =0x083f7584 - ldr r2, lbl_08068094 @ =0x05000200 - movs r6, #0x90 - lsls r6, r6, #1 - movs r0, #0x10 - mov r8, r0 - str r0, [sp] - movs r0, #3 - adds r1, r5, #0 - adds r3, r6, #0 - bl DMATransfer - movs r4, #0xa0 - lsls r4, r4, #0x13 - mov r1, r8 - str r1, [sp] - movs r0, #3 - adds r1, r5, #0 - adds r2, r4, #0 - adds r3, r6, #0 - bl DMATransfer - movs r2, #0 - mov sb, r2 - strh r2, [r4] - ldr r0, lbl_08068098 @ =0x083f76a4 - ldr r5, lbl_0806809c @ =0x083f6c0c - ldrb r1, [r5] - lsls r1, r1, #0xe - movs r4, #0xc0 - lsls r4, r4, #0x13 - adds r1, r1, r4 - bl CallLZ77UncompVRAM - ldr r0, lbl_080680a0 @ =0x083fc930 - ldrb r1, [r5, #1] - lsls r1, r1, #0xb - adds r1, r1, r4 - bl CallLZ77UncompVRAM - ldr r0, lbl_080680a4 @ =0x083faf88 - ldr r1, lbl_080680a8 @ =0x06010000 - bl CallLZ77UncompVRAM - ldr r0, [r5] - ldr r1, [r5, #4] - bl CutsceneSetBGCNTPageData - bl CutsceneReset - ldr r4, lbl_080680ac @ =sNonGameplayRamPointer - ldr r1, [r4] - movs r6, #0 - ldr r0, lbl_080680b0 @ =0x00003f50 - strh r0, [r1, #0x1e] - ldr r0, lbl_080680b4 @ =gWrittenToBLDALPHA_L - mov r1, r8 - strh r1, [r0] - ldr r0, lbl_080680b8 @ =gWrittenToBLDALPHA_H - strh r6, [r0] - ldrh r5, [r5, #4] - movs r2, #0x80 - lsls r2, r2, #4 - movs r0, #3 - adds r1, r5, #0 - bl CutsceneSetBackgroundPosition - ldr r0, [r4] - adds r0, #0xf0 - movs r1, #1 - bl UpdateCutsceneOamDataID - ldr r2, [r4] - adds r1, r2, #0 - adds r1, #0xf2 - movs r0, #0x9e - lsls r0, r0, #4 - strh r0, [r1] - subs r1, #2 - subs r0, #0xa4 - strh r0, [r1] - adds r2, #0xfb - ldrb r1, [r2] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2] - ldr r2, [r4] - adds r2, #0xfc - ldrb r1, [r2] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] - movs r0, #2 - bl CutsceneStartBackgroundFading - ldr r1, [r4] - movs r2, #0x80 - lsls r2, r2, #5 - adds r0, r2, #0 - orrs r5, r0 - strh r5, [r1, #0x1c] - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - ldr r0, [r4] - strh r6, [r0, #2] - mov r1, sb - strb r1, [r0, #4] - movs r0, #0 - add sp, #4 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6} - pop {r1} - bx r1 - .align 2, 0 -lbl_08068090: .4byte 0x083f7584 -lbl_08068094: .4byte 0x05000200 -lbl_08068098: .4byte 0x083f76a4 -lbl_0806809c: .4byte 0x083f6c0c -lbl_080680a0: .4byte 0x083fc930 -lbl_080680a4: .4byte 0x083faf88 -lbl_080680a8: .4byte 0x06010000 -lbl_080680ac: .4byte sNonGameplayRamPointer -lbl_080680b0: .4byte 0x00003f50 -lbl_080680b4: .4byte gWrittenToBLDALPHA_L -lbl_080680b8: .4byte gWrittenToBLDALPHA_H - - thumb_func_start samus_in_blue_ship_subroutine -samus_in_blue_ship_subroutine: @ 0x080680bc - push {r4, lr} - ldr r1, lbl_080680e8 @ =0x087600e0 - ldr r0, lbl_080680ec @ =sNonGameplayRamPointer - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, r0, #3 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - adds r4, r0, #0 - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - movs r0, #1 - bl CutsceneUpdateBackgroundsPosition - bl sub_080680f0 - adds r0, r4, #0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -lbl_080680e8: .4byte 0x087600e0 -lbl_080680ec: .4byte sNonGameplayRamPointer - - thumb_func_start sub_080680f0 -sub_080680f0: @ 0x080680f0 - push {lr} - ldr r1, lbl_08068118 @ =gNextOamSlot - movs r0, #0 - strb r0, [r1] - ldr r2, lbl_0806811c @ =0x087600e0 - ldr r0, lbl_08068120 @ =sNonGameplayRamPointer - ldr r1, [r0] - ldrb r0, [r1] - lsls r0, r0, #3 - adds r0, r0, r2 - ldrb r0, [r0, #4] - adds r1, #0xf0 - ldr r2, lbl_08068124 @ =0x083f6c18 - bl ProcessCutsceneOam - bl ResetFreeOAM - pop {r0} - bx r0 - .align 2, 0 -lbl_08068118: .4byte gNextOamSlot -lbl_0806811c: .4byte 0x087600e0 -lbl_08068120: .4byte sNonGameplayRamPointer -lbl_08068124: .4byte 0x083f6c18 - - thumb_func_start UpdateMenuOamDataID -UpdateMenuOamDataID: @ 0x08068128 - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - strb r1, [r0, #0xa] - rsbs r2, r1, #0 - orrs r2, r1 - asrs r2, r2, #0x1f - movs r3, #2 - ands r3, r2 - lsls r3, r3, #6 - ldrb r2, [r0, #0xb] - movs r1, #0x3f - ands r1, r2 - orrs r1, r3 - strb r1, [r0, #0xb] - bx lr - .align 2, 0 - - thumb_func_start UpdateCutsceneOamDataID -UpdateCutsceneOamDataID: @ 0x08068148 - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - strb r1, [r0, #0xa] - rsbs r2, r1, #0 - orrs r2, r1 - asrs r2, r2, #0x1f - movs r3, #2 - ands r3, r2 - lsls r3, r3, #6 - ldrb r2, [r0, #0xb] - movs r1, #0x3f - ands r1, r2 - orrs r1, r3 - strb r1, [r0, #0xb] - bx lr - .align 2, 0 - thumb_func_start sub_08068168 sub_08068168: @ 0x08068168 push {r4, r5, r6, r7, lr} diff --git a/database.txt b/database.txt index e714accb..75e3a74e 100644 --- a/database.txt +++ b/database.txt @@ -903,6 +903,13 @@ cutscenes/EnterTourian/DeadSpacePirate_3.gfx.lz;32;0x3f5f84;4 cutscenes/EnterTourian/Background.tt;385;0x3f6004;4 cutscenes/EnterTourian/Foreground.tt;385;0x3f6608;4 +# Samus in blue ship + +cutscenes/SamusInBlueShip/Ship.pal;144;0x3f7584;2 +cutscenes/SamusInBlueShip/Samus.gfx.lz;3641;0x3f76a4;4 +cutscenes/SamusInBlueShip/Controls.gfx.lz;1642;0x3faf88;4 +cutscenes/SamusInBlueShip/Ship.tt;368;0x3fc930;4 + ## Menus # Title screen @@ -2351,13 +2358,13 @@ Blob_2ceaa8_2cfd9f.bin;4856;0x2ceaa8;1 Blob_2d5ba0_2d7ae7.bin;7988;0x2d5ba0;1 Blob_34099c_345868.bin;20172;0x34099c;1 Blob_375cc4_386f60.bin;70300;0x375cc4;1 -Blob_3f6c0c_411400.bin;108532;0x3f6c0c;1 +Blob_3fcef0_411400.bin;83216;0x3fcef0;1 Blob_415460_446d68.bin;203016;0x415460;1 Blob_44f11c_45f45c.bin;66368;0x44f11c;1 Blob_479400_4bfee4.bin;289508;0x479400;1 Blob_549b44_74f8b4.bin;2121072;0x549b44;1 Blob_754bd0_75e6a8.bin;39640;0x754bd0;1 Blob_75fae4_75fd78.bin;660;0x75fae4;1 -Blob_760090_760420.bin;912;0x760090;1 +Blob_7600f8_760420.bin;808;0x7600f8;1 Blob_760458_760aa0.bin;1608;0x760458;1 Blob_760aef_7f7734.bin;617541;0x760aef;1 diff --git a/include/data/cutscenes/samus_in_blue_ship_data.h b/include/data/cutscenes/samus_in_blue_ship_data.h index 35406275..47b183ea 100644 --- a/include/data/cutscenes/samus_in_blue_ship_data.h +++ b/include/data/cutscenes/samus_in_blue_ship_data.h @@ -10,7 +10,7 @@ extern const struct CutscenePageData sSamusInBlueShipPageData[1]; extern const struct OamArray sSamusInBlueShipOam[3]; extern const u16 sSamusInBlueShipPAL[9 * 16]; -extern const u32 sSamusInBlueShipSamusGFX[3636]; +extern const u32 sSamusInBlueShipSamusGFX[3641]; extern const u32 sSamusInBlueShipControlsGFX[1642]; extern const u32 sSamusInBlueShipSamusTileTable[368]; diff --git a/linker.ld b/linker.ld index bed6c379..81ec5b6b 100644 --- a/linker.ld +++ b/linker.ld @@ -522,7 +522,10 @@ SECTIONS { src/cutscenes/getting_fully_powered_suit.o(.text); src/cutscenes/before_charlie.o(.text); src/cutscenes/statue_opening.o(.text); - asm/disasm_0x08067080.o(.text); + src/cutscenes/enter_tourian.o(.text); + src/cutscenes/samus_in_blue_ship.o(.text); + src/oam_id.o(.text); + asm/disasm_0x08068168.o(.text); src/menus/erase_sram.o(.text); src/menus/title_screen.o(.text); asm/disasm_0x080778c4.o(.text); @@ -664,7 +667,8 @@ SECTIONS { src/data/cutscenes/before_charlie_data.o(.rodata); src/data/cutscenes/statue_opening_data.o(.rodata); src/data/cutscenes/enter_tourian_data.o(.rodata); - /* 3f6c0c-411400 */ + src/data/cutscenes/samus_in_blue_ship_data.o(.rodata); + /* 3fcef0-411400 */ src/data/save_file_data.o(.rodata); src/data/menus/erase_sram_data.o(.rodata); /* 415460-446d68 */ @@ -691,6 +695,8 @@ SECTIONS { src/data/cutscenes/internal_getting_fully_powered_suit_data.o(.rodata); src/data/cutscenes/internal_before_charlie_data.o(.rodata); src/data/cutscenes/internal_statue_opening_data.o(.rodata); + src/data/cutscenes/internal_enter_tourian_data.o(.rodata); + src/data/cutscenes/internal_samus_in_blue_ship_data.o(.rodata); /* 760090-760420 */ src/data/menus/internal_erase_sram_data.o(.rodata) /* 760458-760aa0 */ diff --git a/src/complex_oam.c b/src/complex_oam.c index e8949424..428be656 100644 --- a/src/complex_oam.c +++ b/src/complex_oam.c @@ -79,32 +79,22 @@ u8 ProcessComplexOam(u32 oamSlot, i16 xPosition, i16 yPosition, u16 rotation, i1 void CalculateOamPart4(u16 rotation, i16 scaling, u8 oamSlot) { - // https://decomp.me/scratch/jijJJ - - i32 c; - i32 s; - i32 minusS; i32 dy1; i32 dmy1; i32 dx1; i32 dmx1; i32 dy2; i32 dmy2; + + dy1 = FixedMultiplication(cos(rotation), FixedInverse(scaling)); + + dmy1 = FixedMultiplication(sin(rotation), FixedInverse(scaling)); + dx1 = FixedMultiplication(-sin(rotation), FixedInverse(scaling)); - c = cos(rotation); - dy1 = FixedMultiplication(c, FixedInverse(scaling)); + dmx1 = FixedMultiplication(cos(rotation), FixedInverse(-scaling)); - s = sin(rotation); - dmy1 = FixedMultiplication(s, FixedInverse(scaling)); - - minusS = -sin(rotation); - dx1 = FixedMultiplication(minusS, FixedInverse(scaling)); - - scaling = -scaling; - dmx1 = FixedMultiplication(c, FixedInverse(scaling)); - - dy2 = FixedMultiplication(s, FixedInverse(scaling)); - dmy2 = FixedMultiplication(minusS, FixedInverse(scaling)); + dy2 = FixedMultiplication(sin(rotation), FixedInverse(-scaling)); + dmy2 = FixedMultiplication(-sin(rotation), FixedInverse(-scaling)); gOamData[oamSlot].all.affineParam = dy1; gOamData[oamSlot + 1].all.affineParam = dmy1; diff --git a/src/cutscenes/enter_tourian.c b/src/cutscenes/enter_tourian.c index af3b3f78..db5e4a83 100644 --- a/src/cutscenes/enter_tourian.c +++ b/src/cutscenes/enter_tourian.c @@ -1,5 +1,6 @@ #include "cutscenes/enter_tourian.h" #include "cutscenes/cutscene_utils.h" +#include "color_effects.h" #include "macros.h" #include "data/shortcut_pointers.h" @@ -466,7 +467,7 @@ void EnterTourianUpdatePirate(struct CutsceneOamData* pOam) pOam->unk_1A = 0; pOam->unk_12++; - ApplySmoothPaletteTransition(sEwramPointer + 0x280, sEwramPointer + 0x3AA0, PALRAM_BASE + 0x280, pOam->unk_12); + ApplySmoothPaletteTransition((void*)sEwramPointer + 0x280, (void*)sEwramPointer + 0x3AA0, PALRAM_BASE + 0x280, pOam->unk_12); if (pOam->unk_12 > 30) pOam->actions ^= 2; } @@ -501,16 +502,16 @@ u8 EnterTourianInit(void) DMATransfer(3, sEnterTourianMetroidPAL, PALRAM_OBJ, sizeof(sEnterTourianMetroidPAL), 0x10); DMATransfer(3, sMetroidPAL, PALRAM_BASE + 0x300, sizeof(sMetroidPAL), 0x10); - CallLZ77UncompWRAM(sEnterTourianDeadSpacePirateGFX_1, VRAM_BASE + 0x10000); - CallLZ77UncompWRAM(sEnterTourianDeadSpacePirateGFX_2, VRAM_BASE + 0x10400); - CallLZ77UncompWRAM(sEnterTourianDeadSpacePirateGFX_3, VRAM_BASE + 0x10800); - CallLZ77UncompWRAM(sMetroidGFX, VRAM_BASE + 0x14000); + CallLZ77UncompVRAM(sEnterTourianDeadSpacePirateGFX_1, VRAM_BASE + 0x10000); + CallLZ77UncompVRAM(sEnterTourianDeadSpacePirateGFX_2, VRAM_BASE + 0x10400); + CallLZ77UncompVRAM(sEnterTourianDeadSpacePirateGFX_3, VRAM_BASE + 0x10800); + CallLZ77UncompVRAM(sMetroidGFX, VRAM_BASE + 0x14000); - CallLZ77UncompWRAM(sEnterTourianBackgroundGFX, VRAM_BASE + sEnterTourianPageData[0].graphicsPage * 0x4000); - CallLZ77UncompWRAM(sEnterTourianForegroundGFX, VRAM_BASE + sEnterTourianPageData[1].graphicsPage * 0x4000); + CallLZ77UncompVRAM(sEnterTourianBackgroundGFX, VRAM_BASE + sEnterTourianPageData[0].graphicsPage * 0x4000); + CallLZ77UncompVRAM(sEnterTourianForegroundGFX, VRAM_BASE + sEnterTourianPageData[1].graphicsPage * 0x4000); - CallLZ77UncompWRAM(sEnterTourianBackgroundTileTable, VRAM_BASE + sEnterTourianPageData[0].tiletablePage * 0x800); - CallLZ77UncompWRAM(sEnterTourianForegroundTileTable, VRAM_BASE + sEnterTourianPageData[1].tiletablePage * 0x800); + CallLZ77UncompVRAM(sEnterTourianBackgroundTileTable, VRAM_BASE + sEnterTourianPageData[0].tiletablePage * 0x800); + CallLZ77UncompVRAM(sEnterTourianForegroundTileTable, VRAM_BASE + sEnterTourianPageData[1].tiletablePage * 0x800); CutsceneSetBGCNTPageData(sEnterTourianPageData[0]); CutsceneSetBGCNTPageData(sEnterTourianPageData[1]); diff --git a/src/data/cutscenes/enter_tourian_data.c b/src/data/cutscenes/enter_tourian_data.c index a5855c54..ab2c2d90 100644 --- a/src/data/cutscenes/enter_tourian_data.c +++ b/src/data/cutscenes/enter_tourian_data.c @@ -86,5 +86,3 @@ const u32 sEnterTourianDeadSpacePirateGFX_2[77] = INCBIN_U32("data/cutscenes/Ent const u32 sEnterTourianDeadSpacePirateGFX_3[32] = INCBIN_U32("data/cutscenes/EnterTourian/DeadSpacePirate_3.gfx.lz"); const u32 sEnterTourianBackgroundTileTable[385] = INCBIN_U32("data/cutscenes/EnterTourian/Background.tt"); const u32 sEnterTourianForegroundTileTable[385] = INCBIN_U32("data/cutscenes/EnterTourian/Foreground.tt"); - -const u8 sTempArray_3f6c0c[0x1a7f4] = INCBIN_U8("data/Blob_3f6c0c_411400.bin"); diff --git a/src/data/cutscenes/internal_enter_tourian_data.c b/src/data/cutscenes/internal_enter_tourian_data.c new file mode 100644 index 00000000..12ab56b5 --- /dev/null +++ b/src/data/cutscenes/internal_enter_tourian_data.c @@ -0,0 +1,75 @@ +#include "data/cutscenes/internal_enter_tourian_data.h" +#include "cutscenes/enter_tourian.h" + +const u16 sEnterTourian_760090[9][2] = { + [0] = { + BLOCK_SIZE * 38 + QUARTER_BLOCK_SIZE, + BLOCK_SIZE * 39 - QUARTER_BLOCK_SIZE + }, + [1] = { + BLOCK_SIZE * 37 + QUARTER_BLOCK_SIZE, + BLOCK_SIZE * 38 + QUARTER_BLOCK_SIZE + 8 + }, + [2] = { + BLOCK_SIZE * 39 - QUARTER_BLOCK_SIZE, + BLOCK_SIZE * 38 + HALF_BLOCK_SIZE + }, + [3] = { + BLOCK_SIZE * 38, + BLOCK_SIZE * 38 + }, + [4] = { + BLOCK_SIZE * 38 + 8, + BLOCK_SIZE * 39 + 8 + }, + [5] = { + 0, + 0 + }, + [6] = { + 0, + 0 + }, + [7] = { + 0, + 0 + }, + [8] = { + 0, + 0 + } +}; + +const i16 sEnterTourian_7600b4[4][2] = { + [0] = { + BLOCK_SIZE * 38 + 12, + BLOCK_SIZE * 34 + HALF_BLOCK_SIZE + }, + [1] = { + BLOCK_SIZE * 37 - QUARTER_BLOCK_SIZE, + BLOCK_SIZE * 37 + }, + [2] = { + BLOCK_SIZE * 42 - QUARTER_BLOCK_SIZE, + BLOCK_SIZE * 37 + QUARTER_BLOCK_SIZE + }, + [3] = { + BLOCK_SIZE * 40, + BLOCK_SIZE * 36 + HALF_BLOCK_SIZE + 8 + } +}; + +const struct CutsceneSubroutineData sEnterTourianSubroutineData[3] = { + [0] = { + .pFunction = EnterTourianInit, + .oamLength = 9 + }, + [1] = { + .pFunction = EnterTourianAnimation, + .oamLength = 9 + }, + [2] = { + .pFunction = (CutsceneFunc_T)0x8061229,//CutsceneEndFunction, + .oamLength = 9 + } +}; diff --git a/src/data/cutscenes/internal_samus_in_blue_ship_data.c b/src/data/cutscenes/internal_samus_in_blue_ship_data.c new file mode 100644 index 00000000..422bb7c2 --- /dev/null +++ b/src/data/cutscenes/internal_samus_in_blue_ship_data.c @@ -0,0 +1,24 @@ +#include "data/cutscenes/internal_samus_in_blue_ship_data.h" +#include "cutscenes/samus_in_blue_ship.h" +#include "macros.h" + +const u8 sSamusInBlueShipPanelTransparency[4] = { + 16, 15, 14, 15 +}; + +const struct CutsceneSubroutineData sSamusInBlueShipSubroutineData[3] = { + [0] = { + .pFunction = SamusInBlueShipInit, + .oamLength = 1 + }, + [1] = { + .pFunction = SamusInBlueShipPoweringUp, + .oamLength = 1 + }, + [2] = { + .pFunction = (CutsceneFunc_T)0x8061229, //CutsceneEndFunction, + .oamLength = 1 + } +}; + +const u8 sTempArray_7600f8[0x328] = INCBIN_U8("data/Blob_7600f8_760420.bin"); diff --git a/src/data/cutscenes/internal_statue_opening_data.c b/src/data/cutscenes/internal_statue_opening_data.c index fbb46d24..8388e3e2 100644 --- a/src/data/cutscenes/internal_statue_opening_data.c +++ b/src/data/cutscenes/internal_statue_opening_data.c @@ -1,7 +1,6 @@ #include "data/cutscenes/internal_statue_opening_data.h" #include "cutscenes/statue_opening.h" #include "cutscenes/cutscene_utils.h" -#include "macros.h" const struct CutsceneSubroutineData sStatueOpeningSubroutineData[3] = { [0] = { @@ -17,5 +16,3 @@ const struct CutsceneSubroutineData sStatueOpeningSubroutineData[3] = { .oamLength = 2 } }; - -const u8 sTempArray_760090[0x390] = INCBIN_U8("data/Blob_760090_760420.bin"); diff --git a/src/data/cutscenes/samus_in_blue_ship_data.c b/src/data/cutscenes/samus_in_blue_ship_data.c new file mode 100644 index 00000000..49ad70db --- /dev/null +++ b/src/data/cutscenes/samus_in_blue_ship_data.c @@ -0,0 +1,487 @@ +#include "data/cutscenes/samus_in_blue_ship_data.h" +#include "gba.h" +#include "macros.h" + +const struct CutscenePageData sSamusInBlueShipPageData[1] = { + [0] = { + .graphicsPage = 0, + .tiletablePage = 0x1F, + .priority = 3, + .bg = DCNT_BG3, + .screenSize = 0 + } +}; + +static const struct CutsceneScreenShakeInfo sSamusInBlueShipScreenShake = { + .type = 0, + .maxDelay = 2, + .set = 0 +}; + +extern const struct FrameData sSamusInBlueShipOam_Controls[11]; +const struct OamArray sSamusInBlueShipOam[3] = { + [0] = { + .pOam = sSamusInBlueShipOam_Controls, + .preAction = OAM_ARRAY_PRE_ACTION_NONE + }, + [1] = { + .pOam = sSamusInBlueShipOam_Controls, + .preAction = OAM_ARRAY_PRE_ACTION_RESET_FRAME + }, + [2] = { + .pOam = sSamusInBlueShipOam_Controls, + .preAction = OAM_ARRAY_PRE_ACTION_LOOP_ON_LAST_FRAME + } +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame0[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, OBJ_SPRITE_OAM | 0x180, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_SIZE_32x32 | 0x190, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, OBJ_SPRITE_OAM | 0x180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, OBJ_SPRITE_OAM | 0x104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, OBJ_SPRITE_OAM | 0x1, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, OBJ_SPRITE_OAM | 0x1, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, OBJ_SPRITE_OAM | 0x46, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, OBJ_SPRITE_OAM | 0xc6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, OBJ_SPRITE_OAM | 0x46, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, OBJ_SPRITE_OAM | 0xc6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, OBJ_SPRITE_OAM | 0x4, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, OBJ_SPRITE_OAM | 0x8, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, OBJ_SPRITE_OAM | 0x46 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame1[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x280, + 0xee, OBJ_SIZE_32x32 | 0x190, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, OBJ_SPRITE_OAM | 0x180, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, OBJ_SPRITE_OAM | 0x180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, OBJ_SPRITE_OAM | 0x104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, OBJ_SPRITE_OAM | 0x1, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, OBJ_SPRITE_OAM | 0x1, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, OBJ_SPRITE_OAM | 0x46, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, OBJ_SPRITE_OAM | 0xc6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, OBJ_SPRITE_OAM | 0x46, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, OBJ_SPRITE_OAM | 0xc6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, OBJ_SPRITE_OAM | 0x46 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame2[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x280, + 0xee, OBJ_SIZE_32x32 | 0x190, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, OBJ_SPRITE_OAM | 0x180, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, OBJ_SPRITE_OAM | 0x180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, OBJ_SPRITE_OAM | 0x104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, OBJ_SPRITE_OAM | 0x1, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, OBJ_SPRITE_OAM | 0x1, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame3[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x280, + 0xee, OBJ_SIZE_32x32 | 0x190, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, OBJ_SPRITE_OAM | 0x180, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, OBJ_SPRITE_OAM | 0x180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, OBJ_SPRITE_OAM | 0x84, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, OBJ_SPRITE_OAM | 0x100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, OBJ_SPRITE_OAM | 0x104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, OBJ_SPRITE_OAM | 0x80, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, OBJ_SPRITE_OAM | 0x84, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, OBJ_SPRITE_OAM | 0x104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame4[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x280, + 0xee, OBJ_SIZE_32x32 | 0x190, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, OBJ_SPRITE_OAM | 0x180, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, OBJ_SPRITE_OAM | 0x180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, 0x7100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, 0x7100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, 0x7104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame5[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, 0x7180, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x280, + 0xee, OBJ_SIZE_32x32 | 0x190, OBJ_SPRITE_OAM | 0x200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, 0x7180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, 0x7100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, 0x7100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, 0x7104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame6[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, OBJ_SPRITE_OAM | 0x144, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, 0x7180, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, OBJ_SPRITE_OAM | 0x184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, OBJ_SPRITE_OAM | 0x144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, OBJ_SPRITE_OAM | 0x184, + 0xee, OBJ_SIZE_32x32 | 0x190, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, 0x7180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, 0x7100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, 0x7100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, 0x7104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame7[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, 0x7144, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, 0x7180, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, OBJ_SPRITE_OAM | 0x2e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, OBJ_SPRITE_OAM | 0x2a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, OBJ_SPRITE_OAM | 0x2e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, 0x7144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, 0x7184, + 0xee, OBJ_SIZE_32x32 | 0x190, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, 0x7180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, 0x7100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, 0x7100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, 0x7104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame8[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, 0x7144, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, 0x7180, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, 0x72a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, 0x72e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, OBJ_SPRITE_OAM | 0x2e0, + 0x26, OBJ_SIZE_16x16 | 0x198, OBJ_SPRITE_OAM | 0x2a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, OBJ_SPRITE_OAM | 0x2e0, + 0x16, OBJ_SIZE_16x16 | 0x195, 0x72a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, 0x72e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, 0x7144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, 0x7184, + 0xee, OBJ_SIZE_32x32 | 0x190, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, 0x7180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, 0x7100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, 0x7100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, 0x7104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const u16 sSamusInBlueShipOam_Controls_Frame9[OAM_DATA_SIZE(38)] = { + 0x26, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x50, 0x7144, + 0xee, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x50, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_SIZE_32x16 | 0x1a6, 0x7180, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_X_FLIP | OBJ_SIZE_32x8 | 0x50, 0x7184, + 0x16, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x5b, 0x72a2, + OBJ_SHAPE_HORIZONTAL | 0x26, OBJ_X_FLIP | 0x5b, 0x72e2, + 0x26, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x58, 0x72a0, + OBJ_SHAPE_HORIZONTAL | 0x36, OBJ_X_FLIP | 0x58, 0x72e0, + 0x26, OBJ_SIZE_16x16 | 0x198, 0x72a0, + OBJ_SHAPE_HORIZONTAL | 0x36, 0x198, 0x72e0, + 0x16, OBJ_SIZE_16x16 | 0x195, 0x72a2, + OBJ_SHAPE_HORIZONTAL | 0x26, 0x195, 0x72e2, + OBJ_SHAPE_HORIZONTAL | 0x8, OBJ_SIZE_32x16 | 0x190, 0x7144, + OBJ_SHAPE_HORIZONTAL | 0x18, OBJ_SIZE_32x8 | 0x190, 0x7184, + 0xee, OBJ_SIZE_32x32 | 0x190, 0x7200, + OBJ_SHAPE_HORIZONTAL | 0xe, OBJ_SIZE_32x8 | 0x190, 0x7280, + OBJ_SHAPE_HORIZONTAL | 0xcc, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x3a, 0x7180, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x26, 0x7100, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb8, OBJ_SIZE_32x32 | 0x1ba, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_SIZE_16x32 | 0x1da, 0x7084, + OBJ_SHAPE_HORIZONTAL | 0xd8, OBJ_SIZE_32x16 | 0x1ba, 0x7100, + 0xd8, OBJ_SIZE_16x16 | 0x1da, 0x7104, + 0xb9, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x10, 0x7001, + 0xb9, OBJ_SIZE_32x32 | 0x1d0, 0x7001, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_X_FLIP | OBJ_SIZE_32x16 | 0x0, 0x70c6, + 0xb0, OBJ_SIZE_32x32 | 0x1e0, 0x7046, + OBJ_SHAPE_HORIZONTAL | 0xd0, OBJ_SIZE_32x16 | 0x1e0, 0x70c6, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x1e0, 0x7004, + OBJ_SHAPE_HORIZONTAL | 0xb0, OBJ_SIZE_32x16 | 0x0, 0x7008, + 0xb8, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x26, 0x7080, + OBJ_SHAPE_VERTICAL | 0xb8, OBJ_X_FLIP | OBJ_SIZE_16x32 | 0x16, 0x7084, + 0xd8, OBJ_X_FLIP | OBJ_SIZE_16x16 | 0x16, 0x7104, + 0xb0, OBJ_X_FLIP | OBJ_SIZE_32x32 | 0x0, 0x7046 +}; + +static const struct FrameData sSamusInBlueShipOam_Controls[11] = { + sSamusInBlueShipOam_Controls_Frame0, + 30, + sSamusInBlueShipOam_Controls_Frame1, + 16, + sSamusInBlueShipOam_Controls_Frame2, + 10, + sSamusInBlueShipOam_Controls_Frame3, + 8, + sSamusInBlueShipOam_Controls_Frame4, + 4, + sSamusInBlueShipOam_Controls_Frame5, + 2, + sSamusInBlueShipOam_Controls_Frame6, + 2, + sSamusInBlueShipOam_Controls_Frame7, + 2, + sSamusInBlueShipOam_Controls_Frame8, + 2, + sSamusInBlueShipOam_Controls_Frame9, + 60, + NULL, + 0 +}; + +const u16 sSamusInBlueShipPAL[9 * 16] = INCBIN_U16("data/cutscenes/SamusInBlueShip/Ship.pal"); +const u32 sSamusInBlueShipSamusGFX[3641] = INCBIN_U32("data/cutscenes/SamusInBlueShip/Samus.gfx.lz"); +const u32 sSamusInBlueShipControlsGFX[1642] = INCBIN_U32("data/cutscenes/SamusInBlueShip/Controls.gfx.lz"); +const u32 sSamusInBlueShipSamusTileTable[368] = INCBIN_U32("data/cutscenes/SamusInBlueShip/Ship.tt"); + +const u8 sTempArray_3fcef0[0x14510] = INCBIN_U8("data/Blob_3fcef0_411400.bin"); diff --git a/tools/extractor.py b/tools/extractor.py index 82bf810d..1f33d9f7 100644 --- a/tools/extractor.py +++ b/tools/extractor.py @@ -24,6 +24,7 @@ subDirs: array = [ "cutscenes/BeforeCharlie/", "cutscenes/StatueOpening/", "cutscenes/EnterTourian/", + "cutscenes/SamusInBlueShip/", "menus/", "menus/TitleScreen/", "menus/EraseSram/",