diff --git a/asm/rom_11B9C.s b/asm/rom_11B9C.s index 453f097..dff80e5 100644 --- a/asm/rom_11B9C.s +++ b/asm/rom_11B9C.s @@ -51516,98 +51516,3 @@ _08031B20: .4byte 0x00000359 _08031B24: .4byte gOamBuffer _08031B28: .4byte 0xFFFFFE00 _08031B2C: .4byte 0x000001FF - - thumb_func_start sub_31B30 -sub_31B30: @ 0x08031B30 - push {r4, r5, r6, r7, lr} - ldr r1, _08031B64 @ =gMain - ldrb r0, [r1, #4] - ldr r2, _08031B68 @ =0x00004010 - adds r6, r1, r2 - cmp r0, #0 - bne _08031B42 - ldr r0, _08031B6C @ =0x00003D30 - adds r6, r1, r0 -_08031B42: - ldrh r0, [r6] - cmp r0, #0 - beq _08031BD6 - ldr r0, _08031B70 @ =gCurrentPinballGame - ldr r1, [r0] - adds r0, r1, #0 - adds r0, #0x4c - movs r2, #0 - ldrsh r0, [r0, r2] - cmp r0, #7 - bgt _08031B74 - adds r0, r1, #0 - adds r0, #0x58 - ldrh r1, [r0] - movs r2, #8 - rsbs r2, r2, #0 - b _08031B7E - .align 2, 0 -_08031B64: .4byte gMain -_08031B68: .4byte 0x00004010 -_08031B6C: .4byte 0x00003D30 -_08031B70: .4byte gCurrentPinballGame -_08031B74: - adds r0, r1, #0 - adds r0, #0x58 - ldrh r1, [r0] - movs r2, #0x80 - lsls r2, r2, #1 -_08031B7E: - adds r0, r2, #0 - subs r0, r0, r1 - strh r0, [r6, #2] - movs r0, #0 - strh r0, [r6, #4] - ldr r7, _08031BDC @ =gOamBuffer - ldr r1, _08031BE0 @ =0xFFFFFE00 - mov ip, r1 -_08031B8E: - lsls r5, r0, #0x10 - asrs r5, r5, #0x10 - lsls r3, r5, #3 - adds r3, #8 - adds r3, r6, r3 - ldrh r4, [r3] - lsls r4, r4, #3 - adds r4, r4, r7 - movs r2, #2 - ldrsh r1, [r3, r2] - movs r2, #2 - ldrsh r0, [r6, r2] - adds r1, r1, r0 - ldr r2, _08031BE4 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r4, #2] - mov r0, ip - ands r0, r2 - orrs r0, r1 - strh r0, [r4, #2] - ldrh r2, [r3] - lsls r2, r2, #3 - adds r2, r2, r7 - ldrb r0, [r6, #4] - ldrb r3, [r3, #4] - adds r0, r0, r3 - lsls r1, r5, #5 - adds r0, r0, r1 - strb r0, [r2] - adds r5, #1 - lsls r5, r5, #0x10 - lsrs r0, r5, #0x10 - asrs r5, r5, #0x10 - cmp r5, #4 - ble _08031B8E -_08031BD6: - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08031BDC: .4byte gOamBuffer -_08031BE0: .4byte 0xFFFFFE00 -_08031BE4: .4byte 0x000001FF diff --git a/expected_objs/sub_31B30.o b/expected_objs/sub_31B30.o deleted file mode 100644 index 4fa9b19..0000000 Binary files a/expected_objs/sub_31B30.o and /dev/null differ diff --git a/include/functions.h b/include/functions.h index d71519e..f061a22 100644 --- a/include/functions.h +++ b/include/functions.h @@ -554,7 +554,7 @@ extern void sub_30EB4(); extern void sub_31144(); extern void sub_313A0(); extern void sub_31498(); -extern void sub_31B30(); +extern void sub_31B30(void); extern void sub_31BE8(s16); //extern ? sub_31CF8(); //extern ? BuildSpeciesWeightsForCatchEmMode(); diff --git a/src/rom_31BE8.c b/src/rom_31BE8.c index fd31d93..d53d80c 100644 --- a/src/rom_31BE8.c +++ b/src/rom_31BE8.c @@ -3,6 +3,39 @@ #include "gba/gba.h" #include "constants/fields.h" +void sub_31B30(void) +{ + s16 i; + struct SpriteGroup *group; + + if (gMain.selectedField == FIELD_RUBY) + group = &gMain.spriteGroups[81]; + else + group = &gMain.spriteGroups[85]; + + if (group->available) + { + if (gCurrentPinballGame->unk4C < 8) + { + group->baseX = gCurrentPinballGame->unk58; + group->baseX = -8 - group->baseX; + } + else + { + group->baseX = gCurrentPinballGame->unk58; + group->baseX = 256 - group->baseX; + } + + group->baseY = 0; + for (i = 0; i < 5; i++) + { + struct OamDataSimple *oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY + i * 0x20; + } + } +} + /** * Executed when saving or loading from a main field * arg0