mirror of
https://github.com/pret/pokeheartgold.git
synced 2025-02-26 08:09:06 +00:00
lil bit of battle code
This commit is contained in:
parent
990023eefd
commit
7db4002cc6
@ -189,7 +189,7 @@
|
||||
.public ov06_0221BAF0
|
||||
.public ov07_0221BEDC
|
||||
.public ov07_0221BFE0
|
||||
.public ov12_022378C0
|
||||
.public Battle_Main
|
||||
.public ov12_02237B0C
|
||||
.public ov12_02237B6C
|
||||
.public ov12_02237BB8
|
||||
@ -227,7 +227,7 @@
|
||||
.public ov12_0223BFCC
|
||||
.public ov12_0223BFEC
|
||||
.public BattleContext_New
|
||||
.public BattleMain
|
||||
.public BattleContext_Main
|
||||
.public BattleContext_Delete
|
||||
.public ov12_02256F28
|
||||
.public ov12_022581D4
|
||||
|
@ -52,7 +52,7 @@
|
||||
.public ov12_0223C0C4
|
||||
.public RunBattleScript
|
||||
.public BattleContext_New
|
||||
.public BattleMain
|
||||
.public BattleContext_Main
|
||||
.public BattleContext_Delete
|
||||
.public BattleSystem_CheckMoveHitEffect
|
||||
.public BattleSystem_GetBattleMon
|
||||
|
@ -216,7 +216,7 @@
|
||||
.public _02102830
|
||||
.public _02103A1C
|
||||
.public ov02_0224E4EC
|
||||
.public ov12_022378C0
|
||||
.public Battle_Main
|
||||
.public ov14_021E5900
|
||||
.public ov14_021E596C
|
||||
.public ov14_021E5988
|
||||
|
@ -7,295 +7,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start ov12_022378C0
|
||||
ov12_022378C0: ; 0x022378C0
|
||||
push {r3, r4, r5, r6, lr}
|
||||
sub sp, #0x24
|
||||
add r4, r1, #0
|
||||
add r6, r0, #0
|
||||
bl OverlayManager_GetArgs
|
||||
ldr r1, [r4]
|
||||
add r5, r0, #0
|
||||
cmp r1, #0xf
|
||||
bls _022378D6
|
||||
b _02237AFA
|
||||
_022378D6:
|
||||
add r1, r1, r1
|
||||
add r1, pc
|
||||
ldrh r1, [r1, #6]
|
||||
lsl r1, r1, #0x10
|
||||
asr r1, r1, #0x10
|
||||
add pc, r1
|
||||
_022378E2: ; jump table
|
||||
.short _02237902 - _022378E2 - 2 ; case 0
|
||||
.short _0223792E - _022378E2 - 2 ; case 1
|
||||
.short _02237974 - _022378E2 - 2 ; case 2
|
||||
.short _0223798A - _022378E2 - 2 ; case 3
|
||||
.short _022379A0 - _022378E2 - 2 ; case 4
|
||||
.short _022379B0 - _022378E2 - 2 ; case 5
|
||||
.short _022379C6 - _022378E2 - 2 ; case 6
|
||||
.short _022379E2 - _022378E2 - 2 ; case 7
|
||||
.short _022379F4 - _022378E2 - 2 ; case 8
|
||||
.short _02237A10 - _022378E2 - 2 ; case 9
|
||||
.short _02237A2C - _022378E2 - 2 ; case 10
|
||||
.short _02237A48 - _022378E2 - 2 ; case 11
|
||||
.short _02237A64 - _022378E2 - 2 ; case 12
|
||||
.short _02237A6A - _022378E2 - 2 ; case 13
|
||||
.short _02237AD2 - _022378E2 - 2 ; case 14
|
||||
.short _02237AF4 - _022378E2 - 2 ; case 15
|
||||
_02237902:
|
||||
mov r2, #0xb
|
||||
mov r0, #3
|
||||
mov r1, #5
|
||||
lsl r2, r2, #0x10
|
||||
bl CreateHeap
|
||||
ldr r1, [r5]
|
||||
mov r0, #4
|
||||
tst r0, r1
|
||||
beq _02237928
|
||||
mov r0, #0x63
|
||||
lsl r0, r0, #2
|
||||
ldr r1, [r5, r0]
|
||||
mov r0, #0x10
|
||||
tst r0, r1
|
||||
bne _02237928
|
||||
mov r0, #1
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237928:
|
||||
mov r0, #3
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_0223792E:
|
||||
add r0, r6, #0
|
||||
add r1, r5, #0
|
||||
bl ov12_022399D4
|
||||
mov r0, #0x4b
|
||||
lsl r0, r0, #2
|
||||
ldr r0, [r5, r0]
|
||||
bl sub_02039F68
|
||||
bl sub_02039998
|
||||
cmp r0, #0
|
||||
bne _02237962
|
||||
mov r0, #0x51
|
||||
lsl r0, r0, #2
|
||||
ldr r0, [r5, r0]
|
||||
mov r1, #0x15
|
||||
bl GameStats_Inc
|
||||
ldr r0, [r5]
|
||||
cmp r0, #0x8f
|
||||
beq _0223796E
|
||||
mov r0, #1
|
||||
bl sub_02005BEC
|
||||
b _0223796E
|
||||
_02237962:
|
||||
mov r0, #0x51
|
||||
lsl r0, r0, #2
|
||||
ldr r0, [r5, r0]
|
||||
mov r1, #0x1a
|
||||
bl GameStats_Inc
|
||||
_0223796E:
|
||||
mov r0, #2
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237974:
|
||||
add r0, r6, #0
|
||||
bl ov12_02239C28
|
||||
cmp r0, #1
|
||||
bne _022379EC
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A088
|
||||
mov r0, #3
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_0223798A:
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A0D4
|
||||
cmp r0, #1
|
||||
bne _0223799A
|
||||
mov r0, #4
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_0223799A:
|
||||
mov r0, #5
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_022379A0:
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A218
|
||||
cmp r0, #1
|
||||
bne _022379EC
|
||||
mov r0, #5
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_022379B0:
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A260
|
||||
cmp r0, #1
|
||||
bne _022379C0
|
||||
mov r0, #6
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_022379C0:
|
||||
mov r0, #8
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_022379C6:
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A3A8
|
||||
cmp r0, #1
|
||||
bne _022379EC
|
||||
ldr r0, _02237B00 ; =FS_OVERLAY_ID(OVY_5)
|
||||
bl UnloadOverlayByID
|
||||
mov r0, #7
|
||||
str r0, [r4]
|
||||
mov r0, #0x3d
|
||||
bl sub_02037AC0
|
||||
b _02237AFA
|
||||
_022379E2:
|
||||
mov r0, #0x3d
|
||||
bl sub_02037B38
|
||||
cmp r0, #0
|
||||
bne _022379EE
|
||||
_022379EC:
|
||||
b _02237AFA
|
||||
_022379EE:
|
||||
mov r0, #8
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_022379F4:
|
||||
ldr r0, _02237B04 ; =FS_OVERLAY_ID(OVY_6)
|
||||
mov r1, #2
|
||||
bl HandleLoadOverlay
|
||||
ldr r0, _02237B08 ; =FS_OVERLAY_ID(OVY_7)
|
||||
mov r1, #2
|
||||
bl HandleLoadOverlay
|
||||
add r0, r6, #0
|
||||
bl ov12_02237F18
|
||||
mov r0, #9
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237A10:
|
||||
add r0, r6, #0
|
||||
bl ov12_02238358
|
||||
cmp r0, #1
|
||||
bne _02237AFA
|
||||
add r0, r6, #0
|
||||
bl ov12_0223843C
|
||||
mov r0, #0
|
||||
bl sub_02005BEC
|
||||
mov r0, #0xa
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237A2C:
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A3F0
|
||||
cmp r0, #1
|
||||
bne _02237A3C
|
||||
mov r0, #0xb
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237A3C:
|
||||
mov r0, #5
|
||||
bl DestroyHeap
|
||||
mov r0, #0xd
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237A48:
|
||||
add r0, r6, #0
|
||||
bl ov12_0223A5E4
|
||||
cmp r0, #1
|
||||
bne _02237AFA
|
||||
ldr r0, _02237B00 ; =FS_OVERLAY_ID(OVY_5)
|
||||
bl UnloadOverlayByID
|
||||
mov r0, #5
|
||||
bl DestroyHeap
|
||||
mov r0, #0xc
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237A64:
|
||||
mov r0, #0xf
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237A6A:
|
||||
add r1, sp, #0x20
|
||||
add r2, sp, #0x1c
|
||||
bl BattleSystem_CheckEvolution
|
||||
add r6, r0, #0
|
||||
beq _02237ACC
|
||||
mov r0, #3
|
||||
mov r1, #0x47
|
||||
lsl r2, r0, #0x10
|
||||
bl CreateHeap
|
||||
ldr r0, [r5, #4]
|
||||
ldr r1, [sp, #0x20]
|
||||
bl Party_GetMonByIndex
|
||||
mov r2, #0x59
|
||||
lsl r2, r2, #2
|
||||
add r1, r0, #0
|
||||
ldr r0, [r5, r2]
|
||||
mov r3, #0x47
|
||||
str r0, [sp]
|
||||
add r0, r2, #0
|
||||
sub r0, #0x54
|
||||
ldr r0, [r5, r0]
|
||||
str r0, [sp, #4]
|
||||
add r0, r2, #0
|
||||
sub r0, #0x5c
|
||||
ldr r0, [r5, r0]
|
||||
sub r2, #0x20
|
||||
str r0, [sp, #8]
|
||||
ldr r0, [r5, r2]
|
||||
add r2, r6, #0
|
||||
str r0, [sp, #0xc]
|
||||
ldr r0, [sp, #0x1c]
|
||||
str r0, [sp, #0x10]
|
||||
mov r0, #3
|
||||
str r0, [sp, #0x14]
|
||||
str r3, [sp, #0x18]
|
||||
add r3, #0xe9
|
||||
ldr r0, [r5, #4]
|
||||
ldr r3, [r5, r3]
|
||||
bl sub_02075A7C
|
||||
mov r1, #0x66
|
||||
lsl r1, r1, #2
|
||||
str r0, [r5, r1]
|
||||
mov r0, #0xe
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237ACC:
|
||||
mov r0, #0xf
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237AD2:
|
||||
mov r0, #0x66
|
||||
lsl r0, r0, #2
|
||||
ldr r5, [r5, r0]
|
||||
add r0, r5, #0
|
||||
bl sub_02075D3C
|
||||
cmp r0, #1
|
||||
bne _02237AFA
|
||||
add r0, r5, #0
|
||||
bl sub_02075D4C
|
||||
mov r0, #0x47
|
||||
bl DestroyHeap
|
||||
mov r0, #0xd
|
||||
str r0, [r4]
|
||||
b _02237AFA
|
||||
_02237AF4:
|
||||
add sp, #0x24
|
||||
mov r0, #1
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
_02237AFA:
|
||||
mov r0, #0
|
||||
add sp, #0x24
|
||||
pop {r3, r4, r5, r6, pc}
|
||||
.balign 4, 0
|
||||
_02237B00: .word FS_OVERLAY_ID(OVY_5)
|
||||
_02237B04: .word FS_OVERLAY_ID(OVY_6)
|
||||
_02237B08: .word FS_OVERLAY_ID(OVY_7)
|
||||
thumb_func_end ov12_022378C0
|
||||
|
||||
thumb_func_start ov12_02237B0C
|
||||
ov12_02237B0C: ; 0x02237B0C
|
||||
push {r4, lr}
|
||||
@ -1221,7 +932,7 @@ ov12_02238358: ; 0x02238358
|
||||
cmp r1, #0
|
||||
beq _02238380
|
||||
ldr r1, [r4, #0x30]
|
||||
bl BattleMain
|
||||
bl BattleContext_Main
|
||||
_02238380:
|
||||
ldr r0, [r4, #0x44]
|
||||
mov r6, #0
|
||||
@ -1245,7 +956,7 @@ _0223839E:
|
||||
beq _022383BA
|
||||
ldr r1, [r4, #0x30]
|
||||
add r0, r4, #0
|
||||
bl BattleMain
|
||||
bl BattleContext_Main
|
||||
ldr r1, _02238438 ; =0x000023FE
|
||||
strb r0, [r4, r1]
|
||||
add r0, r4, #0
|
||||
@ -1281,7 +992,7 @@ _022383E0:
|
||||
beq _02238404
|
||||
ldr r1, [r4, #0x30]
|
||||
add r0, r4, #0
|
||||
bl BattleMain
|
||||
bl BattleContext_Main
|
||||
ldr r1, _02238438 ; =0x000023FE
|
||||
strb r0, [r4, r1]
|
||||
add r0, r4, #0
|
||||
|
@ -181,7 +181,7 @@ sub_0203E3A8: ; 0x0203E3A8
|
||||
thumb_func_start sub_0203E3AC
|
||||
sub_0203E3AC: ; 0x0203E3AC
|
||||
push {r3, lr}
|
||||
bl ov12_022378C0
|
||||
bl Battle_Main
|
||||
cmp r0, #0
|
||||
beq _0203E3BA
|
||||
mov r0, #1
|
||||
|
24
include/battle/battle_022378C0.h
Normal file
24
include/battle/battle_022378C0.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef POKEHEARTGOLD_BATTLE_022378C0_H
|
||||
#define POKEHEARTGOLD_BATTLE_022378C0_H
|
||||
|
||||
#include "battle.h"
|
||||
#include "battle_setup.h"
|
||||
#include "overlay_manager.h"
|
||||
|
||||
BOOL Battle_Main(OVY_MANAGER *man, int *state);
|
||||
|
||||
//the following functions are static and have yet to be decompiled
|
||||
void ov12_022399D4(OVY_MANAGER *man, BattleSetup *setup);
|
||||
BOOL ov12_02239C28(OVY_MANAGER *man);
|
||||
void ov12_0223A088(OVY_MANAGER *man);
|
||||
BOOL ov12_0223A0D4(OVY_MANAGER *man);
|
||||
BOOL ov12_0223A218(OVY_MANAGER *man);
|
||||
BOOL ov12_0223A260(OVY_MANAGER *man);
|
||||
BOOL ov12_0223A3A8(OVY_MANAGER *man);
|
||||
void ov12_02237F18(OVY_MANAGER *man);
|
||||
BOOL ov12_02238358(OVY_MANAGER *man);
|
||||
void ov12_0223843C(OVY_MANAGER *man);
|
||||
BOOL ov12_0223A3F0(OVY_MANAGER *man);
|
||||
BOOL ov12_0223A5E4(OVY_MANAGER *man);
|
||||
|
||||
#endif
|
@ -4,7 +4,7 @@
|
||||
#include "battle/battle.h"
|
||||
|
||||
BattleContext *BattleContext_New(BattleSystem *bsys);
|
||||
BOOL BattleMain(BattleSystem *bsys, BattleContext *ctx);
|
||||
BOOL BattleContext_Main(BattleSystem *bsys, BattleContext *ctx);
|
||||
void BattleContext_Delete(BattleContext *ctx);
|
||||
void BattleSystem_CheckMoveHitEffect(BattleSystem *bsys, BattleContext *ctx, int battlerIdAttacker, int battlerIdTarget, int moveNo);
|
||||
|
||||
|
@ -23,7 +23,7 @@ struct BattleSetupSub_138 {
|
||||
};
|
||||
|
||||
struct BattleSetup { //declared in trainer_data.h
|
||||
u32 flags; // 0
|
||||
u32 battleType; // 0
|
||||
Party* party[BATTLER_MAX]; // 4
|
||||
int winFlag; // 14
|
||||
int trainerId[BATTLER_MAX]; // 18
|
||||
@ -54,10 +54,10 @@ struct BattleSetup { //declared in trainer_data.h
|
||||
u32 weatherType; // 174
|
||||
int levelUpFlag; // 178
|
||||
u8 filler_17C[0x10];
|
||||
u32 unk_18C;
|
||||
u32 battleSpecial; //18C
|
||||
int safariBalls; // 190
|
||||
int unk_194;
|
||||
u8 filler_198[4];
|
||||
void *unk198;
|
||||
int unk_19C;
|
||||
int unk_1A0[4];
|
||||
u16 unk1B0;
|
||||
|
@ -11,8 +11,9 @@
|
||||
#define GAME_STAT_UNK12 12
|
||||
#define GAME_STAT_UNK17 17
|
||||
#define GAME_STAT_UNK20 20
|
||||
#define GAME_STAT_UNK21 21
|
||||
#define GAME_STAT_UNK21 21 //link battles?
|
||||
#define GAME_STAT_BADGE_GET 22
|
||||
#define GAME_STAT_UNK26 26
|
||||
#define GAME_STAT_UNK46 46
|
||||
#define GAME_STAT_BATTLE_POINTS 69
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef POKEHEARTGOLD_HEAP_H
|
||||
#define POKEHEARTGOLD_HEAP_H
|
||||
|
||||
#include "global.h"
|
||||
|
||||
typedef enum HeapID {
|
||||
HEAP_ID_DEFAULT,
|
||||
HEAP_ID_1,
|
||||
@ -18,6 +20,7 @@ typedef enum HeapID {
|
||||
HEAP_ID_32 = 32,
|
||||
HEAP_ID_OV55 = 40,
|
||||
HEAP_ID_CHOOSE_STARTER = 46,
|
||||
HEAP_ID_EVOLUTION = 71,
|
||||
HEAP_ID_CREDITS = 73,
|
||||
HEAP_ID_89 = 89,
|
||||
HEAP_ID_ALPH_PUZZLE = 97,
|
||||
|
@ -2,5 +2,6 @@
|
||||
#define POKEHEARTGOLD_UNK_02004A44_H
|
||||
|
||||
void sub_02004AD8(int a0);
|
||||
void sub_02005BEC();
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_02004A44_H
|
||||
|
@ -15,7 +15,7 @@ BOOL sub_02039AA4(void);
|
||||
int sub_020399B8(void);
|
||||
BOOL sub_02038D90(void);
|
||||
BOOL sub_0203A05C(SaveData *saveData);
|
||||
void sub_02039F68(void);
|
||||
void sub_02039F68(void *);
|
||||
void sub_02039AD8(int);
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_02037C94_H
|
||||
|
15
include/unk_020755E8.h
Normal file
15
include/unk_020755E8.h
Normal file
@ -0,0 +1,15 @@
|
||||
#ifndef POKEHEARTGOLD_UNK_020755E8_H
|
||||
#define POKEHEARTGOLD_UNK_020755E8_H
|
||||
|
||||
#include "pokemon.h"
|
||||
#include "party.h"
|
||||
#include "heap.h"
|
||||
|
||||
//This file is related to handling evolutions of Pokemon
|
||||
|
||||
void sub_02075D4C(void *);
|
||||
void *sub_02075A7C(Party *party, Pokemon *mon, int species, Options *options, u32 a4, Pokedex *dex, Bag *bag, GAME_STATS *stats, u32 evolutionCondition, u32 a9, HeapID heapId);
|
||||
BOOL sub_02075D3C(void *);
|
||||
void sub_02075D4C(void *);
|
||||
|
||||
#endif //POKEHEARTGOLD_UNK_020755E8_H
|
1
main.lsf
1
main.lsf
@ -564,6 +564,7 @@ Overlay OVY_11
|
||||
Overlay OVY_12
|
||||
{
|
||||
After OVY_7
|
||||
Object src/battle/battle_022378C0.o
|
||||
Object asm/overlay_12_022378C0.o
|
||||
Object src/battle/battle_system.o
|
||||
Object asm/overlay_12_battle_system.o
|
||||
|
158
src/battle/battle_022378C0.c
Normal file
158
src/battle/battle_022378C0.c
Normal file
@ -0,0 +1,158 @@
|
||||
#include "battle/battle_022378C0.h"
|
||||
#include "battle/battle_system.h"
|
||||
#include "unk_02037C94.h"
|
||||
#include "unk_02004A44.h"
|
||||
#include "unk_020379A0.h"
|
||||
#include "unk_020755E8.h"
|
||||
#include "constants/game_stats.h"
|
||||
|
||||
FS_EXTERN_OVERLAY(OVY_5);
|
||||
FS_EXTERN_OVERLAY(OVY_6);
|
||||
FS_EXTERN_OVERLAY(OVY_7);
|
||||
|
||||
typedef enum BattleState {
|
||||
BSTATE_INIT,
|
||||
BSTATE_LINK_INIT,
|
||||
BSTATE_LINK_MAIN,
|
||||
BSTATE_UNK_A_INIT,
|
||||
BSTATE_UNK_A_MAIN,
|
||||
BSTATE_UNK_B_INIT,
|
||||
BSTATE_UNK_B_MAIN,
|
||||
BSTATE_SYNC,
|
||||
BSTATE_BATTLE_INIT,
|
||||
BSTATE_BATTLE_MAIN,
|
||||
BSTATE_END_INIT,
|
||||
BSTATE_END_MAIN,
|
||||
BSTATE_END_WAIT,
|
||||
BSTATE_EVOLUTION_INIT,
|
||||
BSTATE_EVOLUTION_MAIN,
|
||||
BSTATE_EXIT
|
||||
} BattleState;
|
||||
|
||||
BOOL Battle_Main(OVY_MANAGER *man, int *state) {
|
||||
BattleSetup *setup = OverlayManager_GetArgs(man);
|
||||
|
||||
switch (*state) {
|
||||
case BSTATE_INIT:
|
||||
CreateHeap(HEAP_ID_3, HEAP_ID_BATTLE, 0xB0000);
|
||||
|
||||
if ((setup->battleType & BATTLE_TYPE_LINK) && !(setup->battleSpecial & BATTLE_SPECIAL_RECORDED)) {
|
||||
*state = BSTATE_LINK_INIT;
|
||||
} else {
|
||||
*state = BSTATE_UNK_A_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_LINK_INIT:
|
||||
ov12_022399D4(man, setup);
|
||||
sub_02039F68(setup->unk_12C);
|
||||
if (!sub_02039998()) {
|
||||
GameStats_Inc(setup->gameStats, GAME_STAT_UNK21);
|
||||
if (setup->battleType != 0x8F) {
|
||||
sub_02005BEC(1);
|
||||
}
|
||||
} else {
|
||||
GameStats_Inc(setup->gameStats, GAME_STAT_UNK26);
|
||||
}
|
||||
*state = BSTATE_LINK_MAIN;
|
||||
break;
|
||||
case BSTATE_LINK_MAIN:
|
||||
if (ov12_02239C28(man) == TRUE) {
|
||||
ov12_0223A088(man);
|
||||
*state = BSTATE_UNK_A_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_UNK_A_INIT:
|
||||
if (ov12_0223A0D4(man) == TRUE) {
|
||||
*state = BSTATE_UNK_A_MAIN;
|
||||
} else {
|
||||
*state = BSTATE_UNK_B_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_UNK_A_MAIN:
|
||||
if (ov12_0223A218(man) == TRUE) {
|
||||
*state = BSTATE_UNK_B_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_UNK_B_INIT:
|
||||
if (ov12_0223A260(man) == TRUE) {
|
||||
*state = BSTATE_UNK_B_MAIN;
|
||||
} else {
|
||||
*state = BSTATE_BATTLE_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_UNK_B_MAIN:
|
||||
if (ov12_0223A3A8(man) == TRUE) {
|
||||
UnloadOverlayByID(FS_OVERLAY_ID(OVY_5));
|
||||
*state = BSTATE_SYNC;
|
||||
sub_02037AC0(0x3D);
|
||||
}
|
||||
break;
|
||||
case BSTATE_SYNC:
|
||||
if (sub_02037B38(0x3D)) {
|
||||
*state = BSTATE_BATTLE_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_BATTLE_INIT:
|
||||
HandleLoadOverlay(FS_OVERLAY_ID(OVY_6), OVY_LOAD_ASYNC);
|
||||
HandleLoadOverlay(FS_OVERLAY_ID(OVY_7), OVY_LOAD_ASYNC);
|
||||
ov12_02237F18(man);
|
||||
*state = BSTATE_BATTLE_MAIN;
|
||||
break;
|
||||
case BSTATE_BATTLE_MAIN:
|
||||
if (ov12_02238358(man) == TRUE) {
|
||||
ov12_0223843C(man);
|
||||
sub_02005BEC(0);
|
||||
*state = BSTATE_END_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_END_INIT:
|
||||
if (ov12_0223A3F0(man) == TRUE) {
|
||||
*state = BSTATE_END_MAIN;
|
||||
} else {
|
||||
DestroyHeap(HEAP_ID_BATTLE);
|
||||
*state = BSTATE_EVOLUTION_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_END_MAIN:
|
||||
if (ov12_0223A5E4(man) == TRUE) {
|
||||
UnloadOverlayByID(FS_OVERLAY_ID(OVY_5));
|
||||
DestroyHeap(HEAP_ID_BATTLE);
|
||||
*state = BSTATE_END_WAIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_END_WAIT:
|
||||
*state = BSTATE_EXIT;
|
||||
break;
|
||||
case BSTATE_EVOLUTION_INIT:
|
||||
int selectedMonIndex;
|
||||
int evolutionSpecies;
|
||||
int evolutionCondition;
|
||||
Pokemon *mon;
|
||||
|
||||
evolutionSpecies = BattleSystem_CheckEvolution(setup, &selectedMonIndex, &evolutionCondition);
|
||||
|
||||
if (evolutionSpecies) {
|
||||
CreateHeap(HEAP_ID_3, HEAP_ID_EVOLUTION, 0x30000);
|
||||
mon = Party_GetMonByIndex(setup->party[BATTLER_PLAYER], selectedMonIndex);
|
||||
setup->unk198 = sub_02075A7C(setup->party[BATTLER_PLAYER], mon, evolutionSpecies,
|
||||
setup->options, setup->unk_164, setup->pokedex,
|
||||
setup->bag, setup->gameStats, evolutionCondition,
|
||||
3, HEAP_ID_EVOLUTION);
|
||||
*state = BSTATE_EVOLUTION_MAIN;
|
||||
} else {
|
||||
*state = BSTATE_EXIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_EVOLUTION_MAIN:
|
||||
void *data = setup->unk198;
|
||||
if (sub_02075D3C(data) == TRUE) {
|
||||
sub_02075D4C(data);
|
||||
DestroyHeap(HEAP_ID_EVOLUTION);
|
||||
*state = BSTATE_EVOLUTION_INIT;
|
||||
}
|
||||
break;
|
||||
case BSTATE_EXIT:
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
@ -24,7 +24,7 @@ BattleContext *BattleContext_New(BattleSystem *bsys) {
|
||||
return ctx;
|
||||
}
|
||||
|
||||
BOOL BattleMain(BattleSystem *bsys, BattleContext *ctx) {
|
||||
BOOL BattleContext_Main(BattleSystem *bsys, BattleContext *ctx) {
|
||||
if (!ctx->battleEndFlag) {
|
||||
if (BattleSystem_GetBattleOutcomeFlags(bsys) && !(BattleSystem_GetBattleOutcomeFlags(bsys) & 0x40)) {
|
||||
ctx->command = CONTROLLER_COMMAND_42;
|
||||
|
@ -35,8 +35,8 @@ BattleSetup* BattleSetup_New(HeapID heapId, u32 battleTypeFlags) {
|
||||
int i;
|
||||
BattleSetup* setup = AllocFromHeap(heapId, sizeof(BattleSetup));
|
||||
MI_CpuClear8(setup, sizeof(BattleSetup));
|
||||
setup->flags = battleTypeFlags;
|
||||
setup->unk_18C = 0;
|
||||
setup->battleType = battleTypeFlags;
|
||||
setup->battleSpecial = 0;
|
||||
setup->winFlag = 0;
|
||||
setup->battleBg = 0;
|
||||
setup->unk_150 = 24;
|
||||
@ -229,7 +229,7 @@ void sub_02051D18(BattleSetup* setup, FieldSystem* fieldSystem, SaveData* saveDa
|
||||
setup->timeOfDay = GF_RTC_GetTimeOfDayByHour(Save_SysInfo_RTC_Get(saveData)->time.hour);
|
||||
}
|
||||
BattleSetup_SetProfile(setup, profile, BATTLER_PLAYER);
|
||||
if (setup->flags & BATTLE_TYPE_BUG_CONTEST) {
|
||||
if (setup->battleType & BATTLE_TYPE_BUG_CONTEST) {
|
||||
Party_InitWithMaxSize(setup->party[BATTLER_PLAYER], 1);
|
||||
BattleSetup_AddMonToParty(setup, Party_GetMonByIndex(party, 0), BATTLER_PLAYER);
|
||||
} else {
|
||||
|
@ -111,7 +111,7 @@ static BOOL Encounter_GetResult(Encounter *encounter, FieldSystem *fieldSystem)
|
||||
}
|
||||
|
||||
static void sub_02050724(BattleSetup *setup, FieldSystem *fieldSystem) {
|
||||
if (!(setup->flags & BATTLE_TYPE_DEBUG)) {
|
||||
if (!(setup->battleType & BATTLE_TYPE_DEBUG)) {
|
||||
sub_0205239C(setup, fieldSystem);
|
||||
}
|
||||
}
|
||||
@ -137,7 +137,7 @@ static BOOL Task_StartEncounter(TaskManager *taskManager) { //todo: better name
|
||||
break;
|
||||
case 3:
|
||||
sub_02050724(encounter->setup, fieldSystem);
|
||||
if (encounter->setup->flags == BATTLE_TYPE_NONE || encounter->setup->flags == BATTLE_TYPE_8 || encounter->setup->flags == (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_MULTI | BATTLE_TYPE_6)) {
|
||||
if (encounter->setup->battleType == BATTLE_TYPE_NONE || encounter->setup->battleType == BATTLE_TYPE_8 || encounter->setup->battleType == (BATTLE_TYPE_DOUBLES | BATTLE_TYPE_MULTI | BATTLE_TYPE_6)) {
|
||||
sub_02093070(fieldSystem);
|
||||
sub_020930C4(fieldSystem);
|
||||
}
|
||||
@ -146,7 +146,7 @@ static BOOL Task_StartEncounter(TaskManager *taskManager) { //todo: better name
|
||||
fieldSystem->unk7C = 0;
|
||||
|
||||
if (Encounter_GetResult(encounter, fieldSystem) == FALSE) {
|
||||
if (encounter->setup->flags & BATTLE_TYPE_11) {
|
||||
if (encounter->setup->battleType & BATTLE_TYPE_11) {
|
||||
HealParty(SaveArray_Party_Get(fieldSystem->saveData));
|
||||
} else {
|
||||
Encounter_Delete(encounter);
|
||||
@ -550,7 +550,7 @@ void SetupAndStartWildBattle(TaskManager *taskManager, u16 species, u8 level, u3
|
||||
ov02_02247F30(fieldSystem, species, level, shiny, setup);
|
||||
|
||||
if (canFlee) {
|
||||
setup->unk_18C |= 8;
|
||||
setup->battleSpecial |= 8;
|
||||
}
|
||||
|
||||
GameStats_Inc(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK8);
|
||||
@ -570,7 +570,7 @@ void SetupAndStartFatefulWildBattle(TaskManager *taskManager, u16 species, u8 le
|
||||
SetMonData(Party_GetMonByIndex(setup->party[BATTLER_ENEMY], 0), MON_DATA_FATEFUL_ENCOUNTER, &var);
|
||||
|
||||
if (canRun) {
|
||||
setup->unk_18C |= 8;
|
||||
setup->battleSpecial |= 8;
|
||||
}
|
||||
|
||||
GameStats_Inc(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK8);
|
||||
@ -640,7 +640,7 @@ void SetupAndStartFirstBattle(TaskManager *taskManager, u16 species, u8 level) {
|
||||
|
||||
ov02_02247F30(fieldSystem, species, level, FALSE, setup);
|
||||
|
||||
setup->unk_18C = 1;
|
||||
setup->battleSpecial = BATTLE_SPECIAL_FIRST_RIVAL;
|
||||
|
||||
GameStats_Inc(Save_GameStats_Get(fieldSystem->saveData), GAME_STAT_UNK8);
|
||||
|
||||
@ -857,7 +857,7 @@ void sub_020515FC(FieldSystem *fieldSystem, Party *party, s32 battleType) {
|
||||
|
||||
static void sub_02051660(FieldSystem *fieldSystem, BattleSetup *setup) {
|
||||
Pokemon *mon;
|
||||
u32 battleType = setup->flags;
|
||||
u32 battleType = setup->battleType;
|
||||
u32 winFlag = setup->winFlag;
|
||||
|
||||
if (battleType & BATTLE_TYPE_LINK || battleType & BATTLE_TYPE_TOWER) {
|
||||
|
@ -662,8 +662,8 @@ BOOL ScrCmd_700(ScriptContext *ctx) {
|
||||
}
|
||||
|
||||
BOOL ScrCmd_BattleTowerSetUpMultiBattle(ScriptContext *ctx) {
|
||||
sub_0202CA44(ctx->fieldSystem->saveData);
|
||||
sub_02039F68();
|
||||
void *data = sub_0202CA44(ctx->fieldSystem->saveData);
|
||||
sub_02039F68(data);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,6 @@ BOOL ov36_App_MainMenu_SelectOption_Continue_AppInit(OVY_MANAGER* man, int* stat
|
||||
}
|
||||
|
||||
BOOL ov36_App_MainMenu_SelectOption_Continue_AppExec(OVY_MANAGER* man, int* state) {
|
||||
#pragma unused(state)
|
||||
struct UnkStruct_02111868_sub* unk_work = OverlayManager_GetArgs(man);
|
||||
SaveData* saveData = unk_work->saveData;
|
||||
SysInfo* sys_info = Save_SysInfo_Get(saveData);
|
||||
|
@ -35,7 +35,7 @@ void EnemyTrainerSet_Init(BattleSetup *battleSetup, SaveData *saveData, HeapID h
|
||||
CreateNPCTrainerParty(battleSetup, i, heapId);
|
||||
}
|
||||
}
|
||||
battleSetup->flags |= trainer.data.doubleBattle;
|
||||
battleSetup->battleType |= trainer.data.doubleBattle;
|
||||
DestroyMsgData(msgData);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user