📄 system.inc
字号:
set_close_button_callback: function(proc: proc_ptr): sint32; cdecl;
check_cpu: procedure; cdecl;
const
{* CPU Capabilities flags for x86 capable chips *}
CPU_ID = $0001;
CPU_FPU = $0002;
CPU_MMX = $0004;
CPU_MMXPLUS = $0008;
CPU_SSE = $0010;
CPU_SSE2 = $0020;
CPU_3DNOW = $0040;
CPU_ENH3DNOW = $0080;
CPU_CMOV = $0100;
CPU_AMD64 = $0200;
CPU_IA64 = $0400;
CPU_SSE3 = $0800;
{* CPU families - PC *}
CPU_FAMILY_UNKNOWN = 0;
CPU_FAMILY_I386 = 3;
CPU_FAMILY_I486 = 4;
CPU_FAMILY_I586 = 5;
CPU_FAMILY_I686 = 6;
CPU_FAMILY_ITANIUM = 7;
CPU_FAMILY_EXTENDED = 15;
{* CPUID only returns 15 bits, we need extra information from the CPU *}
{* model to identify Pentium IV, Xeon and Athlon 64 processors. *}
{* CPU families - Power PC *}
CPU_FAMILY_POWERPC = 18;
{* CPU models - PC *}
// 486
CPU_MODEL_I486DX = 0;
CPU_MODEL_I486DX50 = 1;
CPU_MODEL_I486SX = 2;
CPU_MODEL_I487SX = 3;
CPU_MODEL_I486SL = 4;
CPU_MODEL_I486SX2 = 5;
CPU_MODEL_I486DX2 = 7;
CPU_MODEL_I486DX4 = 8;
// Intel/586
CPU_MODEL_PENTIUM = 1;
CPU_MODEL_PENTIUMP54C = 2;
CPU_MODEL_PENTIUMOVERDRIVE = 3;
CPU_MODEL_PENTIUMOVERDRIVEDX4 = 4;
CPU_MODEL_CYRIX = 14;
CPU_MODEL_UNKNOWN = 15;
// AMD/586
CPU_MODEL_K5 = 0;
CPU_MODEL_K6 = 6;
// Intel/686
CPU_MODEL_PENTIUMPROA = 0;
CPU_MODEL_PENTIUMPRO = 1;
CPU_MODEL_PENTIUMIIKLAMATH = 3;
CPU_MODEL_PENTIUMII = 5;
CPU_MODEL_CELERON = 6;
CPU_MODEL_PENTIUMIIIKATMAI = 7;
CPU_MODEL_PENTIUMIIICOPPERMINE = 8;
CPU_MODEL_PENTIUMIIIMOBILE = 9;
// AMD/686
CPU_MODEL_ATHLON = 2;
CPU_MODEL_DURON = 3;
// Information when CPU_FAMILY is 15
CPU_MODEL_PENTIUMIV = 0;
CPU_MODEL_XEON = 2;
CPU_MODEL_ATHLON64 = 4;
CPU_MODEL_OPTERON = 5;
{* Information for Power PC processors */
/* these defines are taken from <mach-o/machine.h> *}
CPU_MODEL_POWERPC_601 = 1;
CPU_MODEL_POWERPC_602 = 2;
CPU_MODEL_POWERPC_603 = 3;
CPU_MODEL_POWERPC_603e = 4;
CPU_MODEL_POWERPC_603ev = 5;
CPU_MODEL_POWERPC_604 = 6;
CPU_MODEL_POWERPC_604e = 7;
CPU_MODEL_POWERPC_620 = 8;
CPU_MODEL_POWERPC_750 = 9;
CPU_MODEL_POWERPC_7400 = 10;
CPU_MODEL_POWERPC_7450 = 11;
var
cpu_vendor: PChar;
cpu_family: p_sint32;
cpu_model: p_sint32;
cpu_capabilities: p_sint32;
type
P_SYSTEM_DRIVER = ^SYSTEM_DRIVER;
SYSTEM_DRIVER = record
id : sint32;
name : PChar;
desc : PChar;
ascii_name : PChar;
init : function: sint32; cdecl;
exit : procedure; cdecl;
get_executable_name : procedure(output: PChar; size: sint32); cdecl;
find_resource : function(dest: PChar; const resource: PChar; size: sint32): sint32; cdecl;
set_window_title : procedure(const name: PChar); cdecl;
set_close_button_callback : function(proc: proc_ptr): sint32; cdecl;
messages : procedure(const msg: PChar); cdecl;
assert : procedure(const msg: PChar); cdecl;
save_console_state : procedure; cdecl;
restore_console_state : procedure; cdecl;
create_bitmap : function(color_depth, width, height: sint32): p_BITMAP; cdecl;
created_bitmap : procedure(bmp: p_BITMAP); cdecl;
create_sub_bitmap : function(parent: p_BITMAP; x, y, width, height: sint32): p_BITMAP; cdecl;
created_sub_bitmap : procedure(bmp, parent: p_BITMAP); cdecl;
destroy_bitmap : function(bitmap: p_BITMAP): sint32; cdecl;
read_hardware_palette : procedure; cdecl;
set_palette_range : procedure(const p: P_PALETTE; from, tos, retracesync: sint32); cdecl;
get_vtable : function(color_depth: sint32): p_GFX_VTABLE; cdecl;
set_display_switch_mode : function(mode: sint32): sint32; cdecl;
display_switch_lock : procedure(lock, foreground: sint32); cdecl;
desktop_color_depth : function: sint32; cdecl;
get_desktop_resolution : function(var width, height: sint32): sint32; cdecl;
get_gfx_safe_mode : procedure(driver: p_sint32; mode: p_GFX_MODE); cdecl;
yield_timeslice : procedure; cdecl;
create_mutex : function: Pointer; cdecl;
destroy_mutex : procedure(handle: Pointer); cdecl;
lock_mutex : procedure(handle: Pointer); cdecl;
unlock_mutex : procedure(handle: Pointer); cdecl;
gfx_drivers : function: P_DRIVER_INFO; cdecl;
digi_drivers : function: P_DRIVER_INFO; cdecl;
midi_drivers : function: P_DRIVER_INFO; cdecl;
keyboard_drivers : function: P_DRIVER_INFO; cdecl;
mouse_drivers : function: P_DRIVER_INFO; cdecl;
joystick_drivers : function: P_DRIVER_INFO; cdecl;
timer_drivers : function: P_DRIVER_INFO; cdecl;
end;
var
the_system_none: P_SYSTEM_DRIVER; // system_none the_system_none
the_system_driver: ^P_SYSTEM_DRIVER; // system_driver the_system_driver
_system_driver_list: P_DRIVER_INFO;
procedure set_window_title(const name: PChar);
function desktop_color_depth: sint32;
function get_desktop_resolution(var width, height: sint32): sint32;
{$ENDIF ALLEGRO_INTERFACE}
{$IFDEF ALLEGRO_IMPLEMENTATION}
function MAKE_VERSION(a, b, c: sint32): sint32;
begin
Result := (a shl 16) + (b shl 8) + c;
end;
function install_allegro(system_id: sint32; errno_ptr: p_sint32s; atexit: atexit_ptr): sint32;
begin
if MAKE_VERSION(ALLEGRO_VERSION, ALLEGRO_SUB_VERSION, ALLEGRO_WIP_VERSION) <>
_get_allegro_version() then
begin
ustrzcpy(allegro_error, ALLEGRO_ERROR_SIZE, get_config_text('Library version mismatch'));
Result := not 0;
Exit;
end;
Result := _install_allegro(system_id, errno_ptr, nil);
end;
function allegro_init: sint32;
begin
Result := install_allegro(SYSTEM_AUTODETECT, @errno, nil);
end;
procedure set_window_title(const name: PChar);
begin
assert(the_system_driver <> nil);
if @the_system_driver^^.set_window_title <> nil then
the_system_driver^^.set_window_title(name);
end;
function desktop_color_depth: sint32;
begin
assert(the_system_driver <> nil);
if @the_system_driver^^.desktop_color_depth <> nil then
Result := the_system_driver^^.desktop_color_depth
else
Result := 0;
end;
function get_desktop_resolution(var width, height: sint32): sint32;
begin
assert(the_system_driver <> nil);
if @the_system_driver^^.get_desktop_resolution <> nil then
Result := the_system_driver^^.get_desktop_resolution(width, height)
else
Result := -1;
end;
{$ENDIF ALLEGRO_IMPLEMENTATION}
{$IFDEF ALLEGRO_LOADVARIABLE}
allegro_id := LoadDLL('allegro_id');
allegro_error := LoadDLL('allegro_error');
os_type := LoadDLL('os_type');
os_version := LoadDLL('os_version');
os_revision := LoadDLL('os_revision');
os_multitasking := LoadDLL('os_multitasking');
_get_allegro_version := LoadDLL('_get_allegro_version');
_install_allegro := LoadDLL('_install_allegro');
allegro_exit := LoadDLL('allegro_exit');
allegro_message := LoadDLL('allegro_message');
get_executable_name := LoadDLL('get_executable_name');
set_close_button_callback := LoadDLL('set_close_button_callback');
check_cpu := LoadDLL('check_cpu');
cpu_vendor := LoadDLL('cpu_vendor');
cpu_family := LoadDLL('cpu_family');
cpu_model := LoadDLL('cpu_model');
cpu_capabilities := LoadDLL('cpu_capabilities');
the_system_none := LoadDLL('system_none');
the_system_driver := LoadDLL('system_driver');
_system_driver_list := LoadDLL('_system_driver_list');
{$ENDIF ALLEGRO_LOADVARIABLE}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -