last decomp for this branch

This commit is contained in:
Seth Barberee 2023-01-08 09:43:12 -08:00
parent 6c6541f276
commit aca93c70b7
13 changed files with 8237 additions and 8658 deletions

File diff suppressed because it is too large Load Diff

7515
asm/code_800DAC0.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -8065,350 +8065,4 @@ _08022E70:
bx r0
thumb_func_end sub_8022D2C
thumb_func_start sub_8022E78
sub_8022E78:
push {lr}
movs r0, 0x1
bl sub_801A6E8
cmp r0, 0x3
beq _08022E94
cmp r0, 0x3
bhi _08022E8E
cmp r0, 0x2
beq _08022EE8
b _08022EEE
_08022E8E:
cmp r0, 0x4
beq _08022EBC
b _08022EEE
_08022E94:
bl sub_801A8AC
ldr r1, _08022EB4
ldr r2, [r1]
str r0, [r2, 0x4C]
ldr r1, _08022EB8
ldr r1, [r1]
lsls r0, 2
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x50]
movs r0, 0x2
bl sub_8022924
b _08022EEE
.align 2, 0
_08022EB4: .4byte gUnknown_203B294
_08022EB8: .4byte gTeamInventory_203B460
_08022EBC:
bl sub_801A8AC
ldr r1, _08022EE0
ldr r2, [r1]
str r0, [r2, 0x4C]
ldr r1, _08022EE4
ldr r1, [r1]
lsls r0, 2
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x50]
movs r0, 0
bl sub_8099690
movs r0, 0x4
bl sub_8022924
b _08022EEE
.align 2, 0
_08022EE0: .4byte gUnknown_203B294
_08022EE4: .4byte gTeamInventory_203B460
_08022EE8:
movs r0, 0x16
bl sub_8022924
_08022EEE:
pop {r0}
bx r0
thumb_func_end sub_8022E78
thumb_func_start sub_8022EF4
sub_8022EF4:
push {r4,r5,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_801A6E8
ldr r4, _08022F3C
ldr r0, [r4]
adds r0, 0x54
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08022F26
ldr r0, [r4]
adds r0, 0x54
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _08022F26
ldr r0, [r4]
adds r0, 0xF4
str r1, [r0]
_08022F26:
ldr r0, [sp]
subs r0, 0x1
cmp r0, 0x6
bls _08022F30
b _08023060
_08022F30:
lsls r0, 2
ldr r1, _08022F40
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08022F3C: .4byte gUnknown_203B294
_08022F40: .4byte _08022F44
.align 2, 0
_08022F44:
.4byte _08022F60
.4byte _08023060
.4byte _08023060
.4byte _0802304C
.4byte _08022F68
.4byte _08023044
.4byte _08023054
_08022F60:
movs r0, 0x1
bl sub_8022924
b _08023060
_08022F68:
ldr r4, _08022FEC
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x8
ldr r1, [r1, 0x48]
movs r2, 0x14
ldrsh r1, [r1, r2]
bl GetNumAvailableIQSkills
ldr r3, [r4]
str r0, [r3, 0x38]
ldr r0, [r3, 0x48]
adds r1, r3, 0
adds r1, 0x52
ldrb r1, [r1]
adds r3, 0x44
movs r2, 0
bl GetGummiItemStatBoost
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x20
ldr r1, [r1, 0x48]
movs r2, 0x14
ldrsh r1, [r1, r2]
bl GetNumAvailableIQSkills
ldr r1, [r4]
str r0, [r1, 0x3C]
movs r0, 0x1
str r0, [r1, 0x40]
adds r0, r1, 0
adds r0, 0x44
movs r2, 0
ldrsh r5, [r0, r2]
ldr r0, _08022FF0
ldr r3, _08022FF4
ldr r2, [r1, 0x4C]
lsls r2, 2
ldr r1, [r3]
adds r1, r2
movs r2, 0
bl sub_8090E14
movs r0, 0x1
negs r0, r0
cmp r5, r0
beq _08022FD0
ldr r0, [r4]
ldr r0, [r0, 0x4C]
bl ShiftItemsDownFrom
_08022FD0:
movs r0, 0
bl sub_8099690
ldr r1, [r4]
movs r0, 0xA
str r0, [r1, 0x4]
adds r0, r5, 0x1
cmp r0, 0x4
bhi _08023030
lsls r0, 2
ldr r1, _08022FF8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08022FEC: .4byte gUnknown_203B294
_08022FF0: .4byte gUnknown_202DE58
_08022FF4: .4byte gTeamInventory_203B460
_08022FF8: .4byte _08022FFC
.align 2, 0
_08022FFC:
.4byte _08023030
.4byte _08023010
.4byte _08023018
.4byte _08023020
.4byte _08023028
_08023010:
movs r0, 0x6
bl sub_8022924
b _08023060
_08023018:
movs r0, 0x7
bl sub_8022924
b _08023060
_08023020:
movs r0, 0x8
bl sub_8022924
b _08023060
_08023028:
movs r0, 0x9
bl sub_8022924
b _08023060
_08023030:
ldr r0, _08023040
ldr r1, [r0]
movs r0, 0x16
str r0, [r1, 0x4]
movs r0, 0x5
bl sub_8022924
b _08023060
.align 2, 0
_08023040: .4byte gUnknown_203B294
_08023044:
movs r0, 0x15
bl sub_8022924
b _08023060
_0802304C:
movs r0, 0x3
bl sub_8022924
b _08023060
_08023054:
movs r0, 0
bl sub_8099690
movs r0, 0x4
bl sub_8022924
_08023060:
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_8022EF4
thumb_func_start sub_8023068
sub_8023068:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_801A6E8
ldr r4, _080230A8
ldr r0, [r4]
adds r0, 0x54
bl sub_8012FD8
ldr r0, [r4]
adds r0, 0xA4
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08023096
ldr r0, [r4]
adds r0, 0xA4
mov r1, sp
bl sub_8013114
_08023096:
ldr r0, [sp]
cmp r0, 0x2
beq _080230B8
cmp r0, 0x2
bgt _080230AC
cmp r0, 0x1
beq _080230B0
b _080230E0
.align 2, 0
_080230A8: .4byte gUnknown_203B294
_080230AC:
cmp r0, 0x3
bne _080230E0
_080230B0:
movs r0, 0x1
bl sub_8022924
b _080230E0
_080230B8:
ldr r0, [r4]
ldr r0, [r0, 0x4C]
bl ShiftItemsDownFrom
bl GetNumberOfFilledInventorySlots
cmp r0, 0
bne _080230DA
movs r0, 0
bl sub_8099690
bl sub_801A928
movs r0, 0x14
bl sub_8022924
b _080230E0
_080230DA:
movs r0, 0x1
bl sub_8022924
_080230E0:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8023068
thumb_func_start sub_80230E8
sub_80230E8:
push {lr}
bl sub_801B410
cmp r0, 0x1
bls _08023100
cmp r0, 0x3
bhi _08023100
bl sub_801B450
movs r0, 0x1
bl sub_8022924
_08023100:
pop {r0}
bx r0
thumb_func_end sub_80230E8
thumb_func_start sub_8023104
sub_8023104:
push {lr}
bl sub_801B00C
cmp r0, 0x1
bls _0802311C
cmp r0, 0x3
bhi _0802311C
bl sub_801B048
movs r0, 0x1
bl sub_8022924
_0802311C:
pop {r0}
bx r0
thumb_func_end sub_8023104
thumb_func_start sub_8023120
sub_8023120:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08023138
ldr r0, _08023140
ldr r0, [r0]
ldr r0, [r0, 0x4]
bl sub_8022924
_08023138:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_08023140: .4byte gUnknown_203B294
thumb_func_end sub_8023120
.align 2,0

View File

@ -42,7 +42,7 @@ _0802FFAC:
.4byte _08030180
.4byte _080301A0
_0802FFE4:
bl sub_80301B0
bl DrawMakuhitaMainMenu
ldr r2, _0802FFF8
ldr r0, _0802FFFC
ldr r5, [r0]
@ -265,465 +265,4 @@ _080301A8: .4byte gMakuhitaDialogue
_080301AC: .4byte 0x0000010d
thumb_func_end UpdateMakuhitaDialogue
thumb_func_start sub_80301B0
sub_80301B0:
push {r4,lr}
ldr r4, _080301F8
ldr r1, [r4]
movs r2, 0x2
str r2, [r1, 0x14]
ldr r0, _080301FC
str r0, [r1, 0x18]
str r2, [r1, 0x1C]
bl sub_80306A4
lsls r0, 24
cmp r0, 0
beq _080301D6
ldr r0, [r4]
movs r1, 0x1
negs r1, r1
str r1, [r0, 0x1C]
movs r1, 0x1
str r1, [r0, 0x14]
_080301D6:
ldr r1, [r4]
movs r2, 0x1
ldr r0, _08030200
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x3
str r0, [r1, 0x24]
ldr r0, _08030204
ldr r0, [r0]
str r0, [r1, 0x28]
str r2, [r1, 0x2C]
movs r0, 0
str r0, [r1, 0x30]
str r2, [r1, 0x34]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080301F8: .4byte gUnknown_203B318
_080301FC: .4byte gMakuhitaDojoGoTrain
_08030200: .4byte gUnknown_80D4970
_08030204: .4byte gUnknown_80D4934
thumb_func_end sub_80301B0
thumb_func_start sub_8030208
sub_8030208:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08030250
ldr r0, _08030230
ldr r1, [r0]
ldr r0, [sp]
str r0, [r1, 0x14]
ldr r0, [sp]
cmp r0, 0x2
beq _0803023A
cmp r0, 0x2
bgt _08030234
cmp r0, 0x1
beq _0803024A
b _08030250
.align 2, 0
_08030230: .4byte gUnknown_203B318
_08030234:
cmp r0, 0x3
beq _08030242
b _08030250
_0803023A:
movs r0, 0x3
bl UpdateMakuhitaState
b _08030250
_08030242:
movs r0, 0xC
bl UpdateMakuhitaState
b _08030250
_0803024A:
movs r0, 0x2
bl UpdateMakuhitaState
_08030250:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8030208
thumb_func_start sub_8030258
sub_8030258:
push {lr}
movs r0, 0x1
bl sub_80303AC
cmp r0, 0x2
beq _08030288
cmp r0, 0x2
bcc _0803029A
cmp r0, 0x3
bne _0803029A
bl sub_8030418
ldr r1, _08030284
ldr r1, [r1]
strh r0, [r1, 0x10]
bl sub_8030480
movs r0, 0x5
bl UpdateMakuhitaState
b _0803029A
.align 2, 0
_08030284: .4byte gUnknown_203B318
_08030288:
bl sub_8030480
ldr r0, _080302A0
ldr r1, [r0]
ldr r0, _080302A4
strh r0, [r1, 0x10]
movs r0, 0x1
bl UpdateMakuhitaState
_0803029A:
pop {r0}
bx r0
.align 2, 0
_080302A0: .4byte gUnknown_203B318
_080302A4: .4byte 0x0000ffff
thumb_func_end sub_8030258
thumb_func_start sub_80302A8
sub_80302A8:
push {lr}
bl sub_801B6AC
cmp r0, 0x1
bls _080302C0
cmp r0, 0x3
bhi _080302C0
bl sub_801B72C
movs r0, 0xA
bl UpdateMakuhitaState
_080302C0:
pop {r0}
bx r0
thumb_func_end sub_80302A8
thumb_func_start sub_80302C4
sub_80302C4:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _080302DC
ldr r0, _080302E4
ldr r0, [r0]
ldr r0, [r0, 0xC]
bl UpdateMakuhitaState
_080302DC:
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_080302E4: .4byte gUnknown_203B318
thumb_func_end sub_80302C4
thumb_func_start sub_80302E8
sub_80302E8:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r6, r1, 0
mov r8, r2
bl sub_80306A4
lsls r0, 24
cmp r0, 0
beq _08030302
movs r0, 0
b _0803039A
_08030302:
ldr r4, _080303A4
ldr r0, [r4]
cmp r0, 0
bne _08030314
movs r0, 0xD0
movs r1, 0x8
bl MemoryAlloc
str r0, [r4]
_08030314:
ldr r0, [r4]
str r5, [r0, 0x64]
lsls r1, r5, 1
adds r1, r5
lsls r1, 3
adds r1, 0x6C
adds r1, r0, r1
str r1, [r0, 0x68]
adds r0, 0x6C
bl sub_8006518
ldr r1, [r4]
ldr r2, [r1, 0x64]
lsls r0, r2, 1
adds r0, r2
lsls r0, 3
adds r1, r0
adds r1, 0x6C
ldr r0, _080303A8
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r2, [r4]
ldr r1, [r2, 0x68]
adds r0, r2, 0
adds r0, 0xCC
str r0, [r1, 0x14]
cmp r6, 0
beq _08030362
ldr r1, [r2, 0x64]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r1, r2, 0
adds r1, 0x74
adds r1, r0
ldr r0, [r6]
str r0, [r1]
_08030362:
ldr r0, [r4]
ldr r0, [r0, 0x68]
mov r1, r8
bl sub_8012D08
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r4, [r4]
adds r4, 0x30
bl sub_8030668
adds r1, r0, 0
adds r0, r4, 0
mov r2, r8
adds r3, r5, 0
bl sub_8013818
bl sub_80304C8
bl DrawDojoCourseList
movs r0, 0x1
_0803039A:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080303A4: .4byte gUnknown_203B31C
_080303A8: .4byte gUnknown_80E0804
thumb_func_end sub_80302E8
thumb_func_start sub_80303AC
sub_80303AC:
push {r4,lr}
lsls r0, 24
cmp r0, 0
bne _080303C8
ldr r0, _080303C4
ldr r0, [r0]
adds r0, 0x30
bl sub_8013660
movs r0, 0
b _08030410
.align 2, 0
_080303C4: .4byte gUnknown_203B31C
_080303C8:
ldr r4, _080303E4
ldr r0, [r4]
adds r0, 0x30
bl GetKeyPress
cmp r0, 0x1
beq _080303E8
cmp r0, 0x2
bne _080303F2
movs r0, 0x1
bl PlayMenuSoundEffect
movs r0, 0x2
b _08030410
.align 2, 0
_080303E4: .4byte gUnknown_203B31C
_080303E8:
movs r0, 0
bl PlayMenuSoundEffect
movs r0, 0x3
b _08030410
_080303F2:
ldr r0, [r4]
adds r0, 0x30
movs r1, 0x1
bl sub_80138B8
lsls r0, 24
cmp r0, 0
bne _08030406
movs r0, 0
b _08030410
_08030406:
bl sub_80304C8
bl DrawDojoCourseList
movs r0, 0x1
_08030410:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80303AC
thumb_func_start sub_8030418
sub_8030418:
ldr r0, _08030440
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x4E
movs r3, 0
ldrsh r1, [r0, r3]
subs r0, 0x2
movs r3, 0
ldrsh r0, [r0, r3]
muls r0, r1
adds r1, r2, 0
adds r1, 0x48
movs r3, 0
ldrsh r1, [r1, r3]
adds r0, r1
lsls r0, 1
adds r0, r2, r0
movs r1, 0
ldrsh r0, [r0, r1]
bx lr
.align 2, 0
_08030440: .4byte gUnknown_203B31C
thumb_func_end sub_8030418
thumb_func_start sub_8030444
sub_8030444:
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl sub_8030668
adds r1, r0, 0
ldr r5, _0803047C
ldr r0, [r5]
adds r2, r0, 0
adds r2, 0x52
strh r1, [r2]
adds r0, 0x30
bl sub_8013984
bl sub_80304C8
bl DrawDojoCourseList
cmp r4, 0
beq _08030476
ldr r0, [r5]
adds r0, 0x30
bl AddMenuCursorSprite
_08030476:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803047C: .4byte gUnknown_203B31C
thumb_func_end sub_8030444
thumb_func_start sub_8030480
sub_8030480:
push {r4,r5,lr}
ldr r4, _080304C0
ldr r2, [r4]
cmp r2, 0
beq _080304BA
ldr r0, [r2, 0x64]
lsls r1, r0, 1
adds r1, r0
lsls r1, 3
adds r1, r2, r1
adds r1, 0x6C
ldr r0, _080304C4
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, [r4]
bl MemoryFree
movs r0, 0
str r0, [r4]
_080304BA:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080304C0: .4byte gUnknown_203B31C
_080304C4: .4byte gUnknown_80E07EC
thumb_func_end sub_8030480
thumb_func_start sub_80304C8
sub_80304C8:
push {r4,lr}
ldr r4, _08030538
ldr r0, [r4]
adds r0, 0xCC
movs r2, 0
movs r1, 0x1
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xCD
strb r2, [r0]
ldr r0, [r4]
adds r0, 0xCE
movs r1, 0x8
strb r1, [r0]
ldr r0, [r4]
adds r0, 0xCF
strb r2, [r0]
ldr r0, [r4]
adds r0, 0x4A
movs r1, 0
ldrsh r0, [r0, r1]
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
lsls r0, 16
ldr r2, [r4]
ldr r3, [r2, 0x64]
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r1, r2, r1
adds r1, 0x7A
asrs r3, r0, 16
lsrs r0, 16
strh r0, [r1]
ldr r1, [r2, 0x64]
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
adds r2, r0
adds r3, 0x2
adds r2, 0x7C
strh r3, [r2]
bl ResetUnusedInputStruct
ldr r0, [r4]
adds r0, 0x6C
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08030538: .4byte gUnknown_203B31C
thumb_func_end sub_80304C8
.align 2,0

View File

@ -86,7 +86,7 @@ gUnknown_8270000: @ 8270000
.4byte MemoryCard_Text
.4byte Performance_Text
.byte 0x00, 0x00, 0x00, 0x00
.4byte PokeDungeon_Text
.4byte sGameInternalVersion
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00

View File

@ -38,7 +38,7 @@ struct HeldItem {
struct unkStruct_80915F4
{
u16 unk0;
s16 unk0;
u16 unk2;
};

23
include/makuhita_dojo.h Normal file
View File

@ -0,0 +1,23 @@
struct unkStruct_203B318
{
// size: 0xcc
u32 unk0;
u32 unk4;
s32 state;
s32 fallbackState;
s16 unk10;
s32 unk14;
struct MenuItem unk18[4];
u8 fill[0x58 - 0x38];
struct OpenedFile *faceFile;
u8 *faceData;
u16 unk60;
u16 unk62;
u8 unk64;
u8 unk65;
u8 unk66;
u8 unk67;
struct OpenedFile** unk68;
struct UnkTextStruct2 unk6C[4];
};

View File

@ -82,6 +82,8 @@ SECTIONS {
src/flash.o(.text);
src/code_800D090.o(.text);
asm/code_800D090.o(.text);
src/code_800DAC0.o(.text);
asm/code_800DAC0.o(.text);
src/code_80118A4.o(.text);
src/debug.o(.text);
src/save.o(.text);

218
src/code_800DAC0.c Normal file
View File

@ -0,0 +1,218 @@
#include "global.h"
#include "file_system.h"
#include "memory.h"
struct unkStruct_203B0CC_sub
{
// size: 0xD0
u32 unk0;
s32 unk4;
u8 fill8[0x34 - 8];
u32 unk34;
u32 unk38;
u8 fill3C[0x4C - 0x3C];
u32 unk4C;
s32 unk50;
u8 unk54;
u8 fill55[0xB8 - 0x55];
u32 unkB8;
u8 fillBC[0xD0 - 0xBC];
};
struct unkStruct_203B0CC
{
// size: 0x1A18
struct unkStruct_203B0CC_sub unk0[0x20];
u32 unk1A00;
/* 0x1A04 */ u32 fileSelection;
u32 unk1A08;
u32 unk1A0C;
u32 unk1A10;
u8 fill1A14[0x1A18 - 0x1A14];
};
struct unkStruct_203B0CC *gUnknown_203B0CC;
struct unkStruct_800F18C
{
u32 unk0;
u32 unk4;
};
extern s32 sub_800E2C0(void);
extern s32 sub_8000728(void);
extern u32 sub_800E900(void);
extern void sub_8009BE4(void);
extern void sub_8040238(void);
extern void sub_800F204(void);
extern void sub_803EAF0(u32, u32);
extern void sub_800CD64(u32, u32);
extern struct unkStruct_800F18C *sub_800F18C(s32);
extern void sub_800DCA8(struct unkStruct_203B0CC_sub *);
extern void PlaySound(u16);
extern u8 gefob000_string[];
extern u8 gefob001_string[];
extern struct FileArchive gEffectFileArchive;
extern void sub_8005610(struct OpenedFile *, u32, u32,u32);
extern void sub_800DB7C(void);
extern void sub_800F034(void);
extern void sub_800ED38(u32);
extern void sub_800DC14(void);
extern void sub_800F078();
extern void sub_800ED64();
extern void sub_800ED80();
extern void sub_800F094();
void sub_800DAC0(u32 fileSelection)
{
s32 index;
struct OpenedFile *filePtr;
struct unkStruct_203B0CC_sub *preload;
if (gUnknown_203B0CC != NULL) {
sub_800DB7C();
}
gUnknown_203B0CC = MemoryAlloc(sizeof(struct unkStruct_203B0CC), 0xb);
MemoryClear8((u8 *)gUnknown_203B0CC, sizeof(struct unkStruct_203B0CC));
gUnknown_203B0CC->fileSelection = fileSelection;
for(index = 0, preload = &gUnknown_203B0CC->unk0[index]; index < 0x20; index++, preload++)
{
preload->unk4 = -1;
}
sub_800ED38(fileSelection);
sub_800F034();
switch(gUnknown_203B0CC->fileSelection)
{
case 1:
filePtr = Call_OpenFileAndGetFileDataPtr(gefob001_string, &gEffectFileArchive);
if (filePtr != NULL) {
sub_8005610(filePtr,0x248,0x1f,0);
CloseFile(filePtr);
}
break;
case 0:
filePtr = Call_OpenFileAndGetFileDataPtr(gefob000_string, &gEffectFileArchive);
if (filePtr != NULL) {
sub_8005610(filePtr,0x248,0x1f,0);
CloseFile(filePtr);
}
break;
}
}
void sub_800DB7C(void)
{
s32 index;
struct unkStruct_203B0CC_sub *preload;
for(index = 0, preload = &gUnknown_203B0CC->unk0[index]; index < 0x20; index++, preload++)
{
if(preload->unk4 != -1)
sub_800DC14();
}
sub_800F078();
sub_800ED64();
if(gUnknown_203B0CC != NULL)
{
MemoryFree(gUnknown_203B0CC);
gUnknown_203B0CC = NULL;
}
}
void sub_800DBBC(void)
{
s32 index1;
s32 index2;
struct unkStruct_203B0CC_sub *preload;
struct unkStruct_203B0CC_sub *preload2;
for(index1 = 0, preload = &gUnknown_203B0CC->unk0[index1]; index1 < 0x20; index1++, preload++)
{
if(preload->unk4 != -1)
sub_800DC14();
}
for(index2 = 0, preload2 = &gUnknown_203B0CC->unk0[index2]; index2 < 0x20; index2++, preload2++)
{
preload2->unk4 = -1;
}
sub_800ED80();
sub_800F094();
}
bool8 sub_800DCC0(void)
{
return gUnknown_203B0CC != NULL;
}
void sub_800DC14(void)
{
s32 index1;
s32 index2;
struct unkStruct_800F18C *piVar3;
struct unkStruct_800F18C *puVar4;
struct unkStruct_203B0CC_sub *preload;
index1 = sub_800E2C0();
if (index1 != -1) {
preload = &gUnknown_203B0CC->unk0[index1];
if (preload->unk34 == 4) {
sub_8009BE4();
if (sub_8000728() == 1) {
sub_8040238();
sub_803EAF0(0,0);
sub_800CD64(0x8000,0);
}
}
if (preload->unk34 == 3) {
for (index2 = 0; index2 < 2; index2 = index2 + 1) {
piVar3 = sub_800F18C(index2);
if (piVar3->unk0 == preload->unk38) {
piVar3->unk4--;
break;
}
}
}
else {
puVar4 = sub_800F18C(1);
puVar4->unk4 = 0;
puVar4->unk0 = 0xffffffff;
}
sub_800DCA8(preload);
}
}
u32 sub_800DC9C(void) {
return sub_800E900();
}
void sub_800DCA8(struct unkStruct_203B0CC_sub *param_1)
{
param_1->unk4 = -1;
param_1->unk54 = 0;
if(param_1->unkB8 != 0)
{
sub_800F204();
param_1->unkB8 = 0;
}
}
void sub_800DCD0(struct unkStruct_203B0CC_sub *param_1)
{
if ((param_1->unk4C != -1) && (param_1->unk50 == 0)) {
if (sub_8000728() != 2) {
PlaySound(param_1->unk4C);
}
param_1->unk4C = -1;
param_1->unk50 = -1;
}
if (param_1->unk50 > 0) {
param_1->unk50--;
}
}

View File

@ -1,7 +1,11 @@
#include "global.h"
#include "constants/iq_skill.h"
#include "memory.h"
#include "pokemon.h"
#include "team_inventory.h"
#include "text.h"
#include "input.h"
#include "item.h"
struct unkStruct_3001B5C
{
@ -48,6 +52,207 @@ extern s32 GetKeyPress(void *);
extern void sub_8013660(void *);
extern void AddMenuCursorSprite(void *);
struct unkStruct_203B294
{
// size: 0x1A8
/* 0x0 */ u32 state;
/* 0x4 */ u32 fallbackState;
u8 unk8[NUM_IQ_SKILLS];
u8 unk20[NUM_IQ_SKILLS];
u32 unk38;
u32 unk3C;
u32 unk40;
struct unkStruct_80915F4 unk44;
/* 0x48 */ struct PokemonStruct *pokeStruct;
u32 unk4C;
struct ItemSlot unk50;
u32 unk54;
u8 fill58[0xA4 - 0x58];
u32 unkA4;
u8 fillA8[0xF4 - 0xA8];
u32 unkF4;
u32 unkF8;
u16 unkFC;
};
struct unkStruct_203B294 *gUnknown_203B294;
extern u8 gUnknown_80DC5EC[];
extern u8 gUnknown_202DE58[];
extern void sub_8022924(s32);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801B00C(void);
extern void sub_801B048(void);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern u8 sub_8012FD8(u32 *);
extern void sub_8013114(u32 *, s32 *);
extern u32 sub_801A6E8(u32);
extern void sub_8099690(u32);
extern void sub_801A928(void);
s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ);
void GetGummiItemStatBoost(struct PokemonStruct* pokemon, u8 itemIndex, u8 a3, struct unkStruct_80915F4* a4);
extern u32 sub_801A8AC(void);
void sub_8022E78(void)
{
switch(sub_801A6E8(1))
{
case 3:
gUnknown_203B294->unk4C = sub_801A8AC();
gUnknown_203B294->unk50 = gTeamInventory_203B460->teamItems[gUnknown_203B294->unk4C];
sub_8022924(2);
break;
case 4:
gUnknown_203B294->unk4C = sub_801A8AC();
gUnknown_203B294->unk50 = gTeamInventory_203B460->teamItems[gUnknown_203B294->unk4C];
sub_8099690(0);
sub_8022924(4);
break;
case 2:
sub_8022924(0x16);
break;
}
}
void sub_8022EF4(void)
{
s32 menuAction;
s32 r5;
menuAction = 0;
sub_801A6E8(0);
if (sub_8012FD8(&gUnknown_203B294->unk54) == 0) {
sub_8013114(&gUnknown_203B294->unk54,&menuAction);
if(menuAction != 1) gUnknown_203B294->unkF4 = menuAction;
}
switch(menuAction)
{
case 1:
sub_8022924(1);
break;
case 2:
case 3:
break;
case 5:
gUnknown_203B294->unk38 = GetNumAvailableIQSkills(gUnknown_203B294->unk8, gUnknown_203B294->pokeStruct->IQ);
GetGummiItemStatBoost(gUnknown_203B294->pokeStruct, gUnknown_203B294->unk50.itemIndex, 0, &gUnknown_203B294->unk44);
gUnknown_203B294->unk3C = GetNumAvailableIQSkills(gUnknown_203B294->unk20, gUnknown_203B294->pokeStruct->IQ);
gUnknown_203B294->unk40 = 1;
r5 = gUnknown_203B294->unk44.unk0;
sub_8090E14(gUnknown_202DE58, &gTeamInventory_203B460->teamItems[gUnknown_203B294->unk4C], NULL);
if(r5 != -1)
ShiftItemsDownFrom(gUnknown_203B294->unk4C);
sub_8099690(0);
gUnknown_203B294->fallbackState = 0xA;
switch(r5 + 1)
{
case 1:
sub_8022924(6);
break;
case 2:
sub_8022924(7);
break;
case 3:
sub_8022924(8);
break;
case 4:
sub_8022924(9);
break;
default:
case 0:
gUnknown_203B294->fallbackState = 0x16;
sub_8022924(5);
break;
}
break;
case 6:
sub_8022924(0x15);
break;
case 4:
sub_8022924(3);
break;
case 7:
sub_8099690(0);
sub_8022924(4);
break;
}
}
void sub_8023068(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_8012FD8(&gUnknown_203B294->unk54);
if (sub_8012FD8(&gUnknown_203B294->unkA4) == 0) {
sub_8013114(&gUnknown_203B294->unkA4,&menuAction);
}
switch(menuAction)
{
case 1:
case 3:
sub_8022924(1);
break;
case 2:
ShiftItemsDownFrom(gUnknown_203B294->unk4C);
if (GetNumberOfFilledInventorySlots() == 0) {
sub_8099690(0);
sub_801A928();
sub_8022924(0x14);
}
else {
sub_8022924(1);
}
break;
}
}
void sub_80230E8(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_8022924(1);
case 1:
case 0:
break;
}
}
void sub_8023104(void)
{
switch(sub_801B00C())
{
case 2:
case 3:
sub_801B048();
sub_8022924(1);
case 1:
case 0:
break;
}
}
void sub_8023120(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_8022924(gUnknown_203B294->fallbackState);
}
}
bool8 sub_8023144(s32 param_1, s32 index, struct UnkTextStruct2_sub *sub, u32 param_4)
{
u8 param_1_u8 = param_1;

View File

@ -4,27 +4,8 @@
#include "input.h"
#include "memory.h"
#include "text.h"
struct unkStruct_203B318
{
// size: 0xcc
u32 unk0;
u32 unk4;
s32 state;
u8 fillC[0x10 - 0xC];
s16 unk10;
u8 fill[0x58 - 0x12];
struct OpenedFile *faceFile;
u8 *faceData;
u16 unk60;
u16 unk62;
u8 unk64;
u8 unk65;
u8 unk66;
u8 unk67;
struct OpenedFile** unk68;
struct UnkTextStruct2 unk6C[4];
};
#include "menu.h"
#include "makuhita_dojo.h"
extern u8 gUnknown_202E5D8[];
extern u8 gUnknown_202E1C8[];

View File

@ -3,7 +3,11 @@
#include "constants/dungeon.h"
#include "code_800D090.h"
#include "dungeon.h"
#include "input.h"
#include "memory.h"
#include "text.h"
#include "menu.h"
#include "makuhita_dojo.h"
struct unkStruct_203B31C
{
@ -25,13 +29,20 @@ struct unkStruct_203B31C
};
extern struct unkStruct_203B31C *gUnknown_203B31C;
extern struct unkStruct_203B318 *gUnknown_203B318;
extern struct UnkTextStruct2 gUnknown_80E07EC;
extern struct UnkTextStruct2 gUnknown_80E0804;
extern bool8 sub_8097504(s16);
extern s16 sub_80A26CC(s16 r0);
extern u8 gMakuhitaDojoGoTrain[];
extern u8 *gUnknown_80D4970[];
extern u8 *gUnknown_80D4934[];
extern u8 gUnknown_80E081C[];
extern u8 gUnknown_80E0824[];
extern u8 gUnknown_80E0828[];
extern bool8 sub_8097504(s16);
extern s16 sub_80A26CC(s16 r0);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
@ -41,6 +52,251 @@ extern u8 sub_80A2740(s32 r0);
extern s16 sub_80A2668(u32 r0);
extern s32 sub_8013800(void *, u32);
extern bool8 IsMazeCompleted(s32);
extern s32 sub_8030668(void);
extern void sub_8013984(u32 *);
extern void sub_80304C8();
extern void AddMenuCursorSprite(u32 *);
extern void DrawDojoCourseList(void);
extern u8 sub_80138B8(void *, u32);
extern void PlayMenuSoundEffect(u32);
extern s32 GetKeyPress(void *);
extern void sub_8013660(void *);
extern void sub_8012D08(void *, u32);
extern void sub_8013818(void *, u32, u32, u32);
extern void sub_803053C(void);
extern u8 sub_80306A4(void);
extern s32 sub_80144A4(s32 *);
void UpdateMakuhitaState(s32);
extern u32 sub_801B6AC(void);
extern void sub_801B72C(void);
extern s16 sub_8030418(void);
extern u32 sub_80303AC(u8);
extern void sub_8030480(void);
void DrawMakuhitaMainMenu(void) {
s32 menuAction;
struct unkStruct_203B318 *preload;
gUnknown_203B318->unk14 = 2;
gUnknown_203B318->unk18[0].text = gMakuhitaDojoGoTrain;
gUnknown_203B318->unk18[0].menuAction = 2;
if(sub_80306A4())
{
gUnknown_203B318->unk18[0].menuAction = -1;
gUnknown_203B318->unk14 = 1;
}
preload = gUnknown_203B318;
menuAction = 1;
preload->unk18[1].text = *gUnknown_80D4970;
preload->unk18[1].menuAction = 3;
preload->unk18[2].text = *gUnknown_80D4934;
preload->unk18[2].menuAction = menuAction;
preload->unk18[3].text = NULL;
preload->unk18[3].menuAction = menuAction;
}
void sub_8030208(void) {
s32 temp;
if(sub_80144A4(&temp) == 0)
{
gUnknown_203B318->unk14 = temp;
switch(temp)
{
case 2:
UpdateMakuhitaState(3);
break;
case 3:
UpdateMakuhitaState(12);
break;
case 1:
UpdateMakuhitaState(2);
break;
}
}
}
void sub_8030258(void) {
switch(sub_80303AC(1))
{
case 3:
gUnknown_203B318->unk10 = sub_8030418();
sub_8030480();
UpdateMakuhitaState(5);
break;
case 2:
sub_8030480();
gUnknown_203B318->unk10 = -1;
UpdateMakuhitaState(1);
break;
case 0:
case 1:
break;
}
}
void sub_80302A8(void) {
switch(sub_801B6AC())
{
case 2:
case 3:
sub_801B72C();
UpdateMakuhitaState(0xA);
break;
case 0:
case 1:
break;
}
}
void sub_80302C4(void) {
s32 temp;
if(sub_80144A4(&temp) == 0)
{
UpdateMakuhitaState(gUnknown_203B318->fallbackState);
}
}
bool8 sub_80302E8(int param_1, struct UnkTextStruct2_sub *param_2, u32 param_3)
{
if (sub_80306A4()) {
return 0;
}
else
{
if (gUnknown_203B31C == NULL) {
gUnknown_203B31C = MemoryAlloc(sizeof(struct unkStruct_203B31C),8);
}
gUnknown_203B31C->unk64 = param_1;
gUnknown_203B31C->unk68 = &gUnknown_203B31C->unk6C[param_1];
sub_8006518(gUnknown_203B31C->unk6C);
gUnknown_203B31C->unk6C[gUnknown_203B31C->unk64] = gUnknown_80E0804;
gUnknown_203B31C->unk68->unk14 = gUnknown_203B31C->unkCC;
if (param_2 != NULL) {
gUnknown_203B31C->unk6C[gUnknown_203B31C->unk64].unk08 = *param_2;
}
sub_8012D08(gUnknown_203B31C->unk68,param_3);
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B31C->unk6C,1,1);
sub_8013818(&gUnknown_203B31C->unk30,sub_8030668(),param_3,param_1);
sub_80304C8();
DrawDojoCourseList();
return 1;
}
}
u32 sub_80303AC(u8 param_1)
{
if (param_1 == 0) {
sub_8013660(&gUnknown_203B31C->unk30);
return 0;
}
switch(GetKeyPress(&gUnknown_203B31C->unk30))
{
case 2:
PlayMenuSoundEffect(1);
return 2;
case 1:
PlayMenuSoundEffect(0);
return 3;
default:
if (sub_80138B8(&gUnknown_203B31C->unk30, 1)) {
sub_80304C8();
DrawDojoCourseList();
return 1;
}
else
return 0;
}
}
s16 sub_8030418(void) {
return gUnknown_203B31C->unk0[(gUnknown_203B31C->unk4E * gUnknown_203B31C->unk4C) + gUnknown_203B31C->unk48];
}
void sub_8030444(u8 r0) {
gUnknown_203B31C->unk52 = sub_8030668();
sub_8013984(&gUnknown_203B31C->unk30);
sub_80304C8();
DrawDojoCourseList();
if(r0)
AddMenuCursorSprite(&gUnknown_203B31C->unk30);
}
void sub_8030480(void) {
if(gUnknown_203B31C != NULL)
{
gUnknown_203B31C->unk6C[gUnknown_203B31C->unk64] = gUnknown_80E07EC;
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B31C->unk6C, 1, 1);
MemoryFree(gUnknown_203B31C);
gUnknown_203B31C = NULL;
}
}
NAKED
void sub_80304C8(void)
{
asm_unified(
"\tpush {r4,lr}\n"
"\tldr r4, _08030538\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xCC\n"
"\tmovs r2, 0\n"
"\tmovs r1, 0x1\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xCD\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xCE\n"
"\tmovs r1, 0x8\n"
"\tstrb r1, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0xCF\n"
"\tstrb r2, [r0]\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x4A\n"
"\tmovs r1, 0\n"
"\tldrsh r0, [r0, r1]\n"
"\tmovs r1, 0xC\n"
"\tbl sub_80095E4\n"
"\tadds r0, 0x2\n"
"\tlsls r0, 16\n"
"\tldr r2, [r4]\n"
"\tldr r3, [r2, 0x64]\n"
"\tlsls r1, r3, 1\n"
"\tadds r1, r3\n"
"\tlsls r1, 3\n"
"\tadds r1, r2, r1\n"
"\tadds r1, 0x7A\n"
"\tasrs r3, r0, 16\n"
"\tlsrs r0, 16\n"
"\tstrh r0, [r1]\n"
"\tldr r1, [r2, 0x64]\n"
"\tlsls r0, r1, 1\n"
"\tadds r0, r1\n"
"\tlsls r0, 3\n"
"\tadds r2, r0\n"
"\tadds r3, 0x2\n"
"\tadds r2, 0x7C\n"
"\tstrh r3, [r2]\n"
"\tbl ResetUnusedInputStruct\n"
"\tldr r0, [r4]\n"
"\tadds r0, 0x6C\n"
"\tmovs r1, 0x1\n"
"\tmovs r2, 0x1\n"
"\tbl sub_800641C\n"
"\tpop {r4}\n"
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08030538: .4byte gUnknown_203B31C");
}
void DrawDojoCourseList(void)
{
@ -96,8 +352,8 @@ s32 sub_8030668(void)
return counter;
}
s32 sub_80306A4(void)
bool8 sub_80306A4(void)
{
return 0;
return FALSE;
}

View File

@ -82,17 +82,17 @@ extern u32 *gUnknown_203B488;
extern u32 *gUnknown_203B48C;
extern u32 gUnknown_203B494;
ALIGNED(4) const char PokeDungeon_Text[] = _("POKE_DUNGEON__05");
ALIGNED(4) const char sGameInternalVersion[] = _("POKE_DUNGEON__05");
ALIGNED(4) const char fill_save0[] = _("pksdir0");
ALIGNED(4) const char fill_save1[] = _("pksdir0");
ALIGNED(4) const char fill_save2[] = _("pksdir0");
ALIGNED(4) const char fill_save3[] = _("pksdir0");
ALIGNED(4) static const char fill_save0[] = _("pksdir0");
ALIGNED(4) static const char fill_save1[] = _("pksdir0");
ALIGNED(4) static const char fill_save2[] = _("pksdir0");
ALIGNED(4) static const char fill_save3[] = _("pksdir0");
ALIGNED(4) const char gSaveCorrupted[] = _("{CENTER_ALIGN}The game data is corrupted.\n"
"{CENTER_ALIGN}Your data will be erased.");
ALIGNED(4) const char fill_save4[] = _("pksdir0");
ALIGNED(4) static const char fill_save4[] = _("pksdir0");
ALIGNED(4) const char gSavingAdventure[] = _("{CENTER_ALIGN}Saving your adventure...\n"
"{CENTER_ALIGN}Please don{APOSTROPHE}t turn off the power.");
@ -109,7 +109,7 @@ ALIGNED(4) const char gSaveNotWritten[] = _("{CENTER_ALIGN}The data could not be
ALIGNED(4) const char gSaveFailed[] = _("{CENTER_ALIGN}Save failed.");
ALIGNED(4) const char fill_save5[] = _("pksdir0");
ALIGNED(4) static const char fill_save5[] = _("pksdir0");
ALIGNED(4) const char gUnknown_80D44C8[] = _("{CENTER_ALIGN}Your data was not properly saved{COMMA}\n"
"{CENTER_ALIGN}so your game cannot be resumed\n"
@ -118,7 +118,7 @@ ALIGNED(4) const char gUnknown_80D44C8[] = _("{CENTER_ALIGN}Your data was not pr
"{CENTER_ALIGN}Before shutting down{COMMA} save in your\n"
"{CENTER_ALIGN}team base{COMMA} or quicksave in a dungeon.");
ALIGNED(4) const char fill_save6[] = _("pksdir0");
ALIGNED(4) static const char fill_save6[] = _("pksdir0");
ALIGNED(4) const char gUnknown_80D45AC[] = _("{CENTER_ALIGN}Quicksaving your adventure...\n"
"{CENTER_ALIGN}Please don{APOSTROPHE}t turn off the power.");
@ -139,7 +139,7 @@ ALIGNED(4) const char gSaveNotWritten2[] = _("{CENTER_ALIGN}The data could not b
"{CENTER_ALIGN}and reinsert the DS Card.");
ALIGNED(4) const char gSaveFailed2[] = _("{CENTER_ALIGN}Save failed.");
ALIGNED(4) const char fill_save7[] = _("pksdir0");
ALIGNED(4) static const char fill_save7[] = _("pksdir0");
extern bool8 sub_800DAB0(u16, u8*, s32);