summaryrefslogtreecommitdiff
path: root/src/pokemon_1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokemon_1.c')
-rw-r--r--src/pokemon_1.c156
1 files changed, 141 insertions, 15 deletions
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 6d4cf75..83a74b2 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -8,21 +8,147 @@ extern struct gPokemon *gMonsterParameters;
extern struct FileArchive gUnknown_8510000;
extern const char gUnknown_8107684;
-//u8 sub_808DDD0(s16 r0)
-//{
-// // Looks like this loads the dialogue sprite for the pokemon
-//
-// // TODO stack is being added instead of being substracted
-// // Else this matches
-// char buffer[0xC];
-// if(gMonsterParameters[r0].dialogue_sprites != 0)
-// {
-// sprintf(buffer, &gUnknown_8107684);
-// OpenFileAndGetFileDataPtr(buffer, &gUnknown_8510000);
-// return;
-// }
-// return 0;
-//}
+#ifndef NONMATCHING
+NAKED
+#endif
+// Pretty confided args are correct yet compiler disagrees
+u8 sub_808DD68(s16 r0, u32 r1)
+{
+#ifdef NONMATCHING
+ if (r1 != 0)
+ {
+ return 0xA;
+ }
+ else
+ {
+ return gMonsterParameters[r0].overworld_sprite;
+ }
+#else
+ asm_unified("\tpush {lr}\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r2, r0, 16\n"
+ "\tcmp r1, 0\n"
+ "\tbne _0808DD88\n"
+ "\tldr r0, _0808DD84\n"
+ "\tldr r1, [r0]\n"
+ "\tlsls r0, r2, 3\n"
+ "\tadds r0, r2\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0, 0x8]\n"
+ "\tb _0808DD8A\n"
+ "\t.align 2, 0\n"
+"_0808DD84: .4byte gMonsterParameters\n"
+"_0808DD88:\n"
+ "\tmovs r0, 0xA\n"
+"_0808DD8A:\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+
+#endif
+}
+
+#ifndef NONMATCHING
+NAKED
+#endif
+struct OpenedFile *sub_808DD90(s16 r0)
+{
+#ifdef NONMATCHING
+ // Looks like this loads the dialogue sprite for the pokemon
+
+ // Two words: register memes... else it matches
+ // Fix this and then one after matches too
+ char buffer[0xC];
+ if(gMonsterParameters[r0].dialogue_sprites == 0)
+ {
+ return NULL;
+ }
+ sprintf(buffer, &gUnknown_8107684);
+ return OpenFile(buffer, &gUnknown_8510000);
+#else
+ asm_unified("\tpush {lr}\n"
+ "\tsub sp, 0xC\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r2, r0, 16\n"
+ "\tldr r0, _0808DDBC\n"
+ "\tldr r1, [r0]\n"
+ "\tlsls r0, r2, 3\n"
+ "\tadds r0, r2\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0, 0x10]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0808DDC8\n"
+ "\tldr r1, _0808DDC0\n"
+ "\tmov r0, sp\n"
+ "\tbl sprintf\n"
+ "\tldr r1, _0808DDC4\n"
+ "\tmov r0, sp\n"
+ "\tbl OpenFile\n"
+ "\tb _0808DDCA\n"
+ "\t.align 2, 0\n"
+"_0808DDBC: .4byte gMonsterParameters\n"
+"_0808DDC0: .4byte gUnknown_8107684\n"
+"_0808DDC4: .4byte gUnknown_8510000\n"
+"_0808DDC8:\n"
+ "\tmovs r0, 0\n"
+"_0808DDCA:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+#endif
+}
+
+#ifndef NONMATCHING
+NAKED
+#endif
+struct OpenedFile *sub_808DDD0(s16 r0)
+{
+#ifdef NONMATCHING
+ // Looks like this loads the dialogue sprite for the pokemon
+
+ // Two words: register memes... else it matches
+ char buffer[0xC];
+ if(gMonsterParameters[r0].dialogue_sprites == 0)
+ {
+ return NULL;
+ }
+ sprintf(buffer, &gUnknown_8107684);
+ return OpenFileAndGetFileDataPtr(buffer, &gUnknown_8510000);
+#else
+ asm_unified("\tpush {lr}\n"
+ "\tsub sp, 0xC\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r2, r0, 16\n"
+ "\tldr r0, _0808DDFC\n"
+ "\tldr r1, [r0]\n"
+ "\tlsls r0, r2, 3\n"
+ "\tadds r0, r2\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0, 0x10]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0808DE08\n"
+ "\tldr r1, _0808DE00\n"
+ "\tmov r0, sp\n"
+ "\tbl sprintf\n"
+ "\tldr r1, _0808DE04\n"
+ "\tmov r0, sp\n"
+ "\tbl OpenFileAndGetFileDataPtr\n"
+ "\tb _0808DE0A\n"
+ "\t.align 2, 0\n"
+ "_0808DDFC: .4byte gMonsterParameters\n"
+ "_0808DE00: .4byte gUnknown_8107684\n"
+ "_0808DE04: .4byte gUnknown_8510000\n"
+ "_0808DE08:\n"
+ "\tmovs r0, 0\n"
+ "_0808DE0A:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+
+#endif
+}
bool8 sub_808DE10(s16 r0, s32 r1)
{