splitting more files and decomp a little more

This commit is contained in:
Seth Barberee 2021-06-10 20:12:11 -05:00
parent 31b46b0782
commit e806b05526
6 changed files with 2844 additions and 2963 deletions

2636
asm/code_801AFA4.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -103,105 +103,5 @@ sub_80975A8:
bx r0
thumb_func_end sub_80975A8
thumb_func_start sub_80975C4
sub_80975C4:
push {lr}
lsls r0, 16
asrs r0, 16
bl sub_80A2728
lsls r0, 24
lsrs r0, 24
bl GetDungeonName1
pop {r1}
bx r1
thumb_func_end sub_80975C4
thumb_func_start sub_80975DC
sub_80975DC:
push {lr}
lsls r0, 16
ldr r1, _08097600
adds r0, r1
lsrs r0, 16
cmp r0, 0x1
bhi _08097610
movs r2, 0x1
negs r2, r2
movs r0, 0x3
movs r1, 0xE
bl sub_8001D08
lsls r0, 24
cmp r0, 0
beq _08097608
ldr r0, _08097604
b _08097612
.align 2, 0
_08097600: .4byte 0xffe90000
_08097604: .4byte gMeetNinetalesText
_08097608:
ldr r0, _0809760C
b _08097612
.align 2, 0
_0809760C: .4byte gAvoidCaptureText
_08097610:
ldr r0, _08097618
_08097612:
pop {r1}
bx r1
.align 2, 0
_08097618: .4byte gFinalScenarioText
thumb_func_end sub_80975DC
thumb_func_start sub_809761C
sub_809761C:
push {r4,lr}
movs r4, 0
_08097620:
lsls r0, r4, 16
asrs r0, 16
bl sub_809758C
lsls r0, 24
cmp r0, 0
bne _08097632
movs r0, 0
b _0809763A
_08097632:
adds r4, 0x1
cmp r4, 0x10
ble _08097620
movs r0, 0x1
_0809763A:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_809761C
thumb_func_start sub_8097640
sub_8097640:
push {lr}
movs r0, 0
movs r1, 0x2E
movs r2, 0x1F
bl sub_8001784
cmp r0, 0
bne _0809766A
bl sub_809761C
lsls r0, 24
cmp r0, 0
beq _0809766A
movs r0, 0
movs r1, 0x2E
movs r2, 0x1F
movs r3, 0x1
bl sub_800199C
movs r0, 0x1
b _0809766C
_0809766A:
movs r0, 0
_0809766C:
pop {r1}
bx r1
thumb_func_end sub_8097640
.align 2,0

File diff suppressed because it is too large Load Diff

View File

@ -102,6 +102,8 @@ SECTIONS {
asm/kecleon_items.o(.text);
src/kecleon_items_1.o(.text);
asm/pokemon_square.o(.text);
src/code_801AFA4.o(.text);
asm/code_801AFA4.o(.text);
src/code_801C620.o(.text);
asm/code_801C620.o(.text);
src/code_801D760.o(.text);
@ -205,6 +207,7 @@ SECTIONS {
asm/code_8095014.o(.text);
src/code_809747C.o(.text);
asm/code_809747C.o(.text);
src/code_809747C_1.o(.text);
src/code_8097670.o(.text);
asm/code_8097670.o(.text);
src/code_8097F40.o(.text);

151
src/code_801AFA4.c Normal file
View File

@ -0,0 +1,151 @@
#include "global.h"
#include "memory.h"
#include "text.h"
#include "gUnknown_203B460.h"
extern struct unkStruct_203B460 *gUnknown_203B460;
extern u16 sub_80913CC(u8);
extern void sub_8092C84(u8 *, u16);
extern void sub_8099690(u32);
extern u32 sub_801B2F4(void);
extern void sub_801B064(s32);
extern void sub_801B200(void);
extern void sub_801B2AC(void);
extern void sub_801B2D8(void);
extern void nullsub_37();
extern void sub_801B080();
extern u32 gUnknown_80DB9BC;
extern u32 gUnknown_80DB9E4;
extern u32 gUnknown_80DBA0C;
extern u8 gUnknown_202E1C8[0x50];
extern bool8 sub_80915A0(u8);
extern void DisplayGulpinDialogueSprite(u32, u32, u32 *);
extern void sub_801B178(void);
extern void sub_8094060(u32 *, u32 *);
extern void PlaySound(u32);
extern void sub_80141B4(u32 *, u32, u32 ,u32);
extern void sub_8014248(u32 *, u32, u32, u32 *, u32, u32, u32, u32, u32);
struct subStruct_203B22C
{
u8 fill0[0x2C];
u32 unk2C;
};
struct unkStruct_203B22C
{
// size: 0xa4
s32 state;
u32 unk4;
u8 unk8; // item index
u16 unkA; // item move??
u32 unkC;
u8 fill10[0x58 - 0x10];
s16 unk58;
u16 unk5A;
struct subStruct_203B22C *unk5C;
u32 unk60;
u32 unk64;
};
extern struct unkStruct_203B22C *gUnknown_203B22C;
u32 sub_801AFA4(u32 r0)
{
gUnknown_203B22C = MemoryAlloc(0xA4, 8);
gUnknown_203B22C->unk4 = r0;
gUnknown_203B22C->unk8 = gUnknown_203B460->fill0[r0].itemIndex;
gUnknown_203B22C->unkA = sub_80913CC(gUnknown_203B22C->unk8);
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->unkA);
sub_8099690(0);
if(sub_801B2F4() == 0)
{
sub_801B064(3);
}
else
{
gUnknown_203B22C->unk60 = 4;
sub_801B064(0);
}
return 1;
}
u32 sub_801B00C(void)
{
switch(gUnknown_203B22C->state)
{
case 4:
return 3;
case 0:
sub_801B200();
break;
case 1:
sub_801B2AC();
break;
default:
sub_801B2D8();
break;
}
return 0;
}
void sub_801B048(void)
{
if(gUnknown_203B22C != NULL)
{
MemoryFree(gUnknown_203B22C);
gUnknown_203B22C = NULL;
}
}
void sub_801B064(s32 newState)
{
gUnknown_203B22C->state = newState;
nullsub_37();
sub_801B080();
}
void nullsub_37(void)
{
}
void sub_801B080(void)
{
switch(gUnknown_203B22C->state)
{
case 0:
sub_801B178();
// #+Who will learn the move
// #+#C5$m7#R?
sub_8014248(&gUnknown_80DB9BC, 0, gUnknown_203B22C->unk60, &gUnknown_203B22C->unk64, 0, 4, 0, 0, 0x20);
break;
case 1:
DisplayGulpinDialogueSprite(2, gUnknown_203B22C->unk58, &gUnknown_203B22C->unkC);
break;
case 2:
sub_8094060(&gUnknown_203B22C->unkC, &gUnknown_203B22C->unk5C->unk2C);
if(!sub_80915A0(gUnknown_203B22C->unk8))
{
gUnknown_203B460->fill0[gUnknown_203B22C->unk4].numItems = gUnknown_203B22C->unk8 - 0x7D;
gUnknown_203B460->fill0[gUnknown_203B22C->unk4].itemIndex = 0x7C;
}
PlaySound(0x9C << 1);
// #+CM$m8#R learned
// #+the move #C5$m7#R!
sub_80141B4(&gUnknown_80DB9E4, 0, 0, 0x121);
break;
case 3:
// #+No one in the current team
// #+can learn this move.
sub_80141B4(&gUnknown_80DBA0C, 0, 0, 0x121);
break;
default:
case 4:
break;
}
}

54
src/code_809747C_1.c Normal file
View File

@ -0,0 +1,54 @@
#include "global.h"
#include "dungeon.h"
extern u8 sub_80A2728(s16);
extern const char gFinalScenarioText[];
extern const char gMeetNinetalesText[];
extern const char gAvoidCaptureText[];
extern u8 sub_8001D08(u32, u32 ,s32);
extern bool8 sub_809761C(void);
extern u32 sub_8001784(u32, u32, u16);
extern void sub_800199C(u32, u32, u32, u32);
extern bool8 sub_809758C(s16);
const u8 *sub_80975C4(s16 r0)
{
return GetDungeonName1(sub_80A2728(r0));
}
const char *sub_80975DC(u32 r0)
{
// TODO: slight hack but matches
r0 <<= 16;
if((0xffe90000 + r0) >> 16 < 2)
if(sub_8001D08(0x3, 0xE, -1) != 0)
return gMeetNinetalesText;
else
return gAvoidCaptureText;
else
return gFinalScenarioText;
}
bool8 sub_809761C(void)
{
s32 iVar2;
for(iVar2 = 0; iVar2 < 17; iVar2++)
{
if(!sub_809758C(iVar2))
return FALSE;
}
return TRUE;
}
u32 sub_8097640(void)
{
if(sub_8001784(0, 0x2E, 0x1F) == 0 && sub_809761C())
{
sub_800199C(0, 0x2E, 0x1F, 1);
return 1;
}
else
{
return 0;
}
}