Думал проблема в выходе за границы памяти.
Код
set %a [1] LoadImage(sprite.bmp) // загрузить картинку
set #adres %a [1 1] + 3 // адрес второго пикселя
init_arr %b (1) #adres 3 4 12 // адрес, ширина, высота, длина строки
set $k SaveImage(%b[1 1] lol.bmp)
Просто пересохранит загруженную картинку под другим именем. Как это понимать хз. Возможно, загруженные области как то контролируются пилотом, отсюда и -5 и сохранение файла. Адрес %b может быть любым числом, SaveImage запишет все равно %a. Похоже, что адресами нельзя играть, только данными.