mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 13:47:12 -05:00
quest_log_battle, 1
This commit is contained in:
parent
d347a95390
commit
91bfbfb9fb
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
97
src/quest_log_battle.c
Normal file
97
src/quest_log_battle.c
Normal file
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user