mirror of
https://github.com/pret/pokeruby.git
synced 2026-04-25 07:27:48 -05:00
more labels and finish decompiling battle_ai.c except for unk_24 (#184)
* labels for save_menu_util.c * formatting, i suck at it * fix sub_80712B4 to not use MyTask struct * pls don't kill me * current changes * decompile BattleAICmd_if_damage_bonus * formatting * label thinking struct unk8 * decompile BattleAICMd_if_status_not_in_party * decompile more battle_ai.c functions * Began decompilation of a random file * decompile BattleAICmd_if_can_faint and BattleAICmd_if_cant_faint * decompile unk_3F and unk_40 * decompile if_move_effect and if_not_move_effect * formatting, silly * decompile if_last_move_did_damage and if_encored * decompile unk_45 if_random_2 and unk_47 * decompile get_hold_effect and get_gender * decompile is_first_turn and get_stockpile_count * decompile unk_4C and get_item * decompile unk_4E unk_4F and unk_50 * decompile get_protect_count and the remaining stub macros * decompile call jump and unk_5A * decompile if_level_cond * decompile the last AI macros besides unk_24 * finish decompiling battle_ai.c except for unk_24
This commit is contained in:
parent
6b0268e0c0
commit
f88eeb6074
2067
asm/battle_ai.s
2067
asm/battle_ai.s
File diff suppressed because it is too large
Load Diff
|
|
@ -6,185 +6,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start palette_bg_fill_white
|
||||
palette_bg_fill_white: @ 8080874
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
ldr r0, _0808088C @ =0x7fff7fff
|
||||
str r0, [sp]
|
||||
ldr r1, _08080890 @ =gPlttBufferFaded
|
||||
ldr r2, _08080894 @ =0x01000100
|
||||
mov r0, sp
|
||||
bl CpuFastSet
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808088C: .4byte 0x7fff7fff
|
||||
_08080890: .4byte gPlttBufferFaded
|
||||
_08080894: .4byte 0x01000100
|
||||
thumb_func_end palette_bg_fill_white
|
||||
|
||||
thumb_func_start palette_bg_fill_black
|
||||
palette_bg_fill_black: @ 8080898
|
||||
push {lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
ldr r1, _080808B0 @ =gPlttBufferFaded
|
||||
ldr r2, _080808B4 @ =0x01000100
|
||||
mov r0, sp
|
||||
bl CpuFastSet
|
||||
add sp, 0x4
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080808B0: .4byte gPlttBufferFaded
|
||||
_080808B4: .4byte 0x01000100
|
||||
thumb_func_end palette_bg_fill_black
|
||||
|
||||
thumb_func_start pal_fill_for_map_transition
|
||||
pal_fill_for_map_transition: @ 80808B8
|
||||
push {r4,lr}
|
||||
bl get_map_light_from_warp0
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl sav1_map_get_light_level
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r4, 0
|
||||
bl fade_type_for_given_maplight_pair
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
beq _080808E2
|
||||
cmp r0, 0x1
|
||||
beq _080808F0
|
||||
b _080808FC
|
||||
_080808E2:
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl fade_screen
|
||||
bl palette_bg_fill_black
|
||||
b _080808FC
|
||||
_080808F0:
|
||||
movs r0, 0x2
|
||||
movs r1, 0
|
||||
bl fade_screen
|
||||
bl palette_bg_fill_white
|
||||
_080808FC:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end pal_fill_for_map_transition
|
||||
|
||||
thumb_func_start pal_fill_black
|
||||
pal_fill_black: @ 8080904
|
||||
push {lr}
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl fade_screen
|
||||
bl palette_bg_fill_black
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end pal_fill_black
|
||||
|
||||
thumb_func_start fade_8080918
|
||||
fade_8080918: @ 8080918
|
||||
push {r4,lr}
|
||||
bl sav1_map_get_light_level
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
bl warp1_get_mapheader
|
||||
ldrb r1, [r0, 0x17]
|
||||
adds r0, r4, 0
|
||||
bl sub_810CDB8
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
beq _0808093E
|
||||
cmp r0, 0x1
|
||||
beq _08080948
|
||||
b _08080950
|
||||
_0808093E:
|
||||
movs r0, 0x1
|
||||
movs r1, 0
|
||||
bl fade_screen
|
||||
b _08080950
|
||||
_08080948:
|
||||
movs r0, 0x3
|
||||
movs r1, 0
|
||||
bl fade_screen
|
||||
_08080950:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end fade_8080918
|
||||
|
||||
thumb_func_start sub_8080958
|
||||
sub_8080958: @ 8080958
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
movs r1, 0
|
||||
cmp r0, 0
|
||||
bne _08080964
|
||||
movs r1, 0x1
|
||||
_08080964:
|
||||
adds r0, r1, 0
|
||||
bl sub_8059B88
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8080958
|
||||
|
||||
thumb_func_start task0A_asap_script_env_2_enable_and_set_ctx_running
|
||||
task0A_asap_script_env_2_enable_and_set_ctx_running: @ 8080970
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
bl sub_8080E70
|
||||
cmp r0, 0x1
|
||||
bne _08080988
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
bl EnableBothScriptContexts
|
||||
_08080988:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end task0A_asap_script_env_2_enable_and_set_ctx_running
|
||||
|
||||
thumb_func_start sub_8080990
|
||||
sub_8080990: @ 8080990
|
||||
push {lr}
|
||||
bl ScriptContext2_Enable
|
||||
bl sub_8053E90
|
||||
bl pal_fill_black
|
||||
ldr r0, _080809AC @ =task0A_asap_script_env_2_enable_and_set_ctx_running
|
||||
movs r1, 0xA
|
||||
bl CreateTask
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080809AC: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
|
||||
thumb_func_end sub_8080990
|
||||
|
||||
thumb_func_start sub_80809B0
|
||||
sub_80809B0: @ 80809B0
|
||||
push {lr}
|
||||
bl ScriptContext2_Enable
|
||||
bl pal_fill_black
|
||||
ldr r0, _080809C8 @ =task0A_asap_script_env_2_enable_and_set_ctx_running
|
||||
movs r1, 0xA
|
||||
bl CreateTask
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080809C8: .4byte task0A_asap_script_env_2_enable_and_set_ctx_running
|
||||
thumb_func_end sub_80809B0
|
||||
|
||||
thumb_func_start task_mpl_807DD60
|
||||
task_mpl_807DD60: @ 80809CC
|
||||
push {r4,r5,lr}
|
||||
|
|
|
|||
|
|
@ -6,320 +6,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start unref_sub_8094928
|
||||
unref_sub_8094928: @ 8094928
|
||||
push {lr}
|
||||
ldr r1, _08094938 @ =gPokemonStorage
|
||||
ldr r2, _0809493C @ =0x000083d0
|
||||
bl memcpy
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094938: .4byte gPokemonStorage
|
||||
_0809493C: .4byte 0x000083d0
|
||||
thumb_func_end unref_sub_8094928
|
||||
|
||||
thumb_func_start unref_sub_8094940
|
||||
unref_sub_8094940: @ 8094940
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
ldr r0, _08094950 @ =gPokemonStorage
|
||||
ldr r2, _08094954 @ =0x000083d0
|
||||
bl memcpy
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094950: .4byte gPokemonStorage
|
||||
_08094954: .4byte 0x000083d0
|
||||
thumb_func_end unref_sub_8094940
|
||||
|
||||
thumb_func_start sub_8094958
|
||||
sub_8094958: @ 8094958
|
||||
push {r4,lr}
|
||||
ldr r4, _08094974 @ =gUnknown_02038470
|
||||
bl sub_803FBBC
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
adds r0, r4, 0
|
||||
bl sub_8094998
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094974: .4byte gUnknown_02038470
|
||||
thumb_func_end sub_8094958
|
||||
|
||||
thumb_func_start sub_8094978
|
||||
sub_8094978: @ 8094978
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
lsls r0, r2, 1
|
||||
adds r0, r2
|
||||
ldr r3, _08094994 @ =0x0201606c
|
||||
adds r0, r3
|
||||
bl sub_8094A74
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094994: .4byte 0x0201606c
|
||||
thumb_func_end sub_8094978
|
||||
|
||||
thumb_func_start sub_8094998
|
||||
sub_8094998: @ 8094998
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x8
|
||||
adds r6, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r4, r1, 24
|
||||
bl IsLinkDoubleBattle
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _080949CE
|
||||
cmp r4, 0
|
||||
beq _080949C0
|
||||
movs r0, 0x30
|
||||
strb r0, [r6]
|
||||
movs r0, 0x45
|
||||
strb r0, [r6, 0x1]
|
||||
movs r0, 0x12
|
||||
strb r0, [r6, 0x2]
|
||||
b _08094A68
|
||||
_080949C0:
|
||||
movs r0, 0x3
|
||||
strb r0, [r6]
|
||||
movs r0, 0x12
|
||||
strb r0, [r6, 0x1]
|
||||
movs r0, 0x45
|
||||
strb r0, [r6, 0x2]
|
||||
b _08094A68
|
||||
_080949CE:
|
||||
bl IsDoubleBattle
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08094A0C
|
||||
movs r5, 0x1
|
||||
movs r0, 0
|
||||
bl battle_get_side_with_given_state
|
||||
mov r2, sp
|
||||
ldr r1, _08094A08 @ =gUnknown_02024A6A
|
||||
lsls r0, 24
|
||||
lsrs r0, 23
|
||||
adds r0, r1
|
||||
ldrh r0, [r0]
|
||||
strb r0, [r2]
|
||||
movs r4, 0
|
||||
mov r1, sp
|
||||
_080949F2:
|
||||
ldrb r0, [r1]
|
||||
cmp r4, r0
|
||||
beq _08094A00
|
||||
mov r2, sp
|
||||
adds r0, r2, r5
|
||||
strb r4, [r0]
|
||||
adds r5, 0x1
|
||||
_08094A00:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x5
|
||||
ble _080949F2
|
||||
b _08094A50
|
||||
.align 2, 0
|
||||
_08094A08: .4byte gUnknown_02024A6A
|
||||
_08094A0C:
|
||||
movs r5, 0x2
|
||||
movs r0, 0
|
||||
bl battle_get_side_with_given_state
|
||||
mov r1, sp
|
||||
ldr r4, _08094A70 @ =gUnknown_02024A6A
|
||||
lsls r0, 24
|
||||
lsrs r0, 23
|
||||
adds r0, r4
|
||||
ldrh r0, [r0]
|
||||
strb r0, [r1]
|
||||
movs r0, 0x2
|
||||
bl battle_get_side_with_given_state
|
||||
mov r1, sp
|
||||
lsls r0, 24
|
||||
lsrs r0, 23
|
||||
adds r0, r4
|
||||
ldrh r0, [r0]
|
||||
strb r0, [r1, 0x1]
|
||||
movs r4, 0
|
||||
_08094A36:
|
||||
ldrb r0, [r1]
|
||||
cmp r4, r0
|
||||
beq _08094A4A
|
||||
ldrb r0, [r1, 0x1]
|
||||
cmp r4, r0
|
||||
beq _08094A4A
|
||||
mov r2, sp
|
||||
adds r0, r2, r5
|
||||
strb r4, [r0]
|
||||
adds r5, 0x1
|
||||
_08094A4A:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x5
|
||||
ble _08094A36
|
||||
_08094A50:
|
||||
movs r4, 0
|
||||
mov r3, sp
|
||||
_08094A54:
|
||||
adds r0, r6, r4
|
||||
ldrb r1, [r3]
|
||||
lsls r1, 4
|
||||
ldrb r2, [r3, 0x1]
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
adds r3, 0x2
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x2
|
||||
ble _08094A54
|
||||
_08094A68:
|
||||
add sp, 0x8
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094A70: .4byte gUnknown_02024A6A
|
||||
thumb_func_end sub_8094998
|
||||
|
||||
thumb_func_start sub_8094A74
|
||||
sub_8094A74: @ 8094A74
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x8
|
||||
adds r5, r0, 0
|
||||
adds r0, r2, 0
|
||||
lsls r1, 24
|
||||
lsrs r7, r1, 24
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl battle_side_get_owner
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08094A9C
|
||||
movs r0, 0
|
||||
bl battle_get_side_with_given_state
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
movs r0, 0x2
|
||||
b _08094AA8
|
||||
_08094A9C:
|
||||
movs r0, 0x1
|
||||
bl battle_get_side_with_given_state
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
movs r0, 0x3
|
||||
_08094AA8:
|
||||
bl battle_get_side_with_given_state
|
||||
lsls r0, 24
|
||||
lsrs r6, r0, 24
|
||||
bl IsLinkDoubleBattle
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _08094ADC
|
||||
cmp r7, 0
|
||||
beq _08094ACE
|
||||
movs r0, 0x30
|
||||
strb r0, [r5]
|
||||
movs r0, 0x45
|
||||
strb r0, [r5, 0x1]
|
||||
movs r0, 0x12
|
||||
strb r0, [r5, 0x2]
|
||||
b _08094B5E
|
||||
_08094ACE:
|
||||
movs r0, 0x3
|
||||
strb r0, [r5]
|
||||
movs r0, 0x12
|
||||
strb r0, [r5, 0x1]
|
||||
movs r0, 0x45
|
||||
strb r0, [r5, 0x2]
|
||||
b _08094B5E
|
||||
_08094ADC:
|
||||
bl IsDoubleBattle
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08094B14
|
||||
movs r3, 0x1
|
||||
mov r2, sp
|
||||
ldr r1, _08094B10 @ =gUnknown_02024A6A
|
||||
lsls r0, r4, 1
|
||||
adds r0, r1
|
||||
ldrh r0, [r0]
|
||||
strb r0, [r2]
|
||||
movs r4, 0
|
||||
mov r1, sp
|
||||
_08094AF8:
|
||||
ldrb r0, [r1]
|
||||
cmp r4, r0
|
||||
beq _08094B06
|
||||
mov r2, sp
|
||||
adds r0, r2, r3
|
||||
strb r4, [r0]
|
||||
adds r3, 0x1
|
||||
_08094B06:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x5
|
||||
ble _08094AF8
|
||||
b _08094B46
|
||||
.align 2, 0
|
||||
_08094B10: .4byte gUnknown_02024A6A
|
||||
_08094B14:
|
||||
movs r3, 0x2
|
||||
mov r1, sp
|
||||
ldr r2, _08094B68 @ =gUnknown_02024A6A
|
||||
lsls r0, r4, 1
|
||||
adds r0, r2
|
||||
ldrh r0, [r0]
|
||||
strb r0, [r1]
|
||||
lsls r0, r6, 1
|
||||
adds r0, r2
|
||||
ldrh r0, [r0]
|
||||
strb r0, [r1, 0x1]
|
||||
movs r4, 0
|
||||
_08094B2C:
|
||||
ldrb r0, [r1]
|
||||
cmp r4, r0
|
||||
beq _08094B40
|
||||
ldrb r0, [r1, 0x1]
|
||||
cmp r4, r0
|
||||
beq _08094B40
|
||||
mov r2, sp
|
||||
adds r0, r2, r3
|
||||
strb r4, [r0]
|
||||
adds r3, 0x1
|
||||
_08094B40:
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x5
|
||||
ble _08094B2C
|
||||
_08094B46:
|
||||
movs r4, 0
|
||||
mov r3, sp
|
||||
_08094B4A:
|
||||
adds r0, r5, r4
|
||||
ldrb r1, [r3]
|
||||
lsls r1, 4
|
||||
ldrb r2, [r3, 0x1]
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
adds r3, 0x2
|
||||
adds r4, 0x1
|
||||
cmp r4, 0x2
|
||||
ble _08094B4A
|
||||
_08094B5E:
|
||||
add sp, 0x8
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08094B68: .4byte gUnknown_02024A6A
|
||||
thumb_func_end sub_8094A74
|
||||
|
||||
thumb_func_start sub_8094B6C
|
||||
sub_8094B6C: @ 8094B6C
|
||||
push {r4-r7,lr}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ struct AI_ThinkingStruct /* 0x2016800 */
|
|||
/* 0x01 */ u8 moveConsidered;
|
||||
/* 0x02 */ u16 unk2;
|
||||
/* 0x04 */ s8 score[4]; // score?
|
||||
/* 0x08 */ u32 unk8;
|
||||
/* 0x08 */ u32 funcResult;
|
||||
/* 0x0C */ u32 aiFlags;
|
||||
/* 0x10 */ u8 unk10;
|
||||
/* 0x11 */ u8 aiLogicId;
|
||||
|
|
@ -54,14 +54,22 @@ struct SmallBattleStruct1
|
|||
u8 unk4;
|
||||
};
|
||||
|
||||
struct SmallItemStruct
|
||||
{
|
||||
u8 item[2][2];
|
||||
};
|
||||
|
||||
struct BattleStruct /* 0x2000000 */
|
||||
{
|
||||
u8 filler0[0x1601C];
|
||||
struct SmallBattleStruct1 unk;
|
||||
u8 filler1[0xAB]; // 0x2016020
|
||||
u8 filler1[0x68]; // 0x2016020
|
||||
u8 unk88;
|
||||
u8 filler1_2[0x42];
|
||||
/* 0x160CB */ u8 linkPlayerIndex;
|
||||
u8 filler2[0x734];
|
||||
struct AI_ThinkingStruct ai;
|
||||
struct SmallItemStruct item;
|
||||
u8 filler2[0x730];
|
||||
struct AI_ThinkingStruct ai; /* 0x2016800 */
|
||||
};
|
||||
|
||||
extern struct BattleStruct battle_2000000;
|
||||
|
|
|
|||
|
|
@ -370,8 +370,8 @@ struct BattleMove
|
|||
|
||||
struct PokemonStorage
|
||||
{
|
||||
u8 currentBox;
|
||||
struct BoxPokemon boxes[14][30];
|
||||
/* 0x00 */ u8 currentBox;
|
||||
/* 0x01 */ struct BoxPokemon boxes[14][30];
|
||||
u8 boxNames[14][9];
|
||||
u8 unkArray[14];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
#define GUARD_SAVE_MENU_UTIL_H
|
||||
|
||||
void HandleDrawSaveWindowInfo(s16 left, s16 top);
|
||||
void sub_80946C8(u16 left, u16 top);
|
||||
u8 sub_809473C(void);
|
||||
void HandleCloseSaveWindow(u16 left, u16 top);
|
||||
u8 IsResizeSaveWindowEnabled(void);
|
||||
void PrintSavePlayerName(s16 x, s16 y);
|
||||
void PrintSaveMapName(s16 x, s16 y);
|
||||
void PrintSaveBadges(s16 x, s16 y);
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ SECTIONS {
|
|||
src/title_screen.o(.text);
|
||||
src/weather.o(.text);
|
||||
asm/weather.o(.text);
|
||||
src/rom_8080874.o(.text);
|
||||
asm/rom_8080874.o(.text);
|
||||
src/battle_setup.o(.text);
|
||||
asm/cable_club.o(.text);
|
||||
|
|
@ -128,6 +129,7 @@ SECTIONS {
|
|||
asm/pokedex.o(.text);
|
||||
src/trainer_card.o(.text);
|
||||
src/save_menu_util.o(.text);
|
||||
src/rom_8094928.o(.text);
|
||||
asm/rom_8094928.o(.text);
|
||||
asm/battle_party_menu.o(.text);
|
||||
asm/pokemon_storage_system.o(.text);
|
||||
|
|
@ -192,7 +194,6 @@ SECTIONS {
|
|||
asm/slot_machine.o(.text);
|
||||
src/contest_painting.o(.text);
|
||||
src/battle_ai.o(.text);
|
||||
asm/battle_ai.o(.text);
|
||||
asm/trader.o(.text);
|
||||
src/starter_choose.o(.text);
|
||||
src/wallclock.o(.text);
|
||||
|
|
|
|||
874
src/battle_ai.c
874
src/battle_ai.c
File diff suppressed because it is too large
Load Diff
85
src/rom_8080874.c
Normal file
85
src/rom_8080874.c
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
#include "global.h"
|
||||
#include "global.fieldmap.h"
|
||||
#include "gba/syscall.h"
|
||||
#include "weather.h"
|
||||
#include "task.h"
|
||||
#include "script.h"
|
||||
|
||||
void palette_bg_fill_white(void);
|
||||
void palette_bg_fill_black(void);
|
||||
void pal_fill_black(void);
|
||||
void task0A_asap_script_env_2_enable_and_set_ctx_running(u8);
|
||||
|
||||
extern u8 get_map_light_from_warp0(void);
|
||||
extern u8 sav1_map_get_light_level(void);
|
||||
extern u8 fade_type_for_given_maplight_pair(u8, u8);
|
||||
extern u16 gPlttBufferFaded[];
|
||||
extern struct MapHeader * warp1_get_mapheader(void);
|
||||
extern void sub_8059B88(u8);
|
||||
extern void sub_8053E90(void);
|
||||
|
||||
extern u8 sub_810CDB8(u8, u8);
|
||||
extern int sub_8080E70(void);
|
||||
|
||||
void palette_bg_fill_white (void) {
|
||||
u32 source_color = 0x7fff7fff;
|
||||
CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
|
||||
}
|
||||
|
||||
void palette_bg_fill_black (void) {
|
||||
u32 source_color = 0;
|
||||
CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
|
||||
}
|
||||
|
||||
void pal_fill_for_map_transition (void) {
|
||||
u8 map_light = get_map_light_from_warp0();
|
||||
switch (fade_type_for_given_maplight_pair(map_light, sav1_map_get_light_level())) {
|
||||
case 0:
|
||||
fade_screen(0, 0);
|
||||
palette_bg_fill_black();
|
||||
break;
|
||||
case 1:
|
||||
fade_screen(2, 0);
|
||||
palette_bg_fill_white();
|
||||
}
|
||||
}
|
||||
|
||||
void pal_fill_black (void) {
|
||||
fade_screen(0, 0);
|
||||
palette_bg_fill_black();
|
||||
}
|
||||
|
||||
void fade_8080918 (void) {
|
||||
u8 light_level = sav1_map_get_light_level();
|
||||
switch (sub_810CDB8(light_level, warp1_get_mapheader() -> mapType)) {
|
||||
case 0:
|
||||
fade_screen(1, 0);
|
||||
break;
|
||||
case 1:
|
||||
fade_screen(3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8080958 (u8 arg) {
|
||||
sub_8059B88(!arg);
|
||||
}
|
||||
|
||||
void task0A_asap_script_env_2_enable_and_set_ctx_running (u8 taskID) {
|
||||
if (sub_8080E70() == 1) {
|
||||
DestroyTask(taskID);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8080990 (void) {
|
||||
ScriptContext2_Enable();
|
||||
sub_8053E90();
|
||||
pal_fill_black();
|
||||
CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
|
||||
}
|
||||
|
||||
void sub_80809B0 (void) {
|
||||
ScriptContext2_Enable();
|
||||
pal_fill_black();
|
||||
CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
|
||||
}
|
||||
94
src/rom_8094928.c
Normal file
94
src/rom_8094928.c
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
|
||||
extern struct PokemonStorage gPokemonStorage;
|
||||
extern u8 IsLinkDoubleBattle(void);
|
||||
extern u8 IsDoubleBattle(void);
|
||||
extern u8 battle_get_side_with_given_state(u8);
|
||||
extern u8 battle_side_get_owner(u8);
|
||||
void sub_8094998(u8 [3], u8);
|
||||
void sub_8094A74(u8 [3], u8, u32);
|
||||
|
||||
extern u8 gUnknown_02038470[3];
|
||||
extern u8 sub_803FBBC(void);
|
||||
extern u16 gUnknown_02024A6A[];
|
||||
|
||||
void unref_sub_8094928 (void * ptr) {
|
||||
memcpy(ptr, &gPokemonStorage, 0x83d0);
|
||||
}
|
||||
|
||||
void unref_sub_8094940 (void * ptr) {
|
||||
memcpy(&gPokemonStorage, ptr, 0x83d0);
|
||||
}
|
||||
|
||||
void sub_8094958 (void) {
|
||||
sub_8094998(gUnknown_02038470, sub_803FBBC());
|
||||
}
|
||||
|
||||
void sub_8094978 (u8 arg1, u8 arg2) {
|
||||
sub_8094A74((((u8 (*) [3]) 0x0201606c))[arg1], arg2, arg1);
|
||||
}
|
||||
|
||||
void sub_8094998 (u8 arg[3], u8 player_number) {
|
||||
int i;
|
||||
u32 pos;
|
||||
u8 temp[6];
|
||||
if (IsLinkDoubleBattle() == 1)
|
||||
if (player_number) {
|
||||
*arg = 0x30;
|
||||
arg[1] = 0x45;
|
||||
arg[2] = 0x12;
|
||||
} else {
|
||||
*arg = 0x03;
|
||||
arg[1] = 0x12;
|
||||
arg[2] = 0x45;
|
||||
}
|
||||
else {
|
||||
if (!IsDoubleBattle()) {
|
||||
pos = 1;
|
||||
*temp = gUnknown_02024A6A[battle_get_side_with_given_state(0)];
|
||||
for (i = 0; i <= 5; i ++) if (i != *temp) temp[pos ++] = i;
|
||||
} else {
|
||||
pos = 2;
|
||||
*temp = gUnknown_02024A6A[battle_get_side_with_given_state(0)];
|
||||
temp[1] = gUnknown_02024A6A[battle_get_side_with_given_state(2)];
|
||||
for (i = 0; i <= 5; i ++) if ((i != *temp) && (i != temp[1])) temp[pos ++] = i;
|
||||
}
|
||||
for (i = 0; i <= 2; i ++) arg[i] = (temp[i << 1] << 4) | temp[(i << 1) + 1];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8094A74 (u8 arg[3], u8 player_number, u32 arg3) {
|
||||
int i, j;
|
||||
u8 temp[6];
|
||||
if (!battle_side_get_owner(arg3)) {
|
||||
i = battle_get_side_with_given_state(0);
|
||||
j = battle_get_side_with_given_state(2);
|
||||
} else {
|
||||
i = battle_get_side_with_given_state(1);
|
||||
j = battle_get_side_with_given_state(3);
|
||||
}
|
||||
if (IsLinkDoubleBattle() == 1)
|
||||
if (player_number) {
|
||||
*arg = 0x30;
|
||||
arg[1] = 0x45;
|
||||
arg[2] = 0x12;
|
||||
} else {
|
||||
*arg = 0x03;
|
||||
arg[1] = 0x12;
|
||||
arg[2] = 0x45;
|
||||
}
|
||||
else {
|
||||
if (!IsDoubleBattle()) {
|
||||
int pos = 1;
|
||||
*temp = gUnknown_02024A6A[i];
|
||||
for (i = 0; i <= 5; i ++) if (i != *temp) temp[pos ++] = i;
|
||||
} else {
|
||||
int pos = 2;
|
||||
*temp = gUnknown_02024A6A[i];
|
||||
temp[1] = gUnknown_02024A6A[j];
|
||||
for (i = 0; i <= 5; i ++) if ((i != *temp) && (i != temp[1])) temp[pos ++] = i;
|
||||
}
|
||||
for (i = 0; i <= 2; i ++) arg[i] = (temp[i << 1] << 4) | temp[(i << 1) + 1];
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,8 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top)
|
|||
{
|
||||
u32 width = 12;
|
||||
|
||||
if (sub_809473C())
|
||||
// old handle for setting window width?
|
||||
if (IsResizeSaveWindowEnabled())
|
||||
width = 13;
|
||||
|
||||
if (FlagGet(SYS_POKEDEX_GET))
|
||||
|
|
@ -39,11 +40,12 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_80946C8(u16 left, u16 top)
|
||||
void HandleCloseSaveWindow(u16 left, u16 top)
|
||||
{
|
||||
u32 width = 12;
|
||||
|
||||
if (sub_809473C())
|
||||
// old handle for setting window width?
|
||||
if (IsResizeSaveWindowEnabled())
|
||||
width = 13;
|
||||
|
||||
if (FlagGet(SYS_POKEDEX_GET))
|
||||
|
|
@ -52,9 +54,14 @@ void sub_80946C8(u16 left, u16 top)
|
|||
MenuZeroFillWindowRect(left, top, left + width, top + 9);
|
||||
}
|
||||
|
||||
u8 sub_809473C()
|
||||
/*
|
||||
theory: This function was used to handle the save menu window's width being auto sized from
|
||||
either 12 or 13 in an older source. Whatever was here might have either been optimized out by
|
||||
GF's compiler or was dummied out to always return a TRUE at some point.
|
||||
*/
|
||||
u8 IsResizeSaveWindowEnabled(void) // i don't know what else to name it..
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void PrintSavePlayerName(s16 x, s16 y)
|
||||
|
|
|
|||
10
src/scrcmd.c
10
src/scrcmd.c
|
|
@ -561,7 +561,7 @@ bool8 ScrCmd_darken(struct ScriptContext *ctx)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8066248(void)
|
||||
bool8 IsPaletteNotActive(void)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
return TRUE;
|
||||
|
|
@ -572,7 +572,7 @@ bool8 sub_8066248(void)
|
|||
bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
|
||||
{
|
||||
fade_screen(ScriptReadByte(ctx), 0);
|
||||
SetupNativeScript(ctx, sub_8066248);
|
||||
SetupNativeScript(ctx, IsPaletteNotActive);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -581,7 +581,7 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
|
|||
u8 duration = ScriptReadByte(ctx);
|
||||
u8 delay = ScriptReadByte(ctx);
|
||||
fade_screen(duration, delay);
|
||||
SetupNativeScript(ctx, sub_8066248);
|
||||
SetupNativeScript(ctx, IsPaletteNotActive);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -1170,7 +1170,7 @@ bool8 ScrCmd_closebutton(struct ScriptContext *ctx)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80670C0()
|
||||
bool8 WaitForAorBPress(void)
|
||||
{
|
||||
if (gMain.newKeys & A_BUTTON)
|
||||
return TRUE;
|
||||
|
|
@ -1181,7 +1181,7 @@ bool8 sub_80670C0()
|
|||
|
||||
bool8 ScrCmd_waitbutton(struct ScriptContext *ctx)
|
||||
{
|
||||
SetupNativeScript(ctx, sub_80670C0);
|
||||
SetupNativeScript(ctx, WaitForAorBPress);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -281,22 +281,15 @@ void CreateStartMenuTask(void (*func)(u8))
|
|||
SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func);
|
||||
}
|
||||
|
||||
struct MyTask {
|
||||
TaskFunc func;
|
||||
bool8 isActive;
|
||||
u8 prev;
|
||||
u8 next;
|
||||
u8 priority;
|
||||
s16 var1;
|
||||
};
|
||||
|
||||
void sub_80712B4(u8 taskId)
|
||||
{
|
||||
switch(((struct MyTask *)&gTasks[taskId])->var1)
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch(task->data[0])
|
||||
{
|
||||
case 0:
|
||||
gCallback_03004AE8 = StartMenu_InputProcessCallback;
|
||||
((struct MyTask *)&gTasks[taskId])->var1++;
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if(gCallback_03004AE8() == 1)
|
||||
|
|
@ -554,7 +547,7 @@ static void Task_SaveDialog(u8 taskId)
|
|||
|
||||
static void sub_8071700(void)
|
||||
{
|
||||
sub_80946C8(0, 0);
|
||||
HandleCloseSaveWindow(0, 0);
|
||||
}
|
||||
|
||||
static void HideSaveDialog(void)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user