#---------------------------------------- # patches for Interpreter Version 4.0.62 #---------------------------------------- %exefile monkey.exe 116209 #avoid the divide error (this may cause timing issues with AdLib music): %patch $125F7 $B1 $03 # mov cl, 3 $D3 $E8 # shr ax, cl $90 $90 # nop nop #avoid timing issues with the AdLib music: %patch $12DAE $50 # push ax $86 $E0 # xchg al, ah $BA $0388w # mov dx, 388h $EE # out dx, al $B9 6w # mov cx, 6 $EC #l1: in dx, al $E2 $FD # loop l1 $86 $E0 # xchg al, ah $42 # inc dx $EE # out dx, al $4A # dec dx $B9 35w # mov cx, 35 $EC #l2: in al, dx $E2 $FD # loop l2 $58 # pop ax $90 # nop #fix timing issues in AdLib detection code: %patch $132CA #cs:3D0A $53 # push bx $51 # push cx $B8 $0100w # mov ax, 100h $E8 $FAD1w # call AL_Out (at cs:37E3) $B8 $0460w # mov ax, 460h $E8 $FACBw # call AL_Out $B8 $0480w # mov ax, 480h $E8 $FAC5w # call AL_Out $BA $0388w # mov dx, 388h $EC # in al, dx $88 $C3 # mov bl, al $B8 $02FFw # mov ax, 2FFh $E8 $FAB9w # call AL_Out $B8 $0421w # mov ax, 421h $E8 $FAB3w # call AL_Out $B9 100w # mov cx, 100 $EC #l1: in al, dx $E2 $FD # loop l1 $88 $C7 # mov bh, al $B8 $0460w # mov ax, 460h $E8 $FAA5w # call AL_Out $B8 $0480w # mov ax, 480h $E8 $FA9Fw # call AL_Out $33 $C0 # xor ax, ax $F6 $C3 $E0 # test bl, 0E0h $75 $0A # jnz nope $80 $E7 $E0 # and bh, 0E0h $80 $FF $C0 # cmp bh, 0C0h $75 $02 # jne nope $B0 $01 # mov al, 1 $59 #nope: pop cx $5B # pop bx $1F # pop ds $CB # retf #disable GameBlaster detection: %patch $120BF $33 $C0 # xor ax, ax $CB # retf #---------------------------------------- # patches for Interpreter Version 4.0.64 #---------------------------------------- %exefile monkey.exe 115357 #avoid the divide error (this may cause timing issues with AdLib music): %patch $12487 $B1 $03 # mov cl, 3 $D3 $E8 # shr ax, cl $90 $90 # nop nop #avoid timing issues with the AdLib music: %patch $12C3E $50 # push ax $86 $E0 # xchg al, ah $BA $0388w # mov dx, 388h $EE # out dx, al $B9 6w # mov cx, 6 $EC #l1: in dx, al $E2 $FD # loop l1 $86 $E0 # xchg al, ah $42 # inc dx $EE # out dx, al $4A # dec dx $B9 35w # mov cx, 35 $EC #l2: in al, dx $E2 $FD # loop l2 $58 # pop ax $90 # nop #fix timing issues in AdLib detection code: %patch $1315A #cs:3B5A $53 # push bx $51 # push cx $B8 $0100w # mov ax, 100h $E8 $FAD1w # call AL_Out (at cs:3633) $B8 $0460w # mov ax, 460h $E8 $FACBw # call AL_Out $B8 $0480w # mov ax, 480h $E8 $FAC5w # call AL_Out $BA $0388w # mov dx, 388h $EC # in al, dx $88 $C3 # mov bl, al $B8 $02FFw # mov ax, 2FFh $E8 $FAB9w # call AL_Out $B8 $0421w # mov ax, 421h $E8 $FAB3w # call AL_Out $B9 100w # mov cx, 100 $EC #l1: in al, dx $E2 $FD # loop l1 $88 $C7 # mov bh, al $B8 $0460w # mov ax, 460h $E8 $FAA5w # call AL_Out $B8 $0480w # mov ax, 480h $E8 $FA9Fw # call AL_Out $33 $C0 # xor ax, ax $F6 $C3 $E0 # test bl, 0E0h $75 $0A # jnz nope $80 $E7 $E0 # and bh, 0E0h $80 $FF $C0 # cmp bh, 0C0h $75 $02 # jne nope $B0 $01 # mov al, 1 $59 #nope: pop cx $5B # pop bx $1F # pop ds $CB # retf #disable GameBlaster detection: %patch $11F54 $33 $C0 # xor ax, ax $CB # retf %end