diff --git a/asm/non_matching/subtask2/sub_080A57F4.inc b/asm/non_matching/subtask2/sub_080A57F4.inc deleted file mode 100644 index 21e6c76d..00000000 --- a/asm/non_matching/subtask2/sub_080A57F4.inc +++ /dev/null @@ -1,411 +0,0 @@ - .syntax unified -.ifdef EU - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - ldr r2, _080A50A8 @ =gOamCmd - movs r1, #0 - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r2, #4] - strh r1, [r2, #6] - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - ldr r1, _080A50AC @ =gUnk_08128C94 - mov sb, r1 - cmp r0, #0 - bne _080A502E - ldr r3, _080A50B0 @ =gUnk_08128C14 - mov sb, r3 -_080A502E: - ldr r0, _080A50B4 @ =gMenu - ldrb r0, [r0, #3] - lsls r0, r0, #3 - mov r1, sb - adds r3, r1, r0 - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r2, #8] - ldrb r0, [r3, #6] - strh r0, [r2] - ldrb r0, [r3, #7] - strh r0, [r2, #2] - ldrb r2, [r3, #4] - ldr r0, _080A50B8 @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x10 - ands r0, r1 - adds r1, r2, #0 - adds r1, #0xa - cmp r0, #0 - bne _080A505A - adds r1, #1 -_080A505A: - movs r0, #0xfd - lsls r0, r0, #1 - bl DrawDirect - movs r3, #0 - mov r8, r3 - mov r7, sb - adds r7, #5 -_080A506A: - ldr r0, _080A50B4 @ =gMenu - adds r0, #0x10 - mov r1, r8 - adds r6, r1, r0 - ldrb r1, [r6] - cmp r1, #0 - beq _080A50FA - mov r3, r8 - lsls r5, r3, #3 - mov r0, sb - adds r3, r0, r5 - ldr r4, _080A50A8 @ =gOamCmd - ldrb r0, [r7, #1] - strh r0, [r4] - ldrb r2, [r7, #2] - strh r2, [r4, #2] - movs r0, #0xe8 - lsls r0, r0, #8 - strh r0, [r4, #8] - cmp r1, #0x33 - bhi _080A50CA - mov r1, r8 - cmp r1, #2 - bne _080A50BC - ldrb r0, [r7] - adds r1, r0, #0 - adds r1, #0xa - movs r0, #0xfd - lsls r0, r0, #1 - b _080A50F6 - .align 2, 0 -_080A50A8: .4byte gOamCmd -_080A50AC: .4byte gUnk_08128C94 -_080A50B0: .4byte gUnk_08128C14 -_080A50B4: .4byte gMenu -_080A50B8: .4byte gMain -_080A50BC: - ldrb r0, [r6] - adds r0, #9 - ldrb r3, [r3, #5] - adds r1, r0, r3 - movs r0, #0xfd - lsls r0, r0, #1 - b _080A50F6 -_080A50CA: - ldr r3, _080A50E0 @ =0x0000EB80 - adds r0, r5, r3 - strh r0, [r4, #8] - cmp r1, #0x3d - beq _080A50E4 - cmp r1, #0x3e - bne _080A50EA - adds r0, r2, #0 - adds r0, #8 - b _080A50E8 - .align 2, 0 -_080A50E0: .4byte 0x0000EB80 -_080A50E4: - adds r0, r2, #0 - adds r0, #0xd -_080A50E8: - strh r0, [r4, #2] -_080A50EA: - ldr r0, _080A5190 @ =gSpriteAnimations_322 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r0, [r1] - ldrb r1, [r0] - ldr r0, _080A5194 @ =0x00000141 -_080A50F6: - bl DrawDirect -_080A50FA: - adds r7, #8 - movs r0, #1 - add r8, r0 - mov r1, r8 - cmp r1, #0xf - bls _080A506A - ldr r4, _080A5198 @ =gMenu - ldrb r0, [r4, #0x12] - cmp r0, #0 - beq _080A5132 - ldr r2, _080A519C @ =gOamCmd - movs r3, #0x80 - lsls r3, r3, #4 - adds r1, r3, #0 - adds r0, r0, r1 - strh r0, [r2, #8] - mov r3, sb - adds r3, #0x10 - ldrb r0, [r3, #6] - adds r0, #9 - strh r0, [r2] - ldrb r0, [r3, #7] - adds r0, #7 - strh r0, [r2, #2] - movs r0, #0 - movs r1, #1 - bl DrawDirect -_080A5132: - ldrb r0, [r4, #0x13] - cmp r0, #0x3f - bne _080A5188 - mov r3, sb - adds r3, #0x18 - ldr r1, _080A519C @ =gOamCmd - ldrb r0, [r3, #6] - adds r0, #8 - strh r0, [r1] - ldrb r0, [r3, #7] - adds r0, #8 - strh r0, [r1, #2] - ldr r0, _080A51A0 @ =gSave - adds r0, #0xc2 - ldrh r4, [r0] - movs r0, #0 - mov r8, r0 - adds r5, r1, #0 -_080A5156: - adds r0, r4, #0 - movs r1, #0xa - bl __modsi3 - movs r1, #0x80 - lsls r1, r1, #4 - adds r0, r0, r1 - strh r0, [r5, #8] - movs r0, #0 - movs r1, #1 - bl DrawDirect - adds r0, r4, #0 - movs r1, #0xa - bl __divsi3 - adds r4, r0, #0 - ldrh r0, [r5] - subs r0, #8 - strh r0, [r5] - movs r3, #1 - add r8, r3 - mov r0, r8 - cmp r0, #2 - bls _080A5156 -_080A5188: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A5190: .4byte gSpriteAnimations_322 -_080A5194: .4byte 0x00000141 -_080A5198: .4byte gMenu -_080A519C: .4byte gOamCmd -_080A51A0: .4byte gSave -.else - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - ldr r2, _080A5890 @ =gOamCmd - movs r1, #0 - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r2, #4] - strh r1, [r2, #6] - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #7] - ldr r1, _080A5894 @ =gUnk_08128C94 - mov sb, r1 - cmp r0, #0 - bne _080A581A - ldr r3, _080A5898 @ =gUnk_08128C14 - mov sb, r3 -_080A581A: - ldr r0, _080A589C @ =gMenu - ldrb r0, [r0, #3] - lsls r0, r0, #3 - mov r1, sb - adds r3, r1, r0 - movs r0, #0x80 - lsls r0, r0, #4 - strh r0, [r2, #8] - ldrb r0, [r3, #6] - strh r0, [r2] - ldrb r0, [r3, #7] - strh r0, [r2, #2] - ldrb r2, [r3, #4] - ldr r0, _080A58A0 @ =gMain - ldrh r1, [r0, #0xc] - movs r0, #0x10 - ands r0, r1 - adds r1, r2, #0 - adds r1, #0xa - cmp r0, #0 - bne _080A5846 - adds r1, #1 -_080A5846: - ldr r0, _080A58A4 @ =0x000001FB - bl DrawDirect - movs r3, #0 - mov r8, r3 - mov r7, sb - adds r7, #5 -_080A5854: - ldr r0, _080A589C @ =gMenu - adds r0, #0x10 - mov r1, r8 - adds r6, r1, r0 - ldrb r1, [r6] - cmp r1, #0 - beq _080A58E8 - mov r3, r8 - lsls r5, r3, #3 - mov r0, sb - adds r3, r0, r5 - ldr r4, _080A5890 @ =gOamCmd - ldrb r0, [r7, #1] - strh r0, [r4] - ldrb r2, [r7, #2] - strh r2, [r4, #2] - movs r0, #0xe8 - lsls r0, r0, #8 - strh r0, [r4, #8] - cmp r1, #0x33 - bhi _080A58B8 - mov r1, r8 - cmp r1, #2 - bne _080A58A8 - ldrb r0, [r7] - adds r1, r0, #0 - adds r1, #0xa - ldr r0, _080A58A4 @ =0x000001FB - b _080A58E4 - .align 2, 0 -_080A5890: .4byte gOamCmd -_080A5894: .4byte gUnk_08128C94 -_080A5898: .4byte gUnk_08128C14 -_080A589C: .4byte gMenu -_080A58A0: .4byte gMain -_080A58A4: .4byte 0x000001FB -_080A58A8: - ldrb r0, [r6] - adds r0, #9 - ldrb r3, [r3, #5] - adds r1, r0, r3 - ldr r0, _080A58B4 @ =0x000001FB - b _080A58E4 - .align 2, 0 -_080A58B4: .4byte 0x000001FB -_080A58B8: - ldr r3, _080A58CC @ =0x0000EB80 - adds r0, r5, r3 - strh r0, [r4, #8] - cmp r1, #0x3d - beq _080A58D0 - cmp r1, #0x3e - bne _080A58D6 - adds r0, r2, #0 - adds r0, #8 - b _080A58D4 - .align 2, 0 -_080A58CC: .4byte 0x0000EB80 -_080A58D0: - adds r0, r2, #0 - adds r0, #0xd -_080A58D4: - strh r0, [r4, #2] -_080A58D6: - ldr r0, _080A5980 @ =gSpriteAnimations_322 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r0, [r1] - ldrb r1, [r0] - movs r0, #0xa1 - lsls r0, r0, #1 -_080A58E4: - bl DrawDirect -_080A58E8: - adds r7, #8 - movs r0, #1 - add r8, r0 - mov r1, r8 - cmp r1, #0xf - bls _080A5854 - ldr r4, _080A5984 @ =gMenu - ldrb r0, [r4, #0x12] - cmp r0, #0 - beq _080A5920 - ldr r2, _080A5988 @ =gOamCmd - movs r3, #0x80 - lsls r3, r3, #4 - adds r1, r3, #0 - adds r0, r0, r1 - strh r0, [r2, #8] - mov r3, sb - adds r3, #0x10 - ldrb r0, [r3, #6] - adds r0, #9 - strh r0, [r2] - ldrb r0, [r3, #7] - adds r0, #7 - strh r0, [r2, #2] - movs r0, #0 - movs r1, #1 - bl DrawDirect -_080A5920: - ldrb r0, [r4, #0x13] - cmp r0, #0x3f - bne _080A5976 - mov r3, sb - adds r3, #0x18 - ldr r1, _080A5988 @ =gOamCmd - ldrb r0, [r3, #6] - adds r0, #8 - strh r0, [r1] - ldrb r0, [r3, #7] - adds r0, #8 - strh r0, [r1, #2] - ldr r0, _080A598C @ =gSave - adds r0, #0xc2 - ldrh r4, [r0] - movs r0, #0 - mov r8, r0 - adds r5, r1, #0 -_080A5944: - adds r0, r4, #0 - movs r1, #0xa - bl __modsi3 - movs r1, #0x80 - lsls r1, r1, #4 - adds r0, r0, r1 - strh r0, [r5, #8] - movs r0, #0 - movs r1, #1 - bl DrawDirect - adds r0, r4, #0 - movs r1, #0xa - bl __divsi3 - adds r4, r0, #0 - ldrh r0, [r5] - subs r0, #8 - strh r0, [r5] - movs r3, #1 - add r8, r3 - mov r0, r8 - cmp r0, #2 - bls _080A5944 -_080A5976: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080A5980: .4byte gSpriteAnimations_322 -_080A5984: .4byte gMenu -_080A5988: .4byte gOamCmd -_080A598C: .4byte gSave -.endif - .syntax divided diff --git a/src/subtask2.c b/src/subtask2.c index 7825831d..e1eabc65 100644 --- a/src/subtask2.c +++ b/src/subtask2.c @@ -127,7 +127,19 @@ typedef struct { } struct_gUnk_08128E94; extern const struct_gUnk_08128E94 gUnk_08128E94[]; -extern struct_gUnk_08128E94 gUnk_08128C14[]; + +typedef struct { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; +} struct_gUnk_08128C14; +extern struct_gUnk_08128C14 gUnk_08128C14[]; +extern struct_gUnk_08128C14 gUnk_08128C94[]; typedef struct { u8 unk00 : 5; @@ -229,7 +241,7 @@ void sub_080A56A0(void) { int iVar1; u32 uVar2; u32 uVar4; - struct_gUnk_08128E94* ptr; + struct_gUnk_08128C14* ptr; if (!sub_080A51F4()) { return; @@ -328,7 +340,97 @@ void sub_080A56A0(void) { sub_080A6F6C(uVar4 + 0x400); } -ASM_FUNC("asm/non_matching/subtask2/sub_080A57F4.inc", void sub_080A57F4()) +void sub_080A57F4(void) { + u32 bVar1; + u32 spriteIndex; + int frameIndex; + u32 uVar5; + struct_gUnk_08128C14* pbVar6; + u32 index; + int shells; + struct_gUnk_08128C14* puVar8; + struct_gUnk_08128C14* puVar10; + + gOamCmd._4 = 0x400; + gOamCmd._6 = 0; + if (gSaveHeader->language == 0) { + puVar8 = gUnk_08128C14; + } else { + puVar8 = gUnk_08128C94; + } + puVar10 = &puVar8[gMenu.field_0x3]; + gOamCmd._8 = 0x800; + gOamCmd.x = puVar10->unk6; + gOamCmd.y = puVar10->unk7; + frameIndex = puVar10->unk4 + 9; + if ((gMain.ticks.HWORD & 0x10) == 0) { + frameIndex += 2; + } else { + frameIndex += 1; + } + DrawDirect(DRAW_DIRECT_SPRITE_INDEX, frameIndex); + + for (index = 0, pbVar6 = (struct_gUnk_08128C14*)((u8*)puVar8 + 5); index < 0x10; pbVar6++, index++) { + uVar5 = gGenericMenu.unk10.a[index]; + if (uVar5 != 0) { + puVar10 = &puVar8[index]; + gOamCmd.x = pbVar6->unk1; + bVar1 = pbVar6->unk2; + gOamCmd.y = bVar1; + gOamCmd._8 = 0xe800; + if (uVar5 < 0x34) { + if (index == 2) { + uVar5 = pbVar6->unk0 + 10; + spriteIndex = DRAW_DIRECT_SPRITE_INDEX; + } else { + uVar5 = gGenericMenu.unk10.a[index] + 9; + uVar5 += puVar10->unk5; + spriteIndex = DRAW_DIRECT_SPRITE_INDEX; + } + } else { + gOamCmd._8 = index * 8 + 0xeb80; + switch (uVar5) { + case 0x3e: + gOamCmd.y = bVar1 + 8; + break; + case 0x3d: + gOamCmd.y = bVar1 + 0xd; + break; + } + + uVar5 = gSpriteAnimations_322[uVar5]->index; +#ifdef EU + spriteIndex = 0x141; +#else + spriteIndex = 0x142; +#endif + } + DrawDirect(spriteIndex, uVar5); + } + } + + if (gGenericMenu.unk10.a[2] != 0) { + gOamCmd._8 = gGenericMenu.unk10.a[2] + 0x800; + puVar10 = puVar8 + 2; + gOamCmd.x = puVar10->unk6 + 9; + gOamCmd.y = puVar10->unk7 + 7; + DrawDirect(0, 1); + } + + if (gGenericMenu.unk10.a[3] == 0x3f) { + puVar10 = puVar8 + 3; + gOamCmd.x = puVar10->unk6 + 8; + gOamCmd.y = puVar10->unk7 + 8; + shells = gSave.stats.shells; + + for (index = 0; index < 3; index++) { + gOamCmd._8 = shells % 10 + 0x800; + DrawDirect(0, 1); + shells /= 10; + gOamCmd.x -= 8; + } + } +} void sub_080A5990(void) { extern void (*const gUnk_08128D14[])(void);