?? neo.h
字號:
/*NEO SDK V2.1.90 For DOS
Copyleft Cker Home 2003-2006.
Open Source Obey NEO_PL.TXT.
http://neo.coderlife.net
ckerhome@yahoo.com.cn
文件名稱 : neo.h
摘 要 : 本頭文件包含了NEO SDK里有關系統初使化函數、結構、全局變量的聲明及定義
當前版本 : V0.48
作 者 : 董凱
完成日期 : 2006.02.01
取代版本 : V0.47
原 作 者 : 董凱
完成日期 : 2006.01.22
*/
#ifndef __NEO_H__
#define __NEO_H__
#ifndef NEO_H
#define NEO_H
#endif
#ifdef __cplusplus
/*語言平臺相關代碼*/
#endif
#include <conio.h>
#include <dir.h>
#include <dos.h>
#include <fcntl.h>
#include <io.h>
#include <malloc.h>
#include <math.h>
#include <mem.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <time.h>
/*以下一部分是NEO默認禁用的一些功能例程,NEO禁用它們并不代表不支持這些功能
而是出于對最后生成執行文件大小的考慮。所以用“編譯開關”將一些不常用或較耗
內存的部分功能禁用了,比如不常用的鼠標擴展功能、較占內存的NEO系統調色板、
尚未完成的音頻播放等等。當然,若你想恢復對它們的支持以便使用也是非常簡單的
你只要在#include <neo.h>之前加上開啟該功能的“編譯開關”。比方說如果你想寫
的不是普通圖形程序而是象游戲之類的“高級”圖形程序,你可能就需要播放音頻文
件的功能,而音頻例程是NEO默認禁用的,你可以在#include "neo.h"前邊加上啟用
音頻例程的“編譯開關”#define NEO_sound_used來開啟對其的支持。更多的編譯開關
可以參考NEO說明文檔中的“減小你的可執行文件體積”一節*/
/*NEO默認不使用繪圖模式(譬如XOR_PUT等等)*/
#ifndef NEO_draw_mode_used
#define NEO_draw_mode_unused
#endif
/*NEO默認不載入NEO的系統調色板*/
#ifndef NEO_sys_pal_used
#define NEO_sys_pal_unused
#endif
/*默認停用8位色下的淡出淡入例程*/
#ifndef NEO_fade_pal_used
#define NEO_fade_pal_unused
#endif
/*NEO默認不使用鼠標擴展功能函數*/
#ifndef NEO_mouse_exp_used
#define NEO_mouse_exp_unused
#endif
/*默認不使用XMS擴展內存函數*/
#ifndef NEO_xms_used
#define NEO_xms_unused
#endif
/*默認不使用UMB內存函數*/
#ifndef NEO_umb_used
#define NEO_umb_unused
#endif
/*默認不使用EMS擴充內存函數*/
#ifndef NEO_ems_used
#define NEO_ems_unused
#endif
/*默認不使用音頻播放*/
#ifndef NEO_sound_used
#define NEO_sound_unused
#endif
/*默認不使用硬件滾屏系統*/
#ifndef NEO_scroll_used
#define NEO_scroll_unused
#endif
/*默認不使用時鐘自適應功能*/
#ifndef NEO_timer_adapt_used
#define NEO_timer_adapt_unused
#endif
/*默認不使用時鐘自適應功能*/
#ifndef NEO_other_used
#define NEO_other_unused
#endif
/*默認不使用全部的特效*/
#ifdef NEO_bmp_all_effect_used
#define NEO_bmp_muslin_used
#define NEO_bmp_channel_used
#define NEO_bmp_roloc_used
#define NEO_bmp_jmp_lin_used
#define NEO_bmp_bright_used
#define NEO_bmp_vivid_used
#define NEO_bmp_stead_used
#define NEO_bmp_wublur_used
#endif
/*默認不使用位圖縷紗效果*/
#ifndef NEO_bmp_muslin_used
#define NEO_bmp_muslin_unused
#endif
/*默認不使用位圖通道效果*/
#ifndef NEO_bmp_channel_used
#define NEO_bmp_channel_unused
#endif
/*默認不使用位圖反色效果*/
#ifndef NEO_bmp_roloc_used
#define NEO_bmp_roloc_unused
#endif
/*默認不使用隔行掃描效果*/
#ifndef NEO_bmp_jmp_lin_used
#define NEO_bmp_jmp_lin_unused
#endif
/*默認不使用亮度調整功能*/
#ifndef NEO_bmp_bright_used
#define NEO_bmp_bright_unused
#endif
/*默認不使用顏色加強效果*/
#ifndef NEO_bmp_vivid_used
#define NEO_bmp_vivid_unused
#endif
/*默認不使用顏色替換功能*/
#ifndef NEO_bmp_stead_used
#define NEO_bmp_stead_unused
#endif
/*默認不使用位圖模糊效果*/
#ifndef NEO_bmp_wublur_used
#define NEO_bmp_wublur_unused
#endif
/*包含所有的NEO頭文件*/
#include "ncommon.h"/* 公共變量 */
#include "ntimer.h" /* 時鐘模塊 */
#include "nerror.h" /* 錯誤報告及拋出功能 */
#include "nvesa.h" /* 顯卡硬件底層處理 */
#include "ncolor.h" /* 調色板處理 */
#include "ndraw.h" /* 基本圖形函數 */
#include "nxms.h" /* 擴展內存操作 */
#include "nems.h" /* 擴充內存操作 */
#include "neffect.h"/* 圖形顯示特效 */
#include "nbmp.h" /* 位圖文件處理 */
#include "nicon.h" /* 光標文件處理 */
#include "nscroll.h"/* 滾屏處理 */
#include "ninput.h" /* 鍵盤、鼠標 */
#include "nword.h" /* 文字輸出 */
#include "nsound.h" /*音頻播放 */
#include "ngui.h" /*圖形用戶接口 */
#include "nother.h" /*附加功能 */
#define NEO_VERSION 2
#define NEO_BETA 1
#define NEO_SUB_VERSION 90
#define NEO_VERSION_STR "2.1.90 Revise"
#define NEO_DATE_STR "2006/02/12"
/*yyyymmdd*/
#define NEO_DATE 20060212L
extern char neo_id[] = NEO_VERSION_STR;
extern char neo_date[] = NEO_DATE_STR;
char neo_init(void);
void neo_exit(void);
char neo_init(void)
{
union REGS in,out;
struct SREGS segs;
struct vbe_info_t vbe_info;
char far *vbeinfo = (char far *)&vbe_info;
in.x.ax = 0x4F00;
in.x.di = FP_OFF(vbeinfo);
segs.es = FP_SEG(vbeinfo);
int86x(0x10, &in, &out, &segs);
if (stricmp(vbe_info.VESA_signature, "VESA") != 0)
{
#ifndef NEO_sys_report_error_unused
Errinfo_t error = {"neo_init", N_NOT_VESA_CARD, 1};
throw_error(error);
#endif
return (g_vbe_sub_ver = -1);
}
g_vbe_version = vbe_info.VBE_version >> 8;
g_vbe_sub_ver = vbe_info.VBE_version & 0xF;
g_total_vram = vbe_info.total_memory;
atexit(neo_exit);
#ifndef NEO_temp_dir_unused
mkdir("neotemp");
#endif
return 0;
}
void neo_exit(void)
{
int near *memzero = (int near *)0X0;
int bakzero = *memzero; /*備份內存第0字節的內容*/
#ifndef NEO_color_depth_8_unused
#ifndef NEO_palette_unused
set_dac_size(6);
#endif
#endif
/*set_vbe_mode(3);*/
#ifndef NEO_mouse_adv_unused
if (_mouse_installed)
{
remove_mouse();
}
#endif
#ifndef NEO_timer_unused
if (_timer_installed)
{
remove_timer();
}
#endif
#ifndef NEO_keyboard_unused
if (_keyboard_installed)
{
remove_keyboard();
}
#endif
#ifndef NEO_xms_unused
if (_xms_installed)
{
xms_kill();
}
#endif
#ifndef NEO_sound_unused
if (_digi_installed)
{
remove_sound();
}
#endif
/*進行收尾工作*/
fcloseall();
set_vga_mode(0x3);
printf("Clear temp file...\n");
#ifndef NEO_temp_dir_unused
system("del NEOTEMP\\*.$$$");
#else
system("del *.$$$");
#endif
system("cls");
if (*memzero != bakzero) /*檢查用戶程序在運行過程中是否發生內存泄漏*/
{
#ifndef NEO_sys_report_error_unused
Errinfo_t error = {"neo_exit", N_MEM_MAY_OUT, 0};
throw_error(error);
#endif
}
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -