MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / vsync_check_vsyncmode

Function vsync_check_vsyncmode

src/custom.cpp:4976–5092  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4974}
4975
4976static void vsync_check_vsyncmode(void)
4977{
4978 if (linear_vpos_prev[2] == linear_vpos_prev[0] || linear_vpos_prev[1] == linear_vpos_prev[0]) {
4979 if (linear_hpos_prev[2] == linear_hpos_prev[0] || linear_hpos_prev[1] == linear_hpos_prev[0]) {
4980 if (linear_hpos_prev[2] == linear_hpos_prev[0] || linear_hpos_prev[1] == linear_hpos_prev[0]) {
4981 if (linear_hpos_prev[2] == linear_hpos_prev[0] || linear_hpos_prev[1] == linear_hpos_prev[0]) {
4982 int hp = linear_hpos_prev[0] > linear_hpos_prev[2] ? linear_hpos_prev[0] : linear_hpos_prev[2];
4983 int vp = linear_vpos_prev[0] > linear_vpos_prev[2] ? linear_vpos_prev[0] : linear_vpos_prev[2];
4984 int ydiff = (prevlofs[0] != prevlofs[1] && prevlofs[0] == prevlofs[2]) ? 2 : 1;
4985 if (abs(hp - current_linear_hpos_temp) >= 2 || abs(vp - current_linear_vpos_temp) >= ydiff) {
4986 current_linear_hpos_temp = hp;
4987 if (linear_hpos_prev[0] == linear_hpos_prev[2] && abs(linear_hpos_prev[1] - linear_hpos_prev[0]) == 1) {
4988 // LOL=1: select shorter line
4989 current_linear_hpos_temp = linear_hpos_prev[0] > linear_hpos_prev[1] ? linear_hpos_prev[1] : linear_hpos_prev[0];
4990 }
4991 current_linear_vpos_temp = vp;
4992 current_linear_temp_change = 2;
4993 }
4994 }
4995 }
4996 }
4997 }
4998 if (!current_linear_temp_change && !agnus_afterreset) {
4999 if (abs(current_linear_vblank_lines - linear_vpos_vblank_lines) >= 2 ||
5000 abs(current_linear_vpos_vb_end - linear_vpos_vblank_end) >= 2 ||
5001 abs(current_linear_vpos_vb_start - linear_vpos_vblank_start) >= 2 ||
5002 abs(current_linear_vpos_vb_vsync - linear_vpos_vblank_vsync) >= 2 ||
5003 abs(current_linear_hpos - current_linear_hpos_temp) >= 1 ||
5004 abs(current_linear_vpos - current_linear_vpos_temp) >= 2)
5005 {
5006 current_linear_temp_change = 2;
5007 }
5008 }
5009
5010 if (!current_linear_temp_change && denise_get_hbstate(false) && currprefs.cs_hvcsync < HVSYNC_SYNCPOS) {
5011 current_linear_temp_change = 2;
5012 }
5013
5014 bool framesync = false;
5015 if (current_linear_temp_change > 0) {
5016 current_linear_temp_change--;
5017 if (current_linear_temp_change == 0) {
5018 bool changed = false;
5019 // Horizontal check immediately
5020 if (current_linear_hpos != current_linear_hpos_temp) {
5021 changed = true;
5022 }
5023 // vertical values: ignore single field glitches
5024 if (current_linear_vpos != current_linear_vpos_temp ||
5025 current_linear_vblank_lines != linear_vpos_vblank_lines ||
5026 current_linear_vpos_vb_end != linear_vpos_vblank_end ||
5027 current_linear_vpos_vb_start != linear_vpos_vblank_start ||
5028 current_linear_vpos_vb_vsync != linear_vpos_vblank_vsync) {
5029 if (linear_vpos_values_changed) {
5030 changed = true;
5031 } else {
5032 linear_vpos_values_changed++;
5033 }

Callers 1

virtual_vsync_checkFunction · 0.85

Calls 5

denise_get_hbstateFunction · 0.85
init_beamcon0Function · 0.85
compute_framesyncFunction · 0.85
devices_syncchangeFunction · 0.85
dumpsyncFunction · 0.85

Tested by

no test coverage detected