Sfoglia il codice sorgente

entry hazards - stealth rock

Philipp Auer 8 anni fa
parent
commit
10eaf5df1b

+ 10
- 4
bpre.sym Vedi File

@@ -37,11 +37,12 @@ flag_check = 0x0806E6D1;
37 37
 get_bs_elem_env_index = 0x0800FC2D;
38 38
 load_battle_screen_elements_1 = 0x0800F261;
39 39
 npc_states = 0x02036E38;
40
-battlescript_counter = 0x02023D74;
40
+battlescript_cursor = 0x02023D74;
41 41
 item_table = 0x0876DD80;
42 42
 execute_battle_script = 0x0801BC24;
43 43
 dp_01_prepare_buffer = 0x0800D8B1;
44 44
 wram_decompress = 0x081E3B70|1;
45
+battle_script_push = 0x08017544|1;
45 46
 
46 47
 fade_screen = 0x08070589;
47 48
 fade_update = 0x080704D1;
@@ -53,9 +54,10 @@ obj_sync = 0x08006BA9;
53 54
 
54 55
 clear_flag = 0x0806E6A9;
55 56
 
56
-
57 57
 divide = 0x081E4018;
58 58
 
59
+get_side_from_bank = 0x080751C4|1;
60
+
59 61
 decompression_buffer = 0x0201C000;
60 62
 superstate = 0x030030F0;
61 63
 
@@ -63,10 +65,10 @@ fade_controller = 0x02037AB8;
63 65
 
64 66
 weather_turns = 0x02023F48;
65 67
 battle_type_flags = 0x02022B4C;
66
-battle_active_side = 0x02023BC4;
68
+battle_active_bank = 0x02023BC4;
67 69
 battle_num_active_sides = 0x02023BCC;
68 70
 battle_mode = 0x02023BE3;
69
-battle_data	= 0x02023BE4;
71
+battle_participants	= 0x02023BE4;
70 72
 battle_data_ability = 0x02023C04;
71 73
 battle_data_current_hp = 0x02023C0C;
72 74
 battle_executed_move = 0x02023D4A;
@@ -81,6 +83,9 @@ battle_string_message_table = 0x083FDF3C;
81 83
 battle_crit_loc = 0x02023D71;
82 84
 battle_base_power = 0x02024020;
83 85
 battle_side_unknown = 0x02023FDB;
86
+battle_side_timers = 0x02023DE4;
87
+battle_hitmarker = 0x02023dd0;
88
+side_affecting_halfword = 0x2023DDE;
84 89
 
85 90
 battle_status3_bits_pbs = 0x02023DFC;
86 91
 
@@ -94,3 +99,4 @@ mplay_table = 0x084A329C;
94 99
 m4aSongNumStart = 0x081DD0F5;
95 100
 MPlayStart_rev01 = 0x081DD859;
96 101
 MPlayContinue = 0x081DCFF9;
102
+__aeabi_idiv = 0x081E460C|1;

+ 1
- 1
data/pkmn_tables/pokemon_stats.S Vedi File

@@ -7,7 +7,7 @@ pokemon_stats:
7 7
 .hword 0, 0 
8 8
 .byte 255, 20, 100, 4, 15, 15, 0, 0, 0, 8, 0, 0
9 9
  
10
-.byte 45, 49, 49, 45, 65, 65, 12, 3, 45, 64, 0, 1 
10
+.byte 45, 49, 49, 45, 65, 65, 2, 10, 45, 64, 0, 1 
11 11
 .hword 0, 0 
12 12
 .byte 31, 20, 70, 3, 1, 7, 65, 34, 0, 3, 0, 0
13 13
  

+ 2
- 2
main.asm Vedi File

@@ -1,6 +1,6 @@
1 1
 .gba
2 2
 .thumb
3
-.open "base/bpre0.gba","build/Pokémon SotS.gba",0x08000000
3
+.open "base/bpre0.gba","build/pkmn_sots.gba",0x08000000
4 4
 
5 5
 .include "patches/split_physical_special.asm"
6 6
 .include "patches/hooks.asm"
@@ -29,7 +29,7 @@
29 29
 .include "patches/pokemon_data/pokemon_icons.asm"
30 30
 
31 31
 .include "patches/battle_engine/malloc.asm"
32
-
32
+.include "patches/battle_engine/battle_engine.asm"
33 33
 
34 34
 .org 0x09000000
35 35
 .importobj "object/linked.o"

+ 4
- 0
patches/battle_engine/battle_engine.asm Vedi File

@@ -0,0 +1,4 @@
1
+.org 0x08024E80
2
+ldr r0, =entry_hazards_hook|1
3
+bx r0
4
+.pool

+ 95
- 0
src/battle_engine/battle_help.c Vedi File

@@ -0,0 +1,95 @@
1
+#include "battle_help.h"
2
+
3
+//from kds emerald battle engine upgrade
4
+
5
+u8 type_effectiveness_table[TYPE_FAIRY-0x4][TYPE_FAIRY-0x4] = {
6
+    {10,10,10,10,10,05,10,00,05,10,10,10,10,10,10,10,10,10,10}, //normal
7
+    {20,10,05,05,10,20,05,00,20,10,10,10,10,10,05,20,10,20,05}, //fight
8
+    {10,20,10,10,10,05,20,10,05,10,10,10,20,05,10,10,10,10,10}, //flying
9
+    {10,10,10,05,05,05,10,05,00,10,10,10,20,10,10,10,10,10,20}, //poison
10
+    {10,10,00,20,10,20,05,10,20,10,20,10,05,20,10,10,10,10,10}, //ground
11
+    {10,05,20,10,05,10,20,10,05,10,20,10,10,10,10,20,10,10,10}, //rock
12
+    {10,05,05,05,10,10,10,05,05,10,05,10,20,10,20,10,10,20,05}, //bug
13
+    {00,10,10,10,10,10,10,20,10,10,10,10,10,10,20,10,10,05,10}, //ghost
14
+    {10,10,10,10,10,20,10,10,05,10,05,05,10,05,10,20,10,10,20}, //steel
15
+    {10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10}, //egg
16
+    {10,10,10,10,10,05,20,10,20,10,05,05,20,10,10,20,05,10,10}, //fire
17
+    {10,10,10,10,20,20,10,10,10,10,20,05,05,10,10,10,05,10,10}, //water
18
+    {10,10,05,05,20,20,05,10,05,10,05,20,05,10,10,10,05,10,10}, //grass
19
+    {10,10,20,10,00,10,10,10,10,10,10,20,05,05,10,10,05,10,10}, //electric
20
+    {10,20,10,20,10,10,10,10,05,10,10,10,10,10,05,10,10,00,10}, //psychic
21
+    {10,10,20,10,20,10,10,10,05,10,05,05,20,10,10,05,20,10,10}, //ice
22
+    {10,10,10,10,10,10,10,10,05,10,10,10,10,10,10,10,20,10,00}, //dragon
23
+    {10,05,10,10,10,10,10,20,10,10,10,10,10,10,20,10,10,05,05}, //dark
24
+    {10,20,10,05,10,10,10,10,05,10,05,10,10,10,10,10,20,20,10}  //fairy
25
+};
26
+
27
+u16 damage_type_effectiveness_update(u8 attacking_type, u8 defending_type, u8 atk_bank, u8 def_bank, u16 chained_effect, u8 airstatus)
28
+{
29
+	u8 effect,atype=attacking_type,dtype=defending_type;
30
+    if(!chained_effect || atype==TYPE_EGG || dtype==TYPE_EGG)
31
+        return chained_effect;
32
+
33
+    if(atype>=TYPE_FAIRY)
34
+        atype=atype-5;
35
+
36
+    if(dtype>=TYPE_FAIRY)
37
+        dtype=dtype-5;
38
+	effect=type_effectiveness_table[atype][dtype];
39
+	
40
+	if (custom_battle_struct.ptr->various.inverse_battle)
41
+    {
42
+        if (effect == 20)
43
+        {
44
+            effect = 5;
45
+        }
46
+        else if (effect == 5 || effect == 0)
47
+        {
48
+            effect = 20;
49
+        }
50
+    }
51
+	//handle normal / fighting on ghost
52
+	if ((((attacking_type == TYPE_NORMAL || attacking_type == TYPE_FIGHTING) && defending_type == TYPE_GHOST && ((battle_participants[def_bank].status2.foresight))) || battle_participants[atk_bank].ability_id == ABILITY_SCRAPPY) && effect == 0)
53
+    {
54
+        effect = 10;
55
+    }
56
+	//handle other effectiveness changers here
57
+	
58
+	switch(effect)
59
+    {
60
+        case 0:
61
+            chained_effect = 0;
62
+            break;
63
+        case 5:
64
+            chained_effect = chained_effect>>1;
65
+            break;
66
+        case 20:
67
+            chained_effect = chained_effect<<1;
68
+            break;
69
+    }
70
+	return chained_effect;
71
+	
72
+}
73
+
74
+u16 apply_type_effectiveness(u16 chained_effect, u8 move_type, u8 target_bank, u8 atk_bank, u8 airstatus)
75
+{
76
+    u8 defender_type1 = battle_participants[target_bank].type1;
77
+    u8 defender_type2 = battle_participants[target_bank].type2;
78
+    //set different types
79
+    if (defender_type2 == defender_type1)
80
+        defender_type2 = TYPE_EGG;
81
+    chained_effect = damage_type_effectiveness_update(move_type, defender_type1, atk_bank, target_bank, chained_effect, airstatus);
82
+    chained_effect = damage_type_effectiveness_update(move_type, defender_type2, atk_bank, target_bank, chained_effect, airstatus);
83
+    return chained_effect;
84
+}
85
+
86
+u16 type_effectiveness_calc(u16 move, u8 move_type, u8 atk_bank, u8 def_bank, u8 effects_handling_and_recording)
87
+{
88
+	u16 chained_effect = 64;
89
+	//TODO: double_type moves
90
+	//TODO: get air status
91
+	chained_effect = apply_type_effectiveness(chained_effect, move_type, def_bank, atk_bank, 2);
92
+	//TODO: save into structs
93
+	//TODO: effect_handling_and_recoring
94
+	return chained_effect;
95
+}

+ 9
- 0
src/battle_engine/battle_help.h Vedi File

@@ -0,0 +1,9 @@
1
+#include <battle.h>
2
+
3
+#ifndef BATTLE_HELP_H_
4
+#define BATTLE_HELP_H_
5
+
6
+u16 damage_type_effectiveness_update(u8 attacking_type, u8 defending_type, u8 atk_bank, u8 def_bank, u16 chained_effect, u8 airstatus);
7
+u16 apply_type_effectiveness(u16 chained_effect, u8 move_type, u8 target_bank, u8 atk_bank, u8 airstatus);
8
+u16 type_effectiveness_calc(u16 move, u8 move_type, u8 atk_bank, u8 def_bank, u8 effects_handling_and_recording);
9
+#endif

+ 70
- 0
src/battle_engine/entry_hazards.c Vedi File

@@ -0,0 +1,70 @@
1
+#include "battle_help.h"
2
+#include <bpre.h>
3
+
4
+extern void* bs_stealth_rock;
5
+
6
+u8 execute_entry_hazards()
7
+{
8
+	u8 active_side = get_side_from_bank(battle_active_bank);
9
+	u8 has_effect = 0;
10
+	struct side_affecting* active_side_affecting = &custom_battle_struct.ptr->side_affecting[active_side];
11
+	//Debug
12
+	//side_affecting_halfword[active_side].spikes_on=1;
13
+	//battle_side_timers[active_side].spikes_amount=4;
14
+	active_side_affecting->stealth_rock=1;
15
+	//side_affecting_halfword[active_side].spikes_damage_done=0;
16
+	
17
+	if(side_affecting_halfword[active_side].spikes_on && !(side_affecting_halfword[active_side].spikes_damage_done))
18
+	{
19
+		//spikes lay down, deal spiky damage
20
+		u32 damage = (battle_participants[battle_active_bank].max_hp) / ((5 - battle_side_timers[active_side].spikes_amount) * 2);
21
+        if (damage == 0)
22
+            damage = 1;
23
+        battle_damage_store = damage;
24
+		
25
+		side_affecting_halfword[active_side].spikes_damage_done = 1;
26
+		battle_script_push();
27
+		battlescript_cursor = (void*)(0x081D8CBE);
28
+		has_effect = 1;
29
+	}
30
+	else if(active_side_affecting->stealth_rock && !(active_side_affecting->stealth_rock_done))
31
+	{
32
+		active_side_affecting->stealth_rock_done=1;
33
+		//check for magic guard here
34
+		u32 damage = battle_participants[battle_active_bank].max_hp;
35
+		switch (type_effectiveness_calc(MOVE_STEALTH_ROCK, TYPE_ROCK, battle_active_bank^1, battle_active_bank, 0) >> 4)
36
+		{
37
+			case 1:
38
+				damage = damage >> 5;
39
+				break;
40
+			case 2:
41
+				damage = damage >> 4;
42
+				break;
43
+			case 4:
44
+				damage = damage >> 3;
45
+				break;
46
+			case 8:
47
+				damage = damage >> 2;
48
+				break;
49
+			case 16:
50
+				damage = damage >> 1;
51
+				break;
52
+		}
53
+		if(damage == 0)
54
+			damage = 1;
55
+		battle_damage_store = damage;
56
+		
57
+		battle_script_push();
58
+		//spikes for now
59
+		battlescript_cursor = bs_stealth_rock;
60
+		has_effect = 1;
61
+	}
62
+	
63
+	if (has_effect)
64
+    {
65
+       custom_battle_struct.ptr->various.var1 = battle_active_bank;
66
+       battle_participants[battle_active_bank].status2.destinny_bond = 0;
67
+       battle_hitmarker &= 0xFFFFFFBF;
68
+    }
69
+	return has_effect;
70
+}

+ 17
- 0
src/battle_engine/entry_hazards_hook.S Vedi File

@@ -0,0 +1,17 @@
1
+.text
2
+.align 2
3
+.thumb
4
+
5
+.global entry_hazards_hook
6
+entry_hazards_hook:
7
+
8
+	bl execute_entry_hazards
9
+	cmp r0, #0
10
+	beq return
11
+	ldr r0, =0x80250C6|1
12
+	bx r0
13
+return:
14
+	
15
+	ldr r0, =0x8024F88|1
16
+	bx r0
17
+

+ 23
- 0
src/battle_engine/scripts/hazards.S Vedi File

@@ -0,0 +1,23 @@
1
+#include <battle_script.h>
2
+
3
+.text
4
+.align 2
5
+.thumb
6
+
7
+.global bs_stealth_rock_int
8
+bs_stealth_rock_int:
9
+
10
+orword 0x2023DD0 0x100100
11
+graphicalhpupdate 0x0
12
+datahpupdate 0x0
13
+setword 0x0203C020 str_stealth_rock
14
+printstring 0x184
15
+waitmessage 0x40
16
+faintpokemon 0x0 0x0 0x0
17
+faintpokemon 0x0 0x1 0x81D8CDF
18
+return
19
+
20
+.align 2
21
+.global bs_stealth_rock
22
+bs_stealth_rock:
23
+.word bs_stealth_rock_int

+ 198
- 0
src/include/abilities.h Vedi File

@@ -0,0 +1,198 @@
1
+#ifndef ABILITY_IDS
2
+#define ABILITY_IDS
3
+
4
+
5
+#define ABILITY_NO_ABILITY 0x0
6
+#define ABILITY_STENCH 0x1
7
+#define ABILITY_DRIZZLE 0x2
8
+#define ABILITY_SPEED_BOOST 0x3
9
+#define ABILITY_BATTLE_ARMOR 0x4
10
+#define ABILITY_STURDY 0x5
11
+#define ABILITY_DAMP 0x6
12
+#define ABILITY_LIMBER 0x7
13
+#define ABILITY_SAND_VEIL 0x8
14
+#define ABILITY_STATIC 0x9
15
+#define ABILITY_VOLT_ABSORB 0xA
16
+#define ABILITY_WATER_ABSORB 0xB
17
+#define ABILITY_OBLIVIOUS 0xC
18
+#define ABILITY_CLOUD_NINE 0xD
19
+#define ABILITY_COMPOUND_EYES 0xE
20
+#define ABILITY_INSOMNIA 0xF
21
+#define ABILITY_COLOR_CHANGE 0x10
22
+#define ABILITY_IMMUNITY 0x11
23
+#define ABILITY_FLASH_FIRE 0x12
24
+#define ABILITY_SHIELD_DUST 0x13
25
+#define ABILITY_OWN_TEMPO 0x14
26
+#define ABILITY_SUCTION_CUPS 0x15
27
+#define ABILITY_INTIMIDATE 0x16
28
+#define ABILITY_SHADOW_TAG 0x17
29
+#define ABILITY_ROUGH_SKIN 0x18
30
+#define ABILITY_WONDER_GUARD 0x19
31
+#define ABILITY_LEVITATE 0x1A
32
+#define ABILITY_EFFECT_SPORE 0x1B
33
+#define ABILITY_SYNCHRONIZE 0x1C
34
+#define ABILITY_CLEAR_BODY 0x1D
35
+#define ABILITY_NATURAL_CURE 0x1E
36
+#define ABILITY_LIGHTNING_ROD 0x1F
37
+#define ABILITY_SERENE_GRACE 0x20
38
+#define ABILITY_SWIFT_SWIM 0x21
39
+#define ABILITY_CHLOROPHYLL 0x22
40
+#define ABILITY_ILLUMINATE 0x23
41
+#define ABILITY_TRACE 0x24
42
+#define ABILITY_HUGE_POWER 0x25
43
+#define ABILITY_POISON_POINT 0x26
44
+#define ABILITY_INNER_FOCUS 0x27
45
+#define ABILITY_MAGMA_ARMOR 0x28
46
+#define ABILITY_WATER_VEIL 0x29
47
+#define ABILITY_MAGNET_PULL 0x2A
48
+#define ABILITY_SOUNDPROOF 0x2B
49
+#define ABILITY_RAIN_DISH 0x2C
50
+#define ABILITY_SAND_STREAM 0x2D
51
+#define ABILITY_PRESSURE 0x2E
52
+#define ABILITY_THICK_FAT 0x2F
53
+#define ABILITY_EARLY_BIRD 0x30
54
+#define ABILITY_FLAME_BODY 0x31
55
+#define ABILITY_RUN_AWAY 0x32
56
+#define ABILITY_KEEN_EYE 0x33
57
+#define ABILITY_HYPER_CUTTER 0x34
58
+#define ABILITY_PICKUP 0x35
59
+#define ABILITY_TRUANT 0x36
60
+#define ABILITY_HUSTLE 0x37
61
+#define ABILITY_CUTE_CHARM 0x38
62
+#define ABILITY_PLUS 0x39
63
+#define ABILITY_MINUS 0x3A
64
+#define ABILITY_FORECAST 0x3B
65
+#define ABILITY_STICKY_HOLD 0x3C
66
+#define ABILITY_SHED_SKIN 0x3D
67
+#define ABILITY_GUTS 0x3E
68
+#define ABILITY_MARVEL_SCALE 0x3F
69
+#define ABILITY_LIQUID_OOZE 0x40
70
+#define ABILITY_OVERGROW 0x41
71
+#define ABILITY_BLAZE 0x42
72
+#define ABILITY_TORRENT 0x43
73
+#define ABILITY_SWARM 0x44
74
+#define ABILITY_ROCK_HEAD 0x45
75
+#define ABILITY_DROUGHT 0x46
76
+#define ABILITY_ARENA_TRAP 0x47
77
+#define ABILITY_VITAL_SPIRIT 0x48
78
+#define ABILITY_WHITE_SMOKE 0x49
79
+#define ABILITY_PURE_POWER 0x4A
80
+#define ABILITY_SHELL_ARMOR 0x4B
81
+#define ABILITY_AIR_LOCK 0x4C
82
+#define ABILITY_TANGLED_FEET 0x4D
83
+#define ABILITY_MOTOR_DRIVE 0x4E
84
+#define ABILITY_RIVALRY 0x4F
85
+#define ABILITY_STEADFAST 0x50
86
+#define ABILITY_SNOW_CLOAK 0x51
87
+#define ABILITY_GLUTTONY 0x52
88
+#define ABILITY_ANGER_POINT 0x53
89
+#define ABILITY_UNBURDEN 0x54
90
+#define ABILITY_HEATPROOF 0x55
91
+#define ABILITY_SIMPLE 0x56
92
+#define ABILITY_DRY_SKIN 0x57
93
+#define ABILITY_DOWNLOAD 0x58
94
+#define ABILITY_IRON_FIST 0x59
95
+#define ABILITY_POISON_HEAL 0x5A
96
+#define ABILITY_ADAPTABILITY 0x5B
97
+#define ABILITY_SKILL_LINK 0x5C
98
+#define ABILITY_HYDRATION 0x5D
99
+#define ABILITY_SOLAR_POWER 0x5E
100
+#define ABILITY_QUICK_FEET 0x5F
101
+#define ABILITY_NORMALIZE 0x60
102
+#define ABILITY_SNIPER 0x61
103
+#define ABILITY_MAGIC_GUARD 0x62
104
+#define ABILITY_NO_GUARD 0x63
105
+#define ABILITY_STALL 0x64
106
+#define ABILITY_TECHNICIAN 0x65
107
+#define ABILITY_LEAF_GUARD 0x66
108
+#define ABILITY_KLUTZ 0x67
109
+#define ABILITY_MOLD_BREAKER 0x68
110
+#define ABILITY_SUPER_LUCK 0x69
111
+#define ABILITY_AFTERMATH 0x6A
112
+#define ABILITY_ANTICIPATION 0x6B
113
+#define ABILITY_FOREWARN 0x6C
114
+#define ABILITY_UNAWARE 0x6D
115
+#define ABILITY_TINTED_LENS 0x6E
116
+#define ABILITY_FILTER 0x6F
117
+#define ABILITY_SLOW_START 0x70
118
+#define ABILITY_SCRAPPY 0x71
119
+#define ABILITY_STORM_DRAIN 0x72
120
+#define ABILITY_ICE_BODY 0x73
121
+#define ABILITY_SOLID_ROCK 0x74
122
+#define ABILITY_SNOW_WARNING 0x75
123
+#define ABILITY_HONEY_GATHER 0x76
124
+#define ABILITY_FRISK 0x77
125
+#define ABILITY_RECKLESS 0x78
126
+#define ABILITY_MULTITYPE 0x79
127
+#define ABILITY_FLOWER_GIFT 0x7A
128
+#define ABILITY_BAD_DREAMS 0x7B
129
+#define ABILITY_PICKPOCKET 0x7C
130
+#define ABILITY_SHEER_FORCE 0x7D
131
+#define ABILITY_CONTRARY 0x7E
132
+#define ABILITY_UNNERVE 0x7F
133
+#define ABILITY_DEFIANT 0x80
134
+#define ABILITY_DEFEATIST 0x81
135
+#define ABILITY_CURSED_BODY 0x82
136
+#define ABILITY_HEALER 0x83
137
+#define ABILITY_FRIEND_GUARD 0x84
138
+#define ABILITY_WEAK_ARMOR 0x85
139
+#define ABILITY_HEAVY_METAL 0x86
140
+#define ABILITY_LIGHT_METAL 0x87
141
+#define ABILITY_MULTISCALE 0x88
142
+#define ABILITY_TOXIC_BOOST 0x89
143
+#define ABILITY_FLARE_BOOST 0x8A
144
+#define ABILITY_HARVEST 0x8B
145
+#define ABILITY_TELEPATHY 0x8C
146
+#define ABILITY_MOODY 0x8D
147
+#define ABILITY_OVERCOAT 0x8E
148
+#define ABILITY_POISON_TOUCH 0x8F
149
+#define ABILITY_REGENERATOR 0x90
150
+#define ABILITY_BIG_PECKS 0x91
151
+#define ABILITY_SAND_RUSH 0x92
152
+#define ABILITY_WONDER_SKIN 0x93
153
+#define ABILITY_ANALYTIC 0x94
154
+#define ABILITY_ILLUSION 0x95
155
+#define ABILITY_IMPOSTER 0x96
156
+#define ABILITY_INFILTRATOR 0x97
157
+#define ABILITY_MUMMY 0x98
158
+#define ABILITY_MOXIE 0x99
159
+#define ABILITY_JUSTIFIED 0x9A
160
+#define ABILITY_RATTLED 0x9B
161
+#define ABILITY_MAGIC_BOUNCE 0x9C
162
+#define ABILITY_SAP_SIPPER 0x9D
163
+#define ABILITY_PRANKSTER 0x9E
164
+#define ABILITY_SAND_FORCE 0x9F
165
+#define ABILITY_IRON_BARBS 0xA0
166
+#define ABILITY_ZEN_MODE 0xA1
167
+#define ABILITY_VICTORY_STAR 0xA2
168
+#define ABILITY_TURBOBLAZE 0xA3
169
+#define ABILITY_TERAVOLT 0xA4
170
+#define ABILITY_AROMA_VEIL 0xA5
171
+#define ABILITY_FLOWER_VEIL 0xA6
172
+#define ABILITY_CHEEK_POUCH 0xA7
173
+#define ABILITY_PROTEAN 0xA8
174
+#define ABILITY_FUR_COAT 0xA9
175
+#define ABILITY_MAGICIAN 0xAA
176
+#define ABILITY_BULLETPROOF 0xAB
177
+#define ABILITY_COMPETITIVE 0xAC
178
+#define ABILITY_STRONG_JAW 0xAD
179
+#define ABILITY_REFRIGERATE 0xAE
180
+#define ABILITY_SWEET_VEIL 0xAF
181
+#define ABILITY_STANCE_CHANGE 0xB0
182
+#define ABILITY_GALE_WINGS 0xB1
183
+#define ABILITY_MEGA_LAUNCHER 0xB2
184
+#define ABILITY_GRASS_PELT 0xB3
185
+#define ABILITY_SYMBIOSIS 0xB4
186
+#define ABILITY_TOUGH_CLAWS 0xB5
187
+#define ABILITY_PIXILATE 0xB6
188
+#define ABILITY_GOOEY 0xB7
189
+#define ABILITY_AERILATE 0xB8
190
+#define ABILITY_PARENTAL_BOND 0xB9
191
+#define ABILITY_DARK_AURA 0xBA
192
+#define ABILITY_FAIRY_AURA 0xBB
193
+#define ABILITY_AURA_BREAK 0xBC
194
+#define ABILITY_PRIMORDIA_SEA 0xBD
195
+#define ABILITY_DESOLATE_LAND 0xBE
196
+#define ABILITY_DELTA_STREAM 0xBF
197
+
198
+#endif /* ABILITY_IDS_H */

+ 15
- 0
src/include/battle.h Vedi File

@@ -0,0 +1,15 @@
1
+#include <battle_structs.h>
2
+#include <custom_structs.h>
3
+#include <battle_locations.h>
4
+#include <pkmn_types.h>
5
+#include <abilities.h>
6
+#include <moves.h>
7
+
8
+#ifndef BATTLE_H_
9
+#define BATTLE_H_
10
+
11
+u8 get_side_from_bank(u8 bank);
12
+
13
+void battle_script_push();
14
+
15
+#endif

+ 9
- 0
src/include/battle_locations.h Vedi File

@@ -0,0 +1,9 @@
1
+#ifndef BATTLE_LOC_H_
2
+#define BATTLE_LOC_H_
3
+
4
+u8 battle_active_bank;
5
+u16 battle_damage_store;
6
+u32 battle_hitmarker;
7
+void* battlescript_cursor;
8
+
9
+#endif

+ 130
- 0
src/include/battle_structs.h Vedi File

@@ -0,0 +1,130 @@
1
+#ifndef BATTLE_STRUCT_H_
2
+#define BATTLE_STRUCT_H_
3
+
4
+#include <types.h>
5
+
6
+struct side_affecting_hword{
7
+    u16 reflect_on : 1;
8
+    u16 light_screen_on : 1;
9
+    u16 unkown1 : 2;
10
+    u16 spikes_on : 1;
11
+    u16 safeguard_on : 1;
12
+    u16 unkown2 : 2;
13
+    u16 mist_on : 1;
14
+    u16 spikes_damage_done : 1;
15
+};
16
+
17
+extern struct side_affecting_hword side_affecting_halfword[2];
18
+
19
+struct status_main{
20
+    u32 sleep : 3;
21
+    u32 poison : 1;
22
+    u32 burn : 1;
23
+    u32 freeze : 1;
24
+    u32 paralysis: 1;
25
+    u32 toxic_poison : 1;
26
+    u32 poison_counter : 4;
27
+};
28
+
29
+union main_status{
30
+    u32 int_status;
31
+    struct status_main flags;
32
+};
33
+
34
+#define STATUS_SLEEP 0x7
35
+#define STATUS_POISON 0x8
36
+#define STATUS_BURN 0x10
37
+#define STATUS_FREEZE 0x20
38
+#define STATUS_PARALYSIS 0x40
39
+#define STATUS_TOXIC_POISON 0x80
40
+
41
+struct flags2{
42
+    u32 confusion : 3;
43
+    u32 flinched : 1;
44
+    u32 uproar : 3;
45
+    u32 flag_x80 : 1;
46
+    u32 bide : 2;
47
+    u32 locked_and_confuse : 2;
48
+    u32 multiple_turn_move : 1;
49
+    u32 trapped_in_wrap : 3;
50
+    u32 in_love : 4;
51
+    u32 focus_energy : 1;
52
+    u32 transformed : 1;
53
+    u32 recharge : 1;
54
+    u32 raged : 1;
55
+    u32 substitute : 1;
56
+    u32 destinny_bond : 1;
57
+    u32 cant_escape : 1;
58
+    u32 nightmare : 1;
59
+    u32 cursed : 1;
60
+    u32 foresight : 1;
61
+    u32 defense_curled : 1;
62
+    u32 tormented : 1;
63
+};
64
+
65
+struct iv_set
66
+{
67
+    u32 iv_hp: 5;
68
+    u32 iv_atk: 5;
69
+    u32 iv_def: 5;
70
+    u32 iv_spd: 5;
71
+    u32 iv_sp_atk: 5;
72
+    u32 iv_sp_def: 5;
73
+};
74
+
75
+struct battle_participant {
76
+    u16 poke_species;
77
+    u16 atk;
78
+    u16 def;
79
+    u16 spd;
80
+    u16 sp_atk;
81
+    u16 sp_def;
82
+    u16 moves[4];
83
+    struct iv_set ivs;
84
+    u8 hp_buff;
85
+    u8 atk_buff;
86
+    u8 def_buff;
87
+    u8 spd_buff;
88
+    u8 sp_atk_buff;
89
+    u8 sp_def_buff;
90
+    u8 acc_buff;
91
+    u8 evasion_buff;
92
+    u8 ability_id;
93
+    u8 type1;
94
+    u8 type2;
95
+    u8 padd;
96
+    u8 current_pp[4];
97
+    u16 current_hp;
98
+    u8 level;
99
+    u8 happiness;
100
+    u16 max_hp;
101
+    u16 held_item;
102
+    u8 poke_name[12];
103
+    u8 trainer_name[8];
104
+    u32 padd2;
105
+    u32 pid;
106
+    union main_status status;
107
+    struct flags2 status2;
108
+    u32 otid;
109
+};
110
+
111
+extern struct battle_participant battle_participants[4];
112
+
113
+struct side_timer{
114
+    u8 reflect_timer;
115
+    u8 reflect_bank;
116
+    u8 lightscreen_timer;
117
+    u8 lightscreen_bank;
118
+    u8 mist_timer;
119
+    u8 mist_bank;
120
+    u8 safeguard_timer;
121
+    u8 safeguard_bank;
122
+    u8 followme_timer;
123
+    u8 followme_target;
124
+    u8 spikes_amount;
125
+    u8 fieldB;
126
+};
127
+
128
+extern struct side_timer battle_side_timers[2];
129
+
130
+#endif

+ 0
- 46
src/include/config.h Vedi File

@@ -96,52 +96,6 @@
96 96
 
97 97
 /*For hacking the miracle eye command into set foresight*/
98 98
 /*Comment out the first define to deactivate the miracleeye injection in the command table*/
99
-#define MIRACLEEYE
100
-#define MIRACLEEYEADDRESS		0x08C158A0
101
-
102
-/*Ability index numbers*/
103
-#define	ABILITY_SAND_VEIL		0x08	/*Is included in vanilla firered*/
104
-#define ABILITY_NATURAL_CURE	0x1E
105
-#define	ABILITY_HUSTLE			0x37	/*Is included in vanilla firered*/
106
-#define ABILITY_GUTS			0x3E	/*Is included in vanilla firered*/
107
-#define ABILITY_MARVEL_SCALE	0x3F	/*Is included in vanilla firered*/
108
-#define ABILITY_SAND_STREAM		0x2D	/*Is included in vanilla firered*/
109
-#define ABILITY_AIR_LOCK		0x4D	/*Is included in vanilla firered*/
110
-#define	ABILITY_TANGLED_FEET	0x4E
111
-#define	ABILITY_SNOW_CLOAK		0x52
112
-#define ABILITY_HEAT_PROOF		0x56
113
-#define ABILITY_SIMPLE			0x57
114
-#define ABILITY_SKILL_LINK		0x5D
115
-#define	ABILITY_SNIPER			0x62
116
-#define	ABILITY_MAGIC_GUARD		0x63	/*Is not included in the project but needs to be here for consistancy reasons*/
117
-
118
-#define	ABILITY_TECHNICIAN		0x66
119
-#define ABILITY_MOLD_BREAK		0x69
120
-#define ABILITY_SUPER_LUCK		0x6A
121
-#define ABILITY_UNAWARE			0x6E
122
-#define ABILITY_TINTED_LENS		0x6F
123
-#define ABILITY_FILTER			0x70
124
-#define ABILITY_SCRAPPY			0x72
125
-
126
-#define ABILITY_SOLID_ROCK		0x75
127
-#define ABILITY_SNOW_WARNING	0x76
128
-#define	ABILITY_DEFEATIST		0x82
129
-#define ABILITY_MULTI_SCALE		0x89
130
-#define ABILITY_TOXIC_BOOST		0x8A
131
-#define ABILITY_FLARE_BOOST		0x8B
132
-
133
-#define ABILITY_REGENERATOR		0x91
134
-#define ABILITY_BIG_PECKS		0x92
135
-#define ABILITY_WONDER_SKIN		0x94
136
-
137
-#define ABILITY_MOXIE			0x9A
138
-#define ABILITY_MAGIC_BOUNCE	0x9D
139
-
140
-#define ABILITY_VICTORY_STAR	0xA3
141
-
142
-#define ABILITY_FUR_COAT		0xAA
143
-#define ABILITY_TURBOBLAZE		0xA4
144
-#define ABILITY_TERAVOLT		0xA5
145 99
 
146 100
 /*Some move effect IDs important for correct implementation*/
147 101
 #define MOVE_EFFECT_SACRED_SWORD	0xFF

src/battle_engine/custom_structs.h → src/include/custom_structs.h Vedi File

@@ -58,8 +58,8 @@ struct side_affecting {
58 58
     u8 toxic_spikes_psn : 1;
59 59
     u8 toxic_spikes_badpsn : 1;
60 60
     u8 toxic_spikes_done : 1;
61
-    u8 stealthrock : 1;
62
-    u8 stealthrock_done : 1;
61
+    u8 stealth_rock : 1;
62
+    u8 stealth_rock_done : 1;
63 63
     u8 lucky_chant : 3;
64 64
     u8 lucky_chant_bank : 2;
65 65
     u8 tailwind : 3;

+ 634
- 0
src/include/moves.h Vedi File

@@ -0,0 +1,634 @@
1
+#ifndef MOVE_IDS_H
2
+#define MOVE_IDS_H
3
+
4
+#define move_target_selected 0
5
+#define move_target_depends 1
6
+#define move_target_random 4
7
+#define move_target_both 8
8
+#define move_target_user 0x10
9
+#define move_target_foes_and_ally 0x20
10
+#define move_target_opponent_field 0x40
11
+
12
+#define MOVE_ABSORB 0x47
13
+#define MOVE_ACID 0x33
14
+#define MOVE_ACID_ARMOR 0x97
15
+#define MOVE_ACID_SPRAY 0x1EB
16
+#define MOVE_ACROBATICS 0x200
17
+#define MOVE_ACUPRESSURE 0x16F
18
+#define MOVE_AERIAL_ACE 0x14C
19
+#define MOVE_AEROBLAST 0xB1
20
+#define MOVE_AFTER_YOU 0x1EF
21
+#define MOVE_AGILITY 0x61
22
+#define MOVE_AIR_CUTTER 0x13A
23
+#define MOVE_AIR_SLASH 0x193
24
+#define MOVE_ALLY_SWITCH 0x1F6
25
+#define MOVE_AMNESIA 0x85
26
+#define MOVE_ANCIENT_POWER 0xF6
27
+#define MOVE_AQUA_JET 0x1C5
28
+#define MOVE_AQUA_RING 0x188
29
+#define MOVE_AQUA_TAIL 0x191
30
+#define MOVE_ARM_THRUST 0x124
31
+#define MOVE_AROMATHERAPY 0x138
32
+#define MOVE_AROMATIC_MIST 0x255
33
+#define MOVE_ASSIST 0x112
34
+#define MOVE_ASSURANCE 0x174
35
+#define MOVE_ASTONISH 0x136
36
+#define MOVE_ATTACK_ORDER 0x1C6
37
+#define MOVE_ATTRACT 0xD5
38
+#define MOVE_AURA_SPHERE 0x18C
39
+#define MOVE_AURORA_BEAM 0x3E
40
+#define MOVE_AUTOTOMIZE 0x1DB
41
+#define MOVE_AVALANCHE 0x1A3
42
+#define MOVE_BABYDOLL_EYES 0x260
43
+#define MOVE_BARRAGE 0x8C
44
+#define MOVE_BARRIER 0x70
45
+#define MOVE_BATON_PASS 0xE2
46
+#define MOVE_BEAT_UP 0xFB
47
+#define MOVE_BELCH 0x232
48
+#define MOVE_BELLY_DRUM 0xBB
49
+#define MOVE_BESTOW 0x204
50
+#define MOVE_BIDE 0x75
51
+#define MOVE_BIND 0x14
52
+#define MOVE_BITE 0x2C
53
+#define MOVE_BLAST_BURN 0x133
54
+#define MOVE_BLAZE_KICK 0x12B
55
+#define MOVE_BLIZZARD 0x3B
56
+#define MOVE_BLOCK 0x14F
57
+#define MOVE_BLUE_FLARE 0x227
58
+#define MOVE_BODY_SLAM 0x22
59
+#define MOVE_BOLT_STRIKE 0x226
60
+#define MOVE_BONE_CLUB 0x7D
61
+#define MOVE_BONE_RUSH 0xC6
62
+#define MOVE_BONEMERANG 0x9B
63
+#define MOVE_BOOMBURST 0x24A
64
+#define MOVE_BOUNCE 0x154
65
+#define MOVE_BRAVE_BIRD 0x19D
66
+#define MOVE_BRICK_BREAK 0x118
67
+#define MOVE_BRINE 0x16A
68
+#define MOVE_BUBBLE 0x91
69
+#define MOVE_BUBBLE_BEAM 0x3D
70
+#define MOVE_BUG_BITE 0x1C2
71
+#define MOVE_BUG_BUZZ 0x195
72
+#define MOVE_BULK_UP 0x153
73
+#define MOVE_BULLDOZE 0x20B
74
+#define MOVE_BULLET_PUNCH 0x1A2
75
+#define MOVE_BULLET_SEED 0x14B
76
+#define MOVE_CALM_MIND 0x15B
77
+#define MOVE_CAMOUFLAGE 0x125
78
+#define MOVE_CAPTIVATE 0x1BD
79
+#define MOVE_CELEBRATE 0x25E
80
+#define MOVE_CHARGE 0x10C
81
+#define MOVE_CHARGE_BEAM 0x1C3
82
+#define MOVE_CHARM 0xCC
83
+#define MOVE_CHATTER 0x1C0
84
+#define MOVE_CHIP_AWAY 0x1F2
85
+#define MOVE_CIRCLE_THROW 0x1FD
86
+#define MOVE_CLAMP 0x80
87
+#define MOVE_CLEAR_SMOG 0x1F3
88
+#define MOVE_CLOSE_COMBAT 0x172
89
+#define MOVE_COIL 0x1E9
90
+#define MOVE_COMET_PUNCH 0x4
91
+#define MOVE_CONFIDE 0x24E
92
+#define MOVE_CONFUSE_RAY 0x6D
93
+#define MOVE_CONFUSION 0x5D
94
+#define MOVE_CONSTRICT 0x84
95
+#define MOVE_CONVERSION 0xA0
96
+#define MOVE_CONVERSION_2 0xB0
97
+#define MOVE_COPYCAT 0x17F
98
+#define MOVE_COSMIC_POWER 0x142
99
+#define MOVE_COTTON_GUARD 0x21A
100
+#define MOVE_COTTON_SPORE 0xB2
101
+#define MOVE_COUNTER 0x44
102
+#define MOVE_COVET 0x157
103
+#define MOVE_CRABHAMMER 0x98
104
+#define MOVE_CRAFTY_SHIELD 0x242
105
+#define MOVE_CROSS_CHOP 0xEE
106
+#define MOVE_CROSS_POISON 0x1B8
107
+#define MOVE_CRUNCH 0xF2
108
+#define MOVE_CRUSH_CLAW 0x132
109
+#define MOVE_CRUSH_GRIP 0x1CE
110
+#define MOVE_CURSE 0xAE
111
+#define MOVE_CUT 0xF
112
+#define MOVE_DARK_PULSE 0x18F
113
+#define MOVE_DARK_VOID 0x1D0
114
+#define MOVE_DAZZLING_GLEAM 0x25D
115
+#define MOVE_DEFEND_ORDER 0x1C7
116
+#define MOVE_DEFENSE_CURL 0x6F
117
+#define MOVE_DEFOG 0x1B0
118
+#define MOVE_DESTINY_BOND 0xC2
119
+#define MOVE_DETECT 0xC5
120
+#define MOVE_DIAMOND_STORM 0x24F
121
+#define MOVE_DIG 0x5B
122
+#define MOVE_DISABLE 0x32
123
+#define MOVE_DISARMING_VOICE 0x23E
124
+#define MOVE_DISCHARGE 0x1B3
125
+#define MOVE_DIVE 0x123
126
+#define MOVE_DIZZY_PUNCH 0x92
127
+#define MOVE_DOOM_DESIRE 0x161
128
+#define MOVE_DOUBLEEDGE 0x26
129
+#define MOVE_DOUBLE_HIT 0x1CA
130
+#define MOVE_DOUBLE_KICK 0x18
131
+#define MOVE_DOUBLE_SLAP 0x3
132
+#define MOVE_DOUBLE_TEAM 0x68
133
+#define MOVE_DRACO_METEOR 0x1B2
134
+#define MOVE_DRAGON_ASCENT 0x26C
135
+#define MOVE_DRAGON_BREATH 0xE1
136
+#define MOVE_DRAGON_CLAW 0x151
137
+#define MOVE_DRAGON_DANCE 0x15D
138
+#define MOVE_DRAGON_PULSE 0x196
139
+#define MOVE_DRAGON_RAGE 0x52
140
+#define MOVE_DRAGON_RUSH 0x197
141
+#define MOVE_DRAGON_TAIL 0x20D
142
+#define MOVE_DRAINING_KISS 0x241
143
+#define MOVE_DRAIN_PUNCH 0x199
144
+#define MOVE_DREAM_EATER 0x8A
145
+#define MOVE_DRILL_PECK 0x41
146
+#define MOVE_DRILL_RUN 0x211
147
+#define MOVE_DUAL_CHOP 0x212
148
+#define MOVE_DYNAMIC_PUNCH 0xDF
149
+#define MOVE_EARTH_POWER 0x19E
150
+#define MOVE_EARTHQUAKE 0x59
151
+#define MOVE_ECHOED_VOICE 0x1F1
152
+#define MOVE_EERIE_IMPULSE 0x256
153
+#define MOVE_EGG_BOMB 0x79
154
+#define MOVE_ELECTRIC_TERRAIN 0x25C
155
+#define MOVE_ELECTRIFY 0x246
156
+#define MOVE_ELECTRO_BALL 0x1E6
157
+#define MOVE_ELECTROWEB 0x20F
158
+#define MOVE_EMBARGO 0x175
159
+#define MOVE_EMBER 0x34
160
+#define MOVE_ENCORE 0xE3
161
+#define MOVE_ENDEAVOR 0x11B
162
+#define MOVE_ENDURE 0xCB
163
+#define MOVE_ENERGY_BALL 0x19C
164
+#define MOVE_ENTRAINMENT 0x1EE
165
+#define MOVE_ERUPTION 0x11C
166
+#define MOVE_EXPLOSION 0x99
167
+#define MOVE_EXTRASENSORY 0x146
168
+#define MOVE_EXTREME_SPEED 0xF5
169
+#define MOVE_FACADE 0x107
170
+#define MOVE_FEINT_ATTACK 0xB9
171
+#define MOVE_FAIRY_LOCK 0x24B
172
+#define MOVE_FAIRY_WIND 0x248
173
+#define MOVE_FAKE_OUT 0xFC
174
+#define MOVE_FAKE_TEARS 0x139
175
+#define MOVE_FALSE_SWIPE 0xCE
176
+#define MOVE_FEATHER_DANCE 0x129
177
+#define MOVE_FEINT 0x16C
178
+#define MOVE_FELL_STINGER 0x235
179
+#define MOVE_FIERY_DANCE 0x228
180
+#define MOVE_FINAL_GAMBIT 0x203
181
+#define MOVE_FIRE_BLAST 0x7E
182
+#define MOVE_FIRE_FANG 0x1A8
183
+#define MOVE_FIRE_PLEDGE 0x207
184
+#define MOVE_FIRE_PUNCH 0x7
185
+#define MOVE_FIRE_SPIN 0x53
186
+#define MOVE_FISSURE 0x5A
187
+#define MOVE_FLAIL 0xAF
188
+#define MOVE_FLAME_BURST 0x1E1
189
+#define MOVE_FLAME_CHARGE 0x1E8
190
+#define MOVE_FLAME_WHEEL 0xAC
191
+#define MOVE_FLAMETHROWER 0x35
192
+#define MOVE_FLARE_BLITZ 0x18A
193
+#define MOVE_FLASH 0x94
194
+#define MOVE_FLASH_CANNON 0x1AE
195
+#define MOVE_FLATTER 0x104
196
+#define MOVE_FLING 0x176
197
+#define MOVE_FLOWER_SHIELD 0x243
198
+#define MOVE_FLY 0x13
199
+#define MOVE_FLYING_PRESS 0x230
200
+#define MOVE_FOCUS_BLAST 0x19B
201
+#define MOVE_FOCUS_ENERGY 0x74
202
+#define MOVE_FOCUS_PUNCH 0x108
203
+#define MOVE_FOLLOW_ME 0x10A
204
+#define MOVE_FORCE_PALM 0x18B
205
+#define MOVE_FORESIGHT 0xC1
206
+#define MOVE_FORESTS_CURSE 0x23B
207
+#define MOVE_FOUL_PLAY 0x1EC
208
+#define MOVE_FREEZEDRY 0x23D
209
+#define MOVE_FREEZE_SHOCK 0x229
210
+#define MOVE_FRENZY_PLANT 0x152
211
+#define MOVE_FROST_BREATH 0x20C
212
+#define MOVE_FRUSTRATION 0xDA
213
+#define MOVE_FURY_ATTACK 0x1F
214
+#define MOVE_FURY_CUTTER 0xD2
215
+#define MOVE_FURY_SWIPES 0x9A
216
+#define MOVE_FUSION_BOLT 0x22F
217
+#define MOVE_FUSION_FLARE 0x22E
218
+#define MOVE_FUTURE_SIGHT 0xF8
219
+#define MOVE_GASTRO_ACID 0x17C
220
+#define MOVE_GEAR_GRIND 0x220
221
+#define MOVE_GEOMANCY 0x259
222
+#define MOVE_GIGA_DRAIN 0xCA
223
+#define MOVE_GIGA_IMPACT 0x1A0
224
+#define MOVE_GLACIATE 0x225
225
+#define MOVE_GLARE 0x89
226
+#define MOVE_GRASS_KNOT 0x1BF
227
+#define MOVE_GRASS_PLEDGE 0x208
228
+#define MOVE_GRASS_WHISTLE 0x140
229
+#define MOVE_GRASSY_TERRAIN 0x244
230
+#define MOVE_GRAVITY 0x164
231
+#define MOVE_GROWL 0x2D
232
+#define MOVE_GROWTH 0x4A
233
+#define MOVE_GRUDGE 0x120
234
+#define MOVE_GUARD_SPLIT 0x1D6
235
+#define MOVE_GUARD_SWAP 0x181
236
+#define MOVE_GUILLOTINE 0xC
237
+#define MOVE_GUNK_SHOT 0x1B9
238
+#define MOVE_GUST 0x10
239
+#define MOVE_GYRO_BALL 0x168
240
+#define MOVE_HAIL 0x102
241
+#define MOVE_HAMMER_ARM 0x167
242
+#define MOVE_HAPPY_HOUR 0x25B
243
+#define MOVE_HARDEN 0x6A
244
+#define MOVE_HAZE 0x72
245
+#define MOVE_HEAD_CHARGE 0x21F
246
+#define MOVE_HEAD_SMASH 0x1C9
247
+#define MOVE_HEADBUTT 0x1D
248
+#define MOVE_HEAL_BELL 0xD7
249
+#define MOVE_HEAL_BLOCK 0x179
250
+#define MOVE_HEAL_ORDER 0x1C8
251
+#define MOVE_HEAL_PULSE 0x1F9
252
+#define MOVE_HEALING_WISH 0x169
253
+#define MOVE_HEART_STAMP 0x213
254
+#define MOVE_HEART_SWAP 0x187
255
+#define MOVE_HEAT_CRASH 0x217
256
+#define MOVE_HEAT_WAVE 0x101
257
+#define MOVE_HEAVY_SLAM 0x1E4
258
+#define MOVE_HELPING_HAND 0x10E
259
+#define MOVE_HEX 0x1FA
260
+#define MOVE_HIDDEN_POWER 0xED
261
+#define MOVE_HIGH_JUMP_KICK 0x88
262
+#define MOVE_HOLD_BACK 0x262
263
+#define MOVE_HOLD_HANDS 0x267
264
+#define MOVE_HONE_CLAWS 0x1D4
265
+#define MOVE_HORN_ATTACK 0x1E
266
+#define MOVE_HORN_DRILL 0x20
267
+#define MOVE_HORN_LEECH 0x214
268
+#define MOVE_HOWL 0x150
269
+#define MOVE_HURRICANE 0x21E
270
+#define MOVE_HYDRO_CANNON 0x134
271
+#define MOVE_HYDRO_PUMP 0x38
272
+#define MOVE_HYPER_BEAM 0x3F
273
+#define MOVE_HYPER_FANG 0x9E
274
+#define MOVE_HYPERSPACE_FURY 0x26D
275
+#define MOVE_HYPERSPACE_HOLE 0x251
276
+#define MOVE_HYPER_VOICE 0x130
277
+#define MOVE_HYPNOSIS 0x5F
278
+#define MOVE_ICE_BALL 0x12D
279
+#define MOVE_ICE_BEAM 0x3A
280
+#define MOVE_ICE_BURN 0x22A
281
+#define MOVE_ICE_FANG 0x1A7
282
+#define MOVE_ICE_PUNCH 0x8
283
+#define MOVE_ICE_SHARD 0x1A4
284
+#define MOVE_ICICLE_CRASH 0x22C
285
+#define MOVE_ICICLE_SPEAR 0x14D
286
+#define MOVE_ICY_WIND 0xC4
287
+#define MOVE_IMPRISON 0x11E
288
+#define MOVE_INCINERATE 0x1FE
289
+#define MOVE_INFERNO 0x205
290
+#define MOVE_INFESTATION 0x263
291
+#define MOVE_INGRAIN 0x113
292
+#define MOVE_ION_DELUGE 0x239
293
+#define MOVE_IRON_DEFENSE 0x14E
294
+#define MOVE_IRON_HEAD 0x1BA
295
+#define MOVE_IRON_TAIL 0xE7
296
+#define MOVE_JUDGMENT 0x1C1
297
+#define MOVE_JUMP_KICK 0x1A
298
+#define MOVE_KARATE_CHOP 0x2
299
+#define MOVE_KINESIS 0x86
300
+#define MOVE_KINGS_SHIELD 0x24C
301
+#define MOVE_KNOCK_OFF 0x11A
302
+#define MOVE_LANDS_WRATH 0x268
303
+#define MOVE_LAST_RESORT 0x183
304
+#define MOVE_LAVA_PLUME 0x1B4
305
+#define MOVE_LEAF_BLADE 0x15C
306
+#define MOVE_LEAF_STORM 0x1B5
307
+#define MOVE_LEAF_TORNADO 0x218
308
+#define MOVE_LEECH_LIFE 0x8D
309
+#define MOVE_LEECH_SEED 0x49
310
+#define MOVE_LEER 0x2B
311
+#define MOVE_LICK 0x7A
312
+#define MOVE_LIGHT_OF_RUIN 0x269
313
+#define MOVE_LIGHT_SCREEN 0x71
314
+#define MOVE_LOCKON 0xC7
315
+#define MOVE_LOVELY_KISS 0x8E
316
+#define MOVE_LOW_KICK 0x43
317
+#define MOVE_LOW_SWEEP 0x1EA
318
+#define MOVE_LUCKY_CHANT 0x17D
319
+#define MOVE_LUNAR_DANCE 0x1CD
320
+#define MOVE_LUSTER_PURGE 0x127
321
+#define MOVE_MACH_PUNCH 0xB7
322
+#define MOVE_MAGIC_COAT 0x115
323
+#define MOVE_MAGIC_ROOM 0x1DE
324
+#define MOVE_MAGICAL_LEAF 0x159
325
+#define MOVE_MAGMA_STORM 0x1CF
326
+#define MOVE_MAGNET_BOMB 0x1BB
327
+#define MOVE_MAGNETIC_FLUX 0x25A
328
+#define MOVE_MAGNET_RISE 0x189
329
+#define MOVE_MAGNITUDE 0xDE
330
+#define MOVE_MAT_BLOCK 0x231
331
+#define MOVE_ME_FIRST 0x17E
332
+#define MOVE_MEAN_LOOK 0xD4
333
+#define MOVE_MEDITATE 0x60
334
+#define MOVE_MEGA_DRAIN 0x48
335
+#define MOVE_MEGA_KICK 0x19
336
+#define MOVE_MEGA_PUNCH 0x5
337
+#define MOVE_MEGAHORN 0xE0
338
+#define MOVE_MEMENTO 0x106
339
+#define MOVE_METAL_BURST 0x170
340
+#define MOVE_METAL_CLAW 0xE8
341
+#define MOVE_METAL_SOUND 0x13F
342
+#define MOVE_METEOR_MASH 0x135
343
+#define MOVE_METRONOME 0x76
344
+#define MOVE_MILK_DRINK 0xD0
345
+#define MOVE_MIMIC 0x66
346
+#define MOVE_MIND_READER 0xAA
347
+#define MOVE_MINIMIZE 0x6B
348
+#define MOVE_MIRACLE_EYE 0x165
349
+#define MOVE_MIRROR_COAT 0xF3
350
+#define MOVE_MIRROR_MOVE 0x77
351
+#define MOVE_MIRROR_SHOT 0x1AD
352
+#define MOVE_MIST 0x36
353
+#define MOVE_MIST_BALL 0x128
354
+#define MOVE_MISTY_TERRAIN 0x245
355
+#define MOVE_MOONBLAST 0x249
356
+#define MOVE_MOONLIGHT 0xEC
357
+#define MOVE_MORNING_SUN 0xEA
358
+#define MOVE_MUDSLAP 0xBD
359
+#define MOVE_MUD_BOMB 0x1AA
360
+#define MOVE_MUD_SHOT 0x155
361
+#define MOVE_MUD_SPORT 0x12C
362
+#define MOVE_MUDDY_WATER 0x14A
363
+#define MOVE_MYSTICAL_FIRE 0x253
364
+#define MOVE_NASTY_PLOT 0x1A1
365
+#define MOVE_NATURAL_GIFT 0x16B
366
+#define MOVE_NATURE_POWER 0x10B
367
+#define MOVE_NEEDLE_ARM 0x12E
368
+#define MOVE_NIGHT_DAZE 0x21B
369
+#define MOVE_NIGHT_SHADE 0x65
370
+#define MOVE_NIGHT_SLASH 0x190
371
+#define MOVE_NIGHTMARE 0xAB
372
+#define MOVE_NOBLE_ROAR 0x238
373
+#define MOVE_NUZZLE 0x261
374
+#define MOVE_OBLIVION_WING 0x265
375
+#define MOVE_OCTAZOOKA 0xBE
376
+#define MOVE_ODOR_SLEUTH 0x13C
377
+#define MOVE_OMINOUS_WIND 0x1D2
378
+#define MOVE_ORIGIN_PULSE 0x26A
379
+#define MOVE_OUTRAGE 0xC8
380
+#define MOVE_OVERHEAT 0x13B
381
+#define MOVE_PAIN_SPLIT 0xDC
382
+#define MOVE_PARABOLIC_CHARGE 0x23A
383
+#define MOVE_PARTING_SHOT 0x23F
384
+#define MOVE_PAY_DAY 0x6
385
+#define MOVE_PAYBACK 0x173
386
+#define MOVE_PECK 0x40
387
+#define MOVE_PERISH_SONG 0xC3
388
+#define MOVE_PETAL_BLIZZARD 0x23C
389
+#define MOVE_PETAL_DANCE 0x50
390
+#define MOVE_PHANTOM_FORCE 0x236
391
+#define MOVE_PIN_MISSILE 0x2A
392
+#define MOVE_PLAY_NICE 0x24D
393
+#define MOVE_PLAY_ROUGH 0x247
394
+#define MOVE_PLUCK 0x16D
395
+#define MOVE_POISON_FANG 0x131
396
+#define MOVE_POISON_GAS 0x8B
397
+#define MOVE_POISON_JAB 0x18E
398
+#define MOVE_POISON_POWDER 0x4D
399
+#define MOVE_POISON_STING 0x28
400
+#define MOVE_POISON_TAIL 0x156
401
+#define MOVE_POUND 0x1
402
+#define MOVE_POWDER 0x258
403
+#define MOVE_POWDER_SNOW 0xB5
404
+#define MOVE_POWER_GEM 0x198
405
+#define MOVE_POWER_SPLIT 0x1D7
406
+#define MOVE_POWER_SWAP 0x180
407
+#define MOVE_POWER_TRICK 0x17B
408
+#define MOVE_POWERUP_PUNCH 0x264
409
+#define MOVE_POWER_WHIP 0x1B6
410
+#define MOVE_PRECIPICE_BLADES 0x26B
411
+#define MOVE_PRESENT 0xD9
412
+#define MOVE_PROTECT 0xB6
413
+#define MOVE_PSYBEAM 0x3C
414
+#define MOVE_PSYCH_UP 0xF4
415
+#define MOVE_PSYCHIC 0x5E
416
+#define MOVE_PSYCHO_BOOST 0x162
417
+#define MOVE_PSYCHO_CUT 0x1AB
418
+#define MOVE_PSYCHO_SHIFT 0x177
419
+#define MOVE_PSYSHOCK 0x1D9
420
+#define MOVE_PSYSTRIKE 0x21C
421
+#define MOVE_PSYWAVE 0x95
422
+#define MOVE_PUNISHMENT 0x182
423
+#define MOVE_PURSUIT 0xE4
424
+#define MOVE_QUASH 0x1FF
425
+#define MOVE_QUICK_ATTACK 0x62
426
+#define MOVE_QUICK_GUARD 0x1F5
427
+#define MOVE_QUIVER_DANCE 0x1E3
428
+#define MOVE_RAGE 0x63
429
+#define MOVE_RAGE_POWDER 0x1DC
430
+#define MOVE_RAIN_DANCE 0xF0
431
+#define MOVE_RAPID_SPIN 0xE5
432
+#define MOVE_RAZOR_LEAF 0x4B
433
+#define MOVE_RAZOR_SHELL 0x216
434
+#define MOVE_RAZOR_WIND 0xD
435
+#define MOVE_RECOVER 0x69
436
+#define MOVE_RECYCLE 0x116
437
+#define MOVE_REFLECT 0x73
438
+#define MOVE_REFLECT_TYPE 0x201
439
+#define MOVE_REFRESH 0x11F
440
+#define MOVE_RELIC_SONG 0x223
441
+#define MOVE_REST 0x9C
442
+#define MOVE_RETALIATE 0x202
443
+#define MOVE_RETURN 0xD8
444
+#define MOVE_REVENGE 0x117
445
+#define MOVE_REVERSAL 0xB3
446
+#define MOVE_ROAR 0x2E
447
+#define MOVE_ROAR_OF_TIME 0x1CB
448
+#define MOVE_ROCK_BLAST 0x15E
449
+#define MOVE_ROCK_CLIMB 0x1AF
450
+#define MOVE_ROCK_POLISH 0x18D
451
+#define MOVE_ROCK_SLIDE 0x9D
452
+#define MOVE_ROCK_SMASH 0xF9
453
+#define MOVE_ROCK_THROW 0x58
454
+#define MOVE_ROCK_TOMB 0x13D
455
+#define MOVE_ROCK_WRECKER 0x1B7
456
+#define MOVE_ROLE_PLAY 0x110
457
+#define MOVE_ROLLING_KICK 0x1B
458
+#define MOVE_ROLLOUT 0xCD
459
+#define MOVE_ROOST 0x163
460
+#define MOVE_ROTOTILLER 0x233
461
+#define MOVE_ROUND 0x1F0
462
+#define MOVE_SACRED_FIRE 0xDD
463
+#define MOVE_SACRED_SWORD 0x215
464
+#define MOVE_SAFEGUARD 0xDB
465
+#define MOVE_SAND_ATTACK 0x1C
466
+#define MOVE_SAND_TOMB 0x148
467
+#define MOVE_SANDSTORM 0xC9
468
+#define MOVE_SCALD 0x1F7
469
+#define MOVE_SCARY_FACE 0xB8
470
+#define MOVE_SCRATCH 0xA
471
+#define MOVE_SCREECH 0x67
472
+#define MOVE_SEARING_SHOT 0x221
473
+#define MOVE_SECRET_POWER 0x122
474
+#define MOVE_SECRET_SWORD 0x224
475
+#define MOVE_SEED_BOMB 0x192
476
+#define MOVE_SEED_FLARE 0x1D1
477
+#define MOVE_SEISMIC_TOSS 0x45
478
+#define MOVE_SELFDESTRUCT 0x78
479
+#define MOVE_SHADOW_BALL 0xF7
480
+#define MOVE_SHADOW_CLAW 0x1A5
481
+#define MOVE_SHADOW_FORCE 0x1D3
482
+#define MOVE_SHADOW_PUNCH 0x145
483
+#define MOVE_SHADOW_SNEAK 0x1A9
484
+#define MOVE_SHARPEN 0x9F
485
+#define MOVE_SHEER_COLD 0x149
486
+#define MOVE_SHELL_SMASH 0x1F8
487
+#define MOVE_SHIFT_GEAR 0x1FC
488
+#define MOVE_SHOCK_WAVE 0x15F
489
+#define MOVE_SIGNAL_BEAM 0x144
490
+#define MOVE_SILVER_WIND 0x13E
491
+#define MOVE_SIMPLE_BEAM 0x1ED
492
+#define MOVE_SING 0x2F
493
+#define MOVE_SKETCH 0xA6
494
+#define MOVE_SKILL_SWAP 0x11D
495
+#define MOVE_SKULL_BASH 0x82
496
+#define MOVE_SKY_ATTACK 0x8F
497
+#define MOVE_SKY_DROP 0x1FB
498
+#define MOVE_SKY_UPPERCUT 0x147
499
+#define MOVE_SLACK_OFF 0x12F
500
+#define MOVE_SLAM 0x15
501
+#define MOVE_SLASH 0xA3
502
+#define MOVE_SLEEP_POWDER 0x4F
503
+#define MOVE_SLEEP_TALK 0xD6
504
+#define MOVE_SLUDGE 0x7C
505
+#define MOVE_SLUDGE_BOMB 0xBC
506
+#define MOVE_SLUDGE_WAVE 0x1E2
507
+#define MOVE_SMACK_DOWN 0x1DF
508
+#define MOVE_SMELLING_SALTS 0x109
509
+#define MOVE_SMOG 0x7B
510
+#define MOVE_SMOKESCREEN 0x6C
511
+#define MOVE_SNARL 0x22B
512
+#define MOVE_SNATCH 0x121
513
+#define MOVE_SNORE 0xAD
514
+#define MOVE_SPIKY_SHIELD 0x254
515
+#define MOVE_SOAK 0x1E7
516
+#define MOVE_SOFTBOILED 0x87
517
+#define MOVE_SOLAR_BEAM 0x4C
518
+#define MOVE_SONIC_BOOM 0x31
519
+#define MOVE_SPACIAL_REND 0x1CC
520
+#define MOVE_SPARK 0xD1
521
+#define MOVE_SPIDER_WEB 0xA9
522
+#define MOVE_SPIKE_CANNON 0x83
523
+#define MOVE_SPIKES 0xBF
524
+#define MOVE_SPIT_UP 0xFF
525
+#define MOVE_SPITE 0xB4
526
+#define MOVE_SPLASH 0x96
527
+#define MOVE_SPORE 0x93
528
+#define MOVE_STEALTH_ROCK 0x1BE
529
+#define MOVE_STEAM_ERUPTION 0x250
530
+#define MOVE_STEEL_WING 0xD3
531
+#define MOVE_STICKY_WEB 0x234
532
+#define MOVE_STOCKPILE 0xFE
533
+#define MOVE_STOMP 0x17
534
+#define MOVE_STONE_EDGE 0x1BC
535
+#define MOVE_STORED_POWER 0x1F4
536
+#define MOVE_STORM_THROW 0x1E0
537
+#define MOVE_STEAMROLLER 0x219
538
+#define MOVE_STRENGTH 0x46
539
+#define MOVE_STRING_SHOT 0x51
540
+#define MOVE_STRUGGLE 0xA5
541
+#define MOVE_STRUGGLE_BUG 0x20A
542
+#define MOVE_STUN_SPORE 0x4E
543
+#define MOVE_SUBMISSION 0x42
544
+#define MOVE_SUBSTITUTE 0xA4
545
+#define MOVE_SUCKER_PUNCH 0x185
546
+#define MOVE_SUNNY_DAY 0xF1
547
+#define MOVE_SUPER_FANG 0xA2
548
+#define MOVE_SUPERPOWER 0x114
549
+#define MOVE_SUPERSONIC 0x30
550
+#define MOVE_SURF 0x39
551
+#define MOVE_SWAGGER 0xCF
552
+#define MOVE_SWALLOW 0x100
553
+#define MOVE_SWEET_KISS 0xBA
554
+#define MOVE_SWEET_SCENT 0xE6
555
+#define MOVE_SWIFT 0x81
556
+#define MOVE_SWITCHEROO 0x19F
557
+#define MOVE_SWORDS_DANCE 0xE
558
+#define MOVE_SYNCHRONOISE 0x1E5
559
+#define MOVE_SYNTHESIS 0xEB
560
+#define MOVE_TACKLE 0x21
561
+#define MOVE_TAIL_GLOW 0x126
562
+#define MOVE_TAIL_SLAP 0x21D
563
+#define MOVE_TAIL_WHIP 0x27
564
+#define MOVE_TAILWIND 0x16E
565
+#define MOVE_TAKE_DOWN 0x24
566
+#define MOVE_TAUNT 0x10D
567
+#define MOVE_TECHNO_BLAST 0x222
568
+#define MOVE_TEETER_DANCE 0x12A
569
+#define MOVE_TELEKINESIS 0x1DD
570
+#define MOVE_TELEPORT 0x64
571
+#define MOVE_THIEF 0xA8
572
+#define MOVE_THOUSAND_ARROWS 0x266
573
+#define MOVE_THOUSAND_WAVES 0x267
574
+#define MOVE_THRASH 0x25
575
+#define MOVE_THUNDER 0x57
576
+#define MOVE_THUNDER_FANG 0x1A6
577
+#define MOVE_THUNDER_PUNCH 0x9
578
+#define MOVE_THUNDER_SHOCK 0x54
579
+#define MOVE_THUNDER_WAVE 0x56
580
+#define MOVE_THUNDERBOLT 0x55
581
+#define MOVE_TICKLE 0x141
582
+#define MOVE_TOPSYTURVY 0x240
583
+#define MOVE_TORMENT 0x103
584
+#define MOVE_TOXIC 0x5C
585
+#define MOVE_TOXIC_SPIKES 0x186
586
+#define MOVE_TRANSFORM 0x90
587
+#define MOVE_TRI_ATTACK 0xA1
588
+#define MOVE_TRICK 0x10F
589
+#define MOVE_TRICKORTREAT 0x237
590
+#define MOVE_TRICK_ROOM 0x1B1
591
+#define MOVE_TRIPLE_KICK 0xA7
592
+#define MOVE_TRUMP_CARD 0x178
593
+#define MOVE_TWINEEDLE 0x29
594
+#define MOVE_TWISTER 0xEF
595
+#define MOVE_UTURN 0x171
596
+#define MOVE_UPROAR 0xFD
597
+#define MOVE_VCREATE 0x22D
598
+#define MOVE_VACUUM_WAVE 0x19A
599
+#define MOVE_VENOM_DRENCH 0x257
600
+#define MOVE_VENOSHOCK 0x1DA
601
+#define MOVE_VICE_GRIP 0xB
602
+#define MOVE_VINE_WHIP 0x16
603
+#define MOVE_VITAL_THROW 0xE9
604
+#define MOVE_VOLT_SWITCH 0x209
605
+#define MOVE_VOLT_TACKLE 0x158
606
+#define MOVE_WAKEUP_SLAP 0x166
607
+#define MOVE_WATER_GUN 0x37
608
+#define MOVE_WATER_PLEDGE 0x206
609
+#define MOVE_WATER_PULSE 0x160
610
+#define MOVE_WATER_SPORT 0x15A
611
+#define MOVE_WATER_SPOUT 0x143
612
+#define MOVE_WATERFALL 0x7F
613
+#define MOVE_WATER_SHURIKEN 0x252
614
+#define MOVE_WEATHER_BALL 0x137
615
+#define MOVE_WHIRLPOOL 0xFA
616
+#define MOVE_WHIRLWIND 0x12
617
+#define MOVE_WIDE_GUARD 0x1D5
618
+#define MOVE_WILD_CHARGE 0x210
619
+#define MOVE_WILLOWISP 0x105
620
+#define MOVE_WING_ATTACK 0x11
621
+#define MOVE_WISH 0x111
622
+#define MOVE_WITHDRAW 0x6E
623
+#define MOVE_WONDER_ROOM 0x1D8
624
+#define MOVE_WOOD_HAMMER 0x1C4
625
+#define MOVE_WORK_UP 0x20E
626
+#define MOVE_WORRY_SEED 0x184
627
+#define MOVE_WRAP 0x23
628
+#define MOVE_WRING_OUT 0x17A
629
+#define MOVE_XSCISSOR 0x194
630
+#define MOVE_YAWN 0x119
631
+#define MOVE_ZAP_CANNON 0xC0
632
+#define MOVE_ZEN_HEADBUTT 0x1AC
633
+
634
+#endif /* MOVE_IDS_H */

+ 4
- 0
src/include/pkmn_types.h Vedi File

@@ -12,6 +12,8 @@
12 12
 #define TYPE_GHOST 0x7
13 13
 #define TYPE_STEEL 0x8
14 14
 
15
+#define TYPE_EGG 0x9
16
+
15 17
 #define TYPE_FIRE 0xA
16 18
 #define TYPE_WATER 0xB
17 19
 #define TYPE_GRASS 0xC
@@ -21,4 +23,6 @@
21 23
 #define TYPE_DRAGON 0x10
22 24
 #define TYPE_DARK 0x11
23 25
 
26
+#define TYPE_FAIRY 0x17
27
+
24 28
 #endif

+ 1
- 0
src/moves/battle_engine/cmd_setword.S Vedi File

@@ -24,6 +24,7 @@ ldrb r3, [r0, #2]
24 24
 lsl r3, #0x10
25 25
 orr r2, r3
26 26
 ldrb r3, [r0, #3]
27
+lsl r3, #0x18
27 28
 orr r2, r3
28 29
 str r2, [r1]
29 30
 add r0, #4

+ 1
- 0
string/de/hazards.txt Vedi File

@@ -0,0 +1 @@
1
+str_stealth_rock=\hFD\h13 wurde von Tarnsteinen\nverletzt!

+ 0
- 1
string/de/some_string.txt Vedi File

@@ -1 +0,0 @@
1
-first_string=Hallo Dunkelheit, du alter Freund.

+ 1
- 0
string/en/hazards.txt Vedi File

@@ -0,0 +1 @@
1
+str_stealth_rock=\hFD\h13 was hurt by\nStealth Rock

+ 0
- 1
string/en/some_string.txt Vedi File

@@ -1 +0,0 @@
1
-first_string=Hello darkness my old friend.

+ 8
- 8
string/table.tbl Vedi File

@@ -1,4 +1,4 @@
1
- =0x00
1
+ =0x00
2 2
 0=0xA1
3 3
 1=0xA2
4 4
 2=0xA3
@@ -14,7 +14,7 @@
14 14
 .=0xAD
15 15
 -=0xAE
16 16
 \.=0xAF
17
-é=0xB1
17
+Ă©=0xB1
18 18
 ,=0xB8
19 19
 \k=0xB9
20 20
 /=0xBA
@@ -70,12 +70,12 @@ w=0xEB
70 70
 x=0xEC
71 71
 y=0xED
72 72
 z=0xEE
73
-Ä=0xF1
74
-Ö=0xF2
75
-Ü=0xF3
76
-ä=0xF4
77
-ö=0xF5
78
-ü=0xF6
73
+Ă„=0xF1
74
+Ă–=0xF2
75
+Ăś=0xF3
76
+ä=0xF4
77
+ö=0xF5
78
+ĂĽ=0xF6
79 79
 \p=0xFD
80 80
 \n=0xFE
81 81
 \x=0xFF