solve conflicts
102
.github/ISSUE_TEMPLATE/01_battle_engine_bugs.yaml
vendored
@ -1,50 +1,52 @@
|
||||
name: ⚔️ Battle Engine mechanical bugs 🐛
|
||||
description: File a bug report related to battle mechanic, be it moves, abilities and/or items.
|
||||
labels: ["bug", "status: unconfirmed", "category: battle-mechanic"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.5.1 (Default)
|
||||
- upcoming (Edge)
|
||||
- 1.5.0
|
||||
- 1.4.3
|
||||
- 1.4.2
|
||||
- 1.4.1
|
||||
- 1.4.0
|
||||
- pre-1.4.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
name: ⚔️ Battle Engine mechanical bugs 🐛
|
||||
description: File a bug report related to battle mechanic, be it moves, abilities and/or items.
|
||||
labels: ["bug", "status: unconfirmed", "category: battle-mechanic"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.5.3 (Default)
|
||||
- upcoming (Edge)
|
||||
- 1.5.2
|
||||
- 1.5.1
|
||||
- 1.5.0
|
||||
- 1.4.3
|
||||
- 1.4.2
|
||||
- 1.4.1
|
||||
- 1.4.0
|
||||
- pre-1.4.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
102
.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
vendored
@ -1,50 +1,52 @@
|
||||
name: 🧠 Battle AI bugs 🐛
|
||||
description: File a bug report related to battle AI.
|
||||
labels: ["bug", "status: unconfirmed", "category: battle-ai"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.5.1 (Default)
|
||||
- upcoming (Edge)
|
||||
- 1.5.0
|
||||
- 1.4.3
|
||||
- 1.4.2
|
||||
- 1.4.1
|
||||
- 1.4.0
|
||||
- pre-1.4.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
name: 🧠 Battle AI bugs 🐛
|
||||
description: File a bug report related to battle AI.
|
||||
labels: ["bug", "status: unconfirmed", "category: battle-ai"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.5.3 (Default)
|
||||
- upcoming (Edge)
|
||||
- 1.5.2
|
||||
- 1.5.1
|
||||
- 1.5.0
|
||||
- 1.4.3
|
||||
- 1.4.2
|
||||
- 1.4.1
|
||||
- 1.4.0
|
||||
- pre-1.4.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
54
.github/ISSUE_TEMPLATE/03_feature_requests.yaml
vendored
@ -1,27 +1,27 @@
|
||||
name: 🙏 Feature Request 🙏
|
||||
description: Do you want a feature to be added to the Expansion? Let us know!
|
||||
labels: ["feature-request"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
name: 🙏 Feature Request 🙏
|
||||
description: Do you want a feature to be added to the Expansion? Let us know!
|
||||
labels: ["feature-request"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
102
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
@ -1,50 +1,52 @@
|
||||
name: 💾 Other errors 🖥️
|
||||
description: Everything else that doesn't fit in the above categories.
|
||||
labels: ["bug", "status: unconfirmed"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.5.1 (Default)
|
||||
- upcoming (Edge)
|
||||
- 1.5.0
|
||||
- 1.4.3
|
||||
- 1.4.2
|
||||
- 1.4.1
|
||||
- 1.4.0
|
||||
- pre-1.4.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
name: 💾 Other errors 🖥️
|
||||
description: Everything else that doesn't fit in the above categories.
|
||||
labels: ["bug", "status: unconfirmed"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please fill in all required fields with as many details as possible.
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: |
|
||||
Describe the issue you are experiencing.
|
||||
Attach images/videos if possible.
|
||||
placeholder: |
|
||||
Please enter a description of the issue. Here you can also attach log screenshots, gifs or a video
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.5.3 (Default)
|
||||
- upcoming (Edge)
|
||||
- 1.5.2
|
||||
- 1.5.1
|
||||
- 1.5.0
|
||||
- 1.4.3
|
||||
- 1.4.2
|
||||
- 1.4.1
|
||||
- 1.4.0
|
||||
- pre-1.4.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: upcomingversion
|
||||
attributes:
|
||||
label: Upcoming Version
|
||||
description: If you're using the upcoming branch, please specify what was the commit hash you pulled from.
|
||||
validations:
|
||||
required: false
|
||||
- type: input
|
||||
id: contact
|
||||
attributes:
|
||||
label: Discord contact info
|
||||
description: Provide your Discord tag here so we can contact you in case we need more details. Be sure to join our server ([here](https://discord.gg/6CzjAG6GZk)).
|
||||
placeholder: ex. Lunos#4026
|
||||
validations:
|
||||
required: false
|
||||
|
2
Makefile
@ -450,7 +450,7 @@ $(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
|
||||
|
||||
# NOTE: Based on C_DEP above, but without NODEP and KEEP_TEMPS handling.
|
||||
define TEST_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib -I test $2)
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) $$< charmap.txt -i | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
endef
|
||||
|
@ -1318,7 +1318,7 @@
|
||||
.2byte \holdEffect
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
|
||||
.macro dostockpilestatchangeswearoff, battler:req, statChangeInstr:req
|
||||
callnative BS_DoStockpileStatChangesWearOff
|
||||
.byte \battler
|
||||
@ -1354,7 +1354,7 @@
|
||||
.macro setsnow
|
||||
callnative BS_SetSnow
|
||||
.endm
|
||||
|
||||
|
||||
.macro setzeffect
|
||||
callnative BS_SetZEffect
|
||||
.endm
|
||||
@ -1364,12 +1364,6 @@
|
||||
callnative BS_TrySymbiosis
|
||||
.endm
|
||||
|
||||
@ returns TRUE or FALSE to gBattleCommunication[0]
|
||||
.macro canteleport battler:req
|
||||
callnative BS_CanTeleport
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
@ returns B_SIDE_x to gBattleCommunication[0]
|
||||
.macro getbattlerside battler:req
|
||||
callnative BS_GetBattlerSide
|
||||
@ -2083,7 +2077,7 @@
|
||||
.macro swapsidestatuses
|
||||
various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES
|
||||
.endm
|
||||
|
||||
|
||||
.macro swapstats stat:req
|
||||
various BS_ATTACKER, VARIOUS_SWAP_STATS
|
||||
.byte \stat
|
||||
@ -2184,6 +2178,11 @@
|
||||
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifside battler:req, side:req, equalJumpInstr:req
|
||||
getbattlerside \battler
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, \side, \equalJumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifbattletype flags:req, jumpInstr:req
|
||||
jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpInstr
|
||||
.endm
|
||||
|
3
common_syms/battle_controllers.txt
Normal file
@ -0,0 +1,3 @@
|
||||
gBattlerControllerFuncs
|
||||
gBattleControllerData
|
||||
gBattlerControllerEndFuncs
|
@ -2,8 +2,6 @@ gPreBattleCallback1
|
||||
gBattleMainFunc
|
||||
gBattleResults
|
||||
gLeveledUpInBattle
|
||||
gBattlerControllerFuncs
|
||||
gHealthboxSpriteIds
|
||||
gMultiUsePlayerCursor
|
||||
gNumberOfMovesToChoose
|
||||
gBattleControllerData
|
||||
|
@ -14883,7 +14883,6 @@ Move_CORROSIVE_GAS::
|
||||
clearmonbg ANIM_ATTACKER
|
||||
end
|
||||
|
||||
|
||||
@Credits to Skeli
|
||||
Move_COACHING::
|
||||
playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER
|
||||
|
@ -436,7 +436,18 @@ gBattleScriptsForMoveEffects::
|
||||
.4byte BattleScript_EffectSpinOut @ EFFECT_SPIN_OUT
|
||||
.4byte BattleScript_EffectMakeItRain @ EFFECT_MAKE_IT_RAIN
|
||||
.4byte BattleScript_EffectCorrosiveGas @ EFFECT_CORROSIVE_GAS
|
||||
|
||||
.4byte BattleScript_EffectHit @ EFFECT_POPULATION_BOMB
|
||||
.4byte BattleScript_EffectMortalSpin @ EFFECT_MORTAL_SPIN
|
||||
|
||||
BattleScript_EffectMortalSpin:
|
||||
call BattleScript_EffectHit_Ret
|
||||
rapidspinfree
|
||||
setmoveeffect MOVE_EFFECT_POISON
|
||||
seteffectwithchance
|
||||
tryfaintmon BS_TARGET
|
||||
moveendall
|
||||
end
|
||||
|
||||
BattleScript_EffectCorrosiveGas:
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
@ -452,7 +463,7 @@ BattleScript_EffectCorrosiveGas:
|
||||
printstring STRINGID_PKMNITEMMELTED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
|
||||
BattleScript_CorrosiveGasFail:
|
||||
pause B_WAIT_TIME_SHORT
|
||||
orhalfword gMoveResultFlags, MOVE_RESULT_FAILED
|
||||
@ -4012,6 +4023,8 @@ BattleScript_MoveMissedDoDamage::
|
||||
.if B_CRASH_IF_TARGET_IMMUNE < GEN_4
|
||||
jumpifhalfword CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
|
||||
.endif
|
||||
moveendcase MOVEEND_PROTECT_LIKE_EFFECT @ Spiky Shield's damage happens before recoil.
|
||||
jumpifhasnohp BS_ATTACKER, BattleScript_MoveEnd
|
||||
printstring STRINGID_PKMNCRASHED
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
damagecalc
|
||||
@ -5037,7 +5050,7 @@ BattleScript_EffectBatonPass::
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectRapidSpin::
|
||||
.if B_SPEED_BUFFING_RAPID_SPIN == GEN_8
|
||||
.if B_SPEED_BUFFING_RAPID_SPIN >= GEN_8
|
||||
call BattleScript_EffectHit_Ret
|
||||
jumpifhalfword CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd
|
||||
setmoveeffect MOVE_EFFECT_RAPIDSPIN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN
|
||||
@ -5289,15 +5302,14 @@ BattleScript_EffectHurricane:
|
||||
BattleScript_EffectTeleport:
|
||||
attackcanceler
|
||||
attackstring
|
||||
ppreduce
|
||||
.if B_TELEPORT_BEHAVIOR >= GEN_7
|
||||
canteleport BS_ATTACKER
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_EffectTeleportNew
|
||||
goto BattleScript_ButItFailed
|
||||
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_EffectBatonPass
|
||||
jumpifside BS_ATTACKER, B_SIDE_PLAYER, BattleScript_EffectBatonPass
|
||||
.else
|
||||
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed
|
||||
.endif
|
||||
BattleScript_EffectTeleportTryToRunAway:
|
||||
ppreduce
|
||||
getifcantrunfrombattle BS_ATTACKER
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, BATTLE_RUN_FORBIDDEN, BattleScript_ButItFailed
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, BATTLE_RUN_FAILURE, BattleScript_PrintAbilityMadeIneffective
|
||||
@ -5308,29 +5320,6 @@ BattleScript_EffectTeleportTryToRunAway:
|
||||
setoutcomeonteleport BS_ATTACKER
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectTeleportNew:
|
||||
getbattlerside BS_ATTACKER
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, B_SIDE_OPPONENT, BattleScript_EffectTeleportTryToRunAway
|
||||
attackanimation
|
||||
waitanimation
|
||||
openpartyscreen BS_ATTACKER, BattleScript_EffectTeleportNewEnd
|
||||
switchoutabilities BS_ATTACKER
|
||||
waitstate
|
||||
switchhandleorder BS_ATTACKER, 2
|
||||
returntoball BS_ATTACKER
|
||||
getswitchedmondata BS_ATTACKER
|
||||
switchindataupdate BS_ATTACKER
|
||||
hpthresholds BS_ATTACKER
|
||||
trytoclearprimalweather
|
||||
printstring STRINGID_EMPTYSTRING3
|
||||
waitmessage 1
|
||||
printstring STRINGID_SWITCHINMON
|
||||
switchinanim BS_ATTACKER, TRUE
|
||||
waitstate
|
||||
switchineffects BS_ATTACKER
|
||||
BattleScript_EffectTeleportNewEnd:
|
||||
goto BattleScript_MoveEnd
|
||||
|
||||
BattleScript_EffectBeatUp::
|
||||
attackcanceler
|
||||
accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
|
||||
@ -6793,14 +6782,14 @@ BattleScript_SunlightFaded::
|
||||
BattleScript_OverworldWeatherStarts::
|
||||
printfromtable gWeatherStartsStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
playanimation_var BS_ATTACKER, sB_ANIM_ARG1
|
||||
playanimation_var BS_BATTLER_0, sB_ANIM_ARG1
|
||||
call BattleScript_ActivateWeatherAbilities
|
||||
end3
|
||||
|
||||
BattleScript_OverworldTerrain::
|
||||
printfromtable gTerrainStringIds
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
playanimation BS_SCRIPTING, B_ANIM_RESTORE_BG
|
||||
playanimation BS_BATTLER_0, B_ANIM_RESTORE_BG
|
||||
call BattleScript_ActivateTerrainEffects
|
||||
end3
|
||||
|
||||
@ -7787,7 +7776,7 @@ BattleScript_WishMegaEvolution::
|
||||
BattleScript_PrimalReversion::
|
||||
call BattleScript_PrimalReversionRet
|
||||
end2
|
||||
|
||||
|
||||
BattleScript_PrimalReversionRestoreAttacker::
|
||||
call BattleScript_PrimalReversionRet
|
||||
copybyte gBattlerAttacker, sSAVED_BATTLER
|
||||
|
282
gflib/sprite.c
@ -48,11 +48,7 @@ struct OamDimensions
|
||||
s8 height;
|
||||
};
|
||||
|
||||
static void UpdateOamCoords(void);
|
||||
static void BuildSpritePriorities(void);
|
||||
static void SortSprites(void);
|
||||
static void CopyMatricesToOamBuffer(void);
|
||||
static void AddSpritesToOamBuffer(void);
|
||||
static void SortSprites(u32 *spritePriorities, s32 n);
|
||||
static u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
|
||||
static void ResetOamMatrices(void);
|
||||
static void ResetSprite(struct Sprite *sprite);
|
||||
@ -280,12 +276,12 @@ u32 gOamMatrixAllocBitmap;
|
||||
u8 gReservedSpritePaletteCount;
|
||||
|
||||
EWRAM_DATA struct Sprite gSprites[MAX_SPRITES + 1] = {0};
|
||||
EWRAM_DATA static u16 sSpritePriorities[MAX_SPRITES] = {0};
|
||||
EWRAM_DATA static u8 sSpriteOrder[MAX_SPRITES] = {0};
|
||||
EWRAM_DATA static bool8 sShouldProcessSpriteCopyRequests = 0;
|
||||
EWRAM_DATA static u8 sSpriteCopyRequestCount = 0;
|
||||
EWRAM_DATA static struct SpriteCopyRequest sSpriteCopyRequests[MAX_SPRITES] = {0};
|
||||
EWRAM_DATA u8 gOamLimit = 0;
|
||||
static EWRAM_DATA u8 gOamDummyIndex = 0;
|
||||
EWRAM_DATA u16 gReservedSpriteTileCount = 0;
|
||||
EWRAM_DATA static u8 sSpriteTileAllocBitmap[128] = {0};
|
||||
EWRAM_DATA s16 gSpriteCoordOffsetX = 0;
|
||||
@ -296,6 +292,7 @@ EWRAM_DATA bool8 gAffineAnimsDisabled = FALSE;
|
||||
void ResetSpriteData(void)
|
||||
{
|
||||
ResetOamRange(0, 128);
|
||||
gOamDummyIndex = 0;
|
||||
ResetAllSprites();
|
||||
ClearSpriteCopyRequests();
|
||||
ResetAffineAnimData();
|
||||
@ -326,179 +323,128 @@ void AnimateSprites(void)
|
||||
|
||||
void BuildOamBuffer(void)
|
||||
{
|
||||
u8 temp;
|
||||
UpdateOamCoords();
|
||||
BuildSpritePriorities();
|
||||
SortSprites();
|
||||
temp = gMain.oamLoadDisabled;
|
||||
bool32 oamLoadDisabled;
|
||||
u32 i, stride;
|
||||
u8 oamIndex;
|
||||
|
||||
// All attributes which affect sorting packed into a single u32:
|
||||
// { priority:2, subpriority:8, y:9, :5, index:8 }.
|
||||
// Index has its own byte even though it only needs 6 bits so that
|
||||
// we can load it with a ldrb instead of having to mask out the
|
||||
// bottom 6 bits.
|
||||
u32 spritePriorities[MAX_SPRITES];
|
||||
s32 toSort = 0;
|
||||
u8 skippedSprites[MAX_SPRITES];
|
||||
u32 skippedSpritesN = 0;
|
||||
u32 matrices = 0;
|
||||
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
// Reuse existing sSpriteOrder because we expect the order to be
|
||||
// relatively stable between frames.
|
||||
u32 index = sSpriteOrder[i];
|
||||
struct Sprite *sprite = &gSprites[index];
|
||||
s32 y;
|
||||
if (!sprite->inUse || sprite->invisible)
|
||||
{
|
||||
skippedSprites[skippedSpritesN++] = index;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (sprite->oam.affineMode & ST_OAM_AFFINE_ON_MASK)
|
||||
matrices |= 1 << sprite->oam.matrixNum;
|
||||
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
sprite->oam.x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
sprite->oam.y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->oam.x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
|
||||
sprite->oam.y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
|
||||
}
|
||||
|
||||
y = sprite->oam.y;
|
||||
if (y >= DISPLAY_HEIGHT)
|
||||
{
|
||||
y -= 256;
|
||||
}
|
||||
else if (sprite->oam.affineMode == ST_OAM_AFFINE_DOUBLE
|
||||
&& sprite->oam.size == ST_OAM_SIZE_3)
|
||||
{
|
||||
u32 shape = sprite->oam.shape;
|
||||
if (shape == ST_OAM_SQUARE || shape == ST_OAM_V_RECTANGLE)
|
||||
{
|
||||
if (y > 128)
|
||||
y -= 256;
|
||||
}
|
||||
}
|
||||
|
||||
// y in [-128...159], so (159 - y) in [0..287].
|
||||
spritePriorities[toSort++]
|
||||
= (sprite->oam.priority << 30)
|
||||
| (sprite->subpriority << 22)
|
||||
| (((159 - y) & 0x1FF) << 13)
|
||||
| (index << 0);
|
||||
}
|
||||
|
||||
SortSprites(spritePriorities, toSort);
|
||||
|
||||
for (i = 0; i < toSort; i++)
|
||||
sSpriteOrder[i] = spritePriorities[i] & 0xFF;
|
||||
for (i = 0; i < skippedSpritesN; i++)
|
||||
sSpriteOrder[toSort + i] = skippedSprites[i];
|
||||
|
||||
oamLoadDisabled = gMain.oamLoadDisabled;
|
||||
gMain.oamLoadDisabled = TRUE;
|
||||
AddSpritesToOamBuffer();
|
||||
CopyMatricesToOamBuffer();
|
||||
gMain.oamLoadDisabled = temp;
|
||||
|
||||
for (i = 0, oamIndex = 0; i < toSort; i++)
|
||||
{
|
||||
if (AddSpriteToOamBuffer(&gSprites[spritePriorities[i] & 0xFF], &oamIndex))
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = oamIndex; i < gOamDummyIndex; i++)
|
||||
gMain.oamBuffer[i] = gDummyOamData;
|
||||
gOamDummyIndex = oamIndex;
|
||||
|
||||
for (i = 0; matrices != 0; i++, matrices >>= 1)
|
||||
{
|
||||
if (matrices & 1)
|
||||
{
|
||||
u32 base = 4 * i;
|
||||
gMain.oamBuffer[base + 0].affineParam = gOamMatrices[i].a;
|
||||
gMain.oamBuffer[base + 1].affineParam = gOamMatrices[i].b;
|
||||
gMain.oamBuffer[base + 2].affineParam = gOamMatrices[i].c;
|
||||
gMain.oamBuffer[base + 3].affineParam = gOamMatrices[i].d;
|
||||
}
|
||||
}
|
||||
|
||||
gMain.oamLoadDisabled = oamLoadDisabled;
|
||||
sShouldProcessSpriteCopyRequests = TRUE;
|
||||
}
|
||||
|
||||
void UpdateOamCoords(void)
|
||||
static inline void InsertionSort(u32 *spritePriorities, s32 n)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
s32 i = 1;
|
||||
while (i < n)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if (sprite->inUse && !sprite->invisible)
|
||||
u32 x = spritePriorities[i];
|
||||
s32 j = i - 1;
|
||||
while (j >= 0 && spritePriorities[j] > x)
|
||||
{
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
sprite->oam.x = sprite->x + sprite->x2 + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
sprite->oam.y = sprite->y + sprite->y2 + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->oam.x = sprite->x + sprite->x2 + sprite->centerToCornerVecX;
|
||||
sprite->oam.y = sprite->y + sprite->y2 + sprite->centerToCornerVecY;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BuildSpritePriorities(void)
|
||||
{
|
||||
u16 i;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
u16 priority = sprite->subpriority | (sprite->oam.priority << 8);
|
||||
sSpritePriorities[i] = priority;
|
||||
}
|
||||
}
|
||||
|
||||
void SortSprites(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 1; i < MAX_SPRITES; i++)
|
||||
{
|
||||
u8 j = i;
|
||||
struct Sprite *sprite1 = &gSprites[sSpriteOrder[i - 1]];
|
||||
struct Sprite *sprite2 = &gSprites[sSpriteOrder[i]];
|
||||
u16 sprite1Priority = sSpritePriorities[sSpriteOrder[i - 1]];
|
||||
u16 sprite2Priority = sSpritePriorities[sSpriteOrder[i]];
|
||||
s16 sprite1Y = sprite1->oam.y;
|
||||
s16 sprite2Y = sprite2->oam.y;
|
||||
|
||||
if (sprite1Y >= DISPLAY_HEIGHT)
|
||||
sprite1Y = sprite1Y - 256;
|
||||
|
||||
if (sprite2Y >= DISPLAY_HEIGHT)
|
||||
sprite2Y = sprite2Y - 256;
|
||||
|
||||
if (sprite1->oam.affineMode == ST_OAM_AFFINE_DOUBLE
|
||||
&& sprite1->oam.size == ST_OAM_SIZE_3)
|
||||
{
|
||||
u32 shape = sprite1->oam.shape;
|
||||
if (shape == ST_OAM_SQUARE || shape == ST_OAM_V_RECTANGLE)
|
||||
{
|
||||
if (sprite1Y > 128)
|
||||
sprite1Y = sprite1Y - 256;
|
||||
}
|
||||
}
|
||||
|
||||
if (sprite2->oam.affineMode == ST_OAM_AFFINE_DOUBLE
|
||||
&& sprite2->oam.size == ST_OAM_SIZE_3)
|
||||
{
|
||||
u32 shape = sprite2->oam.shape;
|
||||
if (shape == ST_OAM_SQUARE || shape == ST_OAM_V_RECTANGLE)
|
||||
{
|
||||
if (sprite2Y > 128)
|
||||
sprite2Y = sprite2Y - 256;
|
||||
}
|
||||
}
|
||||
|
||||
while (j > 0
|
||||
&& ((sprite1Priority > sprite2Priority)
|
||||
|| (sprite1Priority == sprite2Priority && sprite1Y < sprite2Y)))
|
||||
{
|
||||
u8 temp = sSpriteOrder[j];
|
||||
sSpriteOrder[j] = sSpriteOrder[j - 1];
|
||||
sSpriteOrder[j - 1] = temp;
|
||||
|
||||
// UB: If j equals 1, then j-- makes j equal 0.
|
||||
// Then, sSpriteOrder[-1] gets accessed below.
|
||||
// Although this doesn't result in a bug in the ROM,
|
||||
// the behavior is undefined.
|
||||
spritePriorities[j + 1] = spritePriorities[j];
|
||||
j--;
|
||||
#ifdef UBFIX
|
||||
if (j == 0)
|
||||
break;
|
||||
#endif
|
||||
|
||||
sprite1 = &gSprites[sSpriteOrder[j - 1]];
|
||||
sprite2 = &gSprites[sSpriteOrder[j]];
|
||||
sprite1Priority = sSpritePriorities[sSpriteOrder[j - 1]];
|
||||
sprite2Priority = sSpritePriorities[sSpriteOrder[j]];
|
||||
sprite1Y = sprite1->oam.y;
|
||||
sprite2Y = sprite2->oam.y;
|
||||
|
||||
if (sprite1Y >= DISPLAY_HEIGHT)
|
||||
sprite1Y = sprite1Y - 256;
|
||||
|
||||
if (sprite2Y >= DISPLAY_HEIGHT)
|
||||
sprite2Y = sprite2Y - 256;
|
||||
|
||||
if (sprite1->oam.affineMode == ST_OAM_AFFINE_DOUBLE
|
||||
&& sprite1->oam.size == ST_OAM_SIZE_3)
|
||||
{
|
||||
u32 shape = sprite1->oam.shape;
|
||||
if (shape == ST_OAM_SQUARE || shape == ST_OAM_V_RECTANGLE)
|
||||
{
|
||||
if (sprite1Y > 128)
|
||||
sprite1Y = sprite1Y - 256;
|
||||
}
|
||||
}
|
||||
|
||||
if (sprite2->oam.affineMode == ST_OAM_AFFINE_DOUBLE
|
||||
&& sprite2->oam.size == ST_OAM_SIZE_3)
|
||||
{
|
||||
u32 shape = sprite2->oam.shape;
|
||||
if (shape == ST_OAM_SQUARE || shape == ST_OAM_V_RECTANGLE)
|
||||
{
|
||||
if (sprite2Y > 128)
|
||||
sprite2Y = sprite2Y - 256;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CopyMatricesToOamBuffer(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OAM_MATRIX_COUNT; i++)
|
||||
{
|
||||
u32 base = 4 * i;
|
||||
gMain.oamBuffer[base + 0].affineParam = gOamMatrices[i].a;
|
||||
gMain.oamBuffer[base + 1].affineParam = gOamMatrices[i].b;
|
||||
gMain.oamBuffer[base + 2].affineParam = gOamMatrices[i].c;
|
||||
gMain.oamBuffer[base + 3].affineParam = gOamMatrices[i].d;
|
||||
}
|
||||
}
|
||||
|
||||
void AddSpritesToOamBuffer(void)
|
||||
{
|
||||
u8 i = 0;
|
||||
u8 oamIndex = 0;
|
||||
|
||||
while (i < MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[sSpriteOrder[i]];
|
||||
if (sprite->inUse && !sprite->invisible && AddSpriteToOamBuffer(sprite, &oamIndex))
|
||||
return;
|
||||
spritePriorities[j + 1] = x;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
while (oamIndex < gOamLimit)
|
||||
{
|
||||
gMain.oamBuffer[oamIndex] = gDummyOamData;
|
||||
oamIndex++;
|
||||
}
|
||||
static void SortSprites(u32 *spritePriorities, s32 n)
|
||||
{
|
||||
InsertionSort(spritePriorities, n);
|
||||
}
|
||||
|
||||
u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority)
|
||||
@ -849,7 +795,7 @@ void CopyToSprites(u8 *src)
|
||||
|
||||
void ResetAllSprites(void)
|
||||
{
|
||||
u8 i;
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
|
BIN
graphics/battle_interface/last_used_ball_l_cycle.png
Normal file
After Width: | Height: | Size: 335 B |
BIN
graphics/battle_interface/last_used_ball_r_cycle.png
Normal file
After Width: | Height: | Size: 344 B |
Before Width: | Height: | Size: 356 B After Width: | Height: | Size: 290 B |
Before Width: | Height: | Size: 385 B After Width: | Height: | Size: 315 B |
Before Width: | Height: | Size: 434 B After Width: | Height: | Size: 356 B |
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 403 B After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 834 B |
Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 393 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 455 B After Width: | Height: | Size: 417 B |
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 1017 B |
Before Width: | Height: | Size: 610 B After Width: | Height: | Size: 672 B |
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 368 B |
@ -2,18 +2,18 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
152 208 160
|
||||
88 56 8
|
||||
120 96 24
|
||||
255 230 41
|
||||
90 57 8
|
||||
205 189 32
|
||||
246 246 164
|
||||
168 136 24
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
213 180 82
|
||||
172 131 41
|
||||
16 16 16
|
||||
131 98 8
|
||||
208 176 80
|
||||
176 160 152
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
90 57 0
|
||||
255 0 255
|
||||
246 246 164
|
||||
255 230 41
|
||||
205 189 32
|
||||
172 139 24
|
||||
131 90 16
|
||||
90 57 8
|
||||
16 16 16
|
||||
|
@ -2,18 +2,18 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
152 208 160
|
||||
136 80 24
|
||||
168 104 40
|
||||
248 240 128
|
||||
88 48 56
|
||||
232 200 48
|
||||
248 240 216
|
||||
200 152 32
|
||||
184 136 144
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
222 180 189
|
||||
189 139 148
|
||||
139 98 106
|
||||
90 49 57
|
||||
255 0 255
|
||||
255 246 222
|
||||
255 246 131
|
||||
238 205 49
|
||||
205 156 32
|
||||
172 106 41
|
||||
139 82 24
|
||||
16 16 16
|
||||
136 96 104
|
||||
208 176 80
|
||||
216 176 184
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
|
Before Width: | Height: | Size: 637 B After Width: | Height: | Size: 647 B |
Before Width: | Height: | Size: 919 B After Width: | Height: | Size: 931 B |
Before Width: | Height: | Size: 1019 B After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 466 B After Width: | Height: | Size: 435 B |
Before Width: | Height: | Size: 981 B After Width: | Height: | Size: 950 B |
Before Width: | Height: | Size: 779 B After Width: | Height: | Size: 788 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 569 B After Width: | Height: | Size: 582 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 549 B After Width: | Height: | Size: 560 B |
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 518 B |
Before Width: | Height: | Size: 484 B After Width: | Height: | Size: 451 B |
Before Width: | Height: | Size: 565 B After Width: | Height: | Size: 580 B |
Before Width: | Height: | Size: 700 B After Width: | Height: | Size: 715 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 488 B After Width: | Height: | Size: 449 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 765 B After Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 767 B After Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 511 B After Width: | Height: | Size: 479 B |
Before Width: | Height: | Size: 741 B After Width: | Height: | Size: 754 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 796 B After Width: | Height: | Size: 855 B |
Before Width: | Height: | Size: 734 B After Width: | Height: | Size: 834 B |
Before Width: | Height: | Size: 915 B After Width: | Height: | Size: 934 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 497 B |
@ -2,18 +2,18 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
152 208 160
|
||||
112 88 8
|
||||
255 238 41
|
||||
213 189 16
|
||||
16 16 16
|
||||
255 246 172
|
||||
131 98 8
|
||||
82 49 8
|
||||
255 255 255
|
||||
222 222 222
|
||||
180 180 180
|
||||
90 90 90
|
||||
213 180 82
|
||||
180 131 41
|
||||
88 88 88
|
||||
248 248 248
|
||||
176 176 168
|
||||
216 216 216
|
||||
96 96 88
|
||||
80 48 8
|
||||
120 88 8
|
||||
82 49 8
|
||||
104 80 8
|
||||
152 112 0
|
||||
255 246 172
|
||||
255 238 24
|
||||
200 176 16
|
||||
112 88 8
|
||||
16 16 16
|
||||
|
@ -2,18 +2,18 @@ JASC-PAL
|
||||
0100
|
||||
16
|
||||
152 208 160
|
||||
160 104 0
|
||||
240 208 32
|
||||
200 144 24
|
||||
255 255 255
|
||||
222 222 222
|
||||
180 180 180
|
||||
90 90 90
|
||||
255 148 230
|
||||
222 74 172
|
||||
172 41 115
|
||||
115 16 82
|
||||
104 64 8
|
||||
152 104 0
|
||||
255 238 131
|
||||
255 213 0
|
||||
213 148 8
|
||||
164 106 0
|
||||
16 16 16
|
||||
248 232 128
|
||||
152 48 112
|
||||
112 16 80
|
||||
248 144 224
|
||||
200 88 160
|
||||
88 88 88
|
||||
248 248 248
|
||||
176 176 176
|
||||
216 216 216
|
||||
88 88 88
|
||||
112 88 8
|
||||
|
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 689 B |
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 688 B |
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 745 B |
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 369 B |
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 688 B |
Before Width: | Height: | Size: 677 B After Width: | Height: | Size: 688 B |
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 682 B After Width: | Height: | Size: 693 B |
Before Width: | Height: | Size: 679 B After Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 744 B After Width: | Height: | Size: 753 B |
Before Width: | Height: | Size: 676 B After Width: | Height: | Size: 688 B |
Before Width: | Height: | Size: 858 B After Width: | Height: | Size: 842 B |
Before Width: | Height: | Size: 635 B After Width: | Height: | Size: 646 B |
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 288 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 738 B After Width: | Height: | Size: 752 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 534 B After Width: | Height: | Size: 502 B |
Before Width: | Height: | Size: 771 B After Width: | Height: | Size: 773 B |
Before Width: | Height: | Size: 512 B After Width: | Height: | Size: 498 B |
Before Width: | Height: | Size: 414 B After Width: | Height: | Size: 377 B |
Before Width: | Height: | Size: 489 B After Width: | Height: | Size: 451 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 597 B After Width: | Height: | Size: 611 B |
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 364 B |
Before Width: | Height: | Size: 863 B After Width: | Height: | Size: 878 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 490 B After Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 596 B |
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 392 B |
Before Width: | Height: | Size: 737 B After Width: | Height: | Size: 750 B |
Before Width: | Height: | Size: 427 B After Width: | Height: | Size: 409 B |
Before Width: | Height: | Size: 465 B After Width: | Height: | Size: 476 B |
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 331 B |
Before Width: | Height: | Size: 667 B After Width: | Height: | Size: 679 B |
Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 411 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 494 B After Width: | Height: | Size: 561 B |
Before Width: | Height: | Size: 445 B After Width: | Height: | Size: 406 B |