-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcalculation.sv
More file actions
73 lines (70 loc) · 5.33 KB
/
calculation.sv
File metadata and controls
73 lines (70 loc) · 5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
module calculation(input logic [11:0][7:0] player_mon,
input logic [11:0][7:0] enemy_mon,
input logic [4:0][7:0] player_move,
input logic [4:0][7:0] enemy_move,
input logic is_player,
output logic [7:0] damage
// output logic [7:0] EXPORT
);
parameter [0:18][0:18][3:0] type_chart = '{
'{4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd4, 4'd0, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4},
'{4'd8, 4'd4, 4'd2, 4'd2, 4'd4, 4'd8, 4'd2, 4'd0, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd8, 4'd4, 4'd4, 4'd2, 4'd4},
'{4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd2, 4'd8, 4'd4, 4'd2, 4'd4, 4'd4, 4'd8, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd4, 4'd2, 4'd2, 4'd2, 4'd4, 4'd2, 4'd0, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4},
'{4'd4, 4'd4, 4'd0, 4'd8, 4'd4, 4'd8, 4'd2, 4'd4, 4'd8, 4'd8, 4'd4, 4'd2, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd2, 4'd8, 4'd4, 4'd2, 4'd4, 4'd8, 4'd4, 4'd2, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd2, 4'd2, 4'd2, 4'd4, 4'd4, 4'd4, 4'd2, 4'd2, 4'd2, 4'd4, 4'd8, 4'd4, 4'd8, 4'd4, 4'd4, 4'd8, 4'd2, 4'd4},
'{4'd0, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd2, 4'd2, 4'd2, 4'd4, 4'd2, 4'd4, 4'd8, 4'd4, 4'd4, 4'd8, 4'd4},
'{4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd8, 4'd4, 4'd8, 4'd2, 4'd2, 4'd8, 4'd4, 4'd4, 4'd8, 4'd2, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd8, 4'd4, 4'd4, 4'd4, 4'd8, 4'd2, 4'd2, 4'd4, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd2, 4'd2, 4'd8, 4'd8, 4'd2, 4'd4, 4'd2, 4'd2, 4'd8, 4'd2, 4'd4, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd8, 4'd4, 4'd0, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd2, 4'd2, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd8, 4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4, 4'd0, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd8, 4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd2, 4'd2, 4'd2, 4'd8, 4'd4, 4'd4, 4'd2, 4'd8, 4'd4, 4'd4, 4'd4},
'{4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd0, 4'd4},
'{4'd4, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd4, 4'd4, 4'd2, 4'd2, 4'd4},
'{4'd4, 4'd8, 4'd4, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd2, 4'd2, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd8, 4'd8, 4'd4},
'{4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4, 4'd4}
};
always_comb
begin
if(is_player)
begin
if(player_move[4] == player_mon[11] || player_move[4] == player_mon[10])
begin
if(enemy_move[3])
damage = ((((22 * player_move[2] * player_mon[8]) / (enemy_mon[7] * 50)) + 2) * type_chart[player_move[4]][enemy_mon[11]] * type_chart[player_move[4]][enemy_mon[10]] * 3) / (32);
else
damage = ((((22 * player_move[2] * player_mon[6]) / (enemy_mon[5] * 50)) + 2) * type_chart[player_move[4]][enemy_mon[11]] * type_chart[player_move[4]][enemy_mon[10]] * 3) / (32);
end
else
begin
if(enemy_move[3])
damage = ((((22 * player_move[2] * player_mon[8]) / (enemy_mon[7] * 50)) + 2) * type_chart[player_move[4]][enemy_mon[11]] * type_chart[player_move[4]][enemy_mon[10]]) / (16);
else
damage = ((((22 * player_move[2] * player_mon[6]) / (enemy_mon[5] * 50)) + 2) * type_chart[player_move[4]][enemy_mon[11]] * type_chart[player_move[4]][enemy_mon[10]]) / (16);
end
end
else
begin
if(enemy_move[4] == enemy_mon[11] || enemy_move[4] == enemy_mon[10])
begin
if(enemy_move[3])
damage = ((((22 * enemy_move[2] * enemy_mon[8]) / (player_mon[7] * 50)) + 2) * type_chart[enemy_move[4]][player_mon[11]] * type_chart[enemy_move[4]][player_mon[10]] * 3) / (32);
else
damage = ((((22 * enemy_move[2] * enemy_mon[6]) / (player_mon[5] * 50)) + 2) * type_chart[enemy_move[4]][player_mon[11]] * type_chart[enemy_move[4]][player_mon[10]] * 3) / (32);
end
else
begin
if(enemy_move[3])
damage = ((((22 * enemy_move[2] * enemy_mon[8]) / (player_mon[7] * 50)) + 2) * type_chart[enemy_move[4]][player_mon[11]] * type_chart[enemy_move[4]][player_mon[10]]) / (16);
else
damage = ((((22 * enemy_move[2] * enemy_mon[6]) / (player_mon[5] * 50)) + 2) * type_chart[enemy_move[4]][player_mon[11]] * type_chart[enemy_move[4]][player_mon[10]]) / (16);
end
end
// EXPORT = damage;
// EXPORT = (type_chart[player_move[4]][enemy_mon[11]] / 4) * (type_chart[player_move[4]][enemy_mon[10]] / 4);
// EXPORT = player_mon[0];
end
endmodule