There is one option for that... you could just add a second player sprite that totally copies from the real sprite, but have it at 50% alpha, and a depth that means it is drawn on top of everything. Then when the player goes behind scenery you'd still see the player, but a 50% translucent version. It might also be possible to have the ghost sprite coloured, but I haven't tried sprite blending. Say for example you set the normal player sprite to RGB((0,255,255) and the ghost sprite to RGB(255,0,0) - so long as these can be set to an additive blend, you'd have a red ghost on just the pixels that are obscured by the other sprites.
You could make a shader and pass the position of the player to it, so it can do a distance check and fade the pixels when they are close to the player, but that might cost a lot in terms of performance, as each pixel on each sprite would need a square root calculation. The twin sprite method would only mean 1 extra sprite and no shaders, and also would negate the per sprite distance check for the current alpha fade.
Also worth mentioning that a text object might be a decent solution for a tile based map. Text objects render faster than the equivalent sprites, because they all use the same image and the whole text object can be drawn in a single call. You could make a tile map on a fixed grid size, and assign each tile an ascii value then build a text object for your map - effectively a tile set image becomes a font image. I do have a demo of this, shows a lot of layers of text object maps in parallax. One issue with that is you'd be limited by the number of tiles you could have... maybe 100 tiles per text object, to keep within ascii limits - but you could layer them... like one layer for dirt and grass, then another for rocks and small details, another for shadows etc... maybe even allowing optional layers, like snow, or leaves - thinking about a game like Stardew Valley or Don't Starve, where the map changes each season. Heck, you could even have a snow layer gradually increase in opacity. It kinda boils a whole load of sprite commands down to 1 single text command, rather than changing a grid of X by Y sprites, you'd just change a single text object instead.
The code is dark and full of errors