diff --git a/src/CRE/Glitter/curve.cpp b/src/CRE/Glitter/curve.cpp index a09f669b..772af5a7 100644 --- a/src/CRE/Glitter/curve.cpp +++ b/src/CRE/Glitter/curve.cpp @@ -479,7 +479,7 @@ namespace Glitter { size_t length = keys_count; size_t temp; while (length > 0) - if (frame < key[temp = length / 2].frame) + if (key[temp = length / 2].frame > frame) length = temp; else { key += temp + 1; diff --git a/src/CRE/auth_3d.cpp b/src/CRE/auth_3d.cpp index ec126628..90b2400a 100644 --- a/src/CRE/auth_3d.cpp +++ b/src/CRE/auth_3d.cpp @@ -3091,7 +3091,7 @@ static kft3* auth_3d_key_find_keyframe(auth_3d_key* data, float_t frame) { size_t length = data->length; size_t temp; while (length > 0) - if (frame < key[temp = length / 2].frame) + if (key[temp = length / 2].frame > frame) length = temp; else { key += temp + 1; diff --git a/src/CRE/rob/rob.cpp b/src/CRE/rob/rob.cpp index b60cf06c..023980f4 100644 --- a/src/CRE/rob/rob.cpp +++ b/src/CRE/rob/rob.cpp @@ -4726,7 +4726,7 @@ static void mot_key_frame_interpolate(mot* a1, float_t frame, float_t* value, size_t length = keys_count; size_t temp; while (length > 0) - if (frame_int < key[temp = length / 2]) + if (key[temp = length / 2] > frame_int) length /= 2; else { key += temp + 1; diff --git a/src/KKdLib/database/texture.cpp b/src/KKdLib/database/texture.cpp index 0382f485..0a054969 100644 --- a/src/KKdLib/database/texture.cpp +++ b/src/KKdLib/database/texture.cpp @@ -238,7 +238,7 @@ void texture_database::add(texture_database_file* tex_db_file) { size_t length = src_size; size_t temp; while (length > 0) - if (id <= info[temp = length / 2].id) + if (info[temp = length / 2].id >= id) length /= 2; else { info += temp + 1; diff --git a/src/ReDIVA/x_pv_game.cpp b/src/ReDIVA/x_pv_game.cpp index b8fd6d6f..ef6f61ca 100644 --- a/src/ReDIVA/x_pv_game.cpp +++ b/src/ReDIVA/x_pv_game.cpp @@ -1140,7 +1140,7 @@ void x_pv_game_effect::set_song_effect_time_inner(int32_t index, int64_t time, b size_t length = change_fields->size(); size_t temp; while (length > 0) - if (time < key[temp = length / 2]) + if (key[temp = length / 2] > time) length = temp; else { key += temp + 1; @@ -1501,7 +1501,7 @@ void x_pv_game_chara_effect::set_chara_effect(int32_t chara_id, int32_t index, i size_t length = change_fields->size(); size_t temp; while (length > 0) - if (time < key[temp = length / 2]) + if (key[temp = length / 2] > time) length = temp; else { key += temp + 1; @@ -1663,7 +1663,7 @@ void x_pv_game_dsc_data::find_change_fields(std::vector& change_fields) break; } - change_fields.push_back(time); + change_fields.push_back((int64_t)time * 10000); prev_time = time; i++; } @@ -6660,7 +6660,7 @@ static bool x_pv_game_dsc_process(x_pv_game* a1, int64_t curr_time) { int32_t index = (int32_t)data[1]; int32_t unk2 = (int32_t)data[2]; - if (unk2 && !(a1->pv_data->field_1C & 0x10)) + if (unk2 && !(pv_data.field_1C & 0x10)) break; if (enable) {