Quote: "That must have been a pain."
It took a very long time, I had a palette full of slightly different shades for blending, but fortunately the colours are simple.
Quote: "Javascript/HTML5 and some nice engine would at least not lock you to one OS and it's pretty efficient as well"
I like that idea a lot, thanks.
Quote: "AGK with Wine"
I'd rather not use Wine.
[edit]
This is embarrassing, I found the old code I posted here years ago:
`=====================================
` H I T M A N
` ----------------
` theory & exectution
`=====================================
`Setup
Set Display Mode 1024,768,16
Hide Mouse
sync on : sync rate 60
`load loading image to screen
Load bitmap "loading image.bmp",0
sync
`load intro images
load bitmap "intro1.bmp",1
load bitmap "intro2.bmp",2
load bitmap "intro3.bmp",3
`load music
load music "Title Music.mp3",1
`show screen and delay
sync
wait 3000
`loop title music
loop music 1
`+ intro
REPEAT
`counter
inc x#,0.005 : if x# >= 3 then x# = 0
x = int(x#)
`copy images to screen
if x = 0 then copy bitmap 1,0
if x = 1 then copy bitmap 2,0
if x = 2 then copy bitmap 3,0
`refresh
sync
UNTIL returnkey() = 1
`reset variables
x = 0
x# = 0
`delete intro screens
delete bitmap 1 : delete bitmap 2 : delete bitmap 3
`---------------------
`+load sounds
`door sound
load sound "door.wav",1 : set sound speed 1,12000 : set sound volume 1,20
`switch sound
load sound "switch.wav",2 : set sound speed 2,10000 : set sound volume 2,60
`LOAD INSIDE IMAGES
CD "bodies"
load image "hitman front in.bmp",1
load image "hitman side in.bmp",2
load image "hitman walk1 in.bmp",3
load image "hitman walk2 in.bmp",4
load image "hitman back in.bmp",5
load image "hitman equip in.bmp",6
CD "../suits"
load image "hitman front in.bmp",11
load image "hitman side in.bmp",12
load image "hitman walk1 in.bmp",13
load image "hitman walk2 in.bmp",14
load image "hitman back in.bmp",15
load image "hitman equip in.bmp",16
`load object images
CD "../objects"
load image "door front closed.bmp",21
load image "door front open.bmp",22
load image "light switch.bmp",23
load image "bulb off.bmp",24
load image "bulb on.bmp",25
load image "weapon board.bmp",26
`load weapon images
CD "../weapons"
load image "Baller H In.bmp",29
load image "Baller V In.bmp",30
`LOAD DARK IMAGES
CD "../bodies"
load image "hitman front dark.bmp",201
load image "hitman side dark.bmp",202
load image "hitman walk1 dark.bmp",203
load image "hitman walk2 dark.bmp",204
load image "hitman back dark.bmp",205
load image "hitman equip dark.bmp",206
CD "../suits"
load image "hitman front dark.bmp",211
load image "hitman side dark.bmp",212
load image "hitman walk1 dark.bmp",213
load image "hitman walk2 dark.bmp",214
load image "hitman back dark.bmp",215
load image "hitman equip dark.bmp",216
`load object images
CD "../objects"
load image "door front closed dark.bmp",221
load image "door front open dark.bmp",222
load image "weapon board dark.bmp",226
`load weapon images
CD "../weapons"
load image "Baller H Dark.bmp",229
load image "Baller V Dark.bmp",230
`load page
CD ".."
load bitmap "getting started ca.bmp",0
`starting X position
No47x = 480
`+ Variables
`objectives
obj1 =0
obj2 =0
obj3 =0
`weapons (1=garrote wire,2=knife,3=baller,4=two ballers,5=shotgun,6=SMG,7=M4,8=sniper rifle)
weapon =0
silencer =0
equip =0
`room object status
door_state =0
light_state =0
baller_board =1
`background (0=inside 1=outside)
bg =0
`make bitmap for 47's image
create bitmap 1,47,94 : set current bitmap 0
`* Game Loop
DO
`+ Objectives
if light_state =1 then obj1 =1
if weapon =3 then obj2 =1
if door_state =1 then obj3 =1
`Objective status strings
if obj1 =0 then obj1$ ="NOT COMPLETED" else obj1$ ="DONE"
if obj2 =0 then obj2$ ="NOT COMPLETED" else obj2$ ="DONE"
if obj3 =0 then obj3$ ="NOT COMPLETED" else obj3$ ="DONE"
`Print objectives
` text 20,600, "OBJECTIVES"
` text 20,620, "1. Flick the light-switch: " + obj1$
` text 20,635, "2. Pick up baller: " + obj2$
` text 20,650, "3. Go through the door: " +obj3$
`:- Movement -:
`movement variables
r=0 : l=0
`controls
if rightkey()=1 then r=1
if leftkey()=1 then l=1
`accumulate movement animation
if r=1 or l=1
inc anim
if anim > 3 then anim = 2
hold = 6 : hold_anim = 1
else
`hold
if hold > 0 then anim = hold_anim : dec hold else anim = 0
endif
`stop double direction movement
if r=1 and l=1 then anim = 0
`anim position
if r=1
No47x = No47x + 20
if sprite mirrored(47)=1 then mirror sprite 47
endif
if l=1
No47x = No47x - 20
if sprite mirrored(47)=0 then mirror sprite 47
endif
`adjust position to boundaries
if No47x < 80 then No47x = 80 : anim = 0
if No47x > 944 then No47x = 944 : anim = 0
`:-Actions-:
`activate trip switch
If keystate(30)=1 and action_trip=0 then action_switch=1
`reset the action_trip on release
if keystate(30)=0 then action_trip=0
`carry out action
if action_switch=1
if No47coll > 0
`play action sound
if sound exist(No47coll) then play sound No47coll
`hold duration
hold = 2
`activate action_trip
action_trip=1
`deactivate switch
action_switch=0
`stop movement
l=0 : r=0
`Door
if No47coll = 1
`change door state to open
door_state = (-1*door_state)+1
`47 action image
anim =4
`hold image
hold_anim = 1
`hold duration
hold =1
`position 47 in front of door
No47x = 618
endif
`Switch
if No47coll = 2
`change switch state
light_state = (-1*light_state)+1
`47 action image
anim =4
`hold image
hold_anim =1
`position 47 in front of switch
No47x = sprite x(2)
endif
`Pick Up Baller
if No47coll = 4
if baller_board =1
`change board state
baller_board = 0
`add baller to inventory
weapon = 3
`47 action image
anim =5
`hold image
hold_anim = 5
else
`dont play animation if board is empty
anim = 0 : hold = 0
endif
endif
else
`if 47 has no object to interacted with reset switch
if No47coll = 0 then action_switch =0 : action_trip =0
endif
endif
`:- Equip/Holster Weapon -:
`activate equip_trip switch
If keystate(18)=1 and equip_trip=0 then equip_switch=1
`reset the equip_trip on release
if keystate(18)=0 then equip_trip=0
if equip_switch = 1 and weapon > 0
`activate trip
equip_trip = 1
equip_switch = 0
`equip/holster weapon
equip = (-1*equip)+1
`47 action image
anim =5
`hold image
hold_anim =5
`hold duration
hold =1
endif
`**Display
`background
if light_state = 0
ink 0,0
else
ink rgb(128,0,0),0
endif
box 40,262,984,460
`:-Sprites-:
`+ bg dependent sprites
if light_state =0
`darkness
back =200
else
`inside
if bg =0
back =0
endif
`outside
if bg =1
back =100
endif
endif
`+ make new 47 images
`draw to 47's bitmap
set current bitmap 1
for img = 1 to 6
`front, side, walk1, walk3, back, equip images.
cls 0
`suit
paste image img+back+10,0,0,1
`weapon
if equip = 1
select img
case 1 : paste image 30+back,0,48,1 : endcase
case 2 : paste image 30+back,8,46,1 : endcase
case 3 : paste image 30+back,0,49,1 : endcase
case 4 : paste image 30+back,8,49,1 : endcase
endselect
endif
`body
paste image img+back,0,0,1
select img
case 1 : get image 399+img,0,0,31,93 : endcase
case 2 : get image 399+img,0,0,15,93 : endcase
case 3 : get image 399+img,0,0,24,93 : endcase
case 4 : get image 399+img,0,0,46,93 : endcase
case 5 : get image 399+img,0,0,31,93 : endcase
case 6 : get image 399+img,0,0,36,93 : endcase
endselect
next img
`go back to screen
set current bitmap 0
`Door
sprite 1, 600, 330, 21+back+door_state
`light Switch
sprite 2, 560, 370, 23
if light_state <> sprite flipped(2) then flip sprite 2
`Light Bulb
sprite 3, 520, 280, 24+light_state
`Weapon Board
sprite 4, 200, 350, 26+back
`Baller on board
if baller_board = 1 then sprite 5, 200+24, 350+6,29+back else if sprite exist(5) then delete sprite 5
sync
`47 (his bg has already been set)
Sprite 47, No47x, 355, 400+anim
offset sprite 47,sprite width(47)/2,0
`//DISPLAY
`:-Collision Markers-:
`no collisions
if sprite collision(47,0) = 0
No47coll = 0
else
No47coll = sprite collision(47,0)
endif
`delay for staggered animation
wait 100
sync
LOOP
Feel free to link to this if I ever make fun of noobs.

Formerly OBese87.