Because clearly tiles are better ?
why is 4.2.2 so slow
Collapse
X
-
The latest nightly builds, https://github.com/angband/angband/releases , include changes that avoid using Term_mark() for handling double-height tiles. The Windows, SDL, SDL2, and Mac front ends all make use of that. Feedback about whether that makes the performance with the Shockbolt tiles good enough or if more still needs to be done would be helpful, as would reports about any rendering artifacts.
Thank you!
Edit: if topbar is enabled double height tiles aren't cleared in row 3. Perhaps you could use ROW_MAP or something.
Last edited by Cuboideb; April 27, 2021, 00:20.Comment
-
The front ends currently have a test of row > 2 when drawing the upper halves of double-height tiles, looks like that'll have to be generalized to handle if the topper is enabled.Comment
-
@backwardsEric - In screen_load, there is a call to Term_Redraw if tile_size > 1. I think this causes a flickering with spell casting keymaps (ie: maa').
I'm doing some playtesting after adding a check for !inkey_next to ignore keymaps. This is the proper way to handle this problem?Comment
-
I'm not sure if your question is referring to how to ignore keymaps or to the flickering. For the former, I'll have to plead ignorance. For the latter, my guess, based on what I said above, is that the clearing still would be necessary in general. Would have to change ui-term.c to do some sort of checking for changes in the padded areas to be able to drop the clearing done in screen_load().Comment
-
According to the history of ui-output.c, Nick added that clearing more than eleven years ago. He may remember the reason. I suspect it's there to redraw any tile whose upper left corner wasn't affected by whatever the screen_load() is trying to undo but whose padded area was damaged. Such a tile wouldn't be redrawn by the current logic in ui-term.c if I'm understanding it correctly.One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.Comment
-
Sorry, I was unclear. That line must be kept there. Otherwise, some dialogs aren't properly disposed (ie: the one triggered by the return key)
I'm playtesting this (added a check for inkey_next):
Code:/* Redraw big graphics */ if (screen_save_depth == 0 && !inkey_next && (tile_width > 1 || tile_height > 1)) Term_redraw();
I must say I'm not completely sure about that change. I want to try with different keymaps to check proper behavior.Comment
-
There's a pull request up on Angband's GitHub page to add extra checks for changes in the padded areas of big tiles and trigger a redraw of the tile when changes are found. With that, the extra clear in screen_load() no longer appears to be necessary. The pull request removes it.Comment
Comment