(Writing up a bug for this to track work on it and centralize discussion.)
Short video demonstrating the problem:
Steps to reproduce:
Enable "Camera tilt" in the View menu.
Move the cursor to near the top right corner of the screen.
Observe: the in-world cursor (four white corners indicating a grid square) location doesn't match the user's mouse cursor location. This divergence increases the further the mouse is from the center of the screen.
Another repro, in game mode:
Launch playscii and open one of the example games, eg cronotest.
Select one of the objects and drag it.
Observe: the dragged object's location moves at a different rate than the user's mouse cursor.
Most of the relevant code is here: https://bitbucket.org/JPLeBreton/playscii/src/default/vector.py?fileviewer=file-view-default#vector.py-44
As a convenience while I'm debugging this issue, vector.screen_to_world calls a specific implementation so I can switch back to the current (0.7.3) mostly-working screen_to_world_OLD while investigating alternatives. vector.screen_to_world_NEW is the newer implementation, which produces results that are too broken to easily debug, despite being based on working examples from other codebases.
Other code that might be of interest here is in the functions used to create the view and perspective matrices: