From f66b2c6a16e6f6c2c9c07a39d1855b5ea178fead Mon Sep 17 00:00:00 2001 From: sparky4 Date: Fri, 28 Nov 2014 14:03:20 -0600 Subject: [PATCH] new file: 16/modex16.tar.7z deleted: 16/modex16/286@12.LOG deleted: 16/modex16/286@8.LOG deleted: 16/modex16/BITMAP.C deleted: 16/modex16/dos_kb.c deleted: 16/modex16/dos_kb.h deleted: 16/modex16/gfx.pal deleted: 16/modex16/lib/lib_head.cpp deleted: 16/modex16/lib/lib_head.h deleted: 16/modex16/makefile deleted: 16/modex16/modex16.c deleted: 16/modex16/modex16.h deleted: 16/modex16/pcxtest.exe deleted: 16/modex16/ptmp.pcx deleted: 16/modex16/ptmp.png deleted: 16/modex16/scroll.c deleted: 16/modex16/scroll.exe deleted: 16/modex16/test.exe deleted: 16/modex16/test.txt deleted: 16/modex16/test2.exe deleted: 16/modex16/types.h deleted: BITMAP.H modified: Project 16.bfproject renamed: 16/modex16/46113319.pcx -> data/46113319.pcx renamed: 16/modex16/COMPUTER.PCX -> data/COMPUTER.PCX renamed: 16/modex16/EDw.PCX -> data/EDw.PCX renamed: 16/modex16/MAYU.PCX -> data/MAYU.PCX renamed: 16/modex16/chikyuu.pcx -> data/chikyuu.pcx renamed: 16/modex16/ed.pcx -> data/ed.pcx renamed: 16/modex16/ed2.pcx -> data/ed2.pcx renamed: 16/modex16/koishi.pcx -> data/koishi.pcx renamed: 16/modex16/koishi^^.pcx -> data/koishi^^.pcx renamed: 16/modex16/koishi~.pcx -> data/koishi~.pcx renamed: ptmp.pcx -> data/ptmp.pcx renamed: 16/modex16/q.pcx -> data/q.pcx renamed: 16/modex16/rarity.pcx -> data/rarity.pcx renamed: 16/modex16/w.pcx -> data/w.pcx modified: makefile new file: makefile~ deleted: palettec.c deleted: pcxtest.c modified: pcxtest.exe modified: scroll.exe renamed: BITMAP.C -> src/lib/bitmap.c renamed: 16/modex16/BITMAP.H -> src/lib/bitmap.h renamed: dos_kb.c -> src/lib/dos_kb.c renamed: dos_kb.h -> src/lib/dos_kb.h renamed: lib/lib_head.cpp -> src/lib/lib_head.cpp renamed: lib/lib_head.h -> src/lib/lib_head.h renamed: modex16.c -> src/lib/modex16.c renamed: modex16.h -> src/lib/modex16.h renamed: types.h -> src/lib/types.h renamed: lib/wtest/WTEST.EXE -> src/lib/wtest/WTEST.EXE renamed: lib/wtest/makefile -> src/lib/wtest/makefile renamed: lib/wtest/wtest.c -> src/lib/wtest/wtest.c renamed: lib/wtest/wtest.h -> src/lib/wtest/wtest.h renamed: 16/modex16/palettec.c -> src/palettec.c renamed: 16/modex16/pcxtest.c -> src/pcxtest.c renamed: scroll.c -> src/scroll.c renamed: 16/modex16/test.c -> src/test.c renamed: 16/modex16/test2.c -> src/test2.c deleted: test.c modified: test.exe deleted: test2.c modified: test2.exe --- 16/modex16.tar.7z | Bin 0 -> 50422 bytes 16/modex16/286@12.LOG | 4 - 16/modex16/286@8.LOG | 4 - 16/modex16/BITMAP.H | 24 - 16/modex16/dos_kb.h | 23 - 16/modex16/gfx.pal | Bin 768 -> 0 bytes 16/modex16/lib/lib_head.cpp | 21 - 16/modex16/lib/lib_head.h | 106 ----- 16/modex16/makefile | 37 -- 16/modex16/modex16.c | 605 ------------------------ 16/modex16/modex16.h | 86 ---- 16/modex16/pcxtest.c | 79 ---- 16/modex16/pcxtest.exe | Bin 36196 -> 0 bytes 16/modex16/ptmp.png | Bin 2715 -> 0 bytes 16/modex16/scroll.c | 508 -------------------- 16/modex16/scroll.exe | Bin 21064 -> 0 bytes 16/modex16/test.exe | Bin 17260 -> 0 bytes 16/modex16/test.txt | 258 ---------- 16/modex16/test2.c | 19 - 16/modex16/test2.exe | Bin 17028 -> 0 bytes BITMAP.C | 162 ------- Project 16.bfproject | 74 +-- {16/modex16 => data}/46113319.pcx | Bin {16/modex16 => data}/COMPUTER.PCX | Bin {16/modex16 => data}/EDw.PCX | Bin {16/modex16 => data}/MAYU.PCX | Bin {16/modex16 => data}/chikyuu.pcx | Bin {16/modex16 => data}/ed.pcx | Bin {16/modex16 => data}/ed2.pcx | Bin {16/modex16 => data}/koishi.pcx | Bin {16/modex16 => data}/koishi^^.pcx | Bin {16/modex16 => data}/koishi~.pcx | Bin {16/modex16 => data}/ptmp.pcx | Bin {16/modex16 => data}/q.pcx | Bin {16/modex16 => data}/rarity.pcx | Bin {16/modex16 => data}/w.pcx | Bin dos_kb.c | 142 ------ makefile | 34 +- makefile~ | 37 ++ palettec.c | 16 - pcxtest.exe | Bin 60869 -> 60909 bytes ptmp.pcx | Bin 5047 -> 0 bytes scroll.exe | Bin 48230 -> 48294 bytes 16/modex16/BITMAP.C => src/lib/bitmap.c | 4 +- BITMAP.H => src/lib/bitmap.h | 2 +- {16/modex16 => src/lib}/dos_kb.c | 2 +- dos_kb.h => src/lib/dos_kb.h | 2 +- {lib => src/lib}/lib_head.cpp | 3 +- {lib => src/lib}/lib_head.h | 2 +- modex16.c => src/lib/modex16.c | 2 +- modex16.h => src/lib/modex16.h | 4 +- {16/modex16 => src/lib}/types.h | 0 {lib => src/lib}/wtest/WTEST.EXE | Bin {lib => src/lib}/wtest/makefile | 0 {lib => src/lib}/wtest/wtest.c | 0 {lib => src/lib}/wtest/wtest.h | 0 {16/modex16 => src}/palettec.c | 2 +- pcxtest.c => src/pcxtest.c | 6 +- scroll.c => src/scroll.c | 8 +- {16/modex16 => src}/test.c | 2 +- test2.c => src/test2.c | 2 +- test.c | 75 --- test.exe | Bin 37600 -> 37640 bytes test2.exe | Bin 37089 -> 37129 bytes types.h | 11 - 65 files changed, 112 insertions(+), 2254 deletions(-) create mode 100644 16/modex16.tar.7z delete mode 100644 16/modex16/286@12.LOG delete mode 100644 16/modex16/286@8.LOG delete mode 100644 16/modex16/BITMAP.H delete mode 100644 16/modex16/dos_kb.h delete mode 100644 16/modex16/gfx.pal delete mode 100644 16/modex16/lib/lib_head.cpp delete mode 100644 16/modex16/lib/lib_head.h delete mode 100644 16/modex16/makefile delete mode 100644 16/modex16/modex16.c delete mode 100644 16/modex16/modex16.h delete mode 100644 16/modex16/pcxtest.c delete mode 100644 16/modex16/pcxtest.exe delete mode 100644 16/modex16/ptmp.png delete mode 100644 16/modex16/scroll.c delete mode 100755 16/modex16/scroll.exe delete mode 100644 16/modex16/test.exe delete mode 100644 16/modex16/test.txt delete mode 100644 16/modex16/test2.c delete mode 100644 16/modex16/test2.exe delete mode 100644 BITMAP.C rename {16/modex16 => data}/46113319.pcx (100%) rename {16/modex16 => data}/COMPUTER.PCX (100%) rename {16/modex16 => data}/EDw.PCX (100%) rename {16/modex16 => data}/MAYU.PCX (100%) rename {16/modex16 => data}/chikyuu.pcx (100%) rename {16/modex16 => data}/ed.pcx (100%) rename {16/modex16 => data}/ed2.pcx (100%) rename {16/modex16 => data}/koishi.pcx (100%) rename {16/modex16 => data}/koishi^^.pcx (100%) rename {16/modex16 => data}/koishi~.pcx (100%) rename {16/modex16 => data}/ptmp.pcx (100%) rename {16/modex16 => data}/q.pcx (100%) rename {16/modex16 => data}/rarity.pcx (100%) rename {16/modex16 => data}/w.pcx (100%) delete mode 100644 dos_kb.c create mode 100644 makefile~ delete mode 100644 palettec.c delete mode 100644 ptmp.pcx rename 16/modex16/BITMAP.C => src/lib/bitmap.c (94%) rename BITMAP.H => src/lib/bitmap.h (91%) rename {16/modex16 => src/lib}/dos_kb.c (99%) rename dos_kb.h => src/lib/dos_kb.h (93%) rename {lib => src/lib}/lib_head.cpp (79%) rename {lib => src/lib}/lib_head.h (98%) rename modex16.c => src/lib/modex16.c (95%) rename modex16.h => src/lib/modex16.h (95%) rename {16/modex16 => src/lib}/types.h (100%) rename {lib => src/lib}/wtest/WTEST.EXE (100%) rename {lib => src/lib}/wtest/makefile (100%) rename {lib => src/lib}/wtest/wtest.c (100%) rename {lib => src/lib}/wtest/wtest.h (100%) rename {16/modex16 => src}/palettec.c (77%) rename pcxtest.c => src/pcxtest.c (89%) rename scroll.c => src/scroll.c (99%) rename {16/modex16 => src}/test.c (93%) rename test2.c => src/test2.c (84%) delete mode 100644 test.c delete mode 100644 types.h diff --git a/16/modex16.tar.7z b/16/modex16.tar.7z new file mode 100644 index 0000000000000000000000000000000000000000..9782ad73d162ab35062db18ad29ece4ede53960c GIT binary patch literal 50422 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%0Au?P%K*KnT5P(9kYR3Npv31e`Jmg2 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 H|A7Dif8oI8 literal 0 HcmV?d00001 diff --git a/16/modex16/286@12.LOG b/16/modex16/286@12.LOG deleted file mode 100644 index 34027049..00000000 --- a/16/modex16/286@12.LOG +++ /dev/null @@ -1,4 +0,0 @@ -Old non-sprite: 7.032967 -New non-sprite: 1.043956 -Old Sprite: 6.648352 -New Sprite: 1.648352 diff --git a/16/modex16/286@8.LOG b/16/modex16/286@8.LOG deleted file mode 100644 index a29ceffc..00000000 --- a/16/modex16/286@8.LOG +++ /dev/null @@ -1,4 +0,0 @@ -Old non-sprite: 10.439561 -New non-sprite: 1.373626 -Old Sprite: 9.945055 -New Sprite: 2.362637 diff --git a/16/modex16/BITMAP.H b/16/modex16/BITMAP.H deleted file mode 100644 index 4c4af98e..00000000 --- a/16/modex16/BITMAP.H +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Functions and types for loading and manipulating bitmaps. - */ -#ifndef BITMAP_H -#define BITMAP_H -#include "types.h" -typedef struct { - byte *data; - word width; - word height; - byte *palette; -} bitmap_t; - -typedef struct { - byte **data; - word ntiles; /* the number of tiles */ - word twidth; /* width of the tiles */ - word theight; /* height of the tiles */ - byte *palette; /* palette for the tile set */ -} tileset_t; - -bitmap_t bitmapLoadPcx(char *filename); -tileset_t bitmapLoadPcxTiles(char *filename, word twidth, word theight); -#endif diff --git a/16/modex16/dos_kb.h b/16/modex16/dos_kb.h deleted file mode 100644 index 846946b3..00000000 --- a/16/modex16/dos_kb.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _DOSLIB_KB_H_ -#define _DOSLIB_KB_H_ -#include "lib\lib_head.h" - -/* Maximum number of scan codes on keyboard controllers */ -#define NUM_SCANCODES 128 - -#ifdef __cplusplus /* Functions must be declared C style */ -extern "C" { -#endif -void interrupt far newkb(void); -//extern void interrupt (far *oldkb)(void); -void setkb(int vq); -int keyp(byte c); - -/* Define macro */ -//#define kepn(c) key[c & 0x7F] - -#ifdef __cplusplus -} -#endif - -#endif/*_DOSLIB_KB_H_*/ diff --git a/16/modex16/gfx.pal b/16/modex16/gfx.pal deleted file mode 100644 index e98ae60e3d21a9409f12ef6b1f2ad3625750e734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 zcmZva!3shl5JhKEB>9@=fri8dTLeWQk6P5D&HVpg<+M_8JdASB=t`nmkGkmbuvWKd z$7rQ>MOAD6tsd+2cDr@XdGDEdp63ukN(sQ_a=Biw_xrt+@_N12b^Xt)kY>__>gCF! zl$E4D)QTn@i=6eAb;Vn2qWPx1XwtDLMW03AMZZPW_-c7;d1^13bS#LlBQPNn zU_=mucIZWujs-JjMr0%gj0BG08NF!Iu?PXDfD~{JfN@4h2q*NSNymanHYAQ@A`xQ} zazY#FMU#$&bFz0bIbkPau((OwUV71_W8u9_UJhQ4Uc@+xKZu{C7fm`A_RUB218>tx AO#lD@ diff --git a/16/modex16/lib/lib_head.cpp b/16/modex16/lib/lib_head.cpp deleted file mode 100644 index cc40b93b..00000000 --- a/16/modex16/lib/lib_head.cpp +++ /dev/null @@ -1,21 +0,0 @@ -//#include "src\lib\lib_head.h" -#include "lib\lib_head.h" - -/* local function */ -void wait(clock_t wait); - -/* Function: Wait ********************************************************** -* -* Parameters: wait - time in microseconds -* -* Description: pauses for a specified number of microseconds. -* -*/ -void wait(clock_t wait){ - clock_t goal; - - if(!wait) return; - - goal = wait + clock(); - while((goal > clock()) && !kbhit()) ; -} /* End of wait */ \ No newline at end of file diff --git a/16/modex16/lib/lib_head.h b/16/modex16/lib/lib_head.h deleted file mode 100644 index ba2c8b59..00000000 --- a/16/modex16/lib/lib_head.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef _LIBHEAD_H_ -#define _LIBHEAD_H_ -#include -#include -#include // just for wait -#include // just for wait -#include "types.h" - -/* Control codes for all keys on the keyboard */ -//here temperarly -#define KEY_A (0x1E) -#define KEY_B (0x30) -#define KEY_C (0x2E) -#define KEY_D (0x20) -#define KEY_E (0x12) -#define KEY_F (0x21) -#define KEY_G (0x22) -#define KEY_H (0x23) -#define KEY_I (0x17) -#define KEY_J (0x24) -#define KEY_K (0x25) -#define KEY_L (0x26) -#define KEY_M (0x32) -#define KEY_N (0x31) -#define KEY_O (0x18) -#define KEY_P (0x19) -#define KEY_Q (0x10) -#define KEY_R (0x13) -#define KEY_S (0x1F) -#define KEY_T (0x14) -#define KEY_U (0x16) -#define KEY_V (0x2F) -#define KEY_W (0x11) -#define KEY_X (0x2D) -#define KEY_Y (0x15) -#define KEY_Z (0x2C) -#define KEY_1 (0x02) -#define KEY_2 (0x03) -#define KEY_3 (0x04) -#define KEY_4 (0x05) -#define KEY_5 (0x06) -#define KEY_6 (0x07) -#define KEY_7 (0x08) -#define KEY_8 (0x09) -#define KEY_9 (0x0A) -#define KEY_0 (0x0B) -#define KEY_DASH (0x0C) /* -_ */ -#define KEY_EQUAL (0x0D) /* =+ */ -#define KEY_LBRACKET (0x1A) /* [{ */ -#define KEY_RBRACKET (0x1B) /* ]} */ -#define KEY_SEMICOLON (0x27) /* ;: */ -#define KEY_RQUOTE (0x28) /* '" */ -#define KEY_LQUOTE (0x29) /* `~ */ -#define KEY_PERIOD (0x33) /* .> */ -#define KEY_COMMA (0x34) /* ,< */ -#define KEY_SLASH (0x35) /* /? */ -#define KEY_BACKSLASH (0x2B) /* \| */ -#define KEY_F1 (0x3B) -#define KEY_F2 (0x3C) -#define KEY_F3 (0x3D) -#define KEY_F4 (0x3E) -#define KEY_F5 (0x3F) -#define KEY_F6 (0x40) -#define KEY_F7 (0x41) -#define KEY_F8 (0x42) -#define KEY_F9 (0x43) -#define KEY_F10 (0x44) -#define KEY_ESC (0x01) -#define KEY_BACKSPACE (0x0E) -#define KEY_TAB (0x0F) -#define KEY_ENTER (0x1C) -#define KEY_CONTROL (0x1D) -#define KEY_LSHIFT (0x2A) -#define KEY_RSHIFT (0x36) -#define KEY_PRTSC (0x37) -#define KEY_ALT (0x38) -#define KEY_SPACE (0x39) -#define KEY_CAPSLOCK (0x3A) -#define KEY_NUMLOCK (0x45) -#define KEY_SCROLLLOCK (0x46) -#define KEY_HOME (0x47) -#define KEY_UP (0x48) -#define KEY_PGUP (0x49) -#define KEY_MINUS (0x4A) -#define KEY_LEFT (0x4B) -#define KEY_CENTER (0x4C) -#define KEY_RIGHT (0x4D) -#define KEY_PLUS (0x4E) -#define KEY_END (0x4F) -#define KEY_DOWN (0x50) -#define KEY_PGDOWN (0x51) -#define KEY_INS (0x52) -#define KEY_DEL (0x53) - -#define KEY_LWIN (0x73) -#define KEY_RWIN (0x74) -#define KEY_MENU (0x75) - - -//typedef unsigned char byte; -//typedef unsigned int word; -//typedef unsigned short syte; - -void wait(clock_t wait); - -#endif/*_LIBHEAD_H_*/ diff --git a/16/modex16/makefile b/16/modex16/makefile deleted file mode 100644 index b11f89a0..00000000 --- a/16/modex16/makefile +++ /dev/null @@ -1,37 +0,0 @@ -FLAGS=-0 -all: test.exe pcxtest.exe test2.exe scroll.exe - -scroll.exe: scroll.obj modex16.obj dos_kb.obj bitmap.obj - wcl $(FLAGS) scroll.obj modex16.obj dos_kb.obj bitmap.obj -scroll.obj: scroll.c - wcl $(FLAGS) -c scroll.c -test.exe: test.obj modex16.obj bitmap.obj - wcl $(FLAGS) test.obj modex16.obj bitmap.obj - -test2.exe: test2.obj modex16.obj bitmap.obj - wcl $(FLAGS) test2.obj modex16.obj bitmap.obj - -pcxtest.exe: pcxtest.obj modex16.obj bitmap.obj - wcl $(FLAGS) pcxtest.obj modex16.obj bitmap.obj - -test.obj: test.c modex16.h - wcl $(FLAGS) -c test.c - -test2.obj: test2.c modex16.h - wcl $(FLAGS) -c test2.c - -pcxtest.obj: pcxtest.c modex16.h - wcl $(FLAGS) -c pcxtest.c - -modex16.obj: modex16.h modex16.c - wcl $(FLAGS) -c modex16.c - -dos_kb.obj: dos_kb.h dos_kb.c - wcl $(FLAGS) -c dos_kb.c - -bitmap.obj: bitmap.h bitmap.c - wcl $(FLAGS) -c bitmap.c - -clean: - del *.obj - del *.exe diff --git a/16/modex16/modex16.c b/16/modex16/modex16.c deleted file mode 100644 index f01116b5..00000000 --- a/16/modex16/modex16.c +++ /dev/null @@ -1,605 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "modex16.h" - - -byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ - -static void fadePalette(sbyte fade, sbyte start, word iter, byte *palette); -static byte tmppal[PAL_SIZE]; - -static void -vgaSetMode(byte mode) -{ - union REGS regs; - - regs.h.ah = SET_MODE; - regs.h.al = mode; - int86(VIDEO_INT, ®s, ®s); -} - - -/* -========================= Entry Points ==========================- */ -void -modexEnter() { - word i; - dword far*ptr=(dword far*)VGA; /* used for faster screen clearing */ - word CRTParms[] = { - 0x0d06, /* vertical total */ - 0x3e07, /* overflow (bit 8 of vertical counts) */ - 0x4109, /* cell height (2 to double-scan */ - 0xea10, /* v sync start */ - 0xac11, /* v sync end and protect cr0-cr7 */ - 0xdf12, /* vertical displayed */ - 0x0014, /* turn off dword mode */ - 0xe715, /* v blank start */ - 0x0616, /* v blank end */ - 0xe317 /* turn on byte mode */ - }; - int CRTParmCount = sizeof(CRTParms) / sizeof(CRTParms[0]); - - /* TODO save current video mode and palette */ - vgaSetMode(VGA_256_COLOR_MODE); - - /* disable chain4 mode */ - outpw(SC_INDEX, 0x0604); - - /* synchronous reset while setting Misc Output */ - outpw(SC_INDEX, 0x0100); - - /* select 25 MHz dot clock & 60 Hz scanning rate */ - outp(MISC_OUTPUT, 0xe3); - - /* undo reset (restart sequencer) */ - outpw(SC_INDEX, 0x0300); - - /* reprogram the CRT controller */ - outp(CRTC_INDEX, 0x11); /* VSync End reg contains register write prot */ - outp(CRTC_DATA, 0x7f); /* get current write protect on varios regs */ - - /* send the CRTParms */ - for(i=0; idata + (p->width/4)*p->height; /* compute the offset */ - result.dx = 0; - result.dy = 0; - result.width = p->width; - result.height = p->height; - - return result; -} - - -void -modexShowPage(page_t *page) { - word high_address; - word low_address; - word offset; - byte crtcOffset; - - /* calculate offset */ - offset = (word) page->data; - offset += page->dy * (page->width >> 2 ); - offset += page->dx >> 2; - - /* calculate crtcOffset according to virtual width */ - crtcOffset = page->width >> 3; - - high_address = HIGH_ADDRESS | (offset & 0xff00); - low_address = LOW_ADDRESS | (offset << 8); - - /* wait for appropriate timing and then program CRTC */ - while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE)); - outpw(CRTC_INDEX, high_address); - outpw(CRTC_INDEX, low_address); - outp(CRTC_INDEX, 0x13); - outp(CRTC_DATA, crtcOffset); - - /* wait for one retrace */ - while (!(inp(INPUT_STATUS_1) & VRETRACE)); - - /* do PEL panning here */ - outp(AC_INDEX, 0x33); - outp(AC_INDEX, (page->dx & 0x03) << 1); -} - - -void -modexPanPage(page_t *page, int dx, int dy) { - page->dx = dx; - page->dy = dy; -} - - -void -modexSelectPlane(byte plane) { - outp(SC_INDEX, MAP_MASK); /* select plane */ - outp(SC_DATA, plane); -} - - -void -modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) { - word pageOff = (word) page->data; - word xoff=x/4; /* xoffset that begins each row */ - word scanCount=w/4; /* number of iterations per row (excluding right clip)*/ - word poffset = pageOff + y*(page->width/4) + xoff; /* starting offset */ - word nextRow = page->width/4-scanCount-1; /* loc of next row */ - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; - byte left = lclip[x&0x03]; - byte right = rclip[(x+w)&0x03]; - - /* handle the case which requires an extra group */ - if((x & 0x03) && !((x+w) & 0x03)) { - right=0x0f; - } - - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - MOV DI, poffset ; go to the first pixel - MOV DX, SC_INDEX ; point to the map mask - MOV AL, MAP_MASK - OUT DX, AL - INC DX - MOV AL, color ; get ready to write colors - SCAN_START: - MOV CX, scanCount ; count the line - MOV BL, AL ; remember color - MOV AL, left ; do the left clip - OUT DX, AL ; set the left clip - MOV AL, BL ; restore color - STOSB ; write the color - DEC CX - JZ SCAN_DONE ; handle 1 group stuff - - ;-- write the main body of the scanline - MOV BL, AL ; remember color - MOV AL, 0x0f ; write to all pixels - OUT DX, AL - MOV AL, BL ; restore color - REP STOSB ; write the color - SCAN_DONE: - MOV BL, AL ; remeber color - MOV AL, right - OUT DX, AL ; do the right clip - MOV AL, BL ; restore color - STOSB ; write pixel - ADD DI, nextRow ; go to the next row - DEC h - JNZ SCAN_START - } -} - - -void -modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp) { - /* draw the region (the entire freakin bitmap) */ - modexDrawBmpRegion(page, x, y, 0, 0, bmp->width, bmp->height, bmp); -} - - -void -modexDrawBmpRegion(page_t *page, int x, int y, - int rx, int ry, int rw, int rh, bitmap_t *bmp) { - word poffset = (word) page->data + y*(page->width/4) + x/4; - byte *data = bmp->data; - word bmpOffset = (word) data + ry * bmp->width + rx; - word width = rw; - word height = rh; - byte plane = 1 << ((byte) x & 0x03); - word scanCount = width/4 + (width%4 ? 1 :0); - word nextPageRow = page->width/4 - scanCount; - word nextBmpRow = (word) bmp->width - width; - word rowCounter; - byte planeCounter = 4; - - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - - MOV DX, SC_INDEX ; point at the map mask register - MOV AL, MAP_MASK ; - OUT DX, AL ; - - PLANE_LOOP: - MOV DX, SC_DATA ; select the current plane - MOV AL, plane ; - OUT DX, AL ; - - ;-- begin plane painting - MOV AX, height ; start the row counter - MOV rowCounter, AX ; - MOV DI, poffset ; go to the first pixel - MOV SI, bmpOffset ; go to the bmp pixel - ROW_LOOP: - MOV CX, width ; count the columns - SCAN_LOOP: - MOVSB ; copy the pixel - SUB CX, 3 ; we skip the next 3 - ADD SI, 3 ; skip the bmp pixels - LOOP SCAN_LOOP ; finish the scan - - MOV AX, nextPageRow - ADD DI, AX ; go to the next row on screen - MOV AX, nextBmpRow - ADD SI, AX ; go to the next row on bmp - - DEC rowCounter - JNZ ROW_LOOP ; do all the rows - ;-- end plane painting - - MOV AL, plane ; advance to the next plane - SHL AL, 1 ; - AND AL, 0x0f ; mask the plane properly - MOV plane, AL ; store the plane - - INC bmpOffset ; start bmp at the right spot - - DEC planeCounter - JNZ PLANE_LOOP ; do all 4 planes - } -} - - -void -modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp) { - /* draw the whole sprite */ - modexDrawSpriteRegion(page, x, y, 0, 0, bmp->width, bmp->height, bmp); -} - -void -modexDrawSpriteRegion(page_t *page, int x, int y, - int rx, int ry, int rw, int rh, bitmap_t *bmp) { - word poffset = (word)page->data + y*(page->width/4) + x/4; - byte *data = bmp->data; - word bmpOffset = (word) data + ry * bmp->width + rx; - word width = rw; - word height = rh; - byte plane = 1 << ((byte) x & 0x03); - word scanCount = width/4 + (width%4 ? 1 :0); - word nextPageRow = page->width/4 - scanCount; - word nextBmpRow = (word) bmp->width - width; - word rowCounter; - byte planeCounter = 4; - - __asm { - MOV AX, SCREEN_SEG ; go to the VGA memory - MOV ES, AX - - MOV DX, SC_INDEX ; point at the map mask register - MOV AL, MAP_MASK ; - OUT DX, AL ; - - PLANE_LOOP: - MOV DX, SC_DATA ; select the current plane - MOV AL, plane ; - OUT DX, AL ; - - ;-- begin plane painting - MOV AX, height ; start the row counter - MOV rowCounter, AX ; - MOV DI, poffset ; go to the first pixel - MOV SI, bmpOffset ; go to the bmp pixel - ROW_LOOP: - MOV CX, width ; count the columns - SCAN_LOOP: - LODSB - DEC SI - CMP AL, 0 - JNE DRAW_PIXEL ; draw non-zero pixels - - INC DI ; skip the transparent pixel - ADD SI, 1 - JMP NEXT_PIXEL - DRAW_PIXEL: - MOVSB ; copy the pixel - NEXT_PIXEL: - SUB CX, 3 ; we skip the next 3 - ADD SI, 3 ; skip the bmp pixels - LOOP SCAN_LOOP ; finish the scan - - MOV AX, nextPageRow - ADD DI, AX ; go to the next row on screen - MOV AX, nextBmpRow - ADD SI, AX ; go to the next row on bmp - - DEC rowCounter - JNZ ROW_LOOP ; do all the rows - ;-- end plane painting - - MOV AL, plane ; advance to the next plane - SHL AL, 1 ; - AND AL, 0x0f ; mask the plane properly - MOV plane, AL ; store the plane - - INC bmpOffset ; start bmp at the right spot - - DEC planeCounter - JNZ PLANE_LOOP ; do all 4 planes - } -} - - -/* copy a region of video memory from one page to another. - * It assumes that the left edge of the tile is the same on both - * regions and the memory areas do not overlap. - */ -void -modexCopyPageRegion(page_t *dest, page_t *src, - word sx, word sy, - word dx, word dy, - word width, word height) -{ - word doffset = (word)dest->data + dy*(dest->width/4) + dx/4; - word soffset = (word)src->data + sy*(src->width/4) + sx/4; - word scans = width/4; - word nextSrcRow = src->width/4 - scans - 1; - word nextDestRow = dest->width/4 - scans - 1; - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; /* clips for rectangles not on 4s */ - byte rclip[] = {0x0f, 0x01, 0x03, 0x07}; - byte left = lclip[sx&0x03]; - byte right = rclip[(sx+width)&0x03]; - - __asm { - MOV AX, SCREEN_SEG ; work in the vga space - MOV ES, AX ; - MOV DI, doffset ; - MOV SI, soffset ; - - MOV DX, GC_INDEX ; turn off cpu bits - MOV AX, 0008h ; - OUT DX, AX - - MOV AX, SC_INDEX ; point to the mask register - MOV DX, AX ; - MOV AL, MAP_MASK ; - OUT DX, AL ; - INC DX ; - - ROW_START: - PUSH DS - MOV AX, ES - MOV DS, AX - MOV CX, scans ; the number of latches - - MOV AL, left ; do the left column - OUT DX, AL ; - MOVSB ; - DEC CX ; - - MOV AL, 0fh ; do the inner columns - OUT DX, AL - REP MOVSB ; copy the pixels - - MOV AL, right ; do the right column - OUT DX, AL - MOVSB - POP DS - - MOV AX, SI ; go the start of the next row - ADD AX, nextSrcRow ; - MOV SI, AX ; - MOV AX, DI ; - ADD AX, nextDestRow ; - MOV DI, AX ; - - DEC height ; do the rest of the actions - JNZ ROW_START ; - - MOV DX, GC_INDEX+1 ; go back to CPU data - MOV AL, 0ffh ; none from latches - OUT DX, AL ; - } -} - - -/* fade and flash */ -void -modexFadeOn(word fade, byte *palette) { - fadePalette(-fade, 64, 64/fade+1, palette); -} - - -void -modexFadeOff(word fade, byte *palette) { - fadePalette(fade, 0, 64/fade+1, palette); -} - - -void -modexFlashOn(word fade, byte *palette) { - fadePalette(fade, -64, 64/fade+1, palette); -} - - -void -modexFlashOff(word fade, byte *palette) { - fadePalette(-fade, 0, 64/fade+1, palette); -} - - -static void -fadePalette(sbyte fade, sbyte start, word iter, byte *palette) { - word i; - byte dim = start; - - /* handle the case where we just update */ - if(iter == 0) { - modexPalUpdate(palette); - return; - } - - while(iter > 0) { /* FadeLoop */ - for(i=0; i 127) { - tmppal[i] = 0; - } else if(tmppal[i] > 63) { - tmppal[i] = 63; - } - } - modexPalUpdate(tmppal); - iter--; - dim += fade; - } -} - - -/* save and load */ -void -modexPalSave(byte *palette) { - int i; - - outp(PAL_READ_REG, 0); /* start at palette entry 0 */ - for(i=0; i -#include "types.h" -#include "bitmap.h" - -/* -========================== Types & Macros ==========================- */ -#define PAGE_OFFSET(x,y) (((y)<<6)+((y)<<4)+((x)>>2)) -#define PLANE(x) (1<< (x&3)) -#define SELECT_ALL_PLANES() outpw(0x03c4, 0xff02) - -typedef struct { - byte far* data; /* the data for the page */ - word dx; /* col we are viewing on the virtual screen */ - word dy; /* row we are viewing on the virtual screen */ - word width; /* virtual width of the page */ - word height; /* virtual height of the page */ -} page_t; - -/* -============================ Functions =============================- */ -/* mode switching, page, and plane functions */ -void modexEnter(); -void modexLeave(); -page_t modexDefaultPage(); -page_t modexNextPage(page_t *p); -void modexShowPage(page_t *page); -void modexPanPage(page_t *page, int dx, int dy); -void modexSelectPlane(byte plane); -void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color); -void modexDrawBmp(page_t *page, int x, int y, bitmap_t *bmp); -void modexDrawBmpRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); -void modexDrawSprite(page_t *page, int x, int y, bitmap_t *bmp); -void modexDrawSpriteRegion(page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp); - -/* Palette fade and flash effects */ -void modexFadeOn(word fade, byte *palette); -void modexFadeOff(word fade, byte *palette); -void modexFlashOn(word fade, byte *palette); -void modexFlashOff(word fade, byte *palette); - -/* palette loading and saving */ -void modexPalSave(byte *palette); -byte *modexNewPal(); -void modexLoadPalFile(char *filename, byte **palette); -void modexSavePalFile(char *filename, byte *palette); - -/* fixed palette functions */ -void modexPalBlack(); -void modexPalWhite(); - -/* utility functions */ -void modexPalUpdate(byte *p); -void modexWaitBorder(); - -/* -======================= Constants & Vars ==========================- */ -extern byte far* VGA; /* The VGA Memory */ -#define SCREEN_SEG 0xa000 -#define VIDEO_INT 0x10 -#define SET_MODE 0x00 -#define VGA_256_COLOR_MODE 0x13 -#define TEXT_MODE 0x03 -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 240 -#define PAGE_SIZE (word)(SCREEN_WIDTH/4 * SCREEN_HEIGHT) - -#define AC_INDEX 0x03c0 -#define SC_INDEX 0x03c4 -#define SC_DATA 0x03c5 -#define CRTC_INDEX 0x03d4 -#define CRTC_DATA 0x03d5 -#define GC_INDEX 0x03ce -#define MISC_OUTPUT 0x03c2 -#define HIGH_ADDRESS 0x0C -#define LOW_ADDRESS 0x0D -#define VRETRACE 0x08 -#define INPUT_STATUS_1 0x03da -#define DISPLAY_ENABLE 0x01 -#define MAP_MASK 0x02 -#define PAL_READ_REG 0x03C7 /* Color register, read address */ -#define PAL_WRITE_REG 0x03C8 /* Color register, write address */ -#define PAL_DATA_REG 0x03C9 /* Color register, data port */ -#define PAL_SIZE (256 * 3) -#endif diff --git a/16/modex16/pcxtest.c b/16/modex16/pcxtest.c deleted file mode 100644 index 7373e885..00000000 --- a/16/modex16/pcxtest.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include "modex16.h" -#include "bitmap.h" - -word far* clock= (word far*) 0x046C; /* 18.2hz clock */ - -void -oldDrawBmp(byte far* page, int x, int y, bitmap_t *bmp, byte sprite) { - byte plane; - word px, py; - word offset; - - /* TODO Make this fast. It's SLOOOOOOW */ - for(plane=0; plane < 4; plane++) { - modexSelectPlane(PLANE(plane+x)); - for(px = plane; px < bmp->width; px+=4) { - offset=px; - for(py=0; pyheight; py++) { - if(!sprite || bmp->data[offset]) - page[PAGE_OFFSET(x+px, y+py)] = bmp->data[offset]; - offset+=bmp->width; - } - } - } -} - -void main() { - bitmap_t bmp; - int i; - page_t page; - word start; - float t1, t2; - - page=modexDefaultPage(); - - bmp = bitmapLoadPcx("46113319.pcx"); - modexEnter(); - - /* fix up the palette and everything */ - modexPalUpdate(bmp.palette); - - /* clear and draw one sprite and one bitmap */ - modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1); - - /* non sprite comparison */ - start = *clock; - for(i=0; i<100 ;i++) { - oldDrawBmp(VGA, 20, 20, &bmp, 0); - } - - start = *clock; - for(i=0; i<100 ;i++) { - modexDrawBmp(&page, 20, 20, &bmp); - } - t1 = (*clock-start) /18.2; - - start = *clock; - for(i=0; i<100; i++) { - modexCopyPageRegion(&page, &page, 20, 20, 128, 20, 64, 64); - } - t2 = (*clock-start)/18.2; - - - start = *clock; - for(i=0; i<100 ;i++) { - oldDrawBmp(VGA, 20, 20, &bmp, 1); - } - - - start = *clock; - for(i=0; i<100 ;i++) { - modexDrawSprite(&page, 20, 20, &bmp); - } - modexLeave(); - - printf("CPU to VGA: %f\n", t1); - printf("VGA to VGA: %f\n", t2); - return; -} diff --git a/16/modex16/pcxtest.exe b/16/modex16/pcxtest.exe deleted file mode 100644 index de765ece05216f2d419837866388d044bac54429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36196 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 SV-K$&a@|Mnj(5FAQU47faU*~L diff --git a/16/modex16/ptmp.png b/16/modex16/ptmp.png deleted file mode 100644 index e3e46aa83d1a9d2adf7a8a1132cf72db371e1a49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2715 zcmV;M3S{+(P)hwaM; zwh9ne=$C5Zu>)HRi0h2QNYDR5f{eg83bq^&DZs}2;XQ8Tq!I~|f$?~N2AWVz1V&Nm z#HXdIJa%9h64B(&OfIEGh8LGXH69fvI+7s!ROBJ~KqV&XYl@%_of>}bu`lJ?;qd~C z1L501^P__OMK11N8Q+Q%-ifLyL3UsZpz&=L$V@ZtEMo&TYA0E7c9}YL9u}2I(2xc) zj}^b2>SR;C`59P>N?Z<+1Q|yx0aUusiAi8_DcYU}`-7CfS1v(c4a>)e;lssnF{lT; z4$s%aHMZx&k9r??{PF4s+8G`og^lY#ci4D7Tap$$rqsbj>t77*!(aS;BQ z&}rf^#)|xtF%3jI;uD$vr2qCLh@(~lyLtEe@0*`K{`!3<5a`@}yagRGM4;TmzhDR0 ztusNO1Hf9xI2BH&M$br4Oj3H@P(7s|csNpkXQ%_QV^syB9mIu!QPF>=Vfb_Nd677tAPO?VGdMsL5(hfY z3$adYdi4()Utq>#E@*cnB$&AY+MJ z+Xx&8h5V?@z^0SP)z#JI<s_NyS~iG!VA^EQR+pw0|JkaRrg1IFEg`>}Rbs5Vp~>Y(CxI1`Q;Ups9t&4s4vi zUC{}oEfO3qwCacip_I?#eGzkHUmi&V(YymU(sMkXAet^V2gcVWdw{qU3AScOBxsz! z+3E9mBO@V~0NTz22<)Ca?B>C*^3((4Q-efQIv+)h*UN%Y zK`&H;XA)`65gjWC38>KEY`(@&1ualM=V=1sa{`hQtyKqmL4vqoG%zic1`?MjZ;@GM zCy#CXm9*kOT1vE>h@N7Wq#BGrXbJPBC#vnqSaGtGx!nt<9!u$B`N(x|P0f=j@z~l^ zVBJlO&A)tLs{n~he-$ZTq!QRFKzuyiFBKH2-0u5<_%NDRIN_rF`4Uta-Q((X8i?MW z8&TX|=u8mmGz2Dqa8;Rre!sd3hD3e2pTO;fV2&Pm=I%nX9@r{CyX8{5FiN;P6*;jv z&rX;@Wgb}q;sKFYRt6fGp*kvaRjkGHH4NuKEqIpINYFN?DkZHma3DURj1^+2I*DV8}AEuVn;>9rUJ639{D}`Kql33Z|KE%Gm4E z?JY>{nAg!HRpKe>6if2^fi|p)2p6UKj}F8ay8Q%|a_!ZRbpml6KCJ1{iSrce$2x&F ztUQWi@k}>KIXtG0T|WlTCXgefbJ+KInKdvVo zb3&ES$tB1uj7!sSsnUEgsFO}msFX1gm8r&CLZOtM=m#`5?c5}yLLDrL!ty9A-OAOE z>6R(8qWZC19h;C^v3@KF=8e-a$N$axv1+;Ala2J)+EZXFwVoU7Spw_4>5~W_9JtOdHXid#NYyACw+`!tVJsAo8u+j-fv6KFes8yqbkH0(s#RJC#tb5!DK2rLK` zx3*9U8h7!ItdgrUK~&Qi3QPm-m&SHHFg*Tnm1D0xD=IsL4_YZfs6$ktz%)>T1{=CQ zRJ29Laa_UV;U$iGXHQ)KO(~$wTo1)38t4tQ1}1n8bA;y3UVSwJZI)jfX$3;>XI%c= zZ(=5<6SSG#z~;cXS)2yiv63hnyzXMZMdl}n*xCZ)Kz!PhIEA#wl@QSh@};~BhO*KV zl}Pqjw!@neL{z1nD_@;ON0bhF0%)@=8yneoy;`NjtT`DNrWp-I_|&KHT7hU;;r+6Z ztW|1U`eQg2i57TkAT(6bN~XZ#=Omv3bHP@ft+M}wR5UORlnYGEqlC^_Fe6vtseIX) zV~JOSndVYjwn@Z^DjJvrghEXgj42ZDzAaQ*@ld0uqJz~_1GY*LS};3Lro>}w{{U}j VzKOagY+C>T002ovPDHLkV1ix0=-vPT diff --git a/16/modex16/scroll.c b/16/modex16/scroll.c deleted file mode 100644 index 65ea0279..00000000 --- a/16/modex16/scroll.c +++ /dev/null @@ -1,508 +0,0 @@ -#include "modex16.h" -#include -#include -#include "dos_kb.h" - -//word far *clock= (word far*) 0x046C; /* 18.2hz clock */ - -typedef struct { - bitmap_t *data; - word tileHeight; - word tileWidth; - unsigned int rows; - unsigned int cols; - //unsigned int tilex,tiley; // tile position on the map -} tiles_t; - - -typedef struct { - byte *data; - tiles_t *tiles; - int width; - int height; -} map_t; - - -typedef struct { - map_t *map; - page_t *page; - int tx; //appears to be the top left tile position on the viewable screen map - int ty; //appears to be the top left tile position on the viewable screen map - word dxThresh; //???? - word dyThresh; //???? -} map_view_t; - -struct { - int x; //player exact position on the viewable map - int y; //player exact position on the viewable map - int tx; //player tile position on the viewable map - int ty; //player tile position on the viewable map - int hp; //hitpoints of the player -} player; - - -map_t allocMap(int w, int h); -void initMap(map_t *map); -void mapScrollRight(map_view_t *mv, byte offset); -void mapScrollLeft(map_view_t *mv, byte offest); -void mapScrollUp(map_view_t *mv, byte offset); -void mapScrollDown(map_view_t *mv, byte offset); -void mapGoTo(map_view_t *mv, int tx, int ty); -void mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y); -void mapDrawRow(map_view_t *mv, int tx, int ty, word y); -void mapDrawCol(map_view_t *mv, int tx, int ty, word x); -void animatePlayer(map_view_t *mv, short d1, short d2, int x, int y, int ls, bitmap_t *bmp); - -#define TILEWH 16 -#define QUADWH (TILEWH/4) -#define SPEED 2 - -//place holder definitions -#define MAPX 40 -#define MAPY 30 -#define SWAP(a, b) tmp=a; a=b; b=tmp; -void main() { - bitmap_t ptmp; // player sprite - int q=0; - page_t screen, screen2; - map_t map; - map_view_t mv, mv2; - map_view_t *draw, *spri, *tmp; - byte *ptr; - - setkb(1); - /* create the map */ - map = allocMap(MAPX,MAPY); //20x15 is the resolution of the screen you can make maps smaller than 20x15 but the null space needs to be drawn properly - initMap(&map); - mv.map = ↦ - mv2.map = ↦ - - /* draw the tiles */ - ptr = map.data; - ptmp = bitmapLoadPcx("ptmp.pcx"); // load sprite - modexEnter(); - modexPalUpdate(ptmp.palette); - screen = modexDefaultPage(); - screen.width += (TILEWH*2); - mv.page = &screen; - screen2=modexNextPage(mv.page); - mv2.page = &screen2; - modexShowPage(mv.page); - - /* set up paging */ - draw = &mv; - spri = &mv2; -// draw = &mv; - -//TODO: LOAD map data and position the map in the middle of the screen if smaller then screen - mapGoTo(draw, 0, 0); - mapGoTo(spri, 0, 0); - - //TODO: put player in starting position of spot - //default player position on the viewable map - player.tx = draw->tx + 10; - player.ty = draw->ty + 8; - player.x = player.tx*TILEWH; - player.y = player.ty*TILEWH; - modexDrawSpriteRegion(draw->page, player.x-4, player.y-TILEWH, 24, 64, 24, 32, &ptmp); - - modexShowPage(draw->page); - while(!keyp(1)) - { - //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square - //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction - //when player.tx or player.ty == 0 or player.tx == 20 or player.ty == 15 then stop because that is edge of map and you do not want to walk of the map - - //TODO: render the player properly with animation and sprite sheet - if(keyp(77)) - { - modexDrawSpriteRegion(draw->page, player.x-4, player.y-TILEWH, 24, 32, 24, 32, &ptmp); - if(draw->tx >= 0 && draw->tx+20 < MAPX && player.tx == draw->tx + 10) - { - for(q=0; q<(TILEWH/SPEED); q++) - { -// modexDrawBmp(draw->page, &bmp); - animatePlayer(draw, 1, 1, player.x, player.y, q, &ptmp); - mapScrollRight(draw, SPEED); - modexShowPage(draw->page); -// mapScrollRight(show, SPEED); -// SWAP(draw, show); - } - player.tx++; - } - else if(player.tx < MAPX) - { - for(q=0; q<(TILEWH/SPEED); q++) - { - player.x+=SPEED; -// modexDrawBmp(draw->page, player.x, player.y, &bmp); - animatePlayer(draw, 1, 0, player.x, player.y, q, &ptmp); - modexShowPage(draw->page); -// SWAP(draw, show); - } - player.tx++; - } - } - - if(keyp(75)) - { - modexDrawSpriteRegion(draw->page, player.x-4, player.y-TILEWH, 24, 96, 24, 32, &ptmp); - if(draw->tx > 0 && draw->tx+20 <= MAPX && player.tx == draw->tx + 10) - { - for(q=0; q<(TILEWH/SPEED); q++) - { -// modexDrawBmp(draw->page, player.x-((q+1)*SPEED), player.y, &bmp); - animatePlayer(draw, 3, 1, player.x, player.y, q, &ptmp); - mapScrollLeft(draw, SPEED); - modexShowPage(draw->page); -// mapScrollLeft(show, SPEED); -// SWAP(draw, show); - } - player.tx--; - } - else if(player.tx > 1) - { - for(q=0; q<(TILEWH/SPEED); q++) - { - player.x-=SPEED; -// modexDrawBmp(draw->page, player.x, player.y, &bmp); - animatePlayer(draw, 3, 0, player.x, player.y, q, &ptmp); - modexShowPage(draw->page); -// SWAP(draw, show); - } - player.tx--; - } - } - - if(keyp(80)) - { - modexDrawSpriteRegion(draw->page, player.x-4, player.y-TILEWH, 24, 64, 24, 32, &ptmp); - if(draw->ty >= 0 && draw->ty+15 < MAPY && player.ty == draw->ty + 8) - { - for(q=0; q<(TILEWH/SPEED); q++) - { -// modexDrawBmp(draw->page, player.x, player.y+((q+1)*SPEED), &bmp); - animatePlayer(draw, 2, 1, player.x, player.y, q, &ptmp); - mapScrollDown(draw, SPEED); - modexShowPage(draw->page); -// mapScrollDown(show, SPEED); -// SWAP(draw, show); - } - player.ty++; - } - else if(player.ty < MAPY) - { - for(q=0; q<(TILEWH/SPEED); q++) - { - player.y+=SPEED; -// modexDrawBmp(draw->page, player.x, player.y, &bmp); - animatePlayer(draw, 2, 0, player.x, player.y, q, &ptmp); - modexShowPage(draw->page); -// SWAP(draw, show); - } - player.ty++; - } - } - - if(keyp(72)) - { - modexDrawSpriteRegion(draw->page, player.x-4, player.y-TILEWH, 24, 0, 24, 32, &ptmp); - if(draw->ty > 0 && draw->ty+15 <= MAPY && player.ty == draw->ty + 8) - { - for(q=0; q<(TILEWH/SPEED); q++) - { -// modexDrawBmp(draw->page, player.x, player.y-((q+1)*SPEED), &bmp); - animatePlayer(draw, 0, 1, player.x, player.y, q, &ptmp); - mapScrollUp(draw, SPEED); - modexShowPage(draw->page); -// mapScrollUp(show, SPEED); -// SWAP(draw, show); - } - player.ty--; - } - else if(player.ty > 1) - { - for(q=0; q<(TILEWH/SPEED); q++) - { - player.y-=SPEED; -// modexDrawBmp(draw->page, player.x, player.y, &bmp); - animatePlayer(draw, 0, 0, player.x, player.y, q, &ptmp); - modexShowPage(draw->page); -// SWAP(draw, show); - } - player.ty--; - } - } - } - - modexLeave(); - setkb(0); - printf("Project 16 scroll.exe\n"); - printf("tx: %d\n", draw->tx); - printf("ty: %d\n", draw->ty); - printf("player.x: %d\n", player.x); - printf("player.y: %d\n", player.y); - printf("player.tx: %d\n", player.tx); - printf("player.ty: %d\n", player.ty); -} - - -map_t -allocMap(int w, int h) { - map_t result; - - result.width =w; - result.height=h; - result.data = malloc(sizeof(byte) * w * h); - - return result; -} - - -void -initMap(map_t *map) { - /* just a place holder to fill out an alternating pattern */ - int x, y; - int i; - int tile = 1; - map->tiles = malloc(sizeof(tiles_t)); - - /* create the tile set */ - map->tiles->data = malloc(sizeof(bitmap_t)); - map->tiles->data->width = (TILEWH*2); - map->tiles->data->height= TILEWH; - map->tiles->data->data = malloc((TILEWH*2)*TILEWH); - map->tiles->tileHeight = TILEWH; - map->tiles->tileWidth =TILEWH; - map->tiles->rows = 1; - map->tiles->cols = 2; - - i=0; - for(y=0; ytiles->data->data[i] = 0x24; - else - map->tiles->data->data[i] = 0x34; - i++; - } - } - - i=0; - for(y=0; yheight; y++) { - for(x=0; xwidth; x++) { - map->data[i] = tile; - tile = tile ? 0 : 1; - i++; - } - tile = tile ? 0 : 1; - } -} - - -void -mapScrollRight(map_view_t *mv, byte offset) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dx += offset; - - /* check to see if this changes the tile */ - if(mv->page->dx >= mv->dxThresh ) { - /* go forward one tile */ - mv->tx++; - /* Snap the origin forward */ - mv->page->data += 4; - mv->page->dx = mv->map->tiles->tileWidth; - - - /* draw the next column */ - x= SCREEN_WIDTH + mv->map->tiles->tileWidth; - mapDrawCol(mv, mv->tx + 20 , mv->ty-1, x); - } -} - - -void -mapScrollLeft(map_view_t *mv, byte offset) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dx -= offset; - - /* check to see if this changes the tile */ - if(mv->page->dx == 0) { - /* go backward one tile */ - mv->tx--; - - /* Snap the origin backward */ - mv->page->data -= 4; - mv->page->dx = mv->map->tiles->tileWidth; - - /* draw the next column */ - mapDrawCol(mv, mv->tx-1, mv->ty-1, 0); - } -} - - -void -mapScrollUp(map_view_t *mv, byte offset) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dy -= offset; - - /* check to see if this changes the tile */ - if(mv->page->dy == 0 ) { - /* go down one tile */ - mv->ty--; - /* Snap the origin downward */ - mv->page->data -= mv->page->width*4; - mv->page->dy = mv->map->tiles->tileHeight; - - - /* draw the next row */ - y= 0; - mapDrawRow(mv, mv->tx-1 , mv->ty-1, y); - } -} - - -void -mapScrollDown(map_view_t *mv, byte offset) { - word x, y; /* coordinate for drawing */ - - /* increment the pixel position and update the page */ - mv->page->dy += offset; - - /* check to see if this changes the tile */ - if(mv->page->dy >= mv->dyThresh ) { - /* go down one tile */ - mv->ty++; - /* Snap the origin downward */ - mv->page->data += mv->page->width*4; - mv->page->dy = mv->map->tiles->tileHeight; - - - /* draw the next row */ - y= SCREEN_HEIGHT + mv->map->tiles->tileHeight; - mapDrawRow(mv, mv->tx-1 , mv->ty+15, y); - } - -} - - -void -mapGoTo(map_view_t *mv, int tx, int ty) { - int px, py; - unsigned int i; - - /* set up the coordinates */ - mv->tx = tx; - mv->ty = ty; - mv->page->dx = mv->map->tiles->tileWidth; - mv->page->dy = mv->map->tiles->tileHeight; - - /* set up the thresholds */ - mv->dxThresh = mv->map->tiles->tileWidth * 2; - mv->dyThresh = mv->map->tiles->tileHeight * 2; - - /* draw the tiles */ - modexClearRegion(mv->page, 0, 0, mv->page->width, mv->page->height, 0); - py=0; - i=mv->ty * mv->map->width + mv->tx; - for(ty=mv->ty-1; py < SCREEN_HEIGHT+mv->dyThresh && ty < mv->map->height; ty++, py+=mv->map->tiles->tileHeight) { - mapDrawRow(mv, tx-1, ty, py); - i+=mv->map->width - tx; - } -} - - -void -mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) { - word rx; - word ry; - rx = (i % t->cols) * t->tileWidth; - ry = (i / t->cols) * t->tileHeight; - modexDrawBmpRegion(page, x, y, rx, ry, t->tileWidth, t->tileHeight, t->data); -} - - -void -mapDrawRow(map_view_t *mv, int tx, int ty, word y) { - word x; - int i; - - /* the position within the map array */ - i=ty * mv->map->width + tx; - for(x=0; xdxThresh && tx < mv->map->width; x+=mv->map->tiles->tileWidth, tx++) { - if(i>=0) { - /* we are in the map, so copy! */ - mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y); - } - i++; /* next! */ - } -} - - -void -mapDrawCol(map_view_t *mv, int tx, int ty, word x) { - int y; - int i; - - /* location in the map array */ - i=ty * mv->map->width + tx; - - /* We'll copy all of the columns in the screen, - i + 1 row above and one below */ - for(y=0; ydyThresh && ty < mv->map->height; y+=mv->map->tiles->tileHeight, ty++) { - if(i>=0) { - /* we are in the map, so copy away! */ - mapDrawTile(mv->map->tiles, mv->map->data[i], mv->page, x, y); - } - i += mv->map->width; - } -} - -void animatePlayer(map_view_t *mv, short d1, short d2, int x, int y, int ls, bitmap_t *bmp) -{ - int qq; - - if(d2==0) qq = 0; - else qq = ((ls+1)*SPEED); - switch (d1) - { - case 0: - //up - //if(ls==0) modexClearPlayer(mv->page, x-4, y-qq-TILEWH, 24, 32); - if(ls<1) { modexClearPlayer(mv->page, x-4, y-qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 24, 0, 24, 32, bmp); } - if(4>ls && ls>=1) { modexClearPlayer(mv->page, x-4, y-qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 48, 0, 24, 32, bmp); } - if(7>ls && ls>=4) { modexClearPlayer(mv->page, x-4, y-qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 0, 0, 24, 32, bmp); } - if(ls>=7) { modexClearPlayer(mv->page, x-4, y-qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y-qq-TILEWH, 24, 0, 24, 32, bmp); } - break; - case 1: - // right - //if(ls==0) modexClearPlayer(mv->page, x+qq-4, y-TILEWH, 24, 32); - if(ls<1) { modexClearPlayer(mv->page, x+qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 24, 32, 24, 32, bmp); } - if(4>ls && ls>=1) { modexClearPlayer(mv->page, x+qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 48, 32, 24, 32, bmp); } - if(7>ls && ls>=4) { modexClearPlayer(mv->page, x+qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 0, 32, 24, 32, bmp); } - if(ls>=7) { modexClearPlayer(mv->page, x+qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x+qq-4, y-TILEWH, 24, 32, 24, 32, bmp); } - break; - case 2: - //down - //if(ls==0) modexClearPlayer(mv->page, x-4, y+qq-TILEWH, 24, 32); - if(ls<1) { modexClearPlayer(mv->page, x-4, y+qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 24, 64, 24, 32, bmp); } - if(4>ls && ls>=1) { modexClearPlayer(mv->page, x-4, y+qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 48, 64, 24, 32, bmp); } - if(7>ls && ls>=4) { modexClearPlayer(mv->page, x-4, y+qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 0, 64, 24, 32, bmp); } - if(ls>=7) { modexClearPlayer(mv->page, x-4, y+qq-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-4, y+qq-TILEWH, 24, 64, 24, 32, bmp); } - break; - case 3: - //left - //if(ls==0) modexClearPlayer(mv->page, x-qq-4, y-TILEWH, 24, 32); - if(ls<1) { modexClearPlayer(mv->page, x-qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 24, 96, 24, 32, bmp); } - if(4>ls && ls>=1) { modexClearPlayer(mv->page, x-qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 48, 96, 24, 32, bmp); } - if(7>ls && ls>=4) { modexClearPlayer(mv->page, x-qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 0, 96, 24, 32, bmp); } - if(ls>=7) { modexClearPlayer(mv->page, x-qq-4, y-TILEWH, 24, 32); modexDrawSpriteRegion(mv->page, x-qq-4, y-TILEWH, 24, 96, 24, 32, bmp); } - break; - } -} diff --git a/16/modex16/scroll.exe b/16/modex16/scroll.exe deleted file mode 100755 index 6bf9ba9fd85f584bba6a5abed8e1aa711c547a48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21064 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 DkRc&= diff --git a/16/modex16/test.exe b/16/modex16/test.exe deleted file mode 100644 index 99404b1a3666201b98a9dba2cbe162f0e6a6d49f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17260 zcmdsfdwf*I-S@feC1G;`Vh}`F6jLLYCW>H8fCyn%`d|nk0TqLYc&P|BIVY)oLRh+@ znH-WMXu`$OB(xAgxhrQm5krETkSu%N@0?9gTc7uR|9#)^ z*>mR1%$b?r?>E2u9B#XFwRn}_6ck~fU|H)F!7T_a9zpO5@xPTxg777NtC9ubUHm@A z&yzCHh}#F|#h>HvQblN@U~Kd(TClKq$zt+ZuwzuSFD3}J#j(&;g7L1~(A}hwG#g9Y zAyF`Nmyw%bB#Fk23AN>2#%{6J*Hv5oxuHlwU!OPVi+XE)pBwX~P(UaObqYn>^2P0` z0y%_k#!xwQ9co)p>lL?q2WtD{eYc=i5VvOy)P5%MH(ZjAWnkJ)XZB&!IXl?zSm(=b zvwRWW8Wv{-`@EIsP*G@Cw0~XU>*YO~zpf~>EB-oAVQw85c)Qbh*lm0z7^~c*kI(dk zlXTp@yyVV1?xIDZbisId$kIg%ZM-Bm`MQN_fLqd4Tig{&6^z@G(f7`~XedK4W)Jxq zgO_i9LL|QE=4xDHo7(FdYO9PLHR3Cm{p0LL+{DPRmt^&$O|Kr>rV=y zM%fsJ8kyI)lIw>Gp?}DRJGp+n5c;QVSV`H3bM}>`k|V93>kAFub|PuE*-oxjCWd4oJlqPU3C8-wh4C%mAzd~I z=WP%o*$u?kOMHFJzG%LP-O(vQyWABy{;j8`IF=RRxc-HQ_kGs$s#}fJ-ynnn#k=6S>`MOGMs`j5o=ypP3t9r)26^v-JW%dG=|=njhj5! zIYl9_V7T#G99@^=?c!c?l{*9+D{dOC2(%W-F_Vww- zonj*?KCc(psGi{Kx|R4Mn}3T9Xl(u+u4gv?9@mb|FXMVvFYgV0F4xQga-wocFF9gA zbpTZnU$3ktM5wGOO}uj{gE+H0POT4!tM>vPqF zn)WRzD0aWjYh!k;ydz>+b#6gxv-et~0=D-E##lG-bA;?$U{xqqg_ON-QT86vZAbz~ z))>LCT!V;6=ZNSd?Lb6T@&KqkC-gK9WUub)yMzh7xR=+R(UWwayJwXo?iSktr|!dU zI;;CUz*|jWU*NdBMQl3;aCP6=S7p@!PB*3O2EF(!-#%i?z!aGns!N|EP4Jy1zVpC< zVq+iMYJf$$uoZf(`VZxh zTlf;JuD5W08MCROu3fL|vuwtAc`g{G`(=9*y*yTLlCewlPQ6*?o2l2TOBS>b>pzmW zSZBjWFWS=MtOAKgC}|Dl3)yWw-K23=b$g`!*JOWvzF>~E`|SO$KIoC%X3Q3BEe0|4 z%Ky-*zQHov?O}r7)g#hwzFQPZgmzR0DIjqS9NlgS?*|h zauwYD0Bu#vrMWHnq=eogh zX1U0@?Sfn{3Z&O~!$Ue@V=Xu9Ijon<0Cn4HdAlfpjC|40$HHrRdDBJd>n4!qq>X$- z;j#g!^V}u_JH{9M#dX~z;M{r%XR*<64z?G z9Iv{e0a5xJN@^sIwEyIj6)%DOJxF$K4+sDtwAyJrleAfNPH;Zz%qMfC&E+VT@}d%$ zvDWEUFALQH_Q_7r0D%5x2uI{C&gGX-mJuJ+R^1X8?J+3C?N)RfV9!XwE5#s&aaByO zijg_az>G(n4sAl9-=k$@AC44&7*qKA*G)#xiHTXKT63_J|sp8p(bOHaDWvehMQ}?UKGk>u=?A3PT0z{kNCQDUq|aPdfIcHjbep+Q%kP%O;HtT@|~go_FxtxIeC$~V&%i$`Q@uh z?_a&PVq8+9AcX6L`H!wz<6W{sUAguV@9gi-o-iSMs&}EbX435sJ+jJM_E?#^>XFIb zqP3;!Lu=QRd1tSE^s&;19(YjoUb`~WyXdidSCp-q=$*S}x;`uG`pHR& z*Ijp=w{Y>idEOOeWe+{D=8;uvRPTMO)Kx3hRrg`u!nLY*)ta^10}py1S@p=;(#KG@ za_t&H7W%hE<+@$lMR$;<1WtBlkTH#7#-=fU7sZqDnz~l<32NUH$sulj@P8SB84aSK zP1lnpVN*lquAIH4LjZBepR{SOF(PSG1KHntGX77Kx5q5JUN4gUBF)(Rcd@P^lWzS1 z8@K6bUGvTjLd|W~yFzq}xBJan&8o**8Z-16SOS^x3D)5}BC7H&-7jC;@cI_v_4!+~ z*tm?}?+`PpGj@vPLY`du{kky|h0I9y7rK(<^-c$f33`Dv{ibP}I46)NyrK2ss-1Yl z=fnMFt&e<|L8cz#BcBlCt05=(tcU6v$>hBv!PMJC_s-RF=7lXn_v^tK9{|wHL&H;E z`as;2{Gs?#3vO-VOaH*_fSCP7XjsZi?I<4-Ll*oKk8y*i$R00RJ3|oa8n>kiAyMpp zYpI$=;CcZ;f8XFmPym4u(FPXwoBoffO|@`e3ww=KTy3nh&{}c_T?EE!A&0)aiLJel3TcL_n=t*1RgvM4h4J9*=ya!0Iv&O>lm{lvb#4{Qr|VPS5jRHEG;d~2fX&X1{@wA zkYbLV@rld-#?fLtIfP(MxxiEzI4O}6pdz^h01hngkojLP0Y_hOy*uFDHo?LZ1v?Ov zZNW*Zif%ltx^vTGk~Wl#s8RAt%aZa|Xd?rAerjfsndTQ2j=&z#ye6+gLqRe}hY|#1 zZ*q29+%xBjxMEDODk`Xj*=?L})!R0@0#XGeNDW5CMCPUY#5}IM4BNlK1QevP5Cj~o^;vVbO+6DFp^U_GpNIgYLo?8 zr}RRuQF{%Cg!@va4K2J4b0eN3klM)k0rT~7T<(0W>Kg`{3Zj+*CqLD9#W z$6*M`s+${>ov>#}CwLZH$OQp1qti+7KK4PFhauWL*%9;Tw-y;+;tLmT?sUO;Y!4S( zFl#qhe9>xWliw*61s-taXVXPBqp{R1iy$sQ_LDB-b^vC6h-G4x%aq`H1)C>Q;PR>- zT%D>jBzTRjDQE&2`w@R33gl&0L*Uf->B4yJ`d}sE026Ie88n47f^yohV5KBfT@M+{ zVK8>3m~ZN%t6k`X%@oG4ikb@Tr>8;Y8mXzIKr)%WEYUoxIRo>Ysb-Ts9Ex6ZJEWnp z!h&JufFX7lwdPBfOCMX~x3W$Fxv=%XmcdG=s1CtZ&)adxD^e1g zL43D56i5bwjkJCgn*Dr-7r5LiwzZXh)(L`fK@L{mX<6nu|c*DtAw*je2G2V}s^Mhhr(@Xk z5@-bT-Hu)vn+CSXVoqJL_`F!$msuQD6YxHU^QwOvEI91Bpj}as-Il-=ZC_8hZ5EeM z^BPXuJqg(joU|rvQe#&va`)3%y}q;f7?Kn{_8(DlHPh%uT3(!xC#?jXzIcfLWZdMqMh zqi%pY9}95DP{*mGPCZYp031YgPPYhY&BW6bP~zLj03wQ`nM)*lr~1(mIN+qc zhrbD#RiL0?b1Fmv$OpED9_SaOa!1x-ke+t~wz0z}dAL-#nUfq;FbEVg1Eo7W0Zu;xkn z6ul}^TOblgjl$h$&hn#z>j3@t|E)t>RwURrO1lccVI!r6@3A0!yZeCEzl3jxh%`>~ z^6v1hR`rP4AWP0Z?Wu6C#T{rKcJNEj4^vt-Vf%r6H-7Ow*moBfE}lWCAP16=8Wdv_ER!{%|SciEC8FW4t)kQCB$ znav|x<1%6p?NCkqz%WF!Y226;?6b6MII6v1d0Sdg<9cq`9o*Qab!^#(@yi4 zS&Tu;7NhzLPM~X&Y|~dF`=8_1uP-tI`_*@T^dKh?ij!Fpj`$c$!_SY&Tf>1g?f6Qb91k=*(u3TP$NGxwtNLcnWqm3 z4bBuap67wE8)JK+^<(?m!px$gswuiy;d82JLLJYmBk0d*?m! z_ClG&s&{Ybzeg@h56qM_N02(r&YS&WX@nf9@r&k{8)Em!>WJC`iF-|Mqta?pB(r(b zA*04J&yTfzw|7P~WdTXQ_zGr5Bt5kDj#hoY~SND8ThY*h&SE)Bj6(InWC zK`KEzLb~u-xzA+lIjY~CmfdE)n$uD)kw(bcoNn!R=tLGL@_yz4>$YUQLc-ACJW{Ec z?+ii$4-2aHC~2{w*abgF4p#`lvr$_(uY4zls+DCLVu{SM=q{q&=Sp$+!pVfpyPS9;AFu zd)ash&dm1K6FKeWMfzy5TX!M9B|~6w-gAwQiS!4WX^+7NzaGDn9A!sJKZ)P|iJKXY zm-m1j{lkJZ75+~(^ie(Ri9gxzrkPC~>N&~K3}hLw3iK+ZLJE(v7RAljEn>C>`*jFL zc9Ele&~v=kG6kN)baaNk&#SFW)kg=L(whrlEi@N&@k@kXdLip7qogtxG}B3CCjlI! zv)N@?%OL;>TvD?ElbJgg1!rs#1@&@$%ob5!K1_Fs?G8!Eb=HfTqPzIc<#rCt3WSJ* zjWURt(^%%nZs5jdqm|QAIv%(i5o{cjJEAn4n=Z*^E*)1+^bzoj4nQuWYi6T)2v9*Z z6a{A}vY@(xGwQ{d27QDb82+JE3!VQg7kHgOj*NgzE`DV^JOkbIhanvE{~%4%d#wtV zL(BJMQf#bRe=MiH;=lRIIsY71o!p|<@=z+&UA2`lu|20*n;rDU5GciN7F}{xtl434 z1H&T{D1=1I0*70EkKs9og@#M5obGZ5$Mo9+h{)+I+hU%DS{_{{hZpcSi9$Ldo$ri+ zrJ8gHW;Wjf+mjZ3gz;mi3_QH|qBz;B*;Q`xPuse`Wv?|8i3UrxQ zm9fjf+X;xZ*x6(VaVU$gnw>E?1^YnFMx)7rC654Q78%=7Y<49Hy!@73PPWT0p$y&D z>`LH|{H13c=AP-d2$k;XcM9uehgTTXq=?(|93$+T!rnlhSCf4vPc0%q69il}5Hnqg zz6fmTt%xU$Y=gvT+_-1Gqzxg>xlX4H29?E#uTNH|2SMnYU<}lyLvegR;_Fvn7~(ht z(AFcMkgty74p@Ko9v+3lP`d!)-i;0GLaZoR5E=#XH8 z&Ounbx7i^G7+ekoL_Pg_xu{o?yv)ooXA`=02A?=IL@<`dF4+~Nf1uh0CwlM!2HfN6<`KBRJ%g{A z&F0mE<&ABXM+fm9M>=X4X@f2fCdt#McERh$ZyFa)m{w2j;s(5%;Laz3J-(Zl z!D1`FAg$&}+j`)yLE)rrKP7JHk4j~C!wi>IUyvr7U+T*weTh?7Hk^?2U+Qv#EZdR= zax|-9$rxAldvHSj1SjP6zVBD)Qtuu+(Q<9sJX=oGVa7EqC@eg#1`R5Z_$ z7CS%)>Y95uH;K*8CIkR6i%7SMY+TkU+tD`u2p2C=(1zeuNzI3(dP0CTVBBNE1&2nr z9dXFIo8ip#)*=R4p>PKWE$9m8sDir;af8bWWEg}+-)9MKt9Hn znHk^imC_y5n4EUUAX_U4pH@YAfRuD^oyEpYC61|NvDDhux)-|%f!8QEB)Ph!M$d4* zUmML%P8x9Kz*f$VY-|IgCzIVsqP{$gbjE>KgdIrrsQu3a6xgh=^AZC&6GOuT%7S63nvg_IvMQ6ZUZf{zf4l zd4U}tvpwsBnXP6!BuWH(#-7;tuRilL-u3$7d^OK<9r5&_Qivz*$Wdec&{q*C+ai(f z>^6uq;CBGA862w@fbzJ6YXYu^=ky{vge`eXAEbZWz%d>lW}Xk7chXSA88=0Dk^T0@ zuyqX&kjUY+Fa_d48Xk6di0_PGB{q%&yYZQeI|Lhb1eaVm%wk(u8ucX$6Gg6IN>VAyLi!M3U@6=U>DeyFn2e9c>zy$)S#n!ch)KM zb8gp=gT}^GNPnj`Y~$hbWC-5Gzy|?H!cJrHPy+Cbz(s7RMGGK~?O5ZFE^_+JKsHE| zVMi}4`oMH9DV|#}XFgOmvT$_qn1w|MvVGioQrx$Jn%~>Br*4-qQCKtv+v@!i=Wl-I zA4XhczQUQkB9W~3{LJtEnLqhwFw^~rfhuF~rp`rmhY%pINY-8Ye1%JnibQ?AM_=o% z^QY>|rLp^%K$%FHL_hdBWeQ~u%AAzBD05SmKv^PXLn!l5mPA=HWhs=UQZ|&bVU!K0 zERC|uC`+eo1Z9^~Hj=VYlwCpDXv(gnYz$>%Df3b`j_*C_QZ|jUn@!vRf#dMcHi13MiXHnU69*Ww%l`m$DyF_8*kZqwF@y3MrdUSrKImC|gL`BFb*3 zY%yiUlr5obDP?z1b|+FWl&zzzin8^T z1t{A<*-t48Qua7y8!3B&vL`94ri@TlLzzz5Cdz6ltE22^l>MBtrzm@xvR_d4OUj<1 z>{paMOWCg}dycZ_Df=(VenZ&{l>L^n7b*K4Wt%DcJ!LOZ_A+I!Q1%DP{z%!Yl)XmT z>y-V8vNtIEGi7g5_7-JZD0`c-cPRS{Wm_qGm$JW7_BYBxlx?G|p0e$f{hhM^rfdgg zJ1J|RY!_vXlu^pwqwIaknkZ|gY&T_lDBDZfKFU6zj8XO>Wgk)2LRl+iZItb&>>rf< zld=Pp9i*(CvX3b{MA>1=KB4SW%8pQWl(J)#9jELBWhW^+McHSReNNeF$_&cFl%1i> zq^yIoFDN@p*_V`cQg)8AF3P$oJ5SkHltn1(p{$p(3zYRy)=ycKvWt|(D6=TLrc8d} z0(}9^8G|L*gqszaq$~2BREEa@Sxy>ro$raIxrDy0AVa&~gp(p~7g9I1$Fs6SHnmJ} zB7IBkTr1DCUeN%_GGsGSu<7-p?Y>{vKVWz|1oJG9=?5}gQtysaVj$Ti@c=aRVzaXg zISM;&&&A@cr!dGZyfovKowmD{>vV)e9q?A|1O`E5AELc!4vyVH!Z#(`Ne=UEo*8zF z@Zc|=HTNOP+iWW&LR(M1Et5n0PwYG;W**Ak!vnqIL0B&naqx1v1la_gny*1@B5KUf zw;T`OLb}Z(IsK)*8~U%4$~xdr8)Wx@F#$;ah&0CUt+2Oez&UsnIf23`&jL344#8vd zeX<*u6L8yn?J%bGlD@!9LA|SXz8IK!jha$3qSn`*1p~X!Dvp}RYfIX7e)0g3BUpm1 zB0pxo zF4cW*b_A+A%d`T%cx`mB$`Go?*CEQ*pD{41-+tFHkx7d3b>g6CuQ5gmR-F;5vc56W z8GEEfYP&tgvF{!uSk)m^rGH0Thj}Vkb@tn9J8O1uK%tATjM>2Sd>a_xG;UDAT(Cnc zhnoB&y+*!Bn&C8Jb2J5}U#DIj$jd6t3gqQfOsL0x#*y7Kq>+bUCuIp@qYpGNKP4Xx z`aC=u-cXt2YxcXLj`JpKb9qq^0(sY|6ZuFve55J%NbY|f$!&hxv)mb&FS*Sf-yG77 zA;0IVQEG1&^Byc4pEs{;L7uPl*7Do(=4!J7mEu$_FHk8>(WY_}gima?)mBOs$!K~| zn@3_8G1VNIr~TN2{1+GOG@AY>7r?HKh_iRON#a>DkbwEFr_&` zjV#R6X-AQ{F+&d3HD@>Ew1A?wBF^Q@;9Pq?-~8fhd+!Kb?St8Sf;g<2QP-S-h^cxR z;vE_AX3`SiaPi>AX>pf%5>8Isv>WI(GUwd-!JcPu1jg=p54!}ZlojJRTaBc+$T2W^lPbj6p^W{OueMw-m?JteUwWl~Q`U$7)5_{`n$_XPFECS`KAg}6ycGr(l>UYi!3(mW+P<+W+w z{?{^{rdfQ{V#7EAnC9oY}zBu{&cQs zdUby~@uv}3$o^E~PsVYYO;9}RFTYp2JAyd7x-jT)>sRW25GA7fqx_JszgM4+Q*50z z1(#2p-R$d16!LDYn27WbbmnC1kGEXU<<6BjilZ-y88KeF0ZZeHPart54y&RMm04Pb;yfF8iOS4nHS^uSTp(%2(5Z4uvleOT!lnSY`|w zD!u}L%-&Qyl~*8n)kOO#?6=G-@SKVbm1iMD!ZWS-NC&;b6D`w&1w4eNN-I1D$z@D1 z{NE-pM-PsV3{KQeAYu4>2Oe&@H3C+CzL>ScWxJik^9KU{Dvs!d7QHv*#hi`>yW6DQq>o+=3kpnbDwnG zpUgjl(|W*^V6*Teyn~`5)Bo*RCWII97VZH4Aoj0~-tbi3=vBXe3C^xKDtXEe+`S8w zG`{TL&O?eFu#;TVN==6v&Et#lV0ueLX)L z%A?j}NELEjeP%j3NO2@Cw*$A>bfly=Ply6wbf1aCtx~?$VIsXRiRx@zxybmbU`OpzZ6YKhq~r`%bqebEf5k!; zDzJ3YDAHNj*B}m#Q24r11jl|FPi0LoI9{kK00ER{5VFAJ;4q31d}j9CZ9mN zx(>P5h76#>^g%=p@kPxVj3)`^o4C1Q4Vr~kIX?)BJhqIvi#v;89T~65z`;_aS%C9* z6&vRqM&s!VzyWOQ0{6P<06w#Y6eQbAlf!?ALRW6Ufe0)HUvBWZGzX?PH(*m*x#)s?tzCw64QdnLWlSXt^jRzb4)=eTWcQ*SZi1_?soKIuZ7PV=!# zK-4)rfpn!_+yP$O4i|sj1&+4ewM!gLe&uFf^Y8_LP!tEDOa2;!k9xzs{TNgc%-7Hl zLy+BOYjc4IrZgvAsy$DQpKqaRSNNlT`?(ee2O&l}L>@>1{rk~c<2zf8{6P!>j*3_MrgtJ$(lH zew@`X0UcUTw;mS{{!92W9TSal%I3@QsWtdjS+X&+eRCAqTE3Wt;xY3~fL-p?sDMgFz1 z?li(eNIeAly`{=K4)e1>-|+Hd<|oy?h!GtRkChQq23nFLO_rKiJq>5qs+Wj3DTMGm zC^2YPjbBJUZt{I1)Ruor4&u-wEEJq}n1)Et{+cJ3iPdm4Vm`>7Q-w83wZs27;&Zz1 z(13weOb!J56CsltDqY4KIEhd~d)jBgWHHbEqUh;_236`g@f2=K56rElxaEK>%_s_CkC1;oP*+1fD0t zDyRISXUbDOQ=aXa0u-YWp~VZ~i2~fqG{jnW^RO3sAK}RjxRLwGUecSrC)+|DLil!F zqh8eq2eRa^H7_g^c^=UhtG*J@{uIGyIsBg%B+&&B=qn3x`|?-~j*mnwU$j~Q8anWi zkBtT#+#3KwvSENjl9;IB06^ts8b3h?rDc^TTIDfg7%*h+%eFEPlD?hLM<0<3{C1S| z^IJ3Nh4}^Kk*b)-;X0>+y4QsIfG;@ghHc)5Y7w{iyJwo+sRP<8ZIBr2kGT00f={GSXzoB9tHO z#e)kEh;c&xJk4`Fr4n%&-4evo-E;vGE~Irsv*60ywMD$e54nMK2R;s1umov92*Yin zxKnUtH8eZt$%1gH*_LJ8WSc!bW~no#U$iu*vDXT}DNK)A+IVB9RsW(8+F*Zh8x=yw z5ahM^fH+}`fnJuw8+k6n30@7a6UJoYo2{)Y`Dywx3AtpqVl>8d6Toau%X3_mSGmm1TKqgyyo7!xm@8B4T7IYBB1PR4S&%kII_ z07nB(L1gHj!0{L%zZeZab;aYhCUiQKG=^$KA%R*&p=iJh6QdopV7DJ za8A4SeV*7xSNoXgq@4ZbUj80((`K;WS@zrQIA8wUc1Z~TLI}Sggr5=2MHzaE_%Y6h z97IQ)k3NMK};`A&ZLtT2|FREG0feF*dv_GXaV6dcblM9}6ooW6*lIYUfBzYJ@B zGCEEdKg>+RSv-7>_RfSPoI)vmU%nA^xrxMIzHt5AV6@UzEAGQ+Sk!l{IR0^sJ?p&>sgJC9 z)O+6wb;V@i-#@_Nb6*0K1K}-GOSP4%R=TPTALsa1uU)|xJ?YW458+duGVRev@kNl0 z9<CO=+Q<6PyL6lwmo`U-T(S+AhUxW8-|G~QZzxzXu z^&5YZ@Xco&rvFBpj6~Dde-i$0i2qOjY!svd6KVKy9LV3o!*@aL=BP;!#UW0`;c!T@ mmFybtbc=X(B diff --git a/16/modex16/test.txt b/16/modex16/test.txt deleted file mode 100644 index 05adc9ec..00000000 --- a/16/modex16/test.txt +++ /dev/null @@ -1,258 +0,0 @@ -64 x 64 Pixels - -0 0 0 -20 0 0 -0 20 0 -20 20 0 -0 0 20 -20 0 20 -0 20 20 -30 30 30 -30 37 30 -29 32 3c -3f 3f 33 -3f 3f 26 -3f 3f 19 -3f 3f c -3f 33 3f -3f 33 33 -3f 33 26 -3f 33 19 -3f 33 c -3f 33 0 -3f 26 3f -3f 26 33 -3f 26 26 -3f 26 19 -3f 26 c -3f 26 0 -3f 19 3f -3f 19 33 -3f 19 26 -3f 19 19 -3f 19 c -3f 19 0 -3f c 3f -3f c 33 -3f c 26 -3f c 19 -3f c c -3f c 0 -3f 0 33 -3f 0 26 -3f 0 19 -3f 0 c -33 3f 3f -33 3f 33 -33 3f 26 -33 3f 19 -33 3f c -33 3f 0 -33 33 3f -33 33 33 -33 33 26 -33 33 19 -33 33 c -33 33 0 -33 26 3f -33 26 33 -33 26 26 -33 26 19 -33 26 c -33 26 0 -33 19 3f -33 19 33 -33 19 26 -33 19 19 -33 19 c -33 19 0 -33 c 3f -33 c 33 -33 c 26 -33 c 19 -33 c c -33 c 0 -33 0 3f -33 0 33 -33 0 26 -33 0 19 -33 0 c -33 0 0 -26 3f 3f -26 3f 33 -26 3f 26 -26 3f 19 -26 3f c -26 3f 0 -26 33 3f -26 33 33 -26 33 26 -26 33 19 -26 33 c -26 33 0 -26 26 3f -26 26 33 -26 26 26 -26 26 19 -26 26 c -26 26 0 -26 19 3f -26 19 33 -26 19 26 -26 19 19 -26 19 c -26 19 0 -26 c 3f -26 c 33 -26 c 26 -26 c 19 -26 c c -26 c 0 -26 0 3f -26 0 33 -26 0 26 -26 0 19 -26 0 c -26 0 0 -19 3f 3f -19 3f 33 -19 3f 26 -19 3f 19 -19 3f c -19 3f 0 -19 33 3f -19 33 33 -19 33 26 -19 33 19 -19 33 c -19 33 0 -19 26 3f -19 26 33 -19 26 26 -19 26 19 -19 26 c -19 26 0 -19 19 3f -19 19 33 -19 19 26 -19 19 19 -19 19 c -19 19 0 -19 c 3f -19 c 33 -19 c 26 -19 c 19 -19 c c -19 c 0 -19 0 3f -19 0 33 -19 0 26 -19 0 19 -19 0 c -19 0 0 -c 3f 3f -c 3f 33 -c 3f 26 -c 3f 19 -c 3f c -c 3f 0 -c 33 3f -c 33 33 -c 33 26 -c 33 19 -c 33 c -c 33 0 -c 26 3f -c 26 33 -c 26 26 -c 26 19 -c 26 c -c 26 0 -c 19 3f -c 19 33 -c 19 26 -c 19 19 -c 19 c -c 19 0 -c c 3f -c c 33 -c c 26 -c c 19 -c c c -c c 0 -c 0 3f -c 0 33 -c 0 26 -c 0 19 -c 0 c -c 0 0 -0 3f 33 -0 3f 26 -0 3f 19 -0 3f c -0 33 3f -0 33 33 -0 33 26 -0 33 19 -0 33 c -0 33 0 -0 26 3f -0 26 33 -0 26 26 -0 26 19 -0 26 c -0 26 0 -0 19 3f -0 19 33 -0 19 26 -0 19 19 -0 19 c -0 19 0 -0 c 3f -0 c 33 -0 c 26 -0 c 19 -0 c c -0 c 0 -0 0 33 -0 0 26 -0 0 19 -0 0 c -20 3f 3f -10 20 20 -20 3f 0 -10 10 0 -3f 3f 20 -3f 20 0 -3f 20 20 -20 10 0 -20 0 3f -20 0 10 -10 20 3f -0 10 20 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -3f 3e 3c -28 28 29 -20 20 20 -3f 0 0 -0 3f 0 -3f 3f 0 -0 0 3f -3f 0 3f -0 3f 3f -3f 3f 3f \ No newline at end of file diff --git a/16/modex16/test2.c b/16/modex16/test2.c deleted file mode 100644 index 9118279f..00000000 --- a/16/modex16/test2.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "modex16.h" - -word far* clock= (word far*) 0x046C; /* 18.2hz clock */ - -void main() { - int i; - word start; - page_t page; - - page=modexDefaultPage(); - - modexEnter(); - start = *clock; - for(i=0; i<500; i++) { - modexShowPage(&page); - } - modexLeave(); - -} diff --git a/16/modex16/test2.exe b/16/modex16/test2.exe deleted file mode 100644 index 2b870eff82dc4159ec20cecb40d7e0287b92bca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17028 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 -#include -#include "bitmap.h" -#include "modex16.h" - -static struct pcxHeader { - byte id; - byte version; - byte encoding; - byte bpp; - word xmin; - word ymin; - word xmax; - word ymax; - word hres; - word vres; - byte pal16[48]; - byte res1; - word bpplane; - word palType; - word hScreenSize; - word vScreenSize; - byte padding[54]; -} head; - - -static void loadPcxStage1(FILE *file, bitmap_t *result) { - long bufSize; - int index; - byte count, val; - long int pos; - - /* read the header */ - fread(&head, sizeof(char), sizeof(struct pcxHeader), file); - - /* get the width and height */ - result->width = head.xmax - head.xmin + 1; - result->height = head.ymax - head.ymin + 1; - - /* make sure this is 8bpp */ - if(head.bpp != 8) { - printf("I only know how to handle 8bpp pcx files!\n"); - fclose(file); - exit(-2); - } -} - - -static void loadPcxPalette(FILE *file, bitmap_t *result) { - byte val; - int index; - - /* handle the palette */ - fseek(file, -769, SEEK_END); - val = fgetc(file); - result->palette = modexNewPal(); - if(head.version == 5 && val == 12) { - /* use the vga palette */ - for(index=0; !feof(file) && index < PAL_SIZE; index++) { - val = fgetc(file); - result->palette[index] = val >> 2; - } - } else { - /* use the 16 color palette */ - for(index=0; index<48; index++) { - result->palette[index] = head.pal16[index]; - } - } -} - - -bitmap_t -bitmapLoadPcx(char *filename) { - FILE *file; - bitmap_t result; - long bufSize; - int index; - byte count, val; - - /* open the PCX file for reading */ - file = fopen(filename, "rb"); - if(!file) { - printf("Could not open %s for reading.\n", filename); - exit(-2); - } - - /* load the first part of the pcx file */ - loadPcxStage1(file, &result); - - /* allocate the buffer */ - bufSize = result.width * result.height; - result.data = malloc(bufSize); - if(!result.data) { - printf("Could not allocate memory for bitmap data."); - fclose(file); - exit(-1); - } - - /* read the buffer in */ - index = 0; - do { - /* get the run length and the value */ - count = fgetc(file); - if(0xC0 == (count & 0xC0)) { /* this is the run count */ - count &= 0x3f; - val = fgetc(file); - } else { - val = count; - count = 1; - } - - /* write the pixel the specified number of times */ - for(; count && index < bufSize; count--,index++) { - result.data[index] = val; - } - } while(index < bufSize); - - loadPcxPalette(file, &result); - - fclose(file); - - return result; -} - - -tileset_t -bitmapLoadPcxTiles(char *filename, word twidth, word theight) { - tileset_t ts; - FILE *file; - bitmap_t result; - int i; - - /* open the PCX file for reading */ - file = fopen(filename, "rb"); - if(!file) { - printf("Could not open %s for reading.\n", filename); - exit(-2); - } - - /* load the first part of the pcx file */ - loadPcxStage1(file, &result); - - /* get the number of tiles and set up the result structure */ - ts.twidth = twidth; - ts.theight = theight; - ts.ntiles = (result.width/twidth) * (result.height/theight); - ts.palette = result.palette; - - /* allocate the pixel storage for the tiles */ - ts.data = malloc(sizeof(byte*) * ts.ntiles); - ts.data[0] = malloc(sizeof(byte) * ts.ntiles * twidth * theight); - for(i=1; i < ts.ntiles; i++) { - ts.data[i] = ts.data[i-1] + twidth * theight; - } - - /* finish off the file */ - loadPcxPalette(file, &result); - - fclose(file); - - return ts; -} diff --git a/Project 16.bfproject b/Project 16.bfproject index af705867..2db68fb4 100644 --- a/Project 16.bfproject +++ b/Project 16.bfproject @@ -1,20 +1,20 @@ c2e.convert_special: 0 e2c.convert_num: 0 openfiles: /dos/z/16/doc/project.txt:60:0:0: -openfiles: /dos/z/16/scroll.c:10823:10140:1: -openfiles: /dos/z/16/modex16.c:6838:6141:0: -openfiles: /dos/z/16/modex16.h:1057:344:0: -openfiles: /dos/z/16/pcxtest.c:753:655:0: -openfiles: /dos/z/16/dos_kb.c:3759:0:0: -openfiles: /dos/z/16/dos_kb.h:464:0:0: -openfiles: /dos/z/16/lib/lib_head.h:2536:0:0: -openfiles: /dos/z/16/makefile:181:0:0: -openfiles: /dos/z/keen-src/id_mm.c:1835:14248:0: -openfiles: /dos/z/keen-src/id_mm.h:0:1024:0: -openfiles: /dos/z/keen-src/id_rf.c:46629:47657:0: -openfiles: /dos/z/keen-src/id_rf.h:0:0:0: -openfiles: /dos/z/keen-src/id_rf_a.asm:3987:3375:0: -openfiles: /dos/z/16/types.h:154:0:0: +openfiles: /dos/z/16/src/scroll.c:2536:1770:0: +openfiles: /dos/z/16/src/lib/modex16.c:136:0:0: +openfiles: /dos/z/16/src/lib/modex16.h:1931:1068:0: +openfiles: /dos/z/16/src/pcxtest.c:785:655:0: +openfiles: /dos/z/16/src/lib/dos_kb.c:107:0:0: +openfiles: /dos/z/16/src/lib/dos_kb.h:62:0:0: +openfiles: /dos/z/16/src/lib/lib_head.h:165:0:0: +openfiles: /dos/z/16/src/palettec.c:176:0:1: +openfiles: /dos/z/16/src/test.c:18:0:0: +openfiles: /dos/z/16/src/test2.c:18:0:0: +openfiles: /dos/z/16/src/lib/bitmap.c:59:0:0: +openfiles: /dos/z/16/src/lib/bitmap.h:125:0:0: +openfiles: /dos/z/16/src/lib/lib_head.cpp:0:0:0: +openfiles: /dos/z/16/src/lib/types.h:0:0:0: snr_recursion_level: 0 convertcolumn_horizontally: 0 adv_open_matchname: 0 @@ -26,10 +26,10 @@ view_left_panel: 0 default_mime_type: text/plain e2c.convert_xml: 1 c2e.convert_iso: 0 -opendir: file:///dos/z/16 +opendir: file:///dos/z/16/src/lib wrap_text_default: 0 bookmarks_filename_mode: 1 -ssearch_text: dxThresh +ssearch_text: PalFile snr_casesens: 1 view_blocks: 1 name: project 16 @@ -61,20 +61,6 @@ ssearch_regex: 0 e2c.convert_iso: 0 ssearch_casesens: 0 charmap_block: 1 -recent_files: file:///dos/z/16/16/modex16/MODEX16.C -recent_files: file:///dos/z/4x4_16/w_modex/MODEX.CPP -recent_files: file:///dos/z/16/16/TYPES.H -recent_files: file:///dos/z/16/16/lib/TYPES.H -recent_files: file:///dos/z/16/16/test.c -recent_files: file:///dos/z/16/16/MODEX16.H -recent_files: file:///dos/z/16/16/MODEX16.C -recent_files: file:///dos/z/16/16/lib/types.h -recent_files: file:///dos/z/16/16/modex16/PCXTEST.C -recent_files: file:///dos/z/16/16/lib/MODEX16.C -recent_files: file:///dos/z/16/16/lib/MODEX16.H -recent_files: file:///dos/z/16/16/modex16/SCROLL.C -recent_files: file:///dos/z/16/src/lib/dos_comm.c -recent_files: file:///dos/z/16/src/eng_comm.cpp recent_files: file:///dos/z/16/src/eng_comm.h recent_files: file:///dos/z/16/src/lib/dos_comm.h recent_files: file:///dos/z/16/16/modex16/lib/lib_com.h @@ -97,22 +83,36 @@ recent_files: file:///dos/z/16/doc/16.16 recent_files: file:///dos/z/16/doc/16story.txt recent_files: file:///dos/z/16/README recent_files: file:///dos/z/16/scroll.c -recent_files: file:///dos/z/16/doc/project.txt recent_files: file:///dos/z/16/dos_kb.h recent_files: file:///dos/z/16/dos_kb.c recent_files: file:///dos/z/16/lib/lib_head.h recent_files: file:///dos/z/16/modex16.c recent_files: file:///dos/z/16/modex16.h -recent_files: file:///dos/z/keen-src/id_rf.h recent_files: file:///dos/z/16/types.h -recent_files: file:///dos/z/keen-src/id_mm.h -recent_files: file:///dos/z/16/makefile recent_files: file:///dos/z/16/pcxtest.c -recent_files: file:///dos/z/keen-src/id_rf_a.asm +recent_files: file:///dos/z/16/src/scroll.c +recent_files: file:///dos/z/16/doc/project.txt +recent_files: file:///dos/z/16/src/lib/dos_kb.c +recent_files: file:///dos/z/16/src/lib/dos_kb.h +recent_files: file:///dos/z/16/src/lib/lib_head.h +recent_files: file:///dos/z/16/src/lib/modex16.h +recent_files: file:///dos/z/16/src/pcxtest.c +recent_files: file:///dos/z/16/src/lib/modex16.c +recent_files: file:///dos/z/16/makefile +recent_files: file:///dos/z/keen-src/id_mm.h recent_files: file:///dos/z/keen-src/id_mm.c +recent_files: file:///dos/z/keen-src/id_rf.h +recent_files: file:///dos/z/keen-src/id_rf_a.asm recent_files: file:///dos/z/keen-src/id_rf.c +recent_files: file:///dos/z/16/src/palettec.c +recent_files: file:///dos/z/16/src/test.c +recent_files: file:///dos/z/16/src/test2.c +recent_files: file:///dos/z/16/src/lib/bitmap.c +recent_files: file:///dos/z/16/src/lib/bitmap.h +recent_files: file:///dos/z/16/src/lib/lib_head.cpp +recent_files: file:///dos/z/16/src/lib/types.h snr_replacetype: 0 -savedir: file:///dos/z/16 +savedir: file:///dos/z/16/src spell_check_default: 1 spell_insert_entities: 0 last_filefilter: @@ -122,7 +122,6 @@ snr_escape_chars: 0 htmlbar_view: 0 spell_lang: en ssearch_dotmatchall: 0 -searchlist: return searchlist: enter searchlist: bg->tx == bg->ty searchlist: data @@ -137,6 +136,7 @@ searchlist: MAPY/2 searchlist: MAPX/2 searchlist: mapDrawTile searchlist: dxThresh +searchlist: PalFile autocomplete: 1 outputb_show_all_output: 0 bookmarks_show_mode: 0 diff --git a/16/modex16/46113319.pcx b/data/46113319.pcx similarity index 100% rename from 16/modex16/46113319.pcx rename to data/46113319.pcx diff --git a/16/modex16/COMPUTER.PCX b/data/COMPUTER.PCX similarity index 100% rename from 16/modex16/COMPUTER.PCX rename to data/COMPUTER.PCX diff --git a/16/modex16/EDw.PCX b/data/EDw.PCX similarity index 100% rename from 16/modex16/EDw.PCX rename to data/EDw.PCX diff --git a/16/modex16/MAYU.PCX b/data/MAYU.PCX similarity index 100% rename from 16/modex16/MAYU.PCX rename to data/MAYU.PCX diff --git a/16/modex16/chikyuu.pcx b/data/chikyuu.pcx similarity index 100% rename from 16/modex16/chikyuu.pcx rename to data/chikyuu.pcx diff --git a/16/modex16/ed.pcx b/data/ed.pcx similarity index 100% rename from 16/modex16/ed.pcx rename to data/ed.pcx diff --git a/16/modex16/ed2.pcx b/data/ed2.pcx similarity index 100% rename from 16/modex16/ed2.pcx rename to data/ed2.pcx diff --git a/16/modex16/koishi.pcx b/data/koishi.pcx similarity index 100% rename from 16/modex16/koishi.pcx rename to data/koishi.pcx diff --git a/16/modex16/koishi^^.pcx b/data/koishi^^.pcx similarity index 100% rename from 16/modex16/koishi^^.pcx rename to data/koishi^^.pcx diff --git a/16/modex16/koishi~.pcx b/data/koishi~.pcx similarity index 100% rename from 16/modex16/koishi~.pcx rename to data/koishi~.pcx diff --git a/16/modex16/ptmp.pcx b/data/ptmp.pcx similarity index 100% rename from 16/modex16/ptmp.pcx rename to data/ptmp.pcx diff --git a/16/modex16/q.pcx b/data/q.pcx similarity index 100% rename from 16/modex16/q.pcx rename to data/q.pcx diff --git a/16/modex16/rarity.pcx b/data/rarity.pcx similarity index 100% rename from 16/modex16/rarity.pcx rename to data/rarity.pcx diff --git a/16/modex16/w.pcx b/data/w.pcx similarity index 100% rename from 16/modex16/w.pcx rename to data/w.pcx diff --git a/dos_kb.c b/dos_kb.c deleted file mode 100644 index dd924189..00000000 --- a/dos_kb.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Thanks to Alex Russell for example code */ -/* Thanks to Gary Neal for example code */ -#include "dos_kb.h" - -// keyboard buffer -static byte key[NUM_SCANCODES]; // pressed -static byte kea[NUM_SCANCODES]; // released - -#ifdef __cplusplus /* Function must be declared C style */ -extern "C" { -#endif -static void interrupt (far *oldkb)(void) = NULL; /* BIOS keyboard handler */ -#ifdef __cplusplus -} -#endif - -/* - * Comment out the following #define if you don't want the testing main() - * to be included. - */ -//#define TESTING -#define TESTING2 - -/*****************NEW KEYBOARD 09h ISR***********************/ -void interrupt newkb(void){ - byte kee; - register char qx; - - kee = inp(0x60); /* Read the keyboard scan code */ - - /* Clear keyboard controller on XT machines */ - qx = inp(0x61); /* Get keyboard control register */ - qx |= 0x82; - outp(0x61, qx); /* Toggle acknowledge bit high */ - qx &= 0x7F; - outp(0x61, qx); /* Toggle acknowledge bit low */ - - /* Interpret the scan code and set our flags */ - #ifdef TESTING2 - //printf("%d[%d]\n",kee,key[kee]); - printf("\0"); // bug - #endif - if(kee & 0x80) - key[kee & 0x7F] = 0; // a key is released - else - key[kee] = kea[kee] = 1; // a key is pressed - - /* Acknowledge the interrupt to the programmable interrupt controller */ - outp(0x20, 0x20); /* Signal non specific end of interrupt */ -} - -/* ---------------------- init_keyboard() ---------------- April 17,1993 */ -/* restore the bios keyboard handler */ -/* ---------------------- deinit_keyboard() -------------- April 17,1993 */ -void setkb(int vq){ - int i; /* Index variable */ - if(!vq){ // deinitiation - /* Abort if our function pointer has no valid address */ - if(oldkb == NULL) return; - /* Set address in our function pointer in interrupt vector table */ - _dos_setvect(9, oldkb); - /* Reset our function pointer to contain no valid address */ - oldkb = NULL; - #ifdef TESTING - /* Print the key heap */ - printf("\n"); - for(i=0; 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 Z>$uj+`7_kYUiK-a{Xd_!CY| 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 diff --git a/scroll.exe b/scroll.exe index b7a0172709b453d24aa1f36f6fef23b74d573f74..0710f35f6f27320a7b6484526dbb807a0c40462c 100644 GIT binary patch delta 14151 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 OXU{b%%KqCV>3;zs)*0vk delta 13980 zcmd6Ndwf*Y)%MwEP9~EJAt852GGu@N36~_m5I`aX2&i0A2qA<>m?U#ZAejl1$ps2Y zFi^c@pp<;i+Gj4&YU^L$@16YS zWUXhfz4p58efBp9_GwGh(Kj*n~ujKWcPs{!09;M%Wj1SdK ziGNeMd{x?-{if0*ZTY&A3f;uf-%!%3Kc*<(rs;^zH1bWQPwgBo<#onMdF?&Q_;CC? zri@plJa-tJxg73JI>r@cOsdy2rS)UQUH_$fuH0*hcCY@@Jzwr!7eS6_kw72{l$n12 z7Wn*oLit|)T~(&U!M}e>t?-XEk$Zj}a{~U|y$Rpp-h%<()4dM@#`qIASRWgL5q-{N z=w}W-E|Nv|1lI+%ALm>2ncpWwl|F%r}(dHFv)3Day16{;Qyll-%w+0AKEUhnx~t*^_N{QV6|XAbz|;At`FZ_sz% z4*q50F&UN4rQn{^xE`f*4Y)@&?oFlB2JU{1JFawY0k=)#PAHu_!PRTrNu_f)xC-Lj ztA}F{L+1+s3N-+HaAz0z1;lrr;3tE}CXQ!)k=?mBXS2Rg{F}%60`PAsbLZa7>$G&l zg!CAq&dRRbtL=Zp_1eyp_jcXW^yeez_?5^@fz)uN{f`~zquS)iPr&@8{Zm~3+Wr}? z7uv6MG{j!lMSdX~u8M|hqT$Pq)?vS4nP({wEw7wan(Ko>9ounMk@|*suv_a59_&{9 z@6Wx~_fqFszAkY)Yvi9LE{**uOuX8=HO!TJqqXUVR2Ky{uk+`8Wzq`v5&0gl+ zN!jcy*Bi&OvmNQiC^q>#%jxi@5Y(oH$zbVk>-qjiDPPSxoyKPI&U4ZA5H3X)t$T_<~|hj;65$dc5p zzlrPRyQJ2pFPT$!d86bG)B5wP!;Q1f21@SLH)#a?gMPSqvp@G{-+P@wQt#!#q{@|a zL*8>!?#{g$D|P2ynKuAXn}e ztxaEua9+#n4CO;cOl9Nv?IS)D5;uBX23PKva7;+tAc-H0d?!ZI9i4WeHgfER|2;QD zAEj$B>^wO`FY)YAsm#nPN8OL>jZx!RE+3ncHCnH$pXoL$y6sn;QGG)*x?G>!S+crl z<*K9Ixi|Du-yd9Nz0Pfxd0R?Cs9q;Yeeby!2D{7(e?BD!Ktq7rsq`Ikh3Wa}l;<-l zgIkXdZn^YXiYqBfm$EY{Ovf&1$i1gr=YhuPT<@OxSo=$9$sWQxMo$b1)w#~FqbcoS zyl?cVk?82ko`Bx^be&T-`}4=gbnSay+PCD_>2D{eJQl7?X-kRVlgG@+&m@`2I`q@s z+vU1+Xm`N9@80{GYeIs~l^vyfsWSMLW6Id;&r6^0Yt2s5Np*3Ze;czWNw+g>xNeUL z|3>Qeq~PBeUB=%!KN+(p74$fMbWAF{-0|rcJvA>7eXlHQ&6ahNGtQkP>)a(n z+=1*|fGo|>hw^8#%z*_;ZJ;}*fM3o^G!!b56Ki8A51TeDAXGOaDU?r`HWvB{r?nbN zgWA^wb?XcGrD-e298wNHrnqjl^=$p>kWw4da;sby(0Wwg_u2IM%yHHA{@wFg-`}_1 zJjBbVPY*q&96m(Cy<5LJ#`jGh#*Xo0(^tU1q!~Y9MZ9CiX7(eVeoG4I6}P<2^7yEk z^{kLTG;`>jB6y1L)RNV!jxPJbQg>KU(Dpa#3@-eqdUULJ=4+dKUe*QvfskSSQ< zHbd%aUDV+$-PW)2`1P5?pgB5wID+VEP+aChJ~KN91GHpM2#C{l>*G2)vS-Qx#X(0q zSMz_)`U}hF@6I+xt7J)Zk}JEA zXXnI2VPQ@}P?m1&yBTk|lM4BkoHW+du{Y=O0QOMF;sx_{`1ima4RWX&Bso8AJDT2q z_l`;)zj)fBLd6wRs1zO5=|gq!!1dY;eT>dA!*%q4f{Ajb52@E3mcn;` z>7RlAwIc;wzRIgpUI^<8Z28LMhrRyF016j z3fdA8!9TMzSLd@?P8}v{%Mv!L_mQsec>m#zP$2*j)J06g%$IcRv%z3e0|9X zmcZ{T8O;{*gC(N_p3j%0xA`TYTX^7_(ek^+Jbg_{!289L6wZHeXC$|+370=D<}GVt zVm}C#B;45Wk@bHDJ!g7xQE`TuA6Rp&IfqFS3p2AuNlrIygNT`Jl;lhg=>$C4O9MB1 zX-DPSwN?jOv%Zc%X1WKdsFCDb1TCFmOc%U6fJrq~mW@`2q|+T!&SR`LrawsI7xEjH z%t?hn)EB{r|2HS8tjg8$pIiW4*_5XGb^_^E#&HTw3}H&Wx2D0-0c@^g|%{Rg_B&? z_!>)<)d`jGo8+Oew9;8^sVQ+v!O$mctQqgDhNrtqX#|060OueD;cPZKc|EBmH=6jk zG9z}!6lvrKLaD*HQ?gLMWe1@LoQS+;M!AT*MtdyI`i8~R1rGyjENiVW@3&rKYReo} zt4-4FdZC#H62>%ZU?$KbepCY|!OGi7GMte^sU2ipu;03T@Mh+$tgKzRhg#TLBu1lwQbVwA{(F{$AZ6)QF}NoL-n#TA zO{-1l)e_VVS>Y{M__U5xhcj_)X5?V%{WKT?F9gy}qrsX*{Aef~f6349sQ>cD{0fJ) z7Nz4&MEOQ9;!6eDQD13ofQyr$O*5t*wlo*e&>o($@QdaFz$5@q3Lu>M;L^3|*NAPl z)~&Y2Q3+s^52&`(t_R@s0X0qs_{~(dY8EEQ4Ee(#bxnXIEtO-N6?HbK$K?o}It#>p zIRNocmxG+6drYV1gIKJ4fUpvh(*|E;6ozM;S!`j5vaZdVpX%gN3Y^;BB}b9VVe3j$S?IP1J&ao0s zP0U6NX<-u_R%e~VCdv0nR88tj=x{xFc8C}PMNwCU6=au#+DP9TxPXPKc0x$Nt+kSwP0U7%ka_`PuZB(<yJNBP--U*><2nn5^YdYDwv}P@yv`*}DYDLn+ zoD{NpRwZ(E1+o{yJ{&A8t|2*pifcq{eL1F#H_=+D{sWy34F3IKG1`47Op(F}9Vo0S za~+n3e5wZ~@u%0t*=SkpVbmKYP^Nl3%NQ9!3t11{-gh;!YORq*HR$d)$s()wLg~K- zuL>6i(k)%fw#JfZ6NynRjSmr_%ve9+zq;K+y9n=y>Ns?ChD#B?tciLOobXu$Dh)y} zhJPHcrh<4m{4e3!pl^vmVZlJ}`TOgQ-@}FhUaN0HPi(|fnhoC)cVWXD5Ly{=e}vit zq9kHRgl5A!4P;RZI$%N=@gm3Nwo;)2HJdJi9-z? zgwgsT3x`PRtDxLNo(1(5s3SuzfcgWd&xS-qVpfAnj+_&TK9aNp|77X6pk)2spgmi~ z;zdj5&MV9?PnaVy>vvWTL^l09ITtB3@q@PXW|CIhz*k1z6`A%9#Mp`@OXn_~H-DLgJ*ow< zOE=X*$jnMXXL{%|(33qh?VHRVx)#Ni<;6iy_sXkP7Tiy7G3|sZDQy86kh3y>9#`#Q z&Ey7#!m6KP(&*AE8p=ZhpX8y-fKT?)z^8cVa^Pk!4ScGgrHS=4j@K9AiX9$e6G~ob zWQ8;WG&!!N(_vjp1z{r-X$H*_u7R6bO0{=0OGbgl+%uar+P9h2Snp15x@h)qW@)H4 zW>%oOn_D(a*V8EK6yCleDvU^K-KVu4-7xkJg0KS8L}2T!z{&4{w{6jVFB-m#s)`mt z@!hs-y!w`4i-AZ_bxhKe3Ux8BaU`%K{2oVa7FjF0`EH||eNdUhS+>M?ccp?R>wc|i zJMYMxMB1<>Apf+hpa_E#>k+FG@$P`^@|cL=4?#KdRUPK_0FgMoL)JSo}=>CSHA z_tl!4HJzlg(W{a)ZqhXNP=)PU$Evl#P?6dKq_NnQ+i9yP79lan3MlT1*&nNw3(gbp z2Ld*qkB#sfK#dn@mTJo^HgDB9ys%W`i;vTX*{qGurFJr?p0GHDh7==Jl~q+z(#o&H z$pN^-gRhBzU7Dm-73JyeYLajqrE}Y^&BB2K2v){c$BNLW(VoJ@KXhjPmoSAh>YRFm z!aCrf_&oRl2Sqa4%)FI4*;B{^4vHj?()Aq_Uj!e{Nb8s$rY+x_S#=1kQd4p1iTx++ zY-4W*k(rn+xXtlbo`~jW>JkSSyk=ltOTBp&ck6O*VjYxoacj{s>!2u$w0d~Tytub$ zyk?BJxd?OKfC-^-G4Wd7kvnd$4;^)zIo zzd3^Kj zn2bG4wUpC*-^|wEfEd#4v^Z#i#w||+DxG)^C^pI8bk@PDg|kmW=Zgt56GiywnBdP! zd1W>DCb8IWf!K+JKPE`(6QItIOPGkTCd|cLtvzTZJ91c3TGrj2Q<&4MY?6bhz{yo5WJMQI4PXbRx|C3aGw05X#M+W zO54P@HpMod18HU@WwbZTG?9Jasw!=G@H5%;h1RI;Y|Ub4i`EK@t(=}4WO>C)>(tuH zO+co5Me1y8?RdtC=NY$%?J@3MxwkExCw&Qp;cOF(5(!W%bHoFP&D*`mK#yMp_>aWv zh;tXH$fVIplKLj7tfbr|5xZ4GL=;vwk1NXofC9n!)n=)tBB^KVZ$ehYgwpIO_9Aqt zOxl;^%l~HDu6v9Twlt9~>PpCMP5P-e&QG;*dYi`#`3cC^lg^)HBP6NZ35!ctn6`TLjV0;SgRpskT(d~vz zl5Ol)Bv0aTeA8VC8BcJh?S$upYe7L}xy>jn8czz0y0DZ^O>k3oSb! zGB>$FQ;tV)1r{8$ytYVEG-j17t$~oNj|1(EaL#S{i)QB`!o&ITRxQE=*cq8My+GL;Icg&mW>RvB+oKk5n9of zA?XaW{Nsy_md=plm(Qm+C_2MjLZVPj~Izz7MBffik^h|BA8cVtGNN2d+ zbPXf;tEK`$p*l3&1nRA|HWq=?44caTv3;zbiZ|_UKKw^9%}zuzEgZ)%R#H-F$C^W@ z_Y$#Sq?>GL^eR`nGt>lZzpxaod zmW-o2CO4CR-!l3^NZd$%&@@1AlTUA@#}@H?Qhf}fW|PCDwu4w?T4%y&FM@QM9yF=H z0nu#Q1&qe+2|xtN-$;5uNhcp(-*kNFEM=S>QJ5bdl8b^?);f!*fnnH*20k6c!eKWK9-co55M{NUYJ zV(}XiNxa=HDJijGm8dDTu9Xypce#f$eaCz5B01hLK%~;<%$!tWZLD-kN-$r1?^2fE z(SGkT{9>i!pZ9HI&7pqTvN}hpW4)wA`JrX`v*+BgaLEcuiTMVYza±{0Hlco(b; z9e`9+R+URif*-Njv!+T)svjuH}%jo1#Qg|Ci@q_bh<==!fxs{MR#w#9vJi5p)U9vcrCYGcW^W;Zju+PYP zWC?y+)b>a{E9d=>#Ii0PyL&x;=h3?Rv-pPw^qZGEzXWeuZBA8E9^pG5J&fOKENCwt zS~0-xMLBbp-Bz1#Da9;Oe%*1TU1s=|$g7XlvPV0n>5XHhtEfR)O)oHKO-P9-fZ1^j62i&aqcXZ}GoBKCJl?UJ9(ncMvS5$M&>o zr2=W3XQP7~J%<+TLaU|TDxLMRbFHcc??34gjzrIEh0J2lLmi2p(F$Z)g}p(@ETPqv z)aF@i0-y(_0H#4~L zX+C%vvWMSq+{#Zi#5dEk9Zie9W}|q@q$#2Y7Xr`4zHf<5qJy}f$D>X#<17w81zMV8m#S&&tl#xFjZc)M*leh5Ta!q;YPz}B8N^tg+Fq7C|b>&6<)SiCvM zSC+2fo^3_CXs@6>qg-gWl;`0UikUC?ReEy)J1y_V?*NY}y93~*_@s!QR1&hh9LJi~ zp^a>JK$&zFl4GQ^kd&a2KAI$%B+DH*`n=7~LsFJ*KvI#;20{|X(Pucmnl-ZAl1w(e z56O*_@iKpRKnoh_la8+}MWo^oFaLEUA=5nQaVVuW{9HFc&kyX4WF`F8r;O|YUhX~@?Z&Uau&m^%;Jmgs;dyJ<&Ym`4S^M%hQvB7*jpoQFxYdwD& z*BAL)xW32xa1G!g&ly=7Ps25z-+}8Uz8=>{x%)X|YV+B}PxNj>_0Ksahxx*Lf(9xzV0@eBU&^Txnegv5(v{AjI^`UEm* zDfPL6Z#ceM;vW|y%VGjFW|QVo%Sfsi-%g%|GY%M;!dKy%%72J!G5_TOWAZ(> zlJwAgk|uo>n3wGVG+&Pki$w6{&u-i#m+#46nv@BEJXMRs7kGc=j)T@;5_+qIKS%R({$M w7nJ1XIwF7lGGjj#A~8PjtKZZy%#RHR2ljjDU@6=Cb*v+`vr$oM?v$ke2Un^b #include -#include "bitmap.h" -#include "modex16.h" +#include "src\lib\bitmap.h" +#include "src\lib\modex16.h" static struct pcxHeader { byte id; diff --git a/BITMAP.H b/src/lib/bitmap.h similarity index 91% rename from BITMAP.H rename to src/lib/bitmap.h index 4c4af98e..c11a5d6f 100644 --- a/BITMAP.H +++ b/src/lib/bitmap.h @@ -3,7 +3,7 @@ */ #ifndef BITMAP_H #define BITMAP_H -#include "types.h" +#include "src\lib\types.h" typedef struct { byte *data; word width; diff --git a/16/modex16/dos_kb.c b/src/lib/dos_kb.c similarity index 99% rename from 16/modex16/dos_kb.c rename to src/lib/dos_kb.c index dd924189..a99f2ca4 100644 --- a/16/modex16/dos_kb.c +++ b/src/lib/dos_kb.c @@ -1,6 +1,6 @@ /* Thanks to Alex Russell for example code */ /* Thanks to Gary Neal for example code */ -#include "dos_kb.h" +#include "src\lib\dos_kb.h" // keyboard buffer static byte key[NUM_SCANCODES]; // pressed diff --git a/dos_kb.h b/src/lib/dos_kb.h similarity index 93% rename from dos_kb.h rename to src/lib/dos_kb.h index 09617895..debb0c30 100644 --- a/dos_kb.h +++ b/src/lib/dos_kb.h @@ -1,6 +1,6 @@ #ifndef _DOSLIB_KB_H_ #define _DOSLIB_KB_H_ -#include "lib\lib_head.h" +#include "src\lib\lib_head.h" /* Maximum number of scan codes on keyboard controllers */ #define NUM_SCANCODES 128 diff --git a/lib/lib_head.cpp b/src/lib/lib_head.cpp similarity index 79% rename from lib/lib_head.cpp rename to src/lib/lib_head.cpp index cc40b93b..42bbb026 100644 --- a/lib/lib_head.cpp +++ b/src/lib/lib_head.cpp @@ -1,5 +1,4 @@ -//#include "src\lib\lib_head.h" -#include "lib\lib_head.h" +#include "src\lib\lib_head.h" /* local function */ void wait(clock_t wait); diff --git a/lib/lib_head.h b/src/lib/lib_head.h similarity index 98% rename from lib/lib_head.h rename to src/lib/lib_head.h index 7e034ad6..86b55b89 100644 --- a/lib/lib_head.h +++ b/src/lib/lib_head.h @@ -4,7 +4,7 @@ #include #include // just for wait #include // just for wait -#include "types.h" +#include "src\lib\types.h" /* Control codes for all keys on the keyboard */ //here temperarly diff --git a/modex16.c b/src/lib/modex16.c similarity index 95% rename from modex16.c rename to src/lib/modex16.c index aadbe523..1e1757be 100644 --- a/modex16.c +++ b/src/lib/modex16.c @@ -4,7 +4,7 @@ #include #include #include -#include "modex16.h" +#include "src\lib\modex16.h" byte far* VGA=(byte far*) 0xA0000000; /* this points to video memory. */ diff --git a/modex16.h b/src/lib/modex16.h similarity index 95% rename from modex16.h rename to src/lib/modex16.h index 65b37d9d..1a5debdf 100644 --- a/modex16.h +++ b/src/lib/modex16.h @@ -4,8 +4,8 @@ #ifndef MODEX16_H #define MODEX16_H #include -#include "types.h" -#include "bitmap.h" +#include "src\lib\types.h" +#include "src\lib\bitmap.h" /* -========================== Types & Macros ==========================- */ #define PAGE_OFFSET(x,y) (((y)<<6)+((y)<<4)+((x)>>2)) diff --git a/16/modex16/types.h b/src/lib/types.h similarity index 100% rename from 16/modex16/types.h rename to src/lib/types.h diff --git a/lib/wtest/WTEST.EXE b/src/lib/wtest/WTEST.EXE similarity index 100% rename from lib/wtest/WTEST.EXE rename to src/lib/wtest/WTEST.EXE diff --git a/lib/wtest/makefile b/src/lib/wtest/makefile similarity index 100% rename from lib/wtest/makefile rename to src/lib/wtest/makefile diff --git a/lib/wtest/wtest.c b/src/lib/wtest/wtest.c similarity index 100% rename from lib/wtest/wtest.c rename to src/lib/wtest/wtest.c diff --git a/lib/wtest/wtest.h b/src/lib/wtest/wtest.h similarity index 100% rename from lib/wtest/wtest.h rename to src/lib/wtest/wtest.h diff --git a/16/modex16/palettec.c b/src/palettec.c similarity index 77% rename from 16/modex16/palettec.c rename to src/palettec.c index 340a9303..630d7b35 100644 --- a/16/modex16/palettec.c +++ b/src/palettec.c @@ -1,4 +1,4 @@ -#include "modex16.h" +#include "src\lib\modex16.h" void main() { diff --git a/pcxtest.c b/src/pcxtest.c similarity index 89% rename from pcxtest.c rename to src/pcxtest.c index 7373e885..e2c133cb 100644 --- a/pcxtest.c +++ b/src/pcxtest.c @@ -1,6 +1,6 @@ #include -#include "modex16.h" -#include "bitmap.h" +#include "src\lib\modex16.h" +#include "src\lib\bitmap.h" word far* clock= (word far*) 0x046C; /* 18.2hz clock */ @@ -33,7 +33,7 @@ void main() { page=modexDefaultPage(); - bmp = bitmapLoadPcx("46113319.pcx"); + bmp = bitmapLoadPcx("data\46113319.pcx"); modexEnter(); /* fix up the palette and everything */ diff --git a/scroll.c b/src/scroll.c similarity index 99% rename from scroll.c rename to src/scroll.c index 846fcff5..c8a5a621 100644 --- a/scroll.c +++ b/src/scroll.c @@ -1,8 +1,8 @@ -#include "modex16.h" +#include "src\lib\modex16.h" #include #include -#include "dos_kb.h" -#include "lib\wtest\wtest.c" +#include "src\lib\dos_kb.h" +#include "src\lib\wtest\wtest.c" //word far *clock= (word far*) 0x046C; /* 18.2hz clock */ @@ -87,7 +87,7 @@ void main() { /* draw the tiles */ ptr = map.data; - ptmp = bitmapLoadPcx("ptmp.pcx"); // load sprite + ptmp = bitmapLoadPcx("data\ptmp.pcx"); // load sprite modexEnter(); modexPalUpdate(ptmp.palette); screen = modexDefaultPage(); diff --git a/16/modex16/test.c b/src/test.c similarity index 93% rename from 16/modex16/test.c rename to src/test.c index c5b9d7dc..fd2ec3f9 100644 --- a/16/modex16/test.c +++ b/src/test.c @@ -1,4 +1,4 @@ -#include "modex16.h" +#include "src\lib\modex16.h" #include word far* clock= (word far*) 0x046C; /* 18.2hz clock */ diff --git a/test2.c b/src/test2.c similarity index 84% rename from test2.c rename to src/test2.c index 9118279f..5b3d32c0 100644 --- a/test2.c +++ b/src/test2.c @@ -1,4 +1,4 @@ -#include "modex16.h" +#include "src\lib\modex16.h" word far* clock= (word far*) 0x046C; /* 18.2hz clock */ diff --git a/test.c b/test.c deleted file mode 100644 index c5b9d7dc..00000000 --- a/test.c +++ /dev/null @@ -1,75 +0,0 @@ -#include "modex16.h" -#include - -word far* clock= (word far*) 0x046C; /* 18.2hz clock */ - -void main() { - int i, j; - word start, end; - page_t page, page2; - byte *pal, *pal2=NULL; - - /* load our palette */ - modexLoadPalFile("gfx.pal", &pal2); - - /* save the palette */ - pal = modexNewPal(); - modexPalSave(pal); - modexFadeOff(1, pal); - modexPalBlack(); - - modexEnter(); - modexPalBlack(); - - /* set up the page, but with 16 pixels on all borders in offscreen mem */ - page=modexDefaultPage(); - page2 = modexNextPage(&page); - page.width += 32; - page.height += 32; - - - /* fill the page with one color, but with a black border */ - modexShowPage(&page2); - modexClearRegion(&page, 16, 16, SCREEN_WIDTH, SCREEN_HEIGHT, 128); - modexClearRegion(&page, 32, 32, SCREEN_WIDTH-32, SCREEN_HEIGHT-32, 42); - modexClearRegion(&page, 48, 48, SCREEN_WIDTH-64, SCREEN_HEIGHT-64, 128); - modexShowPage(&page); - - /* fade in */ - modexFadeOn(1, pal2); - - - start = *clock; - for(i=0; i<5; i++) { - /* go right */ - for(j=0; j<32; j++) { - page.dx++; - modexShowPage(&page); - } - /* go left */ - for(j=0; j<32; j++) { - page.dx--; - modexShowPage(&page); - } - /* go up */ - for(j=0; j<32; j++) { - page.dy++; - modexShowPage(&page); - } - - /* go down */ - for(j=0; j<32; j++) { - page.dy--; - modexShowPage(&page); - } - } - - end = *clock; - - /* fade back to text mode */ - modexFadeOff(1, pal2); - modexPalBlack(); - modexLeave(); - modexPalBlack(); - modexFadeOn(1, pal); -} diff --git a/test.exe b/test.exe index 640194bccf49079dcd0c0a1fffadf8a84156ea54..70d01767138d532fbd9c72f152a75d4f7c2da3e8 100644 GIT binary patch delta 6916 zcmd5>dvKK16~Fh}kc1?g-4Gr@3@J+ylL(RoRs=+W@JQql2@iot*zA5^cFn%J**u7m z1uS+E(8gP*_0{^Q?fAfoudyRO(AH+OzRdU5Q z3zFz@Yj3KTn#Ybl4tiv7EEEt0A}s@umig+7=Bkt*q(|H>4@)UTNN7U?S3;DzOTqPK zxbCDckp$BJrrobc1K^Xy7t4;VNnLCN>DDfTrkdB$$P%v%_>w-M&G1|a9$dfBW_oA@ z=&eHYrYxo}6i5bzHrrx@dZ;sq+2$}0^>JUP-kubDp@r8*JSN{r(`0~pAO<0BNo%n1 zFwkuyu}zyNu|Wci4sEj#Uy946u?TFD94m#f0#vp1f?5x%Nv;Lu0~M4#&`G~*%E|8c zg3|J@1)XE}ws5GUZN;j_#TVCkr!NxUSCQq1R{9`Wu|5Ai{CP!6M^SU05Xne9?h6Zt zBkcGXxLeEVm15n}1?aj`x-etbYeQIttWkq2W~4~k_#yaV`L?V*1~IvQ)#}F8iF zQm^#E%riWfLC7mRK-XKepUrRLtjxBG5eVsy^=lKy-iP{!gz`_k{ z7N>ZkLQDkX&hXF%LBoG_7Tp27-ll;!ShOGbOq&Ki%c29oy*3T}9HzzD+h|66SG=h{ z?A2Q*`)FRKCB$cV$ONW?6MAPi92}*^3dH(_4z}9Sl~Yp9AWzDNv|`y8O9TYjfn$Qh z{u#&@%K-P>gC4hb42T&s$pkd^eh9vzh~yYuw0cd8FA<^1IwUmbf{S83Q93N!_Cb?z zK6)?J`p0U*XaaeiwjVmMw4Gq!(Cb!BN$mjnl6C}m&5MNQoE!=Q`{dB%*2(dhbmrig zZ1&&~pFKD$FG4IWi}HEx`K!+v zM|zEs;6KP40g1HSQowy{R(pA0!xEu8)NiXKjRU5}VG87-OJ&5I452(!=(yISnXEq+ zj#1MYS%gw0NXhJ&C&s`Gw@^stP3|zBq1^ z$HBWLY4r@tjtK2=P)5qZ8}(?W=C6TI)AI00UgqU%X6Gz(ORhINY;PvW(E;0?3G#G~ zKNDnIcBbjy1o^uJ&doP@a|xvY3V9JPW8$v-o&wX`@R$|f!HmmHOAK8~J7X!RKuDO! zAe<4iOq3HRww1DxBI03Rl|J+^)fq8bmJPH7yd4-E zgeH`U430y>3wu{8})80 z_i#SX$uVI&_l$Bb{pRFTgXOXQ@F~gXtGS0_?J2gZI8( z%EgPBv}syuHBR8LG<*R%uY-&D-z zqcSM#l|U#0p6^U!7sRF&&ngzieo%AID!!rExChkI;#9G5D+qsa7dr0-)d$GR5an)O z@aLOmoz0Vt0{?LFJK4$1>ZlCx^TkJLR9g1am`BtlZ8Ph5Odt4v6`xVU3ygCewv9V_ z(cvtqEa6eFmhntawarOUr(05s>cmd{boV}v0mds3Tv)Qd#4UXoSbLIYYj5vPCUjq< zJsgU50d>ni1FqdkI@{Yrv5p>tYU*~LeTL^Pbb|9!eOK?wY+D{WyF&v&=GY=V(aspIDU?q0xcJ6BwWMkJVxeIfZb^$_6Br@VGc>r* z26Aokc$xUFXeqh4L>R;9Pn28<>M*Dum)v0*%0G$?HF5J<{${KkF$8^4Uxak_%C3BL zv)L#Ttn<)8Sjk9dCPW75F_62MZL}D}2f4ROJ~ijL*_>zp<}*j#1ah*o9;YfTUo+wN z0UrUm!r8{~0z9H{l}u`{JC}WX0r;)XBiSj5w^kPkT-C z4?+ITIkME)1>%JB1VrhvR!~}ibA(?d!a@^QBdcop-vNE<%WYxPniUIL@Nk==K5IXe z+JYh0TVViX#f*2U^-^0~jl?M9{{Ce;PGLf9$BPk*_lq_=2%=12Y-fQ_@S-5`uaZ{7TSz}W}wcofp|e06$9HJiHjTC(ZakK-WV+6ufkzUesj zqBDCO_wq(F$B`7G(>{&L?9HA=OT42el{t=5a3;GiUB*JSW+ zNuICSMeEF|QO^aRQ=^)0vhP^i-|>{4sk|NaF9K zw2C=9sFHS+*=Zzm9nQ9cEJ+&lB%VS?pffG2kQ3!}Rc_2nksXJntrI~WrO*XpYsCc- zCg@aS(`t>0P?U0iuZ#_uq-g3OoLS5E17Ej&IAi^|TYM&$#4GS*e3 zXi|ST=I;`v$R-gV5-0sWrmQXuoX^cAC~CmbS2X%&#@{&>N2wU1k3q~X*L}UZ_=C-w zUqO;B^u2>VlCaE5)TNBjXAeeNgR#C8L-gf>p%!110s5w3%IIO;pKRgOO5X?=Tol%Q ziPd^1T?zDYfWgLuuWunXjXn;H=YA)KB)F!kO)n#aJR5zl1T0M%kO&vwMOPxUbOEqCvm3&dn zMSDVRLVK>d4DCbe#$D&h#p-p?+tug0s+~_yrIlVcg_byvX_zXpv6IBO`)l#$yQ8Ow;QA(XOo6!=h3{UtD(K4ix{{c38q60?HMBvsWDeI z$d#(;s%q!MGe~&md=hr>j^1G897ZY`5p^W9hLJ6d)HCuRBNa+sRWAMN6X<+KP2E!^ zPpYM8J*sn0Rl(YN8v9fA_7&yomOc40rGB}mLHg+zlofwoUg*jpuEP;=3Kp*HQs z24>QjoeODAE}Bo?sqWZY<&gwN$&QPHN#v0PHsMhoAv{8X1j5@$*zDd*mTY#{%_do5 zWF?9$h|+jq7`4_xMQa@@K7cAp)sB*?1z(kpRtw`OTFa=dQ){Kz-*@i4y9>qoU;pS1 zbMk$^^PTTI=X;#TCGn7QYM*l8+4;OiJU4$7|3I9cKZaL`L3Lv?pQvT*WihF46pxA3 zbz`_iY_1!lWGxW)%`Ftq*E#qQ@kU)y(OQKu{KHSl@_?8QLTA z`xfUG>w*lcXG1xSa|4NaxLN5ga7+~iD2OeCE zDHB~Z0`x|vxZ?)X?e|4nnNn@At*U>0E38eCJk*Ch>(%Bcrf%3K9>&*@895mODu8H& zI5^G0zym-xWn!5oPh!0UXloVB_&atZ*JgmV@zMFgC&k3#$ z2)TI+=n8}ON7d<*CLk^!V2BIn^vWht!xx% zTDTs+h`PQ5@e9%v8S-JaMf&Q@;;Z5{AkXoGij8-NB0ff|mm!x~eH8LG?vp(aqQ{|} z1fr)zGy;uXAA%olB{_-CUb?Ko6KN-7E#F)O&JJ}3sTMYEfhMgAb~h-oLWOCwK<-xd zLmX4<(Wkbz{;K#!kgqH6053g8Xj)-V=*_|)<3?e)bUIlVI-9Bs;!|}&rV`wp0o9~` zu*J$)d&sB8YE{kC84zT4gNRTNznbh_OI#yd=)wM;`j?MsiC2Z=e&y=yrSyGurDzwF7){@KlQL%PO zQ8mq9P9mgf9V!j$O+wyC)LU=Do2Ue6c2DWr_AjZZBy9t7GwJW)K?(vmY$yG_JRn2z zBxIk;I03N)SF+?RhAgcrlGVh)|2ZQQ5(&O4TlTG6>W=F=k%av*QzdEa(KQZGPWEr$ z?Yc4KaDR^FPM4yy-cTS!Ib;QtA&snrVrOQ4R?^Q{4+MhAHO8=R0AUk|vktE(XeL&~ zgjqQ0pJ);bsyKtbpJ^=4qJYG-I-sVYvzZ${;z-ZOf|D zrnxRXnk{BDBNS+#8O{hrIxU_N@~sS}9^VMXI~T#t(s_Lf`2cd{Bz_CSZCRb!dbANS zF>`tLkYv1cH}r2fAi^sP;z`)>M_N*tE=i>Y3kN(wI_YE?Nd1@26UvDOoPl~?T$n30 z?cr3qOx5Eb33bb4Qz>s_$vH`LsScS7+oj))iWZRJ5dVjYzB z0Un?=5AY63`yg-EIl3q4MPTsMD~mwq&2*J@phL-gm8C$KwiYu`1{GSx*Q*?32+?!) z61y1XF`cemN5#0+g{iWjOs-Wsj2*6rbfoQM$sNuLLuq(&hjRg!HUk&!a2IZHl#9G_# z7xC*M@}TuaDSkp1e|=5m_i8^5k@v0Vr1-;jIhnE7j*TzCmN~#RkB@eXUfy;NVhFKu zYsWFE1OBM2_%1UCQj3l7cDdMxptHdCQ=4=m-JMdqgU{a%UT#I&jSw4an`C3!K2TGy zvE6Oc9t1Vd7Po14f$-Ye(D?wUZa|nFdC%sM6V7a!G+r9BfP=ql?W9nH=DP)nyq*X`yoS)1Vc13JNZ=@MAs zqB8+pz#nX*>+e^3r+%Y$%NsR%TRlNv0HLWi#i6pp-veZdDbg8SAHo5M>(w+@Gu>Ws z1kSBnIEVcc8XcS_BbTiCNl}0A788)O>eqd62w+3*s$8Z$4=R#-E2vjM?aAGz`{mjp z(l4cJukqHv1X2d-f}VC#*~Qz=Lsoi;0&k@M8Vni89h8^Mh+cXoq|ap&%|%-cxl_4c z>2`MOcAj2)^^jd4N99$Zh!XsS4*w1CagdAhnj}1VsGQZ<=JLrhl-1xj=Dm|LsprL5 zz#?y79xmOWp3OUs!BDzQAHAo!v?c-a%e+DP+KnK-&HEOj^j^!(&qh7qSAZ-~*c~W( zC2Kfn^YKdGZ&!qlf!*-g_fKJu7AK{>cQIzC(&~^>palZ6L&DK=DbQw zXer4eSC?%U%`JuTC_G!{z|-SWMHfV8s_1UPsI;Qnu6LS6cbnduDmp_vt>_Gq^rDMX zsLi7L2{bx5O-3&f)I*fFT?XF4DbS@i(mc~Hx#i%~F1dPC%oEZKZ*u!_yGTC$l3QiD zoOF}g0iJwJb@AX1Aeuw$^cFSUgCTkq2JyI~5~YPn#B07uX>t}7WCAc(>CQ8*LG?f_mFa=kcz8Kc|2IOrQWZWcN(*p_0v?F2kj#q+T)pV#*W$F26hD4JN8qcUIO)ys(E?JTM)6QO4xI^JlnqOx#Tac`ocuPxO{K`-Amt?x zQ!O_606`Z!mu9OKLQ&jt{b1>$C}mFz;gU5@p&rT@2_$_VNc!GC3_~{E0`-~=s_u0> z?qFKMlYiG%43B>XRR2C{#b(^@!6rz*FKB0GEhxUVI7jlpt(Z59(HAlKJ!4Lg?l1Jw zN3si5PnXKxHd*~^hkOSy`WPZ*78@@kMxQq%(%2g6ZluQ&qc0Q^YVZUlKpz=&88x7K zqYe7&3u~6(?11WtELGRj_D-J;Bv>2qbmN7^%5uccWd(71geLLEa0C}FMz5!fFhdJH zhji7U@J9K5)3wt@UgC3c#?%KHT~$*&J{{0CR0jf{j#fy}MH4_=jm?z^WaxG%Wg0wz zMsgJ0z9g_%?FPo^W+nNBA&(EhT)J7%#YuuR#02TqV5+JKc<@!3&UX`8*-ERVqrKfu zU!5>&c^J- z4QO8#`+%$zFQNUp_z1`dVZX)6XNd7=y`moNvm%7nDt4mXDjq}om^guUzW5yN^}@cz z$%Pn?_K2uQdq#xNUL|&--76m3@*`d@&Vmkzyjx2!w(3?VpC(qK^@(n@kBB{J-w=n< z=8KbPtHsx7W1?uQliw?<&>j;jw>p)xB_g)9m=}sYfToGVXj{ZdwA;kjTTAl3Ev0pD zD5K(dNc7)4lsm<&gpkMI;##!%;s&&{#64)+#1ZtK7N3K53i}T7 z{dly`h5rYI{Uc>yhIhwLaR@-<|LKHjAR3{^Op* z&Aq?5b7$t>JM-Nc{(ex|b(iwna5aBLbX8x*!{R5^`Fup2sLmf#S;g2P@gdOn#Mq_z zW5P9zB?xtKwy0lf=RHCNHUun0*bm<3j46zMO47UF7gelZyS~J^zBA+!$Cf@5=|YQL zc@y+S&J)s{iJZB-0oNv$kkH592b|g+@VHqr8|LqzJ5L4~mypJoPxbg2XPoRuZFUyG z-rz51RUS!ibbQ!)hoDq>n~R=WUzA8jGw0Z&x-#x$qGXZgXQ+?qEu}DRyX{_6}IDkTT2%)po5V%mOeXM<*GB`)L%N zyt0~M?3u93_GOcg?gghL-3&g?N9( zGtWb?D`!Dt4s5Dk2=@)}EQ~Vhz9_=L3&s7*izB41-voJx9biRoLX9`qHB>b$u3p75 zom|C|i}SWX$;sQmmzumwy28N8Elv~fgrCbz-VMIO($~FeJ5%Q7-2zjrsGcTJc}?Tu zh#V*d19@p6S`K(Pv&7`vfR|c4@G_Hk0iR{@z-ODh8@SWrfzOdVn>j!uTC0+a>cLu_ zCA^2ml{|-faUQwA2vbOF@1!u%WEqlfd4lxXgxaY~mVrISf;^q~1VU~`eu!mR-&4>} z=Wf|@7%j+YAV%cFAz1AG0CH~HQ(~}o{8b#LWZR;K#(Fj6TNLQ>Q)&+EMOS@3TBq_d z&h#2^^}K^-H_W#|KmbqGPW5gDyN5@C7oH+CE^8_1R@Ty_tgJQoSk@ZiXx5TEnzc04 zFrSwQ)2Br1ii#u}MgO6=bH(^fVyX3aM(fEH1MYvVIQTDU9ZXUaY% zyWfX~@yZTGET{I=( z<~+p^T>)=^awH8cN0WAPD|cs^a!~bZVI1i= z2}qw#cu&};25|@La_THG9>7TeHv0OBoCM@Vx{q!A@+d>+;u#f`a{6fyE%H9pEXo|+nGFZi~-aA63Rpkqx^H@4LGeK zF!0`_dy-=zh#2nehbjP-JvE+f2? zGS<(1v^w)7l=*AQ)GG7Wkgd#;DQrNo)RI|Dn66_6k0!s6BBnOmN0YbnA_owq9G&9w z_>mr`^jZ~i8R^wa=3;P_)@hzr^3abvmAuwzH4Y=k;W(}4$YZRv5Dn6h_e;msg{Ku| z-burMA2gQ~8Y_&QCpatowDt58Q2A$y4V!hCPtKI?Ub3e2Yt<(~B|o)Fs`nY{cYTBU zW~j8JUN6ai3i5z3BLSYIB-&9~IK0QE_{GkmU)YZ-?5s)bpuK{|&f*O;25& zrXL2Uq*bKp2f<8EyF88QzXn$d$UG~u?Q+6pYiG}tgN=iHUD_R^gBgX;Sir++Kc-&8 zyqEesAZ}edD@pe05ihLG&XsI8nnu!IG4x&42K<)e;z(w1{;JTd1TVS2M#YLrBY2IEmLz0T9 zN~t?UqvUnUk{4o!>UVn)igHW6txNCp^Z}``RJ#1_0erVmC(V_0Gd^5PYOY?)6im;~ zw}HwK=$=Y46z$(@AwgMJ4oD9i2bi9oozCr5e3>z_cmZd=})A`GN7O8cylsxE(0_dU4`EM^drVNw;SWU zyMEfZ17P1s{}A{vKV!gCHcT7$GT0Pbj*Z}jxb5JZv2H`jm2w#iAkVTzZLuMZJeUo5 zg{{?w(imKiZ5KMDchuZI)?sWLVRIiRo`Q5!2s zmxBND6|1tQv36lSZdf0Sl8q-OwW5nz=J$ckEqEhUFEShk}6E817$DehtaP) zq(vakGeu-}iIXV{@;;MRp<2QcQWlJkFF*MSDV3x8jhllSbgC@#t6U*X^RJ@BOh{Q` z4RZmyG}haV1(vi!aakTN;IVrrV;!36#>LZ}lmvM6;yE!9L7p#~S_|@8p(MJA$JL`oRID$e72Vi@-!M|kWa)Xn|3 z0MT<3BaFRen~@Qr(7%?`6->uQtyqA_L5tns;r0Gheo9@=p{+JvL&BsXIQzGm1&k3-<|;eu>>Rq+N?cfFY1mLH+zUu1TVLA@s99bMJm$pu zXkz-WpgNTCScd*fFh9*WhVk^{U{9dC{wSC~XS_jkz$BhW{Vn|=CqZ?)c&%+xqy~)_ zoK(Gh(?{q?D~!Khk|*_3WFvD*mR!D!Bf?0lkU-4Mt)wiWZ*r|%K}4!qz8&>t+_Lop z7E|~dJrv4z9ZJGN3{SjO=b3eFe!9A4uB);C11C$wsGw6ny zHhSG5Z#cO>+>B&I)Jn~r7dFcqsdmmUgJYPAtAMbr0vU-i8==6lb0 zbQzFok_}U9vb0zDB4(QAZ+>Q%o4 z==s3V(Y%@~TrUq*dK-}7BCn=~8nkx$7|^4D1gk=75AIBiuD|hssYln%7`!SNLQTeS zi4vz9b0TyPG7JZTn`wNr4^{aRUxEs+&d;c79hLDUKy|4Bc-77hXi()D2SA0YMTyj_ z-c{r!s>UR+LhAv>dhIxYBycqy2dZ}oor+XfNs#(jAe9xCtxB(ocUvj|ETp-E)IqlkH4UMo-yHl?*p>+s8PgCtI-873yqpN$ALofXBJ=n;@wZ3; z-y)I+FXIP9(O?;WU$hKX^9kb6po7hr*Tz03Ft#{7IdB%v#o$15i_?r_+LaF=%*q8+939U-YJfNP7!qU4JiH%vqC z<{KRRwCDl-Oxy}OUmOE%7iU245uboQCvvtsl*|HAzI`$;6V2Nle1qr#9TK;K9u~(y zPm434{}!KsIz-Nn0v;6$cR2VTgbMnq*b4f&I0$^9cxHzqxxa|~vRmA@W1^BVUD$R` z=1rn#X93?YR_~-SyTE@geg?i#JO=6!Zvy#Pqz*fhb7oTKhtN4Yxmd<(k*FCi&4Tc+r+z|zZc279Q>@v-&Mw!ign-z#1_zd#D35-;^AEmg_nxgca`El z4zhOBtY?CLD(XP%MF6y4?AuMlKM1}^yb8Kge7f6l$qYJ{pj6$y0~(m>@{}MS6b)pJ(!R<21WD#0Nl$vp8x;= delta 6566 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 J@?M1Xe*t*@2*dyY diff --git a/types.h b/types.h deleted file mode 100644 index 039653f2..00000000 --- a/types.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Just some handy typedefs that make it easier to think about the low - * level code - */ - -typedef unsigned char byte; -typedef unsigned short word; -typedef unsigned long dword; -typedef signed char sbyte; -typedef signed short sword; -typedef signed long sdword; -- 2.39.2