diff options
author | Marijn van der Werf <marijn.vanderwerf@gmail.com> | 2017-05-06 23:53:14 +0200 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-05-06 16:26:29 -0700 |
commit | f13acc2ea295274e43bf3b3e73b53b266ba6a7d2 (patch) | |
tree | 3d78cefc7fee59a970855c85aea32e0beacb2ef8 | |
parent | 11156a09cf23a1e06872a780795f9faa5517c435 (diff) |
Decompile CreatedHatchedMon
-rw-r--r-- | asm/egg_hatch.s | 156 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/egg_hatch.c | 52 |
3 files changed, 53 insertions, 156 deletions
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 95737cae6..83ba28eaa 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -6,162 +6,6 @@ .text - thumb_func_start CreatedHatchedMon -CreatedHatchedMon: @ 80428A4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x48 - adds r6, r0, 0 - adds r5, r1, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - movs r4, 0 - add r7, sp, 0x18 - mov r0, sp - adds r0, 0x31 - str r0, [sp, 0x38] - mov r1, sp - adds r1, 0x32 - str r1, [sp, 0x3C] - add r0, sp, 0x30 - mov r9, r0 - adds r1, 0x1 - str r1, [sp, 0x40] - mov r0, sp - adds r0, 0x34 - str r0, [sp, 0x44] -_080428DE: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - lsls r1, r4, 1 - add r1, sp - adds r1, 0x10 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080428DE - adds r0, r6, 0 - movs r1, 0 - bl GetMonData - mov r8, r0 - movs r4, 0 -_08042906: - adds r1, r4, 0 - adds r1, 0x27 - adds r0, r6, 0 - bl GetMonData - lsls r1, r4, 2 - adds r1, r7, r1 - str r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _08042906 - adds r0, r6, 0 - movs r1, 0x25 - bl GetMonData - ldr r1, [sp, 0x38] - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x8 - bl GetMonData - ldr r1, [sp, 0x3C] - strb r0, [r1] - adds r0, r6, 0 - movs r1, 0x22 - bl GetMonData - str r0, [sp, 0x34] - movs r0, 0x1 - str r0, [sp] - mov r0, r8 - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - str r0, [sp, 0xC] - adds r0, r5, 0 - mov r1, r10 - movs r2, 0x5 - movs r3, 0x20 - bl CreateMon - movs r4, 0 -_0804295E: - adds r1, r4, 0 - adds r1, 0xD - lsls r0, r4, 1 - mov r2, sp - adds r2, r0 - adds r2, 0x10 - adds r0, r5, 0 - bl SetMonData - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0804295E - movs r4, 0 -_0804297C: - adds r1, r4, 0 - adds r1, 0x27 - lsls r2, r4, 2 - adds r2, r7, r2 - adds r0, r5, 0 - bl SetMonData - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0804297C - movs r0, 0x2 - mov r1, r9 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x3 - mov r2, r9 - bl SetMonData - adds r0, r5, 0 - movs r1, 0x25 - ldr r2, [sp, 0x38] - bl SetMonData - adds r0, r5, 0 - movs r1, 0x8 - ldr r2, [sp, 0x3C] - bl SetMonData - movs r0, 0x78 - ldr r1, [sp, 0x40] - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x20 - ldr r2, [sp, 0x40] - bl SetMonData - adds r0, r5, 0 - movs r1, 0x22 - ldr r2, [sp, 0x44] - bl SetMonData - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - add sp, 0x48 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end CreatedHatchedMon - thumb_func_start AddHatchedMonToParty AddHatchedMonToParty: @ 80429EC push {r4-r6,lr} diff --git a/ld_script.txt b/ld_script.txt index 76d8d7c8e..8b1347baf 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -72,6 +72,7 @@ SECTIONS { src/blend_palette.o(.text); src/daycare.o(.text); asm/daycare.o(.text); + src/egg_hatch.o(.text); asm/egg_hatch.o(.text); asm/battle_interface.o(.text); src/smokescreen.o(.text); diff --git a/src/egg_hatch.c b/src/egg_hatch.c new file mode 100644 index 000000000..32fbe1547 --- /dev/null +++ b/src/egg_hatch.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "pokemon.h" + +void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) { + u16 species; + u32 personality, pokerus; + u8 i, friendship, language, gameMet, markings; + u16 moves[4]; + u32 ivs[6]; + + + species = GetMonData(egg, MON_DATA_SPECIES); + + for (i = 0; i < 4; i++) + { + moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i); + } + + personality = GetMonData(egg, MON_DATA_PERSONALITY); + + for (i = 0; i < 6; i++) + { + ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i); + } + + gameMet = GetMonData(egg, MON_DATA_MET_GAME); + markings = GetMonData(egg, MON_DATA_MARKINGS); + pokerus = GetMonData(egg, MON_DATA_POKERUS); + + CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0); + + for (i = 0; i < 4; i++) + { + SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]); + } + + for (i = 0; i < 6; i++) + { + SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]); + } + + language = GAME_LANGUAGE; + SetMonData(temp, MON_DATA_LANGUAGE, &language); + SetMonData(temp, MON_DATA_MET_GAME, &gameMet); + SetMonData(temp, MON_DATA_MARKINGS, &markings); + + friendship = 120; + SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship); + SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus); + + *egg = *temp; +} |