Skip to content

Commit 83419c5

Browse files
committed
Improve reliability of the Tera Roller.
1 parent 8a3494a commit 83419c5

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

SerialPrograms/Source/PokemonSV/Inference/Overworld/PokemonSV_LetsGoKillDetector.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,16 @@ bool is_kill_icon(
3737
WaterfillObject& object,
3838
const WaterfillObject& red, const WaterfillObject& white
3939
){
40+
// cout << "is_kill_icon" << endl;
4041
// cout << red.min_x << "-" << red.max_x << ", " << white.min_y << "-" << white.max_y << endl;
4142

42-
// cout << "is_kill_icon" << endl;
43+
#if 0
44+
static int c = 0;
45+
object = red;
46+
object.merge_assume_no_overlap(white);
47+
extract_box_reference(image, object).save("test-" + std::to_string(c++) + ".png");
48+
#endif
49+
4350
if (red.max_y >= white.min_y){
4451
// cout << "bad y" << endl;
4552
return false;
@@ -56,8 +63,6 @@ bool is_kill_icon(
5663
object = red;
5764
object.merge_assume_no_overlap(white);
5865

59-
// extract_box_reference(image, object).save("test.png");
60-
6166
if (object.width() < 18 || object.height() < 18){
6267
// cout << "too small: " << object.width() << endl;
6368
return false;
@@ -91,6 +96,8 @@ void LetsGoKillDetector::make_overlays(VideoOverlaySet& items) const{
9196
bool LetsGoKillDetector::detect(const ImageViewRGB32& screen){
9297
using namespace Kernels::Waterfill;
9398

99+
size_t size_threshold = (size_t)(10. * screen.total_pixels() / 2073600);
100+
94101
ImageViewRGB32 region = extract_box_reference(screen, m_box);
95102
std::vector<WaterfillObject> reds;
96103
std::vector<WaterfillObject> whites;
@@ -99,14 +106,24 @@ bool LetsGoKillDetector::detect(const ImageViewRGB32& screen){
99106
std::vector<PackedBinaryMatrix> matrices = compress_rgb32_to_binary_range(
100107
region,
101108
{
109+
{0xff801e1e, 0xffff5f5f},
110+
{0xff901e1e, 0xffff5f5f},
111+
{0xffa01e1e, 0xffff5f5f},
112+
{0xffb01e1e, 0xffff5f5f},
113+
{0xffc01e1e, 0xffff5f5f},
114+
{0xffd01e1e, 0xffff5f5f},
102115
{0xff801e1e, 0xffff7f7f},
103-
{0xffb31e1e, 0xffff7f7f},
116+
{0xff901e1e, 0xffff7f7f},
117+
{0xffa01e1e, 0xffff7f7f},
118+
{0xffb01e1e, 0xffff7f7f},
119+
{0xffc01e1e, 0xffff7f7f},
120+
{0xffd01e1e, 0xffff7f7f},
104121
}
105122
);
106123
// size_t c = 0;
107124
for (PackedBinaryMatrix& matrix : matrices){
108125
session->set_source(matrix);
109-
auto iter = session->make_iterator(10);
126+
auto iter = session->make_iterator(size_threshold);
110127
WaterfillObject object;
111128
while (iter->find_next(object, false)){
112129
double aspect_ratio = object.aspect_ratio();
@@ -123,13 +140,16 @@ bool LetsGoKillDetector::detect(const ImageViewRGB32& screen){
123140
std::vector<PackedBinaryMatrix> matrices = compress_rgb32_to_binary_range(
124141
region,
125142
{
143+
{0xffb0b0b0, 0xffffffff},
126144
{0xffc0c0c0, 0xffffffff},
145+
{0xffd0d0d0, 0xffffffff},
146+
{0xffe0e0e0, 0xffffffff},
127147
}
128148
);
129149
// size_t c = 0;
130150
for (PackedBinaryMatrix& matrix : matrices){
131151
session->set_source(matrix);
132-
auto iter = session->make_iterator(10);
152+
auto iter = session->make_iterator(size_threshold);
133153
WaterfillObject object;
134154
while (iter->find_next(object, false)){
135155
double aspect_ratio = object.aspect_ratio();

0 commit comments

Comments
 (0)