isemi-identified VRAM and split personality test funcs

This commit is contained in:
Seth Barberee 2020-11-23 15:22:16 -06:00
parent fc7f14ab66
commit 2582d7a868
11 changed files with 3591 additions and 3571 deletions

View File

@ -5,8 +5,8 @@
.text
thumb_func_start sub_8009804
sub_8009804:
thumb_func_start vram_related_8009804
vram_related_8009804:
push {lr}
movs r1, 0xC0
lsls r1, 19
@ -83,7 +83,7 @@ _08009890: .4byte 0x06010000
_08009894: .4byte 0x00001f7f
_08009898: .4byte 0x05000200
_0800989C: .4byte 0x00a000a0
thumb_func_end sub_8009804
thumb_func_end vram_related_8009804
thumb_func_start sub_80098A0
sub_80098A0:

File diff suppressed because it is too large Load Diff

View File

@ -2181,7 +2181,7 @@ _08043CD4: .4byte gUnknown_203B41C
thumb_func_start sub_8043CD8
sub_8043CD8:
push {lr}
bl sub_8009804
bl vram_related_8009804
pop {r0}
bx r0
thumb_func_end sub_8043CD8

File diff suppressed because it is too large Load Diff

1446
asm/code_809747C.s Normal file

File diff suppressed because it is too large Load Diff

2030
asm/personality_test.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -27,5 +27,6 @@ struct Dungeon
extern struct Dungeon gDungeons[];
extern struct DungeonName gDungeonNames[];
const u8 *GetDungeonName1(u8 dungeon);
#endif //GUARD_DUNGEON_H

View File

@ -97,7 +97,8 @@ SECTIONS {
asm/code_801D760.o(.text);
src/code_8027C84_pre.o(.text);
asm/code_8027C84.o(.text);
src/code_8027C84.o(.text);
asm/personality_test.o(.text);
src/personality_test.o(.text);
asm/code_803D110.o(.text);
src/code_8040094.o(.text);
asm/code_8040094.o(.text);
@ -124,6 +125,8 @@ SECTIONS {
asm/code_8092334.o(.text);
src/code_8094F88.o(.text);
asm/code_8095014.o(.text);
src/code_809747C.o(.text);
asm/code_809747C.o(.text);
src/code_8097F40.o(.text);
asm/code_8097F40.o(.text);
asm/code_8098468.o(.text);

View File

@ -1,25 +0,0 @@
#include "global.h"
extern u8 gUnknown_80F42D0[];
extern u8 gUnknown_80F42F0[];
extern u8 gUnknown_203B408;
u8 sub_803D0D8()
{
return gUnknown_203B408;
}
void sub_803D0E4(u8 r0)
{
gUnknown_203B408 = r0;
}
u8 sub_803D0F0(u8 r0)
{
return gUnknown_80F42F0[r0];
}
u8 sub_803D100(u8 r0)
{
return gUnknown_80F42D0[r0];
}

81
src/code_809747C.c Normal file
View File

@ -0,0 +1,81 @@
#include "global.h"
#include "dungeon.h"
extern u32 *gStoryMissionText[];
extern const u8 gDummyScenarioText;
extern u32 gUnknown_8109CC0;
extern u8 sub_80A270C();
extern void sub_80015C0(u8, u8);
const u8 *sub_809747C(s16 r0)
{
if(r0 == 0xD)
{
return &gDummyScenarioText;
}
else
{
return GetDungeonName1(sub_80A270C());
}
}
const u8 *sub_80974A0(s16 r0)
{
if(r0 == 0xD)
{
return &gDummyScenarioText;
}
else
{
return GetDungeonName1(sub_80A270C());
}
}
#ifndef NONMATCHING
NAKED
#endif
u32 *sub_80974C4(s16 r0)
{
#ifdef NONMATCHING
// TODO fix regswap memes of r0/r1
if(r0 <= 0x1E)
{
return gStoryMissionText[(r0 << 1)];
}
else
{
return &gUnknown_8109CC0;
}
#else
asm_unified("\tpush {lr}\n"
"\tlsls r0, 16\n"
"\tasrs r0, 16\n"
"\tcmp r0, 0x1E\n"
"\tble _080974D8\n"
"\tldr r0, _080974D4\n"
"\tb _080974E0\n"
"\t.align 2, 0\n"
"_080974D4: .4byte gUnknown_8109CC0\n"
"_080974D8:\n"
"\tlsls r0, 3\n"
"\tldr r1, _080974E4\n"
"\tadds r0, r1\n"
"\tldr r0, [r0]\n"
"_080974E0:\n"
"\tpop {r1}\n"
"\tbx r1\n"
"\t.align 2, 0\n"
"_080974E4: .4byte gStoryMissionText");
#endif
}
void sub_80974E8(void)
{
sub_80015C0(0, 0x2E);
sub_80015C0(0, 0x2F);
}
void nullsub_208(void)
{
}

View File

@ -28,3 +28,28 @@ const u16 gPartners[10] =
SPECIES_MUDKIP
};
extern u8 gUnknown_80F42D0[];
extern u8 gUnknown_80F42F0[];
extern u8 gUnknown_203B408;
u8 sub_803D0D8()
{
return gUnknown_203B408;
}
void sub_803D0E4(u8 r0)
{
gUnknown_203B408 = r0;
}
u8 sub_803D0F0(u8 r0)
{
return gUnknown_80F42F0[r0];
}
u8 sub_803D100(u8 r0)
{
return gUnknown_80F42D0[r0];
}