diff --git a/Asuro.iso b/Asuro.iso index 5ad4230f..2f3c5481 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 88c25ebd..257f5086 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 88c25ebd..257f5086 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index 9fdc39c7..d1f4a317 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 4fdd36be..a891be3c 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index a4ae614a..2ba63969 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 5fa692bf..a1c95fc0 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/mouse.ppu b/lib/mouse.ppu index 4b2cd1eb..cd09a392 100644 Binary files a/lib/mouse.ppu and b/lib/mouse.ppu differ diff --git a/src/driver/hid/mouse.pas b/src/driver/hid/mouse.pas index b07e095d..14d3a396 100644 --- a/src/driver/hid/mouse.pas +++ b/src/driver/hid/mouse.pas @@ -23,8 +23,8 @@ uses type PMousePacket = ^TMousePacket; TMousePacket = record - x_movement : byte; - y_movement : byte; + x_movement : sint32; + y_movement : sint32; y_overflow : boolean; x_overflow : boolean; y_sign : boolean; @@ -141,18 +141,20 @@ begin if Cycle = 3 then begin //Process f:= Mouse_Byte[0]; - Packet.x_movement:= Mouse_Byte[1]; - Packet.y_movement:= Mouse_Byte[2]; + //Packet.x_movement:= Mouse_Byte[1]; + //Packet.y_movement:= Mouse_Byte[2]; Packet.x_sign:= (f AND %00010000) = %00010000; Packet.y_sign:= (f AND %00100000) = %00100000; Packet.x_overflow:= (f AND $40) = $40; Packet.y_overflow:= (f AND $80) = $80; - Packet.x_movement:= Packet.x_movement div 4; - Packet.y_movement:= Packet.y_movement div 4; + Packet.x_movement:= Mouse_Byte[1] - ((f SHL 4) AND $100);//Packet.x_movement div 4; + Packet.y_movement:= Mouse_Byte[2] - ((f SHL 3) AND $100);//Packet.y_movement div 4; if Packet.x_movement < 1 then Packet.x_movement:= 1; if Packet.y_movement < 1 then Packet.y_movement:= 1; if not(Packet.x_overflow) and not(Packet.y_overflow) then begin - If (Packet.x_sign) and (Packet.x_movement > 0) then begin + Current.x:= Current.x + Packet.x_movement; + Current.y:= Current.y + Packet.y_movement; + {If (Packet.x_sign) and (Packet.x_movement > 0) then begin dec(Current.x, Packet.x_movement); end; If not(Packet.x_sign) and (Packet.x_movement > 0) then begin @@ -163,7 +165,7 @@ begin end; If (Packet.y_sign) and (Packet.y_movement > 0) then begin inc(Current.y, Packet.y_movement); - end; + end;} if Current.x < 0 then Current.x:= 0; if Current.y < 0 then Current.y:= 0; if Current.x > 1279 then Current.x:= 1279;