mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 23:17:03 -05:00
splitting more files and decomp a little more
This commit is contained in:
parent
31b46b0782
commit
e806b05526
2636
asm/code_801AFA4.s
Normal file
2636
asm/code_801AFA4.s
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
||||
|
|
|
|||
2863
asm/pokemon_square.s
2863
asm/pokemon_square.s
File diff suppressed because it is too large
Load Diff
|
|
@ -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
151
src/code_801AFA4.c
Normal 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
54
src/code_809747C_1.c
Normal 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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user