mirror of
https://github.com/pret/pokeruby.git
synced 2025-04-01 07:41:45 +00:00
Battle4.C
Changed labels: sub_801A02C = ItemBattleEffects sub_8015150 = GetBattleBank gUnknown_02024BEA = gRandomMove BattleBufferB = gBattleBufferB sub_8090D90 = GetNationalPokedexFlag sub_80151D4 = PressurePPLose ai_rate_move = AI_TypeCalc sub_801B928 = IsPokeDisobedient sub_801E3B4 = BankGetTurnOrder sub_801E3EC = SetMoveEffect sub_814A7FC = DestroyMenuCursor sub_8010B88 = SwitchInClearStructs sub_80325B8 = BattleMusicStop sub_8017718 = CantUseMove sub_8028350 = IsTwoTurnsMove b_feature_update_destiny_bond = DestinyBondFlagUpdate sub_801C108 = JumpIfMoveAffectedByProtect move_weather_interaction = AttacksThisTurn sub_8025E20 = ChangeStatBuffs sub_8020B54 = MoveValuesCleanUp
This commit is contained in:
parent
124e2eb02c
commit
dd7e191078
@ -55,3 +55,5 @@ matrix:
|
||||
script:
|
||||
- ./build_tools.sh
|
||||
- make -j2 compare_ruby_de
|
||||
allow_failures:
|
||||
- env: _="Formatting"
|
||||
|
@ -17,5 +17,5 @@ if [ "$output" == "no modified files to format" ] || [ "$output" == "clang-forma
|
||||
else
|
||||
echo "clang-format failed:"
|
||||
echo "$output" | colordiff
|
||||
exit 0
|
||||
exit 1
|
||||
fi
|
||||
|
2
Makefile
2
Makefile
@ -7,7 +7,7 @@ CC1 := tools/agbcc/bin/agbcc
|
||||
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
|
||||
|
||||
CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp
|
||||
CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
|
||||
CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror
|
||||
|
||||
LD := $(DEVKITARM)/bin/arm-none-eabi-ld
|
||||
|
||||
|
@ -573,7 +573,7 @@ _080127E0:
|
||||
str r0, [sp]
|
||||
movs r0, 0
|
||||
movs r2, 0x6
|
||||
bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
|
||||
bl EmitChoosePokemon
|
||||
b _0801289E
|
||||
.align 2, 0
|
||||
_08012808: .4byte gActiveBank
|
||||
@ -624,7 +624,7 @@ _08012854:
|
||||
movs r1, 0
|
||||
_0801286C:
|
||||
movs r3, 0
|
||||
bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
|
||||
bl EmitChoosePokemon
|
||||
b _0801289E
|
||||
.align 2, 0
|
||||
_08012874: .4byte gActionForBanks
|
||||
@ -643,7 +643,7 @@ _08012884:
|
||||
movs r1, 0
|
||||
movs r2, 0x6
|
||||
movs r3, 0
|
||||
bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
|
||||
bl EmitChoosePokemon
|
||||
_0801289E:
|
||||
ldr r0, _080128A8 @ =gActiveBank
|
||||
ldrb r0, [r0]
|
||||
@ -2789,7 +2789,7 @@ _08013A04:
|
||||
beq _08013A0E
|
||||
b _08013B42
|
||||
_08013A0E:
|
||||
bl sub_80325B8
|
||||
bl BattleMusicStop
|
||||
ldr r1, _08013A3C @ =gBattlescriptCurrInstr
|
||||
ldr r0, _08013A40 @ =gUnknown_081D8DBE
|
||||
str r0, [r1]
|
||||
@ -3936,14 +3936,14 @@ _080143B6:
|
||||
cmp r0, 0x1F
|
||||
bne _08014404
|
||||
adds r0, r2, 0
|
||||
bl sub_801E3B4
|
||||
bl BankGetTurnOrder
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r1, [sp]
|
||||
cmp r0, r1
|
||||
bcs _08014404
|
||||
ldrb r0, [r4]
|
||||
bl sub_801E3B4
|
||||
bl BankGetTurnOrder
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp]
|
||||
@ -4261,7 +4261,7 @@ _0801469A:
|
||||
strb r0, [r5]
|
||||
_080146AC:
|
||||
ldr r4, _080146E0 @ =gBattlescriptCurrInstr
|
||||
ldr r3, _080146E4 @ =gUnknown_081D6BBC
|
||||
ldr r3, _080146E4 @ =gBattleScriptsEffectsTable
|
||||
ldr r2, _080146E8 @ =gBattleMoves
|
||||
ldr r0, _080146EC @ =gCurrentMove
|
||||
ldrh r1, [r0]
|
||||
@ -4288,7 +4288,7 @@ _080146CC:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080146E0: .4byte gBattlescriptCurrInstr
|
||||
_080146E4: .4byte gUnknown_081D6BBC
|
||||
_080146E4: .4byte gBattleScriptsEffectsTable
|
||||
_080146E8: .4byte gBattleMoves
|
||||
_080146EC: .4byte gCurrentMove
|
||||
_080146F0: .4byte gFightStateTracker
|
||||
@ -5528,8 +5528,8 @@ _08015148: .4byte 0x00016112
|
||||
_0801514C: .4byte 0x00017130
|
||||
thumb_func_end bsC_8016D70
|
||||
|
||||
thumb_func_start sub_8015150
|
||||
sub_8015150: @ 8015150
|
||||
thumb_func_start GetBattleBank
|
||||
GetBattleBank: @ 8015150
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
@ -5592,10 +5592,10 @@ _080151C8:
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080151D0: .4byte gBank1
|
||||
thumb_func_end sub_8015150
|
||||
thumb_func_end GetBattleBank
|
||||
|
||||
thumb_func_start sub_80151D4
|
||||
sub_80151D4: @ 80151D4
|
||||
thumb_func_start PressurePPLose
|
||||
PressurePPLose: @ 80151D4
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
lsls r0, 24
|
||||
@ -5695,7 +5695,7 @@ _08015286:
|
||||
_08015290: .4byte gDisableStructs
|
||||
_08015294: .4byte gBitTable
|
||||
_08015298: .4byte gActiveBank
|
||||
thumb_func_end sub_80151D4
|
||||
thumb_func_end PressurePPLose
|
||||
|
||||
thumb_func_start sub_801529C
|
||||
sub_801529C: @ 801529C
|
||||
|
@ -1819,7 +1819,7 @@ _080166D8:
|
||||
ldrb r1, [r6]
|
||||
movs r0, 0x1
|
||||
movs r2, 0
|
||||
bl sub_801A02C
|
||||
bl ItemBattleEffects
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080166F2
|
||||
@ -1840,7 +1840,7 @@ _08016704:
|
||||
ldrb r1, [r6]
|
||||
movs r0, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_801A02C
|
||||
bl ItemBattleEffects
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0801671E
|
||||
@ -2576,7 +2576,7 @@ _08016CE0:
|
||||
strb r0, [r1, 0x3]
|
||||
movs r0, 0x1
|
||||
movs r1, 0
|
||||
bl sub_801E3EC
|
||||
bl SetMoveEffect
|
||||
ldrb r0, [r6]
|
||||
muls r0, r7
|
||||
adds r0, r5
|
||||
@ -3731,7 +3731,7 @@ _08017668:
|
||||
movs r0, 0x1
|
||||
movs r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_801A02C
|
||||
bl ItemBattleEffects
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
@ -3823,8 +3823,8 @@ _08017710: .4byte gUnknown_02024AD0
|
||||
_08017714: .4byte 0xff7fffff
|
||||
thumb_func_end b_clear_atk_up_if_hit_flag_unless_enraged
|
||||
|
||||
thumb_func_start sub_8017718
|
||||
sub_8017718: @ 8017718
|
||||
thumb_func_start CantUseMove
|
||||
CantUseMove: @ 8017718
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
@ -4866,7 +4866,7 @@ _08018008: .4byte 0x02000000
|
||||
_0801800C: .4byte 0x000160e7
|
||||
_08018010: .4byte gActiveBank
|
||||
_08018014: .4byte gUnknown_02024ACC
|
||||
thumb_func_end sub_8017718
|
||||
thumb_func_end CantUseMove
|
||||
|
||||
thumb_func_start sub_8018018
|
||||
sub_8018018: @ 8018018
|
||||
@ -8668,8 +8668,8 @@ _0801A024: .4byte gBattleMainFunc
|
||||
_0801A028: .4byte sub_8013FBC
|
||||
thumb_func_end b_push_move_exec
|
||||
|
||||
thumb_func_start sub_801A02C
|
||||
sub_801A02C: @ 801A02C
|
||||
thumb_func_start ItemBattleEffects
|
||||
ItemBattleEffects: @ 801A02C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
@ -10938,7 +10938,7 @@ _0801B2BC:
|
||||
bl b_movescr_stack_push_cursor
|
||||
movs r0, 0
|
||||
movs r1, 0
|
||||
bl sub_801E3EC
|
||||
bl SetMoveEffect
|
||||
bl b_movescr_stack_pop_cursor
|
||||
b _0801B3CA
|
||||
.align 2, 0
|
||||
@ -11049,7 +11049,7 @@ _0801B3FC: .4byte 0x02000000
|
||||
_0801B400: .4byte 0x00016003
|
||||
_0801B404: .4byte gBattlescriptCurrInstr
|
||||
_0801B408: .4byte gUnknown_081D9AA7
|
||||
thumb_func_end sub_801A02C
|
||||
thumb_func_end ItemBattleEffects
|
||||
|
||||
thumb_func_start unref_sub_801B40C
|
||||
unref_sub_801B40C: @ 801B40C
|
||||
@ -11636,8 +11636,8 @@ _0801B920: .4byte 0x02000000
|
||||
_0801B924: .4byte 0x00016010
|
||||
thumb_func_end sub_801B5C0
|
||||
|
||||
thumb_func_start sub_801B928
|
||||
sub_801B928: @ 801B928
|
||||
thumb_func_start IsPokeDisobedient
|
||||
IsPokeDisobedient: @ 801B928
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
@ -11828,7 +11828,7 @@ _0801BA9E:
|
||||
ands r5, r4
|
||||
cmp r5, 0
|
||||
bne _0801BA9E
|
||||
ldr r4, _0801BB18 @ =gUnknown_02024BEA
|
||||
ldr r4, _0801BB18 @ =gRandomMove
|
||||
ldr r3, _0801BB04 @ =gBattleMons
|
||||
ldr r0, _0801BB10 @ =gCurrMovePos
|
||||
ldrb r0, [r0]
|
||||
@ -11870,7 +11870,7 @@ _0801BB08: .4byte gBankAttacker
|
||||
_0801BB0C: .4byte gBitTable
|
||||
_0801BB10: .4byte gCurrMovePos
|
||||
_0801BB14: .4byte gUnknown_02024BE5
|
||||
_0801BB18: .4byte gUnknown_02024BEA
|
||||
_0801BB18: .4byte gRandomMove
|
||||
_0801BB1C: .4byte gBattleCommunication
|
||||
_0801BB20: .4byte gDynamicBasePower
|
||||
_0801BB24: .4byte 0x02000000
|
||||
@ -12012,6 +12012,6 @@ _0801BC40: .4byte gBankTarget
|
||||
_0801BC44: .4byte gBattlescriptCurrInstr
|
||||
_0801BC48: .4byte gUnknown_081D99A0
|
||||
_0801BC4C: .4byte gHitMarker
|
||||
thumb_func_end sub_801B928
|
||||
thumb_func_end IsPokeDisobedient
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
|
@ -136,7 +136,7 @@ _080360D8:
|
||||
ldrh r1, [r4]
|
||||
mov r3, r8
|
||||
ldrb r2, [r3]
|
||||
bl ai_rate_move
|
||||
bl AI_TypeCalc
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
movs r0, 0x2
|
||||
@ -211,7 +211,7 @@ _0803617C:
|
||||
beq _080361BC
|
||||
ldrh r1, [r5]
|
||||
ldrb r2, [r7]
|
||||
bl ai_rate_move
|
||||
bl AI_TypeCalc
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
movs r0, 0x2
|
||||
@ -693,7 +693,7 @@ _08036550:
|
||||
ldrh r1, [r5]
|
||||
mov r3, r9
|
||||
ldrb r2, [r3]
|
||||
bl ai_rate_move
|
||||
bl AI_TypeCalc
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
movs r0, 0x2
|
||||
@ -770,7 +770,7 @@ _080365F2:
|
||||
ldrh r1, [r5]
|
||||
mov r3, r9
|
||||
ldrb r2, [r3]
|
||||
bl ai_rate_move
|
||||
bl AI_TypeCalc
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
movs r0, 0x2
|
||||
@ -1061,7 +1061,7 @@ _08036850:
|
||||
adds r0, r1
|
||||
ldrh r0, [r0]
|
||||
adds r1, r4, 0
|
||||
bl ai_rate_move
|
||||
bl AI_TypeCalc
|
||||
ldr r1, [sp]
|
||||
ands r1, r0
|
||||
cmp r1, 0
|
||||
@ -1096,7 +1096,7 @@ _0803688E:
|
||||
beq _080368CA
|
||||
ldrh r1, [r5]
|
||||
ldrb r2, [r7]
|
||||
bl ai_rate_move
|
||||
bl AI_TypeCalc
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
movs r0, 0x2
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
.section script_data, "aw", %progbits
|
||||
|
||||
gUnknown_081D6BBC:: @ 81D6BBC
|
||||
gBattleScriptsEffectsTable:: @ 81D6BBC
|
||||
.4byte MoveEffect_Hit
|
||||
.4byte MoveEffect_Sleep
|
||||
.4byte MoveEffect_PoisonHit
|
||||
@ -305,11 +305,11 @@ MoveEffect_Sleep: @ 81D6F81
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifstatus TARGET, SLP, BattleScript_1D6FC4
|
||||
jumpifcannotsleep BattleScript_1D6FE0
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -638,9 +638,9 @@ MoveEffect_Roar: @ 81D72C5
|
||||
ppreduce
|
||||
jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_1D988D
|
||||
jumpifspecialstatusflag TARGET, 0x400, 0, BattleScript_1D93EC
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
accuracycheck BattleScript_1D6F77, 0
|
||||
forcerandomswitch BattleScript_1D83D6
|
||||
forcerandomswitch BattleScript_ButItFailed
|
||||
|
||||
MoveEffect_MultiHit: @ 81D72ED
|
||||
attackcanceler
|
||||
@ -707,7 +707,7 @@ MoveEffect_Conversion: @ 81D73B1
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
changetypestoenemyattacktype BattleScript_1D83D6
|
||||
changetypestoenemyattacktype BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_TypeTransform
|
||||
@ -737,13 +737,13 @@ MoveEffect_Toxic: @ 81D73F4
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifstatus TARGET, PSN, BattleScript_1D7455
|
||||
jumpifstatus TARGET, TOX, BattleScript_1D7455
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
|
||||
jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8
|
||||
jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -810,7 +810,7 @@ MoveEffect_Ohko: @ 81D74E4
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
atk6
|
||||
jumpifbyte 4, 0x2024c68, 41, BattleScript_1D6F48
|
||||
koplussomethings BattleScript_1D7505
|
||||
@ -939,7 +939,7 @@ MoveEffect_FocusEnergy: @ 81D7689
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_ButItFailed
|
||||
setincreasedcriticalchance
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -958,9 +958,9 @@ MoveEffect_Confuse: @ 81D76BF
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_1D98E5
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifsecondarytstatus TARGET, S_CONFUSED, BattleScript_1D76FE
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -1041,13 +1041,13 @@ MoveEffect_Poison: @ 81D7795
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifstatus TARGET, PSN, BattleScript_1D7455
|
||||
jumpifstatus TARGET, TOX, BattleScript_1D7455
|
||||
jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8
|
||||
jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -1062,12 +1062,12 @@ MoveEffect_Paralyze: @ 81D77F6
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifability TARGET, ABILITY_LIMBER, BattleScript_1D7859
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
atk6
|
||||
jumpifbyte 4, 0x2024c68, 41, BattleScript_1D83D6
|
||||
jumpifbyte 4, 0x2024c68, 41, BattleScript_ButItFailed
|
||||
jumpifstatus TARGET, PAR, BattleScript_1D784B
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -1190,9 +1190,9 @@ MoveEffect_Mimic: @ 81D7988
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
copyattack BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
copyattack BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_LearnedMove2
|
||||
@ -1214,7 +1214,7 @@ MoveEffect_LeechSeed: @ 81D79C2
|
||||
attackstring
|
||||
pause 32
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_1D79D9, 0
|
||||
|
||||
BattleScript_1D79D9: @ 81D79D9
|
||||
@ -1240,8 +1240,8 @@ MoveEffect_Disable: @ 81D79FB
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
disablelastusedattack BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
disablelastusedattack BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_MoveWasDisabled
|
||||
@ -1285,7 +1285,7 @@ MoveEffect_Encore: @ 81D7A5D
|
||||
accuracycheck BattleScript_1D6F72, 0
|
||||
attackstring
|
||||
ppreduce
|
||||
setencore BattleScript_1D83D6
|
||||
setencore BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_EncoreGot
|
||||
@ -1296,8 +1296,8 @@ MoveEffect_PainSplit: @ 81D7A79
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
painsplitdamagecalculator BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
painsplitdamagecalculator BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
orword 0x2024c6c, 0x100
|
||||
@ -1315,7 +1315,7 @@ MoveEffect_Snore: @ 81D7AB0
|
||||
jumpifstatus USER, SLP, BattleScript_1D7AC2
|
||||
attackstring
|
||||
ppreduce
|
||||
jump BattleScript_1D83D6
|
||||
jump BattleScript_ButItFailed
|
||||
|
||||
BattleScript_1D7AC2: @ 81D7AC2
|
||||
jumpifhalfword 0, 0x2024be8, 214, BattleScript_1D7AD6
|
||||
@ -1334,7 +1334,7 @@ MoveEffect_Conversion2: @ 81D7AEA
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
settypetorandomresistance BattleScript_1D83D6
|
||||
settypetorandomresistance BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_TypeTransform
|
||||
@ -1345,8 +1345,8 @@ MoveEffect_LockOn: @ 81D7AFF
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
setalwayshitflag
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -1358,8 +1358,8 @@ MoveEffect_Sketch: @ 81D7B21
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
copymovepermanently BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
copymovepermanently BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_SketchedMove
|
||||
@ -1371,7 +1371,7 @@ MoveEffect_SleepTalk: @ 81D7B40
|
||||
jumpifstatus USER, SLP, BattleScript_1D7B52
|
||||
attackstring
|
||||
ppreduce
|
||||
jump BattleScript_1D83D6
|
||||
jump BattleScript_ButItFailed
|
||||
|
||||
BattleScript_1D7B52: @ 81D7B52
|
||||
printstring BATTLE_TEXT_FastAsleep
|
||||
@ -1382,7 +1382,7 @@ BattleScript_1D7B52: @ 81D7B52
|
||||
orword 0x2024c6c, 0x800
|
||||
selectrandommovefromusermoves BattleScript_1D7B72
|
||||
pause 64
|
||||
jump BattleScript_1D83D6
|
||||
jump BattleScript_ButItFailed
|
||||
|
||||
BattleScript_1D7B72: @ 81D7B72
|
||||
attackanimation
|
||||
@ -1410,8 +1410,8 @@ MoveEffect_Spite: @ 81D7B99
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
reducepprandom BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
reducepprandom BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_ReducedBy
|
||||
@ -1512,8 +1512,8 @@ MoveEffect_MeanLook: @ 81D7CCC
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 65534
|
||||
jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 65534
|
||||
jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
setbyte 0x2024d21, 32
|
||||
@ -1526,10 +1526,10 @@ MoveEffect_Nightmare: @ 81D7CF4
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_ButItFailed
|
||||
jumpifstatus TARGET, SLP, BattleScript_1D7D1A
|
||||
jump BattleScript_1D83D6
|
||||
jump BattleScript_ButItFailed
|
||||
|
||||
BattleScript_1D7D1A: @ 81D7D1A
|
||||
attackanimation
|
||||
@ -1553,7 +1553,7 @@ MoveEffect_Curse: @ 81D7D3B
|
||||
ppreduce
|
||||
jumpifstat USER, 2, 3, 0, BattleScript_1D7D60
|
||||
jumpifstat USER, 1, 1, 12, BattleScript_1D7D60
|
||||
jumpifstat USER, 0, 2, 12, BattleScript_1D83D6
|
||||
jumpifstat USER, 0, 2, 12, BattleScript_ButItFailed
|
||||
|
||||
BattleScript_1D7D60: @ 81D7D60
|
||||
copyarray 0x2024c08, 0x2024c07, 1
|
||||
@ -1588,8 +1588,8 @@ BattleScript_1D7DC4: @ 81D7DC4
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
cursetarget BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
cursetarget BattleScript_ButItFailed
|
||||
orword 0x2024c6c, 0x100
|
||||
setbyte 0x2016002, 0
|
||||
attackanimation
|
||||
@ -1640,7 +1640,7 @@ MoveEffect_PerishSong: @ 81D7E3D
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setperishsong BattleScript_1D83D6
|
||||
setperishsong BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_PerishSong
|
||||
@ -1687,7 +1687,7 @@ MoveEffect_Swagger: @ 81D7EA2
|
||||
accuracycheck BattleScript_1D6F72, 0
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifconfusedandattackmaxed 1, BattleScript_1D83D6
|
||||
jumpifconfusedandattackmaxed 1, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
setbyte 0x201601e, 33
|
||||
@ -1724,8 +1724,8 @@ MoveEffect_Attract: @ 81D7F1F
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
tryinfatuatetarget BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
tryinfatuatetarget BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_FellLove
|
||||
@ -1773,10 +1773,10 @@ MoveEffect_BatonPass: @ 81D7F7C
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifcannotswitch 129, BattleScript_1D83D6
|
||||
jumpifcannotswitch 129, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
openpartyscreen USER, BattleScript_1D83D6
|
||||
openpartyscreen USER, BattleScript_ButItFailed
|
||||
atke2 USER
|
||||
waitstateatk
|
||||
atk51 USER, 2
|
||||
@ -1858,7 +1858,7 @@ MoveEffect_BellyDrum: @ 81D8038
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
maxattackhalvehp BattleScript_1D83D6
|
||||
maxattackhalvehp BattleScript_ButItFailed
|
||||
orword 0x2024c6c, 0x100
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -1872,7 +1872,7 @@ MoveEffect_PsychUp: @ 81D805A
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
copyfoestats BattleScript_1D83D6
|
||||
copyfoestats BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_CopyStatChanges
|
||||
@ -1971,7 +1971,7 @@ MoveEffect_FutureSight: @ 81D817D
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setfutureattack BattleScript_1D83D6
|
||||
setfutureattack BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printfromtable BattleTextList_4015E2
|
||||
@ -2017,9 +2017,9 @@ MoveEffect_Teleport: @ 81D8233
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifhalfword 4, 0x20239f8, 8, BattleScript_1D83D6
|
||||
jumpifhalfword 4, 0x20239f8, 8, BattleScript_ButItFailed
|
||||
atk76 USER, 2
|
||||
jumpifbyte 0, 0x2024d1e, 1, BattleScript_1D83D6
|
||||
jumpifbyte 0, 0x2024d1e, 1, BattleScript_ButItFailed
|
||||
jumpifbyte 0, 0x2024d1e, 2, BattleScript_1D8839
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -2038,7 +2038,7 @@ MoveEffect_BeatUp: @ 81D826E
|
||||
|
||||
BattleScript_1D8281: @ 81D8281
|
||||
atk25
|
||||
beatupcalculation BattleScript_1D82C4, BattleScript_1D83D6
|
||||
beatupcalculation BattleScript_1D82C4, BattleScript_ButItFailed
|
||||
printstring BATTLE_TEXT_PokeAttack
|
||||
critcalc
|
||||
jumpifbyte 1, 0x2024c0d, 2, BattleScript_1D829C
|
||||
@ -2156,7 +2156,7 @@ BattleScript_1D83D4: @ 81D83D4
|
||||
BattleScript_1D83D5: @ 81D83D5
|
||||
ppreduce
|
||||
|
||||
BattleScript_1D83D6:: @ 81D83D6
|
||||
BattleScript_ButItFailed:: @ 81D83D6
|
||||
pause 32
|
||||
orbyte 0x2024c68, 32
|
||||
resultmessage
|
||||
@ -2243,8 +2243,8 @@ MoveEffect_Torment: @ 81D8495
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
settorment BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
settorment BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_TormentSubject
|
||||
@ -2257,7 +2257,7 @@ MoveEffect_Flatter: @ 81D84B1
|
||||
accuracycheck BattleScript_1D6F72, 0
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifconfusedandattackmaxed 4, BattleScript_1D83D6
|
||||
jumpifconfusedandattackmaxed 4, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
setbyte 0x201601e, 20
|
||||
@ -2279,12 +2279,12 @@ MoveEffect_WillOWisp: @ 81D850F
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifstatus TARGET, BRN, BattleScript_1D8575
|
||||
jumpiftype TARGET, TYPE_FIRE, BattleScript_1D83E8
|
||||
jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_1D855B
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -2309,7 +2309,7 @@ MoveEffect_Memento: @ 81D8583
|
||||
jumpifbyte 0, 0x2024d24, 1, BattleScript_1D860A
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifattackandspecialattackcannotfall BattleScript_1D83D6
|
||||
jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
|
||||
setuserhptozero
|
||||
attackanimation
|
||||
waitanimation
|
||||
@ -2415,8 +2415,8 @@ MoveEffect_Taunt: @ 81D86AB
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
settaunt BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
settaunt BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_TauntFell
|
||||
@ -2427,7 +2427,7 @@ MoveEffect_HelpingHand: @ 81D86C7
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
sethelpinghand BattleScript_1D83D6
|
||||
sethelpinghand BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_ReadyToHelp
|
||||
@ -2438,9 +2438,9 @@ MoveEffect_Trick: @ 81D86DC
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
itemswap BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
itemswap BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_SwitchedItems
|
||||
@ -2453,8 +2453,8 @@ MoveEffect_RolePlay: @ 81D870A
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
copyability BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
copyability BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_CopiedObject
|
||||
@ -2465,7 +2465,7 @@ MoveEffect_Wish: @ 81D8726
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
atkd4 0, BattleScript_1D83D6
|
||||
atkd4 0, BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
jump BattleScript_EndTurn
|
||||
@ -2484,7 +2484,7 @@ MoveEffect_Ingrain: @ 81D874D
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setroots BattleScript_1D83D6
|
||||
setroots BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_PlantedRoots
|
||||
@ -2510,7 +2510,7 @@ MoveEffect_Recycle: @ 81D8782
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
recycleitem BattleScript_1D83D6
|
||||
recycleitem BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_FoundOne
|
||||
@ -2562,11 +2562,11 @@ MoveEffect_Yawn: @ 81D87EE
|
||||
ppreduce
|
||||
jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_1D882F
|
||||
jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_1D882F
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
|
||||
jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
|
||||
jumpifhalverset TARGET, 32, BattleScript_1D9037
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
jumpifcannotsleep BattleScript_1D83D6
|
||||
setyawn BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
jumpifcannotsleep BattleScript_ButItFailed
|
||||
setyawn BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_DrowsyMade
|
||||
@ -2590,7 +2590,7 @@ MoveEffect_Endeavor: @ 81D8852
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setdamagetohealthdifference BattleScript_1D83D6
|
||||
setdamagetohealthdifference BattleScript_ButItFailed
|
||||
copyarray 0x2024bf0, 0x2024bec, 4
|
||||
accuracycheck BattleScript_1D6F77, 0
|
||||
atk6
|
||||
@ -2608,8 +2608,8 @@ MoveEffect_SkillSwap: @ 81D8893
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
accuracycheck BattleScript_1D83D6, 65535
|
||||
abilityswap BattleScript_1D83D6
|
||||
accuracycheck BattleScript_ButItFailed, 65535
|
||||
abilityswap BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_AbilitySwap
|
||||
@ -2620,7 +2620,7 @@ MoveEffect_Imprison: @ 81D88AF
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
imprisoneffect BattleScript_1D83D6
|
||||
imprisoneffect BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_SealedMove
|
||||
@ -2631,7 +2631,7 @@ MoveEffect_Refresh: @ 81D88C4
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
cureifburnedparalysedorpoisoned BattleScript_1D83D6
|
||||
cureifburnedparalysedorpoisoned BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_StatusNormal
|
||||
@ -2643,7 +2643,7 @@ MoveEffect_Grudge: @ 81D88DB
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
setgrudge BattleScript_1D83D6
|
||||
setgrudge BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_GrudgeBear
|
||||
@ -2740,7 +2740,7 @@ MoveEffect_WaterSport: @ 81D89D7
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
settypebasedhalvers BattleScript_1D83D6
|
||||
settypebasedhalvers BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printfromtable BattleTextList_4015D4
|
||||
@ -2767,7 +2767,7 @@ MoveEffect_Tickle: @ 81D8A0A
|
||||
jumpifstat TARGET, 0, 2, 0, BattleScript_1D8A7D
|
||||
|
||||
BattleScript_1D8A1F: @ 81D8A1F
|
||||
accuracycheck BattleScript_1D83D6, 0
|
||||
accuracycheck BattleScript_ButItFailed, 0
|
||||
attackanimation
|
||||
waitanimation
|
||||
setbyte 0x20160dc, 0
|
||||
@ -2924,7 +2924,7 @@ MoveEffect_Camouflage: @ 81D8C43
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
settypetoterrain BattleScript_1D83D6
|
||||
settypetoterrain BattleScript_ButItFailed
|
||||
attackanimation
|
||||
waitanimation
|
||||
printstring BATTLE_TEXT_TypeTransform
|
||||
@ -3364,7 +3364,7 @@ gUnknown_081D90B2:: @ 81D90B2
|
||||
gUnknown_081D90F1:: @ 81D90F1
|
||||
printstring BATTLE_TEXT_UnleashedEnergy
|
||||
waitmessage 64
|
||||
jump BattleScript_1D83D6
|
||||
jump BattleScript_ButItFailed
|
||||
|
||||
gUnknown_081D90FC:: @ 81D90FC
|
||||
attackanimation
|
||||
@ -3385,7 +3385,7 @@ BattleScript_1D9116: @ 81D9116
|
||||
atk52 TARGET
|
||||
jump BattleScript_EndTurn
|
||||
|
||||
gUnknown_081D9128:: @ 81D9128
|
||||
BattleScript_MistProtected:: @ 81D9128
|
||||
pause 32
|
||||
printstring BATTLE_TEXT_MistProtect
|
||||
waitmessage 64
|
||||
@ -3531,17 +3531,17 @@ BattleScript_RapidSpinAway:: @ 81D92C0
|
||||
breakfree
|
||||
return
|
||||
|
||||
gUnknown_081D92C2:: @ 81D92C2
|
||||
BattleScript_WrapFree:: @ 81D92C2
|
||||
printstring BATTLE_TEXT_GotFreeFrom
|
||||
waitmessage 64
|
||||
return
|
||||
|
||||
gUnknown_081D92C9:: @ 81D92C9
|
||||
BattleScript_LeechSeedFree:: @ 81D92C9
|
||||
printstring BATTLE_TEXT_LeechShed
|
||||
waitmessage 64
|
||||
return
|
||||
|
||||
gUnknown_081D92D0:: @ 81D92D0
|
||||
BattleScript_SpikesFree:: @ 81D92D0
|
||||
printstring BATTLE_TEXT_SpikesBlownAway
|
||||
waitmessage 64
|
||||
return
|
||||
@ -4164,7 +4164,7 @@ BattleScript_1D988D: @ 81D988D
|
||||
waitmessage 64
|
||||
jump BattleScript_EndTurn
|
||||
|
||||
gUnknown_081D989B:: @ 81D989B
|
||||
BattleScript_AbilityNoStatLoss:: @ 81D989B
|
||||
pause 32
|
||||
printstring BATTLE_TEXT_PreventedStatLoss
|
||||
waitmessage 64
|
||||
@ -4188,7 +4188,7 @@ BattleScript_PSNPrevention:: @ 81D98BD
|
||||
waitmessage 64
|
||||
return
|
||||
|
||||
gUnknown_081D98C9:: @ 81D98C9
|
||||
BattleScript_ObliviousPreventsAttraction:: @ 81D98C9
|
||||
pause 32
|
||||
printstring BATTLE_TEXT_PreventedRomance
|
||||
waitmessage 64
|
||||
@ -4214,7 +4214,7 @@ gUnknown_081D98F3:: @ 81D98F3
|
||||
waitmessage 64
|
||||
jump BattleScript_EndTurn
|
||||
|
||||
gUnknown_081D9903:: @ 81D9903
|
||||
BattleScript_AbilityNoSpecificStatLoss:: @ 81D9903
|
||||
pause 32
|
||||
printstring BATTLE_TEXT_PreventedLoss
|
||||
waitmessage 64
|
||||
|
@ -51,7 +51,7 @@ BattleScript_1D9EBC: @ 81D9EBC
|
||||
atk98 1
|
||||
pokemoncatchfunction
|
||||
|
||||
gUnknown_081D9EC2:: @ 81D9EC2
|
||||
BattleScript_SuccessBallThrow:: @ 81D9EC2
|
||||
jumpifhalfword 0, gLastUsedItem, 5, BattleScript_1D9ED0
|
||||
atk60 11
|
||||
|
||||
@ -76,12 +76,12 @@ BattleScript_1D9EF8: @ 81D9EF8
|
||||
setbyte gBattleOutcome, 7
|
||||
activesidesomething
|
||||
|
||||
gUnknown_081D9F00:: @ 81D9F00
|
||||
BattleScript_WallyBallThrow:: @ 81D9F00
|
||||
printstring BATTLE_TEXT_BallCaught2
|
||||
setbyte gBattleOutcome, 7
|
||||
activesidesomething
|
||||
|
||||
gUnknown_081D9F0A:: @ 81D9F0A
|
||||
BattleScript_ShakeBallThrow:: @ 81D9F0A
|
||||
printfromtable BattleTextList_4015E6
|
||||
waitmessage 64
|
||||
jumpifbyte 5, gBattleTypeFlags, 128, BattleScript_1D9F34
|
||||
@ -93,7 +93,7 @@ gUnknown_081D9F0A:: @ 81D9F0A
|
||||
BattleScript_1D9F34: @ 81D9F34
|
||||
atkf6
|
||||
|
||||
gUnknown_081D9F35:: @ 81D9F35
|
||||
BattleScript_TrainerBallBlock:: @ 81D9F35
|
||||
waitmessage 64
|
||||
printstring BATTLE_TEXT_BlockBall
|
||||
waitmessage 64
|
||||
|
1029
data/data2a.s
Normal file
1029
data/data2a.s
Normal file
File diff suppressed because it is too large
Load Diff
296
data/data2b.s
Normal file
296
data/data2b.s
Normal file
@ -0,0 +1,296 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.string "ターン$" @ "turn"
|
||||
|
||||
.align 2
|
||||
gPlayerBufferCommands:: @ 81FAD98
|
||||
.4byte PlayerHandleGetAttributes
|
||||
.4byte sub_802ECF0
|
||||
.4byte PlayerHandleSetAttributes
|
||||
.4byte sub_802F7CC
|
||||
.4byte PlayerHandleLoadPokeSprite
|
||||
.4byte PlayerHandleSendOutPoke
|
||||
.4byte PlayerHandleReturnPokeToBall
|
||||
.4byte PlayerHandleTrainerThrow
|
||||
.4byte PlayerHandleTrainerSlide
|
||||
.4byte PlayerHandleTrainerSlideBack
|
||||
.4byte sub_802FE7C
|
||||
.4byte sub_802FF60
|
||||
.4byte sub_802FF80
|
||||
.4byte PlayerHandleBallThrow
|
||||
.4byte PlayerHandlePuase
|
||||
.4byte PlayerHandleMoveAnimation
|
||||
.4byte PlayerHandlePrintString
|
||||
.4byte PlayerHandlePrintStringPlayerOnly
|
||||
.4byte sub_803037C
|
||||
.4byte nullsub_42
|
||||
.4byte sub_8030468
|
||||
.4byte PlayerHandleOpenBag
|
||||
.4byte sub_8030594
|
||||
.4byte sub_8030674
|
||||
.4byte PlayerHandleHealthBarUpdate
|
||||
.4byte PlayerHandleExpBarUpdate
|
||||
.4byte PlayerHandleStatusIconUpdate
|
||||
.4byte PlayerHandleStatusAnimation
|
||||
.4byte PlayerHandleStatusXor
|
||||
.4byte sub_803097C
|
||||
.4byte PlayerHandleDMATransfer
|
||||
.4byte sub_8030A3C
|
||||
.4byte sub_8030A6C
|
||||
.4byte sub_8030A78
|
||||
.4byte sub_8030A8C
|
||||
.4byte sub_8030AA0
|
||||
.4byte sub_8030AB4
|
||||
.4byte sub_8030AC8
|
||||
.4byte sub_8030AE4
|
||||
.4byte sub_8030B1C
|
||||
.4byte sub_8030B34
|
||||
.4byte PlayerHandleHitAnimation
|
||||
.4byte sub_8030BCC
|
||||
.4byte PlayerHandleEffectivenessSound
|
||||
.4byte sub_8030C1C
|
||||
.4byte PlayerHandleFaintingCry
|
||||
.4byte PlayerHandleIntroSlide
|
||||
.4byte PlayerHandleTrainerBallThrow
|
||||
.4byte sub_8030FAC
|
||||
.4byte sub_80310A4
|
||||
.4byte sub_80310F0
|
||||
.4byte PlayerHandleSpriteInvisibility
|
||||
.4byte PlayerHandleBattleAnimation
|
||||
.4byte PlayerHandleLinkStandbyMsg
|
||||
.4byte PlayerHandleResetActionMoveSelection
|
||||
.4byte sub_80312A0
|
||||
.4byte nullsub_43
|
||||
|
||||
gUnknown_081FAE7C:: @ 81FAE7C
|
||||
.byte 0, 2, 3, 1
|
||||
|
||||
gUnknown_081FAE80:: @ 81FAE80
|
||||
.string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$"
|
||||
|
||||
gUnknown_081FAE89:: @ 81FAE89
|
||||
.byte 8, 120
|
||||
.byte 88, 120
|
||||
.byte 8, 136
|
||||
.byte 88, 136
|
||||
|
||||
gUnknown_081FAE91:: @ 81FAE91
|
||||
.byte 144, 120
|
||||
.byte 190, 120
|
||||
.byte 144, 136
|
||||
.byte 190, 136
|
||||
.byte 72, 72
|
||||
.byte 32, 90
|
||||
.byte 80, 80
|
||||
.byte 80, 88
|
||||
|
||||
.align 2
|
||||
gUnknown_081FAEA4:: @ 81FAEA4
|
||||
obj_tiles gSmokescreenImpactTiles, 0x180, 55019
|
||||
|
||||
.align 2
|
||||
gUnknown_081FAEAC:: @ 81FAEAC
|
||||
obj_pal gSmokescreenImpactPalette, 55019
|
||||
|
||||
.align 2
|
||||
gOamData_81FAEB4:: @ 81FAEB4
|
||||
.2byte 0x0000
|
||||
.2byte 0x4000
|
||||
.2byte 0x0400
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_81FAEBC:: @ 81FAEBC
|
||||
obj_image_anim_frame 0, 4
|
||||
obj_image_anim_frame 4, 4
|
||||
obj_image_anim_frame 8, 4
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_81FAECC:: @ 81FAECC
|
||||
obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_81FAEDC:: @ 81FAEDC
|
||||
obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_81FAEEC:: @ 81FAEEC
|
||||
obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_81FAEFC:: @ 81FAEFC
|
||||
.4byte gSpriteAnim_81FAEBC
|
||||
.4byte gSpriteAnim_81FAECC
|
||||
.4byte gSpriteAnim_81FAEDC
|
||||
.4byte gSpriteAnim_81FAEEC
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_81FAF0C:: @ 81FAF0C
|
||||
spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC
|
||||
|
||||
.align 2
|
||||
gUnknown_081FAF24:: @ 81FAF24
|
||||
obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759
|
||||
|
||||
.align 2
|
||||
gOamData_81FAF2C:: @ 81FAF2C
|
||||
.2byte 0x4000
|
||||
.2byte 0x4000
|
||||
.2byte 0x0C00
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_81FAF34:: @ 81FAF34
|
||||
spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978
|
||||
|
||||
.align 2
|
||||
gUnknown_081FAF4C:: @ 81FAF4C
|
||||
.4byte 0x02008000
|
||||
.4byte 0x0200a000
|
||||
.4byte 0x0200c000
|
||||
.4byte 0x0200e000
|
||||
|
||||
.align 2
|
||||
gOpponentBufferCommands:: @ 81FAF5C
|
||||
.4byte OpponentHandleGetAttributes
|
||||
.4byte dp01t_01_2_read_pokmon_data_slice
|
||||
.4byte OpponentHandleSetAttributes
|
||||
.4byte sub_8034744
|
||||
.4byte OpponentHandleLoadPokeSprite
|
||||
.4byte OpponentHandleSendOutPoke
|
||||
.4byte OpponentHandleReturnPokeToBall
|
||||
.4byte OpponentHandleTrainerThrow
|
||||
.4byte OpponentHandleTrainerSlide
|
||||
.4byte OpponentHandleTrainerSlideBack
|
||||
.4byte sub_8035030
|
||||
.4byte sub_80350D4
|
||||
.4byte sub_80350E0
|
||||
.4byte OpponentHandleBallThrow
|
||||
.4byte OpponentHandlePause
|
||||
.4byte OpponentHandleMoveAnimation
|
||||
.4byte OpponentHandlePrintString
|
||||
.4byte OpponentHandlePrintStringPlayerOnly
|
||||
.4byte sub_803540C
|
||||
.4byte sub_803541C
|
||||
.4byte sub_8035428
|
||||
.4byte sub_8035590
|
||||
.4byte sub_80355C0
|
||||
.4byte sub_80356C0
|
||||
.4byte OpponentHandleHealthBarUpdate
|
||||
.4byte OpponentHandleExpBarUpdate
|
||||
.4byte OpponentHandleStatusIconUpdate
|
||||
.4byte OpponentHandleStatusAnimation
|
||||
.4byte OpponentHandleStatusXor
|
||||
.4byte sub_80358B0
|
||||
.4byte OpponentHandleDMATransfer
|
||||
.4byte sub_80358C8
|
||||
.4byte sub_80358D4
|
||||
.4byte sub_80358E0
|
||||
.4byte sub_80358EC
|
||||
.4byte sub_80358F8
|
||||
.4byte sub_8035904
|
||||
.4byte sub_8035910
|
||||
.4byte sub_803592C
|
||||
.4byte sub_8035964
|
||||
.4byte sub_803597C
|
||||
.4byte OpponentHandleHitAnimation
|
||||
.4byte sub_8035A14
|
||||
.4byte OpponentHandleEffectivenessSound
|
||||
.4byte sub_8035A64
|
||||
.4byte OpponentHandleFaintingCry
|
||||
.4byte dp01t_2E_7_battle_intro
|
||||
.4byte sub_8035B04
|
||||
.4byte dp01t_30_7_0803D67C
|
||||
.4byte sub_8035E6C
|
||||
.4byte sub_8035EB8
|
||||
.4byte OpponentHandleSpriteInvisibility
|
||||
.4byte OpponentHandleBattleAnimation
|
||||
.4byte OpponentHandleLinkStandbyMsg
|
||||
.4byte OpponentHandleResetActionMoveSelection
|
||||
.4byte sub_8035FA4
|
||||
.4byte nullsub_46
|
||||
|
||||
@ unreferenced unknown values
|
||||
.byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20
|
||||
|
||||
.align 2
|
||||
gLinkOpponentBufferCommands:: @ 81FB048
|
||||
.4byte LinkOpponentHandleGetAttributes
|
||||
.4byte sub_803889C
|
||||
.4byte sub_80388A8
|
||||
.4byte sub_8039220
|
||||
.4byte sub_8039294
|
||||
.4byte sub_80393E4
|
||||
.4byte sub_80395B4
|
||||
.4byte sub_80396D0
|
||||
.4byte sub_80398A4
|
||||
.4byte sub_80398B0
|
||||
.4byte sub_803995C
|
||||
.4byte sub_8039A00
|
||||
.4byte sub_8039A0C
|
||||
.4byte sub_8039A18
|
||||
.4byte sub_8039A24
|
||||
.4byte sub_8039A30
|
||||
.4byte sub_8039CC8
|
||||
.4byte sub_8039D2C
|
||||
.4byte sub_8039D38
|
||||
.4byte sub_8039D44
|
||||
.4byte sub_8039D50
|
||||
.4byte sub_8039D5C
|
||||
.4byte sub_8039D68
|
||||
.4byte sub_8039D74
|
||||
.4byte sub_8039D80
|
||||
.4byte sub_8039E70
|
||||
.4byte sub_8039E7C
|
||||
.4byte sub_8039EF0
|
||||
.4byte sub_8039F58
|
||||
.4byte sub_8039F64
|
||||
.4byte sub_8039F70
|
||||
.4byte sub_8039F7C
|
||||
.4byte sub_8039F88
|
||||
.4byte sub_8039F94
|
||||
.4byte sub_8039FA0
|
||||
.4byte sub_8039FAC
|
||||
.4byte sub_8039FB8
|
||||
.4byte sub_8039FC4
|
||||
.4byte sub_8039FE0
|
||||
.4byte sub_803A018
|
||||
.4byte sub_803A030
|
||||
.4byte dp01t_29_4_blink
|
||||
.4byte sub_803A0C8
|
||||
.4byte sub_803A0D4
|
||||
.4byte sub_803A118
|
||||
.4byte sub_803A148
|
||||
.4byte dp01t_2E_4_battle_intro
|
||||
.4byte sub_803A1B8
|
||||
.4byte sub_803A3DC
|
||||
.4byte sub_803A520
|
||||
.4byte sub_803A56C
|
||||
.4byte sub_803A578
|
||||
.4byte bx_exec_buffer_A_ch0_tbl4
|
||||
.4byte sub_803A640
|
||||
.4byte sub_803A64C
|
||||
.4byte sub_803A658
|
||||
.4byte nullsub_48
|
||||
|
||||
@ 81FB12C
|
||||
.include "data/battle_moves.inc"
|
||||
|
||||
.align 2
|
||||
gUnknown_081FC1D0:: @ 81FC1D0
|
||||
.2byte 0x34, 0x10, 0x101
|
||||
.space 2
|
||||
|
||||
.2byte -1, -1, -1
|
||||
.space 2
|
@ -201,8 +201,8 @@ gSpecials::
|
||||
.4byte sub_80B7D0C
|
||||
.4byte ExecuteWhiteOut
|
||||
.4byte sp0C8_whiteout_maybe
|
||||
.4byte sub_80C8040
|
||||
.4byte sub_80C8080
|
||||
.4byte RotatingGate_InitPuzzle
|
||||
.4byte RotatingGate_InitPuzzleAndGraphics
|
||||
.4byte SetSSTidalFlag
|
||||
.4byte ResetSSTidalFlag
|
||||
.4byte EnterSafariMode
|
||||
|
355
include/battle.h
355
include/battle.h
@ -28,64 +28,83 @@
|
||||
#define AI_ACTION_UNK7 0x0040
|
||||
#define AI_ACTION_UNK8 0x0080
|
||||
|
||||
#define STATUS_SLEEP 0x7
|
||||
#define STATUS_POISON 0x8
|
||||
#define STATUS_BURN 0x10
|
||||
#define STATUS_FREEZE 0x20
|
||||
#define STATUS_PARALYSIS 0x40
|
||||
#define STATUS_TOXIC_POISON 0x80
|
||||
#define STATUS_SLEEP 0x7
|
||||
#define STATUS_POISON 0x8
|
||||
#define STATUS_BURN 0x10
|
||||
#define STATUS_FREEZE 0x20
|
||||
#define STATUS_PARALYSIS 0x40
|
||||
#define STATUS_TOXIC_POISON 0x80
|
||||
|
||||
#define STATUS2_CONFUSION 0x00000007
|
||||
#define STATUS2_UPROAR 0x00000070
|
||||
#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
|
||||
#define STATUS2_LOCK_CONFUSE 0x00000C00
|
||||
#define STATUS2_MULTIPLETURNS 0x00001000
|
||||
#define STATUS2_WRAPPED 0x0000E000
|
||||
#define STATUS2_INFATUATION 0x000F0000
|
||||
#define STATUS2_FOCUS_ENERGY 0x00100000
|
||||
#define STATUS2_TRANSFORMED 0x00200000
|
||||
#define STATUS2_RECHARGE 0x00400000
|
||||
#define STATUS2_RAGE 0x00800000
|
||||
#define STATUS2_SUBSTITUTE 0x01000000
|
||||
#define STATUS2_DESTINY_BOND 0x02000000
|
||||
#define STATUS2_ESCAPE_PREVENTION 0x04000000
|
||||
#define STATUS2_NIGHTMARE 0x08000000
|
||||
#define STATUS2_CURSED 0x10000000
|
||||
#define STATUS2_FORESIGHT 0x20000000
|
||||
#define STATUS2_DEFENSE_CURL 0x40000000
|
||||
#define STATUS2_TORMENT 0x80000000
|
||||
|
||||
#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp
|
||||
#define STATUS3_LEECHSEED_BANK 0x3
|
||||
#define STATUS3_LEECHSEED 0x4
|
||||
#define STATUS3_ALWAYS_HITS 0x18 //two bits
|
||||
#define STATUS3_PERISH_SONG 0x20
|
||||
#define STATUS3_ON_AIR 0x40
|
||||
#define STATUS3_UNDERGROUND 0x80
|
||||
#define STATUS3_MINIMIZED 0x100
|
||||
#define STATUS3_ROOTED 0x400
|
||||
#define STATUS3_CHARGED_UP 0x200
|
||||
#define STATUS3_ROOTED 0x400
|
||||
#define STATUS3_YAWN 0x1800 //two bits
|
||||
#define STATUS3_IMPRISIONED 0x2000
|
||||
#define STATUS3_GRUDGE 0x4000
|
||||
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
|
||||
#define STATUS3_MUDSPORT 0x10000
|
||||
#define STATUS3_WATERSPORT 0x20000
|
||||
#define STATUS3_UNDERWATER 0x40000
|
||||
|
||||
#define HITMARKER_x20 0x0000020
|
||||
#define HITMARKER_DESTINYBOND 0x0000040
|
||||
#define HITMARKER_NO_ANIMATIONS 0x0000080
|
||||
#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100
|
||||
#define HITMARKER_NO_ATTACKSTRING 0x0000200
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400
|
||||
#define HITMARKER_NO_PPDEDUCT 0x0000800
|
||||
#define HITMARKER_IGNORE_SAFEGUARD 0x0002000
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000
|
||||
#define HITMARKER_IGNORE_ON_AIR 0x0010000
|
||||
#define HITMARKER_IGNORE_UNDERGROUND 0x0020000
|
||||
#define HITMARKER_IGNORE_UNDERWATER 0x0040000
|
||||
#define HITMARKER_x80000 0x0080000
|
||||
#define HITMARKER_x100000 0x0100000
|
||||
#define HITMARKER_x400000 0x0400000
|
||||
#define HITMARKER_x800000 0x0800000
|
||||
#define HITMARKER_GRUDGE 0x1000000
|
||||
#define HITMARKER_OBEYS 0x2000000
|
||||
#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
|
||||
|
||||
#define HITMARKER_x20 0x00000020
|
||||
#define HITMARKER_DESTINYBOND 0x00000040
|
||||
#define HITMARKER_NO_ANIMATIONS 0x00000080
|
||||
#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
|
||||
#define HITMARKER_NO_ATTACKSTRING 0x00000200
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
|
||||
#define HITMARKER_NO_PPDEDUCT 0x00000800
|
||||
#define HITMARKER_PURSUIT_TRAP 0x00001000
|
||||
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
|
||||
#define HITMARKER_IGNORE_ON_AIR 0x00010000
|
||||
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
|
||||
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
|
||||
#define HITMARKER_x80000 0x00080000
|
||||
#define HITMARKER_x100000 0x00100000
|
||||
#define HITMARKER_x400000 0x00400000
|
||||
#define HITMARKER_x800000 0x00800000
|
||||
#define HITMARKER_GRUDGE 0x01000000
|
||||
#define HITMARKER_OBEYS 0x02000000
|
||||
#define HITMARKER_x8000000 0x08000000
|
||||
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
|
||||
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
|
||||
|
||||
#define SIDE_REFLECT 0x1
|
||||
#define SIDE_LIGHTSCREEN 0x2
|
||||
#define SIDE_SPIKES 0x10
|
||||
#define SIDE_SAFEGUARD 0x20
|
||||
#define SIDE_FUTUREATTACK 0x40
|
||||
#define SIDE_MIST 0x100
|
||||
#define SIDE_SPIKES_DMG_DONE 0x200
|
||||
|
||||
#define MAX_TRAINER_ITEMS 4
|
||||
#define MAX_MON_MOVES 4
|
||||
#define MAX_BANKS_BATTLE 4
|
||||
@ -165,31 +184,28 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x15DDE*/ u8 unk15DDE;
|
||||
/*0x15DDF*/ u8 unk15DDF;
|
||||
/*0x15DE0*/ u8 filler15DE0[0x222];
|
||||
/*0x16002*/ u8 AnimTurn;
|
||||
/*0x16003*/ u8 ScriptingActive;
|
||||
/*0x16004*/ u8 WrappedMove1[4];
|
||||
/*0x16008*/ u8 WrappedMove2[4];
|
||||
/*0x16002*/ u8 animTurn;
|
||||
/*0x16003*/ u8 scriptingActive;
|
||||
/*0x16004*/ u8 wrappedMove1[4];
|
||||
/*0x16008*/ u8 wrappedMove2[4];
|
||||
/*0x1600C*/ u8 cmd49StateTracker;
|
||||
/*0x1600D*/ u8 unk1600D;
|
||||
/*0x1600E*/ u8 unk1600E;
|
||||
/*0x1600F*/ u8 atk23StateTracker;
|
||||
/*0x16010*/ u8 unk16010;
|
||||
/*0x16011*/ u8 unk16011;
|
||||
/*0x16012*/ u8 unk16012;
|
||||
/*0x16013*/ u8 unk16013;
|
||||
/*0x1600F*/ u8 cmd23StateTracker;
|
||||
/*0x16010*/ u8 moveTarget[4];
|
||||
/*0x16014*/ u8 unk16014;
|
||||
/*0x16015*/ u8 unk16015;
|
||||
/*0x16016*/ u8 unk16016;
|
||||
/*0x16017*/ u8 unk16017;
|
||||
/*0x16018*/ u8 expGetterID;
|
||||
/*0x16019*/ u8 unk16019;
|
||||
/*0x1601A*/ u8 unk1601A;
|
||||
/*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker
|
||||
/*0x1601B*/ u8 wildVictorySong;
|
||||
/*0x1601C*/ u8 DynamicMoveType;
|
||||
/*0x1601C*/ u8 dynamicMoveType;
|
||||
/*0x1601D*/ u8 unk1601D;
|
||||
/*0x1601E*/ u8 statChanger;
|
||||
/*0x1601F*/ u8 DmgMultiplier;
|
||||
/*0x16020*/ u8 WrappedBy[4];
|
||||
/*0x1601F*/ u8 dmgMultiplier;
|
||||
/*0x16020*/ u8 wrappedBy[4];
|
||||
/*0x16024*/ u8 unk16024;
|
||||
/*0x16025*/ u8 unk16025;
|
||||
/*0x16026*/ u8 unk16026;
|
||||
@ -240,7 +256,7 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x16053*/ u8 unk16053;
|
||||
/*0x16054*/ u8 unk16054;
|
||||
/*0x16055*/ u8 unk16055;
|
||||
/*0x16056*/ u8 unk16056;
|
||||
/*0x16056*/ u8 moneyMultiplier;
|
||||
/*0x16057*/ u8 unk16057;
|
||||
/*0x16058*/ u8 unk16058;
|
||||
/*0x16059*/ u8 unk16059;
|
||||
@ -250,38 +266,11 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x1605E*/ u8 unk1605E;
|
||||
/*0x1605F*/ u8 sentInPokes;
|
||||
/*0x16060*/ u8 unk16060[4];
|
||||
/*0x16064*/ u8 unk16064;
|
||||
/*0x16065*/ u8 unk16065;
|
||||
/*0x16066*/ u8 unk16066;
|
||||
/*0x16067*/ u8 unk16067;
|
||||
/*0x16068*/ u8 unk16068;
|
||||
/*0x16069*/ u8 unk16069;
|
||||
/*0x1606A*/ u8 unk1606A;
|
||||
/*0x1606B*/ u8 unk1606B;
|
||||
/*0x1606C*/ u8 unk1606C;
|
||||
/*0x1606D*/ u8 unk1606D;
|
||||
/*0x1606E*/ u8 unk1606E;
|
||||
/*0x1606F*/ u8 unk1606F;
|
||||
/*0x16070*/ u8 unk16070;
|
||||
/*0x16071*/ u8 unk16071;
|
||||
/*0x16072*/ u8 unk16072;
|
||||
/*0x16073*/ u8 unk16073;
|
||||
/*0x16074*/ u8 unk16074;
|
||||
/*0x16075*/ u8 unk16075;
|
||||
/*0x16076*/ u8 unk16076;
|
||||
/*0x16077*/ u8 unk16077;
|
||||
/*0x16064*/ u8 unk16064[4];
|
||||
/*0x16068*/ u8 unk16068[4];
|
||||
/*0x1606C*/ u8 unk1606C[4][3];
|
||||
/*0x16078*/ u8 unk16078;
|
||||
/*0x16079*/ u8 unk16079;
|
||||
/*0x1607A*/ u8 unk1607A;
|
||||
/*0x1607B*/ u8 unk1607B;
|
||||
/*0x1607C*/ u8 unk1607C;
|
||||
/*0x1607D*/ u8 unk1607D;
|
||||
/*0x1607E*/ u8 unk1607E;
|
||||
/*0x1607F*/ u8 unk1607F;
|
||||
/*0x16080*/ u8 unk16080;
|
||||
/*0x16081*/ u8 unk16081;
|
||||
/*0x16082*/ u8 unk16082;
|
||||
/*0x16083*/ u8 unk16083;
|
||||
/*0x16079*/ u8 caughtNick[11];
|
||||
/*0x16084*/ u8 unk16084;
|
||||
/*0x16085*/ u8 unk16085;
|
||||
/*0x16086*/ u8 unk16086;
|
||||
@ -302,17 +291,17 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x16098*/ u8 unk16098;
|
||||
/*0x16099*/ u8 unk16099;
|
||||
/*0x1609A*/ u8 unk1609a;
|
||||
/*0x1609B*/ u8 unk1609b;
|
||||
/*0x1609C*/ u8 unk1609C;
|
||||
/*0x1609B*/ u8 castformToChangeInto;
|
||||
/*0x1609C*/ u8 atk6C_statetracker;
|
||||
/*0x1609D*/ u8 unk1609D;
|
||||
/*0x1609E*/ u8 unk1609E;
|
||||
/*0x1609F*/ u8 unk1609F;
|
||||
/*0x160A0*/ u8 unk160a0;
|
||||
/*0x160A1*/ u8 AnimTargetsHit;
|
||||
/*0x160A1*/ u8 animTargetsHit;
|
||||
/*0x160A2*/ u8 expGetterBank;
|
||||
/*0x160A3*/ u8 unk160A3;
|
||||
/*0x160A4*/ u8 AnimArg1;
|
||||
/*0x160A5*/ u8 AnimArg2;
|
||||
/*0x160A4*/ u8 animArg1;
|
||||
/*0x160A5*/ u8 animArg2;
|
||||
/*0x160A6*/ u8 unk160A6;
|
||||
/*0x160A7*/ u8 unk160A7;
|
||||
/*0x160A8*/ u8 unk160A8;
|
||||
@ -335,12 +324,9 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x160B9*/ u8 unk160B9;
|
||||
/*0x160BA*/ u8 unk160Ba;
|
||||
/*0x160BB*/ u8 unk160Bb;
|
||||
/*0x160BC*/ u8 unk160BC;
|
||||
/*0x160BD*/ u8 unk160BD;
|
||||
/*0x160BE*/ u8 unk160BE;
|
||||
/*0x160BF*/ u8 unk160BF;
|
||||
/*0x160BC*/ u16 HP_OnSwitchout[2];
|
||||
/*0x160C0*/ u8 unk160C0;
|
||||
/*0x160C1*/ u8 unk160C1;
|
||||
/*0x160C1*/ u8 hpScale;
|
||||
/*0x160C2*/ u8 unk160C2;
|
||||
/*0x160C3*/ u8 unk160C3;
|
||||
/*0x160C4*/ u8 unk160C4;
|
||||
@ -349,57 +335,68 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x160C7*/ u8 unk160C7;
|
||||
/*0x160C8*/ u8 unk160C8;
|
||||
/*0x160C9*/ u8 unk160C9;
|
||||
/*0x160CA*/ u8 SynchroniseEffect;
|
||||
/*0x160CA*/ u8 synchroniseEffect;
|
||||
/*0x160CB*/ u8 linkPlayerIndex;
|
||||
/*0x160CC*/ u16 UsedHeldItems[4];
|
||||
/*0x160CC*/ u16 usedHeldItems[4];
|
||||
u8 filler2[0x72E];
|
||||
/* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2;
|
||||
};
|
||||
|
||||
struct DisableStruct
|
||||
{
|
||||
/*0x00*/ u8 filler0[0x3];
|
||||
/*0x04*/ u16 DisabledMove;
|
||||
/*0x06*/ u16 EncoredMove;
|
||||
/*0x08*/ u8 ProtectUses;
|
||||
/*0x09*/ u8 StockpileCounter;
|
||||
/*0x0A*/ u8 SubstituteHP;
|
||||
u8 fillerB[4];
|
||||
u8 unkF_0:4;
|
||||
u8 unkF_4:4;
|
||||
u8 filler10[3];
|
||||
/*0x13*/ u8 taunt:4;
|
||||
/*0x13*/ u8 unkC:4;
|
||||
/*0x14*/ u8 BankPreventingEscape;
|
||||
/*0x15*/ u8 BankWithSureHit;
|
||||
/*0x16*/ u8 IsFirstTurn;
|
||||
/*0x00*/ u32 unk0;
|
||||
/*0x04*/ u16 disabledMove;
|
||||
/*0x06*/ u16 encoredMove;
|
||||
/*0x08*/ u8 protectUses;
|
||||
/*0x09*/ u8 stockpileCounter;
|
||||
/*0x0A*/ u8 substituteHP;
|
||||
/*0x0B*/ u8 disableTimer1 : 4;
|
||||
/*0x0B*/ u8 disableTimer2 : 4;
|
||||
/*0x0C*/ u8 encoredMovePos;
|
||||
/*0x0D*/ u8 unkD;
|
||||
/*0x0E*/ u8 encoreTimer1 : 4;
|
||||
/*0x0E*/ u8 encoreTimer2 : 4;
|
||||
/*0x0F*/ u8 perishSong1 : 4;
|
||||
/*0x0F*/ u8 perishSong2 : 4;
|
||||
/*0x10*/ u8 furyCutterCounter;
|
||||
/*0x11*/ u8 rolloutTimer1 : 4;
|
||||
/*0x11*/ u8 rolloutTimer2 : 4;
|
||||
/*0x12*/ u8 chargeTimer1 : 4;
|
||||
/*0x12*/ u8 chargeTimer2 : 4;
|
||||
/*0x13*/ u8 tauntTimer1:4;
|
||||
/*0x13*/ u8 tauntTimer2:4;
|
||||
/*0x14*/ u8 bankPreventingEscape;
|
||||
/*0x15*/ u8 bankWithSureHit;
|
||||
/*0x16*/ u8 isFirstTurn;
|
||||
/*0x17*/ u8 unk17;
|
||||
/*0x18*/ u8 TruantCounter;
|
||||
/*0x19*/ u8 RechargeCounter;
|
||||
/*0x18*/ u8 truantCounter : 1;
|
||||
/*0x18*/ u8 unk18_a : 3;
|
||||
/*0x18*/ u8 unk18_b : 4;
|
||||
/*0x19*/ u8 rechargeCounter;
|
||||
/*0x1A*/ u8 unk1A[2];
|
||||
};
|
||||
|
||||
struct BattleResults
|
||||
{
|
||||
u8 PlayerFaintCounter; // 0x0
|
||||
u8 OpponentFaintCounter; // 0x1
|
||||
u8 playerFaintCounter; // 0x0
|
||||
u8 opponentFaintCounter; // 0x1
|
||||
u8 unk2; // 0x2
|
||||
u8 unk3; // 0x3
|
||||
u8 unk4; // 0x4
|
||||
u8 unk5_0:1; // 0x5
|
||||
u8 unk5_1:1; // 0x5
|
||||
u16 Poke1Species; // 0x6
|
||||
u8 PokeString1[10]; // 0x8
|
||||
u16 poke1Species; // 0x6
|
||||
u8 pokeString1[10]; // 0x8
|
||||
u8 unk12;
|
||||
u8 BattleTurnCounter; // 0x13
|
||||
u8 PokeString2[10]; // 0x14
|
||||
u8 battleTurnCounter; // 0x13
|
||||
u8 pokeString2[10]; // 0x14
|
||||
u8 filler1E[2];
|
||||
u16 LastOpponentSpecies; // 0x20
|
||||
u16 LastUsedMove; // 0x22
|
||||
u16 OpponentMove; // 0x24
|
||||
u16 OpponentSpecies; // 0x26
|
||||
u16 CaughtPoke; // 0x28
|
||||
u8 CaughtNick[10]; // 0x2A
|
||||
u16 lastOpponentSpecies; // 0x20
|
||||
u16 lastUsedMove; // 0x22
|
||||
u16 opponentMove; // 0x24
|
||||
u16 opponentSpecies; // 0x26
|
||||
u16 caughtPoke; // 0x28
|
||||
u8 caughtNick[10]; // 0x2A
|
||||
u8 filler34[2];
|
||||
u8 unk36[10];
|
||||
};
|
||||
@ -454,34 +451,34 @@ struct Struct20238C8
|
||||
struct ProtectStruct
|
||||
{
|
||||
/*field0*/
|
||||
u32 Protected:1;
|
||||
u32 Endured:1;
|
||||
u32 OnlyStruggle:1;
|
||||
u32 HelpingHand:1;
|
||||
u32 BounceMove:1;
|
||||
u32 StealMove:1;
|
||||
u32 Flag0Unknown:1;
|
||||
u32 PrlzImmobility:1;
|
||||
u32 protected:1;
|
||||
u32 endured:1;
|
||||
u32 onlyStruggle:1;
|
||||
u32 helpingHand:1;
|
||||
u32 bounceMove:1;
|
||||
u32 stealMove:1;
|
||||
u32 flag0Unknown:1;
|
||||
u32 prlzImmobility:1;
|
||||
/*field1*/
|
||||
u32 ConfusionSelfDmg:1;
|
||||
u32 NotEffective:1;
|
||||
u32 ChargingTurn:1;
|
||||
u32 FleeFlag:2; //for RunAway and Smoke Ball
|
||||
u32 UsedImprisionedMove:1;
|
||||
u32 LoveImmobility:1;
|
||||
u32 UsedDisabledMove:1;
|
||||
u32 confusionSelfDmg:1;
|
||||
u32 notEffective:1;
|
||||
u32 chargingTurn:1;
|
||||
u32 fleeFlag:2; //for RunAway and Smoke Ball
|
||||
u32 usedImprisionedMove:1;
|
||||
u32 loveImmobility:1;
|
||||
u32 usedDisabledMove:1;
|
||||
/*field2*/
|
||||
u32 UsedTauntedMove:1;
|
||||
u32 Flag2Unknown:1;
|
||||
u32 FlinchImmobility:1;
|
||||
u32 NotFirstStrike:1;
|
||||
u32 Free : 4;
|
||||
u32 usedTauntedMove:1;
|
||||
u32 flag2Unknown:1;
|
||||
u32 flinchImmobility:1;
|
||||
u32 notFirstStrike:1;
|
||||
u32 free : 4;
|
||||
/*field3*/
|
||||
u32 field3 : 8;
|
||||
u32 PhysicalDmg;
|
||||
u32 SpecialDmg;
|
||||
u8 PhysicalBank;
|
||||
u8 SpecialBank;
|
||||
u32 physicalDmg;
|
||||
u32 specialDmg;
|
||||
u8 physicalBank;
|
||||
u8 specialBank;
|
||||
u16 fieldE;
|
||||
};
|
||||
|
||||
@ -497,7 +494,7 @@ struct SpecialStatus
|
||||
u8 focusBanded : 1;
|
||||
u8 field1[3];
|
||||
u32 moveturnLostHP;
|
||||
u32 moveturnlostHP_physical;
|
||||
u32 moveturnLostHP_physical;
|
||||
u32 moveturnLostHP_special;
|
||||
u8 moveturnPhysicalBank;
|
||||
u8 moveturnSpecialBank;
|
||||
@ -507,18 +504,18 @@ struct SpecialStatus
|
||||
|
||||
struct sideTimer
|
||||
{
|
||||
u8 reflectTimer;
|
||||
u8 reflectBank;
|
||||
u8 lightscreenTimer;
|
||||
u8 lightscreenBank;
|
||||
u8 mistTimer;
|
||||
u8 mistBank;
|
||||
u8 safeguardTimer;
|
||||
u8 safeguardBank;
|
||||
u8 followmeTimer;
|
||||
u8 followmeTarget;
|
||||
u8 spikesAmount;
|
||||
u8 fieldB;
|
||||
u8 reflectTimer; //0x0
|
||||
u8 lightscreenTimer; //0x1
|
||||
u8 mistTimer; //0x2
|
||||
u8 field3; //0x3
|
||||
u8 field4; //0x4
|
||||
u8 field5; //0x5
|
||||
u8 spikesAmount; //0x6
|
||||
u8 safeguardTimer; //0x7
|
||||
u8 followmeTimer; //0x8
|
||||
u8 followmeTarget; //0x9
|
||||
u8 fieldA; //0xA
|
||||
u8 fieldB; //0xB
|
||||
};
|
||||
|
||||
struct WishFutureKnock
|
||||
@ -528,7 +525,7 @@ struct WishFutureKnock
|
||||
s32 futureSightDmg[MAX_BANKS_BATTLE];
|
||||
u16 futureSightMove[MAX_BANKS_BATTLE];
|
||||
u8 wishCounter[MAX_BANKS_BATTLE];
|
||||
u8 wishUserBank[MAX_BANKS_BATTLE];
|
||||
u8 wishUserID[MAX_BANKS_BATTLE];
|
||||
u8 weatherDuration;
|
||||
u8 knockedOffPokes[2];
|
||||
};
|
||||
@ -554,6 +551,58 @@ extern u8 ewram[];
|
||||
#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800))
|
||||
#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810))
|
||||
#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840))
|
||||
#define B_FUNCTION_STACK ((struct funcStack *)(0x02017140))
|
||||
|
||||
struct funcStack
|
||||
{
|
||||
void* ptr[8];
|
||||
u8 size;
|
||||
};
|
||||
|
||||
extern u8 gBattleTextBuff1[];
|
||||
|
||||
//function declarations of buffer emits
|
||||
void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0
|
||||
void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); //0x1
|
||||
void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
|
||||
void EmitSwitchInAnim(u8 a, u8 b, u8 c); //0x5
|
||||
void EmitReturnPokeToBall(u8 a, u8 b); //0x6
|
||||
void EmitTrainerSlide(u8 a); //0x8
|
||||
void EmitFaintAnimation(u8 a); //0xA
|
||||
void EmitBallThrowAnim(u8 a, u8 shakes); //0xD
|
||||
//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
|
||||
void EmitPrintString(u8 a, u16 stringID); //0x10
|
||||
//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11
|
||||
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16
|
||||
//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b
|
||||
//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19
|
||||
void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A
|
||||
void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
|
||||
void EmitStatusXor(u8 a, u8 b); //0x1C
|
||||
void EmitHitAnimation(u8 a); //0x29
|
||||
void EmitEffectivenessSound(u8 a, u16 sound); //0x2B
|
||||
void EmitPlaySound(u8 a, u16 sound); //0x2C
|
||||
void EmitFaintingCry(u8 a); //0x2D
|
||||
void EmitBattleIntroSlide(u8 a, u8 b); //0x2E
|
||||
void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); //0x30
|
||||
void dp01_build_cmdbuf_x31_31_31_31(u8 a); //0x31
|
||||
void EmitSpriteInvisibility(u8 a, u8 b); //0x33
|
||||
void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
|
||||
void EmitResetActionMoveSelection(u8 a, u8 b); //0x36
|
||||
void dp01_build_cmdbuf_x37_a(u8 a, u8 b); //0x37
|
||||
|
||||
#define REQUEST_ALL_BATTLE 0x0
|
||||
#define REQUEST_SPECIES_BATTLE 0x1
|
||||
#define REQUEST_HELDITEM_BATTLE 0x2
|
||||
#define REQUEST_MOVES_PP_BATTLE 0x3
|
||||
#define REQUEST_PPMOVE1_BATTLE 0x9
|
||||
#define REQUEST_PPMOVE2_BATTLE 0xA
|
||||
#define REQUEST_PPMOVE3_BATTLE 0xB
|
||||
#define REQUEST_PPMOVE4_BATTLE 0xC
|
||||
#define REQUEST_STATUS_BATTLE 0x28
|
||||
#define REQUEST_HP_BATTLE 0x2A
|
||||
|
||||
void MarkBufferBankForExecution(u8 bank);
|
||||
|
||||
// asm/battle_1.o
|
||||
void sub_800D6D4();
|
||||
@ -609,7 +658,6 @@ u8 b_first_side(u8, u8, u8);
|
||||
void TurnValuesCleanUp(u8);
|
||||
void SpecialStatusesClear(void);
|
||||
void sub_80138F0(void);
|
||||
void MarkBufferBankForExecution();
|
||||
void sub_80155A4();
|
||||
void CancelMultiTurnMoves(u8);
|
||||
void PrepareStringBattle();
|
||||
@ -623,11 +671,11 @@ u8 TurnBasedEffects();
|
||||
u8 sub_80170DC();
|
||||
u8 sub_80173A4();
|
||||
u8 AbilityBattleEffects(u8, u8, u8, u8, u16);
|
||||
u8 sub_801A02C();
|
||||
u8 ItemBattleEffects();
|
||||
|
||||
// asm/battle_4.o
|
||||
void AI_CalcDmg(u8, u8);
|
||||
void TypeCalc(u16, u8, u8);
|
||||
u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def);
|
||||
|
||||
// asm/battle_5.o
|
||||
void nullsub_91(void);
|
||||
@ -637,6 +685,7 @@ void c3_0802FDF4(u8);
|
||||
void sub_802E3E4(u8, int);
|
||||
void nullsub_8(u8);
|
||||
void sub_802E414(void);
|
||||
void sub_802E424(void);
|
||||
|
||||
// asm/battle_7.o
|
||||
void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d);
|
||||
|
@ -274,7 +274,7 @@ extern const u8 *const gUnknown_083EC5E4[];
|
||||
extern const u8 *const gUnknown_083EC624[];
|
||||
extern u8 gUnknown_020388F7[];
|
||||
extern const struct MenuAction2 gUnknown_083EC604[];
|
||||
extern const struct MenuAction3 gUnknown_083EC634[];
|
||||
extern const struct YesNoFuncTable gUnknown_083EC634[];
|
||||
extern const u8 gUnknown_083EC65A[];
|
||||
extern const u8 gUnknown_083EC97C[];
|
||||
extern const u8 gUnknown_083EC984[];
|
||||
|
@ -11,6 +11,8 @@ struct CameraSomething
|
||||
s32 unk14;
|
||||
};
|
||||
|
||||
extern struct Camera gUnknown_0202E844;
|
||||
|
||||
void move_tilemap_camera_to_upper_left_corner(void);
|
||||
void sub_8057A58(void);
|
||||
void sub_8057B14(u16 *a, u16 *b);
|
||||
|
@ -26,5 +26,6 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y);
|
||||
void sub_8127ED0(u8, u8);
|
||||
void sub_8127F28(u8, u8, s16);
|
||||
u8 sub_8128124(u8 id);
|
||||
void ash(s16, s16, u16, u8);
|
||||
|
||||
#endif // GUARD_FIELD_EFFECT_HELPERS_H
|
||||
|
@ -8,6 +8,6 @@ void Task_Truck2(u8 taskId);
|
||||
void Task_Truck3(u8 taskId);
|
||||
void Task_HandleTruckSequence(u8 taskId);
|
||||
void ExecuteTruckSequence(void);
|
||||
void EndTruckSequence(void);
|
||||
void EndTruckSequence(u8);
|
||||
|
||||
#endif // GUARD_FIELD_SPECIAL_SCENE_H
|
||||
|
@ -1,6 +1,12 @@
|
||||
#ifndef GUARD_FIELD_TASKS_H
|
||||
#define GUARD_FIELD_TASKS_H
|
||||
|
||||
struct MetatileOffset {
|
||||
s8 x;
|
||||
s8 y;
|
||||
u16 tileId;
|
||||
};
|
||||
|
||||
void SetUpFieldTasks();
|
||||
void ActivatePerStepCallback(u8);
|
||||
void ResetFieldTasksArgs(void);
|
||||
|
@ -43,6 +43,17 @@ fndec\
|
||||
#define min(a, b) (a >= b ? a : b)
|
||||
#define max(a, b) (a <= b ? a : b)
|
||||
|
||||
// why does GF hate 2d arrays
|
||||
#define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y))
|
||||
|
||||
// dim access enums
|
||||
enum
|
||||
{
|
||||
B_8 = 1,
|
||||
B_16 = 2,
|
||||
B_32 = 4
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
VERSION_SAPPHIRE = 1,
|
||||
|
@ -2435,4 +2435,12 @@ extern const u8 gMonFrontPic_UnownQuestionMark[];
|
||||
extern const u8 gMonBackPic_UnownQuestionMark[];
|
||||
extern const u8 gMonIcon_UnownQuestionMark[];
|
||||
|
||||
// src/pokeblock.c
|
||||
extern const u8 gMenuPokeblock_Gfx[];
|
||||
extern const u8 gMenuPokeblock_Tilemap[];
|
||||
extern const u8 gMenuPokeblock_Pal[];
|
||||
|
||||
extern const u8 gMenuPokeblockDevice_Gfx[];
|
||||
extern const u8 gMenuPokeblockDevice_Pal[];
|
||||
|
||||
#endif // GUARD_GRAPHICS_H
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_ITEM_USE_H
|
||||
#define GUARD_ITEM_USE_H
|
||||
|
||||
extern u16 gScriptItemId;
|
||||
|
||||
void ItemUseOnFieldCB_Bike(u8);
|
||||
void ItemUseOnFieldCB_Rod(u8);
|
||||
void ItemUseOnFieldCB_Itemfinder(u8);
|
||||
|
@ -46,8 +46,8 @@ struct Main
|
||||
extern u8 gLinkTransferringData;
|
||||
extern struct Main gMain;
|
||||
extern bool8 gSoftResetDisabled;
|
||||
extern bool8 gLinkVSyncDisabled;
|
||||
|
||||
extern bool8 gLinkVSyncDisabled;
|
||||
extern const u8 gGameVersion;
|
||||
extern const u8 gGameLanguage;
|
||||
|
||||
|
@ -15,12 +15,6 @@ struct MenuAction2
|
||||
void (*func)(u8);
|
||||
};
|
||||
|
||||
struct MenuAction3
|
||||
{
|
||||
void (*func1)(u8);
|
||||
void (*func2)(u8);
|
||||
};
|
||||
|
||||
extern const struct MenuAction gMenuYesNoItems[];
|
||||
|
||||
extern struct Window gMenuWindow;
|
||||
@ -65,7 +59,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32);
|
||||
s8 sub_80727CC(void);
|
||||
u8 sub_807288C(u8);
|
||||
void PrintMenuItems(u8, u8, u8, const struct MenuAction[]);
|
||||
void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], u8*);
|
||||
void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*);
|
||||
void InitYesNoMenu(u8, u8, u8);
|
||||
void DisplayYesNoMenu(u8, u8, u32);
|
||||
s8 ProcessMenuInputNoWrap_(void);
|
||||
|
@ -24,5 +24,7 @@ void BuyMenuFreeMemory(void);
|
||||
void sub_80F98DC(int);
|
||||
void sub_80F996C(u8);
|
||||
void LoadScrollIndicatorPalette(void);
|
||||
void sub_80F98A4(u8);
|
||||
void StartVerticalScrollIndicators(u8);
|
||||
|
||||
#endif // GUARD_MENU_HELPERS_H
|
||||
|
@ -43,10 +43,14 @@ struct Struct201B000
|
||||
u8 unk259;
|
||||
u8 filler25A[6];
|
||||
u8 unk260;
|
||||
u8 filler261[1];
|
||||
u8 unk261;
|
||||
u8 unk262;
|
||||
s16 unk264;
|
||||
s16 unk266;
|
||||
u8 filler268[10];
|
||||
u16 unk272;
|
||||
u8 filler274[14];
|
||||
u16 unk282;
|
||||
};
|
||||
|
||||
extern u8 ewram[];
|
||||
|
@ -1,10 +1,6 @@
|
||||
#ifndef GUARD_PLAYER_PC_H
|
||||
#define GUARD_PLAYER_PC_H
|
||||
|
||||
// general task defines
|
||||
#define TASK gTasks[taskId]
|
||||
#define FUNC func
|
||||
|
||||
// local task defines
|
||||
#define PAGE_INDEX data[0]
|
||||
#define ITEMS_ABOVE_TOP data[1]
|
||||
|
@ -1,11 +1,35 @@
|
||||
#ifndef GUARD_POKEBLOCK_H
|
||||
#define GUARD_POKEBLOCK_H
|
||||
|
||||
struct YesNoCBTable {
|
||||
void (*yesFunc)(void);
|
||||
void (*noFunc)(void);
|
||||
};
|
||||
|
||||
enum {
|
||||
PBLOCK_CLR_BLACK,
|
||||
PBLOCK_CLR_RED,
|
||||
PBLOCK_CLR_BLUE,
|
||||
PBLOCK_CLR_PINK,
|
||||
PBLOCK_CLR_GREEN,
|
||||
PBLOCK_CLR_YELLOW
|
||||
};
|
||||
|
||||
extern u8 ewram[];
|
||||
extern u8 gUnknown_02039244;
|
||||
extern u8 gUnknown_02039248[4];
|
||||
extern u8 gUnknown_0203924C;
|
||||
extern const u8 *gUnknown_03000758;
|
||||
|
||||
void sub_810B96C(void);
|
||||
u8 sub_810BA50(s16, s16, u8);
|
||||
u8 sub_810C9B0(struct Pokeblock *);
|
||||
s16 sub_810CA9C(const struct Pokeblock *, u8);
|
||||
u8 sub_810C9E8(struct Pokeblock *);
|
||||
void sub_810BA7C(u8);
|
||||
void ClearPokeblocks(void);
|
||||
void sub_810CA6C(s32);
|
||||
bool8 sub_810CA6C(u8);
|
||||
s16 sub_810CAE4(u8, const struct Pokeblock *);
|
||||
u8 sub_810CB68(u8, u8*);
|
||||
s16 sub_810CAE4(u8, struct Pokeblock *);
|
||||
|
||||
#endif // GUARD_POKEBLOCK_H
|
||||
|
10
include/pokeblock_feed.h
Normal file
10
include/pokeblock_feed.h
Normal file
@ -0,0 +1,10 @@
|
||||
//
|
||||
// Created by Scott Norton on 6/28/17.
|
||||
//
|
||||
|
||||
#ifndef POKERUBY_POKEBLOCK_FEED_H
|
||||
#define POKERUBY_POKEBLOCK_FEED_H
|
||||
|
||||
void sub_8147ADC(void);
|
||||
|
||||
#endif //POKERUBY_POKEBLOCK_FEED_H
|
@ -392,9 +392,14 @@ struct BattleMove
|
||||
u8 secondaryEffectChance;
|
||||
u8 target;
|
||||
u8 priority;
|
||||
u32 flags;
|
||||
u8 flags;
|
||||
u8 pad[3];
|
||||
};
|
||||
|
||||
#define FLAG_PROTECT_AFFECTED 0x2
|
||||
#define FLAG_MAGICCOAT_AFFECTED 0x4
|
||||
#define FLAG_SNATCH_AFFECTED 0x8
|
||||
|
||||
struct PokemonStorage
|
||||
{
|
||||
/*0x00*/ u8 currentBox;
|
||||
@ -574,6 +579,7 @@ void sub_8040B8C(void);
|
||||
void SetWildMonHeldItem(void);
|
||||
u8 *sub_8040D08();
|
||||
bool32 sub_8040D3C(u16 species, u8 *name, u8 language);
|
||||
s8 sub_8040A54(struct Pokemon *, u8);
|
||||
u16 GetMonEVCount(struct Pokemon *);
|
||||
|
||||
#endif // GUARD_POKEMON_H
|
||||
|
@ -6,14 +6,96 @@ struct UnkPokenavStruct_Sub {
|
||||
/*0x2*/ u8 filler2[6];
|
||||
};
|
||||
|
||||
struct UnkPokenavStruct {
|
||||
/*0x0000*/ u8 filler0000[0xCEE8];
|
||||
/*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
|
||||
/*0xD158*/ u16 unkD158;
|
||||
struct UnkPokenavStruct_Sub1 {
|
||||
/*0x00*/ void (*unk0)(void);
|
||||
/*0x04*/ MainCallback callback;
|
||||
/*0x08*/ struct Pokeblock *pokeblock;
|
||||
/*0x0C*/ struct Pokemon *pokemon;
|
||||
/*0x10*/ u8 stringBuffer[0x40];
|
||||
/*0x50*/ u8 unk50;
|
||||
/*0x51*/ u8 unk51;
|
||||
/*0x52*/ u8 unk52;
|
||||
/*0x53*/ u8 unk53;
|
||||
/*0x54*/ u8 unk54;
|
||||
/*0x55*/ u8 unk55;
|
||||
/*0x56*/ u8 unk56;
|
||||
/*0x57*/ u8 unk57[5];
|
||||
/*0x5c*/ u8 unk5c[5];
|
||||
/*0x61*/ u8 unk61[5];
|
||||
/*0x66*/ s16 unk66[5];
|
||||
};
|
||||
|
||||
extern struct UnkPokenavStruct *gUnknown_083DFEC4;
|
||||
struct UnkPokenavStruct_Sub2 {
|
||||
/*0x00*/ u8 filler_00[0x26];
|
||||
/*0x26*/ u16 unk26;
|
||||
};
|
||||
|
||||
struct UnkUsePokeblockSub {
|
||||
/*0*/ u8 fil0[2];
|
||||
/*2*/ u8 partyIdx:5;
|
||||
};
|
||||
|
||||
struct UnkPokenavStruct {
|
||||
/*0x0000*/ u8 filler0000[0x30c];
|
||||
/*0x0000*/ u16 unk030C;
|
||||
/*0x0000*/ u8 filler030E[0x6a9e];
|
||||
/*0x6DAC*/ u8 unk6DAC;
|
||||
/*0x6DAD*/ u8 filler6DAD[0x8fd];
|
||||
/*0x76AA*/ u8 unk76AA;
|
||||
/*0x76AB*/ u8 filler76AB[0x10bd];
|
||||
/*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768;
|
||||
/*0x876C*/ u8 filler876C[0x6e];
|
||||
/*0x87DA*/ s16 unk87DA;
|
||||
/*0x87DC*/ s16 unk87DC;
|
||||
/*0x87DE*/ s16 unk87DE;
|
||||
/*0x87E0*/ void *unk87E0;
|
||||
/*0x87E4*/ u8 filler87E4[0x44];
|
||||
/*0x8828*/ u8 unk8828;
|
||||
/*0x8829*/ u8 filler8829[0x113];
|
||||
/*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab];
|
||||
/*0x8fe8*/ u8 fil8fe8[1];
|
||||
/*0x8fe9*/ s8 unk8fe9;
|
||||
/*0x8fea*/ u8 fil8fea[6];
|
||||
/*0x8ff0*/ u8 unk8ff0;
|
||||
/*0x8ff1*/ u8 filler8ff1[0x13];
|
||||
/*0x9004*/ u8 unk9004[3][20];
|
||||
/*0x9040*/ u8 unk9040[0x304];
|
||||
/*0x9344*/ u8 unk9344;
|
||||
/*0x9345*/ u8 filler9345[0x3ba3];
|
||||
/*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78];
|
||||
/*0xD158*/ u16 unkD158;
|
||||
/*0xD15A*/ u8 fillerD15A[6];
|
||||
/*0xD162*/ u16 unkD160;
|
||||
/*0xD162*/ u8 unkD162[2];
|
||||
/*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164;
|
||||
};
|
||||
|
||||
extern struct UnkPokenavStruct *const gUnknown_083DFEC4;
|
||||
|
||||
bool8 sub_80F170C(void);
|
||||
bool8 sub_80F1778(void);
|
||||
void sub_80F1934(void);
|
||||
void sub_80F2C80(u8);
|
||||
void sub_80F2688(void);
|
||||
bool8 sub_80F26BC(void);
|
||||
bool8 sub_80F2CBC(u8);
|
||||
void sub_80F2E18(u8);
|
||||
void sub_80F33A8(void);
|
||||
void sub_80F3C94(void);
|
||||
void sub_80F3D00(void);
|
||||
void sub_80F4BD0(void);
|
||||
void sub_80F556C(void *);
|
||||
void sub_80F567C(void *, void *);
|
||||
void sub_80F5B38(void);
|
||||
bool8 sub_80F5B50(void);
|
||||
void sub_80F5CDC(u8);
|
||||
void sub_80EBA5C(void);
|
||||
void sub_80F5060(bool8);
|
||||
void move_anim_execute(void);
|
||||
bool8 gpu_sync_bg_show(void);
|
||||
void sub_80F5550(void *, void *);
|
||||
bool8 sub_80F555C(void);
|
||||
void sub_80F7224(u8);
|
||||
void sub_80F5BDC(void);
|
||||
|
||||
#endif // GUARD_POKENAV_H
|
||||
|
@ -14,23 +14,22 @@ void sub_800C35C(void);
|
||||
void sub_800C47C(u8);
|
||||
void EmitGetAttributes(u8 a, u8 b, u8 c);
|
||||
void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c);
|
||||
void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e);
|
||||
void dp01_build_cmdbuf_x04_4_4_4(u8 a);
|
||||
void sub_800C704(u8, u8, u8);
|
||||
void dp01_build_cmdbuf_x06_a(u8 a, u8 b);
|
||||
void EmitSwitchInAnim(u8, u8, u8);
|
||||
void EmitReturnPokeToBall(u8 a, u8 b);
|
||||
void dp01_build_cmdbuf_x07_7_7_7(u8 a);
|
||||
void dp01_build_cmdbuf_x08_8_8_8(u8 a);
|
||||
void EmitTrainerSlide(u8 a);
|
||||
void dp01_build_cmdbuf_x09_9_9_9(u8 a);
|
||||
void EmitFaintAnimation(u8 a);
|
||||
void dp01_build_cmdbuf_x0B_B_B_B(u8 a);
|
||||
void dp01_build_cmdbuf_x0C_C_C_C(u8 a);
|
||||
void dp01_build_cmdbuf_x0D_a(u8 a, u8 b);
|
||||
void EmitBallThrowAnim(u8 a, u8 b);
|
||||
void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g);
|
||||
void EmitPrintString(u8 a, u16 b);
|
||||
void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
|
||||
void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d);
|
||||
void sub_800CBE0(u8 a, u8 *b);
|
||||
void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e);
|
||||
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
|
||||
void dp01_build_cmdbuf_x17_17_17_17(u8 a);
|
||||
void EmitHealthBarUpdate(u8 a, s16 b);
|
||||
void EmitExpBarUpdate(u8 a, u8 b, s16 c);
|
||||
@ -49,7 +48,7 @@ void dp01_build_cmdbuf_x28_28_28_28(u8 a);
|
||||
void EmitHitAnimation(u8 a);
|
||||
void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a);
|
||||
void EmitEffectivenessSound(u8 a, u16 b);
|
||||
void sub_800D074(u8 a, u16 b);
|
||||
void EmitPlaySound(u8 a, u16 b);
|
||||
void EmitFaintingCry(u8 a);
|
||||
void EmitBattleIntroSlide(u8 a, u8 b);
|
||||
void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
|
||||
|
@ -23,6 +23,7 @@ struct UCoords32
|
||||
};
|
||||
|
||||
extern struct UCoords32 gUnknown_0821664C[];
|
||||
extern void (*gFieldCallback)(void);
|
||||
|
||||
// sub_8052F5C
|
||||
void flag_var_implications_of_teleport_(void);
|
||||
@ -102,7 +103,7 @@ void sub_8053FB0(u16);
|
||||
// sub_8054034
|
||||
// sub_8054044
|
||||
// sub_8054050
|
||||
// sub_80540D0
|
||||
void sub_80540D0(s16 *, u16 *);
|
||||
void sub_8054164(void);
|
||||
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
|
||||
// get_map_light_level_from_warp
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define GUARD_ROTATING_GATE_H
|
||||
|
||||
void RotatingGatePuzzleCameraUpdate(s16, s16);
|
||||
void sub_80C8080();
|
||||
void RotatingGate_InitPuzzleAndGraphics();
|
||||
u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16);
|
||||
|
||||
#endif // GUARD_ROTATING_GATE_H
|
||||
|
@ -10,6 +10,7 @@ u8 sub_80BC050();
|
||||
void sub_80BC300();
|
||||
const u8 sub_80BCCA4(u8);
|
||||
u8 *sub_80BCCE8(void);
|
||||
void sub_80BCF1C(u8);
|
||||
void sub_80BD674(void *, u32, u8);
|
||||
|
||||
#endif // GUARD_SECRET_BASE_H
|
||||
|
@ -1,6 +1,10 @@
|
||||
#ifndef GUARD_TASK_H
|
||||
#define GUARD_TASK_H
|
||||
|
||||
// general task defines
|
||||
#define TASK gTasks[taskId]
|
||||
#define FUNC func
|
||||
|
||||
typedef void (*TaskFunc)(u8 taskId);
|
||||
|
||||
struct Task
|
||||
|
@ -6,6 +6,7 @@
|
||||
#define CHAR_QUESTION_MARK 0xAC
|
||||
#define CHAR_PERIOD 0xAD
|
||||
#define CHAR_HYPHEN 0xAE
|
||||
#define CHAR_ELLIPSIS 0xB0
|
||||
#define CHAR_MALE 0xB5
|
||||
#define CHAR_FEMALE 0xB6
|
||||
#define CHAR_COMMA 0xB8
|
||||
|
13
include/use_pokeblock.h
Normal file
13
include/use_pokeblock.h
Normal file
@ -0,0 +1,13 @@
|
||||
//
|
||||
// Created by Scott Norton on 5/31/17.
|
||||
//
|
||||
|
||||
#ifndef POKERUBY_USE_POKEBLOCK_H
|
||||
#define POKERUBY_USE_POKEBLOCK_H
|
||||
|
||||
extern void *gUnknown_02030400;
|
||||
extern s16 gUnknown_02039312;
|
||||
|
||||
void sub_8136130(struct Pokeblock *, MainCallback);
|
||||
|
||||
#endif //POKERUBY_USE_POKEBLOCK_H
|
@ -1,7 +1,16 @@
|
||||
#ifndef GUARD_VARS_H
|
||||
#define GUARD_VARS_H
|
||||
|
||||
#define VAR_0x4001 0x4001
|
||||
#define VAR_0x4002 0x4002
|
||||
#define VAR_0x4003 0x4003
|
||||
#define VAR_0x4004 0x4004
|
||||
#define VAR_0x4005 0x4005
|
||||
#define VAR_0x4006 0x4006
|
||||
#define VAR_0x4007 0x4007
|
||||
#define VAR_0x4008 0x4008
|
||||
#define VAR_0x4009 0x4009
|
||||
#define VAR_0x400A 0x400A
|
||||
#define VAR_0x401F 0x401F
|
||||
#define VAR_RECYCLE_GOODS 0x4020
|
||||
#define VAR_REPEL_STEP_COUNT 0x4021
|
||||
|
@ -54,7 +54,7 @@ SECTIONS {
|
||||
src/battle_2.o(.text);
|
||||
asm/battle_2.o(.text);
|
||||
asm/battle_3.o(.text);
|
||||
asm/battle_4.o(.text);
|
||||
src/battle_4.o(.text);
|
||||
asm/battle_5.o(.text);
|
||||
src/battle_6.o(.text);
|
||||
src/battle_7.o(.text);
|
||||
@ -107,7 +107,7 @@ SECTIONS {
|
||||
src/field_control_avatar.o(.text);
|
||||
src/event_data.o(.text);
|
||||
src/coord_event_weather.o(.text);
|
||||
asm/field_tasks.o(.text);
|
||||
src/field_tasks.o(.text);
|
||||
src/clock.o(.text);
|
||||
asm/reset_rtc_screen.o(.text);
|
||||
asm/party_menu.o(.text);
|
||||
@ -169,7 +169,7 @@ SECTIONS {
|
||||
asm/contest_effect.o(.text);
|
||||
src/record_mixing.o(.text);
|
||||
asm/record_mixing.o(.text);
|
||||
asm/sound_check_menu.o(.text);
|
||||
src/sound_check_menu.o(.text);
|
||||
src/secret_base.o(.text);
|
||||
asm/secret_base.o(.text_80BC1D0);
|
||||
src/tv.o(.text);
|
||||
@ -179,7 +179,7 @@ SECTIONS {
|
||||
src/pokemon_size_record.o(.text);
|
||||
asm/fldeff_80C5CD4.o(.text);
|
||||
src/field_special_scene.o(.text);
|
||||
asm/rotating_gate.o(.text);
|
||||
src/rotating_gate.o(.text);
|
||||
src/safari_zone.o(.text);
|
||||
asm/contest_link_80C857C.o(.text);
|
||||
src/contest_link_80C857C.o(.text);
|
||||
@ -212,7 +212,7 @@ SECTIONS {
|
||||
src/starter_choose.o(.text);
|
||||
src/wallclock.o(.text);
|
||||
src/rom6.o(.text);
|
||||
asm/pokeblock.o(.text);
|
||||
src/pokeblock.o(.text);
|
||||
asm/fldeff_flash.o(.text);
|
||||
src/post_battle_event_funcs.o(.text);
|
||||
src/time_events.o(.text);
|
||||
@ -254,7 +254,7 @@ SECTIONS {
|
||||
src/decoration_inventory.o(.text);
|
||||
src/roamer.o(.text);
|
||||
asm/battle_tower.o(.text);
|
||||
asm/use_pokeblock.o(.text);
|
||||
src/use_pokeblock.o(.text);
|
||||
src/battle_anim_8137220.o(.text);
|
||||
src/player_pc.o(.text);
|
||||
src/intro.o(.text);
|
||||
@ -334,7 +334,9 @@ SECTIONS {
|
||||
src/link.o(.rodata);
|
||||
src/rtc.o(.rodata);
|
||||
data/main_menu.o(.rodata);
|
||||
data/data2.o(.rodata);
|
||||
data/data2a.o(.rodata);
|
||||
src/battle_4.o(.rodata);
|
||||
data/data2b.o(.rodata);
|
||||
src/pokemon_data.o(.rodata);
|
||||
. = ALIGN(4);
|
||||
src/trig.o(.rodata);
|
||||
@ -361,7 +363,7 @@ SECTIONS {
|
||||
src/script.o(.rodata);
|
||||
src/scrcmd.o(.rodata);
|
||||
src/coord_event_weather.o(.rodata);
|
||||
data/field_tasks.o(.rodata);
|
||||
src/field_tasks.o(.rodata);
|
||||
data/reset_rtc_screen.o(.rodata);
|
||||
data/party_menu.o(.rodata);
|
||||
src/start_menu.o(.rodata);
|
||||
@ -409,7 +411,7 @@ SECTIONS {
|
||||
data/money.o(.rodata);
|
||||
data/contest_effect.o(.rodata);
|
||||
data/record_mixing.o(.rodata);
|
||||
data/sound_check_menu.o(.rodata);
|
||||
src/sound_check_menu.o(.rodata);
|
||||
data/secret_base.o(.rodata);
|
||||
data/tv.o(.rodata);
|
||||
data/contest_link_80C2020.o(.rodata);
|
||||
@ -417,7 +419,7 @@ SECTIONS {
|
||||
data/fldeff_80C5CD4.o(.rodata);
|
||||
src/field_special_scene.o(.rodata);
|
||||
data/field_special_scene.o(.rodata);
|
||||
data/rotating_gate.o(.rodata);
|
||||
src/rotating_gate.o(.rodata);
|
||||
src/item_use.o(.rodata);
|
||||
data/battle_anim_80CA710.o(.rodata);
|
||||
src/bike.o(.rodata);
|
||||
@ -437,7 +439,7 @@ SECTIONS {
|
||||
data/trader.o(.rodata);
|
||||
src/starter_choose.o(.rodata);
|
||||
src/wallclock.o(.rodata);
|
||||
data/pokeblock.o(.rodata);
|
||||
src/pokeblock.o(.rodata);
|
||||
data/fldeff_flash.o(.rodata);
|
||||
src/time_events.o(.rodata);
|
||||
src/field_specials.o(.rodata);
|
||||
@ -460,7 +462,7 @@ SECTIONS {
|
||||
src/decoration_inventory.o(.rodata);
|
||||
src/roamer.o(.rodata);
|
||||
data/battle_tower.o(.rodata);
|
||||
data/use_pokeblock.o(.rodata);
|
||||
src/use_pokeblock.o(.rodata);
|
||||
data/battle_anim_8137220.o(.rodata);
|
||||
src/player_pc.o(.rodata);
|
||||
src/intro.o(.rodata);
|
||||
|
@ -1584,7 +1584,7 @@ void sub_8010874(void)
|
||||
for (j = 0; j < (u32)0x1C; j++)
|
||||
r4[j] = 0;
|
||||
|
||||
gDisableStructs[i].IsFirstTurn = 2;
|
||||
gDisableStructs[i].isFirstTurn= 2;
|
||||
gUnknown_02024C70[i] = 0;
|
||||
gLastUsedMove[i] = 0;
|
||||
gMoveHitWith[i] = 0;
|
||||
@ -1655,25 +1655,25 @@ void sub_8010874(void)
|
||||
ewram16113 = 0;
|
||||
for (i = 0; i < 11; i++)
|
||||
gBattleResults.unk36[i] = 0;
|
||||
gBattleResults.BattleTurnCounter = 0;
|
||||
gBattleResults.PlayerFaintCounter = 0;
|
||||
gBattleResults.OpponentFaintCounter = 0;
|
||||
gBattleResults.battleTurnCounter = 0;
|
||||
gBattleResults.playerFaintCounter = 0;
|
||||
gBattleResults.opponentFaintCounter = 0;
|
||||
gBattleResults.unk2 = 0;
|
||||
gBattleResults.unk3 = 0;
|
||||
gBattleResults.unk4 = 0;
|
||||
gBattleResults.unk5_0 = 0;
|
||||
gBattleResults.unk5_1 = 0;
|
||||
gBattleResults.LastOpponentSpecies = 0;
|
||||
gBattleResults.LastUsedMove = 0;
|
||||
gBattleResults.OpponentMove = 0;
|
||||
gBattleResults.Poke1Species = 0;
|
||||
gBattleResults.OpponentSpecies = 0;
|
||||
gBattleResults.CaughtPoke = 0;
|
||||
gBattleResults.lastOpponentSpecies = 0;
|
||||
gBattleResults.lastUsedMove = 0;
|
||||
gBattleResults.opponentMove = 0;
|
||||
gBattleResults.poke1Species = 0;
|
||||
gBattleResults.opponentSpecies = 0;
|
||||
gBattleResults.caughtPoke = 0;
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
gBattleResults.PokeString1[i] = 0;
|
||||
gBattleResults.PokeString2[i] = 0;
|
||||
gBattleResults.CaughtNick[i] = 0;
|
||||
gBattleResults.pokeString1[i] = 0;
|
||||
gBattleResults.pokeString2[i] = 0;
|
||||
gBattleResults.caughtNick[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1692,25 +1692,25 @@ void SwitchInClearStructs(void)
|
||||
{
|
||||
struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i];
|
||||
|
||||
if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].BankPreventingEscape == gActiveBank)
|
||||
if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
|
||||
sp20->unk0 &= ~0x04000000;
|
||||
if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].BankWithSureHit == gActiveBank)
|
||||
if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank)
|
||||
{
|
||||
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
|
||||
gDisableStructs[i].BankWithSureHit = 0;
|
||||
gDisableStructs[i].bankWithSureHit = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
|
||||
{
|
||||
gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
|
||||
gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
|
||||
gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
|
||||
|
||||
for (i = 0; i < gNoOfAllBanks; i++)
|
||||
{
|
||||
if (GetBankSide(gActiveBank) != GetBankSide(i)
|
||||
&& (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0
|
||||
&& (gDisableStructs[i].BankWithSureHit == gActiveBank))
|
||||
&& (gDisableStructs[i].bankWithSureHit == gActiveBank))
|
||||
{
|
||||
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
|
||||
gStatuses3[i] |= 0x10;
|
||||
@ -1740,13 +1740,13 @@ void SwitchInClearStructs(void)
|
||||
|
||||
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
|
||||
{
|
||||
gDisableStructs[gActiveBank].SubstituteHP = sp0.SubstituteHP;
|
||||
gDisableStructs[gActiveBank].BankWithSureHit = sp0.BankWithSureHit;
|
||||
gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0;
|
||||
gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4;
|
||||
gDisableStructs[gActiveBank].substituteHP = sp0.substituteHP;
|
||||
gDisableStructs[gActiveBank].bankWithSureHit = sp0.bankWithSureHit;
|
||||
gDisableStructs[gActiveBank].perishSong1 = sp0.perishSong1;
|
||||
gDisableStructs[gActiveBank].perishSong2 = sp0.perishSong2;
|
||||
}
|
||||
|
||||
gDisableStructs[gActiveBank].IsFirstTurn = 2;
|
||||
gDisableStructs[gActiveBank].isFirstTurn= 2;
|
||||
gLastUsedMove[gActiveBank] = 0;
|
||||
gMoveHitWith[gActiveBank] = 0;
|
||||
gUnknown_02024C44[gActiveBank] = 0;
|
||||
@ -1781,7 +1781,7 @@ void UndoEffectsAfterFainting(void)
|
||||
gStatuses3[gActiveBank] = 0;
|
||||
for (i = 0; i < gNoOfAllBanks; i++)
|
||||
{
|
||||
if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].BankPreventingEscape == gActiveBank)
|
||||
if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
|
||||
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
|
||||
if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16))
|
||||
gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16);
|
||||
@ -1794,27 +1794,27 @@ void UndoEffectsAfterFainting(void)
|
||||
ptr = (u8 *)&gDisableStructs[gActiveBank];
|
||||
for (i = 0; i < (u32)0x1C; i++)
|
||||
ptr[i] = 0;
|
||||
gProtectStructs[gActiveBank].Protected = 0;
|
||||
gProtectStructs[gActiveBank].Endured = 0;
|
||||
gProtectStructs[gActiveBank].OnlyStruggle = 0;
|
||||
gProtectStructs[gActiveBank].HelpingHand = 0;
|
||||
gProtectStructs[gActiveBank].BounceMove = 0;
|
||||
gProtectStructs[gActiveBank].StealMove = 0;
|
||||
gProtectStructs[gActiveBank].Flag0Unknown = 0;
|
||||
gProtectStructs[gActiveBank].PrlzImmobility = 0;
|
||||
gProtectStructs[gActiveBank].ConfusionSelfDmg = 0;
|
||||
gProtectStructs[gActiveBank].NotEffective = 0;
|
||||
gProtectStructs[gActiveBank].ChargingTurn = 0;
|
||||
gProtectStructs[gActiveBank].FleeFlag = 0;
|
||||
gProtectStructs[gActiveBank].UsedImprisionedMove = 0;
|
||||
gProtectStructs[gActiveBank].LoveImmobility = 0;
|
||||
gProtectStructs[gActiveBank].UsedDisabledMove = 0;
|
||||
gProtectStructs[gActiveBank].UsedTauntedMove = 0;
|
||||
gProtectStructs[gActiveBank].Flag2Unknown = 0;
|
||||
gProtectStructs[gActiveBank].FlinchImmobility = 0;
|
||||
gProtectStructs[gActiveBank].NotFirstStrike = 0;
|
||||
gProtectStructs[gActiveBank].protected = 0;
|
||||
gProtectStructs[gActiveBank].endured = 0;
|
||||
gProtectStructs[gActiveBank].onlyStruggle = 0;
|
||||
gProtectStructs[gActiveBank].helpingHand = 0;
|
||||
gProtectStructs[gActiveBank].bounceMove = 0;
|
||||
gProtectStructs[gActiveBank].stealMove = 0;
|
||||
gProtectStructs[gActiveBank].flag0Unknown = 0;
|
||||
gProtectStructs[gActiveBank].prlzImmobility = 0;
|
||||
gProtectStructs[gActiveBank].confusionSelfDmg = 0;
|
||||
gProtectStructs[gActiveBank].notEffective = 0;
|
||||
gProtectStructs[gActiveBank].chargingTurn = 0;
|
||||
gProtectStructs[gActiveBank].fleeFlag = 0;
|
||||
gProtectStructs[gActiveBank].usedImprisionedMove = 0;
|
||||
gProtectStructs[gActiveBank].loveImmobility = 0;
|
||||
gProtectStructs[gActiveBank].usedDisabledMove = 0;
|
||||
gProtectStructs[gActiveBank].usedTauntedMove = 0;
|
||||
gProtectStructs[gActiveBank].flag2Unknown = 0;
|
||||
gProtectStructs[gActiveBank].flinchImmobility = 0;
|
||||
gProtectStructs[gActiveBank].notFirstStrike = 0;
|
||||
|
||||
gDisableStructs[gActiveBank].IsFirstTurn = 2;
|
||||
gDisableStructs[gActiveBank].isFirstTurn= 2;
|
||||
gLastUsedMove[gActiveBank] = 0;
|
||||
gMoveHitWith[gActiveBank] = 0;
|
||||
gUnknown_02024C44[gActiveBank] = 0;
|
||||
@ -2140,7 +2140,7 @@ void unref_sub_8011A68(void)
|
||||
{
|
||||
if (GetBankSide(gActiveBank) == 0)
|
||||
{
|
||||
sub_800C704(0, gBattlePartyID[gActiveBank], 0);
|
||||
EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], 0);
|
||||
MarkBufferBankForExecution(gActiveBank);
|
||||
}
|
||||
}
|
||||
@ -2191,7 +2191,7 @@ void BattleBeginFirstTurn(void)
|
||||
return;
|
||||
while (ewram160F9 < gNoOfAllBanks)
|
||||
{
|
||||
if (sub_801A02C(0, gTurnOrder[ewram160F9], 0) != 0)
|
||||
if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0)
|
||||
r9++;
|
||||
ewram160F9++;
|
||||
if (r9 != 0)
|
||||
@ -2286,8 +2286,8 @@ void BattleTurnPassed(void)
|
||||
gBattleMainFunc = sub_80138F0;
|
||||
return;
|
||||
}
|
||||
if (gBattleResults.BattleTurnCounter < 0xFF)
|
||||
gBattleResults.BattleTurnCounter++;
|
||||
if (gBattleResults.battleTurnCounter < 0xFF)
|
||||
gBattleResults.battleTurnCounter++;
|
||||
for (i = 0; i < gNoOfAllBanks; i++)
|
||||
{
|
||||
gActionForBanks[i] = 0xFF;
|
||||
|
18534
src/battle_4.c
Normal file
18534
src/battle_4.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -83,7 +83,7 @@ extern void sub_802E220();
|
||||
extern void sub_802E2D4();
|
||||
extern void sub_802E004(void);
|
||||
extern void sub_802DF30(void);
|
||||
extern void sub_80325B8(void);
|
||||
extern void BattleMusicStop(void);
|
||||
extern void PlayerBufferExecCompleted(void);
|
||||
extern void bx_t1_healthbar_update(void);
|
||||
extern void nullsub_91(void);
|
||||
@ -1101,7 +1101,7 @@ void sub_8030594(void)
|
||||
|
||||
void sub_8030674(void)
|
||||
{
|
||||
sub_80325B8();
|
||||
BattleMusicStop();
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
@ -808,7 +808,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80325B8(void)
|
||||
void BattleMusicStop(void)
|
||||
{
|
||||
u8 r4 = GetBankByPlayerAI(0);
|
||||
|
||||
|
@ -896,7 +896,7 @@ static void BattleAICmd_if_user_cant_damage(void)
|
||||
|
||||
static void BattleAICmd_get_turn_count(void)
|
||||
{
|
||||
AI_THINKING_STRUCT->funcResult = gBattleResults.BattleTurnCounter;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter;
|
||||
gAIScriptPtr += 1;
|
||||
}
|
||||
|
||||
@ -1412,8 +1412,8 @@ static void BattleAICmd_get_highest_possible_damage(void)
|
||||
s32 i;
|
||||
|
||||
gDynamicBasePower = 0;
|
||||
BATTLE_STRUCT->DynamicMoveType = 0;
|
||||
BATTLE_STRUCT->DmgMultiplier = 1;
|
||||
BATTLE_STRUCT->dynamicMoveType = 0;
|
||||
BATTLE_STRUCT->dmgMultiplier = 1;
|
||||
gBattleMoveFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
AI_THINKING_STRUCT->funcResult = 0;
|
||||
@ -1452,8 +1452,8 @@ static void BattleAICmd_if_damage_bonus(void)
|
||||
u8 damageVar;
|
||||
|
||||
gDynamicBasePower = 0;
|
||||
BATTLE_STRUCT->DynamicMoveType = 0;
|
||||
BATTLE_STRUCT->DmgMultiplier = 1;
|
||||
BATTLE_STRUCT->dynamicMoveType = 0;
|
||||
BATTLE_STRUCT->dmgMultiplier = 1;
|
||||
gBattleMoveFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
|
||||
@ -1659,8 +1659,8 @@ static void BattleAICmd_if_can_faint(void)
|
||||
}
|
||||
|
||||
gDynamicBasePower = 0;
|
||||
BATTLE_STRUCT->DynamicMoveType = 0;
|
||||
BATTLE_STRUCT->DmgMultiplier = 1;
|
||||
BATTLE_STRUCT->dynamicMoveType = 0;
|
||||
BATTLE_STRUCT->dmgMultiplier = 1;
|
||||
gBattleMoveFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
|
||||
@ -1688,8 +1688,8 @@ static void BattleAICmd_if_cant_faint(void)
|
||||
}
|
||||
|
||||
gDynamicBasePower = 0;
|
||||
BATTLE_STRUCT->DynamicMoveType = 0;
|
||||
BATTLE_STRUCT->DmgMultiplier = 1;
|
||||
BATTLE_STRUCT->dynamicMoveType = 0;
|
||||
BATTLE_STRUCT->dmgMultiplier = 1;
|
||||
gBattleMoveFlags = 0;
|
||||
gCritMultiplier = 1;
|
||||
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
|
||||
@ -1843,7 +1843,7 @@ static void BattleAICmd_if_last_move_did_damage(void)
|
||||
|
||||
if (gAIScriptPtr[2] == 0)
|
||||
{
|
||||
if (gDisableStructs[index].DisabledMove == 0)
|
||||
if (gDisableStructs[index].disabledMove == 0)
|
||||
{
|
||||
gAIScriptPtr += 7;
|
||||
return;
|
||||
@ -1856,7 +1856,7 @@ static void BattleAICmd_if_last_move_did_damage(void)
|
||||
gAIScriptPtr += 7;
|
||||
return;
|
||||
}
|
||||
else if (gDisableStructs[index].EncoredMove != 0)
|
||||
else if (gDisableStructs[index].encoredMove != 0)
|
||||
{
|
||||
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
|
||||
return;
|
||||
@ -1869,7 +1869,7 @@ static void BattleAICmd_if_encored(void)
|
||||
switch (gAIScriptPtr[1])
|
||||
{
|
||||
case 0: // _08109348
|
||||
if (gDisableStructs[gActiveBank].DisabledMove == AI_THINKING_STRUCT->moveConsidered)
|
||||
if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
|
||||
{
|
||||
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
|
||||
return;
|
||||
@ -1877,7 +1877,7 @@ static void BattleAICmd_if_encored(void)
|
||||
gAIScriptPtr += 6;
|
||||
return;
|
||||
case 1: // _08109370
|
||||
if (gDisableStructs[gActiveBank].EncoredMove == AI_THINKING_STRUCT->moveConsidered)
|
||||
if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
|
||||
{
|
||||
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
|
||||
return;
|
||||
@ -1954,7 +1954,7 @@ static void BattleAICmd_is_first_turn(void)
|
||||
else
|
||||
index = gBankTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].IsFirstTurn;
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn;
|
||||
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
@ -1968,7 +1968,7 @@ static void BattleAICmd_get_stockpile_count(void)
|
||||
else
|
||||
index = gBankTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].StockpileCounter;
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter;
|
||||
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
@ -1990,7 +1990,7 @@ static void BattleAICmd_get_used_item(void)
|
||||
index = gBankTarget;
|
||||
|
||||
// this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this.
|
||||
AI_THINKING_STRUCT->funcResult = ewram[0x160CC + (index * 2)];
|
||||
AI_THINKING_STRUCT->funcResult = ewram[MULTI_DIM_ARR(index, B_16, 0x160CC)];
|
||||
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
@ -2025,7 +2025,7 @@ static void BattleAICmd_get_protect_count(void)
|
||||
else
|
||||
index = gBankTarget;
|
||||
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].ProtectUses;
|
||||
AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses;
|
||||
|
||||
gAIScriptPtr += 2;
|
||||
}
|
||||
@ -2104,7 +2104,7 @@ static void BattleAICmd_if_level_compare(void)
|
||||
|
||||
static void BattleAICmd_if_taunted(void)
|
||||
{
|
||||
if (gDisableStructs[gBankTarget].taunt != 0)
|
||||
if (gDisableStructs[gBankTarget].tauntTimer1 != 0)
|
||||
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
|
||||
else
|
||||
gAIScriptPtr += 5;
|
||||
@ -2112,7 +2112,7 @@ static void BattleAICmd_if_taunted(void)
|
||||
|
||||
static void BattleAICmd_if_not_taunted(void)
|
||||
{
|
||||
if (gDisableStructs[gBankTarget].taunt == 0)
|
||||
if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
|
||||
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
|
||||
else
|
||||
gAIScriptPtr += 5;
|
||||
|
@ -5,7 +5,6 @@
|
||||
#include "task.h"
|
||||
#include "trig.h"
|
||||
|
||||
#define TASK gTasks[task]
|
||||
#define SPRITE gSprites[TASK.data[0]]
|
||||
|
||||
extern s16 gBattleAnimArgs[8];
|
||||
@ -16,29 +15,29 @@ extern u16 gMovePowerMoveAnim;
|
||||
extern u8 gBattleAnimPlayerMonIndex;
|
||||
extern u8 gBattleAnimEnemyMonIndex;
|
||||
|
||||
static void sub_80A7EF0(u8 task);
|
||||
static void sub_80A808C(u8 task);
|
||||
static void sub_80A81D8(u8 task);
|
||||
static void sub_80A8374(u8 task);
|
||||
static void sub_80A8488(u8 task);
|
||||
static void sub_80A7EF0(u8 taskId);
|
||||
static void sub_80A808C(u8 taskId);
|
||||
static void sub_80A81D8(u8 taskId);
|
||||
static void sub_80A8374(u8 taskId);
|
||||
static void sub_80A8488(u8 taskId);
|
||||
static void sub_80A85A4(struct Sprite *sprite);
|
||||
void sub_80A8614(struct Sprite* sprite);
|
||||
static void sub_80A86F4(struct Sprite *sprite);
|
||||
static void sub_80A88F0(struct Sprite *sprite);
|
||||
static void sub_80A89B4(u8 task);
|
||||
static void sub_80A8A18(u8 task);
|
||||
static void sub_80A8C0C(u8 task);
|
||||
static void sub_80A8D8C(u8 task);
|
||||
void sub_80A8FD8(u8 task);
|
||||
static void sub_80A89B4(u8 taskId);
|
||||
static void sub_80A8A18(u8 taskId);
|
||||
static void sub_80A8C0C(u8 taskId);
|
||||
static void sub_80A8D8C(u8 taskId);
|
||||
void sub_80A8FD8(u8 taskId);
|
||||
static void sub_80A913C(u8 taskId);
|
||||
|
||||
void sub_80A7E7C(u8 task)
|
||||
void sub_80A7E7C(u8 taskId)
|
||||
{
|
||||
u8 sprite;
|
||||
sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
|
||||
if (sprite == 0xff)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
|
||||
@ -50,10 +49,10 @@ void sub_80A7E7C(u8 task)
|
||||
TASK.data[4] = gBattleAnimArgs[1];
|
||||
TASK.data[5] = gBattleAnimArgs[2];
|
||||
TASK.func = sub_80A7EF0;
|
||||
sub_80A7EF0(task);
|
||||
sub_80A7EF0(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A7EF0(u8 task)
|
||||
static void sub_80A7EF0(u8 taskId)
|
||||
{
|
||||
if (TASK.data[3] == 0)
|
||||
{
|
||||
@ -78,7 +77,7 @@ static void sub_80A7EF0(u8 task)
|
||||
{
|
||||
SPRITE.pos2.x = 0;
|
||||
SPRITE.pos2.y = 0;
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -89,7 +88,7 @@ static void sub_80A7EF0(u8 task)
|
||||
}
|
||||
|
||||
|
||||
void sub_80A7FA0(u8 task)
|
||||
void sub_80A7FA0(u8 taskId)
|
||||
{
|
||||
u8 sprite;
|
||||
bool8 r6;
|
||||
@ -100,7 +99,7 @@ void sub_80A7FA0(u8 task)
|
||||
sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
|
||||
if (sprite == 0xff)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -134,7 +133,7 @@ void sub_80A7FA0(u8 task)
|
||||
}
|
||||
if (r6)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
|
||||
@ -146,10 +145,10 @@ void sub_80A7FA0(u8 task)
|
||||
TASK.data[4] = gBattleAnimArgs[1];
|
||||
TASK.data[5] = gBattleAnimArgs[2];
|
||||
TASK.func = sub_80A808C;
|
||||
sub_80A808C(task);
|
||||
sub_80A808C(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A808C(u8 task)
|
||||
static void sub_80A808C(u8 taskId)
|
||||
{
|
||||
if (TASK.data[3] == 0)
|
||||
{
|
||||
@ -174,7 +173,7 @@ static void sub_80A808C(u8 task)
|
||||
{
|
||||
SPRITE.pos2.x = 0;
|
||||
SPRITE.pos2.y = 0;
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -184,13 +183,13 @@ static void sub_80A808C(u8 task)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8154(u8 task)
|
||||
void sub_80A8154(u8 taskId)
|
||||
{
|
||||
u8 sprite;
|
||||
sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
|
||||
if (sprite == 0xff)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
gSprites[sprite].pos2.x += gBattleAnimArgs[1];
|
||||
@ -203,10 +202,10 @@ void sub_80A8154(u8 task)
|
||||
TASK.data[5] = gBattleAnimArgs[1] * 2;
|
||||
TASK.data[6] = gBattleAnimArgs[2] * 2;
|
||||
TASK.func = sub_80A81D8;
|
||||
sub_80A81D8(task);
|
||||
sub_80A81D8(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A81D8(u8 task)
|
||||
static void sub_80A81D8(u8 taskId)
|
||||
{
|
||||
if (TASK.data[3] == 0)
|
||||
{
|
||||
@ -233,7 +232,7 @@ static void sub_80A81D8(u8 task)
|
||||
SPRITE.pos2.x -= TASK.data[5] / 2;
|
||||
SPRITE.pos2.y -= TASK.data[6] / 2;
|
||||
}
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -243,7 +242,7 @@ static void sub_80A81D8(u8 task)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8314(u8 task)
|
||||
void sub_80A8314(u8 taskId)
|
||||
{
|
||||
u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]);
|
||||
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
|
||||
@ -253,10 +252,10 @@ void sub_80A8314(u8 task)
|
||||
TASK.data[3] = gBattleAnimArgs[3];
|
||||
TASK.data[4] = gBattleAnimArgs[4];
|
||||
TASK.func = sub_80A8374;
|
||||
sub_80A8374(task);
|
||||
sub_80A8374(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A8374(u8 task)
|
||||
static void sub_80A8374(u8 taskId)
|
||||
{
|
||||
s16 x;
|
||||
u8 sprite;
|
||||
@ -276,12 +275,12 @@ static void sub_80A8374(u8 task)
|
||||
gSprites[sprite].pos2.y = TASK.data[9] >> 8;
|
||||
if (--TASK.data[4] == 0)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8408(u8 task)
|
||||
void sub_80A8408(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
u8 sprite;
|
||||
@ -302,10 +301,10 @@ void sub_80A8408(u8 task)
|
||||
TASK.data[3] = gBattleAnimArgs[3];
|
||||
TASK.data[4] = v1;
|
||||
TASK.func = sub_80A8488;
|
||||
sub_80A8488(task);
|
||||
sub_80A8488(taskId);
|
||||
}
|
||||
|
||||
static void sub_80A8488(u8 task)
|
||||
static void sub_80A8488(u8 taskId)
|
||||
{
|
||||
u8 sprite;
|
||||
sprite = TASK.data[0];
|
||||
@ -322,18 +321,18 @@ static void sub_80A8488(u8 task)
|
||||
{
|
||||
gSprites[sprite].pos2.x = 0;
|
||||
gSprites[sprite].pos2.y = 0;
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8500(u8 task)
|
||||
void sub_80A8500(u8 taskId)
|
||||
{
|
||||
if (GetBankSide(gBattleAnimPlayerMonIndex))
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
}
|
||||
sub_80A8408(task);
|
||||
sub_80A8408(taskId);
|
||||
}
|
||||
|
||||
void sub_80A8530(struct Sprite *sprite)
|
||||
@ -538,7 +537,7 @@ static void sub_80A88F0(struct Sprite *sprite)
|
||||
move_anim_8072740(sprite);
|
||||
}
|
||||
|
||||
void sub_80A8920(u8 task)
|
||||
void sub_80A8920(u8 taskId)
|
||||
{
|
||||
s16 r7;
|
||||
r7 = 0x8000 / gBattleAnimArgs[3];
|
||||
@ -558,7 +557,7 @@ void sub_80A8920(u8 task)
|
||||
TASK.func = sub_80A89B4;
|
||||
}
|
||||
|
||||
static void sub_80A89B4(u8 task)
|
||||
static void sub_80A89B4(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
spriteId = TASK.data[0];
|
||||
@ -572,7 +571,7 @@ static void sub_80A89B4(u8 task)
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A8A18(u8 task)
|
||||
static void sub_80A8A18(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
if (TASK.data[4] > 0)
|
||||
@ -586,15 +585,15 @@ static void sub_80A8A18(u8 task)
|
||||
gSprites[spriteId].pos2.x = (TASK.data[12] >> 8) + (TASK.data[11] >> 8);
|
||||
if (--TASK.data[6] == 0)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80A8B3C(u8 task);
|
||||
static void sub_80A8B3C(u8 taskId);
|
||||
|
||||
void sub_80A8A80(u8 task)
|
||||
void sub_80A8A80(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
switch (gBattleAnimArgs[0])
|
||||
@ -606,7 +605,7 @@ void sub_80A8A80(u8 task)
|
||||
case 2:
|
||||
if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2))
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
spriteId = gObjectBankIDs[gBattleAnimPlayerMonIndex ^ 2];
|
||||
@ -614,13 +613,13 @@ void sub_80A8A80(u8 task)
|
||||
case 3:
|
||||
if (!b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2))
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
spriteId = gObjectBankIDs[gBattleAnimEnemyMonIndex ^ 2];
|
||||
break;
|
||||
default:
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
TASK.data[0] = spriteId;
|
||||
@ -635,18 +634,18 @@ void sub_80A8A80(u8 task)
|
||||
TASK.func = sub_80A8B3C;
|
||||
}
|
||||
|
||||
static void sub_80A8B3C(u8 task)
|
||||
static void sub_80A8B3C(u8 taskId)
|
||||
{
|
||||
u8 spriteId = TASK.data[0];
|
||||
gSprites[spriteId].pos2.x += TASK.data[1];
|
||||
if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u)
|
||||
{
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8B88(u8 task)
|
||||
void sub_80A8B88(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
if (GetBankSide(gBattleAnimPlayerMonIndex))
|
||||
@ -671,7 +670,7 @@ void sub_80A8B88(u8 task)
|
||||
TASK.func = sub_80A8C0C;
|
||||
}
|
||||
|
||||
static void sub_80A8C0C(u8 task)
|
||||
static void sub_80A8C0C(u8 taskId)
|
||||
{
|
||||
s16 y;
|
||||
u8 spriteId;
|
||||
@ -706,13 +705,13 @@ static void sub_80A8C0C(u8 task)
|
||||
{
|
||||
gSprites[spriteId].pos2.x = 0;
|
||||
gSprites[spriteId].pos2.y = 0;
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8D34(u8 task)
|
||||
void sub_80A8D34(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[3]);
|
||||
@ -727,7 +726,7 @@ void sub_80A8D34(u8 task)
|
||||
TASK.func = sub_80A8D8C;
|
||||
}
|
||||
|
||||
static void sub_80A8D8C(u8 task)
|
||||
static void sub_80A8D8C(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
TASK.data[10] += TASK.data[0];
|
||||
@ -746,13 +745,13 @@ static void sub_80A8D8C(u8 task)
|
||||
else
|
||||
{
|
||||
sub_8078F40(spriteId);
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A8E04(u8 task)
|
||||
void sub_80A8E04(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
|
||||
@ -796,7 +795,7 @@ void sub_80A8E04(u8 task)
|
||||
TASK.func = sub_80A8FD8;
|
||||
}
|
||||
|
||||
void sub_80A8EFC(u8 task)
|
||||
void sub_80A8EFC(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[2]);
|
||||
@ -834,7 +833,7 @@ void sub_80A8EFC(u8 task)
|
||||
TASK.func = sub_80A8FD8;
|
||||
}
|
||||
|
||||
void sub_80A8FD8(u8 task)
|
||||
void sub_80A8FD8(u8 taskId)
|
||||
{
|
||||
TASK.data[3] += TASK.data[4];
|
||||
obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]);
|
||||
@ -850,7 +849,7 @@ void sub_80A8FD8(u8 task)
|
||||
sub_8078F40(TASK.data[5]);
|
||||
case 0:
|
||||
default:
|
||||
DestroyAnimVisualTask(task);
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
case 2:
|
||||
TASK.data[1] = 0;
|
||||
@ -861,7 +860,7 @@ void sub_80A8FD8(u8 task)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A9058(u8 task)
|
||||
void sub_80A9058(u8 taskId)
|
||||
{
|
||||
if (!gBattleAnimArgs[0])
|
||||
{
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "item_use.h"
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
@ -33,7 +34,6 @@ extern u8 gBattleBufferA[][0x200];
|
||||
extern u8 gObjectBankIDs[];
|
||||
extern MainCallback gPreBattleCallback1;
|
||||
extern bool8 gDoingBattleAnim;
|
||||
extern u16 gScriptItemId;
|
||||
extern u16 gBattlePartyID[];
|
||||
extern u8 gHealthboxIDs[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "battle_party_menu.h"
|
||||
#include "battle.h"
|
||||
#include "item_menu.h"
|
||||
#include "item_use.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "menu_helpers.h"
|
||||
@ -55,7 +56,6 @@ extern void nullsub_14();
|
||||
extern void OpenPartyMenu();
|
||||
extern u8 sub_803FBBC(void);
|
||||
|
||||
extern u16 gScriptItemId;
|
||||
extern u8 gPlayerPartyCount;
|
||||
extern u8 gNoOfAllBanks;
|
||||
extern u16 gBattlePartyID[];
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "fieldmap.h"
|
||||
#include "item.h"
|
||||
#include "item_menu.h"
|
||||
#include "item_use.h"
|
||||
#include "items.h"
|
||||
#include "main.h"
|
||||
#include "rng.h"
|
||||
@ -974,7 +975,6 @@ const struct Berry gBerries[] =
|
||||
const struct BerryTree gBlankBerryTree = {0};
|
||||
|
||||
extern u8 BerryTreeScript;
|
||||
extern u16 gScriptItemId;
|
||||
extern u16 gScriptLastTalked;
|
||||
extern u16 gSpecialVar_0x8004;
|
||||
extern u16 gSpecialVar_0x8005;
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "field_map_obj.h"
|
||||
#include "item_menu.h"
|
||||
#include "items.h"
|
||||
#include "item_use.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "menu_helpers.h"
|
||||
@ -35,7 +36,6 @@ struct BerryTagStatus
|
||||
extern struct Struct2000000 unk_2000000;
|
||||
extern u8 gUnknown_0203932C;
|
||||
extern struct BerryTagStatus gUnknown_0203932E;
|
||||
extern u16 gScriptItemId;
|
||||
extern u16 gUnknown_030041B4;
|
||||
|
||||
extern const struct CompressedSpriteSheet gUnknown_083C1F74;
|
||||
|
@ -1396,7 +1396,7 @@ const u8 *const gUnknown_083EC624[] = {
|
||||
gMenuText_GoBackToPrev
|
||||
};
|
||||
|
||||
const struct MenuAction3 gUnknown_083EC634[] = {
|
||||
const struct YesNoFuncTable gUnknown_083EC634[] = {
|
||||
{sub_80FF5BC, sub_80FF058},
|
||||
{sub_81017A0, sub_80FF058},
|
||||
{sub_81017A0, sub_80FF058},
|
||||
@ -1871,16 +1871,16 @@ void sub_80FE948(u8 taskId)
|
||||
gUnknown_020388F5 = gUnknown_020388F2 + gUnknown_020388F4;
|
||||
if (gUnknown_020388F5 == gUnknown_020388D5)
|
||||
{
|
||||
gUnknown_083EC634[gTasks[taskId].data[11]].func2(taskId);
|
||||
gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId);
|
||||
} else
|
||||
{
|
||||
gUnknown_083EC634[gTasks[taskId].data[11]].func1(taskId);
|
||||
gUnknown_083EC634[gTasks[taskId].data[11]].yesFunc(taskId);
|
||||
}
|
||||
} else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
HandleDestroyMenuCursors();
|
||||
PlaySE(SE_SELECT);
|
||||
gUnknown_083EC634[gTasks[taskId].data[11]].func2(taskId);
|
||||
gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -229,7 +229,7 @@ void ExecuteTruckSequence(void)
|
||||
CreateTask(Task_HandleTruckSequence, 0xA);
|
||||
}
|
||||
|
||||
void EndTruckSequence(void)
|
||||
void EndTruckSequence(u8 taskId)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_HandleTruckSequence))
|
||||
{
|
||||
|
859
src/field_tasks.c
Normal file
859
src/field_tasks.c
Normal file
@ -0,0 +1,859 @@
|
||||
//
|
||||
// Created by scott on 6/22/2017.
|
||||
//
|
||||
|
||||
#include "global.h"
|
||||
#include "task.h"
|
||||
#include "main.h"
|
||||
#include "vars.h"
|
||||
#include "bike.h"
|
||||
#include "item.h"
|
||||
#include "items.h"
|
||||
#include "event_data.h"
|
||||
#include "rom4.h"
|
||||
#include "clock.h"
|
||||
#include "script.h"
|
||||
#include "field_special_scene.h"
|
||||
#include "field_effect_helpers.h"
|
||||
#include "secret_base.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "fieldmap.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_camera.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "field_tasks.h"
|
||||
|
||||
void DummyPerStepCallback(u8);
|
||||
void PerStepCallback_8069F64(u8);
|
||||
void PerStepCallback_8069AA0(u8);
|
||||
void PerStepCallback_8069864(u8);
|
||||
void PerStepCallback_8069DD4(u8);
|
||||
void PerStepCallback_806A07C(u8);
|
||||
|
||||
void (*const gUnknown_08376364[])(u8) = {
|
||||
DummyPerStepCallback,
|
||||
PerStepCallback_8069F64,
|
||||
PerStepCallback_8069AA0,
|
||||
PerStepCallback_8069864,
|
||||
PerStepCallback_8069DD4,
|
||||
EndTruckSequence,
|
||||
sub_80BCF1C,
|
||||
PerStepCallback_806A07C
|
||||
};
|
||||
|
||||
void Task_RunPerStepCallback(u8 taskId)
|
||||
{
|
||||
int idx = gTasks[taskId].data[0];
|
||||
gUnknown_08376364[idx](taskId);
|
||||
}
|
||||
|
||||
static void RunTimeBasedEvents(s16 *taskData)
|
||||
{
|
||||
switch (*taskData)
|
||||
{
|
||||
case 0:
|
||||
if (gMain.vblankCounter1 & 0x1000)
|
||||
{
|
||||
DoTimeBasedEvents();
|
||||
(*taskData)++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (!(gMain.vblankCounter1 & 0x1000))
|
||||
{
|
||||
(*taskData)--;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Task_RunTimeBasedEvents(u8 taskId)
|
||||
{
|
||||
s16 *taskData = gTasks[taskId].data;
|
||||
if (!ScriptContext2_IsEnabled())
|
||||
{
|
||||
RunTimeBasedEvents(taskData);
|
||||
sub_80540D0(taskData + 1, taskData + 2);
|
||||
}
|
||||
}
|
||||
|
||||
void Task_MuddySlope(u8);
|
||||
|
||||
void SetUpFieldTasks(void)
|
||||
{
|
||||
if (!FuncIsActiveTask(Task_RunPerStepCallback))
|
||||
{
|
||||
u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
}
|
||||
if (!FuncIsActiveTask(Task_MuddySlope))
|
||||
{
|
||||
CreateTask(Task_MuddySlope, 0x50);
|
||||
}
|
||||
if (!FuncIsActiveTask(Task_RunTimeBasedEvents))
|
||||
{
|
||||
CreateTask(Task_RunTimeBasedEvents, 0x50);
|
||||
}
|
||||
}
|
||||
|
||||
void ActivatePerStepCallback(u8 callback)
|
||||
{
|
||||
s16 *dataPointer;
|
||||
s16 *dataStart;
|
||||
s16 zero;
|
||||
u8 taskId = FindTaskIdByFunc(Task_RunPerStepCallback);
|
||||
if (taskId != 0xff)
|
||||
{
|
||||
dataStart = gTasks[taskId].data;
|
||||
zero = 0;
|
||||
dataPointer = &dataStart[15];
|
||||
do
|
||||
{
|
||||
*dataPointer-- = zero;
|
||||
} while ((int)dataPointer >= (int)dataStart);
|
||||
if (callback >= ARRAY_COUNT(gUnknown_08376364))
|
||||
{
|
||||
*dataStart = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*dataStart = callback;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ResetFieldTasksArgs(void)
|
||||
{
|
||||
u8 taskId;
|
||||
s16 *taskData;
|
||||
taskId = FindTaskIdByFunc(Task_RunPerStepCallback);
|
||||
if (taskId != 0xff)
|
||||
{
|
||||
taskData = gTasks[taskId].data;
|
||||
}
|
||||
taskId = FindTaskIdByFunc(Task_RunTimeBasedEvents);
|
||||
if (taskId != 0xff)
|
||||
{
|
||||
taskData = gTasks[taskId].data;
|
||||
taskData[1] = 0;
|
||||
taskData[2] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
const struct MetatileOffset gUnknown_08376384[][2] = {
|
||||
{{ 0, 0,0x259}, { 0, 1,0x261}},
|
||||
{{ 0, -1,0x259}, { 0, 0,0x261}},
|
||||
{{ 0, 0,0x252}, { 1, 0,0x253}},
|
||||
{{ -1, 0,0x252}, { 0, 0,0x253}}
|
||||
};
|
||||
|
||||
const struct MetatileOffset gUnknown_083763A4[][2] = {
|
||||
{{ 0, 0,0x25A}, { 0, 1,0x262}},
|
||||
{{ 0, -1,0x25A}, { 0, 0,0x262}},
|
||||
{{ 0, 0,0x254}, { 1, 0,0x255}},
|
||||
{{ -1, 0,0x254}, { 0, 0,0x255}}
|
||||
};
|
||||
|
||||
const struct MetatileOffset gUnknown_083763C4[][2] = {
|
||||
{{ 0, 0,0x258}, { 0, 1,0x260}},
|
||||
{{ 0, -1,0x258}, { 0, 0,0x260}},
|
||||
{{ 0, 0,0x250}, { 1, 0,0x251}},
|
||||
{{ -1, 0,0x250}, { 0, 0,0x251}}
|
||||
};
|
||||
|
||||
void DummyPerStepCallback(u8 taskId) {}
|
||||
|
||||
const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 a1)
|
||||
{
|
||||
if (sub_80576A0(a1))
|
||||
{
|
||||
return a0[0];
|
||||
}
|
||||
else if (sub_80576B4(a1))
|
||||
{
|
||||
return a0[1];
|
||||
}
|
||||
else if (sub_80576C8(a1))
|
||||
{
|
||||
return a0[2];
|
||||
}
|
||||
else if (sub_80576DC(a1))
|
||||
{
|
||||
return a0[3];
|
||||
}
|
||||
else
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag)
|
||||
{
|
||||
const struct MetatileOffset *offsetData = sub_80695E0(offsets, MapGridGetMetatileBehaviorAt(x, y));
|
||||
const struct MetatileOffset *offsetData2 = offsetData;
|
||||
if (offsetData != NULL)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x + offsetData[0].x, y + offsetData[0].y, offsetData[0].tileId);
|
||||
if (flag)
|
||||
{
|
||||
CurrentMapDrawMetatileAt(x + offsetData[0].x, y + offsetData[0].y);
|
||||
}
|
||||
MapGridSetMetatileIdAt(x + offsetData2[1].x, y + offsetData2[1].y, offsetData2[1].tileId);
|
||||
if (flag)
|
||||
{
|
||||
CurrentMapDrawMetatileAt(x + offsetData2[1].x, y + offsetData2[1].y);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r8\n"
|
||||
"\tpush {r7}\n"
|
||||
"\tadds r5, r0, 0\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tlsls r1, 16\n"
|
||||
"\tasrs r6, r1, 16\n"
|
||||
"\tlsls r2, 16\n"
|
||||
"\tasrs r7, r2, 16\n"
|
||||
"\tadds r0, r6, 0\n"
|
||||
"\tadds r1, r7, 0\n"
|
||||
"\tbl MapGridGetMetatileBehaviorAt\n"
|
||||
"\tadds r1, r0, 0\n"
|
||||
"\tlsls r1, 16\n"
|
||||
"\tlsrs r1, 16\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl sub_80695E0\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tadds r5, r4, 0\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _080696B6\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tldrsb r0, [r4, r0]\n"
|
||||
"\tadds r0, r6, r0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tldrsb r1, [r4, r1]\n"
|
||||
"\tadds r1, r7, r1\n"
|
||||
"\tldrh r2, [r4, 0x2]\n"
|
||||
"\tbl MapGridSetMetatileIdAt\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0806968E\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tldrsb r0, [r4, r0]\n"
|
||||
"\tadds r0, r6, r0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tldrsb r1, [r4, r1]\n"
|
||||
"\tadds r1, r7, r1\n"
|
||||
"\tbl CurrentMapDrawMetatileAt\n"
|
||||
"_0806968E:\n"
|
||||
"\tmovs r0, 0x4\n"
|
||||
"\tldrsb r0, [r5, r0]\n"
|
||||
"\tadds r0, r6, r0\n"
|
||||
"\tmovs r1, 0x5\n"
|
||||
"\tldrsb r1, [r5, r1]\n"
|
||||
"\tadds r1, r7, r1\n"
|
||||
"\tldrh r2, [r5, 0x6]\n"
|
||||
"\tbl MapGridSetMetatileIdAt\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _080696B6\n"
|
||||
"\tmovs r0, 0x4\n"
|
||||
"\tldrsb r0, [r5, r0]\n"
|
||||
"\tadds r0, r6, r0\n"
|
||||
"\tmovs r1, 0x5\n"
|
||||
"\tldrsb r1, [r5, r1]\n"
|
||||
"\tadds r1, r7, r1\n"
|
||||
"\tbl CurrentMapDrawMetatileAt\n"
|
||||
"_080696B6:\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_80696C0(s16 x, s16 y, bool32 flag)
|
||||
{
|
||||
sub_8069638(gUnknown_08376384, x, y, flag);
|
||||
}
|
||||
|
||||
void sub_80696E4(s16 x, s16 y, bool32 flag)
|
||||
{
|
||||
sub_8069638(gUnknown_083763A4, x, y, flag);
|
||||
}
|
||||
|
||||
void sub_8069708(s16 x, s16 y, bool32 flag)
|
||||
{
|
||||
sub_8069638(gUnknown_083763C4, x, y, flag);
|
||||
}
|
||||
|
||||
bool32 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
{
|
||||
s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x2, y2);
|
||||
if (sub_80576A0(metatileBehavior))
|
||||
{
|
||||
if (y1 > y2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (sub_80576B4(metatileBehavior))
|
||||
{
|
||||
if (y1 < y2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (sub_80576C8(metatileBehavior))
|
||||
{
|
||||
if (x1 > x2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (sub_80576DC(metatileBehavior))
|
||||
{
|
||||
if (x1 < x2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2)
|
||||
{
|
||||
s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x1, y1);
|
||||
if (sub_80576A0(metatileBehavior))
|
||||
{
|
||||
if (y1 < y2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (sub_80576B4(metatileBehavior))
|
||||
{
|
||||
if (y1 > y2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (sub_80576C8(metatileBehavior))
|
||||
{
|
||||
if (x1 < x2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (sub_80576DC(metatileBehavior))
|
||||
{
|
||||
if (x1 > x2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void PerStepCallback_8069864(u8 taskId)
|
||||
{
|
||||
s16 *data;
|
||||
s16 x, y;
|
||||
data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
switch (data[1])
|
||||
{
|
||||
case 0:
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
sub_80696E4(x, y, TRUE);
|
||||
data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (x != data[2] || y != data[3])
|
||||
{
|
||||
if (sub_806972C(x, y, data[2], data[3]))
|
||||
{
|
||||
sub_80696C0(data[2], data[3], TRUE);
|
||||
sub_8069708(data[2], data[3], FALSE);
|
||||
data[4] = data[2];
|
||||
data[5] = data[3];
|
||||
data[1] = 2;
|
||||
data[6] = 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
data[4] = -1;
|
||||
data[5] = -1;
|
||||
}
|
||||
if (sub_80697C8(x, y, data[2], data[3]))
|
||||
{
|
||||
sub_80696C0(x, y, TRUE);
|
||||
data[1] = 2;
|
||||
data[6] = 8;
|
||||
}
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsPacifidlogLog(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
PlaySE(SE_MIZU);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if ((--data[6]) == 0)
|
||||
{
|
||||
sub_80696E4(x, y, TRUE);
|
||||
if (data[4] != -1 && data[5] != -1)
|
||||
{
|
||||
sub_8069708(data[4], data[5], TRUE);
|
||||
}
|
||||
data[1] = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80699D8(s16 x, s16 y)
|
||||
{
|
||||
u8 z = PlayerGetZCoord();
|
||||
if (!(z & 0x01))
|
||||
{
|
||||
switch (MapGridGetMetatileIdAt(x, y))
|
||||
{
|
||||
case 0x24e:
|
||||
MapGridSetMetatileIdAt(x, y, 0x24f);
|
||||
break;
|
||||
case 0x256:
|
||||
MapGridSetMetatileIdAt(x, y, 0x257);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8069A3C(s16 x, s16 y)
|
||||
{
|
||||
u8 z = PlayerGetZCoord();
|
||||
if (!(z & 0x01))
|
||||
{
|
||||
switch (MapGridGetMetatileIdAt(x, y))
|
||||
{
|
||||
case 0x24f:
|
||||
MapGridSetMetatileIdAt(x, y, 0x24e);
|
||||
break;
|
||||
case 0x257:
|
||||
MapGridSetMetatileIdAt(x, y, 0x256);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PerStepCallback_8069AA0(u8 taskId)
|
||||
{
|
||||
bool8 isFortreeBridgeCur;
|
||||
bool8 isFortreeBridgePrev;
|
||||
u8 z, flag;
|
||||
s16 x, y, x2, y2;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
switch (data[1])
|
||||
{
|
||||
default:
|
||||
break;
|
||||
case 0:
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
sub_80699D8(x, y);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
x2 = data[2];
|
||||
y2 = data[3];
|
||||
if (x == x2 && y == y2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
isFortreeBridgeCur = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y));
|
||||
isFortreeBridgePrev = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x2, y2));
|
||||
z = PlayerGetZCoord();
|
||||
flag = 0;
|
||||
if ((u8)(z & 1) == 0)
|
||||
{
|
||||
flag = 1;
|
||||
}
|
||||
if (flag && (isFortreeBridgeCur == 1 || isFortreeBridgePrev == 1))
|
||||
{
|
||||
PlaySE(SE_HASHI);
|
||||
}
|
||||
if (isFortreeBridgePrev)
|
||||
{
|
||||
sub_8069A3C(x2, y2);
|
||||
CurrentMapDrawMetatileAt(x2, y2);
|
||||
sub_80699D8(x, y);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
data[4] = x2;
|
||||
data[5] = y2;
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (!isFortreeBridgePrev)
|
||||
{
|
||||
break;
|
||||
}
|
||||
data[6] = 16;
|
||||
data[1] = 2;
|
||||
// fallthrough
|
||||
case 2:
|
||||
data[6]--;
|
||||
x2 = data[4];
|
||||
y2 = data[5];
|
||||
switch (data[6] % 7)
|
||||
{
|
||||
case 0:
|
||||
CurrentMapDrawMetatileAt(x2, y2);
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
sub_80699D8(x2, y2);
|
||||
CurrentMapDrawMetatileAt(x2, y2);
|
||||
sub_8069A3C(x2, y2);
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
break;
|
||||
}
|
||||
if (data[6] == 0)
|
||||
{
|
||||
data[1] = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const u16 gUnknown_083763E4[] = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
VAR_0x4001,
|
||||
VAR_0x4002,
|
||||
VAR_0x4003,
|
||||
VAR_0x4004,
|
||||
0,
|
||||
0,
|
||||
VAR_0x4005,
|
||||
VAR_0x4006,
|
||||
VAR_0x4007,
|
||||
0,
|
||||
0,
|
||||
VAR_0x4008,
|
||||
VAR_0x4009,
|
||||
VAR_0x400A,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
};
|
||||
|
||||
bool32 sub_8069CB8(s16 x, s16 y)
|
||||
{
|
||||
if ((u16)(x - 3) < 11 && (u16)(y - 6) < 14 && gUnknown_083763E4[y])
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8069CFC(s16 x, s16 y)
|
||||
{
|
||||
if (sub_8069CB8(x, y))
|
||||
{
|
||||
*GetVarPointer(gUnknown_083763E4[y]) |= (1 << (x - 3));
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_8069D34(s16 x, s16 y)
|
||||
{
|
||||
u32 var;
|
||||
if (!sub_8069CB8(x, y))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
var = VarGet(gUnknown_083763E4[y]) << 16;
|
||||
if (((1 << 16) << (x - 3)) & var)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8069D78(void)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 width = gMapHeader.mapData->width;
|
||||
s32 height = gMapHeader.mapData->height;
|
||||
for (x=0; x<width; x++)
|
||||
{
|
||||
for (y=0; y<height; y++)
|
||||
{
|
||||
if (sub_8069D34(x, y) == TRUE)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x + 7, y + 7, 0x20e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PerStepCallback_8069DD4(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 tileBehavior;
|
||||
u16 *var;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[1])
|
||||
{
|
||||
case 0:
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != data[2] || y != data[3])
|
||||
{
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
var = GetVarPointer(VAR_ICE_STEP_COUNT);
|
||||
if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE)
|
||||
{
|
||||
(*var)++;
|
||||
data[6] = 4;
|
||||
data[1] = 2;
|
||||
data[4] = x;
|
||||
data[5] = y;
|
||||
}
|
||||
else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE)
|
||||
{
|
||||
*var = 0;
|
||||
data[6] = 4;
|
||||
data[1] = 3;
|
||||
data[4] = x;
|
||||
data[5] = y;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (data[6] != 0)
|
||||
{
|
||||
data[6]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = data[4];
|
||||
y = data[5];
|
||||
PlaySE(SE_RU_BARI);
|
||||
MapGridSetMetatileIdAt(x, y, 0x20e);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
sub_8069CFC(x - 7, y - 7);
|
||||
data[1] = 1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (data[6] != 0)
|
||||
{
|
||||
data[6]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = data[4];
|
||||
y = data[5];
|
||||
PlaySE(SE_RU_GASYAN);
|
||||
MapGridSetMetatileIdAt(x, y, 0x206);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
data[1] = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void PerStepCallback_8069F64(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 *var;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (x != data[1] || y != data[2])
|
||||
{
|
||||
data[1] = x;
|
||||
data[2] = y;
|
||||
if (MetatileBehavior_IsAshGrass(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
if (MapGridGetMetatileIdAt(x, y) == 0x20a)
|
||||
{
|
||||
ash(x, y, 0x212, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
ash(x, y, 0x206, 4);
|
||||
}
|
||||
if (CheckBagHasItem(ITEM_SOOT_SACK, 1))
|
||||
{
|
||||
var = GetVarPointer(VAR_ASH_GATHER_COUNT);
|
||||
if (*var < 9999)
|
||||
{
|
||||
(*var)++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_806A040(s16 x, s16 y)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
}
|
||||
|
||||
void PerStepCallback_806A07C(u8 taskId)
|
||||
{
|
||||
s16 x, y;
|
||||
u16 behavior;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
behavior = MapGridGetMetatileBehaviorAt(x, y);
|
||||
if (data[4] != 0 && (--data[4]) == 0)
|
||||
{
|
||||
sub_806A040(data[5], data[6]);
|
||||
}
|
||||
if (data[7] != 0 && (--data[7]) == 0)
|
||||
{
|
||||
sub_806A040(data[8], data[9]);
|
||||
}
|
||||
if (MetatileBehavior_IsCrackedFloorHole(behavior))
|
||||
{
|
||||
VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
|
||||
}
|
||||
if ((x != data[2] || y != data[3]))
|
||||
{
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsCrackedFloor(behavior))
|
||||
{
|
||||
if (GetPlayerSpeed() != 4)
|
||||
{
|
||||
VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty
|
||||
}
|
||||
if (data[4] == 0)
|
||||
{
|
||||
data[4] = 3;
|
||||
data[5] = x;
|
||||
data[6] = y;
|
||||
}
|
||||
else if (data[7] == 0)
|
||||
{
|
||||
data[7] = 3;
|
||||
data[8] = x;
|
||||
data[9] = y;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const u16 gUnknown_08376418[] = {0xe8, 0xeb, 0xea, 0xe9};
|
||||
|
||||
void sub_806A18C(s16 *data, s16 x, s16 y)
|
||||
{
|
||||
u16 tile;
|
||||
if ((--data[0]) == 0)
|
||||
{
|
||||
tile = 0xe8;
|
||||
}
|
||||
else
|
||||
{
|
||||
tile = gUnknown_08376418[data[0] / 8];
|
||||
}
|
||||
MapGridSetMetatileIdAt(x, y, tile);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
MapGridSetMetatileIdAt(x, y, 0xe8);
|
||||
}
|
||||
|
||||
void Task_MuddySlope(u8 taskId)
|
||||
{
|
||||
s16 x, y, x2, y2;
|
||||
int i;
|
||||
u16 mapIndices;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
mapIndices = (gSaveBlock1.location.mapGroup << 8) | gSaveBlock1.location.mapNum;
|
||||
switch (data[1])
|
||||
{
|
||||
case 0:
|
||||
data[0] = mapIndices;
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
data[1] = 1;
|
||||
data[4] = 0;
|
||||
data[7] = 0;
|
||||
data[10] = 0;
|
||||
data[13] = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (data[2] != x || data[3] != y)
|
||||
{
|
||||
data[2] = x;
|
||||
data[3] = y;
|
||||
if (MetatileBehavior_IsMuddySlope(MapGridGetMetatileBehaviorAt(x, y)))
|
||||
{
|
||||
for (i=4; i<14; i+=3)
|
||||
{
|
||||
if (data[i] == 0)
|
||||
{
|
||||
data[i] = 32;
|
||||
data[i + 1] = x;
|
||||
data[i + 2] = y;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (gUnknown_0202E844.field_0 && mapIndices != data[0])
|
||||
{
|
||||
data[0] = mapIndices;
|
||||
x2 = gUnknown_0202E844.x;
|
||||
y2 = gUnknown_0202E844.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
x2 = 0;
|
||||
y2 = 0;
|
||||
}
|
||||
for (i=4; i<14; i+=3)
|
||||
{
|
||||
if (data[i])
|
||||
{
|
||||
data[i + 1] -= x2;
|
||||
data[i + 2] -= y2;
|
||||
sub_806A18C(&data[i], data[i + 1], data[i + 2]);
|
||||
}
|
||||
}
|
||||
}
|
@ -10,22 +10,7 @@
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
|
||||
struct UnknownStruct1 {
|
||||
u8 filler0[0x259];
|
||||
u8 unk259;
|
||||
u8 filler25A[6];
|
||||
u8 unk260;
|
||||
u8 unk261;
|
||||
u8 unk262;
|
||||
s16 unk264;
|
||||
s16 unk266;
|
||||
u8 filler268[10];
|
||||
u16 unk272;
|
||||
u8 filler274[14];
|
||||
u16 unk282;
|
||||
};
|
||||
|
||||
struct UnknownStruct2 {
|
||||
struct Struct2001000 {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
@ -33,7 +18,7 @@ struct UnknownStruct2 {
|
||||
void *unkC;
|
||||
};
|
||||
|
||||
struct UnknownStruct3 {
|
||||
struct Struct201C000 {
|
||||
struct Pokemon *unk0;
|
||||
u8 filler4[1];
|
||||
u8 unk5;
|
||||
@ -53,9 +38,9 @@ struct UnknownStruct3 {
|
||||
#define WINDOW_RIGHT 29
|
||||
#endif
|
||||
|
||||
#define EWRAM_1000 (*(struct UnknownStruct2 *)(unk_2000000 + 0x1000))
|
||||
#define EWRAM_1B000 (*(struct UnknownStruct1 *)(unk_2000000 + 0x1B000))
|
||||
#define EWRAM_1C000 (*(struct UnknownStruct3 *)(unk_2000000 + 0x1C000))
|
||||
#define EWRAM_1000 (*(struct Struct2001000 *)(unk_2000000 + 0x1000))
|
||||
#define EWRAM_1B000_2 (*(struct Struct201B000 *)(unk_2000000 + 0x1B000))
|
||||
#define EWRAM_1C000 (*(struct Struct201C000 *)(unk_2000000 + 0x1C000))
|
||||
|
||||
// extern
|
||||
extern u8 gUnknown_0202E8F6;
|
||||
@ -89,7 +74,7 @@ bool8 SetUpFieldMove_SoftBoiled(void) {
|
||||
|
||||
void sub_8133D28(u8 taskid) {
|
||||
EWRAM_1000.unkC = sub_8133D50;
|
||||
EWRAM_1B000.unk272 = 3;
|
||||
EWRAM_1B000_2.unk272 = 3;
|
||||
sub_808A004(taskid);
|
||||
}
|
||||
|
||||
@ -137,7 +122,7 @@ static void sub_8133D50(u8 taskId) {
|
||||
|
||||
sub_806D5A4();
|
||||
gTasks[taskId].func = sub_806FA18;
|
||||
EWRAM_1B000.unk282 = gTasks[taskId].data[11];
|
||||
EWRAM_1B000_2.unk282 = gTasks[taskId].data[11];
|
||||
}
|
||||
|
||||
static void sub_8133E74(u8 taskId) {
|
||||
@ -160,7 +145,7 @@ static void sub_8133EB8(u8 taskId) {
|
||||
|
||||
static void sub_8133EF8(void) {
|
||||
sub_806CCE4();
|
||||
EWRAM_1B000.unk261 = 2;
|
||||
EWRAM_1B000_2.unk261 = 2;
|
||||
DestroySprite(&gSprites[EWRAM_1000.unk1]);
|
||||
MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
|
||||
sub_806D538(0, 0);
|
||||
|
@ -50,7 +50,6 @@ extern u8 gUnknown_081A168F[];
|
||||
|
||||
extern u16 gBattlePartyID[];
|
||||
|
||||
extern u16 gScriptItemId;
|
||||
extern u16 gBattleTypeFlags;
|
||||
|
||||
static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな");
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "berry.h"
|
||||
#include "berry_blender.h"
|
||||
#include "hall_of_fame.h"
|
||||
#include "item_use.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
#include "palette.h"
|
||||
@ -38,7 +39,6 @@ struct LinkTestBGInfo
|
||||
extern u8 unk_2000000[];
|
||||
extern u8 unk_2004000[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u16 gScriptItemId;
|
||||
|
||||
extern u16 word_3004858;
|
||||
|
||||
|
@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m
|
||||
MenuPrint(menuItems[i].text, left, top + 2 * i);
|
||||
}
|
||||
|
||||
void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], u8 *order)
|
||||
void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
|
@ -133,7 +133,7 @@ s8 MoriDebugMenu_PokeblockCase(void)
|
||||
s32 loopCounter;
|
||||
|
||||
for (loopCounter = 0; loopCounter <= 39; loopCounter++)
|
||||
sub_810CA6C((u8)loopCounter);
|
||||
sub_810CA6C(loopCounter);
|
||||
|
||||
CloseMenu();
|
||||
return 1;
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "data2.h"
|
||||
#include "event_data.h"
|
||||
#include "item.h"
|
||||
#include "item_use.h"
|
||||
#include "mail_data.h"
|
||||
#include "main.h"
|
||||
#include "menu.h"
|
||||
@ -78,7 +79,6 @@ extern u16 gUnknown_0202E8F8;
|
||||
extern u8 gUnknown_0202E8FA;
|
||||
extern u8 gLastFieldPokeMenuOpened;
|
||||
extern u8 gPlayerPartyCount;
|
||||
extern u16 gScriptItemId;
|
||||
extern s32 gBattleMoveDamage;
|
||||
|
||||
//extern const u16 gUnknown_083769A8[][6];
|
||||
|
@ -26,7 +26,6 @@ extern void DoPlayerPCDecoration(u8);
|
||||
extern void BuyMenuFreeMemory(void);
|
||||
extern void DestroyVerticalScrollIndicator(u8);
|
||||
extern void PauseVerticalScrollIndicator(u8);
|
||||
extern void StartVerticalScrollIndicators(int);
|
||||
extern void LoadScrollIndicatorPalette(void);
|
||||
extern void ClearMailStruct(struct MailStruct *);
|
||||
extern u8 sub_807D770(void);
|
||||
|
1116
src/pokeblock.c
Normal file
1116
src/pokeblock.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -48,7 +48,7 @@ extern u32 gTMHMLearnsets[][2];
|
||||
extern u8 gBattleMonForms[];
|
||||
extern const u8 BattleText_Wally[];
|
||||
extern const u16 gHMMoves[];
|
||||
extern s8 gUnknown_083F7E28[];
|
||||
extern s8 gPokeblockFlavorCompatibilityTable[];
|
||||
extern u8 gLastUsedAbility;
|
||||
extern const u8 BattleText_PreventedSwitch[];
|
||||
extern u16 gBattlePartyID[];
|
||||
@ -1216,13 +1216,13 @@ bool8 sub_8040A3C(u16 species)
|
||||
s8 sub_8040A54(struct Pokemon *mon, u8 a2)
|
||||
{
|
||||
u8 nature = GetNature(mon);
|
||||
return gUnknown_083F7E28[nature * 5 + a2];
|
||||
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
|
||||
}
|
||||
|
||||
s8 sub_8040A7C(u32 personality, u8 a2)
|
||||
{
|
||||
u8 nature = GetNatureFromPersonality(personality);
|
||||
return gUnknown_083F7E28[nature * 5 + a2];
|
||||
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
|
||||
}
|
||||
|
||||
bool8 IsTradedMon(struct Pokemon *mon)
|
||||
|
@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "main.h"
|
||||
#include "pokenav.h"
|
||||
#include "battle.h"
|
||||
#include "data2.h"
|
||||
|
16
src/rom3.c
16
src/rom3.c
@ -580,7 +580,7 @@ void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
||||
void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -588,7 +588,7 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
gBattleBuffersTransferData[2] = c;
|
||||
for (i = 0; i < d; i++)
|
||||
gBattleBuffersTransferData[3 + i] = *(e++);
|
||||
gBattleBuffersTransferData[3 + i] = *(u8*)(e++);
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3);
|
||||
}
|
||||
|
||||
@ -613,7 +613,7 @@ void dp01_build_cmdbuf_x04_4_4_4(u8 a)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void sub_800C704(u8 a, u8 b, u8 c)
|
||||
void EmitSwitchInAnim(u8 a, u8 b, u8 c)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 5;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
@ -622,7 +622,7 @@ void sub_800C704(u8 a, u8 b, u8 c)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void dp01_build_cmdbuf_x06_a(u8 a, u8 b)
|
||||
void EmitReturnPokeToBall(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 6;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
@ -638,7 +638,7 @@ void dp01_build_cmdbuf_x07_7_7_7(u8 a)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void dp01_build_cmdbuf_x08_8_8_8(u8 a)
|
||||
void EmitTrainerSlide(u8 a)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 8;
|
||||
gBattleBuffersTransferData[1] = 8;
|
||||
@ -683,7 +683,7 @@ void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void dp01_build_cmdbuf_x0D_a(u8 a, u8 b)
|
||||
void EmitBallThrowAnim(u8 a, u8 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 13;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
@ -1058,7 +1058,7 @@ void sub_800CBE0(u8 a, u8 *b)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
||||
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -1282,7 +1282,7 @@ void EmitEffectivenessSound(u8 a, u16 b)
|
||||
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void sub_800D074(u8 a, u16 b)
|
||||
void EmitPlaySound(u8 a, u16 b)
|
||||
{
|
||||
gBattleBuffersTransferData[0] = 44;
|
||||
gBattleBuffersTransferData[1] = b;
|
||||
|
@ -1672,7 +1672,7 @@ void mli4_mapscripts_and_other(void)
|
||||
void sub_8054E20(void)
|
||||
{
|
||||
sub_805B710(0, 0);
|
||||
sub_80C8080();
|
||||
RotatingGate_InitPuzzleAndGraphics();
|
||||
}
|
||||
|
||||
void sub_8054E34(void)
|
||||
|
1228
src/rotating_gate.c
Normal file
1228
src/rotating_gate.c
Normal file
File diff suppressed because it is too large
Load Diff
2198
src/sound_check_menu.c
Normal file
2198
src/sound_check_menu.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -976,7 +976,7 @@ const u8 gBirchText_Girl[] = _("MÄDEL");
|
||||
const u8 gBirchText_NewName[] = _("NEUER NAME");
|
||||
|
||||
#ifdef SAPPHIRE
|
||||
const u8 gDefaultBoyName1[] = _("SEAN");
|
||||
const u8 gDefaultBoyName1[] = _("SEBOLD");
|
||||
#else
|
||||
const u8 gDefaultBoyName1[] = _("ROLAND");
|
||||
#endif
|
||||
@ -985,7 +985,7 @@ const u8 gDefaultBoyName3[] = _("HELGE");
|
||||
const u8 gDefaultBoyName4[] = _("JAN");
|
||||
|
||||
#ifdef SAPPHIRE
|
||||
const u8 gDefaultGirlName1[] = _("MARINA");
|
||||
const u8 gDefaultGirlName1[] = _("MARTINA");
|
||||
#else
|
||||
const u8 gDefaultGirlName1[] = _("PETRA");
|
||||
#endif
|
||||
|
20
src/tv.c
20
src/tv.c
@ -429,15 +429,15 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void);
|
||||
void GabbyAndTyBeforeInterview(void)
|
||||
{
|
||||
u8 i;
|
||||
gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species;
|
||||
gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies;
|
||||
gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove;
|
||||
gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.poke1Species;
|
||||
gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.opponentSpecies;
|
||||
gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove;
|
||||
if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff)
|
||||
{
|
||||
gSaveBlock1.gabbyAndTyData.battleNum ++;
|
||||
}
|
||||
gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0;
|
||||
if (gBattleResults.PlayerFaintCounter)
|
||||
if (gBattleResults.playerFaintCounter)
|
||||
{
|
||||
gSaveBlock1.gabbyAndTyData.valA_1 = 1;
|
||||
} else
|
||||
@ -611,11 +611,11 @@ void sub_80BDEC8(void) {
|
||||
total = 0;
|
||||
sub_80BEB20();
|
||||
sub_80BE778();
|
||||
if (gBattleResults.CaughtPoke == 0) {
|
||||
if (gBattleResults.caughtPoke == 0) {
|
||||
sub_80BE074();
|
||||
} else {
|
||||
sub_80BE028();
|
||||
if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) {
|
||||
if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.caughtPoke], gBattleResults.caughtNick) != 0) {
|
||||
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
|
||||
if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) {
|
||||
for (i=0; i<11; i++) {
|
||||
@ -641,8 +641,8 @@ void sub_80BDEC8(void) {
|
||||
show->pokemonToday.var12 = total;
|
||||
show->pokemonToday.ball = item;
|
||||
StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName);
|
||||
StringCopy(show->pokemonToday.nickname, gBattleResults.CaughtNick);
|
||||
show->pokemonToday.species = gBattleResults.CaughtPoke;
|
||||
StringCopy(show->pokemonToday.nickname, gBattleResults.caughtNick);
|
||||
show->pokemonToday.species = gBattleResults.caughtPoke;
|
||||
sub_80BE138(show);
|
||||
show->pokemonToday.language = GAME_LANGUAGE;
|
||||
show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname);
|
||||
@ -662,8 +662,8 @@ void sub_80BE028(void) {
|
||||
buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS;
|
||||
}
|
||||
buffer->worldOfMasters.var02++;
|
||||
buffer->worldOfMasters.var04 = gBattleResults.CaughtPoke;
|
||||
buffer->worldOfMasters.var08 = gBattleResults.Poke1Species;
|
||||
buffer->worldOfMasters.var04 = gBattleResults.caughtPoke;
|
||||
buffer->worldOfMasters.var08 = gBattleResults.poke1Species;
|
||||
buffer->worldOfMasters.var0a = gMapHeader.name;
|
||||
}
|
||||
|
||||
|
964
src/use_pokeblock.c
Normal file
964
src/use_pokeblock.c
Normal file
@ -0,0 +1,964 @@
|
||||
//
|
||||
// Created by Scott Norton on 5/31/17.
|
||||
//
|
||||
|
||||
#include "global.h"
|
||||
#include "main.h"
|
||||
#include "rom4.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "sprite.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokenav.h"
|
||||
#include "palette.h"
|
||||
#include "text.h"
|
||||
#include "menu.h"
|
||||
#include "sound.h"
|
||||
#include "songs.h"
|
||||
#include "pokeblock.h"
|
||||
#include "pokeblock_feed.h"
|
||||
#include "use_pokeblock.h"
|
||||
|
||||
#define GFX_TAG_CONDITIONUPDOWN 0
|
||||
|
||||
#ifdef GERMAN
|
||||
extern const u16 ConditionUpDownPalette[16];
|
||||
extern const u32 ConditionUpDownTiles[0x80];
|
||||
#else
|
||||
const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal");
|
||||
const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp");
|
||||
#endif
|
||||
|
||||
const u32 gUnknown_08406118[] = {
|
||||
MON_DATA_COOL,
|
||||
MON_DATA_TOUGH,
|
||||
MON_DATA_SMART,
|
||||
MON_DATA_CUTE,
|
||||
MON_DATA_BEAUTY
|
||||
};
|
||||
|
||||
const u8 gUnknown_0840612C[] = {
|
||||
0, 4, 3, 2, 1
|
||||
};
|
||||
|
||||
const u8 *const gUnknown_08406134[] = {
|
||||
OtherText_Coolness,
|
||||
OtherText_Toughness,
|
||||
OtherText_Smartness,
|
||||
OtherText_Cuteness,
|
||||
OtherText_Beauty
|
||||
};
|
||||
|
||||
const struct SpriteSheet gSpriteSheet_ConditionUpDown = {
|
||||
(u8 *)ConditionUpDownTiles,
|
||||
sizeof ConditionUpDownTiles,
|
||||
GFX_TAG_CONDITIONUPDOWN
|
||||
};
|
||||
|
||||
const struct SpritePalette gSpritePalette_ConditionUpDown = {
|
||||
ConditionUpDownPalette,
|
||||
GFX_TAG_CONDITIONUPDOWN
|
||||
};
|
||||
|
||||
const s16 gUnknown_08406158[][2] = {
|
||||
{0x9c, 0x1e},
|
||||
{0x75, 0x35},
|
||||
{0x75, 0x70},
|
||||
{0xc5, 0x70},
|
||||
{0xc5, 0x35}
|
||||
};
|
||||
|
||||
const struct OamData gOamData_840616C = {
|
||||
.shape = 1,
|
||||
.size = 2,
|
||||
.priority = 1
|
||||
};
|
||||
|
||||
const union AnimCmd gSpriteAnim_8406174[] = {
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd gSpriteAnim_840617C[] = {
|
||||
ANIMCMD_FRAME(8, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd *const gSpriteAnimTable_8406184[] = {
|
||||
gSpriteAnim_8406174,
|
||||
gSpriteAnim_840617C
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gSpriteTemplate_840618C = {
|
||||
GFX_TAG_CONDITIONUPDOWN,
|
||||
GFX_TAG_CONDITIONUPDOWN,
|
||||
&gOamData_840616C,
|
||||
gSpriteAnimTable_8406184,
|
||||
NULL,
|
||||
gDummySpriteAffineAnimTable,
|
||||
SpriteCallbackDummy
|
||||
};
|
||||
|
||||
asm(".text\n"
|
||||
".include \"constants/gba_constants.inc\"");
|
||||
|
||||
extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304;
|
||||
extern MainCallback gUnknown_02039308;
|
||||
extern struct Pokeblock *gUnknown_0203930C;
|
||||
extern u8 gUnknown_02039310;
|
||||
|
||||
extern u16 gKeyRepeatStartDelay;
|
||||
extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock
|
||||
|
||||
void launch_c3_walk_stairs_and_run_once(void (*const)(void));
|
||||
void sub_81361E4(void);
|
||||
void sub_813622C(void);
|
||||
void sub_8136244(void);
|
||||
void sub_8136264(void);
|
||||
void sub_8136294(void);
|
||||
void sub_81365A0(void);
|
||||
void sub_81365C8(void);
|
||||
void sub_8136638(void);
|
||||
void sub_81368A4(void);
|
||||
void sub_8089668(void);
|
||||
void sub_8136B44(void);
|
||||
u8 sub_81370E4(u8);
|
||||
void sub_8136BB8(void);
|
||||
s8 sub_8136C40(void);
|
||||
bool8 sub_8137058(void);
|
||||
void sub_8136D60(void);
|
||||
void sub_8136808(void);
|
||||
void sub_8136D8C(void);
|
||||
u8 sub_81370A4(u8);
|
||||
void sub_81369CC(void);
|
||||
void sub_8136EF0(void);
|
||||
void sub_8137138(void);
|
||||
void sub_8136C6C(void);
|
||||
bool8 sub_8136D00(void);
|
||||
void sub_8136DC0(u8 *, u8, s16);
|
||||
void sub_8136DA0(const u8 *);
|
||||
void sub_8136F74(struct Pokeblock *, struct Pokemon *);
|
||||
void sub_81371DC(struct Sprite *);
|
||||
|
||||
void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
|
||||
{
|
||||
gUnknown_02039304 = &gUnknown_083DFEC4->unkD164;
|
||||
gUnknown_02039304->pokeblock = pokeblock;
|
||||
gUnknown_02039304->callback = callback;
|
||||
gUnknown_083DFEC4->unkD162[0] = 2;
|
||||
launch_c3_walk_stairs_and_run_once(sub_8136294);
|
||||
SetMainCallback2(sub_8136244);
|
||||
}
|
||||
|
||||
void sub_8136174(void)
|
||||
{
|
||||
gUnknown_02039304->pokeblock = gUnknown_0203930C;
|
||||
gUnknown_02039304->callback = gUnknown_02039308;
|
||||
gUnknown_02039310 = sub_81370E4(gUnknown_02039310);
|
||||
gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1;
|
||||
gUnknown_083DFEC4->unkD162[0] = 2;
|
||||
launch_c3_walk_stairs_and_run_once(sub_8136294);
|
||||
SetMainCallback2(sub_81361E4);
|
||||
}
|
||||
|
||||
void sub_81361E4(void)
|
||||
{
|
||||
gUnknown_02039304->unk0();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
if (gUnknown_02039304->unk0 == sub_81365C8)
|
||||
{
|
||||
REG_DISPCNT = 0;
|
||||
gUnknown_02039304->unk50 = 0;
|
||||
SetMainCallback2(sub_813622C);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_813622C(void)
|
||||
{
|
||||
sub_81368A4();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_8136244(void)
|
||||
{
|
||||
gUnknown_02039304->unk0();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
void sub_8136264(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
sub_80F5CDC(6);
|
||||
sub_8089668();
|
||||
}
|
||||
|
||||
void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
|
||||
{
|
||||
gUnknown_02039304->unk0 = func;
|
||||
gUnknown_02039304->unk50 = 0;
|
||||
}
|
||||
|
||||
void sub_8136294(void)
|
||||
{
|
||||
bool32 c1LinkRelatedActive;
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
c1LinkRelatedActive = is_c1_link_related_active();
|
||||
gUnknown_083DFEC4->unk6DAC = c1LinkRelatedActive;
|
||||
if ((bool8)c1LinkRelatedActive == FALSE)
|
||||
{
|
||||
gUnknown_02039304->unk55 = 0;
|
||||
launch_c3_walk_stairs_and_run_once(sub_81365A0);
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 2:
|
||||
SetVBlankCallback(NULL);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 3:
|
||||
SetUpWindowConfig(&gWindowConfig_81E7080);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 4:
|
||||
MultistepInitMenuWindowBegin(&gWindowConfig_81E7080);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 5:
|
||||
if (MultistepInitMenuWindowContinue())
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_083DFEC4->unk76AA = 0;
|
||||
gUnknown_083DFEC4->unk87E0 = NULL;
|
||||
gUnknown_083DFEC4->unk030C = 0x20;
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 7:
|
||||
sub_80F2688();
|
||||
gUnknown_02039304->unk50++;
|
||||
// fallthrough
|
||||
case 8:
|
||||
if (!sub_80F26BC())
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
sub_80F2C80(1);
|
||||
gUnknown_02039304->unk50++;
|
||||
// fallthrough
|
||||
case 10:
|
||||
if (!sub_80F2CBC(1))
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
gKeyRepeatStartDelay = 20;
|
||||
gUnknown_083DFEC4->unk8828 = CalculatePlayerPartyCount();
|
||||
gUnknown_083DFEC4->unk9344 = 0;
|
||||
gUnknown_083DFEC4->unk8768 = NULL;
|
||||
sub_80F4BD0();
|
||||
gUnknown_083DFEC4->unkD160 = 0;
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 12:
|
||||
if (!sub_80F1778())
|
||||
{
|
||||
REG_BG2VOFS = 6;
|
||||
REG_BG3VOFS = 6;
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
sub_80F2E18(0);
|
||||
gUnknown_083DFEC4->unk8768->unk26 = 0xffd8;
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 14:
|
||||
if (!sub_80F170C())
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
sub_80F33A8();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 16:
|
||||
DmaClear32(3, BG_SCREEN_ADDR(31), 0x800);
|
||||
REG_BG1VOFS = 0;
|
||||
REG_BG1HOFS = 0;
|
||||
REG_BG1CNT = BGCNT_SCREENBASE(31);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 17:
|
||||
sub_80F567C(&gUnknown_083DFEC4->unk8ff0, gUnknown_083DFEC4->unk9004);
|
||||
sub_80F5B38();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 18:
|
||||
if (!sub_80F5B50())
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
sub_80F556C(gUnknown_083DFEC4->unk9004);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 20:
|
||||
sub_80F1934();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 21:
|
||||
REG_WIN0H = 0xf0;
|
||||
REG_WIN1H = 0x9b;
|
||||
REG_WIN0V = 0x3273;
|
||||
REG_WIN1V = 0x3273;
|
||||
REG_WININ = 0x3f3f;
|
||||
REG_WINOUT = 0x1b;
|
||||
REG_BG0VOFS = 0x28;
|
||||
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
|
||||
// fallthrough
|
||||
case 22:
|
||||
gUnknown_02039304->unk55 = 1;
|
||||
launch_c3_walk_stairs_and_run_once(sub_81365C8);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81365A0(void)
|
||||
{
|
||||
while (!gUnknown_02039304->unk55)
|
||||
{
|
||||
sub_8136294();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81365C8(void)
|
||||
{
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
SetVBlankCallback(sub_8136264);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_80F3C94();
|
||||
sub_80F3D00();
|
||||
launch_c3_walk_stairs_and_run_once(sub_8136638);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136638(void)
|
||||
{
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
if (gMain.heldKeys & DPAD_UP)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_80F5060(TRUE);
|
||||
move_anim_execute();
|
||||
gUnknown_02039304->unk50 = 1;
|
||||
}
|
||||
else if (gMain.heldKeys & DPAD_DOWN)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
sub_80F5060(FALSE);
|
||||
move_anim_execute();
|
||||
gUnknown_02039304->unk50 = 1;
|
||||
}
|
||||
else if (gMain.newKeys & B_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
gUnknown_02039304->unk50 = 3;
|
||||
}
|
||||
else if (gMain.newKeys & A_BUTTON)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
if (gUnknown_083DFEC4->unk87DC == gUnknown_083DFEC4->unk87DA - 1)
|
||||
{
|
||||
gUnknown_02039304->unk50 = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_02039304->unk50 = 5;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (!gpu_sync_bg_show())
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_8055870())
|
||||
{
|
||||
sub_80F1934();
|
||||
sub_80F3D00();
|
||||
gUnknown_02039304->unk50 = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
launch_c3_walk_stairs_and_run_once(sub_8136B44);
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case 5:
|
||||
sub_8136BB8();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 6:
|
||||
switch (sub_8136C40())
|
||||
{
|
||||
case 1:
|
||||
case -1:
|
||||
gUnknown_02039304->unk50 = 0;
|
||||
break;
|
||||
case 0:
|
||||
if (sub_8137058())
|
||||
{
|
||||
sub_8136D60();
|
||||
gUnknown_02039304->unk50 = 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
launch_c3_walk_stairs_and_run_once(sub_8136808);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
{
|
||||
sub_8136D8C();
|
||||
gUnknown_02039304->unk50 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136808(void)
|
||||
{
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC);
|
||||
gUnknown_02039308 = gUnknown_02039304->callback;
|
||||
gUnknown_0203930C = gUnknown_02039304->pokeblock;
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gMain.savedCallback = sub_8136174;
|
||||
SetMainCallback2(sub_8147ADC);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81368A4(void)
|
||||
{
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310)
|
||||
{
|
||||
sub_80F5060(gUnknown_02039304->unk56);
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_02039304->unk50 = 3;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (!gpu_sync_bg_show())
|
||||
{
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!sub_8055870())
|
||||
{
|
||||
sub_80F1934();
|
||||
gUnknown_02039304->unk50 = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
BlendPalettes(-1, 16, 0);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 4:
|
||||
REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 5:
|
||||
SetVBlankCallback(sub_8136264);
|
||||
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 6:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
sub_80F3C94();
|
||||
sub_80F3D00();
|
||||
launch_c3_walk_stairs_and_run_once(sub_81369CC);
|
||||
SetMainCallback2(sub_8136244);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81369CC(void)
|
||||
{
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
gUnknown_02039304->pokemon = &gPlayerParty[0];
|
||||
gUnknown_02039304->pokemon = &gPlayerParty[gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx];
|
||||
move_anim_execute();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 1:
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 2:
|
||||
sub_8136EF0();
|
||||
sub_80F567C(gUnknown_02039304->unk5c, gUnknown_083DFEC4->unk9040);
|
||||
sub_80F5550(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040);
|
||||
sub_8137138();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 3:
|
||||
if (!sub_80F555C())
|
||||
{
|
||||
sub_80F7224(sub_81370A4(gUnknown_083DFEC4->unk87DC));
|
||||
sub_80F3D00();
|
||||
gUnknown_02039304->unk52 = 0;
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if ((++gUnknown_02039304->unk52) > 16)
|
||||
{
|
||||
sub_8136C6C();
|
||||
gUnknown_02039304->unk50++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00())
|
||||
{
|
||||
sub_810CA6C((u8)gScriptItemId);
|
||||
launch_c3_walk_stairs_and_run_once(sub_8136B44);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136B44(void)
|
||||
{
|
||||
switch (gUnknown_02039304->unk50)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gUnknown_02039304->unk50 = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sub_80F5BDC();
|
||||
gUnknown_02039304->unk50++;
|
||||
break;
|
||||
case 3:
|
||||
SetMainCallback2(gUnknown_02039304->callback);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136BB8(void)
|
||||
{
|
||||
GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer);
|
||||
StringGetEnd10(gUnknown_02039304->stringBuffer);
|
||||
StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock);
|
||||
BasicInitMenuWindow(&gWindowConfig_81E709C);
|
||||
MenuDrawTextWindow(0, 16, 29, 19);
|
||||
MenuPrint(gUnknown_02039304->stringBuffer, 1, 17);
|
||||
DisplayYesNoMenu(23, 10, 1);
|
||||
MoveMenuCursor(0);
|
||||
}
|
||||
|
||||
s8 sub_8136C40(void)
|
||||
{
|
||||
s8 retval = ProcessMenuInputNoWrap();
|
||||
if ((u8)(retval + 1) < 3)
|
||||
{
|
||||
MenuZeroFillScreen();
|
||||
BasicInitMenuWindow(&gWindowConfig_81E7080);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void sub_8136C6C(void)
|
||||
{
|
||||
BasicInitMenuWindow(&gWindowConfig_81E709C);
|
||||
MenuDrawTextWindow(0, 16, 29, 19);
|
||||
for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++);
|
||||
if (gUnknown_02039304->unk53 < 5)
|
||||
{
|
||||
sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0);
|
||||
}
|
||||
sub_8136DA0(gUnknown_02039304->stringBuffer);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
bool8 sub_8136D00(void)
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
if (++gUnknown_02039304->unk53 >= 5)
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0)
|
||||
{
|
||||
sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
|
||||
sub_8136DA0(gUnknown_02039304->stringBuffer);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
gUnknown_02039304->unk53 = 5;
|
||||
return FALSE;
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
bool8 sub_8136D00(void)
|
||||
{
|
||||
asm_unified("\tpush {r4,r5,lr}\n"
|
||||
"\tldr r4, _08136D30 @ =gUnknown_02039304\n"
|
||||
"\tadds r3, r4, 0\n"
|
||||
"\tmovs r5, 0x5\n"
|
||||
"_08136D08:\n"
|
||||
"\tldr r0, [r3]\n"
|
||||
"\tadds r0, 0x53\n"
|
||||
"\tldrb r1, [r0]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r2, [r3]\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tadds r1, 0x53\n"
|
||||
"\tldrb r0, [r1]\n"
|
||||
"\tcmp r0, 0x4\n"
|
||||
"\tbhi _08136D34\n"
|
||||
"\tadds r0, r2, 0\n"
|
||||
"\tadds r0, 0x61\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldrb r0, [r0]\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _08136D3A\n"
|
||||
"\tb _08136D08\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08136D30: .4byte gUnknown_02039304\n"
|
||||
"_08136D34:\n"
|
||||
"\tstrb r5, [r1]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tb _08136D5A\n"
|
||||
"_08136D3A:\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tadds r0, r2, 0\n"
|
||||
"\tadds r0, 0x10\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tadds r1, 0x53\n"
|
||||
"\tldrb r1, [r1]\n"
|
||||
"\tadds r2, 0x61\n"
|
||||
"\tadds r2, r1\n"
|
||||
"\tldrb r2, [r2]\n"
|
||||
"\tbl sub_8136DC0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x10\n"
|
||||
"\tbl sub_8136DA0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"_08136D5A:\n"
|
||||
"\tpop {r4,r5}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_8136D60(void)
|
||||
{
|
||||
BasicInitMenuWindow(&gWindowConfig_81E709C);
|
||||
MenuDrawTextWindow(0, 16, 29, 19);
|
||||
MenuPrint(gOtherText_WontEat, 1, 17);
|
||||
}
|
||||
|
||||
void sub_8136D8C(void)
|
||||
{
|
||||
MenuZeroFillScreen();
|
||||
BasicInitMenuWindow(&gWindowConfig_81E7080);
|
||||
}
|
||||
|
||||
void sub_8136DA0(const u8 *message)
|
||||
{
|
||||
MenuDrawTextWindow(0, 16, 29, 19);
|
||||
MenuPrint(message, 1, 17);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
|
||||
{
|
||||
u16 v0 = a2;
|
||||
if (a2 != 0)
|
||||
{
|
||||
if ((v0 = max(a2, 0)) == 0);
|
||||
StringCopy(dest, gUnknown_08406134[a1]);
|
||||
StringAppend(dest, gOtherText_WasEnhanced);
|
||||
}
|
||||
else
|
||||
{
|
||||
StringCopy(dest, gOtherText_NothingChanged);
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
|
||||
{
|
||||
asm_unified("\tpush {r4,lr}\n"
|
||||
"\tadds r4, r0, 0\n"
|
||||
"\tlsls r1, 24\n"
|
||||
"\tlsrs r3, r1, 24\n"
|
||||
"\tlsls r2, 16\n"
|
||||
"\tlsrs r0, r2, 16\n"
|
||||
"\tasrs r2, 16\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tbeq _08136DFC\n"
|
||||
"\tcmp r2, 0\n"
|
||||
"\tble _08136DD8\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"_08136DD8:\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r1, _08136DF4 @ =gUnknown_08406134\n"
|
||||
"\tlsls r0, r3, 2\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl StringCopy\n"
|
||||
"\tldr r1, _08136DF8 @ =gOtherText_WasEnhanced\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl StringAppend\n"
|
||||
"\tb _08136E04\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08136DF4: .4byte gUnknown_08406134\n"
|
||||
"_08136DF8: .4byte gOtherText_WasEnhanced\n"
|
||||
"_08136DFC:\n"
|
||||
"\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl StringCopy\n"
|
||||
"_08136E04:\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08136E0C: .4byte gOtherText_NothingChanged");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_8136E10(struct Pokemon *pokemon, u8 *data)
|
||||
{
|
||||
u16 i;
|
||||
for (i=0; i<5; i++)
|
||||
{
|
||||
data[i] = GetMonData(pokemon, gUnknown_08406118[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
|
||||
{
|
||||
u16 i;
|
||||
s16 cstat;
|
||||
u8 data;
|
||||
if (GetMonData(pokemon, MON_DATA_SHEEN) != 255)
|
||||
{
|
||||
sub_8136F74(pokeblock, pokemon);
|
||||
for (i=0; i<5; i++)
|
||||
{
|
||||
data = GetMonData(pokemon, gUnknown_08406118[i]);
|
||||
cstat = data + gUnknown_02039304->unk66[i];
|
||||
if (cstat < 0)
|
||||
cstat = 0;
|
||||
if (cstat > 255)
|
||||
cstat = 255;
|
||||
data = cstat;
|
||||
SetMonData(pokemon, gUnknown_08406118[i], &data);
|
||||
}
|
||||
cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN);
|
||||
cstat = cstat + pokeblock->feel;
|
||||
if (cstat > 255)
|
||||
cstat = 255;
|
||||
data = cstat;
|
||||
SetMonData(pokemon, MON_DATA_SHEEN, &data);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136EF0(void)
|
||||
{
|
||||
u16 i;
|
||||
struct Pokemon *pokemon = gPlayerParty;
|
||||
pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx;
|
||||
sub_8136E10(pokemon, gUnknown_02039304->unk57);
|
||||
sub_8136E40(gUnknown_02039304->pokeblock, pokemon);
|
||||
sub_8136E10(pokemon, gUnknown_02039304->unk5c);
|
||||
for (i=0; i<5; i++)
|
||||
{
|
||||
gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
|
||||
{
|
||||
s8 direction;
|
||||
s8 i;
|
||||
s16 amount;
|
||||
s8 boost;
|
||||
s8 taste;
|
||||
gUnknown_02039304->unk66[0] = pokeblock->spicy;
|
||||
gUnknown_02039304->unk66[1] = pokeblock->sour;
|
||||
gUnknown_02039304->unk66[2] = pokeblock->bitter;
|
||||
gUnknown_02039304->unk66[3] = pokeblock->sweet;
|
||||
gUnknown_02039304->unk66[4] = pokeblock->dry;
|
||||
if (gUnknown_02039312 > 0)
|
||||
direction = 1;
|
||||
else if (gUnknown_02039312 < 0)
|
||||
direction = -1;
|
||||
else
|
||||
return;
|
||||
for (i=0; i<5; i++)
|
||||
{
|
||||
amount = gUnknown_02039304->unk66[i];
|
||||
boost = amount / 10;
|
||||
if (amount % 10 >= 5) // round to the nearest
|
||||
boost++;
|
||||
taste = sub_8040A54(pokemon, gUnknown_0840612C[i]);
|
||||
if (taste == direction)
|
||||
{
|
||||
gUnknown_02039304->unk66[i] += boost * taste;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8137058(void)
|
||||
{
|
||||
struct Pokemon *pokemon = gPlayerParty;
|
||||
pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx;
|
||||
if (GetMonData(pokemon, MON_DATA_SHEEN) == 255)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_81370A4(u8 a0)
|
||||
{
|
||||
u8 i;
|
||||
for (i=0; i<PARTY_SIZE; i++)
|
||||
{
|
||||
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
|
||||
{
|
||||
if (a0 == 0)
|
||||
return i;
|
||||
a0--;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 sub_81370E4(u8 a0)
|
||||
{
|
||||
u8 ct;
|
||||
u8 i;
|
||||
for (i=0, ct=0; i<a0; i++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
|
||||
{
|
||||
ct++;
|
||||
}
|
||||
}
|
||||
return a0 - ct;
|
||||
}
|
||||
|
||||
u8 sub_8137124(u8 a0)
|
||||
{
|
||||
return sub_81370A4(a0);
|
||||
}
|
||||
|
||||
void sub_8137138(void)
|
||||
{
|
||||
u16 flavor;
|
||||
u8 spriteidx;
|
||||
LoadSpriteSheet(&gSpriteSheet_ConditionUpDown);
|
||||
LoadSpritePalette(&gSpritePalette_ConditionUpDown);
|
||||
gUnknown_02039304->unk54 = 0;
|
||||
for (flavor=0; flavor<5; flavor++)
|
||||
{
|
||||
if (gUnknown_02039304->unk61[flavor] != 0)
|
||||
{
|
||||
spriteidx = CreateSprite(&gSpriteTemplate_840618C, gUnknown_08406158[flavor][0], gUnknown_08406158[flavor][1], 0);
|
||||
if (spriteidx != MAX_SPRITES)
|
||||
{
|
||||
if (gUnknown_02039304->unk61[flavor] != 0)
|
||||
{
|
||||
gSprites[spriteidx].callback = sub_81371DC;
|
||||
}
|
||||
gUnknown_02039304->unk54++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81371DC(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data0 <= 5)
|
||||
sprite->pos2.y -= 2;
|
||||
else if (sprite->data0 <= 11)
|
||||
sprite->pos2.y += 2;
|
||||
if ((++sprite->data0) > 60)
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
gUnknown_02039304->unk54--;
|
||||
}
|
||||
}
|
@ -119,7 +119,7 @@ gCurrentMove: @ 2024BE6
|
||||
gUnknown_02024BE8: @ 2024BE8
|
||||
.space 0x2
|
||||
|
||||
gUnknown_02024BEA: @ 2024BEA
|
||||
gRandomMove: @ 2024BEA
|
||||
.space 0x2
|
||||
|
||||
gBattleMoveDamage: @ 2024BEC
|
||||
@ -539,7 +539,10 @@ gTrainerCards: @ 202FFC0
|
||||
.space 0xE0
|
||||
|
||||
gPokemonStorage: @ 20300A0
|
||||
.space 0x83D0
|
||||
.space 0x360
|
||||
|
||||
gUnknown_02030400: @ 02030400
|
||||
.space 0x8070
|
||||
|
||||
gUnknown_02038470: @ 2038470
|
||||
.space 0x3
|
||||
@ -773,13 +776,13 @@ gUnknown_020387E8: @ 20387E8
|
||||
gUnknown_020387EC: @ 20387EC
|
||||
.space 0x4
|
||||
|
||||
gUnknown_020387F0: @ 20387F0
|
||||
gRotatingGate_GateSpriteIds: @ 20387F0
|
||||
.space 0x10
|
||||
|
||||
gUnknown_02038800: @ 2038800
|
||||
gRotatingGate_PuzzleConfig: @ 2038800
|
||||
.space 0x4
|
||||
|
||||
gUnknown_02038804: @ 2038804
|
||||
gRotatingGate_PuzzleCount: @ 2038804
|
||||
.space 0x4
|
||||
|
||||
.include "src/safari_zone.o"
|
||||
|
Loading…
x
Reference in New Issue
Block a user