Je crois aussi que tu n'as pas besoin du "or a" dans tile_decompress si tu ne l'utilise pas que pour le tilemapper parce que le djnz de addhlde_a remettra toujours le drapeau carry à 0.
Et si tu ne veux pas utiliser les registres cachés (ce n'est pas un app, non ?), tu pourrais utiliser du SMC:
SMC sans SMC
____ ______
dec c dec c
map_x = $+1
ld a,0 ld a,(map_x)
add a,b add a,b
ld h,0 ld h,0
ld l,a ld l,a
map_y = $+1
ld a,0 ld a,(map_y)
push bc push bc
add a,c add a,c
push af
ld a,(map_w)
ld d,h ld d,0
map_w = $+1
ld e,0 ld e,a
pop af
14 octets, 55 clocks 21 octets, 105 clocks