From: Toni Wilen Date: Sun, 6 Nov 2016 14:57:27 +0000 (+0200) Subject: sprite to bitplane collision optimization. X-Git-Tag: 3400~40 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=9ef0912b633b3a1a917750b87a86bd52db59f388;p=francis%2Fwinuae.git sprite to bitplane collision optimization. --- diff --git a/custom.cpp b/custom.cpp index 0d16b6cf..d3061f23 100644 --- a/custom.cpp +++ b/custom.cpp @@ -3159,6 +3159,7 @@ static void do_playfield_collisions (void) clxdat |= 1; return; } + // collision bit already set? if (clxdat & 1) return; @@ -3220,6 +3221,9 @@ static void do_sprite_collisions (void) if (clxcon_bpl_enable == 0 && !nr_sprites) return; + // all sprite to bitplane collision bits already set? + if ((clxdat & 0x1fe) == 0x1fe) + return; for (i = 0; i < nr_sprites; i++) { struct sprite_entry *e = curr_sprite_entries + first + i; @@ -3249,6 +3253,10 @@ static void do_sprite_collisions (void) sprpix = sprite_ab_merge[sprpix & 255] | (sprite_ab_merge[sprpix >> 8] << 2); sprpix <<= 1; + // both odd and even collision bits already set? + if ((clxdat & (sprpix << 0)) && (clxdat & (sprpix << 4))) + continue; + /* Loop over number of playfields. */ for (k = 1; k >= 0; k--) { int l; @@ -9936,6 +9944,11 @@ void check_prefs_changed_custom (void) currprefs.immediate_blits = changed_prefs.immediate_blits; currprefs.waiting_blits = changed_prefs.waiting_blits; currprefs.collision_level = changed_prefs.collision_level; + if (!currprefs.keyboard_connected && changed_prefs.keyboard_connected) { + // send powerup sync + keyboard_connected(); + } + currprefs.keyboard_connected = changed_prefs.keyboard_connected; currprefs.cs_ciaatod = changed_prefs.cs_ciaatod; currprefs.cs_rtc = changed_prefs.cs_rtc;