Okay, all done! It might not be perfect but it works for me
function scale_image(available_memblock_1,available_memblock_2,source_image,new_destination_image,destination_image_scale_x,desination_image_scale_y)
source_image_width = GetImageWidth(source_image)
source_image_heigth = GetImageHeight(source_image)
DeleteMemblock(available_memblock_1)
DeleteMemblock(available_memblock_2)
CreateMemblockFromImage(available_memblock_1,source_image)
if source_image = new_destination_image
if GetImageExists(source_image) then DeleteImage(source_image)
endif
if GetImageExists(new_destination_image) then DeleteImage(new_destination_image)
CreateRenderImage(new_destination_image,source_image_width * destination_image_scale_x,source_image_heigth * desination_image_scale_y,0,0)
CreateMemblockFromImage(available_memblock_2,new_destination_image)
source_image_memblock_position = 12
destination_image_memblock_position = 12
for y = 1 to source_image_heigth
remember_line_start = source_image_memblock_position
for repeat_line = 1 to desination_image_scale_y
source_image_memblock_position = remember_line_start
for x = 1 to source_image_width
byte_1 = GetMemblockByte(available_memblock_1,source_image_memblock_position)
inc source_image_memblock_position
byte_2 = GetMemblockByte(available_memblock_1,source_image_memblock_position)
inc source_image_memblock_position
byte_3 = GetMemblockByte(available_memblock_1,source_image_memblock_position)
inc source_image_memblock_position
byte_4 = GetMemblockByte(available_memblock_1,source_image_memblock_position)
inc source_image_memblock_position
for draw_to_destination_memblock_x = 1 to destination_image_scale_x
SetMemblockByte(available_memblock_2,destination_image_memblock_position,byte_1)
inc destination_image_memblock_position
SetMemblockByte(available_memblock_2,destination_image_memblock_position,byte_2)
inc destination_image_memblock_position
SetMemblockByte(available_memblock_2,destination_image_memblock_position,byte_3)
inc destination_image_memblock_position
SetMemblockByte(available_memblock_2,destination_image_memblock_position,byte_4)
inc destination_image_memblock_position
next draw_to_destination_memblock_x
next x
next repeat_line
next y
CreateImageFromMemblock(new_destination_image,available_memblock_2)
endfunction
The byte chrunchers are coming...
DIVIDING BY ZERO/BECAUSE WE SUCK...