From 908ef589f170f9dcab44fca7185c1457f42118a5 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 22 Aug 2025 17:05:50 -0500 Subject: [PATCH] sub_2F140 --- asm/rom_2E6AC.s | 145 -------------------------------------- expected_objs/sub_2F140.o | Bin 1528 -> 0 bytes include/global.h | 2 +- src/rom_2E67C.c | 37 ++++++++++ 4 files changed, 38 insertions(+), 146 deletions(-) delete mode 100644 expected_objs/sub_2F140.o diff --git a/asm/rom_2E6AC.s b/asm/rom_2E6AC.s index ff2ea67..d4c3c86 100644 --- a/asm/rom_2E6AC.s +++ b/asm/rom_2E6AC.s @@ -6,151 +6,6 @@ .text - thumb_func_start sub_2F140 -sub_2F140: @ 0x0802F140 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r0, _0802F240 @ =gCurrentPinballGame - ldr r5, [r0] - movs r1, #0xa4 - lsls r1, r1, #2 - adds r0, r5, r1 - ldr r0, [r0] - movs r1, #0x1f - ands r0, r1 - lsrs r4, r0, #4 - ldr r6, _0802F244 @ =gMain+0x38E0 @gMain.spriteGroups[75] - movs r2, #0xbd - lsls r2, r2, #2 - adds r1, r5, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _0802F170 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 -_0802F170: - ldr r2, _0802F248 @ =gUnknown_086AE462 - lsls r0, r4, #0x10 - asrs r0, r0, #0xe - adds r1, r0, r2 - ldrh r3, [r1] - adds r2, #2 - adds r0, r0, r2 - ldrh r4, [r0] - adds r0, r5, #0 - adds r0, #0x58 - ldrh r1, [r0] - movs r0, #0xa4 - subs r0, r0, r1 - strh r0, [r6, #2] - adds r0, r5, #0 - adds r0, #0x5a - ldrh r1, [r0] - movs r0, #0xa6 - subs r0, r0, r1 - strh r0, [r6, #4] - ldr r2, _0802F24C @ =0x040000D4 - lsls r1, r4, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #8 - ldr r1, _0802F250 @ =gUnknown_083FFD8C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _0802F254 @ =0x06012720 - str r0, [r2, #4] - ldr r0, _0802F258 @ =0x80000180 - str r0, [r2, #8] - ldr r0, [r2, #8] - movs r1, #0 - ldr r7, _0802F25C @ =gUnknown_086B4A72 - mov sb, r7 - ldr r0, _0802F260 @ =gOamBuffer - mov sl, r0 - lsls r3, r3, #0x10 - asrs r3, r3, #0x10 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #2 - mov ip, r0 - ldr r2, _0802F264 @ =0xFFFFFE00 - mov r8, r2 -_0802F1CE: - lsls r3, r1, #0x10 - asrs r3, r3, #0x10 - lsls r4, r3, #3 - adds r4, #8 - adds r4, r6, r4 - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, sl - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - add r0, sb - add r0, ip - ldrh r1, [r0] - strh r1, [r2] - adds r0, #2 - adds r2, #2 - ldrh r1, [r0] - strh r1, [r2] - ldrh r0, [r0, #2] - strh r0, [r2, #2] - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, sl - ldrh r5, [r2, #2] - lsls r1, r5, #0x17 - lsrs r1, r1, #0x17 - movs r7, #2 - ldrsh r0, [r6, r7] - adds r1, r1, r0 - ldr r7, _0802F268 @ =0x000001FF - adds r0, r7, #0 - ands r1, r0 - mov r0, r8 - ands r0, r5 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, sl - ldrb r0, [r6, #4] - ldrb r2, [r1] - adds r0, r0, r2 - strb r0, [r1] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r1, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #1 - ble _0802F1CE - 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 -_0802F240: .4byte gCurrentPinballGame -_0802F244: .4byte gMain+0x38E0 @gMain.spriteGroups[75] -_0802F248: .4byte gUnknown_086AE462 -_0802F24C: .4byte 0x040000D4 -_0802F250: .4byte gUnknown_083FFD8C -_0802F254: .4byte 0x06012720 -_0802F258: .4byte 0x80000180 -_0802F25C: .4byte gUnknown_086B4A72 -_0802F260: .4byte gOamBuffer -_0802F264: .4byte 0xFFFFFE00 -_0802F268: .4byte 0x000001FF - thumb_func_start sub_2F26C sub_2F26C: @ 0x0802F26C push {r4, r5, r6, lr} diff --git a/expected_objs/sub_2F140.o b/expected_objs/sub_2F140.o deleted file mode 100644 index 84c545f1a05c0ca1bf1c4a5f1c6a13fe1280c7ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1528 zcmah}&rcIU6n?Ya;#SarR#|8hT7pu3q$#B>^HJSZt}8B z2mx~t@WCMisPXlPJybV7aDV{&Z?DNya#G%Vb1`KvY+R-FrKBCq@0^8uo7d8F<&&F8+3_&MTjZ8+`a9nKU;B5;G3 zB(Xg^n9AU+WorfS4ott32U7QC7w>Y;!$(nr2lDxJO>Ra09fVM*t5^RDGYJ}#AeG1_ zh~A-b0WL_bq-QiEKBxb(@1EfL_ZJ*u=XBIfBuVy3LOi2+^MD zc-p`Yn@so=3ZF27cEm55`0FPAp^1NK;y;@>^r^5Ahz5dkFch#*sDVbt4t-H88aGkc ziiXVSB0<(OD$9vzob^P;L$NW`Oe?G7)up98JsVnk4jY&D5O>z- z6|U3h2@acyo;BA6^)u$WQSYy8tg1>5ty(s0!9?Z!ieJsItKeT$R0aIGN(KCQAN-1{ zmW#Qnny)a`{x_u8inc{dLq@+(!_?6j#%Bw_h1`KtYWO`Ep#4wRQ90EKIL|e>dBd_y zE)3PR)DGdK`v2+ZJ5aNRraovsPXkk9rl*!;{2Ds8aUMgT6DQpt?PK~M%y%M$0FvJn UG=`b4139b9U;@b$p*3}X0b@3}hX4Qo diff --git a/include/global.h b/include/global.h index a312043..540bd6d 100644 --- a/include/global.h +++ b/include/global.h @@ -366,7 +366,7 @@ struct PinballGame /*0x2F0*/ u8 unk2F0; /*0x2F1*/ u8 unk2F1; /*0x2F2*/ u8 filler2F2[0x2]; - /*0x2F4*/ u8 unk2F4; + /*0x2F4*/ s8 unk2F4; /*0x2F5*/ s8 unk2F5; /*0x2F6*/ u16 unk2F6; /*0x2F8*/ s8 unk2F8; diff --git a/src/rom_2E67C.c b/src/rom_2E67C.c index 6a4e9fe..d3ceab4 100644 --- a/src/rom_2E67C.c +++ b/src/rom_2E67C.c @@ -8,6 +8,9 @@ extern const s16 gUnknown_086AE3DC[][3]; extern const s8 gUnknown_08137CBC[][2]; extern const u8 gUnknown_084BB16C[][0x480]; extern const u16 gUnknown_086B3EF6[][4][3]; +extern const s16 gUnknown_086AE462[][2]; +extern const u8 gUnknown_083FFD8C[][0x300]; +extern const u16 gUnknown_086B4A72[][2][3]; extern struct SongHeader gUnknown_086A11A4; @@ -319,3 +322,37 @@ void sub_2E6AC(void) } } } + +void sub_2F140(void) +{ + s16 i; + struct SpriteGroup *group; + struct OamDataSimple *oamSimple; + u16 *dst; + const u16 *src; + s16 index; + s16 var0; + + index = (gCurrentPinballGame->unk290 % 32) / 16; + group = &gMain.spriteGroups[75]; + if (gCurrentPinballGame->unk2F4) + index = gCurrentPinballGame->unk2F4; + + var0 = gUnknown_086AE462[index][0]; + index = gUnknown_086AE462[index][1]; + group->baseX = 164 - gCurrentPinballGame->unk58; + group->baseY = 166 - gCurrentPinballGame->unk5A; + DmaCopy16(3, gUnknown_083FFD8C[index], (void *)0x06012720, 0x300); + for (i = 0; i < 2; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B4A72[var0][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + } +}