summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-11-23 21:22:31 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2018-11-23 21:22:31 -0500
commit91bfbfb9fb2bbdecfc33e76fca7aa6ff5a2c8a34 (patch)
treed44383307f0bfeb092dbed5630fa706ceafe3b21
parentd347a95390a5cb61416f0148e9a9661b1ffddde7 (diff)
quest_log_battle, 1
-rw-r--r--asm/quest_log_battle.s286
-rw-r--r--include/overworld.h3
-rw-r--r--include/quest_log.h1
-rw-r--r--ld_script.txt1
-rw-r--r--src/quest_log.c2
-rw-r--r--src/quest_log_battle.c97
6 files changed, 102 insertions, 288 deletions
diff --git a/asm/quest_log_battle.s b/asm/quest_log_battle.s
index 1870395e9..1afadbf5f 100644
--- a/asm/quest_log_battle.s
+++ b/asm/quest_log_battle.s
@@ -5,292 +5,6 @@
.text
- thumb_func_start sub_812BFDC
-sub_812BFDC: @ 812BFDC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, _0812C03C @ =gBattleTypeFlags
- ldr r0, [r4]
- ldr r1, _0812C040 @ =0x00010202
- ands r0, r1
- cmp r0, 0
- beq _0812BFF4
- b _0812C212
-_0812BFF4:
- ldr r5, _0812C044 @ =gUnknown_2023E8A
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _0812C002
- cmp r0, 0x7
- beq _0812C002
- b _0812C212
-_0812C002:
- movs r0, 0x8
- bl Alloc
- adds r7, r0, 0
- movs r0, 0x8
- bl Alloc
- mov r9, r0
- ldr r4, [r4]
- movs r0, 0x8
- ands r4, r0
- cmp r4, 0
- bne _0812C01E
- b _0812C1CC
-_0812C01E:
- ldr r3, _0812C048 @ =gTrainers
- ldr r2, _0812C04C @ =gTrainerBattleOpponent_A
- ldrh r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r3
- ldrb r1, [r0, 0x1]
- cmp r1, 0x57
- beq _0812C060
- cmp r1, 0x57
- bgt _0812C050
- cmp r1, 0x54
- beq _0812C056
- b _0812C066
- .align 2, 0
-_0812C03C: .4byte gBattleTypeFlags
-_0812C040: .4byte 0x00010202
-_0812C044: .4byte gUnknown_2023E8A
-_0812C048: .4byte gTrainers
-_0812C04C: .4byte gTrainerBattleOpponent_A
-_0812C050:
- cmp r1, 0x5A
- beq _0812C05C
- b _0812C066
-_0812C056:
- movs r0, 0x1E
- mov r10, r0
- b _0812C06A
-_0812C05C:
- movs r1, 0x21
- b _0812C068
-_0812C060:
- movs r0, 0x20
- mov r10, r0
- b _0812C06A
-_0812C066:
- movs r1, 0x22
-_0812C068:
- mov r10, r1
-_0812C06A:
- ldrh r0, [r2]
- strh r0, [r7]
- ldr r0, _0812C0AC @ =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812C150
- ldr r0, _0812C0B0 @ =gBattleResults
- ldrh r0, [r0, 0x20]
- strh r0, [r7, 0x2]
- ldr r4, _0812C0B4 @ =gBattleStruct
- ldr r0, [r4]
- movs r1, 0xC1
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _0812C0BC
- ldr r2, _0812C0B8 @ =gBattleMons
- ldr r0, [r4]
- movs r1, 0xC1
- lsls r1, 1
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- b _0812C0EA
- .align 2, 0
-_0812C0AC: .4byte gBattleTypeFlags
-_0812C0B0: .4byte gBattleResults
-_0812C0B4: .4byte gBattleStruct
-_0812C0B8: .4byte gBattleMons
-_0812C0BC:
- ldr r5, _0812C0D8 @ =gBattleMons
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0812C0DC
- movs r0, 0
- b _0812C0DE
- .align 2, 0
-_0812C0D8: .4byte gBattleMons
-_0812C0DC:
- movs r0, 0x2
-_0812C0DE:
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- muls r0, r4
- adds r0, r5
-_0812C0EA:
- ldrh r0, [r0]
- strh r0, [r7, 0x4]
- movs r0, 0
- bl GetBattlerAtPosition
- adds r4, r0, 0
- movs r0, 0x2
- bl GetBattlerAtPosition
- ldr r6, _0812C14C @ =gBattleMons
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x58
- adds r1, r4, 0
- muls r1, r5
- adds r1, r6
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- ldrh r1, [r1, 0x28]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- movs r0, 0
- bl GetBattlerAtPosition
- adds r4, r0, 0
- movs r0, 0x2
- bl GetBattlerAtPosition
- lsls r4, 24
- lsrs r4, 24
- adds r1, r4, 0
- muls r1, r5
- adds r1, r6
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x2C]
- ldrh r1, [r1, 0x2C]
- adds r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- b _0812C18E
- .align 2, 0
-_0812C14C: .4byte gBattleMons
-_0812C150:
- ldr r0, _0812C1C4 @ =gBattleResults
- ldrh r0, [r0, 0x20]
- strh r0, [r7, 0x2]
- movs r0, 0
- bl GetBattlerAtPosition
- ldr r5, _0812C1C8 @ =gBattleMons
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0]
- strh r0, [r7, 0x4]
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x28]
- mov r8, r0
- movs r0, 0
- bl GetBattlerAtPosition
- lsls r0, 24
- lsrs r0, 24
- muls r0, r4
- adds r0, r5
- ldrh r4, [r0, 0x2C]
-_0812C18E:
- bl sav1_map_get_name
- movs r1, 0
- strb r0, [r7, 0x7]
- strb r1, [r7, 0x6]
- adds r0, r4, 0
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r0, r1, 1
- cmp r8, r0
- bge _0812C1AE
- movs r0, 0x1
- strb r0, [r7, 0x6]
-_0812C1AE:
- cmp r8, r1
- bcs _0812C1B8
- ldrb r0, [r7, 0x6]
- adds r0, 0x1
- strb r0, [r7, 0x6]
-_0812C1B8:
- mov r0, r10
- adds r1, r7, 0
- bl sub_8113550
- b _0812C206
- .align 2, 0
-_0812C1C4: .4byte gBattleResults
-_0812C1C8: .4byte gBattleMons
-_0812C1CC:
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _0812C1E8
- ldr r0, _0812C1E4 @ =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- mov r1, r9
- strh r0, [r1]
- strh r4, [r1, 0x2]
- b _0812C1F8
- .align 2, 0
-_0812C1E4: .4byte gEnemyParty
-_0812C1E8:
- mov r0, r9
- strh r4, [r0]
- ldr r0, _0812C220 @ =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- mov r1, r9
- strh r0, [r1, 0x2]
-_0812C1F8:
- bl sav1_map_get_name
- mov r1, r9
- strb r0, [r1, 0x4]
- movs r0, 0x1F
- bl sub_8113550
-_0812C206:
- adds r0, r7, 0
- bl Free
- mov r0, r9
- bl Free
-_0812C212:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812C220: .4byte gEnemyParty
- thumb_func_end sub_812BFDC
-
thumb_func_start sub_812C224
sub_812C224: @ 812C224
push {r4-r7,lr}
diff --git a/include/overworld.h b/include/overworld.h
index 05ff5e03c..8cae07bdc 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -70,7 +70,6 @@ void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void mapldr_default(void);
-void IncrementGameStat(u8);
u32 GetGameStat(u8);
void sub_8056938(void);
@@ -80,6 +79,8 @@ void sub_805726C(void);
void sub_8057430(void);
void sub_8055DC4(void);
+u8 sav1_map_get_name(void);
+
extern u8 gUnknown_2031DD8;
extern u8 gUnknown_2036E28;
diff --git a/include/quest_log.h b/include/quest_log.h
index b2a750725..9f8a0ea21 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -20,5 +20,6 @@ extern struct UnkStruct_3005E90 gUnknown_3005E90;
extern struct UnkStruct_203AE98 * gUnknown_3005E94;
void sub_8112720(u8);
+void sub_8113550(u16, const u16 *);
#endif //GUARD_QUEST_LOG_H
diff --git a/ld_script.txt b/ld_script.txt
index 3d59b2459..070eb444a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -225,6 +225,7 @@ SECTIONS {
asm/party_menu.o(.text);
asm/union_room_chat.o(.text);
asm/help_system_812B1E0.o(.text);
+ src/quest_log_battle.o(.text);
asm/quest_log_battle.o(.text);
asm/fame_checker.o(.text);
asm/menu2.o(.text);
diff --git a/src/quest_log.c b/src/quest_log.c
index ed7214bdd..546ff6e05 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -2820,7 +2820,7 @@ static u16 * (*const sQuestLogStorageCBs[])(u16 *, const u16 *) = {
};
#ifdef NONMATCHING
-void sub_8113550(u16 a0, u16 * a1)
+void sub_8113550(u16 a0, const u16 * a1)
{
u16 * r1;
diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c
new file mode 100644
index 000000000..c5d8ec2af
--- /dev/null
+++ b/src/quest_log_battle.c
@@ -0,0 +1,97 @@
+#include "global.h"
+#include "constants/species.h"
+#include "malloc.h"
+#include "battle.h"
+#include "overworld.h"
+#include "quest_log.h"
+
+struct QuestLogStruct_01
+{
+ u16 v0;
+ u16 v2;
+ u16 v4;
+ u8 v6;
+ u8 v7;
+};
+
+struct QuestLogStruct_02
+{
+ u16 v0;
+ u16 v2;
+ u8 v4;
+};
+
+void sub_812BFDC(void)
+{
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_DOME)) && (gUnknown_2023E8A == 1 || gUnknown_2023E8A == 7))
+ {
+ struct QuestLogStruct_01 * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_01));
+ struct QuestLogStruct_02 * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_02));
+ u16 questLogMessageType;
+ u16 playerEndingHP;
+ u16 playerMaxHP;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ switch (gTrainers[gTrainerBattleOpponent_A].trainerClass)
+ {
+ case 0x54:
+ questLogMessageType = 30;
+ break;
+ case 0x5a:
+ questLogMessageType = 33;
+ break;
+ case 0x57:
+ questLogMessageType = 32;
+ break;
+ default:
+ questLogMessageType = 34;
+ break;
+ }
+ questLogTrainerBattleRecord->v0 = gTrainerBattleOpponent_A;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ questLogTrainerBattleRecord->v2 = gBattleResults.lastOpponentSpecies;
+ if (GetBattlerSide(gBattleStruct->field_182) == B_SIDE_PLAYER)
+ questLogTrainerBattleRecord->v4 = gBattleMons[gBattleStruct->field_182].species;
+ else if (gBattleMons[GetBattlerAtPosition(0)].hp != 0)
+ questLogTrainerBattleRecord->v4 = gBattleMons[GetBattlerAtPosition(0)].species;
+ else
+ questLogTrainerBattleRecord->v4 = gBattleMons[GetBattlerAtPosition(2)].species;
+ playerEndingHP = gBattleMons[GetBattlerAtPosition(0)].hp + gBattleMons[GetBattlerAtPosition(2)].hp;
+ playerMaxHP = gBattleMons[GetBattlerAtPosition(0)].maxHP + gBattleMons[GetBattlerAtPosition(2)].maxHP;
+ }
+ else
+ {
+ questLogTrainerBattleRecord->v2 = gBattleResults.lastOpponentSpecies;
+ questLogTrainerBattleRecord->v4 = gBattleMons[GetBattlerAtPosition(0)].species;
+ playerEndingHP = gBattleMons[GetBattlerAtPosition(0)].hp;
+ playerMaxHP = gBattleMons[GetBattlerAtPosition(0)].maxHP;
+ }
+ questLogTrainerBattleRecord->v7 = sav1_map_get_name();
+ questLogTrainerBattleRecord->v6 = 0;
+ if (playerEndingHP < playerMaxHP / 3 * 2)
+ questLogTrainerBattleRecord->v6 = 1;
+ if (playerEndingHP < playerMaxHP / 3)
+ questLogTrainerBattleRecord->v6++;
+ sub_8113550(questLogMessageType, (const u16 *)questLogTrainerBattleRecord);
+ }
+ else
+ {
+ if (gUnknown_2023E8A == 1)
+ {
+ questLogWildBattleRecord->v0 = GetMonData(gEnemyParty + 0, MON_DATA_SPECIES);
+ questLogWildBattleRecord->v2 = SPECIES_NONE;
+ }
+ else
+ {
+ questLogWildBattleRecord->v0 = SPECIES_NONE;
+ questLogWildBattleRecord->v2 = GetMonData(gEnemyParty + 0, MON_DATA_SPECIES);
+ }
+ questLogWildBattleRecord->v4 = sav1_map_get_name();
+ sub_8113550(31, (const u16 *)questLogWildBattleRecord);
+ }
+ Free(questLogTrainerBattleRecord);
+ Free(questLogWildBattleRecord);
+ }
+}