diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index d10d43e..efecf13 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -10942,610 +10942,3 @@ _0803C6D0: .4byte 0x00001290 _0803C6D4: .4byte 0x000004C9 _0803C6D8: .4byte gMPlayInfo_BGM _0803C6DC: .4byte 0x0000FFFF - - thumb_func_start sub_3C6E0 -sub_3C6E0: @ 0x0803C6E0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r7, _0803C820 @ =gMain+0x17D0 @gMain.spriteGroups[29] - ldrh r0, [r7] - ldr r1, _0803C824 @ =gCurrentPinballGame - mov sl, r1 - cmp r0, #0 - bne _0803C6FA - b _0803CA2E -_0803C6FA: - ldr r1, _0803C828 @ =gUnknown_086AF140 - mov r2, sl - ldr r4, [r2] - ldr r3, _0803C82C @ =0x000003E2 - adds r0, r4, r3 - movs r6, #0 - ldrsh r0, [r0, r6] - lsls r0, r0, #2 - adds r0, r0, r1 - ldrh r0, [r0] - mov r8, r0 - movs r6, #0xfa - lsls r6, r6, #2 - adds r0, r4, r6 - movs r1, #0 - ldrsh r0, [r0, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x64 - adds r4, #0x58 - ldrh r1, [r4] - subs r0, r0, r1 - strh r0, [r7, #2] - mov r2, sl - ldr r4, [r2] - ldr r5, _0803C830 @ =0x000003EA - adds r0, r4, r5 - movs r3, #0 - ldrsh r0, [r0, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x54 - adds r4, #0x5a - ldrh r1, [r4] - subs r0, r0, r1 - strh r0, [r7, #4] - mov r0, sl - ldr r4, [r0] - adds r6, r4, r6 - movs r1, #0 - ldrsh r0, [r6, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x76 - movs r2, #0xa2 - lsls r2, r2, #2 - adds r1, r4, r2 - strh r0, [r1] - adds r5, r4, r5 - movs r3, #0 - ldrsh r0, [r5, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x3c - ldr r2, _0803C834 @ =0x0000028A - adds r1, r4, r2 - strh r0, [r1] - movs r3, #0 - ldrsh r0, [r6, r3] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0xb8 - movs r6, #0xfc - lsls r6, r6, #2 - adds r1, r4, r6 - strh r0, [r1] - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0x9c - ldr r2, _0803C838 @ =0x000003F2 - adds r4, r4, r2 - strh r0, [r4] - movs r3, #4 - ldrsh r1, [r7, r3] - movs r0, #0x3c - rsbs r0, r0, #0 - cmp r1, r0 - bge _0803C7B2 - ldr r0, _0803C83C @ =0x0000FFC4 - strh r0, [r7, #4] -_0803C7B2: - movs r4, #4 - ldrsh r0, [r7, r4] - cmp r0, #0xb4 - ble _0803C7BE - movs r0, #0xb4 - strh r0, [r7, #4] -_0803C7BE: - mov r6, sl - ldr r0, [r6] - ldr r1, _0803C840 @ =0x00000389 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #9 - ble _0803C84C - movs r2, #0 - ldr r4, _0803C844 @ =gOamBuffer - ldr r3, _0803C848 @ =0xFFFFFE00 - mov r8, r3 - movs r6, #0xb0 -_0803C7DA: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r4 - ldrh r1, [r2, #2] - mov r0, r8 - ands r0, r1 - movs r1, #0xf0 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r0, [r5] - lsls r0, r0, #3 - adds r0, r0, r4 - movs r1, #0xb4 - strb r1, [r0] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r4 - ldrb r2, [r1, #5] - movs r0, #0xf - ands r0, r2 - orrs r0, r6 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C7DA - b _0803CA2E - .align 2, 0 -_0803C820: .4byte gMain+0x17D0 @gMain.spriteGroups[29] -_0803C824: .4byte gCurrentPinballGame -_0803C828: .4byte gUnknown_086AF140 -_0803C82C: .4byte 0x000003E2 -_0803C830: .4byte 0x000003EA -_0803C834: .4byte 0x0000028A -_0803C838: .4byte 0x000003F2 -_0803C83C: .4byte 0x0000FFC4 -_0803C840: .4byte 0x00000389 -_0803C844: .4byte gOamBuffer -_0803C848: .4byte 0xFFFFFE00 -_0803C84C: - cmp r0, #1 - bne _0803C8FC - movs r2, #0 - mov r4, r8 - lsls r0, r4, #0x10 - ldr r6, _0803C8EC @ =gOamBuffer - asrs r1, r0, #0x10 - movs r0, #0x72 - adds r3, r1, #0 - muls r3, r0, r3 - mov r8, r3 - ldr r4, _0803C8F0 @ =0xFFFFFE00 - mov ip, r4 - movs r0, #0xe0 - mov sb, r0 -_0803C86A: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - adds r2, r0, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0803C8F4 @ =gUnknown_086B65EA - adds r0, r0, r1 - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r6 - ldrh r0, [r2, #2] - lsls r1, r0, #0x17 - lsrs r1, r1, #0x17 - str r1, [sp] - movs r4, #2 - ldrsh r1, [r7, r4] - ldr r0, [sp] - adds r1, r0, r1 - ldr r4, _0803C8F8 @ =0x000001FF - ands r1, r4 - mov r0, ip - ldrh r4, [r2, #2] - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r2, [r1, #5] - movs r0, #0xf - ands r0, r2 - mov r4, sb - orrs r0, r4 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C86A - b _0803CA2E - .align 2, 0 -_0803C8EC: .4byte gOamBuffer -_0803C8F0: .4byte 0xFFFFFE00 -_0803C8F4: .4byte gUnknown_086B65EA -_0803C8F8: .4byte 0x000001FF -_0803C8FC: - cmp r0, #3 - bne _0803C9AC - movs r2, #0 - mov r6, r8 - lsls r0, r6, #0x10 - ldr r6, _0803C99C @ =gOamBuffer - asrs r1, r0, #0x10 - movs r0, #0x72 - adds r3, r1, #0 - muls r3, r0, r3 - mov r8, r3 - ldr r4, _0803C9A0 @ =0xFFFFFE00 - mov ip, r4 - movs r0, #0xb0 - mov sb, r0 -_0803C91A: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - adds r2, r0, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0803C9A4 @ =gUnknown_086B65EA - adds r0, r0, r1 - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - adds r2, r2, r6 - ldrh r0, [r2, #2] - lsls r1, r0, #0x17 - lsrs r1, r1, #0x17 - str r1, [sp] - movs r4, #2 - ldrsh r1, [r7, r4] - ldr r0, [sp] - adds r1, r0, r1 - ldr r4, _0803C9A8 @ =0x000001FF - ands r1, r4 - mov r0, ip - ldrh r4, [r2, #2] - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r2, [r1, #5] - movs r0, #0xf - ands r0, r2 - mov r4, sb - orrs r0, r4 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C91A - b _0803CA2E - .align 2, 0 -_0803C99C: .4byte gOamBuffer -_0803C9A0: .4byte 0xFFFFFE00 -_0803C9A4: .4byte gUnknown_086B65EA -_0803C9A8: .4byte 0x000001FF -_0803C9AC: - movs r2, #0 - mov r6, r8 - lsls r0, r6, #0x10 - ldr r1, _0803CB6C @ =gOamBuffer - mov sb, r1 - asrs r1, r0, #0x10 - movs r0, #0x72 - adds r3, r1, #0 - muls r3, r0, r3 - mov r8, r3 - ldr r4, _0803CB70 @ =0xFFFFFE00 - mov ip, r4 -_0803C9C4: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - mov r6, sb - adds r2, r0, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - ldr r1, _0803CB74 @ =gUnknown_086B65EA - adds r0, r0, r1 - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - add r2, sb - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r6, #2 - ldrsh r0, [r7, r6] - adds r1, r1, r0 - ldr r6, _0803CB78 @ =0x000001FF - adds r0, r6, #0 - ands r1, r0 - mov r0, ip - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #0x12 - ble _0803C9C4 -_0803CA2E: - ldr r7, _0803CB7C @ =gMain+0x1380 @gMain.spriteGroups[23] - ldrh r0, [r7] - cmp r0, #0 - bne _0803CA38 - b _0803CB98 -_0803CA38: - mov r3, sl - ldr r0, [r3] - ldr r4, _0803CB80 @ =0x0000047E - adds r1, r0, r4 - ldrb r2, [r1] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - ble _0803CA5E - subs r0, r2, #1 - strb r0, [r1] - ldr r0, [r3] - adds r0, r0, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0803CA5E - strh r0, [r7] -_0803CA5E: - mov r6, sl - ldr r4, [r6] - ldr r1, _0803CB84 @ =0x0000047D - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #1 - adds r1, r0, #1 - ldr r2, _0803CB80 @ =0x0000047E - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bge _0803CA80 - adds r0, #3 -_0803CA80: - asrs r0, r0, #2 - subs r0, r1, r0 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov r8, r0 - movs r3, #0xfa - lsls r3, r3, #2 - adds r0, r4, r3 - movs r6, #0 - ldrsh r0, [r0, r6] - movs r1, #0xa - bl __divsi3 - adds r0, #0x64 - adds r1, r4, #0 - adds r1, #0x58 - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #2] - ldr r1, _0803CB88 @ =0x000003EA - adds r0, r4, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - movs r1, #0xa - bl __divsi3 - adds r0, #0x54 - adds r1, r4, #0 - adds r1, #0x5a - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #4] - movs r2, #0 - ldr r3, _0803CB8C @ =gUnknown_086B6512 - mov sb, r3 - mov r4, r8 - lsls r1, r4, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #3 - adds r0, r0, r1 - lsls r0, r0, #2 - mov r8, r0 - ldr r6, _0803CB70 @ =0xFFFFFE00 - mov ip, r6 -_0803CAD8: - lsls r3, r2, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r0, [r5] - lsls r0, r0, #3 - ldr r1, _0803CB6C @ =gOamBuffer - adds r2, r0, r1 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - add r0, sb - mov r4, r8 - adds r1, r4, r0 - ldrh r0, [r1] - strh r0, [r2] - adds r1, #2 - adds r2, #2 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, #2] - strh r0, [r2, #2] - ldrh r2, [r5] - lsls r2, r2, #3 - ldr r6, _0803CB6C @ =gOamBuffer - adds r2, r2, r6 - ldrh r4, [r2, #2] - lsls r1, r4, #0x17 - lsrs r1, r1, #0x17 - movs r6, #2 - ldrsh r0, [r7, r6] - adds r1, r1, r0 - ldr r6, _0803CB78 @ =0x000001FF - adds r0, r6, #0 - ands r1, r0 - mov r0, ip - ands r0, r4 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - ldr r0, _0803CB6C @ =gOamBuffer - adds r1, r1, r0 - ldrb r0, [r7, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #5 - ble _0803CAD8 - mov r3, sl - ldr r0, [r3] - ldr r4, _0803CB90 @ =0x000005A4 - adds r0, r0, r4 - ldrb r0, [r0] - cmp r0, #2 - bne _0803CBAE - ldr r0, _0803CB94 @ =gMain - movs r6, #0x9c - lsls r6, r6, #5 - adds r0, r0, r6 - movs r2, #0 - movs r1, #0 - strh r1, [r0] - ldr r0, [r3] - ldr r1, _0803CB80 @ =0x0000047E - adds r0, r0, r1 - strb r2, [r0] - b _0803CBAE - .align 2, 0 -_0803CB6C: .4byte gOamBuffer -_0803CB70: .4byte 0xFFFFFE00 -_0803CB74: .4byte gUnknown_086B65EA -_0803CB78: .4byte 0x000001FF -_0803CB7C: .4byte gMain+0x1380 @gMain.spriteGroups[23] -_0803CB80: .4byte 0x0000047E -_0803CB84: .4byte 0x0000047D -_0803CB88: .4byte 0x000003EA -_0803CB8C: .4byte gUnknown_086B6512 -_0803CB90: .4byte 0x000005A4 -_0803CB94: .4byte gMain -_0803CB98: - mov r2, sl - ldr r0, [r2] - ldr r3, _0803CBC0 @ =0x0000047E - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #8 - bne _0803CBAE - movs r0, #1 - strh r0, [r7] -_0803CBAE: - add sp, #8 - 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 -_0803CBC0: .4byte 0x0000047E diff --git a/expected_objs/sub_3C6E0.o b/expected_objs/sub_3C6E0.o deleted file mode 100644 index 586dc45..0000000 Binary files a/expected_objs/sub_3C6E0.o and /dev/null differ diff --git a/include/global.h b/include/global.h index 0209c7c..58c351b 100644 --- a/include/global.h +++ b/include/global.h @@ -432,7 +432,7 @@ struct PinballGame /*0x46C*/ struct Vector16 unk46C[4]; /*0x47C*/ u8 filler47C[0x1]; /*0x47D*/ s8 unk47D; - /*0x47E*/ u8 filler47E[0x1]; + /*0x47E*/ s8 unk47E; /*0x47F*/ s8 unk47F; /*0x480*/ u16 unk480; /*0x482*/ u16 unk482; diff --git a/src/rom_49A34.c b/src/rom_49A34.c index 2bf0da9..11984b7 100644 --- a/src/rom_49A34.c +++ b/src/rom_49A34.c @@ -123,6 +123,8 @@ extern const s16 gUnknown_086AF3B2[]; extern const s16 gUnknown_086AF3BE[]; extern const u16 gUnknown_086AF3C6[]; extern const u16 gUnknown_086B63AA[][2][3]; +extern const u16 gUnknown_086B65EA[][19][3]; +extern const u16 gUnknown_086B6512[][6][3]; extern const u16 gUnknown_086B63F2[][4][3]; extern const u16 gUnknown_086B8AE0[][10][3]; extern const s16 gUnknown_086AF3AC[]; @@ -131,6 +133,7 @@ extern const s8 gUnknown_084A11EC[][0x300]; extern const u16 gUnknown_086AF2DC[][2]; extern const struct Vector16 gUnknown_086AF2CC[]; extern const s16 gUnknown_086AEE20[]; +extern const s16 gUnknown_086AF140[][2]; struct Unk_086AFAC0 { @@ -155,6 +158,132 @@ extern u8 gUnknown_0200FBB0[]; extern u8 gUnknown_020030A0[]; +void sub_3C6E0(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + s16 var0; + int palette; + + group = &gMain.spriteGroups[29]; + if (group->available) + { + var0 = gUnknown_086AF140[gCurrentPinballGame->unk3E2][0]; + group->baseX = gCurrentPinballGame->unk3E8 / 10 + 100u - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk3EA / 10 + 84u - gCurrentPinballGame->unk5A; + gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 118; + gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 60; + gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 184; + gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 156; + if (group->baseY < -60) + group->baseY = -60; + if (group->baseY > 180) + group->baseY = 180; + + if (gCurrentPinballGame->unk389 > 9) + { + palette = 11; + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = 240; + gOamBuffer[oamSimple->oamId].y = 180; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + else if (gCurrentPinballGame->unk389 == 1) + { + palette = 14; + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B65EA[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + else if (gCurrentPinballGame->unk389 == 3) + { + palette = 11; + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B65EA[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + else + { + for (i = 0; i < 19; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B65EA[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + } + } + + group = &gMain.spriteGroups[23]; + if (group->available) + { + if (gCurrentPinballGame->unk47E > 0) + { + gCurrentPinballGame->unk47E--; + if (gCurrentPinballGame->unk47E == 0) + group->available = 0; + } + + var0 = gCurrentPinballGame->unk47D * 2 - (gCurrentPinballGame->unk47E / 4 - 1); + group->baseX = gCurrentPinballGame->unk3E8 / 10 + 100u - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk3EA / 10 + 84u - gCurrentPinballGame->unk5A; + for (i = 0; i < 6; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B6512[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } + + if (gCurrentPinballGame->unk5A4 == 2) + { + gMain.spriteGroups[23].available = 0; + gCurrentPinballGame->unk47E = 0; + } + } + else + { + if (gCurrentPinballGame->unk47E == 8) + group->available = 1; + } +} + void sub_3CBC4(void) { s16 i, j;