From 8f6d9df0cdfc4f607b9df20c969565f4924ab312 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 10 Aug 2025 19:42:06 -0500 Subject: [PATCH] sub_395D8 --- asm/rom_3219C.s | 539 -------------------------------------- expected_objs/sub_395D8.o | Bin 4004 -> 0 bytes src/rom_49A34.c | 127 +++++++++ 3 files changed, 127 insertions(+), 539 deletions(-) delete mode 100644 expected_objs/sub_395D8.o diff --git a/asm/rom_3219C.s b/asm/rom_3219C.s index 244c2a7..ab5140d 100644 --- a/asm/rom_3219C.s +++ b/asm/rom_3219C.s @@ -5017,542 +5017,3 @@ _080395C8: .4byte gSpeciesInfo _080395CC: .4byte 0x00001278 _080395D0: .4byte gMPlayInfo_BGM _080395D4: .4byte 0x0000FFFF - - thumb_func_start sub_395D8 -sub_395D8: @ 0x080395D8 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r7, _08039648 @ =gMain+0x1210 @gMain.spriteGroups[21] - ldrh r0, [r7] - cmp r0, #0 - bne _080395EE - b _080398D0 -_080395EE: - ldr r1, _0803964C @ =gCurrentPinballGame - ldr r0, [r1] - ldr r2, _08039650 @ =0x000003DF - adds r3, r0, r2 - movs r5, #0 - ldrsb r5, [r3, r5] - ldr r4, _08039654 @ =gUnknown_086AEAF8 - adds r2, #3 - adds r0, r0, r2 - movs r6, #0 - ldrsh r1, [r0, r6] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r1, r4, #4 - adds r0, r0, r1 - ldrh r0, [r0] - strb r0, [r3] - ldr r1, _0803964C @ =gCurrentPinballGame - ldr r0, [r1] - adds r0, r0, r2 - movs r2, #0 - ldrsh r1, [r0, r2] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - mov r8, r0 - cmp r5, #0xe - bgt _08039668 - ldr r2, _08039658 @ =0x040000D4 - lsls r0, r5, #1 - adds r0, r0, r5 - lsls r0, r0, #2 - subs r0, r0, r5 - lsls r0, r0, #7 - ldr r1, _0803965C @ =gUnknown_0849664C - adds r0, r0, r1 - str r0, [r2] - ldr r0, _08039660 @ =0x06010FA0 - str r0, [r2, #4] - ldr r0, _08039664 @ =0x800002C0 - b _08039684 - .align 2, 0 -_08039648: .4byte gMain+0x1210 @gMain.spriteGroups[21] -_0803964C: .4byte gCurrentPinballGame -_08039650: .4byte 0x000003DF -_08039654: .4byte gUnknown_086AEAF8 -_08039658: .4byte 0x040000D4 -_0803965C: .4byte gUnknown_0849664C -_08039660: .4byte 0x06010FA0 -_08039664: .4byte 0x800002C0 -_08039668: - ldr r2, _08039720 @ =0x040000D4 - adds r1, r5, #0 - subs r1, #0xf - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #2 - subs r0, r0, r1 - lsls r0, r0, #6 - ldr r1, _08039724 @ =gUnknown_0849B8CC - adds r0, r0, r1 - str r0, [r2] - ldr r0, _08039728 @ =0x06010FA0 - str r0, [r2, #4] - ldr r0, _0803972C @ =0x80000260 -_08039684: - str r0, [r2, #8] - ldr r0, [r2, #8] - ldr r3, _08039730 @ =gCurrentPinballGame - ldr r4, [r3] - movs r6, #0xfa - lsls r6, r6, #2 - adds r5, r4, r6 - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x48 - adds r1, r4, #0 - adds r1, #0x58 - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #2] - ldr r2, _08039734 @ =0x000003EA - adds r6, r4, r2 - movs r3, #0 - ldrsh r0, [r6, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x42 - adds r1, r4, #0 - adds r1, #0x5a - ldrh r1, [r1] - subs r0, r0, r1 - strh r0, [r7, #4] - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - adds r0, #0x78 - movs r2, #0xa2 - lsls r2, r2, #2 - adds r1, r4, r2 - strh r0, [r1] - movs r3, #0 - ldrsh r0, [r6, r3] - movs r1, #0xa - bl __divsi3 - adds r0, #0x32 - ldr r2, _08039738 @ =0x0000028A - adds r1, r4, r2 - strh r0, [r1] - ldr r3, _0803973C @ =0x00000387 - adds r0, r4, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #2 - bne _08039740 - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0xc0 - movs r2, #0xfc - lsls r2, r2, #2 - 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, #0x86 - b _08039796 - .align 2, 0 -_08039720: .4byte 0x040000D4 -_08039724: .4byte gUnknown_0849B8CC -_08039728: .4byte 0x06010FA0 -_0803972C: .4byte 0x80000260 -_08039730: .4byte gCurrentPinballGame -_08039734: .4byte 0x000003EA -_08039738: .4byte 0x0000028A -_0803973C: .4byte 0x00000387 -_08039740: - cmp r0, #3 - bne _0803976E - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0xc0 - movs r2, #0xfc - lsls r2, r2, #2 - 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, #0x96 - b _08039796 -_0803976E: - movs r1, #0 - ldrsh r0, [r5, r1] - movs r1, #0xa - bl __divsi3 - lsls r0, r0, #0x10 - asrs r0, r0, #0xf - adds r0, #0xb4 - movs r2, #0xfc - lsls r2, r2, #2 - 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, #0x74 -_08039796: - ldr r6, _080397FC @ =0x000003F2 - adds r1, r4, r6 - strh r0, [r1] - ldr r1, _08039800 @ =gCurrentPinballGame - ldr r0, [r1] - ldr r2, _08039804 @ =0x00000389 - adds r0, r0, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #9 - ble _08039810 - movs r2, #0 - ldr r4, _08039808 @ =gOamBuffer - ldr r3, _0803980C @ =0xFFFFFE00 - mov r8, r3 - movs r6, #0xb0 -_080397B8: - 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, #9 - ble _080397B8 - b _080398D0 - .align 2, 0 -_080397FC: .4byte 0x000003F2 -_08039800: .4byte gCurrentPinballGame -_08039804: .4byte 0x00000389 -_08039808: .4byte gOamBuffer -_0803980C: .4byte 0xFFFFFE00 -_08039810: - cmp r0, #1 - bne _0803981C - movs r3, #0xe - mov r4, r8 - lsls r0, r4, #0x10 - b _0803983C -_0803981C: - cmp r0, #3 - bne _08039828 - movs r3, #0xb - mov r6, r8 - lsls r0, r6, #0x10 - b _0803983C -_08039828: - mov r1, r8 - lsls r0, r1, #0x10 - asrs r1, r0, #0x10 - movs r3, #4 - cmp r1, #0x14 - beq _0803983C - movs r3, #0xf - cmp r1, #0x15 - bne _0803983C - movs r3, #3 -_0803983C: - movs r2, #0 - lsls r3, r3, #4 - mov r8, r3 - ldr r3, _080399BC @ =gUnknown_086B92FC - mov sl, r3 - ldr r6, _080399C0 @ =gOamBuffer - asrs r1, r0, #0x10 - lsls r0, r1, #4 - subs r0, r0, r1 - lsls r0, r0, #2 - mov ip, r0 - ldr r4, _080399C4 @ =0xFFFFFE00 - mov sb, r4 -_08039856: - 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, r6 - lsls r0, r3, #1 - adds r0, r0, r3 - lsls r0, r0, #1 - add r0, sl - 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, [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, _080399C8 @ =0x000001FF - ands r1, r4 - mov r0, sb - 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, r8 - orrs r0, r4 - strb r0, [r1, #5] - adds r3, #1 - lsls r3, r3, #0x10 - lsrs r2, r3, #0x10 - asrs r3, r3, #0x10 - cmp r3, #9 - ble _08039856 -_080398D0: - ldr r7, _080399CC @ =gMain+0x15A8 @gMain.spriteGroups[26] - ldrh r0, [r7] - cmp r0, #0 - bne _080398DA - b _08039A08 -_080398DA: - ldr r6, _080399D0 @ =gCurrentPinballGame - ldr r4, [r6] - movs r1, #0xfa - lsls r1, r1, #2 - adds r0, r4, r1 - movs r2, #0 - ldrsh r0, [r0, r2] - movs r1, #0xa - bl __divsi3 - adds r4, #0x58 - ldrh r1, [r4] - subs r1, #0x6c - subs r0, r0, r1 - strh r0, [r7, #2] - ldr r4, [r6] - ldr r3, _080399D4 @ =0x000003EA - adds r0, r4, r3 - movs r6, #0 - ldrsh r0, [r0, r6] - movs r1, #0xa - bl __divsi3 - adds r4, #0x5a - ldrh r1, [r4] - subs r1, #0x52 - subs r0, r0, r1 - strh r0, [r7, #4] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xc7 - ble _0803991E - movs r0, #0xc8 - strh r0, [r7, #4] -_0803991E: - ldr r4, _080399D8 @ =gUnknown_086AEDCC - ldr r1, _080399D0 @ =gCurrentPinballGame - ldr r0, [r1] - ldr r2, _080399DC @ =0x00000456 - adds r0, r0, r2 - ldrh r0, [r0] - movs r1, #0x54 - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - movs r1, #6 - bl __udivsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0xf - adds r0, r0, r4 - ldr r2, _080399E0 @ =0x040000D4 - movs r3, #0 - ldrsh r1, [r0, r3] - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #6 - ldr r1, _080399E4 @ =gUnknown_083C13AC - adds r0, r0, r1 - str r0, [r2] - ldr r0, _080399E8 @ =0x06012420 - str r0, [r2, #4] - ldr r0, _080399EC @ =0x80000060 - str r0, [r2, #8] - ldr r0, [r2, #8] - movs r2, #0 - ldr r6, _080399C0 @ =gOamBuffer - ldr r4, _080399C4 @ =0xFFFFFE00 - mov r8, r4 -_08039964: - lsls r4, r2, #0x10 - asrs r4, r4, #0x10 - lsls r0, r4, #3 - adds r0, #8 - adds r5, r7, r0 - ldrh r3, [r5] - lsls r3, r3, #3 - adds r3, r3, r6 - movs r0, #2 - ldrsh r1, [r5, r0] - movs r2, #2 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - ldr r2, _080399C8 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r5] - lsls r1, r1, #3 - adds r1, r1, r6 - ldrb r0, [r7, #4] - ldrb r5, [r5, #4] - adds r0, r0, r5 - strb r0, [r1] - adds r4, #1 - lsls r4, r4, #0x10 - lsrs r2, r4, #0x10 - asrs r4, r4, #0x10 - cmp r4, #1 - ble _08039964 - ldr r3, _080399D0 @ =gCurrentPinballGame - ldr r0, [r3] - ldr r6, _080399DC @ =0x00000456 - adds r4, r0, r6 - ldrh r0, [r4] - cmp r0, #0x52 - bhi _080399F0 - adds r0, #1 - strh r0, [r4] - b _08039A2C - .align 2, 0 -_080399BC: .4byte gUnknown_086B92FC -_080399C0: .4byte gOamBuffer -_080399C4: .4byte 0xFFFFFE00 -_080399C8: .4byte 0x000001FF -_080399CC: .4byte gMain+0x15A8 @gMain.spriteGroups[26] -_080399D0: .4byte gCurrentPinballGame -_080399D4: .4byte 0x000003EA -_080399D8: .4byte gUnknown_086AEDCC -_080399DC: .4byte 0x00000456 -_080399E0: .4byte 0x040000D4 -_080399E4: .4byte gUnknown_083C13AC -_080399E8: .4byte 0x06012420 -_080399EC: .4byte 0x80000060 -_080399F0: - movs r1, #0 - strh r1, [r4] - ldr r0, _08039A00 @ =gMain - ldr r2, _08039A04 @ =0x000015A8 - adds r0, r0, r2 - strh r1, [r0] - b _08039A2C - .align 2, 0 -_08039A00: .4byte gMain -_08039A04: .4byte 0x000015A8 -_08039A08: - ldr r3, _08039A3C @ =gCurrentPinballGame - ldr r1, [r3] - movs r4, #0xf7 - lsls r4, r4, #2 - adds r0, r1, r4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xb - bne _08039A2C - movs r6, #0xf9 - lsls r6, r6, #2 - adds r0, r1, r6 - ldrh r0, [r0] - cmp r0, #0xda - bne _08039A2C - movs r0, #1 - strh r0, [r7] -_08039A2C: - 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 -_08039A3C: .4byte gCurrentPinballGame diff --git a/expected_objs/sub_395D8.o b/expected_objs/sub_395D8.o deleted file mode 100644 index dfdcc2cc64d41f70c4318e3ae9d940c24ac53ec9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4004 zcma) zAWh44jkcp|r7V-OsOzLM^_R9v&7^cn)u^SFsxI0eE$#m3y3%>tq)pSN(P~nd#e208Eu)pM zeE+g=Og1oNbKy_7AK{C)XCD@z^Y$UZC9OymS zuC_+Sz>zS1zfKOA@dq&ez|i^0^Tn>=w&JIqzlNtp2o}fdf;%@p-x-pEZDV~tL*2ik zhqBKI(7tV32GMfTv|QCI{wvbYLl)P(wT@c4$19w3>hJ|AN$T=}!oQSl&N2GwBDAT=YHe9zIJP@91wvg^m+U~(G(AmF%FsYpc z+`qw~&JB66BBHmHsh1VkFf0~tgr5Rlw02v407m$Y^5 z7uxnUat#jC*yNq~r!Z5Pngv3KuSuRbnix$VJp#2HPkih#McsEb&#qGpza{*~HV?k+ z-3bWx04%sp1nAM%!mxn)C-`kzjX(&Ml7pD78}${2;Gr8Uu69Mi5zCu;|6ksVS24~GhB}>Gu(_UF?=U- zjNvZiGCo!#=327jQ4^aliXCYt{t)ss!-tXc3?E1Si@Ple+=u)(hG&rf!SEU6?=kVK z$lHwlVdQ@^{1`IF@K2B>y2;H(U>*4r#{Ns>n+(5*tTFs5viXtN@z;^POul!Kd4{); z8yNm8audTJA^REr4Ea%Jyc(=kVC;>^qYTsi!oEKY-{mi&e}wUGNA6~r#&HmdmXDt@|(U#Q}js`$56 zyj8^zF2RH(OHm~rlWlDvld&~9ExFc|qYb!y12LyB?!?9iDw-P+cO&9%gdBtLv>l%4 zcN`M^jzgl~NtEb!5+$OpU)1%Bx_(jDFXs9wac7LUQ&d88{A9`TlO-pg+*j#yGRu+^ zkr;IQ`kX%59anbetPDCC=Y`b2D)2?)eAj&wOVdw^uxwNowd@>4_=vcns$-F+Kb3rP=6i)1Ztm zMgZQo<+d%o_|en;ur2ShCB0j@W7eHX^DWx_kJ$1FTVAmxy}PI% zy_2{+o*{S^(!AZa9HsI&z&MpBth0~%hIMC9e|q-Q`O`C<=Amabhd(Ol8O+^norTm+ z&oI;8yR$`Xb1JB z?I1qX|Nr?(md^qTv(bD3Tc^UwMavailable) + { + index = gCurrentPinballGame->unk3DF; + gCurrentPinballGame->unk3DF = gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][2]; + var2 = gUnknown_086AEAF8[gCurrentPinballGame->unk3E2][0]; + if (index < 15) + { + DmaCopy16(3, gUnknown_0849664C[index], (void *)0x06010FA0, 0x580); + } + else + { + index -= 15; + DmaCopy16(3, gUnknown_0849B8CC[index], (void *)0x06010FA0, 0x4C0); + } + + group->baseX = gCurrentPinballGame->unk3E8 / 10 + 72u - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk3EA / 10 + 66u - gCurrentPinballGame->unk5A; + gCurrentPinballGame->unk288 = gCurrentPinballGame->unk3E8 / 10 + 120; + gCurrentPinballGame->unk28A = gCurrentPinballGame->unk3EA / 10 + 50; + if (gCurrentPinballGame->unk387 == 2) + { + gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 192; + gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 134; + } + else if (gCurrentPinballGame->unk387 == 3) + { + gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 192; + gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 150; + } + else + { + gCurrentPinballGame->unk3F0 = (gCurrentPinballGame->unk3E8 / 10) * 2 + 180; + gCurrentPinballGame->unk3F2 = (gCurrentPinballGame->unk3EA / 10) * 2 + 116; + } + + if (gCurrentPinballGame->unk389 > 9) + { + palette = 11; + for (i = 0; i < 10; 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; + else if (gCurrentPinballGame->unk389 == 3) + palette = 11; + else if (var2 == 20) + palette = 4; + else if (var2 == 21) + palette = 3; + else + palette = 15; + + for (i = 0; i < 10; i++) + { + oamSimple = &group->oam[i]; + dst = (u16*)&gOamBuffer[oamSimple->oamId]; + src = gUnknown_086B92FC[var2][i]; + *dst++ = *src++; + *dst++ = *src++; + *dst++ = *src++; + + gOamBuffer[oamSimple->oamId].x += group->baseX; + gOamBuffer[oamSimple->oamId].y += group->baseY; + gOamBuffer[oamSimple->oamId].paletteNum = palette; + } + } + } + + group = &gMain.spriteGroups[26]; + if (group->available) + { + group->baseX = gCurrentPinballGame->unk3E8 / 10 + 108 - gCurrentPinballGame->unk58; + group->baseY = gCurrentPinballGame->unk3EA / 10 + 82 - gCurrentPinballGame->unk5A; + if (group->baseY >= 200) + group->baseY = 200; + + index = gUnknown_086AEDCC[(gCurrentPinballGame->unk456 % 84) / 6]; + DmaCopy16(3, gUnknown_083C13AC[index], (void *)0x06012420, 0xC0); + for (i = 0; i < 2; i++) + { + oamSimple = &group->oam[i]; + gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX; + gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY; + } + + if (gCurrentPinballGame->unk456 < 83) + { + gCurrentPinballGame->unk456++; + } + else + { + gCurrentPinballGame->unk456 = 0; + gMain.spriteGroups[26].available = 0; + } + } + else + { + if (gCurrentPinballGame->unk3DC == 11 && gCurrentPinballGame->unk3E4 == 218) + group->available = 1; + } +} + void sub_39A40(void) { s16 i, j;