1 src/0.c: IN_initplayer(&player);//, 0);
\r
2 src/0.c: bakapee1 = FILENAME_1;//"data/aconita.vrl";
\r
3 src/0.c: bakapee2 = FILENAME_2;//"data/aconita.pal";
\r
5 src/0.c: //4 this dose the screen
\r
6 src/0.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15!
\r
7 src/0.c: //while (getch() != 13);
\r
8 src/0.c: unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks.
\r
9 src/0.c: // if the sprite's edge pixels are clear anyway, you can set this to 0.
\r
10 src/0.c: //4 this dose the sprite? wwww
\r
11 src/0.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15!
\r
12 src/0.c: omemptr = vga_state.vga_graphics_ram; // save original mem ptr
\r
13 src/0.c: if(IN_KeyDown(68)) //f10
\r
14 src/0.c: //gvar.kurokku.fpscap=!gvar.kurokku.fpscap;
\r
15 src/0.c: o = (0x10000UL - (uint16_t)gvar.video.page[1].data) + (ry * gvar.video.page[0].stridew) + (rx >> 2); // source offscreen
\r
16 src/0.c: o = gvar.video.page[0].pagesize; // source offscreen
\r
17 src/0.c: o2 = (ry * gvar.video.page[0].stridew) + (rx >> 2); // dest visible (original stride)
\r
18 src/0.c: //printf("[x%u y%u] [rx%u ry%u] [w%u h%u]\n", x, y, rx, ry, w, h);
\r
19 src/0.c: dstart = (gvar.video.page[0].height - dh) / 2; // center the squash effect on screen, otherwise it would squash to top of screen
\r
20 src/16.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
21 src/16.c: // DOSLIB: check our environment
\r
22 src/16.c: // DOSLIB: what CPU are we using?
\r
23 src/16.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
24 src/16.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
25 src/16.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
26 src/16.c: // the CPU to carry out tasks. --J.C.
\r
27 src/16.c: // DOSLIB: check for VGA
\r
28 src/16.c: // hardware must be VGA or higher!
\r
29 src/16.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log
\r
30 src/16.c:// modexPalBlack(); //so player will not see loadings~
\r
31 src/16.c: //modexprint(&screen, 32, 32, 1, 2, 0, "a", 1);
\r
32 src/16.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
33 src/bakapi4b.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
34 src/bakapi4b.c: // main variables values
\r
35 src/bakapi4b.c: d=4; // switch variable
\r
36 src/bakapi4b.c: key=2; // default screensaver number
\r
37 src/bakapi4b.c:// screen savers
\r
38 src/bakapi4b.c: while(d>0) // on!
\r
39 src/bakapi4b.c: { // conditions of screen saver
\r
40 src/bakapi4b.c: // user imput switch
\r
41 src/bakapi4b.c: printf("Enter 1, 2, 3, 4, or 6 to run a screensaver, or enter 0 to quit.\n", getch()); // prompt the user
\r
42 src/bakapi4b.c: //if(key==3){xx=yy=0;} // crazy screen saver wwww
\r
43 src/bakapi4b.c://pee!
\r
44 src/bakapi.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
45 src/bakapi.c:sword vgamodex_mode = 1; // 320x240 default
\r
46 src/bakapi.c: // allow changing default mode from command line
\r
47 src/bakapi.c: // (based on src/lib/modex16.c)
\r
48 src/bakapi.c: // 1 = 320x240
\r
49 src/bakapi.c: // 2 = 160x120
\r
50 src/bakapi.c: // 3 = 320x200
\r
51 src/bakapi.c: // 4 = 192x144
\r
52 src/bakapi.c: // 5 = 256x192
\r
53 src/bakapi.c: // DOSLIB: check our environment
\r
54 src/bakapi.c: // DOSLIB: what CPU are we using?
\r
55 src/bakapi.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
56 src/bakapi.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
57 src/bakapi.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
58 src/bakapi.c: // the CPU to carry out tasks. --J.C.
\r
59 src/bakapi.c: // DOSLIB: check for VGA
\r
60 src/bakapi.c: // hardware must be VGA or higher!
\r
61 src/bakapi.c: // main variables values
\r
62 src/bakapi.c: d=4; // switch variable
\r
63 src/bakapi.c: key=2; // default screensaver number
\r
64 src/bakapi.c: VGAmodeX(vgamodex_mode, 1, &gvar); // TODO: Suggestion: Instead of magic numbers for the first param, might I suggest defining an enum or some #define constants that are easier to remember? --J.C.
\r
65 src/bakapi.c: // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
\r
66 src/bakapi.c: // we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.
\r
67 src/bakapi.c: //modexPalUpdate(bmp.palette); //____
\r
68 src/bakapi.c: //modexDrawBmp(VGA, 0, 0, &bmp, 0); //____
\r
69 src/bakapi.c: //getch(); //____
\r
70 src/bakapi.c:// screen savers
\r
71 src/bakapi.c: while(d>0) // on!
\r
72 src/bakapi.c: getch(); // eat keyboard input
\r
73 src/bakapi.c: //right movement
\r
74 src/bakapi.c: //left movement
\r
75 src/bakapi.c: //down movement
\r
76 src/bakapi.c: //up movement
\r
77 src/bakapi.c: //getch(); // eat keyboard input
\r
78 src/bakapi.c: break; // 'q' or 'ESC' or 'p'
\r
79 src/bakapi.c: // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
\r
80 src/bakapi.c: // we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.
\r
81 src/bakapi.c: // user imput switch
\r
82 src/bakapi.c: //fprintf(stderr, "xx=%d yy=%d tile=%d\n", bakapee.xx, bakapee.yy, bakapee.tile);
\r
83 src/bakapi.c: //fprintf(stderr, "dx=%d dy=%d ", gvar.video.page[0].dx, gvar.video.page[0].dy);
\r
84 src/bakapi.c: //printf("\n");
\r
85 src/bakapi.c: case 'p': // test pan
\r
86 src/bakapi.c: case 'b': // test tile change
\r
87 src/bakapi.c: // this code is written around modex16 which so far is a better fit than using DOSLIB vga directly, so leave MXLIB code in.
\r
88 src/bakapi.c: // we'll integrate DOSLIB vga into that part of the code instead for less disruption. -- J.C.
\r
89 src/bakapi.c:#else // !defined(BOINK)
\r
90 src/bakapi.c:// FIXME: Does not compile. Do you want to remove this?
\r
91 src/bakapi.c:// INFO: This is a testing section for textrendering and panning for project 16 --sparky4
\r
92 src/bakapi.c: { // conditions of screen saver
\r
93 src/bakapi.c:// while(!kbhit())
\r
95 src/bakapi.c:// ding(&gvar.video.page[0], &bakapee, key);
\r
97 src/bakapi.c: //end of screen savers
\r
98 src/bakapi.c: //pdump(&gvar.video.page[0]);
\r
99 src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-48, "========================================");
\r
100 src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-40, "| |Chikyuu:$line1");
\r
101 src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-32, "| |$line2");
\r
102 src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-24, "| |$line3");
\r
103 src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-16, "| |$line4");
\r
104 src/bakapi.c:// mxOutText(xpos+1, ypos+gvar.video.page[0].height-8, "========================================");
\r
105 src/bakapi.c:// xpos+=xdir;
\r
106 src/bakapi.c:// ypos+=ydir;
\r
107 src/bakapi.c:// if( (xpos>(gvar.video.page[0].sw-gvar.video.page[0].width-1)) || (xpos<1)){xdir=-xdir;}
\r
108 src/bakapi.c:// if( (ypos>(gvar.video.page[0].sh-gvar.video.page[0].height-1)) || (ypos<1)){ydir=-ydir;}
\r
109 src/bakapi.c:// ch=getch();
\r
110 src/bakapi.c: if(ch==0x71)break; // 'q'
\r
111 src/bakapi.c: if(ch==0x1b)break; // 'ESC'
\r
112 src/bakapi.c:#endif // defined(BOINK)
\r
113 src/bakapi.c:// printf("page.width=%u ", gvar.video.page[0].width); printf("page.height=%u\n", gvar.video.page[0].height);
\r
114 src/bakapi.c://pee!
\r
115 src/bakapi.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
116 src/bakapi.h://project 16 testing define switch for veiwing the contents of the video memory --sparky4
\r
117 src/bakapi.h:#define BOINK // what does this mean? --J.C.
\r
118 src/emmtest.c:// Cut this out as emm.c
\r
119 src/emmtest.c: { // make sure we got EMM
\r
120 src/emmtest.c: //printf("EMM Hardware Information %lu\n", EMInfo());
\r
121 src/emmtest.c: //printf("b4 EMS *pEmmData=%s\n", *pEmmData);
\r
122 src/emmtest.c: pEmmData = (byte *)EMMalloc(&hEData, EMMCoreLeft()); // get 6 * 16K bytes - 96K
\r
123 src/emmtest.c: MapEMM(hEData, 0, PEMMDATAPAGENUM); // load 1st 4 pages into page frame: 0-3
\r
124 src/emmtest.c: //memset(pEmmData, 0x0e, 64000u);
\r
125 src/emmtest.c://0000 printf("(advi*EMMPAGESIZE)=%lu\n", advi);
\r
126 src/emmtest.c: memset(pEmmData, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
\r
127 src/emmtest.c://qqqq memset(pEmmData+0x10000, atoi(argv[1]), 0xffff);//sizeof(atoi(argv[1])));//((EMMCoreLeft())*EMMPAGESIZE));
\r
128 src/emmtest.c://---- UnmapEMM(hEData, 0, 4); // not absolutely necessary
\r
129 src/emmtest.c: MapEMM(hEData, 4, 2); // map last 2 pages: 4-5
\r
130 src/emmtest.c:// memset(pEmmData, atoi(argv[0]), 32768u);
\r
131 src/emmtest.c: // do some stuff with the first 64K of file data.
\r
132 src/emmtest.c: MapEMM(hEData, 4, 2); // only unmaps 1st two pages of prior 64k mapping
\r
133 src/emmtest.c: // do stuff with remaining 32K of data
\r
134 src/emmtest.c: // (*p)++;
\r
135 src/emmtest.c: // (*p)++;
\r
136 src/emmtest.c: //free(p);
\r
137 src/emmtest.c: UnmapEMM(hEData, 0, PEMMDATAPAGENUM); // should unmap before freeing
\r
138 src/emmtest.c: //printf("after EMS *pEmmData=%c\n", *pEmmData);
\r
139 src/emmtest.c: EMMFree(hEData); // finished with the file data
\r
140 src/emmtest.c: //printf("EMMPAGESIZE=%d\n", EMMPAGESIZE);
\r
141 src/emsdump.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
142 src/emsdump.c://#include <limits.h>
\r
143 src/emsdump.c: char huge *p =(char huge *)(GetEMMSeg0()*0x10000);//0xD0000000;
\r
144 src/emsdump.c: //char far *q =(char far *)0x53332225;
\r
145 src/emsdump.c: //while(!kbhit()){ printf("%p\n", ((GetEMMSeg0()*0x10000)+0x0fffffff)); }
\r
146 src/emsdump.c: //while(!kbhit()){ printf("%p\n", ((GetEMMSeg0()*0x10000)+0xffff)); }
\r
147 src/emsdump.c: //else printf("%p= %x% %ul\n", p, *p, i);
\r
148 src/emsdump.c:// (*p)++;
\r
149 src/emsdump.c:// printf(" %p\n", ((GetEMMSeg0()*0x10000)+0x0fffffff));
\r
150 src/emsdump.c: //printf("*q=%d\n",*q);
\r
151 src/emsdump.c: //printf(" q=%p\n", q);
\r
152 src/exmmtest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
153 src/exmmtest.c://#include "src/lib/16_vl.h"
\r
154 src/exmmtest.c://file load or read definition
\r
155 src/exmmtest.c://#define EXMMVERBOSE
\r
156 src/exmmtest.c:// printf("Next string is: [");
\r
157 src/exmmtest.c:// while(*scrptr<16)
\r
158 src/exmmtest.c:// {
\r
159 src/exmmtest.c:// printf("%c", *(screen:>scrptr));
\r
160 src/exmmtest.c:// //printf("\b");
\r
161 src/exmmtest.c:// scrptr++;
\r
163 src/exmmtest.c:// }
\r
164 src/exmmtest.c:// printf("]\n");
\r
165 src/exmmtest.c:// printf("press any key to continue!\n");
\r
166 src/exmmtest.c:// getch();
\r
167 src/exmmtest.c://static global_game_variables_t gvar;
\r
168 src/exmmtest.c://#ifdef __WATCOMC__
\r
169 src/exmmtest.c:// __segment sega;
\r
170 src/exmmtest.c://#endif
\r
171 src/exmmtest.c: //static byte bakapee[64];
\r
172 src/exmmtest.c: //file name //
\r
173 src/exmmtest.c: //file name //
\r
174 src/exmmtest.c: dbg_debugpm=1; //debug pm
\r
175 src/exmmtest.c: //PRINTBB
\r
176 src/exmmtest.c: //{ printf("filename!: "); scanf("%[^\n]", &bakapee); }
\r
177 src/exmmtest.c: //printf("main()=%Fp start MM\n", *argv[0]);
\r
178 src/exmmtest.c: //printf("ok\n");
\r
179 src/exmmtest.c://#ifdef __WATCOMC__
\r
180 src/exmmtest.c: //printf("pmstarted ok\n");
\r
181 src/exmmtest.c: //PM_CheckMainMem(&gvar);
\r
182 src/exmmtest.c://#endif
\r
183 src/exmmtest.c:// printf(" done!\n");
\r
184 src/exmmtest.c: //0000PRINTBB;
\r
185 src/exmmtest.c:// printf("press any key to continue!\n");
\r
186 src/exmmtest.c:// getch();
\r
187 src/exmmtest.c:// bakapeehandle = open(bakapee,O_RDONLY | O_BINARY, S_IREAD);
\r
188 src/exmmtest.c:// printf("size of big buffer~=%u\n", _bmsize(segu, bigbuffer));
\r
189 src/exmmtest.c:// if(CA_FarRead(bakapeehandle,(void far *)&bigbuffer,sizeof(bigbuffer),&gvar.mm))
\r
190 src/exmmtest.c:// close(bakapeehandle);
\r
191 src/exmmtest.c: //hmm functions in cache system use the buffered stuff
\r
192 src/exmmtest.c://#ifdef __WATCOMC__
\r
193 src/exmmtest.c:// printf("\nsize of big buffer~=%u\n", _bmsize(sega, bigbuffer));
\r
194 src/exmmtest.c://#endif
\r
195 src/exmmtest.c: //printf("dark purple = purgable\n");
\r
196 src/exmmtest.c: //printf("medium blue = non purgable\n");
\r
197 src/exmmtest.c: //printf("red = locked\n");
\r
198 src/exmmtest.c:// printf("press any key to continue!\n");
\r
199 src/exmmtest.c:// DebugMemory_(&gvar, 1);
\r
200 src/exmmtest.c: //printf("bakapee1=%s\n", bakapee1);
\r
201 src/exmmtest.c: //printf("bakapee2=%s\n", bakapee2);
\r
202 src/exmmtest.c://#ifdef __WATCOMC__
\r
203 src/exmmtest.c://#endif
\r
204 src/exmmtest.c: //printf("bigbr= %04x", bigbuffer);
\r
205 src/exmmtest.c: //printf("\n");
\r
206 src/exmmtest.c: //printf("&bigb=%04x", &bigbuffer);
\r
207 src/exmmtest.c://this is far printf("Total free: %lu\n", (dword)(GetFreeSize()));
\r
208 src/exmmtest.c: //printf("core left: %lu\n", (dword)_coreleft());
\r
209 src/exmmtest.c: //printf("far core left: %lu\n", (dword)_farcoreleft());
\r
210 src/exmmtest.c: //printf("based core left: %lu\n", (dword)_basedcoreleft());
\r
211 src/exmmtest.c: //printf("huge core left: %lu\n", (dword)_hugecoreleft());
\r
212 src/fmemtest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
213 src/fmemtest.c: //void __based(__self) *pee;
\r
214 src/fmemtest.c: //word csw=0,dsw=0,esw=0,ssw=0,ipw=0;
\r
215 src/fmemtest.c: //ptr=&x;
\r
216 src/fmemtest.c: //printf("&ptr0=%Fp\n", &ptr0);
\r
217 src/fmemtest.c: //printf("&ptr=%Fp\n", &ptr);
\r
218 src/fmemtest.c: //lea csw,cs
\r
219 src/fmemtest.c: //lds DS,dsw
\r
220 src/fmemtest.c: //les ES,esw
\r
221 src/fmemtest.c:// mov ss,ssw
\r
222 src/fmemtest.c:// mov ip,ipw
\r
223 src/fmemtest.c: //printf("ip=%u\n", ipw);
\r
224 src/fmemtest.c: //printf("ss=%u\n", ssw);
\r
225 src/fmemtest.c: //printf("cs=%u\n", csw);
\r
226 src/fmemtest.c: //printf("ds=%u\n", dsw);
\r
227 src/fmemtest.c: //printf("es=%u\n", esw);
\r
228 src/fontgfx.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
229 src/fontgfx.c://#include "lib/16text.h"
\r
230 src/fontgfx.c: //JMOJI
\r
231 src/fontgfx.c: //word ri;
\r
232 src/fontgfx.c: byte pee[6]; // must be large enough for sprintf("%zc",...) and sprintf("%u",(byte value))
\r
233 src/fontgfx.c:// static byte *rosa;
\r
234 src/fontgfx.c: // DOSLIB: check our environment
\r
235 src/fontgfx.c: // DOSLIB: what CPU are we using?
\r
236 src/fontgfx.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
237 src/fontgfx.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
238 src/fontgfx.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
239 src/fontgfx.c: // the CPU to carry out tasks. --J.C.
\r
240 src/fontgfx.c: // DOSLIB: check for VGA
\r
241 src/fontgfx.c: // hardware must be VGA or higher!
\r
242 src/fontgfx.c: // NTS: We're in Mode-X now. printf() is useless. Do not use printf(). Or INT 10h text printing. Or DOS console output.
\r
243 src/fontgfx.c: //modexprint(16, 16, 1, 15, "wwww");
\r
244 src/fontgfx.c: //getch();
\r
245 src/fontgfx.c:// vga_moveto(0,0);
\r
246 src/fontgfx.c:// vga_sync_bios_cursor();
\r
247 src/fontgfx.c: //getch();
\r
248 src/fontgfx.c: //modexprint(100, 100, 1, 47, 0, "wwww");
\r
249 src/fontgfx.c:// modexprint(0, 0, 1, 0, colpee, &rose);
\r
250 src/fontgfx.c://++++ modexprint(&gvar.video.page[0], 0, 0, 0, 0, colpee, &ibmlogo);
\r
251 src/fontgfx.c:// modexprintbig(&gvar.video.page[0], 0, 0, 1, colpee, 0, "IBM");
\r
252 src/fontgfx.c:// modexprint(0, 0, 1, 0, colpee, ROSE);
\r
253 src/fontgfx.c://++++ getch();
\r
254 src/fontgfx.c:// rosa=malloc(sizeof(ROSE));
\r
255 src/fontgfx.c:// (*rosa)=(byte)ROSE;
\r
256 src/fontgfx.c: //printf("\nh=%d\n", '8');
\r
257 src/fontgfx.c:// printf("\n%c\n", e);
\r
258 src/fonttest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
259 src/fonttest.c: //print the addresses of the fonts
\r
260 src/fonttest.c:// printf("*argv[1]=%d\n", *argv[1]);
\r
261 src/fonttest.c: //load the letter 'A'
\r
262 src/fonttest.c: //render the letter in ascii art
\r
263 src/inputest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
264 src/inputest.c: //extern struct inconfig inpu;
\r
265 src/inputest.c: //while(!IN_KeyDown(sc_Escape))
\r
266 src/inputest.c: //shinkutxt(&gvar);
\r
267 src/inputest.c: //right movement
\r
268 src/inputest.c: //left movement
\r
269 src/inputest.c: //down movement
\r
270 src/inputest.c: //up movement
\r
271 src/inputest.c: //printf("%u\n", IN_KeyDown(sc_Escape));
\r
272 src/inputest.c: //if(
\r
273 src/inputest.c: IN_qb(sc_9);//>0) printf("IN_qb(sc_9)=%u\n", IN_qb(sc_9));
\r
274 src/inputest.c: if(IN_KeyDown(88)) //speed
\r
275 src/inputest.c: //IN_Ack();
\r
276 src/inputest.c: //printf("%u\n", in.Keyboard[sc_Escape]);
\r
277 src/maptest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
278 src/maptest.c://TODO: ADD MEMORY MANAGER! WWWW
\r
279 src/maptest.c: //fprintf(stderr, "program always crashes for some reason....\n");
\r
280 src/midi.c:// fprintf(stderr,"Type 0x7F len=%lu %p/%p/%p\n",len,t->raw,t->read,t->fence);
\r
281 src/midi.c:// fprintf(stderr,"Type 0x%02x len=%lu %p/%p/%p\n",c,d,t->raw,t->read,t->fence);
\r
282 src/midi.c:// fprintf(stderr,"Sysex len=%lu %p/%p/%p\n",len,t->raw,t->read,t->fence);
\r
283 src/midi.c:// midi_tick();
\r
284 src/miditest.c: //adlib_shut_up();
\r
285 src/miditest.c: //adv = ptick;
\r
286 src/miditest.c: //ptick++;
\r
287 src/miditest.c: //adlib_shut_up();
\r
288 src/palettec.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
289 src/palettel.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
290 src/palettel.c: //page.width += 32;
\r
291 src/palettel.c: //page.height += 32;
\r
292 src/palettel.c:// modexPalSave(pal);
\r
293 src/pcxtest2.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
294 src/pcxtest2.c://----#include "src/lib/planar.h"
\r
295 src/pcxtest2.c: // TODO Make this fast. It's SLOOOOOOW
\r
296 src/pcxtest2.c: //offset+=p->width;
\r
297 src/pcxtest2.c: //offset++;
\r
298 src/pcxtest2.c://---- planar_buf_t *p;
\r
299 src/pcxtest2.c: // DOSLIB: check our environment
\r
300 src/pcxtest2.c: // DOSLIB: what CPU are we using?
\r
301 src/pcxtest2.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
302 src/pcxtest2.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
303 src/pcxtest2.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
304 src/pcxtest2.c: // the CPU to carry out tasks. --J.C.
\r
305 src/pcxtest2.c: // DOSLIB: check for VGA
\r
306 src/pcxtest2.c: // hardware must be VGA or higher!
\r
307 src/pcxtest2.c://0000 bmp = bitmapLoadPcx("data/koishi~~.pcx");
\r
308 src/pcxtest2.c:// bmp = bitmapLoadPcx("data/koishi^^.pcx");
\r
309 src/pcxtest2.c:// bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx");
\r
310 src/pcxtest2.c://---- p = planar_buf_from_bitmap(&bmp);
\r
311 src/pcxtest2.c: //for(i=0; i<100 ;i++) {
\r
312 src/pcxtest2.c: //}
\r
313 src/pcxtest2.c: //for(i=0; i<100 ;i++) {
\r
314 src/pcxtest2.c://0000 modexDrawBmp(&gvar.video.page[0], 20, 20, &bmp);
\r
315 src/pcxtest2.c: //}
\r
316 src/pcxtest2.c: //for(i=0; i<100; i++) {
\r
317 src/pcxtest2.c://0000 modexCopyPageRegion(&gvar.video.page[0], &gvar.video.page[0], 20, 20, 128, 20, 64, 64);
\r
318 src/pcxtest2.c: //}
\r
319 src/pcxtest2.c: //for(i=0; i<100 ;i++) {
\r
320 src/pcxtest2.c: //}
\r
321 src/pcxtest2.c: //for(i=0; i<100 ;i++) {
\r
322 src/pcxtest2.c://0000 modexDrawSprite(&gvar.video.page[0], 20, 20, &bmp);
\r
323 src/pcxtest2.c: //}
\r
324 src/pcxtest2.c: //_fmemset(MK_FP(0xA000, 0), (int)p->plane, gvar.video.page[0].sw*(gvar.video.page[0].sh*2));
\r
325 src/pcxtest2.c: //modexDrawBmp(&gvar.video.page[0], 0, 0, &bmp);
\r
326 src/pcxtest2.c: //DrawPBuf(&gvar.video.page[0], 0, 0, p, 0);
\r
327 src/pcxtest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
328 src/pcxtest.c://----#include "src/lib/planar.h"
\r
329 src/pcxtest.c://---- planar_buf_t *p;
\r
330 src/pcxtest.c: // DOSLIB: check our environment
\r
331 src/pcxtest.c: // DOSLIB: what CPU are we using?
\r
332 src/pcxtest.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
333 src/pcxtest.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
334 src/pcxtest.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
335 src/pcxtest.c: // the CPU to carry out tasks. --J.C.
\r
336 src/pcxtest.c: // DOSLIB: check for VGA
\r
337 src/pcxtest.c: // hardware must be VGA or higher!
\r
338 src/pcxtest.c://0000 bmp = bitmapLoadPcx("data/koishi~~.pcx");
\r
339 src/pcxtest.c:// bmp = bitmapLoadPcx("data/koishi^^.pcx");
\r
340 src/pcxtest.c:// bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx");
\r
341 src/pcxtest.c://---- p = planar_buf_from_bitmap(&bmp);
\r
342 src/pcxtest.c: //for(i=0; i<100 ;i++) {
\r
344 src/pcxtest.c: //for(i=0; i<100 ;i++) {
\r
345 src/pcxtest.c://0000 modexDrawBmp(&gvar.video.page[0], 20, 20, &bmp);
\r
347 src/pcxtest.c: //for(i=0; i<100; i++) {
\r
348 src/pcxtest.c://0000 modexCopyPageRegion(&gvar.video.page[0], &gvar.video.page[0], 20, 20, 128, 20, 64, 64);
\r
350 src/pcxtest.c: //for(i=0; i<100 ;i++) {
\r
352 src/pcxtest.c: //for(i=0; i<100 ;i++) {
\r
353 src/pcxtest.c://0000 modexDrawSprite(&gvar.video.page[0], 20, 20, &bmp);
\r
355 src/pcxtest.c: //_fmemset(MK_FP(0xA000, 0), (int)p->plane, gvar.video.page[0].sw*(gvar.video.page[0].sh*2));
\r
356 src/pcxtest.c: //modexDrawBmp(&gvar.video.page[0], 0, 0, &bmp);
\r
357 src/pcxtest.c: //DrawPBuf(&gvar.video.page[0], 0, 0, p, 0);
\r
358 src/planrpcx.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
359 src/planrpcx.c:word start;//, w;
\r
360 src/planrpcx.c://w=0;
\r
361 src/planrpcx.c://printf("%u ", w++);
\r
362 src/planrpcx.c:// if(argv[2]) baka = atoi(argv[2]);
\r
363 src/planrpcx.c:// else
\r
364 src/planrpcx.c://fprintf(stderr, "%u ", w++);
\r
365 src/planrpcx.c://fprintf(stderr, "%u ", w++);
\r
366 src/planrpcx.c:// ptmp = planarLoadPcx("data/ptmp.pcx");
\r
367 src/planrpcx.c://fprintf(stderr, "%u ", w++);
\r
368 src/planrpcx.c://fprintf(stderr, "^^;", w++);
\r
369 src/planrpcx.c://getch();
\r
370 src/planrpcx.c: //fix up the palette and everything
\r
371 src/planrpcx.c: //clear and draw one sprite and one bitmap
\r
372 src/planrpcx.c: //update display~
\r
373 src/planrpcx.c: //non sprite comparison
\r
374 src/planrpcx.c:// oldDrawBmp(VGA, 20, 20, &bmp, 0);
\r
375 src/planrpcx.c: //modexDrawBmpPBuf (&gvar.video.page[0], 32, 32, &p);
\r
376 src/planrpcx.c:// start = *clockw;
\r
377 src/planrpcx.c:// modexCopyPageRegion(&gvar.video.page[0], &gvar.video.page[0], 0, 0, 0, 0, 320, 240);
\r
378 src/planrpcx.c:// t2 = (*clockw-start)/18.2;
\r
379 src/planrpcx.c: //(page_t *page, int x, int y, int rx, int ry, int rw, int rh, planar_buf_t *p, boolean sprite);
\r
380 src/planrpcx.c: modexDrawPBufRegion (&gvar.video.page[0], p.width, 0, p.width-(p.width/4), p.height-(p.height/4), p.width/4, p.height/4, &p, 0);//(&gvar.video.page[0], 0, 0, 0+p.width, 0, p.width, p.height, &p, 0);
\r
381 src/planrpcx.c: //++++ modexPalUpdate1(ptmp.palette);
\r
382 src/planrpcx.c: //modexDrawBmpPBufRegion(&gvar.video.page[0], 64, 64, 48, 32, 24, 32, ptmp);
\r
383 src/planrpcx.c: //modexDrawPBuf(&gvar.video.page[0], 64, 64, &ptmp, 0);
\r
384 src/planrpcx.c: //print out the contents of each plane
\r
385 src/planrpcx.c: //fprintf(stderr, "gvar.video.page[0].width: %u\n", gvar.video.page[0].width);
\r
386 src/planrpcx.c: //fprintf(stderr, "gvar.video.page[0].height: %u\n", gvar.video.page[0].height);
\r
387 src/_scroll.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
388 src/_scroll.c://#include "src/lib/16_head.h"//included already
\r
389 src/_scroll.c://#define FADE
\r
390 src/_scroll.c:#define MODEX //this is for mode x initiating
\r
391 src/_scroll.c://word far *clock= (word far*) 0x046C; /* 18.2hz clock */
\r
392 src/_scroll.c://bitmap_t *p;
\r
393 src/_scroll.c://word pn=0; //i forgot ww
\r
394 src/_scroll.c://debugswitches
\r
395 src/_scroll.c://extern boolean pageflipflop=1;
\r
396 src/_scroll.c: //static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */
\r
397 src/_scroll.c: //map_view_db_t pgid[4];
\r
398 src/_scroll.c://#ifdef FADE
\r
399 src/_scroll.c://#endif
\r
400 src/_scroll.c: // DOSLIB: check our environment
\r
401 src/_scroll.c: // DOSLIB: what CPU are we using?
\r
402 src/_scroll.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
403 src/_scroll.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
404 src/_scroll.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
405 src/_scroll.c: // the CPU to carry out tasks. --J.C.
\r
406 src/_scroll.c: // DOSLIB: check for VGA
\r
407 src/_scroll.c: // hardware must be VGA or higher!
\r
408 src/_scroll.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log
\r
409 src/_scroll.c: * read_vrs(&gvar, "data/spri/chikyuu.vrs", player[0].spri->spritesheet); // load sprite
\r
410 src/_scroll.c: modexPalBlack(); //reset the palette~
\r
411 src/_scroll.c: modexPalBlack(); //so player will not see loadings~
\r
412 src/_scroll.c: //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen
\r
413 src/_scroll.c: //_fmemcpy(mv[1].page->data, mv[0].page->data, mv[0].page->pagesize);
\r
414 src/_scroll.c: //TODO: put player in starting position of spot
\r
415 src/_scroll.c: //default player position on the viewable map
\r
416 src/_scroll.c: //IN_initplayer(&player, 1);
\r
417 src/_scroll.c: //modexClearRegion(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 32, 15);
\r
418 src/_scroll.c: //PBUFSFUN(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 64, 24, 32, PLAYERBMPDATA);
\r
419 src/_scroll.c: //PBUFSFUN(mv[0].page, player[0].x, player[0].y-TILEWH, 16, 64, 16, 32, player[0].data);
\r
420 src/_scroll.c: else modexShowPage(mv[0].page);//!(gvar.video.p)
\r
421 src/_scroll.c: shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible.
\r
422 src/_scroll.c:// modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 47);
\r
423 src/_scroll.c:// modexClearRegion(mv[3].page, 0, 0, mv[3].page->width, mv[3].page->height, 45);
\r
425 src/_scroll.c:// unsigned int k,j,o;
\r
426 src/_scroll.c:// /* fill screen with a distinctive pattern */
\r
427 src/_scroll.c:// for (k=0;k < vga_state.vga_width;k++) {
\r
428 src/_scroll.c:// o = k >> 2;
\r
429 src/_scroll.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3));
\r
430 src/_scroll.c:// for (j=0;j < vga_state.vga_height;j++,o += vga_state.vga_stride)
\r
431 src/_scroll.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15!
\r
434 src/_scroll.c: //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square
\r
435 src/_scroll.c: //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction
\r
436 src/_scroll.c: //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map
\r
437 src/_scroll.c: //player movement
\r
438 src/_scroll.c: //printf(" player[0].q: %d", player[0].q); printf(" player[0].d: %d\n", player[0].d);
\r
439 src/_scroll.c: //the scripting stuff....
\r
440 src/_scroll.c: //if(((player[0].triggerx == TRIGGX && player[0].triggery == TRIGGY) && IN_KeyDown(0x1C))||(player[0].tx == 5 && player[0].ty == 5))
\r
441 src/_scroll.c: //debugging binds!
\r
442 src/_scroll.c: } //p
\r
443 src/_scroll.c:// paloffset=0; modexPalBlack(); modexPalUpdate(player[0].data, &paloffset, 0, 0);
\r
444 src/_scroll.c:// printf("1paloffset = %d\n", paloffset/3);
\r
445 src/_scroll.c:// modexPalUpdate(map.tiles->data, &paloffset, 0, 0);
\r
446 src/_scroll.c:// printf("2paloffset = %d\n", paloffset/3);
\r
447 src/_scroll.c:// modexpdump(mv[0].page); modexpdump(mv[1].page);
\r
448 src/_scroll.c: //pan switch
\r
449 src/_scroll.c: if(IN_KeyDown(88)){panswitch=!panswitch; IN_UserInput(1,1);} //f12
\r
450 src/_scroll.c: if(IN_KeyDown(87)) //f11
\r
451 src/_scroll.c:// VGAmodeX(0, 0, &gvar);
\r
452 src/_scroll.c:// IN_Shutdown();
\r
453 src/_scroll.c:// __asm
\r
455 src/_scroll.c:// mov ah,31h
\r
456 src/_scroll.c:// int 21h
\r
458 src/_scroll.c: if(IN_KeyDown(68)) //f10
\r
459 src/_scroll.c: if(IN_KeyDown(67)) //f9
\r
460 src/_scroll.c: //IN_UserInput(1,1);
\r
461 src/_scroll.c: if(IN_KeyDown(66)) //f8
\r
462 src/_scroll.c:// modexDrawSprite(mv[0].page, 16, 16, p);
\r
463 src/_scroll.c:// modexDrawSprite(mv[0].page, 32+48, 16, (player[0].data));
\r
464 src/_scroll.c: //TODO fmemtest into page
\r
465 src/_scroll.c: /*if(IN_KeyDown(4+1)) //4
\r
467 src/_scroll.c: //if(IN_KeyDown(11)){ modexPalOverscan(15); }
\r
468 src/_scroll.c: if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync!
\r
469 src/_scroll.c: //if(player[0].hp==0) printf("%d wwww\n", player[0].y+8);
\r
470 src/_scroll.c: //else printf("\nplayer[0].y: %d\n", player[0].y);
\r
471 src/_scroll.c:// printf("palette offset: %d\n", paloffset/3);
\r
472 src/_scroll.c://++++ printf("Total used: %zu\n", oldfreemem-GetFreeSize());
\r
473 src/_scroll.c://++++ printf("Total free: %zu\n", GetFreeSize());
\r
474 src/_scroll.c://not used now printf("temporary player sprite 0: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=45556867\n");
\r
475 src/_scroll.c://not used now printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n");
\r
476 src/_scroll.c: //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty);
\r
477 src/_scroll.c: //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk);
\r
478 src/_scroll.c: //0000printf("gvar.video.clk=%f", gvar.video.clk);
\r
479 src/_scroll.c: //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv[0].map->width, mv[0].map->height, mv[0].map->data[0]);
\r
480 src/scroll.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
481 src/scroll.c://#define FADE
\r
482 src/scroll.c:#define MODEX //this is for mode x initiating
\r
483 src/scroll.c://word far *clock= (word far*) 0x046C; /* 18.2hz clock */
\r
484 src/scroll.c://bitmap_t *p;
\r
485 src/scroll.c://word pn=0; //i forgot ww
\r
486 src/scroll.c://debugswitches
\r
487 src/scroll.c://extern boolean pageflipflop=1;
\r
488 src/scroll.c: //static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */
\r
489 src/scroll.c: //map_view_db_t pgid[4];
\r
490 src/scroll.c://#ifdef FADE
\r
491 src/scroll.c: //static word paloffset=0;
\r
492 src/scroll.c://#endif
\r
493 src/scroll.c: //byte *mesg=malloc(sizeof(dword));
\r
494 src/scroll.c: // DOSLIB: check our environment
\r
495 src/scroll.c: // DOSLIB: what CPU are we using?
\r
496 src/scroll.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
497 src/scroll.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
498 src/scroll.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
499 src/scroll.c: // the CPU to carry out tasks. --J.C.
\r
500 src/scroll.c: // DOSLIB: check for VGA
\r
501 src/scroll.c: // hardware must be VGA or higher!
\r
502 src/scroll.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log
\r
503 src/scroll.c: //mappalptr = map.tiles->btdata->palette;
\r
504 src/scroll.c: player[0].data = malloc(48*128); //TODO use exmm
\r
505 src/scroll.c: *player[0].data = bitmapLoadPcx("data/chikyuu.pcx"); // load sprite
\r
506 src/scroll.c:////++++ (player[0].data) = *planar_buf_from_bitmap(&p);
\r
507 src/scroll.c: //IN_Default(1,&player,ctrl_Joystick);
\r
508 src/scroll.c:// printf("%dx%d\n", gvar.video.page[0].sw, gvar.video.page[0].sh);
\r
509 src/scroll.c: modexPalBlack(); //reset the palette~
\r
510 src/scroll.c:// printf("Total used @ before palette initiation: %zu\n", oldfreemem-GetFreeSize());
\r
511 src/scroll.c://++++ player[0].data.offset=(paloffset/3);
\r
512 src/scroll.c://++++ modexPalUpdate1(&player[0].data, &paloffset, 0, 0);
\r
513 src/scroll.c://++++0000 modexPalUpdate1(map.tiles->btdata->palette);
\r
514 src/scroll.c: //printf(" %d\n", sizeof(ptmp->data));
\r
515 src/scroll.c: //printf("1: %d\n", paloffset);
\r
516 src/scroll.c://++++ map.tiles->data->offset=(paloffset/3);
\r
517 src/scroll.c: //XTmodexPalUpdate(map.tiles->data, &paloffset, 0, 0);
\r
518 src/scroll.c:// printf("\n====\n");
\r
519 src/scroll.c:// printf("0 paloffset= %d\n", paloffset/3);
\r
520 src/scroll.c:// printf("====\n\n");
\r
521 src/scroll.c: modexPalBlack(); //so player will not see loadings~
\r
522 src/scroll.c: //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen
\r
523 src/scroll.c: //_fmemcpy(mv[1].page->data, mv[0].page->data, mv[0].page->pagesize);
\r
524 src/scroll.c: //TODO: put player in starting position of spot
\r
525 src/scroll.c: //default player position on the viewable map
\r
526 src/scroll.c: IN_initplayer(&player);//, 0);
\r
527 src/scroll.c: //IN_initplayer(&player, 1);
\r
528 src/scroll.c: //modexClearRegion(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 32, 15);
\r
529 src/scroll.c: //PBUFSFUN(mv[1].page, player[0].x, player[0].y-TILEWH, 16, 64, 24, 32, PLAYERBMPDATA);
\r
530 src/scroll.c: else modexShowPage(mv[0].page);//!(gvar.video.p)
\r
531 src/scroll.c: shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible.
\r
532 src/scroll.c:// modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 47);
\r
533 src/scroll.c:// modexClearRegion(mv[3].page, 0, 0, mv[3].page->width, mv[3].page->height, 45);
\r
535 src/scroll.c:// unsigned int k,j,o;
\r
536 src/scroll.c:// /* fill screen with a distinctive pattern */
\r
537 src/scroll.c:// for (k=0;k < vga_state.vga_width;k++) {
\r
538 src/scroll.c:// o = k >> 2;
\r
539 src/scroll.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3));
\r
540 src/scroll.c:// for (j=0;j < vga_state.vga_height;j++,o += vga_state.vga_stride)
\r
541 src/scroll.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15!
\r
544 src/scroll.c: //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square
\r
545 src/scroll.c: //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction
\r
546 src/scroll.c: //when player[0].tx or player[0].ty == 0 or player[0].tx == 20 or player[0].ty == 15 then stop because that is edge of map and you do not want to walk of the map
\r
547 src/scroll.c: //player movement
\r
548 src/scroll.c: //printf(" player[0].q: %d", player[0].q); printf(" player[0].d: %d\n", player[0].d);
\r
549 src/scroll.c: //the scripting stuff....
\r
550 src/scroll.c: //if(((player[0].triggerx == TRIGGX && player[0].triggery == TRIGGY) && IN_KeyDown(0x1C))||(player[0].tx == 5 && player[0].ty == 5))
\r
551 src/scroll.c: //debugging binds!
\r
552 src/scroll.c: } //p
\r
553 src/scroll.c: //pan switch
\r
554 src/scroll.c: if(IN_KeyDown(88)){panswitch=!panswitch; IN_UserInput(1,1);} //f12
\r
555 src/scroll.c: if(IN_KeyDown(87)) //f11
\r
556 src/scroll.c:// VGAmodeX(0, 0, &gvar);
\r
557 src/scroll.c:// IN_Shutdown();
\r
558 src/scroll.c:// __asm
\r
560 src/scroll.c:// mov ah,31h
\r
561 src/scroll.c:// int 21h
\r
563 src/scroll.c: if(IN_KeyDown(68)) //f10
\r
564 src/scroll.c: if(IN_KeyDown(67)) //f9
\r
565 src/scroll.c: //IN_UserInput(1,1);
\r
566 src/scroll.c: if(IN_KeyDown(66)) //f8
\r
567 src/scroll.c:// modexDrawSprite(mv[0].page, 16, 16, p);
\r
568 src/scroll.c: //TODO fmemtest into page
\r
569 src/scroll.c: /*if(IN_KeyDown(4+1)) //4
\r
571 src/scroll.c: //if(IN_KeyDown(11)){ modexPalOverscan(15); }
\r
572 src/scroll.c: if((player[0].q==1) && !(player[0].x%TILEWH==0 && player[0].y%TILEWH==0)) break; //incase things go out of sync!
\r
573 src/scroll.c: //if(player[0].hp==0) printf("%d wwww\n", player[0].y+8);
\r
574 src/scroll.c: //else printf("\nplayer[0].y: %d\n", player[0].y);
\r
575 src/scroll.c:// printf("palette offset: %d\n", paloffset/3);
\r
576 src/scroll.c://++++ printf("Total used: %zu\n", oldfreemem-GetFreeSize());
\r
577 src/scroll.c://++++ printf("Total free: %zu\n", GetFreeSize());
\r
578 src/scroll.c://not used now printf("temporary player sprite 0: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=45556867\n");
\r
579 src/scroll.c://not used now printf("temporary player sprite 1: http://www.pixiv.net/member_illust.php?mode=medium&illust_id=44606385\n");
\r
580 src/scroll.c: //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty);
\r
581 src/scroll.c: //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk);
\r
582 src/scroll.c: //0000printf("gvar.video.clk=%f", gvar.video.clk);
\r
583 src/scroll.c: //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv[0].map->width, mv[0].map->height, mv[0].map->data[0]);
\r
584 src/sountest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
585 src/sountest.c://#include "src/lib/16_snd.h"
\r
586 src/sountest.c:// static FMInstrument testInst =
\r
588 src/sountest.c://0x00, 0x01, /* modulator frequency multiple... 0x20 */
\r
589 src/sountest.c://0x00, 0x00, /* modulator frequency level... 0x40 */
\r
590 src/sountest.c://0xF0, 0xF0, /* modulator attack/decay... 0x60 */
\r
591 src/sountest.c://0x73, 0x73, /* modulator sustain/release... 0x80 */
\r
592 src/sountest.c://0x03, 0x00, /* output waveform distortion 0xE0 */
\r
593 src/sountest.c://0x36, /* feedback algorithm and strength 0xC0 */
\r
594 src/sountest.c://};
\r
595 src/sountest.c: //FMReset();
\r
596 src/sountest.c: //FMSetVoice(0, &testInst);
\r
597 src/sountest.c:// vga_bios_set_80x50_text();
\r
598 src/sountest.c: //FMKeyOn(0, 0x106, 4);
\r
599 src/sountest.c: //FMKeyOff(0);
\r
600 src/test0.c:// w = _nmalloc(sizeof(unsigned));
\r
601 src/test2.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
602 src/test2.c://#include "src/lib/bitmap.h"
\r
603 src/test2.c://---- planar_buf_t *p;
\r
604 src/test2.c: //byte color;
\r
605 src/test2.c:// file = fopen("ptmp0.pcx", "wb");
\r
606 src/test2.c: //fwrite(p, 1, p->width*p->height, file);
\r
607 src/test2.c: //fclose(file);
\r
608 src/test.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
609 src/test.c: //argument
\r
610 src/test.c: // DOSLIB: check our environment
\r
611 src/test.c: // DOSLIB: what CPU are we using?
\r
612 src/test.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
613 src/test.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
614 src/test.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
615 src/test.c: // the CPU to carry out tasks. --J.C.
\r
616 src/test.c: // DOSLIB: check for VGA
\r
617 src/test.c: // hardware must be VGA or higher!
\r
618 src/test.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log
\r
619 src/test.c: //modexPalOverscan(44+1);
\r
620 src/test.c:// gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]);
\r
621 src/test.c:// gvar.video.page[1] = modexNextPage(&gvar.video.page[0]);
\r
622 src/test.c: // go right
\r
623 src/test.c: // go left
\r
624 src/test.c: // go up
\r
625 src/test.c: // go down
\r
626 src/test.c:// if(IN_KeyDown(6))
\r
628 src/test.c:// modexClearRegion(&gvar.video.page[1], gvar.video.page[1].sw, 16, 8, 4, 45);
\r
630 src/test.c:// if(IN_KeyDown(4+1)){
\r
631 src/test.c:// modexClearRegion(&gvar.video.page[1], 16, 16, gvar.video.page[1].sw, gvar.video.page[1].sh, 128);
\r
632 src/test.c:// modexClearRegion(&gvar.video.page[1], 32, 32, gvar.video.page[1].sw-32, gvar.video.page[1].sh-32, 42);
\r
633 src/test.c:// modexClearRegion(&gvar.video.page[1], 48, 48, gvar.video.page[1].sw-64, gvar.video.page[1].sh-64, 128);
\r
636 src/test.c:// if(i>PAL_SIZE) i=0;
\r
639 src/testemm0.c://#include "src/lib/doslib/cpu.h"
\r
640 src/testemm0.c://#include <hw/dos/doswin.h>
\r
641 src/testemm0.c:// printf("Allocating EMM pages (1.6MB): ");
\r
642 src/testemm0.c: //h2 = emm_alloc_pages(0x19999AUL >> 14UL);
\r
643 src/testemm0.c: //printf("Allocating EMM pages (12MB): ");
\r
644 src/testemm0.c: //h3 = emm_alloc_pages(0xC00000UL >> 14UL);
\r
645 src/testemm.c://#include "src/lib/doslib/cpu.h"
\r
646 src/testemm.c://#include <hw/dos/doswin.h>
\r
647 src/tesuto.c: vga_enable_256color_modex(); // VGA mode X
\r
648 src/tesuto.c: vga_state.vga_width = 320; // VGA lib currently does not update this
\r
649 src/tesuto.c: vga_state.vga_height = 240; // VGA lib currently does not update this
\r
650 src/tesuto.c:#if 1 // 320x240 test mode: this is how Project 16 is using our code, enable for test case
\r
651 src/tesuto.c: // 320x240 mode 60Hz
\r
652 src/tesuto.c: vga_state.vga_height = 240; // VGA lib currently does not update this
\r
653 src/tesuto.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15!
\r
654 src/tesuto.c: //while (getch() != 13);
\r
655 src/tesuto.c: unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks.
\r
656 src/tesuto.c: // if the sprite's edge pixels are clear anyway, you can set this to 0.
\r
657 src/tesuto.c: omemptr = vga_state.vga_graphics_ram; // save original mem ptr
\r
658 src/tesuto.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15!
\r
659 src/tesuto.c: o = offscreen_ofs; // source offscreen
\r
660 src/tesuto.c: o2 = (ry * vga_state.vga_stride) + (rx >> 2); // dest visible (original stride)
\r
661 src/tesuto.c: unsigned int overdraw = 1; // how many pixels to "overdraw" so that moving sprites with edge pixels don't leave streaks.
\r
662 src/tesuto.c: // if the sprite's edge pixels are clear anyway, you can set this to 0.
\r
663 src/tesuto.c: vga_state.vga_graphics_ram[o] = (i^j)&15; // VRL samples put all colors in first 15!
\r
664 src/tesuto.c: omemptr = vga_state.vga_graphics_ram; // save original mem ptr
\r
665 src/tesuto.c: o = pattern_ofs + (ry * vga_state.vga_stride) + (rx >> 2); // source offscreen
\r
666 src/tesuto.c: o = offscreen_ofs; // source offscreen
\r
667 src/tesuto.c: o2 = (ry * vga_state.vga_stride) + (rx >> 2); // dest visible (original stride)
\r
668 src/tesuto.c: dstart = (vga_state.vga_height - dh) / 2; // center the squash effect on screen, otherwise it would squash to top of screen
\r
669 src/tesuto.h://VGA_RAM_PTR vga_graphics_ram = (VGA_RAM_PTR)MK_FP(0xA000,0x0000);
\r
670 src/tesuto.h://unsigned char vga_stride = 80; // 80 x 4 = 320 for 320-pixel wide modes
\r
671 src/tsthimem.c://#include "src/lib/doslib/cpu.h"
\r
672 src/tsthimem.c://#include doswin.h>
\r
673 src/vgacamm.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
674 src/vgacamm.c: // DOSLIB: check our environment
\r
675 src/vgacamm.c: // DOSLIB: what CPU are we using?
\r
676 src/vgacamm.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
677 src/vgacamm.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
678 src/vgacamm.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
679 src/vgacamm.c: // the CPU to carry out tasks. --J.C.
\r
680 src/vgacamm.c: // DOSLIB: check for VGA
\r
681 src/vgacamm.c: // hardware must be VGA or higher!
\r
684 src/vgacamm.c: //printf("CPU to VGA: %f\n", t1);
\r
685 src/vgacamm.c: //printf("VGA to VGA: %f\n", t2);
\r
686 src/vgacamm.c:// printf("Num %d", num_of_vrl);
\r
687 src/vgmtest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
688 src/vgmtest.c://#include "src/lib/doslib/adlib.h"
\r
689 src/vgmtest.c: //ym3812_w(0, 0, reg);
\r
690 src/vgmtest.c: //ym3812_w(0, 1, data);
\r
691 src/vgmtest.c: //return ym3812_r(0, 0);
\r
692 src/vgmtest.c: //++++global_game_variables_t gvar;
\r
693 src/vgmtest.c: //while(!kbhit())
\r
694 src/vrstest.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
695 src/vrstest.c://#include "src/lib/16_head.h"
\r
696 src/vrstest.c: //__segment sega;
\r
697 src/vrstest.c: //vrl1_vgax_offset_t * off, *off1;
\r
698 src/vrstest.c: // DOSLIB: check our environment
\r
699 src/vrstest.c: // DOSLIB: what CPU are we using?
\r
700 src/vrstest.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
701 src/vrstest.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
702 src/vrstest.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
703 src/vrstest.c: // the CPU to carry out tasks. --J.C.
\r
704 src/vrstest.c: // DOSLIB: check for VGA
\r
705 src/vrstest.c: // hardware must be VGA or higher!
\r
706 src/vrstest.c: //gvar.video.page[0]=modexDefaultPage(&gvar.video.page[0]);
\r
707 src/vrstest.c: // What should be done by read_vrs:
\r
708 src/vrstest.c: //sega = (mm.bufferseg);
\r
709 src/vrstest.c: // Insert sanity cheks later
\r
710 src/vrstest.c: // Allocate memory for vrl line offsets table
\r
711 src/vrstest.c: // Calculate line offsets for each vrl
\r
712 src/vrstest.c: // Calc. vrl size as (next_offset - curr_offset)
\r
713 src/vrstest.c: // If it's the last vrl, size is (next_vrs_struct_offset - curr_offset)
\r
714 src/vrstest.c: //read_vrs(&gvar, "data/spri/chikyuu.vrs", &vrs);
\r
715 src/vrstest.c:// Uncomment to see broken sprites
\r
716 src/vrstest.c: //MM_FreePtr(&((void __based(sega)*)spri.spritesheet->buffer), &mm);
\r
717 src/vrstest.c: //printf("CPU to VGA: %f\n", t1);
\r
718 src/vrstest.c: //printf("VGA to VGA: %f\n", t2);
\r
719 src/vrstest.c://0000 printf("gvar.video.page[0].width: %u\n", gvar.video.page[0].width);
\r
720 src/vrstest.c://0000 printf("gvar.video.page[0].height: %u\n", gvar.video.page[0].height);
\r
721 src/zcroll.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
722 src/zcroll.c://debugswitches
\r
723 src/zcroll.c://extern boolean pageflipflop=1;
\r
724 src/zcroll.c://static int persist_aniframe = 0; /* gonna be increased to 1 before being used, so 0 is ok for default */
\r
725 src/zcroll.c://map_view_db_t pgid[4];
\r
726 src/zcroll.c://#ifdef FADE
\r
727 src/zcroll.c://#endif
\r
728 src/zcroll.c: // OK, this one takes hellova time and needs to be done in farmalloc or MM_...
\r
729 src/zcroll.c: // create the map
\r
730 src/zcroll.c://goto pee;
\r
731 src/zcroll.c: // data
\r
732 src/zcroll.c: // input!
\r
733 src/zcroll.c: // save the palette
\r
734 src/zcroll.c: modexPalBlack(); //reset the palette~
\r
735 src/zcroll.c: modexPalBlack(); //so player will not see loadings~
\r
736 src/zcroll.c: // setup camera and screen~
\r
737 src/zcroll.c: // set up paging
\r
738 src/zcroll.c: //TODO: LOAD map data and position the map in the middle of the screen if smaller then screen
\r
739 src/zcroll.c: //_fmemcpy(mv[1].page->data, mv->page->data, mv->page->pagesize);
\r
740 src/zcroll.c: //TODO: put player in starting position of spot
\r
741 src/zcroll.c: //default player position on the viewable map
\r
742 src/zcroll.c: //IN_initplayer(&player, 1);
\r
743 src/zcroll.c:// #ifndef SPRITE
\r
744 src/zcroll.c:// modexClearRegion(mv->page, player->x, player->y-TILEWH, 16, 32, 15);
\r
745 src/zcroll.c:// //modexClearRegion(mv[1].page, player->x, player->y-TILEWH, 16, 32, 15);
\r
746 src/zcroll.c:// #else
\r
747 src/zcroll.c:// //PBUFSFUN(mv[1].page, player->x, player->y-TILEWH, 16, 64, 24, 32, PLAYERBMPDATA);
\r
748 src/zcroll.c:// // PBUFSFUN(mv->page, player->x, player->y-TILEWH, 16, 64, 16, 32, player->data);
\r
749 src/zcroll.c: //animate_spri(&(player->ent->spri));
\r
750 src/zcroll.c:// #endif
\r
751 src/zcroll.c: modexShowPage(mv->page);//!(gvar.video.p)
\r
752 src/zcroll.c: shinku_fps_indicator_page = 0; // we're on page 1 now, shinku(). follow along please or it will not be visible.
\r
753 src/zcroll.c: // buffer pages
\r
754 src/zcroll.c:// modexClearRegion(mv[2].page, 0, 0, mv[2].page->width, mv[2].page->height, 47);
\r
755 src/zcroll.c:// modexClearRegion(mv[3].page, 0, 0, mv[3].page->width, mv[3].page->height, 45);
\r
757 src/zcroll.c:// unsigned int k,j,o;
\r
758 src/zcroll.c:// // fill screen with a distinctive pattern
\r
759 src/zcroll.c:// for (k=0;k < vga_state.vga_width;k++) {
\r
760 src/zcroll.c:// o = k >> 2;
\r
761 src/zcroll.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3));
\r
762 src/zcroll.c:// for (j=0;j < vga_state.vga_height;j++,o += vga_state.vga_stride)
\r
763 src/zcroll.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15!
\r
766 src/zcroll.c:// modexFadeOn(4, gpal);*/
\r
767 src/zcroll.c: //top left corner & bottem right corner of map veiw be set as map edge trigger since maps are actually square
\r
768 src/zcroll.c: //to stop scrolling and have the player position data move to the edge of the screen with respect to the direction
\r
769 src/zcroll.c: //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
\r
770 src/zcroll.c: //player movement
\r
771 src/zcroll.c: //the scripting stuff....
\r
772 src/zcroll.c:*/ //debugging binds!
\r
773 src/zcroll.c: } //p
\r
774 src/zcroll.c: //pan switch
\r
775 src/zcroll.c: if(IN_KeyDown(88)){panswitch=!panswitch; IN_UserInput(1,1);} //f12
\r
776 src/zcroll.c: if(IN_KeyDown(87)) //f11
\r
777 src/zcroll.c: if(IN_KeyDown(68)) //f10
\r
778 src/zcroll.c: if(IN_KeyDown(67)) //f9
\r
779 src/zcroll.c: if(IN_KeyDown(66)) //f8
\r
780 src/zcroll.c: // modexDrawSprite(mv->page, 16, 16, p);
\r
781 src/zcroll.c: //TODO fmemtest into page
\r
782 src/zcroll.c: /*if(IN_KeyDown(4+1)) //4
\r
784 src/zcroll.c: //if(IN_KeyDown(11)){ modexPalOverscan(15); }
\r
785 src/zcroll.c: if((player->q==1) && !(player->x%TILEWH==0 && player->y%TILEWH==0)) break; //incase things go out of sync!
\r
786 src/zcroll.c://pee:
\r
787 src/zcroll.c: //if(player->hp==0) printf("%d wwww\n", player->y+8);
\r
788 src/zcroll.c: //else printf("\nplayer->y: %d\n", player->y);
\r
789 src/zcroll.c: //printf("mv[%u].tx: %d", pan.pn, mv[pan.pn].tx); printf(" mv[%u].ty: %d ", pan.pn, mv[pan.pn].ty);
\r
790 src/zcroll.c: //0000printf("\ngvar.video.tickclk=%f\n", gvar.video.tickclk);
\r
791 src/zcroll.c: //0000printf("gvar.video.clk=%f", gvar.video.clk);
\r
792 src/zcroll.c: //printf("map.width=%d map.height=%d map.data[0]=%d\n", mv->map->width, mv->map->height, mv->map->data[0]);
\r
793 src/lib/16_ca.c:// ID_CA.C
\r
794 src/lib/16_ca.c://#define THREEBYTEGRSTARTS
\r
795 src/lib/16_ca.c://https://github.com/open-watcom/open-watcom-v2/issues/279#issuecomment-244587566 for _seg
\r
796 src/lib/16_ca.c: word bit0,bit1; // 0-255 is a character, > is a pointer to a node
\r
797 src/lib/16_ca.c:long _seg *grstarts; // array of offsets in egagraph, -1 for sparse
\r
798 src/lib/16_ca.c:long _seg *audiostarts; // array of offsets in audio / audiot
\r
799 src/lib/16_ca.c:int grhandle; // handle to EGAGRAPH
\r
800 src/lib/16_ca.c:int maphandle; // handle to MAPTEMP / GAMEMAPS
\r
801 src/lib/16_ca.c:int audiohandle; // handle to AUDIOT / AUDIO
\r
802 src/lib/16_ca.c://void CAL_CarmackExpand (unsigned far *source, unsigned far *dest,unsigned length);
\r
803 src/lib/16_ca.c://#define GRFILEPOS(c) (*(long far *)(((byte far *)grstarts)+(c)*3)&0xffffff)
\r
804 src/lib/16_ca.c: //dword fat=0;
\r
805 src/lib/16_ca.c: //word segm=0;
\r
806 src/lib/16_ca.c: //segm=(length%0xfffflu)-1;
\r
807 src/lib/16_ca.c: //fat=segm*0xfffflu;
\r
808 src/lib/16_ca.c: //length-=fat;
\r
809 src/lib/16_ca.c: return 0;//TODO: EXPAND!!!
\r
810 src/lib/16_ca.c: //if(!fat&&!segm)
\r
811 src/lib/16_ca.c: //{
\r
812 src/lib/16_ca.c: mov ah,0x3f // READ w/handle
\r
813 src/lib/16_ca.c:// errno = EINVFMT; // user manager knows this is bad read
\r
814 src/lib/16_ca.c: //dword fat=0;
\r
815 src/lib/16_ca.c: //word segm=0;
\r
816 src/lib/16_ca.c: //segm=(length%0xfffflu)-1;
\r
817 src/lib/16_ca.c: //fat=segm*0xfffflu;
\r
818 src/lib/16_ca.c: //length-=fat;
\r
819 src/lib/16_ca.c: //if(!fat&&!segm)
\r
820 src/lib/16_ca.c: //{
\r
821 src/lib/16_ca.c: mov ah,0x40 // WRITE w/handle
\r
822 src/lib/16_ca.c:// errno = ENOMEM; // user manager knows this is bad write
\r
823 src/lib/16_ca.c: //long size;
\r
824 src/lib/16_ca.c: //sdword size;
\r
825 src/lib/16_ca.c: //long size;
\r
826 src/lib/16_ca.c: //long size;
\r
827 src/lib/16_ca.c:// unsigned bit,byte,node,code;
\r
828 src/lib/16_ca.c:// huffnode *nodeon;
\r
829 src/lib/16_ca.c: headptr = hufftable+254; // head node is allways node 254
\r
830 src/lib/16_ca.c: source++; // normalize
\r
832 src/lib/16_ca.c:// ds:si source
\r
833 src/lib/16_ca.c:// es:di dest
\r
834 src/lib/16_ca.c:// ss:bx node pointer
\r
836 src/lib/16_ca.c://--------------------------
\r
837 src/lib/16_ca.c:// expand less than 64k of data
\r
838 src/lib/16_ca.c://--------------------------
\r
839 src/lib/16_ca.c: mov ch,[si] // load first byte
\r
840 src/lib/16_ca.c: test ch,cl // bit set?
\r
841 src/lib/16_ca.c: mov dx,[ss:bx] // take bit0 path from node
\r
842 src/lib/16_ca.c: shl cl,1 // advance to next bit position
\r
843 src/lib/16_ca.c: mov dx,[ss:bx+2] // take bit1 path
\r
844 src/lib/16_ca.c: shl cl,1 // advance to next bit position
\r
845 src/lib/16_ca.c: mov ch,[si] // load next byte
\r
846 src/lib/16_ca.c: mov cl,1 // back to first bit
\r
847 src/lib/16_ca.c: or dh,dh // if dx<256 its a byte, else move node
\r
848 src/lib/16_ca.c: mov bx,dx // next node = (huffnode *)code
\r
849 src/lib/16_ca.c: inc di // write a decopmpressed byte out
\r
850 src/lib/16_ca.c: mov bx,[word ptr headptr] // back to the head node for next bit
\r
851 src/lib/16_ca.c: cmp di,ax // done?
\r
852 src/lib/16_ca.c://--------------------------
\r
853 src/lib/16_ca.c:// expand more than 64k of data
\r
854 src/lib/16_ca.c://--------------------------
\r
855 src/lib/16_ca.c: lodsb // load first byte
\r
856 src/lib/16_ca.c: test al,cl // bit set?
\r
857 src/lib/16_ca.c: mov dx,[ss:bx] // take bit0 path from node
\r
858 src/lib/16_ca.c: mov dx,[ss:bx+2] // take bit1 path
\r
859 src/lib/16_ca.c: shl cl,1 // advance to next bit position
\r
860 src/lib/16_ca.c: cmp si,0x10 // normalize ds:si
\r
861 src/lib/16_ca.c: mov cl,1 // back to first bit
\r
862 src/lib/16_ca.c: or dh,dh // if dx<256 its a byte, else move node
\r
863 src/lib/16_ca.c: mov bx,dx // next node = (huffnode *)code
\r
864 src/lib/16_ca.c: inc di // write a decopmpressed byte out
\r
865 src/lib/16_ca.c: mov bx,[word ptr headptr] // back to the head node for next bit
\r
866 src/lib/16_ca.c: cmp di,0x10 // normalize es:di
\r
867 src/lib/16_ca.c: jns expand // when length = ffff ffff, done
\r
868 src/lib/16_ca.c: { // have to insert a word containing the tag byte
\r
869 src/lib/16_ca.c: { // have to insert a word containing the tag byte
\r
871 src/lib/16_ca.c:// compress it
\r
873 src/lib/16_ca.c: //
\r
874 src/lib/16_ca.c: // send a tag / count / value string
\r
875 src/lib/16_ca.c: //
\r
876 src/lib/16_ca.c: //
\r
877 src/lib/16_ca.c: // send word without compressing
\r
878 src/lib/16_ca.c: //
\r
879 src/lib/16_ca.c:// unsigned value,count,i;
\r
881 src/lib/16_ca.c:// expand it
\r
883 src/lib/16_ca.c: //
\r
884 src/lib/16_ca.c: // uncompressed
\r
885 src/lib/16_ca.c: //
\r
886 src/lib/16_ca.c: //
\r
887 src/lib/16_ca.c: // compressed string
\r
888 src/lib/16_ca.c: //
\r
890 src/lib/16_ca.c:// ax = source value
\r
891 src/lib/16_ca.c:// bx = tag value
\r
892 src/lib/16_ca.c:// cx = repeat counts
\r
893 src/lib/16_ca.c:// dx = scratch
\r
895 src/lib/16_ca.c:// NOTE: A repeat count that produces 0xfff0 bytes can blow this!
\r
897 src/lib/16_ca.c: mov cx,ax // repeat count
\r
898 src/lib/16_ca.c: lodsw // repeat value
\r
899 src/lib/16_ca.c: cmp si,0x10 // normalize ds:si
\r
900 src/lib/16_ca.c: cmp di,0x10 // normalize es:di
\r
901 src/lib/16_ca.c:////++++ enable!
\r
903 src/lib/16_ca.c:// load ???dict.ext (huffman dictionary for graphics files)
\r
906 src/lib/16_ca.c:// load the data offsets from ???head.ext
\r
909 src/lib/16_ca.c:// Open the graphics file, leaving it open until the game is finished
\r
912 src/lib/16_ca.c:// load the pic and sprite headers into the arrays in the data segment
\r
914 src/lib/16_ca.c: CAL_GetGrChunkLength(STRUCTPIC); // position file pointer
\r
915 src/lib/16_ca.c: CAL_GetGrChunkLength(STRUCTPICM); // position file pointer
\r
916 src/lib/16_ca.c: CAL_GetGrChunkLength(STRUCTSPRITE); // position file pointer
\r
917 src/lib/16_ca.c://==========================================================================
\r
918 src/lib/16_ca.c:// int handle;
\r
919 src/lib/16_ca.c:// long length;
\r
921 src/lib/16_ca.c:// load maphead.ext (offsets and tileinfo for map file)
\r
923 src/lib/16_ca.c:// #ifndef MAPHEADERLINKED
\r
924 src/lib/16_ca.c:// if ((handle = open("MAPHEAD."EXT,
\r
925 src/lib/16_ca.c:// O_RDONLY | O_BINARY, S_IREAD)) == -1)
\r
926 src/lib/16_ca.c:// printf("Can't open MAPHEAD."EXT"!");
\r
927 src/lib/16_ca.c:// length = filelength(handle);
\r
928 src/lib/16_ca.c:// MM_GetPtr (&(memptr)tinf,length);
\r
929 src/lib/16_ca.c:// CA_FarRead(handle, tinf, length);
\r
930 src/lib/16_ca.c:// close(handle);
\r
931 src/lib/16_ca.c:// //#else
\r
933 src/lib/16_ca.c:// tinf = (byte _seg *)FP_SEG(&maphead);
\r
935 src/lib/16_ca.c:// #endif
\r
937 src/lib/16_ca.c:// open the data file
\r
939 src/lib/16_ca.c://TODO: multiple files
\r
940 src/lib/16_ca.c:// #ifdef MAPHEADERLINKED
\r
941 src/lib/16_ca.c:// if ((maphandle = open("GAMEMAPS."EXT,
\r
942 src/lib/16_ca.c:// O_RDONLY | O_BINARY, S_IREAD)) == -1)
\r
943 src/lib/16_ca.c:// Quit ("Can't open GAMEMAPS."EXT"!");
\r
944 src/lib/16_ca.c:// //#else
\r
945 src/lib/16_ca.c:// if ((maphandle = open("MAPTEMP."EXT,
\r
946 src/lib/16_ca.c:// O_RDONLY | O_BINARY, S_IREAD)) == -1)
\r
947 src/lib/16_ca.c:// Quit ("Can't open MAPTEMP."EXT"!");
\r
948 src/lib/16_ca.c:// #endif
\r
949 src/lib/16_ca.c://==========================================================================
\r
951 src/lib/16_ca.c:// load maphead.ext (offsets and tileinfo for map file)
\r
954 src/lib/16_ca.c:// open the data file
\r
956 src/lib/16_ca.c://==========================================================================
\r
957 src/lib/16_ca.c:#endif//profile
\r
958 src/lib/16_ca.c://==========================================================================
\r
959 src/lib/16_ca.c://===========================================================================
\r
960 src/lib/16_ca.c: return; // allready in memory
\r
961 src/lib/16_ca.c:// MDM begin - (GAMERS EDGE)
\r
964 src/lib/16_ca.c:// MDM end
\r
966 src/lib/16_ca.c:// load the chunk into a buffer, either the miscbuffer if it fits, or allocate
\r
967 src/lib/16_ca.c:// a larger buffer
\r
969 src/lib/16_ca.c: source += 4; // skip over length
\r
970 src/lib/16_ca.c://===========================================================================
\r
971 src/lib/16_ca.c: MM_SetPurge (&(memptr)audiosegs[start],3); // make purgable
\r
972 src/lib/16_ca.c://===========================================================================
\r
973 src/lib/16_ca.c://++++#if GRMODE == EGAGR
\r
974 src/lib/16_ca.c: sheight = height; // because we are going to reassign bp
\r
975 src/lib/16_ca.c:asm mov ds,ax // source and dest are in same segment, and all local
\r
976 src/lib/16_ca.c:asm mov bp,WORD PTR [shifttabletable+bp] // bp holds pointer to shift table
\r
978 src/lib/16_ca.c:// table shift the mask
\r
980 src/lib/16_ca.c:asm mov BYTE PTR [di],255 // 0xff first byte
\r
981 src/lib/16_ca.c:asm mov al,[bx] // source
\r
982 src/lib/16_ca.c:asm inc bx // next source byte
\r
983 src/lib/16_ca.c:asm mov ax,[bp+si] // table shift into two bytes
\r
984 src/lib/16_ca.c:asm and [di],al // and with first byte
\r
985 src/lib/16_ca.c:asm mov [di],ah // replace next byte
\r
986 src/lib/16_ca.c:asm inc di // the last shifted byte has 1s in it
\r
988 src/lib/16_ca.c:// table shift the data
\r
990 src/lib/16_ca.c:asm shl dx,1 // four planes of data
\r
991 src/lib/16_ca.c:asm mov BYTE PTR [di],0 // 0 first byte
\r
992 src/lib/16_ca.c:asm mov al,[bx] // source
\r
993 src/lib/16_ca.c:asm inc bx // next source byte
\r
994 src/lib/16_ca.c:asm mov ax,[bp+si] // table shift into two bytes
\r
995 src/lib/16_ca.c:asm or [di],al // or with first byte
\r
996 src/lib/16_ca.c:asm mov [di],ah // replace next byte
\r
997 src/lib/16_ca.c:asm inc di // the last shifted byte has 0s in it
\r
999 src/lib/16_ca.c:// done
\r
1000 src/lib/16_ca.c://
\r
1001 src/lib/16_ca.c:asm mov ax,ss // restore data segment
\r
1002 src/lib/16_ca.c://===========================================================================
\r
1003 src/lib/16_ca.c://
\r
1004 src/lib/16_ca.c:// CGA has no pel panning, so shifts are never needed
\r
1005 src/lib/16_ca.c://
\r
1006 src/lib/16_ca.c: dest->sourceoffset[0] = MAXSHIFTS*6; // start data after 3 unsigned tables
\r
1007 src/lib/16_ca.c://
\r
1008 src/lib/16_ca.c:// expand the unshifted shape
\r
1009 src/lib/16_ca.c://
\r
1010 src/lib/16_ca.c://
\r
1011 src/lib/16_ca.c:// calculate sizes
\r
1012 src/lib/16_ca.c://
\r
1013 src/lib/16_ca.c: shiftstarts[0] = MAXSHIFTS*6; // start data after 3 unsigned tables
\r
1014 src/lib/16_ca.c: shiftstarts[1] = shiftstarts[0] + smallplane*5; // 5 planes in a sprite
\r
1015 src/lib/16_ca.c: shiftstarts[4] = shiftstarts[3] + bigplane*5; // nothing ever put here
\r
1016 src/lib/16_ca.c://
\r
1017 src/lib/16_ca.c:// expand the unshifted shape
\r
1018 src/lib/16_ca.c://
\r
1019 src/lib/16_ca.c://
\r
1020 src/lib/16_ca.c:// make the shifts!
\r
1021 src/lib/16_ca.c://
\r
1022 src/lib/16_ca.c://===========================================================================
\r
1023 src/lib/16_ca.c: //
\r
1024 src/lib/16_ca.c: // expanded sizes of tile8/16/32 are implicit
\r
1025 src/lib/16_ca.c: //
\r
1026 src/lib/16_ca.c: if (chunk<STARTTILE8M) // tile 8s are all in one chunk!
\r
1027 src/lib/16_ca.c: else if (chunk<STARTTILE16M) // all other tiles are one/chunk
\r
1028 src/lib/16_ca.c: //
\r
1029 src/lib/16_ca.c: // everything else has an explicit size longword
\r
1030 src/lib/16_ca.c: //
\r
1031 src/lib/16_ca.c: source += 4; // skip over length
\r
1032 src/lib/16_ca.c://
\r
1033 src/lib/16_ca.c:// allocate final space, decompress it, and free bigbuffer
\r
1034 src/lib/16_ca.c:// Sprites need to have shifts made and various other junk
\r
1035 src/lib/16_ca.c://
\r
1036 src/lib/16_ca.c://
\r
1037 src/lib/16_ca.c:// load the chunk into a buffer, either the miscbuffer if it fits, or allocate
\r
1038 src/lib/16_ca.c:// a larger buffer
\r
1039 src/lib/16_ca.c://
\r
1040 src/lib/16_ca.c: if (pos<0) // $FFFFFFFF start is a sparse tile
\r
1041 src/lib/16_ca.c: while (GRFILEPOS(next) == -1) // skip past any sparse tiles
\r
1042 src/lib/16_ca.c: gvar->video.grneeded[chunk] |= ca_levelbit; // make sure it doesn't get removed
\r
1043 src/lib/16_ca.c: return; // allready in memory
\r
1044 src/lib/16_ca.c:// MDM begin - (GAMERS EDGE)
\r
1045 src/lib/16_ca.c://
\r
1046 src/lib/16_ca.c://
\r
1047 src/lib/16_ca.c:// MDM end
\r
1048 src/lib/16_ca.c://
\r
1049 src/lib/16_ca.c:// load the chunk into a buffer, either the miscbuffer if it fits, or allocate
\r
1050 src/lib/16_ca.c:// a larger buffer
\r
1051 src/lib/16_ca.c://
\r
1052 src/lib/16_ca.c: if (pos<0) // $FFFFFFFF start is a sparse tile
\r
1053 src/lib/16_ca.c: while (GRFILEPOS(next) == -1) // skip past any sparse tiles
\r
1054 src/lib/16_ca.c://==========================================================================
\r
1055 src/lib/16_ca.c://
\r
1056 src/lib/16_ca.c:// free up memory from last map
\r
1057 src/lib/16_ca.c://
\r
1058 src/lib/16_ca.c://
\r
1059 src/lib/16_ca.c:// load map header
\r
1060 src/lib/16_ca.c:// The header will be cached if it is still around
\r
1061 src/lib/16_ca.c://
\r
1062 src/lib/16_ca.c: //pos = ((mapfiletype _seg *)tinf)->headeroffsets[mapnum];
\r
1063 src/lib/16_ca.c: if (pos<0) // $FFFFFFFF start is a sparse map
\r
1064 src/lib/16_ca.c://
\r
1065 src/lib/16_ca.c:// load the planes in
\r
1066 src/lib/16_ca.c:// If a plane's pointer still exists it will be overwritten (levels are
\r
1067 src/lib/16_ca.c:// allways reloaded, never cached)
\r
1068 src/lib/16_ca.c://
\r
1069 src/lib/16_ca.c: continue; // the plane is not used in this game
\r
1070 src/lib/16_ca.c: //
\r
1071 src/lib/16_ca.c: // unhuffman, then unRLEW
\r
1072 src/lib/16_ca.c: // The huffman'd chunk has a two byte expanded length first
\r
1073 src/lib/16_ca.c: // The resulting RLEW chunk also does, even though it's not really
\r
1074 src/lib/16_ca.c: // needed
\r
1075 src/lib/16_ca.c: //
\r
1076 src/lib/16_ca.c: //
\r
1077 src/lib/16_ca.c: // unRLEW, skipping expanded length
\r
1078 src/lib/16_ca.c: //
\r
1079 src/lib/16_ca.c:}//*/
\r
1080 src/lib/16_ca.c://===========================================================================
\r
1081 src/lib/16_ca.c://===========================================================================
\r
1082 src/lib/16_ca.c: ////++++++++++++++++++++++++++++++++++++++++++CA_CacheMarks(NULL);
\r
1083 src/lib/16_ca.c://===========================================================================
\r
1084 src/lib/16_ca.c://===========================================================================
\r
1085 src/lib/16_ca.c://===========================================================================
\r
1086 src/lib/16_ca.c://
\r
1087 src/lib/16_ca.c:// free graphics
\r
1088 src/lib/16_ca.c://
\r
1089 src/lib/16_ca.c://
\r
1090 src/lib/16_ca.c:// free cursor sprite and background save
\r
1091 src/lib/16_ca.c://
\r
1092 src/lib/16_ca.c: //VW_FreeCursor ();
\r
1093 src/lib/16_ca.c://
\r
1094 src/lib/16_ca.c:// free map headers and map planes
\r
1095 src/lib/16_ca.c://
\r
1096 src/lib/16_ca.c://
\r
1097 src/lib/16_ca.c:// free sounds
\r
1098 src/lib/16_ca.c://
\r
1099 src/lib/16_ca.c://
\r
1100 src/lib/16_ca.c:// free graphics
\r
1101 src/lib/16_ca.c://
\r
1102 src/lib/16_ca.c://===========================================================================
\r
1103 src/lib/16_ca.c://
\r
1104 src/lib/16_ca.c:// draw dialog window (masked tiles 12 - 20 are window borders)
\r
1105 src/lib/16_ca.c://
\r
1106 src/lib/16_ca.c://
\r
1107 src/lib/16_ca.c:// draw thermometer bar
\r
1108 src/lib/16_ca.c://
\r
1109 src/lib/16_ca.c: VWB_DrawTile8(thx,thy,0); // CAT3D numbers
\r
1110 src/lib/16_ca.c: thx += 4; // first line location
\r
1111 src/lib/16_ca.c://===========================================================================
\r
1112 src/lib/16_ca.c:*//*
\r
1113 src/lib/16_ca.c: long bufferstart,bufferend; // file position of general buffer
\r
1114 src/lib/16_ca.c://
\r
1115 src/lib/16_ca.c:// go through and make everything not needed purgable
\r
1116 src/lib/16_ca.c://
\r
1117 src/lib/16_ca.c: if (grsegs[i]) // its allready in memory, make
\r
1118 src/lib/16_ca.c: MM_SetPurge(&grsegs[i],0); // sure it stays there!
\r
1119 src/lib/16_ca.c: if (grsegs[i]) // not needed, so make it purgeable
\r
1120 src/lib/16_ca.c: if (!numcache) // nothing to cache!
\r
1121 src/lib/16_ca.c:// MDM begin - (GAMERS EDGE)
\r
1122 src/lib/16_ca.c://
\r
1123 src/lib/16_ca.c://
\r
1124 src/lib/16_ca.c:// MDM end
\r
1125 src/lib/16_ca.c://
\r
1126 src/lib/16_ca.c:// go through and load in anything still needed
\r
1127 src/lib/16_ca.c://
\r
1128 src/lib/16_ca.c: bufferstart = bufferend = 0; // nothing good in buffer now
\r
1129 src/lib/16_ca.c://
\r
1130 src/lib/16_ca.c:// update thermometer
\r
1131 src/lib/16_ca.c://
\r
1132 src/lib/16_ca.c: while (GRFILEPOS(next) == -1) // skip past any sparse tiles
\r
1133 src/lib/16_ca.c: // data is allready in buffer
\r
1134 src/lib/16_ca.c: // load buffer with a new block from disk
\r
1135 src/lib/16_ca.c: // try to get as many of the needed blocks in as possible
\r
1136 src/lib/16_ca.c: while (GRFILEPOS(++next) == -1) // skip past any sparse tiles
\r
1137 src/lib/16_ca.c: next = NUMCHUNKS; // read pos to posend
\r
1138 src/lib/16_ca.c: // big chunk, allocate temporary buffer
\r
1139 src/lib/16_ca.c://
\r
1140 src/lib/16_ca.c:// finish up any thermometer remnants
\r
1141 src/lib/16_ca.c://
\r
1142 src/lib/16_ca.h:// ID_CA.H
\r
1143 src/lib/16_ca.h://===========================================================================
\r
1144 src/lib/16_ca.h://#define NOMAPS
\r
1145 src/lib/16_ca.h://#define NOGRAPHICS
\r
1146 src/lib/16_ca.h://#define NOAUDIO
\r
1147 src/lib/16_ca.h://#define MAPHEADERLINKED
\r
1148 src/lib/16_ca.h://#define GRHEADERLINKED
\r
1149 src/lib/16_ca.h://#define AUDIOHEADERLINKED
\r
1150 src/lib/16_ca.h://#define NUMMAPS 39
\r
1151 src/lib/16_ca.h://#define MAPPLANES 3
\r
1152 src/lib/16_ca.h://++++#define PROFILE//++++
\r
1153 src/lib/16_ca.h://===========================================================================
\r
1154 src/lib/16_ca.h://===========================================================================
\r
1155 src/lib/16_ca.h://extern
\r
1156 src/lib/16_ca.h://
\r
1157 src/lib/16_ca.h:// hooks for custom cache dialogs
\r
1158 src/lib/16_ca.h://
\r
1159 src/lib/16_ca.h://===========================================================================
\r
1160 src/lib/16_ca.h:// just for the score box reshifting
\r
1161 src/lib/16_ca.h://void CAL_ShiftSprite (unsigned segment,unsigned source,unsigned dest,unsigned width, unsigned height, unsigned pixshift, boolean domask);
\r
1162 src/lib/16_ca.h://===========================================================================
\r
1163 src/lib/16_ca.h://void CA_CacheAudioChunk (int chunk);
\r
1164 src/lib/16_ca.h://void CA_LoadAllSounds (void);
\r
1165 src/lib/16_dbg.c:// TODO: Could we also provide a build mode to emit debug to the "Bochs E9 hack?"
\r
1166 src/lib/16_dbg.c: // what does the BIOS say the serial ports are?
\r
1167 src/lib/16_dbg.c: // what about the standard serial ports?
\r
1168 src/lib/16_dbg.c: // pick the first port, which is probably COM1
\r
1169 src/lib/16_dbg.c: if (base_8250_ports == 0) return 0; // FIXME: You know "base_8250_ports" is probably a bad variable name for the max entries in info_8250_port[]
\r
1170 src/lib/16_dbg.c: // init the COM port.
\r
1171 src/lib/16_dbg.c: // in DOSBox-X, the "log" mode will receive our text and print it into the log file
\r
1172 src/lib/16_dbg.c: // on real hardware, our text will likely go over a null modem cable to another PC running a serial terminal program like PuTTY or minicom.
\r
1173 src/lib/16_dbg.c: // if nothing is connected, then the bytes go off into the ether to get lost and life goes on.
\r
1174 src/lib/16_dbg.c: uart_8250_enable_interrupt(_DEBUG_uart,0); // disable interrupts
\r
1175 src/lib/16_dbg.c: uart_8250_set_FIFO(_DEBUG_uart,0x07); // enable FIFO (why not?), also clear xmit/recv FIFO buffers, set threshhold to 1 byte
\r
1176 src/lib/16_dbg.c: uart_8250_set_MCR(_DEBUG_uart,3); // RTS and DTS on
\r
1177 src/lib/16_dbg.c: uart_8250_set_line_control(_DEBUG_uart,UART_8250_LCR_8BIT | UART_8250_LCR_PARITY); // 8 bit 1 stop bit odd parity
\r
1178 src/lib/16_dbg.c: uart_8250_set_baudrate(_DEBUG_uart,uart_8250_baud_to_divisor(_DEBUG_uart,9600)); // 9600 baud
\r
1179 src/lib/16_dbg.c: while (!uart_8250_can_write(_DEBUG_uart)); // wait for the UART to indicate readiness for our output
\r
1180 src/lib/16_dbg.c: uart_8250_write(_DEBUG_uart,(uint8_t)c); // then write it
\r
1181 src/lib/16_dbg.h://#define __DEBUG_PM__
\r
1182 src/lib/16_dbg.h://#define __DEBUG_MM__
\r
1183 src/lib/16_dbg.h: // NOTHING
\r
1184 src/lib/16_dbg.h: // NOTHING
\r
1185 src/lib/16_dbg.h: // NOTHING
\r
1186 src/lib/16_dbg.h:#endif // _SRC_LIB_16_DBG
\r
1187 src/lib/16_enti.h: int x; // exact position on the viewable map
1188 src/lib/16_enti.h: int y; // exact position on the viewable map
1189 src/lib/16_enti.h: int tx; // tile position on the viewable map
1190 src/lib/16_enti.h: int ty; // tile position on the viewable map
1191 src/lib/16_enti.h: int triggerx; // trigger box tile position on the viewable map
1192 src/lib/16_enti.h: int triggery; // trigger box tile position on the viewable map
1193 src/lib/16_enti.h: byte d; // direction the NPC faces
1194 src/lib/16_enti.h: struct sprite *spri; // sprite used by NPC
1195 src/lib/16_enti.h: sword hp; // hitpoints of the NPC
1196 src/lib/16_enti.h: byte near pdir; // previous direction~
1197 src/lib/16_enti.h: word speed; // NPC's speed
1198 src/lib/16_enti.h: word spt; // speed per tile
1199 src/lib/16_hc.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1200 src/lib/16_hc.c: // allocate based heap
\r
1201 src/lib/16_hc.c: //exit( 1 );
\r
1202 src/lib/16_hc.c: //near
\r
1203 src/lib/16_hc.c: //far
\r
1204 src/lib/16_hc.c: //printf("OK - end of heap\n");
\r
1205 src/lib/16_hc.c: //printf("OK - heap is empty\n");
\r
1206 src/lib/16_hc.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1207 src/lib/16_hc.h://void __based(__self)* LargestBasedFreeBlock(size_t* Size);
\r
1208 src/lib/16_hc.h://size_t _basedcoreleft(void);
\r
1209 src/lib/16_head.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1210 src/lib/16_head.c: if(strlen(str)<=4) strcat(strc," "); //printf("%u\n", strlen(str));
\r
1211 src/lib/16_head.c:///////////////////////////////////////////////////////////////////////////
\r
1212 src/lib/16_head.c://
\r
1213 src/lib/16_head.c:// US_CheckParm() - checks to see if a string matches one of a set of
\r
1214 src/lib/16_head.c:// strings. The check is case insensitive. The routine returns the
\r
1215 src/lib/16_head.c:// index of the string that matched, or -1 if no matches were found
\r
1216 src/lib/16_head.c://
\r
1217 src/lib/16_head.c:///////////////////////////////////////////////////////////////////////////
\r
1218 src/lib/16_head.c: while (!isalpha(*parm)) // Skip non-alphas
\r
1219 src/lib/16_head.c://===========================================================================
\r
1220 src/lib/16_head.c: //ClearMemory ();
\r
1221 src/lib/16_head.c: //WriteConfig ();
\r
1222 src/lib/16_head.c: //CA_CacheGrChunk (ERRORSCREEN);
\r
1223 src/lib/16_head.c: //screen = grsegs[ERRORSCREEN];
\r
1224 src/lib/16_head.c: //ShutdownId ();
\r
1225 src/lib/16_head.c: //IN_Shutdown();
\r
1226 src/lib/16_head.c: //modexLeave();
\r
1227 src/lib/16_head.c: //movedata ((unsigned)screen,7,0xb800,0,7*160);
\r
1228 src/lib/16_head.c: //gotoxy (10,4);
\r
1229 src/lib/16_head.c: //gotoxy (1,8);
\r
1230 src/lib/16_head.c: //clrscr();
\r
1231 src/lib/16_head.c: //#ifndef JAPAN
\r
1232 src/lib/16_head.c: //gotoxy(1,24);
\r
1233 src/lib/16_head.c: //#endif
\r
1234 src/lib/16_head.c://asm mov bh,0
\r
1235 src/lib/16_head.c://asm mov dh,23 // row
\r
1236 src/lib/16_head.c://asm mov dl,0 // collumn
\r
1237 src/lib/16_head.c://asm mov ah,2
\r
1238 src/lib/16_head.c://asm int 0x10
\r
1239 src/lib/16_head.c://===========================================================================
\r
1240 src/lib/16_head.c: case 0: //up
\r
1241 src/lib/16_head.c: case 4: //down
\r
1242 src/lib/16_head.c: case 1: //left
\r
1243 src/lib/16_head.c: case 3: //right
\r
1244 src/lib/16_head.c: default: //null
\r
1245 src/lib/16_head.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1246 src/lib/16_head.h:#include <conio.h> // just for wait
\r
1247 src/lib/16_head.h:#include <time.h> // just for wait
\r
1248 src/lib/16_head.h:#include <stdint.h> //16_vrs.h
\r
1249 src/lib/16_head.h://here temperarly
\r
1250 src/lib/16_head.h:#define KEY_DASH (0x0C) // -_
\r
1251 src/lib/16_head.h:#define KEY_EQUAL (0x0D) // =+
\r
1252 src/lib/16_head.h:#define KEY_LBRACKET (0x1A) // [{
\r
1253 src/lib/16_head.h:#define KEY_RBRACKET (0x1B) // ]}
\r
1254 src/lib/16_head.h:#define KEY_SEMICOLON (0x27) // ;:
\r
1255 src/lib/16_head.h:#define KEY_RQUOTE (0x28) // '"
\r
1256 src/lib/16_head.h:#define KEY_LQUOTE (0x29) // `~
\r
1257 src/lib/16_head.h:#define KEY_PERIOD (0x33) // .>
\r
1258 src/lib/16_head.h:#define KEY_COMMA (0x34) // ,<
\r
1259 src/lib/16_head.h:#define KEY_SLASH (0x35) // /?
\r
1260 src/lib/16_head.h:#define KEY_BACKSLASH (0x2B) // \|
\r
1261 src/lib/16_head.h://static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */
\r
1262 src/lib/16_head.h:extern int profilehandle,debughandle; //make it into game global
\r
1263 src/lib/16_head.h://#define OLD16_VL
\r
1264 src/lib/16_in.c://
\r
1265 src/lib/16_in.c:// ID Engine
\r
1266 src/lib/16_in.c:// ID_IN.c - Input Manager
\r
1267 src/lib/16_in.c:// v1.0d1w
\r
1268 src/lib/16_in.c:// By Jason Blochowiak
\r
1269 src/lib/16_in.c:// Open Watcom port by sparky4
\r
1270 src/lib/16_in.c://
\r
1271 src/lib/16_in.c://
\r
1272 src/lib/16_in.c:// This module handles dealing with the various input devices
\r
1273 src/lib/16_in.c://
\r
1274 src/lib/16_in.c:// Depends on: Memory Mgr (for demo recording), Sound Mgr (for timing stuff),
\r
1275 src/lib/16_in.c:// User Mgr (for command line parms)
\r
1276 src/lib/16_in.c://
\r
1277 src/lib/16_in.c:// Globals:
\r
1278 src/lib/16_in.c:// LastScan - The keyboard scan code of the last key pressed
\r
1279 src/lib/16_in.c:// LastASCII - The ASCII value of the last key pressed
\r
1280 src/lib/16_in.c:// DEBUG - there are more globals
\r
1281 src/lib/16_in.c://
\r
1282 src/lib/16_in.c://extern inconfig inpu;
\r
1283 src/lib/16_in.c://inpu.KbdDefs = {0x1d,0x38,/*0x47,*/0x48,/*0x49,*/0x4b,0x4d,/*0x4f,*/0x50/*,0x51*/};
\r
1284 src/lib/16_in.c:static byte far ASCIINames[] = // Unshifted ASCII for scan codes
\r
1285 src/lib/16_in.c:// 0 1 2 3 4 5 6 7 8 9 A B C D E F
\r
1286 src/lib/16_in.c: 0 ,27 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,9 , // 0
\r
1287 src/lib/16_in.c: 'q','w','e','r','t','y','u','i','o','p','[',']',13 ,0 ,'a','s', // 1
\r
1288 src/lib/16_in.c: 'd','f','g','h','j','k','l',';',39 ,'`',0 ,92 ,'z','x','c','v', // 2
\r
1289 src/lib/16_in.c: 'b','n','m',',','.','/',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3
\r
1290 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4
\r
1291 src/lib/16_in.c: '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5
\r
1292 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6
\r
1293 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7
\r
1294 src/lib/16_in.c: far ShiftNames[] = // Shifted ASCII for scan codes
\r
1295 src/lib/16_in.c:// 0 1 2 3 4 5 6 7 8 9 A B C D E F
\r
1296 src/lib/16_in.c: 0 ,27 ,'!','@','#','$','%','^','&','*','(',')','_','+',8 ,9 , // 0
\r
1297 src/lib/16_in.c: 'Q','W','E','R','T','Y','U','I','O','P','{','}',13 ,0 ,'A','S', // 1
\r
1298 src/lib/16_in.c: 'D','F','G','H','J','K','L',':',34 ,'~',0 ,'|','Z','X','C','V', // 2
\r
1299 src/lib/16_in.c: 'B','N','M','<','>','?',0 ,'*',0 ,' ',0 ,0 ,0 ,0 ,0 ,0 , // 3
\r
1300 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,'7','8','9','-','4','5','6','+','1', // 4
\r
1301 src/lib/16_in.c: '2','3','0',127,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5
\r
1302 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6
\r
1303 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7
\r
1304 src/lib/16_in.c: far SpecialNames[] = // ASCII for 0xe0 prefixed codes
\r
1305 src/lib/16_in.c:// 0 1 2 3 4 5 6 7 8 9 A B C D E F
\r
1306 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 0
\r
1307 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,13 ,0 ,0 ,0 , // 1
\r
1308 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 2
\r
1309 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,'/',0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 3
\r
1310 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 4
\r
1311 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 5
\r
1312 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , // 6
\r
1313 src/lib/16_in.c: 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 // 7
\r
1314 src/lib/16_in.c: *ScanNames[] = // Scan code names with single chars
\r
1315 src/lib/16_in.c: }, // DEBUG - consolidate these
\r
1316 src/lib/16_in.c: far ExtScanCodes[] = // Scan codes with >1 char names
\r
1317 src/lib/16_in.c: *ExtScanNames[] = // Names corresponding to ExtScanCodes
\r
1318 src/lib/16_in.c:static Direction DirTable[] = // Quick lookup for total direction
\r
1319 src/lib/16_in.c: //dir_Nortinest,
\r
1320 src/lib/16_in.c: //dir_NorthEast,
\r
1321 src/lib/16_in.c: //dir_Soutinest,
\r
1322 src/lib/16_in.c: //,dir_SouthEast
\r
1323 src/lib/16_in.c:// Internal routines
\r
1324 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1325 src/lib/16_in.c://
\r
1326 src/lib/16_in.c:// INL_KeyService() - Handles a keyboard interrupt (key up/down)
\r
1327 src/lib/16_in.c://
\r
1328 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1329 src/lib/16_in.c: k = inp(0x60); // Get the scan code
\r
1330 src/lib/16_in.c: // Tell the XT keyboard controller to clear the key
\r
1331 src/lib/16_in.c: if (k == 0xe0) // Special key prefix
\r
1332 src/lib/16_in.c: else if (k == 0xe1) // Handle Pause key
\r
1333 src/lib/16_in.c: if (k & 0x80) // Break code
\r
1334 src/lib/16_in.c:// DEBUG - handle special keys: ctl-alt-delete, print scrn
\r
1335 src/lib/16_in.c: else // Make code
\r
1336 src/lib/16_in.c: // DEBUG - make caps lock light work
\r
1337 src/lib/16_in.c: if (inpu.Keyboard[sc_LShift] || inpu.Keyboard[sc_RShift]) // If shifted
\r
1338 src/lib/16_in.c: //union REGS CPURegs;
\r
1339 src/lib/16_in.c: //x = CPURegs.x.ax;
\r
1340 src/lib/16_in.c: //int86(MouseInt,&CPURegs,&CPURegs);
\r
1341 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1342 src/lib/16_in.c://
\r
1343 src/lib/16_in.c:// INL_GetMouseDelta() - Gets the amount that the mouse has moved from the
\r
1344 src/lib/16_in.c:// mouse driver
\r
1345 src/lib/16_in.c://
\r
1346 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1347 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1348 src/lib/16_in.c://
\r
1349 src/lib/16_in.c:// INL_GetMouseButtons() - Gets the status of the mouse buttons from the
\r
1350 src/lib/16_in.c:// mouse driver
\r
1351 src/lib/16_in.c://
\r
1352 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1353 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1354 src/lib/16_in.c://
\r
1355 src/lib/16_in.c:// IN_GetJoyAbs() - Reads the absolute position of the specified joystick
\r
1356 src/lib/16_in.c://
\r
1357 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1358 src/lib/16_in.c: xs = joy? 2 : 0; // Find shift value for x axis
\r
1359 src/lib/16_in.c: xb = 1 << xs; // Use shift value to get x bit mask
\r
1360 src/lib/16_in.c: ys = joy? 3 : 1; // Do the same for y axis
\r
1361 src/lib/16_in.c:// Read the absolute joystick values
\r
1362 src/lib/16_in.c: pushf // Save some registers
\r
1363 src/lib/16_in.c: cli // Make sure an interrupt doesn't screw the timings
\r
1364 src/lib/16_in.c: out dx,al // Clear the resistors
\r
1365 src/lib/16_in.c: mov ah,[xb] // Get masks into registers
\r
1366 src/lib/16_in.c: xor si,si // Clear count registers
\r
1367 src/lib/16_in.c: xor bh,bh // Clear high byte of bx for later
\r
1368 src/lib/16_in.c: push bp // Don't mess up stack frame
\r
1369 src/lib/16_in.c: in al,dx // Get bits indicating whether all are finished
\r
1370 src/lib/16_in.c: dec bp // Check bounding register
\r
1371 src/lib/16_in.c: jz done // We have a silly value - abort
\r
1372 src/lib/16_in.c: mov bl,al // Duplicate the bits
\r
1373 src/lib/16_in.c: and bl,ah // Mask off useless bits (in [xb])
\r
1374 src/lib/16_in.c: add si,bx // Possibly increment count register
\r
1375 src/lib/16_in.c: mov cl,bl // Save for testing later
\r
1376 src/lib/16_in.c: and bl,ch // [yb]
\r
1377 src/lib/16_in.c: jnz loo // If both bits were 0, drop out
\r
1378 src/lib/16_in.c: mov cl,[xs] // Get the number of bits to shift
\r
1379 src/lib/16_in.c: shr si,cl // and shift the count that many times
\r
1380 src/lib/16_in.c: mov [x],si // Store the values into the variables
\r
1381 src/lib/16_in.c: popf // Restore the registers
\r
1382 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1383 src/lib/16_in.c://
\r
1384 src/lib/16_in.c:// INL_GetJoyDelta() - Returns the relative movement of the specified
\r
1385 src/lib/16_in.c:// joystick (from +/-127, scaled adaptively)
\r
1386 src/lib/16_in.c://
\r
1387 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1388 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1389 src/lib/16_in.c://
\r
1390 src/lib/16_in.c:// INL_GetJoyButtons() - Returns the button status of the specified
\r
1391 src/lib/16_in.c:// joystick
\r
1392 src/lib/16_in.c://
\r
1393 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1394 src/lib/16_in.c: result = inp(0x201); // Get all the joystick buttons
\r
1395 src/lib/16_in.c: result >>= joy? 6 : 4; // Shift into bits 0-1
\r
1396 src/lib/16_in.c: result &= 3; // Mask off the useless bits
\r
1397 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1398 src/lib/16_in.c://
\r
1399 src/lib/16_in.c:// IN_GetJoyButtonsDB() - Returns the de-bounced button status of the
\r
1400 src/lib/16_in.c:// specified joystick
\r
1401 src/lib/16_in.c://
\r
1402 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1403 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1404 src/lib/16_in.c://
\r
1405 src/lib/16_in.c:// INL_StartKbd() - Sets up my keyboard stuff for use
\r
1406 src/lib/16_in.c://
\r
1407 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1408 src/lib/16_in.c: INL_KeyHook = 0; // Clear key hook
\r
1409 src/lib/16_in.c: //_dos_setvect(KeyInt,INL_KeyService);
\r
1410 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1411 src/lib/16_in.c://
\r
1412 src/lib/16_in.c:// INL_ShutKbd() - Restores keyboard control to the BIOS
\r
1413 src/lib/16_in.c://
\r
1414 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1415 src/lib/16_in.c: pokeb(0x40,0x17,peekb(0x40,0x17) & 0xfaf0); // Clear ctrl/alt/shift flags
\r
1416 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1417 src/lib/16_in.c://
\r
1418 src/lib/16_in.c:// INL_StartMouse() - Detects and sets up the mouse
\r
1419 src/lib/16_in.c://
\r
1420 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1421 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1422 src/lib/16_in.c://
\r
1423 src/lib/16_in.c:// INL_ShutMouse() - Cleans up after the mouse
\r
1424 src/lib/16_in.c://
\r
1425 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1426 src/lib/16_in.c://
\r
1427 src/lib/16_in.c:// INL_SetJoyScale() - Sets up scaling values for the specified joystick
\r
1428 src/lib/16_in.c://
\r
1429 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1430 src/lib/16_in.c://
\r
1431 src/lib/16_in.c:// IN_SetupJoy() - Sets up thresholding values and calls INL_SetJoyScale()
\r
1432 src/lib/16_in.c:// to set up scaling values
\r
1433 src/lib/16_in.c://
\r
1434 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1435 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1436 src/lib/16_in.c://
\r
1437 src/lib/16_in.c:// INL_StartJoy() - Detects & auto-configures the specified joystick
\r
1438 src/lib/16_in.c:// The auto-config assumes the joystick is centered
\r
1439 src/lib/16_in.c://
\r
1440 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1441 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1442 src/lib/16_in.c://
\r
1443 src/lib/16_in.c:// INL_ShutJoy() - Cleans up the joystick stuff
\r
1444 src/lib/16_in.c://
\r
1445 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1446 src/lib/16_in.c:// Public routines
\r
1447 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1448 src/lib/16_in.c://
\r
1449 src/lib/16_in.c:// IN_Startup() - Starts up the Input Mgr
\r
1450 src/lib/16_in.c://
\r
1451 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1452 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1453 src/lib/16_in.c://
\r
1454 src/lib/16_in.c:// IN_Default() - Sets up default conditions for the Input Mgr
\r
1455 src/lib/16_in.c://
\r
1456 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1457 src/lib/16_in.c: //int i;
\r
1458 src/lib/16_in.c: //in.KbdDefs[0].upleft = 0x47;
\r
1459 src/lib/16_in.c: //in.KbdDefs[0].upright = 0x49;
\r
1460 src/lib/16_in.c: //in.KbdDefs[0].downleft = 0x4f;
\r
1461 src/lib/16_in.c: //in.KbdDefs[0].downright = 0x51;
\r
1462 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1463 src/lib/16_in.c://
\r
1464 src/lib/16_in.c:// IN_Shutdown() - Shuts down the Input Mgr
\r
1465 src/lib/16_in.c://
\r
1466 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1467 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1468 src/lib/16_in.c://
\r
1469 src/lib/16_in.c:// IN_SetKeyHook() - Sets the routine that gets called by INL_KeyService()
\r
1470 src/lib/16_in.c:// everytime a real make/break code gets hit
\r
1471 src/lib/16_in.c://
\r
1472 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1473 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1474 src/lib/16_in.c://
\r
1475 src/lib/16_in.c:// IN_ClearKeyDown() - Clears the keyboard array
\r
1476 src/lib/16_in.c://
\r
1477 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1478 src/lib/16_in.c: //int i;
\r
1479 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1480 src/lib/16_in.c://
\r
1481 src/lib/16_in.c:// INL_AdjustCursor() - Internal routine of common code from IN_ReadCursor()
\r
1482 src/lib/16_in.c://
\r
1483 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1484 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1485 src/lib/16_in.c://
\r
1486 src/lib/16_in.c:// IN_ReadCursor() - Reads the input devices and fills in the cursor info
\r
1487 src/lib/16_in.c:// struct
\r
1488 src/lib/16_in.c://
\r
1489 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1490 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1491 src/lib/16_in.c://
\r
1492 src/lib/16_in.c:// IN_ReadControl() - Reads the device associated with the specified
\r
1493 src/lib/16_in.c:// player and fills in the control info struct
\r
1494 src/lib/16_in.c://
\r
1495 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1496 src/lib/16_in.c://TODO: make this into a function that the joystick AND keyboard can use wwww
\r
1497 src/lib/16_in.c: if(DIRECTIONIFELSE)//(player->info.dir == 2)
\r
1498 src/lib/16_in.c: }else{ //2 keys pressed
\r
1499 src/lib/16_in.c: if((inpu.Keyboard[def->left] && !inpu.Keyboard[def->right])){ dir = DirTable[1]; }//mx = motion_Left; }
\r
1500 src/lib/16_in.c: else if((inpu.Keyboard[def->right] && !inpu.Keyboard[def->left])){ dir = DirTable[3]; }//mx = motion_Right; }
\r
1501 src/lib/16_in.c: if((inpu.Keyboard[def->up] && !inpu.Keyboard[def->down])){ dir = DirTable[0]; }//my = motion_Up; }
\r
1502 src/lib/16_in.c: else if((inpu.Keyboard[def->down] && !inpu.Keyboard[def->up])){ dir = DirTable[4]; }//my = motion_Down; }
\r
1503 src/lib/16_in.c: //if(dbg_testcontrolnoisy > 0){ printf("dir=%c ", dirchar(dir)); printf("pdir=%c ", dirchar(player->pdir)); }
\r
1504 src/lib/16_in.c: //input from player
\r
1505 src/lib/16_in.c: dx = mx;// * 127;
\r
1506 src/lib/16_in.c: dy = my;// * 127;
\r
1507 src/lib/16_in.c:// player->info.dir = DirTable[((my + 1) * 3) + (mx + 1)];
\r
1508 src/lib/16_in.c: // Pack the control info into a byte
\r
1509 src/lib/16_in.c: //printf("b1=%u b2=%u b3=%u b4=%u ", player->info.button0, player->info.button1, player->info.button2, player->info.button3);
\r
1510 src/lib/16_in.c: //printf("q=%d ", player->q);
\r
1511 src/lib/16_in.c: //printf("cpee=%c ", dirchar(conpee));
\r
1512 src/lib/16_in.c: //else if(!realdelta) printf("%c%d %c%d %c%d %c%d", dirchar(0), inpu.Keyboard[def->up], dirchar(4), inpu.Keyboard[def->down], dirchar(1), inpu.Keyboard[def->left], dirchar(3), inpu.Keyboard[def->right]);
\r
1513 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1514 src/lib/16_in.c://
\r
1515 src/lib/16_in.c:// IN_SetControlType() - Sets the control type to be used by the specified
\r
1516 src/lib/16_in.c:// player
\r
1517 src/lib/16_in.c://
\r
1518 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1519 src/lib/16_in.c: // DEBUG - check that requested type is present?
\r
1520 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1521 src/lib/16_in.c://
\r
1522 src/lib/16_in.c:// IN_StartDemoRecord() - Starts the demo recording, using a buffer the
\r
1523 src/lib/16_in.c:// size passed. Returns if the buffer allocation was successful
\r
1524 src/lib/16_in.c://
\r
1525 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1526 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1527 src/lib/16_in.c://
\r
1528 src/lib/16_in.c:// IN_StartDemoPlayback() - Plays back the demo pointed to of the given size
\r
1529 src/lib/16_in.c://
\r
1530 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1531 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1532 src/lib/16_in.c://
\r
1533 src/lib/16_in.c:// IN_StopDemo() - Turns off demo mode
\r
1534 src/lib/16_in.c://
\r
1535 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1536 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1537 src/lib/16_in.c://
\r
1538 src/lib/16_in.c:// IN_FreeDemoBuffer() - Frees the demo buffer, if it's been allocated
\r
1539 src/lib/16_in.c://
\r
1540 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1541 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1542 src/lib/16_in.c://
\r
1543 src/lib/16_in.c:// IN_GetScanName() - Returns a string containing the name of the
\r
1544 src/lib/16_in.c:// specified scan code
\r
1545 src/lib/16_in.c://
\r
1546 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1547 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1548 src/lib/16_in.c://
\r
1549 src/lib/16_in.c:// IN_WaitForKey() - Waits for a scan code, then clears LastScan and
\r
1550 src/lib/16_in.c:// returns the scan code
\r
1551 src/lib/16_in.c://
\r
1552 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1553 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1554 src/lib/16_in.c://
\r
1555 src/lib/16_in.c:// IN_WaitForASCII() - Waits for an ASCII char, then clears LastASCII and
\r
1556 src/lib/16_in.c:// returns the ASCII value
\r
1557 src/lib/16_in.c://
\r
1558 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1559 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1560 src/lib/16_in.c://
\r
1561 src/lib/16_in.c:// IN_AckBack() - Waits for either an ASCII keypress or a button press
\r
1562 src/lib/16_in.c://
\r
1563 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1564 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1565 src/lib/16_in.c://
\r
1566 src/lib/16_in.c:// IN_Ack() - Clears user input & then calls IN_AckBack()
\r
1567 src/lib/16_in.c://
\r
1568 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1569 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1570 src/lib/16_in.c://
\r
1571 src/lib/16_in.c:// IN_IsUserInput() - Returns true if a key has been pressed or a button
\r
1572 src/lib/16_in.c:// is down
\r
1573 src/lib/16_in.c://
\r
1574 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1575 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1576 src/lib/16_in.c://
\r
1577 src/lib/16_in.c:// IN_UserInput() - Waits for the specified delay time (in ticks) or the
\r
1578 src/lib/16_in.c:// user pressing a key or a mouse button. If the clear flag is set, it
\r
1579 src/lib/16_in.c:// then either clears the key or waits for the user to let the mouse
\r
1580 src/lib/16_in.c:// button up.
\r
1581 src/lib/16_in.c://
\r
1582 src/lib/16_in.c:///////////////////////////////////////////////////////////////////////////
\r
1583 src/lib/16_in.c:// if(dbg_testkeyin > 0) printf("%u\n", inpu.Keyboard[kee]);
\r
1584 src/lib/16_in.c://init player!
\r
1585 src/lib/16_in.c: player->spt=(TILEWH/(player->speed)); //speed per tile wwww
\r
1586 src/lib/16_in.h://
\r
1587 src/lib/16_in.h:// ID Engine
\r
1588 src/lib/16_in.h:// ID_IN.h - Header file for Input Manager
\r
1589 src/lib/16_in.h:// v1.0d1w
\r
1590 src/lib/16_in.h:// By Jason Blochowiak
\r
1591 src/lib/16_in.h:// Open Watcom port by sparky4
\r
1592 src/lib/16_in.h://
\r
1593 src/lib/16_in.h:#ifdef __WATCOMC__ //borland C BCEXMM.EXE
\r
1594 src/lib/16_in.h://#include "src/lib/bitmap.h" //old format
\r
1595 src/lib/16_in.h://if else for gfxtesting and direction
\r
1596 src/lib/16_in.h://player[pn].d == 2 ||
\r
1597 src/lib/16_in.h://player[pn].d != 2 ||
\r
1598 src/lib/16_in.h:#define DIRECTIONIFELSE (player->info.dir == 2)//(player[pn].info.dir == 2)
\r
1599 src/lib/16_in.h://#define NDIRECTIONIFELSE (player->info.dir != 2)//(player[pn].info.dir != 2)
\r
1600 src/lib/16_in.h:#define KeyInt 9 // The keyboard ISR number
\r
1601 src/lib/16_in.h:// Stuff for the joystick
\r
1602 src/lib/16_in.h:// Stuff for the mouse
\r
1603 src/lib/16_in.h: //ctrl_None, // MDM (GAMERS EDGE) - added
\r
1604 src/lib/16_in.h: dir_North,//dir_NorthEast,
\r
1605 src/lib/16_in.h: dir_West,//dir_Nortinest,
\r
1606 src/lib/16_in.h: dir_East,//,dir_SouthEast,
\r
1607 src/lib/16_in.h: dir_South,//dir_Soutinest,
\r
1608 src/lib/16_in.h: //upleft,
\r
1609 src/lib/16_in.h: //upright,
\r
1610 src/lib/16_in.h: //downleft,
\r
1611 src/lib/16_in.h: //,downright
\r
1612 src/lib/16_in.h: int x; //player exact position on the viewable map
\r
1613 src/lib/16_in.h: int y; //player exact position on the viewable map
\r
1614 src/lib/16_in.h: int tx; //player tile position on the viewable map
\r
1615 src/lib/16_in.h: int ty; //player tile position on the viewable map
\r
1616 src/lib/16_in.h: int triggerx; //player's trigger box tile position on the viewable map
\r
1617 src/lib/16_in.h: int triggery; //player's trigger box tile position on the viewable map
\r
1618 src/lib/16_in.h: int sheetsetx; //NOT USED YET! player sprite sheet set on the image x
\r
1619 src/lib/16_in.h: int sheetsety; //NOT USED YET! player sprite sheet set on the image y
\r
1620 src/lib/16_in.h: byte d; //direction to render sprite!! wwww
\r
1621 src/lib/16_in.h: byte q; //loop variable for anumation and locking the playing to compleate the animation cycle to prevent issues with misalignment www
\r
1622 src/lib/16_in.h: byte near pdir; //previous direction~
\r
1623 src/lib/16_in.h: //byte near kd[2]; //array of arrow key pressed
\r
1624 src/lib/16_in.h: word speed; //player speed!
\r
1625 src/lib/16_in.h: word spt; //speed per tile
\r
1626 src/lib/16_in.h://0000 planar_buf_t huge *data; //supposively the sprite sheet data
\r
1627 src/lib/16_in.h:// planar_buf_t data; //supposively the sprite sheet data
\r
1628 src/lib/16_in.h:////0000----
\r
1629 src/lib/16_in.h: struct sprite *spri; //supposively the sprite sheet data
\r
1630 src/lib/16_in.h: bitmap_t *data; //supposively the sprite sheet data//old format
\r
1631 src/lib/16_in.h: sword hp; //hitpoints of the player
\r
1632 src/lib/16_in.h:// Internal routines
\r
1633 src/lib/16_in.h://static void INL_GetMouseDelta(int *x,int *y);
\r
1634 src/lib/16_in.h://static word INL_GetMouseButtons(void);
\r
1635 src/lib/16_in.h://static void INL_GetJoyDelta(word joy,int *dx,int *dy,boolean adaptive);
\r
1636 src/lib/16_in.h://static word INL_GetJoyButtons(word joy);
\r
1637 src/lib/16_in.h://static void INL_StartKbd(void);
\r
1638 src/lib/16_in.h://static void INL_ShutKbd(void);
\r
1639 src/lib/16_in.h://static boolean INL_StartMouse(void);
\r
1640 src/lib/16_in.h://static void INL_ShutMouse(void);
\r
1641 src/lib/16_in.h://static void INL_SetJoyScale(word joy);
\r
1642 src/lib/16_in.h://static boolean INL_StartJoy(word joy);
\r
1643 src/lib/16_in.h://static void INL_ShutJoy(word joy);
\r
1644 src/lib/16_in.h://static void INL_AdjustCursor(CursorInfo *info,word buttons,int dx,int dy);
\r
1645 src/lib/16_map.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1646 src/lib/16_map.c:// Ideally, preprocess json during compilation and read serialized data
\r
1647 src/lib/16_map.c: //char *s;
\r
1648 src/lib/16_map.c: //fix this to be far~
\r
1649 src/lib/16_map.c: //Fix to load tileset specified.
\r
1650 src/lib/16_map.c: //And move to vrs, probably
\r
1651 src/lib/16_map.c: //bp = bitmapLoadPcx("data/ed.pcx");
\r
1652 src/lib/16_map.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1653 src/lib/16_map.h://#include "stdio.h" included in 16_head.h
\r
1654 src/lib/16_map.h://#include "stdlib.h" included in 16_head.h
\r
1655 src/lib/16_map.h://TODO: 16_mm and 16_ca must handle this
\r
1656 src/lib/16_map.h: bitmap_t huge *btdata; //old
\r
1657 src/lib/16_map.h: planar_buf_t huge *data; //old
\r
1658 src/lib/16_map.h: boolean debug_text; //show the value of the tile! wwww
\r
1659 src/lib/16_map.h://TODO: 16_mm and 16_ca must handle this
\r
1660 src/lib/16_map.h://TODO: add variables from 16_ca
\r
1661 src/lib/16_map.h: //long planestart[3];
\r
1662 src/lib/16_map.h: //unsigned planelength[3];
\r
1663 src/lib/16_map.h: byte * huge *data; //TODO: 16_mm and 16_ca must handle this
\r
1664 src/lib/16_map.h: tiles_t **tiles; //TODO: 16_mm and 16_ca must handle this
\r
1665 src/lib/16_map.h: unsigned int width, height; //this has to be positive
\r
1666 src/lib/16_mm.c:// NEWMM.C
1667 src/lib/16_mm.c:void (* XMSaddr) (void); // far pointer to XMS driver
1668 src/lib/16_mm.c: static char emmname[] = "EMMXXXX0"; //fix by andrius4669
1669 src/lib/16_mm.c: mov dx,OFFSET emmname //fix by andrius4669
1670 src/lib/16_mm.c: int 0x21 // try to open EMMXXXX0 device
1671 src/lib/16_mm.c: int 0x21 // get device info
1672 src/lib/16_mm.c: int 0x21 // get status
1673 src/lib/16_mm.c: int 0x21 // close handle
1675 src/lib/16_mm.c: // EMS is good
1678 src/lib/16_mm.c: // EMS is bad
1680 src/lib/16_mm.c: //byte EMS_status;
1681 src/lib/16_mm.c: int EMS_INT // make sure EMS hardware is present
1682 src/lib/16_mm.c: //mov [EMS_status],ah
1683 src/lib/16_mm.c: mov [EMSVer],ax // set EMSVer
1684 src/lib/16_mm.c: cmp al,0x32 // only work on ems 3.2 or greater
1685 src/lib/16_mm.c: int EMS_INT // find the page frame address
1686 src/lib/16_mm.c: int EMS_INT // find out how much EMS is there
1687 src/lib/16_mm.c: jz noEMS // no EMS at all to allocate
1688 src/lib/16_mm.c: //EXPAND DONG!!!!
1689 src/lib/16_mm.c: jle getpages // there is only 1,2,3,or 4 pages
1690 src/lib/16_mm.c: mov bx,4 // we can't use more than 4 pages
1691 src/lib/16_mm.c: mov ah,EMS_ALLOCPAGES // allocate up to 64k of EMS
1692 src/lib/16_mm.c: Quit("MML_ShutdownEMS: Error freeing EMS!\n"); //++++ add something
1693 src/lib/16_mm.c: mov bx,[i] // logical page
1694 src/lib/16_mm.c: mov al,bl // physical page
1695 src/lib/16_mm.c: mov dx,[EMSHandle] // handle
1696 src/lib/16_mm.c://SUB EMS.MapXPages (PhysicalStart, LogicalStart, NumPages, Handle)
1697 src/lib/16_mm.c: //Maps up to 4 logical EMS pages to physical pages in the page frame, where:
1698 src/lib/16_mm.c: //PhysicalStart = Physical page first logical page is mapped to
1699 src/lib/16_mm.c: //LogicalStart = First logical page to map
1700 src/lib/16_mm.c: //NumPages = Number of pages to map (1 to 4)
1701 src/lib/16_mm.c: //Handle = EMS handle logical pages are allocated to
1702 src/lib/16_mm.c: /*//Create a buffer containing the page information
1703 src/lib/16_mm.c:// FOR x = 0 TO NumPages - 1
1704 src/lib/16_mm.c:// MapInfo$ = MapInfo$ + MKI$(LogicalStart + x) + MKI$(PhysicalStart + x)
1705 src/lib/16_mm.c:// NEXT*/
1706 src/lib/16_mm.c:// Regs.ax = 0x5000 //Map the pages in the buffer
1707 src/lib/16_mm.c:// Regs.cx = NumPages //to the pageframe
1708 src/lib/16_mm.c:// Regs.dx = Handle
1709 src/lib/16_mm.c:// Regs.ds = VARSEG(MapInfo$)
1710 src/lib/16_mm.c:// Regs.si = SADD(MapInfo$)
1711 src/lib/16_mm.c:// InterruptX 0x67, Regs, Regs
1712 src/lib/16_mm.c:// EMS.Error = (Regs.ax AND 0xFF00&) \ 0x100 //Store the status code
1713 src/lib/16_mm.c://END SUB
1714 src/lib/16_mm.c: mov cx,[i] // logical page
1715 src/lib/16_mm.c: mov al,bl // physical page
1716 src/lib/16_mm.c: mov dx,[EMSHandle] // handle
1717 src/lib/16_mm.c: //strcpy(str,"MM_MapXEMS: EMS error 0x");
1718 src/lib/16_mm.c: //itoa(err,str2,16);
1719 src/lib/16_mm.c: //printf("%s%x\n",str, err);
1720 src/lib/16_mm.c: //printf("FACK! %x\n", err);
1721 src/lib/16_mm.c://==========================================================================
1722 src/lib/16_mm.c: //numUMBs = 0;
1723 src/lib/16_mm.c: int 0x2f // query status of installed diver
1724 src/lib/16_mm.c: mov [WORD PTR XMSaddr+2],es // function pointer to XMS driver
1725 src/lib/16_mm.c: mov dx,0xffff // try for largest block possible
1726 src/lib/16_mm.c: //mov ax,dx // Set available Kbytes.
1727 src/lib/16_mm.c: cmp bl,0xb0 // error: smaller UMB is available
1728 src/lib/16_mm.c: call [DWORD PTR XMSaddr] // DX holds largest available UMB
1729 src/lib/16_mm.c: jz done // another error...
1730 src/lib/16_mm.c:// printf("base=%u ", base); printf("size=%u\n", size);
1731 src/lib/16_mm.c://==========================================================================
1732 src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last;
1733 src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // reset rover to start of memory
1735 src/lib/16_mm.c:// search for the block that contains the range of segments
1738 src/lib/16_mm.c:// take the given range out of the block
1740 src/lib/16_mm.c: //++++emsver stuff!
1741 src/lib/16_mm.c: if(segm>1)/// || extra>=0x10000lu)
1742 src/lib/16_mm.c: //if(extra>0xfffflu)
1743 src/lib/16_mm.c: //MML_UseSpace(segstart, seglength, gvar);
1744 src/lib/16_mm.c: //}
1745 src/lib/16_mm.c://++++todo: linked list of segment!
1746 src/lib/16_mm.c: last->next = scan->next; // unlink block
1747 src/lib/16_mm.c: scan->length = segstart-scan->start; // shorten block
1748 src/lib/16_mm.c: }//else if(segm>0) goto segu;
1749 src/lib/16_mm.c: //word segm=1;
1750 src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // reset rover to start of memory
1752 src/lib/16_mm.c:// search for the block that contains the range of segments
1755 src/lib/16_mm.c:// find out how many blocks it spans!
1757 src/lib/16_mm.c: //printf(" seglen=%lu\n", segmlen);
1759 src/lib/16_mm.c:// take the given range out of the block
1761 src/lib/16_mm.c: //return;
1762 src/lib/16_mm.c: last->next = scan->next; // unlink block
1763 src/lib/16_mm.c: scan->length = segstart-scan->start; // shorten block
1764 src/lib/16_mm.c://==========================================================================
1765 src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last;
1766 src/lib/16_mm.c: mmblocktype __far *scan;//,far *last;
1767 src/lib/16_mm.c://==========================================================================
1768 src/lib/16_mm.c: //dword length,seglength;
1769 src/lib/16_mm.c: //huge void huge *start;
1770 src/lib/16_mm.c: word segstart;//,endfree;
1771 src/lib/16_mm.c: //memptr *peeonself;
1773 src/lib/16_mm.c:// set up the linked list (everything in the free list;
1776 src/lib/16_mm.c:// locked block of all memory until we punch out free space
1778 src/lib/16_mm.c: gvar->mm.mmhead = gvar->mm.mmnew; // this will allways be the first node
1779 src/lib/16_mm.c: //gvar->mm.mmnew->useptr = peeonself;
1780 src/lib/16_mm.c: //printf(" %x\n", peeonself);
1781 src/lib/16_mm.c: //printf(" %x\n", *peeonself);
1783 src/lib/16_mm.c:// get all available near conventional memory segments
1785 src/lib/16_mm.c: length=(dword)_memavl();//(dword)GetFreeSize();
1786 src/lib/16_mm.c: //huge start = (void huge *)(gvar->mm.nearheap = _nmalloc(length));
1787 src/lib/16_mm.c: //huge start = (void huge *)(gvar->mm.nearheap = malloc(length));
1788 src/lib/16_mm.c: seglength = length / 16; // now in paragraphs
1789 src/lib/16_mm.c: //printf("start=%Fp segstart=%x seglen=%lu len=%lu\n", start, segstart, seglength, length);
1791 src/lib/16_mm.c:// get all available far conventional memory segments
1793 src/lib/16_mm.c: //printf("_FARCORELEFT %lu\n", _FCORELEFT);
1794 src/lib/16_mm.c: length=_FCORELEFT;//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL;
1795 src/lib/16_mm.c: length=farcoreleft();//_fcoreleft();//(dword)GetFarFreeSize();//0xffffUL*4UL;
1796 src/lib/16_mm.c: //start = gvar->mm.farheap = halloc(length, 1);
1797 src/lib/16_mm.c: seglength = length / 16; // now in paragraphs
1798 src/lib/16_mm.c: //printf("start=%Fp segstart=%x seglen=%lu len=%lu\n", start, segstart, seglength, length);
1800 src/lib/16_mm.c:// detect EMS and allocate up to 64K at page frame
1802 src/lib/16_mm.c://goto emsskip; //0000
1803 src/lib/16_mm.c: goto emsskip; // param NOEMS
1804 src/lib/16_mm.c: MML_SetupEMS(gvar); // allocate space
1805 src/lib/16_mm.c: //16_PM: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT!
1806 src/lib/16_mm.c: //if(gvar->pm.emm.EMSVer<0x40)
1807 src/lib/16_mm.c: MM_MapEMS(gvar); // map in used pages
1808 src/lib/16_mm.c: //else
1809 src/lib/16_mm.c: //MM_MapXEMS(gvar); // map in used pages
1811 src/lib/16_mm.c:// detect XMS and get upper memory blocks
1813 src/lib/16_mm.c:goto xmsskip;//0000
1814 src/lib/16_mm.c: goto xmsskip; // param NOXMS
1815 src/lib/16_mm.c: MML_SetupXMS(gvar); // allocate as many UMBs as possible
1817 src/lib/16_mm.c:// allocate the misc buffer
1819 src/lib/16_mm.c: gvar->mm.mmrover = gvar->mm.mmhead; // start looking for space after low block
1820 src/lib/16_mm.c://==========================================================================
1821 src/lib/16_mm.c: _ffree(gvar->mm.farheap);// printf(" far freed\n");
1822 src/lib/16_mm.c: _nfree(gvar->mm.nearheap);// printf(" near freed\n");
1823 src/lib/16_mm.c: free(gvar->mm.nearheap);// printf(" near freed\n");
1824 src/lib/16_mm.c: if(MML_CheckForEMS()){ MML_ShutdownEMS(gvar); }//printf(" EMS freed\n"); }
1825 src/lib/16_mm.c: if(MML_CheckForXMS()){ MML_ShutdownXMS(gvar); }//printf(" XMS freed\n"); }
1826 src/lib/16_mm.c://==========================================================================
1827 src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *lastscan,huge *endscan,huge *purge,huge *next;
1828 src/lib/16_mm.c: needed = (size+15)/16; // convert size from bytes to paragraphs
1829 src/lib/16_mm.c: GETNEWBLOCK; // fill in start and next after a spot is found
1830 src/lib/16_mm.c: //if(gvar->mm.mmnew->useptr==NULL){
1831 src/lib/16_mm.c: //%04x
1832 src/lib/16_mm.c: //exit(-5); }
1833 src/lib/16_mm.c://tryagain:
1835 src/lib/16_mm.c: // first search: try to allocate right after the rover, then on up
1836 src/lib/16_mm.c: // second search: search from the head pointer up to the rover
1837 src/lib/16_mm.c: // third search: compress memory, then scan from start
1839 src/lib/16_mm.c: // got enough space between the end of lastscan and
1840 src/lib/16_mm.c: // the start of scan, so throw out anything in the middle
1841 src/lib/16_mm.c: // and allocate the new block
1843 src/lib/16_mm.c: { // free the purgable block
1844 src/lib/16_mm.c: purge = next; // purge another if not at scan
1845 src/lib/16_mm.c: return; // good allocation!
1847 src/lib/16_mm.c: // if this block is purge level zero or locked, skip past it
1849 src/lib/16_mm.c: scan=scan->next; // look at next line
1850 src/lib/16_mm.c: //heapdump();
1851 src/lib/16_mm.c://==========================================================================
1852 src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last;
1853 src/lib/16_mm.c: if(baseptr == gvar->mm.mmrover->useptr) // removed the last allocated block
1854 src/lib/16_mm.c://==========================================================================
1855 src/lib/16_mm.c: //huge mmblocktype huge *start;
1856 src/lib/16_mm.c: //return;
1857 src/lib/16_mm.c://==========================================================================
1858 src/lib/16_mm.c: //huge mmblocktype huge *start;
1859 src/lib/16_mm.c: //return;
1860 src/lib/16_mm.c://==========================================================================
1861 src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *last,huge *next;
1862 src/lib/16_mm.c: unsigned start,length,source,dest;//++++,oldborder;
1863 src/lib/16_mm.c: //++++int playing;
1865 src/lib/16_mm.c: // lock down a currently playing sound
1867 src/lib/16_mm.c:// oldborder = bordercolor;
1868 src/lib/16_mm.c:// VW_ColorBorder (15);
1869 src/lib/16_mm.c: last = NULL; // shut up compiler warning
1871 src/lib/16_mm.c: // block is locked, so try to pile later blocks right after it
1874 src/lib/16_mm.c: // throw out the purgable block
1876 src/lib/16_mm.c: //MM_FreeBlock(scan, gvar);
1878 src/lib/16_mm.c: // push the non purgable block on top of the last moved block
1880 src/lib/16_mm.c: scan = scan->next; // go to next block
1881 src/lib/16_mm.c:// VW_ColorBorder (oldborder);
1882 src/lib/16_mm.c://==========================================================================
1883 src/lib/16_mm.c: //huge mmblocktype huge *scan;
1884 src/lib/16_mm.c: //word temp;
1885 src/lib/16_mm.c: //word chx,chy;
1886 src/lib/16_mm.c: //dword wwww;
1887 src/lib/16_mm.c: byte scratch[160],scratch0[4096],str[16];//[[[[scratch1[160],
1888 src/lib/16_mm.c: //byte d = '#';
1889 src/lib/16_mm.c://[[[[ VW_SetDefaultColors();
1890 src/lib/16_mm.c://[[[[ VW_SetLineWidth(40);
1891 src/lib/16_mm.c://++++mh temp = bufferofs;
1892 src/lib/16_mm.c://++++mh bufferofs = 0;
1893 src/lib/16_mm.c://[[[[ VW_SetScreen (0,0);
1894 src/lib/16_mm.c: strcpy(scratch0, AAMAGENTA); // dark purple = purgable
1895 src/lib/16_mm.c: strcpy(scratch0, AABLUE); // medium blue = non purgable
1896 src/lib/16_mm.c: strcpy(scratch0, AARED); // red = locked
1897 src/lib/16_mm.c: //modexprint(&page, chx, chy, 1, 0, 24, "\nMM_ShowMemory: Memory block order currupted!\n");
1898 src/lib/16_mm.c://++++ chy = scan->start/320;
1899 src/lib/16_mm.c://++++ chx = scan->start%320;
1900 src/lib/16_mm.c: //modexhlin(page, scan->start, (unsigned)end, chy, color);
1901 src/lib/16_mm.c: //for(chx=scan->start;chx+4>=(word)end;chx+=4)
1902 src/lib/16_mm.c: //{
1903 src/lib/16_mm.c://++++ modexClearRegion(page, chx, chy, 4, 4, color);
1904 src/lib/16_mm.c: //}
1905 src/lib/16_mm.c://++++ VW_Hlin(scan->start,(unsigned)end,0,color);
1906 src/lib/16_mm.c: //printf("+ %u %lu\n", w, scan->length);
1907 src/lib/16_mm.c: //++==++==optional strcat(scratch0, AARESET); strcat(scratch0, AAGREY); strcat(scratch0,"_");
1908 src/lib/16_mm.c://++++ VW_Plot(scan->start,0,15);
1909 src/lib/16_mm.c://++++ modexClearRegion(page, chx, chy, 4, 4, 15);
1910 src/lib/16_mm.c://++++ VW_Hlin(end+1,scan->next->start,0,0); // black = free
1911 src/lib/16_mm.c: //wwww=(dword)(scan->next->start)-(dword)scan->start;
1912 src/lib/16_mm.c: //wwww=(dword)scan->start+(dword)(scan->next->start);
1913 src/lib/16_mm.c: //++==++==optional strcat(scratch0, "\n");
1914 src/lib/16_mm.c: //for(w=(wwww)/80;w<=((end+1)/80);w++)
1915 src/lib/16_mm.c: //for(w=(end+1)/80;w<=((wwww)/80);w++)
1916 src/lib/16_mm.c: //printf("0 %x %u %lu\n", scan->next->start, w, scan->length);
1917 src/lib/16_mm.c: //printf("==================\n");
1918 src/lib/16_mm.c: //printf("w=%u wwww=%lu start=%04x next=%04x end=%lu\n", w/80, wwww/80, scan->start, (scan->next->start), end+1);
1919 src/lib/16_mm.c: //printf("==================\n");
1920 src/lib/16_mm.c: //getch();
1921 src/lib/16_mm.c: }/*else {//if(scan->next->start <= scan->start){
1922 src/lib/16_mm.c: //printf("0 %x %x %u\n", scan->start, w);
1923 src/lib/16_mm.c: //strcat(scratch0,"\n");
1924 src/lib/16_mm.c: //for(chx=scan->next->start;chx+4>=(word)end+1;chx+=4)
1925 src/lib/16_mm.c: //{
1926 src/lib/16_mm.c:// chx+=scan->next->start;
1927 src/lib/16_mm.c:// modexClearRegion(page, chx, chy, 4, 4, 2);
1928 src/lib/16_mm.c: //}
1929 src/lib/16_mm.c: //modexhlin(page, end+1,scan->next->start, chy, 0);
1930 src/lib/16_mm.c://++++ VW_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0); // black = free
1931 src/lib/16_mm.c://modexprint(page, chx, chy, 1, 0, 24, &scratch);
1932 src/lib/16_mm.c://++++chy+=4;
1933 src/lib/16_mm.c://fprintf(stdout, "%s", scratch);
1934 src/lib/16_mm.c: //strcat(scratch1, "&near= %Fp ", &(gvar->mm.nearheap));
1935 src/lib/16_mm.c: //strcat(scratch1, "&far= %Fp", &(gvar->mm.farheap));
1936 src/lib/16_mm.c: //strcat(scratch1, "\n");
1937 src/lib/16_mm.c://++++mh IN_Ack();
1938 src/lib/16_mm.c://**** VW_SetLineWidth(64);
1939 src/lib/16_mm.c://++++mh bufferofs = temp;
1940 src/lib/16_mm.c://==========================================================================
1941 src/lib/16_mm.c: //huge mmblocktype huge *scan,huge *best;
1942 src/lib/16_mm.c://==========================================================================
1943 src/lib/16_mm.c: //huge mmblocktype huge *scan;
1944 src/lib/16_mm.c:// return free;
1945 src/lib/16_mm.c://==========================================================================
1946 src/lib/16_mm.c: //huge mmblocktype huge *scan;
1947 src/lib/16_mm.c:// return free;
1948 src/lib/16_mm.c://==========================================================================
1949 src/lib/16_mm.c: //printf("mainmem: %lu\n", gvar->mmi.mainmem);
1950 src/lib/16_mm.c: //printf("Total convmem: %lu ", gvar->mmi.mainmem); printf("TotalFree: %lu ", MM_TotalFree(gvar)+gvar->mmi.EMSmem+gvar->mmi.XMSmem+gvar->mmi.XMSmem); printf("TotalUsed: %lu\n", gvar->mmi.mainmem);
1951 src/lib/16_mm.c: //printf(" UnusedMemory: %lu\n", MM_UnusedMemory(gvar));
1952 src/lib/16_mm.c://==========================================================================
1953 src/lib/16_mm.c: //Returns a text string describing the error code in EMS.Error.
1954 src/lib/16_mm.c://==========================================================================
1955 src/lib/16_mm.h:// ID_MM.H
\r
1956 src/lib/16_mm.h://++++mh #include "src/lib/16_in.h"
\r
1957 src/lib/16_mm.h:#ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final
\r
1958 src/lib/16_mm.h://#define GETNEWBLOCK {if(!(mmnew=mmfree))Quit("MM_GETNEWBLOCK: No free blocks!") ;mmfree=mmfree->next;}
\r
1959 src/lib/16_mm.h:#define SAVENEARHEAP 0x200 // space to leave in data segment
\r
1960 src/lib/16_mm.h:#define SAVEFARHEAP 0//x400 // space to leave in far heap
\r
1961 src/lib/16_mm.h:#define BUFFERSIZE 0x1000 // miscelanious, allways available buffer
\r
1962 src/lib/16_mm.h://moved to typdefst
\r
1963 src/lib/16_mm.h://#define MAXBLOCKS 1024
\r
1964 src/lib/16_mm.h://--------
\r
1965 src/lib/16_mm.h://--------
\r
1966 src/lib/16_mm.h:/*__asm { mov ah,[v]\*///}
\r
1967 src/lib/16_mm.h://==========================================================================
\r
1968 src/lib/16_mm.h://moved to typdefst
\r
1969 src/lib/16_mm.h://==========================================================================
\r
1970 src/lib/16_mm.h:extern void (* XMSaddr) (void); // far pointer to XMS driver
\r
1971 src/lib/16_mm.h://==========================================================================
\r
1972 src/lib/16_mm.h:#define LOCKBIT 0x80 // if set in attributes, block cannot be moved
\r
1973 src/lib/16_mm.h:#define PURGEBITS 3 // 0-3 level, 0= unpurgable, 3= purge first
\r
1974 src/lib/16_mm.h:#define BASEATTRIBUTES 0 // unlocked, non purgable
\r
1975 src/lib/16_mm.h://moved to typedefst
\r
1976 src/lib/16_mm.h://#define MAXUMBS 12
\r
1977 src/lib/16_mm.h:#define MAPPAGES 4//gvar->mm.EMSpagesmapped
\r
1978 src/lib/16_mm.h://moved to typdefst
\r
1979 src/lib/16_mm.h: //word start; dword length;
\r
1980 src/lib/16_mm.h: word blob; //for data larger than 64k
\r
1981 src/lib/16_mm.h: memptr *useptr; // pointer to the segment start
\r
1982 src/lib/16_mm.h: //huge struct mmblockstruct huge *next;
\r
1983 src/lib/16_mm.h: //huge void huge *farheap;
\r
1984 src/lib/16_mm.h: //byte EMS_status;
\r
1985 src/lib/16_mm.h: //dword numUMBs,UMBbase[MAXUMBS];
\r
1986 src/lib/16_mm.h: //huge mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew;
\r
1987 src/lib/16_mm.h://==========================================================================
\r
1988 src/lib/16_mm.h://byte MML_SetupEMS(mminfo_t *mm);
\r
1989 src/lib/16_mm.h://void MML_ShutdownEMS(mminfo_t *mm);
\r
1990 src/lib/16_mm.h://byte MM_MapXEMS(global_game_variables_t *gvar);
\r
1991 src/lib/16_mm.h://void MML_SetupXMS(mminfo_t *mm, mminfotype *mmi);
\r
1992 src/lib/16_mm.h://void MML_ShutdownXMS(mminfo_t *mm);
\r
1993 src/lib/16_mm.h://void MM_GetNewBlock(mminfo_t *mm);
\r
1994 src/lib/16_mm.h://void MM_FreeBlock(mmblocktype *x, mminfo_t *mm);
\r
1995 src/lib/16_mm.h://==========================================================================
\r
1996 src/lib/16_pm.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
1997 src/lib/16_pm.c://
\r
1998 src/lib/16_pm.c:// ID_PM.C
\r
1999 src/lib/16_pm.c:// Id Engine's Page Manager v1.0
\r
2000 src/lib/16_pm.c:// Primary coder: Jason Blochowiak
\r
2001 src/lib/16_pm.c://
\r
2002 src/lib/16_pm.c:// Main Mem specific variables
\r
2003 src/lib/16_pm.c: //boolean MainPresent;
\r
2004 src/lib/16_pm.c:// EMS specific variables
\r
2005 src/lib/16_pm.c: //boolean EMSPresent;
\r
2006 src/lib/16_pm.c:// XMS specific variables
\r
2007 src/lib/16_pm.c: //boolean XMSPresent;
\r
2008 src/lib/16_pm.c: //word gvar->pm.xmm.XMSAvail,gvar->pm.xmm.XMSPagesAvail,gvar->pm.xmm.XMSHandle;
\r
2009 src/lib/16_pm.c: dword XMSDriver; //hard to put in gvar
\r
2010 src/lib/16_pm.c: word XMSVer; //hard to put in gvar
\r
2011 src/lib/16_pm.c:// File specific variables
\r
2012 src/lib/16_pm.c:// General usage variables
\r
2013 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2014 src/lib/16_pm.c://
\r
2015 src/lib/16_pm.c:// EMS Management code
\r
2016 src/lib/16_pm.c://
\r
2017 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2018 src/lib/16_pm.c://
\r
2019 src/lib/16_pm.c:// PML_MapEMS() - Maps a logical page to a physical page
\r
2020 src/lib/16_pm.c://
\r
2021 src/lib/16_pm.c: //int i;
\r
2022 src/lib/16_pm.c://
\r
2023 src/lib/16_pm.c:// PML_StartupEMS() - Sets up EMS for Page Mgr's use
\r
2024 src/lib/16_pm.c:// Checks to see if EMS driver is present
\r
2025 src/lib/16_pm.c:// Verifies that EMS hardware is present
\r
2026 src/lib/16_pm.c:// Make sure that EMS version is 3.2 or later
\r
2027 src/lib/16_pm.c:// If there's more than our minimum (2 pages) available, allocate it (up
\r
2028 src/lib/16_pm.c:// to the maximum we need)
\r
2029 src/lib/16_pm.c://
\r
2030 src/lib/16_pm.c: //long size;
\r
2031 src/lib/16_pm.c: static char emmname[] = "EMMXXXX0"; //fix by andrius4669
\r
2032 src/lib/16_pm.c: gvar->pm.emm.EMSPresent = false; // Assume that we'll fail
\r
2033 src/lib/16_pm.c: mov dx,OFFSET emmname //fix by andrius4669
\r
2034 src/lib/16_pm.c: int EMM_INT // try to open EMMXXXX0 device
\r
2035 src/lib/16_pm.c: int EMM_INT // get device info
\r
2036 src/lib/16_pm.c: int EMM_INT // get status
\r
2037 src/lib/16_pm.c: int EMM_INT // close handle
\r
2038 src/lib/16_pm.c: jc error1 // make sure EMS hardware is present
\r
2039 src/lib/16_pm.c: int EMS_INT // only work on EMS 3.2 or greater (silly, but...)
\r
2040 src/lib/16_pm.c: mov [EMSVer],ax // set EMSVer
\r
2041 src/lib/16_pm.c: cmp al,0x32 // only work on ems 3.2 or greater
\r
2042 src/lib/16_pm.c: int EMS_INT // find the page frame address
\r
2043 src/lib/16_pm.c: int EMS_INT // find out how much EMS is there
\r
2044 src/lib/16_pm.c: jz noEMS // no EMS at all to allocate
\r
2045 src/lib/16_pm.c: jl noEMS // Require at least 2 pages (32k)
\r
2046 src/lib/16_pm.c: // Don't hog all available EMS
\r
2047 src/lib/16_pm.c: // Initialize EMS mapping cache
\r
2048 src/lib/16_pm.c: gvar->pm.emm.EMSPresent = true; // We have EMS
\r
2049 src/lib/16_pm.c://
\r
2050 src/lib/16_pm.c:// PML_ShutdownEMS() - If EMS was used, deallocate it
\r
2051 src/lib/16_pm.c://
\r
2052 src/lib/16_pm.c: //return;
\r
2053 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2054 src/lib/16_pm.c://
\r
2055 src/lib/16_pm.c:// XMS Management code
\r
2056 src/lib/16_pm.c://
\r
2057 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2058 src/lib/16_pm.c://
\r
2059 src/lib/16_pm.c:// PML_StartupXMS() - Starts up XMS for the Page Mgr's use
\r
2060 src/lib/16_pm.c:// Checks for presence of an XMS driver
\r
2061 src/lib/16_pm.c:// Makes sure that there's at least a page of XMS available
\r
2062 src/lib/16_pm.c:// Allocates any remaining XMS (rounded down to the nearest page size)
\r
2063 src/lib/16_pm.c://
\r
2064 src/lib/16_pm.c://TODO: translate the _REG into working assembly
\r
2065 src/lib/16_pm.c://#define STARTUPXMSASM
\r
2066 src/lib/16_pm.c: word XMSAvail, XMSHandle;//, XMSVer;
\r
2067 src/lib/16_pm.c: gvar->pm.xmm.XMSPresent = false; // Assume failure
\r
2068 src/lib/16_pm.c: int XMS_INT // Check for presence of XMS driver
\r
2069 src/lib/16_pm.c: int XMS_INT // Get address of XMS driver
\r
2070 src/lib/16_pm.c: mov [WORD PTR XMSDriver+2],es // function pointer to XMS driver
\r
2071 src/lib/16_pm.c: call [DWORD PTR XMSDriver] //; Get XMS Version Number
\r
2072 src/lib/16_pm.c: mov ah,XMS_QUERYFREE // Find out how much XMS is available
\r
2073 src/lib/16_pm.c: or ax,ax // AJR: bugfix 10/8/92
\r
2074 src/lib/16_pm.c: XMS_CALL(XMS_QUERYFREE); // Find out how much XMS is available
\r
2075 src/lib/16_pm.c: if (!_AX) // AJR: bugfix 10/8/92
\r
2076 src/lib/16_pm.c: XMSAvail &= ~(PMPageSizeKB - 1); // Round off to nearest page size
\r
2077 src/lib/16_pm.c: if (XMSAvail < (PMPageSizeKB * 2)) // Need at least 2 pages
\r
2078 src/lib/16_pm.c: mov ah,XMS_ALLOC // And do the allocation
\r
2079 src/lib/16_pm.c: or ax,ax // AJR: bugfix 10/8/92
\r
2080 src/lib/16_pm.c: XMS_CALL(XMS_ALLOC); // And do the allocation
\r
2081 src/lib/16_pm.c: if (!_AX) // AJR: bugfix 10/8/92
\r
2082 src/lib/16_pm.c: //gvar->pm.xmm.XMSVer = XMSVer;
\r
2083 src/lib/16_pm.c: //printf("XMSHandle\n");
\r
2084 src/lib/16_pm.c: //printf(" 1=%u 2=%u 3=%u 4=%u\n", XMSHandle1, XMSHandle2, XMSHandle3, XMSHandle4);
\r
2085 src/lib/16_pm.c: //printf(" 2=%u ", XMSHandle);
\r
2086 src/lib/16_pm.c: //printf(" %u", gvar->pm.xmm.XMSHandle);
\r
2087 src/lib/16_pm.c://
\r
2088 src/lib/16_pm.c:// PML_XMSCopy() - Copies a main/EMS page to or from XMS
\r
2089 src/lib/16_pm.c:// Will round an odd-length request up to the next even value
\r
2090 src/lib/16_pm.c://
\r
2091 src/lib/16_pm.c: //return;
\r
2092 src/lib/16_pm.c: //return;
\r
2093 src/lib/16_pm.c://
\r
2094 src/lib/16_pm.c:// PML_CopyToXMS() - Copies the specified number of bytes from the real mode
\r
2095 src/lib/16_pm.c:// segment address to the specified XMS page
\r
2096 src/lib/16_pm.c://
\r
2097 src/lib/16_pm.c://
\r
2098 src/lib/16_pm.c:// PML_CopyFromXMS() - Copies the specified number of bytes from an XMS
\r
2099 src/lib/16_pm.c:// page to the specified real mode address
\r
2100 src/lib/16_pm.c://
\r
2101 src/lib/16_pm.c://
\r
2102 src/lib/16_pm.c:// PML_ShutdownXMS()
\r
2103 src/lib/16_pm.c://
\r
2104 src/lib/16_pm.c: //XMS_CALL(XMS_FREE);
\r
2105 src/lib/16_pm.c: //mov err,ah
\r
2106 src/lib/16_pm.c: //return;
\r
2107 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2108 src/lib/16_pm.c://
\r
2109 src/lib/16_pm.c:// Main memory code
\r
2110 src/lib/16_pm.c://
\r
2111 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2112 src/lib/16_pm.c://
\r
2113 src/lib/16_pm.c:// PM_SetMainMemPurge() - Sets the purge level for all allocated main memory
\r
2114 src/lib/16_pm.c:// blocks. This shouldn't be called directly - the PM_LockMainMem() and
\r
2115 src/lib/16_pm.c:// PM_UnlockMainMem() macros should be used instead.
\r
2116 src/lib/16_pm.c://
\r
2117 src/lib/16_pm.c://
\r
2118 src/lib/16_pm.c:// PM_CheckMainMem() - If something besides the Page Mgr makes requests of
\r
2119 src/lib/16_pm.c:// the Memory Mgr, some of the Page Mgr's blocks may have been purged,
\r
2120 src/lib/16_pm.c:// so this function runs through the block list and checks to see if
\r
2121 src/lib/16_pm.c:// any of the blocks have been purged. If so, it marks the corresponding
\r
2122 src/lib/16_pm.c:// page as purged & unlocked, then goes through the block list and
\r
2123 src/lib/16_pm.c:// tries to reallocate any blocks that have been purged.
\r
2124 src/lib/16_pm.c:// This routine now calls PM_LockMainMem() to make sure that any allocation
\r
2125 src/lib/16_pm.c:// attempts made during the block reallocation sweep don't purge any
\r
2126 src/lib/16_pm.c:// of the other blocks. Because PM_LockMainMem() is called,
\r
2127 src/lib/16_pm.c:// PM_UnlockMainMem() needs to be called before any other part of the
\r
2128 src/lib/16_pm.c:// program makes allocation requests of the Memory Mgr.
\r
2129 src/lib/16_pm.c://
\r
2130 src/lib/16_pm.c: if (n != -1) // Is the page using main memory?
\r
2131 src/lib/16_pm.c: if (!gvar->pm.mm.MainMemPages[n]) // Yep, was the block purged?
\r
2132 src/lib/16_pm.c: page->mainPage = -1; // Yes, mark page as purged & unlocked
\r
2133 src/lib/16_pm.c: // Prevent allocation attempts from purging any of our other blocks
\r
2134 src/lib/16_pm.c: if (!*p) // If the page got purged
\r
2135 src/lib/16_pm.c: if (*used & pmba_Allocated) // If it was allocated
\r
2136 src/lib/16_pm.c: *used &= ~pmba_Allocated; // Mark as unallocated
\r
2137 src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail--; // and decrease available count
\r
2138 src/lib/16_pm.c: if (*used & pmba_Used) // If it was used
\r
2139 src/lib/16_pm.c: *used &= ~pmba_Used; // Mark as unused
\r
2140 src/lib/16_pm.c: gvar->pm.MainPagesUsed--; // and decrease used count
\r
2141 src/lib/16_pm.c: MM_GetPtr(p,PMPageSize, gvar); // Try to reallocate
\r
2142 src/lib/16_pm.c: if (gvar->mm.mmerror) // If it failed,
\r
2143 src/lib/16_pm.c: allocfailed = true; // don't try any more allocations
\r
2144 src/lib/16_pm.c: else // If it worked,
\r
2145 src/lib/16_pm.c: *used |= pmba_Allocated; // Mark as allocated
\r
2146 src/lib/16_pm.c: gvar->pm.mm.MainPagesAvail++; // and increase available count
\r
2147 src/lib/16_pm.c://
\r
2148 src/lib/16_pm.c:// PML_StartupMainMem() - Allocates as much main memory as is possible for
\r
2149 src/lib/16_pm.c:// the Page Mgr. The memory is allocated as non-purgeable, so if it's
\r
2150 src/lib/16_pm.c:// necessary to make requests of the Memory Mgr, PM_UnlockMainMem()
\r
2151 src/lib/16_pm.c:// needs to be called.
\r
2152 src/lib/16_pm.c://
\r
2153 src/lib/16_pm.c: int i;//,n;
\r
2154 src/lib/16_pm.c: //return;
\r
2155 src/lib/16_pm.c://
\r
2156 src/lib/16_pm.c:// PML_ShutdownMainMem() - Frees all of the main memory blocks used by the
\r
2157 src/lib/16_pm.c:// Page Mgr.
\r
2158 src/lib/16_pm.c://
\r
2159 src/lib/16_pm.c: // DEBUG - mark pages as unallocated & decrease page count as appropriate
\r
2160 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2161 src/lib/16_pm.c://
\r
2162 src/lib/16_pm.c:// File management code
\r
2163 src/lib/16_pm.c://
\r
2164 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2165 src/lib/16_pm.c://
\r
2166 src/lib/16_pm.c:// PML_ReadFromFile() - Reads some data in from the page file
\r
2167 src/lib/16_pm.c://
\r
2168 src/lib/16_pm.c: //return;
\r
2169 src/lib/16_pm.c: //return;
\r
2170 src/lib/16_pm.c: //return;
\r
2171 src/lib/16_pm.c: //return;
\r
2172 src/lib/16_pm.c://
\r
2173 src/lib/16_pm.c:// PML_OpenPageFile() - Opens the page file and sets up the page info
\r
2174 src/lib/16_pm.c://
\r
2175 src/lib/16_pm.c: //__SEGA buf;
\r
2176 src/lib/16_pm.c: //return;
\r
2177 src/lib/16_pm.c: // Read in header variables
\r
2178 src/lib/16_pm.c: // Allocate and clear the page list
\r
2179 src/lib/16_pm.c: // Read in the chunk offsets
\r
2180 src/lib/16_pm.c: //return;
\r
2181 src/lib/16_pm.c: // Read in the chunk lengths
\r
2182 src/lib/16_pm.c: //return;
\r
2183 src/lib/16_pm.c://
\r
2184 src/lib/16_pm.c:// PML_ClosePageFile() - Closes the page file
\r
2185 src/lib/16_pm.c://
\r
2186 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2187 src/lib/16_pm.c://
\r
2188 src/lib/16_pm.c:// Allocation, etc., code
\r
2189 src/lib/16_pm.c://
\r
2190 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2191 src/lib/16_pm.c://
\r
2192 src/lib/16_pm.c:// PML_GetEMSAddress()
\r
2193 src/lib/16_pm.c://
\r
2194 src/lib/16_pm.c:// Page is in EMS, so figure out which EMS physical page should be used
\r
2195 src/lib/16_pm.c:// to map our page in. If normal page, use EMS physical page 3, else
\r
2196 src/lib/16_pm.c:// use the physical page specified by the lock type
\r
2197 src/lib/16_pm.c://
\r
2198 src/lib/16_pm.c:#pragma argsused // DEBUG - remove lock parameter
\r
2199 src/lib/16_pm.c: // See if this page is already mapped in
\r
2200 src/lib/16_pm.c: emspage = i; // Yep - don't do a redundant remapping
\r
2201 src/lib/16_pm.c: // If page isn't already mapped in, find LRU EMS frame, and use it
\r
2202 src/lib/16_pm.c://
\r
2203 src/lib/16_pm.c:// PM_GetPageAddress() - Returns the address of a given page
\r
2204 src/lib/16_pm.c:// Maps in EMS if necessary
\r
2205 src/lib/16_pm.c:// Returns nil if block isn't cached into Main Memory or EMS
\r
2206 src/lib/16_pm.c://
\r
2207 src/lib/16_pm.c://
\r
2208 src/lib/16_pm.c://
\r
2209 src/lib/16_pm.c:// PML_GiveLRUPage() - Returns the page # of the least recently used
\r
2210 src/lib/16_pm.c:// present & unlocked main/EMS page (or main page if mainonly is true)
\r
2211 src/lib/16_pm.c://
\r
2212 src/lib/16_pm.c://
\r
2213 src/lib/16_pm.c:// PML_GiveLRUXMSPage() - Returns the page # of the least recently used
\r
2214 src/lib/16_pm.c:// (and present) XMS page.
\r
2215 src/lib/16_pm.c:// This routine won't return the XMS page protected (by XMSProtectPage)
\r
2216 src/lib/16_pm.c://
\r
2217 src/lib/16_pm.c://
\r
2218 src/lib/16_pm.c:// PML_PutPageInXMS() - If page isn't in XMS, find LRU XMS page and replace
\r
2219 src/lib/16_pm.c:// it with the main/EMS page
\r
2220 src/lib/16_pm.c://
\r
2221 src/lib/16_pm.c: return; // Already in XMS
\r
2222 src/lib/16_pm.c://
\r
2223 src/lib/16_pm.c:// PML_TransferPageSpace() - A page is being replaced, so give the new page
\r
2224 src/lib/16_pm.c:// the old one's address space. Returns the address of the new page.
\r
2225 src/lib/16_pm.c://
\r
2226 src/lib/16_pm.c: // Copy page that's about to be purged into XMS
\r
2227 src/lib/16_pm.c: // Get the address, and force EMS into a physical page if necessary
\r
2228 src/lib/16_pm.c: // Steal the address
\r
2229 src/lib/16_pm.c: // Mark replaced page as purged
\r
2230 src/lib/16_pm.c://
\r
2231 src/lib/16_pm.c:// PML_GetAPageBuffer() - A page buffer is needed. Either get it from the
\r
2232 src/lib/16_pm.c:// main/EMS free pool, or use PML_GiveLRUPage() to find which page to
\r
2233 src/lib/16_pm.c:// steal the buffer from. Returns a far pointer to the page buffer, and
\r
2234 src/lib/16_pm.c:// sets the fields inside the given page structure appropriately.
\r
2235 src/lib/16_pm.c:// If mainonly is true, free EMS will be ignored, and only main pages
\r
2236 src/lib/16_pm.c:// will be looked at by PML_GiveLRUPage().
\r
2237 src/lib/16_pm.c://
\r
2238 src/lib/16_pm.c: // There's remaining EMS - use it
\r
2239 src/lib/16_pm.c: // There's remaining main memory - use it
\r
2240 src/lib/16_pm.c://
\r
2241 src/lib/16_pm.c:// PML_GetPageFromXMS() - If page is in XMS, find LRU main/EMS page and
\r
2242 src/lib/16_pm.c:// replace it with the page from XMS. If mainonly is true, will only
\r
2243 src/lib/16_pm.c:// search for LRU main page.
\r
2244 src/lib/16_pm.c:// XMSProtectPage is set to the page to be retrieved from XMS, so that if
\r
2245 src/lib/16_pm.c:// the page from which we're stealing the main/EMS from isn't in XMS,
\r
2246 src/lib/16_pm.c:// it won't copy over the page that we're trying to get from XMS.
\r
2247 src/lib/16_pm.c:// (pages that are being purged are copied into XMS, if possible)
\r
2248 src/lib/16_pm.c://
\r
2249 src/lib/16_pm.c://
\r
2250 src/lib/16_pm.c:// PML_LoadPage() - A page is not in main/EMS memory, and it's not in XMS.
\r
2251 src/lib/16_pm.c:// Load it into either main or EMS. If mainonly is true, the page will
\r
2252 src/lib/16_pm.c:// only be loaded into main.
\r
2253 src/lib/16_pm.c://
\r
2254 src/lib/16_pm.c://
\r
2255 src/lib/16_pm.c:// PM_GetPage() - Returns the address of the page, loading it if necessary
\r
2256 src/lib/16_pm.c:// First, check if in Main Memory or EMS
\r
2257 src/lib/16_pm.c:// Then, check XMS
\r
2258 src/lib/16_pm.c:// If not in XMS, load into Main Memory or EMS
\r
2259 src/lib/16_pm.c://
\r
2260 src/lib/16_pm.c:#ifdef __DEBUG_2__ // for debugging
\r
2261 src/lib/16_pm.c: mov al,10 // bright green
\r
2262 src/lib/16_pm.c:if (!gvar->pm.PMPages[pagenum].offset) // JDC: sparse page
\r
2263 src/lib/16_pm.c:#ifdef __DEBUG_2__ // for debugging
\r
2264 src/lib/16_pm.c: mov al,3 // blue
\r
2265 src/lib/16_pm.c: mov al,0x20 // normal
\r
2266 src/lib/16_pm.c://
\r
2267 src/lib/16_pm.c:// PM_SetPageLock() - Sets the lock type on a given page
\r
2268 src/lib/16_pm.c:// pml_Unlocked: Normal, page can be purged
\r
2269 src/lib/16_pm.c:// pml_Locked: Cannot be purged
\r
2270 src/lib/16_pm.c:// pml_EMS?: Same as pml_Locked, but if in EMS, use the physical page
\r
2271 src/lib/16_pm.c:// specified when returning the address. For sound stuff.
\r
2272 src/lib/16_pm.c://
\r
2273 src/lib/16_pm.c://
\r
2274 src/lib/16_pm.c:// PM_Preload() - Loads as many pages as possible into all types of memory.
\r
2275 src/lib/16_pm.c:// Calls the update function after each load, indicating the current
\r
2276 src/lib/16_pm.c:// page, and the total pages that need to be loaded (for thermometer).
\r
2277 src/lib/16_pm.c://
\r
2278 src/lib/16_pm.c: int i,//j,
\r
2279 src/lib/16_pm.c: //totalnonxms,totalxms,
\r
2280 src/lib/16_pm.c: //emstotal,emsfree,
\r
2281 src/lib/16_pm.c: continue; // sparse
\r
2282 src/lib/16_pm.c: continue; // already in main mem
\r
2283 src/lib/16_pm.c://
\r
2284 src/lib/16_pm.c:// cache main/ems blocks
\r
2285 src/lib/16_pm.c://
\r
2286 src/lib/16_pm.c://
\r
2287 src/lib/16_pm.c:// load stuff to XMS
\r
2288 src/lib/16_pm.c://
\r
2289 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2290 src/lib/16_pm.c://
\r
2291 src/lib/16_pm.c:// General code
\r
2292 src/lib/16_pm.c://
\r
2293 src/lib/16_pm.c://///////////////////////////////////////////////////////////////////////////
\r
2294 src/lib/16_pm.c://
\r
2295 src/lib/16_pm.c:// PM_NextFrame() - Increments the frame counter and adjusts the thrash
\r
2296 src/lib/16_pm.c:// avoidence variables
\r
2297 src/lib/16_pm.c://
\r
2298 src/lib/16_pm.c:// If currently in panic mode (to avoid thrashing), check to see if the
\r
2299 src/lib/16_pm.c:// appropriate number of frames have passed since the last time that
\r
2300 src/lib/16_pm.c:// we would have thrashed. If so, take us out of panic mode.
\r
2301 src/lib/16_pm.c://
\r
2302 src/lib/16_pm.c://
\r
2303 src/lib/16_pm.c: // Frame count overrun - kill the LRU hit entries & reset frame count
\r
2304 src/lib/16_pm.c://#if 0
\r
2305 src/lib/16_pm.c://#endif
\r
2306 src/lib/16_pm.c: // DEBUG - set border color
\r
2307 src/lib/16_pm.c: // DEBUG - reset border color
\r
2308 src/lib/16_pm.c://
\r
2309 src/lib/16_pm.c:// PM_Reset() - Sets up caching structures
\r
2310 src/lib/16_pm.c://
\r
2311 src/lib/16_pm.c: // Initialize page list
\r
2312 src/lib/16_pm.c://
\r
2313 src/lib/16_pm.c:// PM_Startup() - Start up the Page Mgr
\r
2314 src/lib/16_pm.c://
\r
2315 src/lib/16_pm.c: //strcpy(&(gvar->pm.fi.PageFileName), "VSWAP.");
\r
2316 src/lib/16_pm.c: //0000+=+=PML_OpenPageFile(gvar);
\r
2317 src/lib/16_pm.c: //return;
\r
2318 src/lib/16_pm.c://
\r
2319 src/lib/16_pm.c:// PM_Shutdown() - Shut down the Page Mgr
\r
2320 src/lib/16_pm.c://
\r
2321 src/lib/16_pm.c: //PML_ClosePageFile(gvar);
\r
2322 src/lib/16_pm.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2323 src/lib/16_pm.h://
\r
2324 src/lib/16_pm.h:// ID_PM.H
\r
2325 src/lib/16_pm.h:// Header file for Id Engine's Page Manager
\r
2326 src/lib/16_pm.h://
\r
2327 src/lib/16_pm.h:/*// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024
\r
2328 src/lib/16_pm.h:#define PMMinMainMem 10 // Min acceptable # of pages from main
\r
2329 src/lib/16_pm.h:#define PMMaxMainMem 100 // Max number of pages in main memory
\r
2330 src/lib/16_pm.h:#define PMThrashThreshold 1 // Number of page thrashes before panic mode
\r
2331 src/lib/16_pm.h:#define PMUnThrashThreshold 5 // Number of non-thrashing frames before leaving panic mode
\r
2332 src/lib/16_pm.h: dword offset; // Offset of chunk into file
\r
2333 src/lib/16_pm.h: word length; // Length of the chunk
\r
2334 src/lib/16_pm.h: int xmsPage; // If in XMS, (xmsPage * PMPageSize) gives offset into XMS handle
\r
2335 src/lib/16_pm.h: PMLockType locked; // If set, this page can't be purged
\r
2336 src/lib/16_pm.h: int emsPage; // If in EMS, logical page/offset into page
\r
2337 src/lib/16_pm.h: int mainPage; // If in Main, index into handle array
\r
2338 src/lib/16_pm.h: dword lastHit; // Last frame number of hit
\r
2339 src/lib/16_pm.h: int baseEMSPage; // Base EMS page for this phys frame
\r
2340 src/lib/16_pm.h: dword lastHit; // Last frame number of hit
\r
2341 src/lib/16_pm.h:extern PageListStruct far *PMPages;*///moved to src/lib/typdefst.h
\r
2342 src/lib/16_pm.h: PM_GetPage(int pagenum, global_game_variables_t *gvar); // Use this one to cache page
\r
2343 src/lib/16render.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2344 src/lib/16render.c://TODO! ADD CLIPPING!!
\r
2345 src/lib/16render.c://memory management needs to be added
\r
2346 src/lib/16render.c://void
\r
2347 src/lib/16render.c://modexDrawBmpRegion (page_t *page, int x, int y, int rx, int ry, int rw, int rh, bitmap_t *bmp)
\r
2348 src/lib/16render.c: //fine tuning
\r
2349 src/lib/16render.c: //^^;
\r
2350 src/lib/16render.c: //printf("%d,%d p(%d,%d) r(%d,%d) rwh(%d,%d)\n", x, y, px, py, rx, ry, rw, rh);
\r
2351 src/lib/16render.c:// byte near *buff;
\r
2352 src/lib/16render.c:// buff = _nmalloc(p->pwidth+1);
\r
2353 src/lib/16render.c: // TODO Make this fast. It's SLOOOOOOW
\r
2354 src/lib/16render.c:// for(plane=0; plane < 4; plane++) {
\r
2355 src/lib/16render.c:// i=0;
\r
2356 src/lib/16render.c:// modexSelectPlane(PLANE(plane+x));
\r
2357 src/lib/16render.c:// for(px = plane; px < p->width; px+=4) {
\r
2358 src/lib/16render.c:// offset=px;
\r
2359 src/lib/16render.c:// for(py=0; py<p->height/2; py++) {
\r
2360 src/lib/16render.c:// //SELECT_ALL_PLANES();
\r
2361 src/lib/16render.c:// if(!sprite || p->plane[offset])
\r
2362 src/lib/16render.c:// page->data = &(p->plane[offset][i++]);
\r
2363 src/lib/16render.c:// offset+=p->width;
\r
2364 src/lib/16render.c:// offset++;
\r
2365 src/lib/16render.c:// }
\r
2366 src/lib/16render.c:// }
\r
2367 src/lib/16render.c:// }
\r
2368 src/lib/16render.c: //for(px=0; px < p->width; px++) {
\r
2369 src/lib/16render.c: //printf("%02X ", (int) p->plane[plane][i++]);
\r
2370 src/lib/16render.c:// _fmemcpy(buff, &(p->plane[plane][i+=p->pwidth]), p->pwidth);
\r
2371 src/lib/16render.c:// printf("buff %u==%s\n", y, *buff);
\r
2372 src/lib/16render.c:// _fmemcpy(page->data + (((page->width/4) * (y+page->dy)) + ((x+page->dx) / 4)), buff, p->pwidth);
\r
2373 src/lib/16render.c: //}
\r
2374 src/lib/16render.c://getch();
\r
2375 src/lib/16render.c:// _nfree(buff);*/
\r
2376 src/lib/16render.c://* normal versions *//
\r
2377 src/lib/16render.c: byte *data = bmp->data;//+bmp->offset;
\r
2378 src/lib/16render.c: byte *data = bmp->data;//+bmp->offset;
\r
2379 src/lib/16render.c://* planar buffer versions *//
\r
2380 src/lib/16render.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2381 src/lib/16_snd.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2382 src/lib/16_snd.c: //FMSetPercusiveMode(percusiveMode);
\r
2383 src/lib/16_snd.c: regNum = 0xB0 + voice % 11;//NUMVOICE;
\r
2384 src/lib/16_snd.c: regNum = 0xA0 + voice % 11;//NUMVOICE;
\r
2385 src/lib/16_snd.c: regNum = 0xB0 + voice % 11;//NUMVOICE;
\r
2386 src/lib/16_snd.c: voiceNum %= 11;//NUMVOICE;
\r
2387 src/lib/16_snd.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2388 src/lib/16_sprit.c: // Retrive animation name list
\r
2389 src/lib/16_sprit.c: // Upon new animation, start from the first sprite in it
\r
2390 src/lib/16_sprit.c: // Retruve animation ids list
\r
2391 src/lib/16_sprit.c: // Loop through animation id untill match or end of list
\r
2392 src/lib/16_sprit.c: // Return on successful match
\r
2393 src/lib/16_sprit.c: // Retruve animation ids list
\r
2394 src/lib/16_sprit.c: // Loop through animation id untill match or end of list
\r
2395 src/lib/16_sprit.c: // Events go here
\r
2396 src/lib/16_sprit.c: // Draw sprite
\r
2397 src/lib/16_sprit.c: // Depending on delay, update indices
\r
2398 src/lib/16_sprit.c: // Delay = 0 means that sprite should loop. Nothing to change here
\r
2399 src/lib/16_sprit.c: // Delay = 1 means that on next time unit sprite should be changed
\r
2400 src/lib/16_sprit.c: // If we hit the end of an animation sequence, restart it
\r
2401 src/lib/16_sprit.c: // Delay > 1 means that we should not change sprite yet. Decrease delay
\r
2402 src/lib/16_sprit.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2403 src/lib/16_sprit.h: // VRS container from which we will extract animation and image data
\r
2404 src/lib/16_sprit.h: // Container for a vrl sprite
\r
2405 src/lib/16_sprit.h: // Current sprite id
\r
2406 src/lib/16_sprit.h: // Index of a current sprite in an animation sequence
\r
2407 src/lib/16_sprit.h: // Current animation sequence
\r
2408 src/lib/16_sprit.h: // Index of current animation in relevant VRS offsets table
\r
2409 src/lib/16_sprit.h: // Delay in time units untill we should change sprite
\r
2410 src/lib/16_sprit.h: // Position of sprite on screen
\r
2411 src/lib/16_tail.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2412 src/lib/16_tail.c: // DOSLIB: check our environment
\r
2413 src/lib/16_tail.c: // DOSLIB: what CPU are we using?
\r
2414 src/lib/16_tail.c: // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.
\r
2415 src/lib/16_tail.c: // So this code by itself shouldn't care too much what CPU it's running on. Except that other
\r
2416 src/lib/16_tail.c: // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for
\r
2417 src/lib/16_tail.c: // the CPU to carry out tasks. --J.C.
\r
2418 src/lib/16_tail.c: // DOSLIB: check for VGA
\r
2419 src/lib/16_tail.c: // hardware must be VGA or higher!
\r
2420 src/lib/16_tail.c: _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log
\r
2421 src/lib/16_tail.c://===========================================================================
\r
2422 src/lib/16_tail.c://===========================================================================
\r
2423 src/lib/16_tail.c: //unsigned finscreen;
\r
2424 src/lib/16_tail.c: //ClearMemory ();
\r
2425 src/lib/16_tail.c: //WriteConfig ();
\r
2426 src/lib/16_tail.c: //CA_CacheGrChunk (ERRORSCREEN);
\r
2427 src/lib/16_tail.c: //screen = grsegs[ERRORSCREEN];
\r
2428 src/lib/16_tail.c: //ShutdownId ();
\r
2429 src/lib/16_tail.c: //modexLeave();
\r
2430 src/lib/16_tail.c: //movedata ((unsigned)screen,7,0xb800,0,7*160);
\r
2431 src/lib/16_tail.c: //gotoxy (10,4);
\r
2432 src/lib/16_tail.c: //gotoxy (1,8);
\r
2433 src/lib/16_tail.c: //clrscr();
\r
2434 src/lib/16_tail.c: //#ifndef JAPAN
\r
2435 src/lib/16_tail.c: //gotoxy(1,24);
\r
2436 src/lib/16_tail.c: //#endif
\r
2437 src/lib/16_tail.c://asm mov bh,0
\r
2438 src/lib/16_tail.c://asm mov dh,23 // row
\r
2439 src/lib/16_tail.c://asm mov dl,0 // collumn
\r
2440 src/lib/16_tail.c://asm mov ah,2
\r
2441 src/lib/16_tail.c://asm int 0x10
\r
2442 src/lib/16_tail.c://===========================================================================
\r
2443 src/lib/16_tail.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2444 src/lib/16text.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2445 src/lib/16text.c: //romFontsData
\r
2446 src/lib/16text.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2447 src/lib/16text.h: word seg; //segment for the font
\r
2448 src/lib/16text.h: word off; //offset in the segment for the font
\r
2449 src/lib/16text.h: byte charSize; //bytes in each character
\r
2450 src/lib/16text.h: byte col; //color
\r
2451 src/lib/16text.h: byte bgcol; //bg color!
\r
2452 src/lib/16text.h: word chw; //char width
\r
2453 src/lib/16_timer.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2454 src/lib/16_timer.c: //gv->kurokku.frames_per_second = 60;
\r
2455 src/lib/16_timer.c: //turn this off if XT
\r
2456 src/lib/16_timer.c:// big global status text buffer
\r
2457 src/lib/16_timer.c: //float t;
\r
2458 src/lib/16_timer.c: //t=(((*(gv->clock))-gv->clock_start) /18.2);
\r
2459 src/lib/16_timer.c: //(gv->clock_start)=*(gv->clock);
\r
2460 src/lib/16_timer.c:// switch(gv->kurokku.fpscap)
\r
2461 src/lib/16_timer.c:// {
\r
2462 src/lib/16_timer.c:// case 0:
\r
2463 src/lib/16_timer.c:// gv->kurokku.frames_per_second=1;
\r
2464 src/lib/16_timer.c:// break;
\r
2465 src/lib/16_timer.c:// case 1:
\r
2466 src/lib/16_timer.c:// //turn this off if XT
\r
2467 src/lib/16_timer.c:// WaitPee();
\r
2468 src/lib/16_timer.c:// gv->kurokku.frames_per_second=60;
\r
2469 src/lib/16_timer.c:// break;
\r
2470 src/lib/16_timer.c:// }
\r
2471 src/lib/16_timer.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2472 src/lib/16_timer.h://double time_in_seconds(time_t in_t);
\r
2473 src/lib/16_vl.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2474 src/lib/16_vl.c://///////////////////////////////////////////////////////////////////////////
\r
2475 src/lib/16_vl.c:// //
\r
2476 src/lib/16_vl.c:// setvideo() - This function Manages the video modes //
\r
2477 src/lib/16_vl.c:// //
\r
2478 src/lib/16_vl.c://///////////////////////////////////////////////////////////////////////////
\r
2479 src/lib/16_vl.c: case 0: // deinit the video
\r
2480 src/lib/16_vl.c: // change to the video mode we were in before we switched to mode 13h
\r
2481 src/lib/16_vl.c: default: // init the video
\r
2482 src/lib/16_vl.c: // get old video mode
\r
2483 src/lib/16_vl.c: //in.h.ah = 0xf;
\r
2484 src/lib/16_vl.c: //int86(0x10, &in, &out);
\r
2485 src/lib/16_vl.c: gv->video.old_mode = vgaGetMode();//out.h.al;
\r
2486 src/lib/16_vl.c: // enter mode
\r
2487 src/lib/16_vl.c: //int10_setmode(mode);
\r
2488 src/lib/16_vl.c://---------------------------------------------------
\r
2489 src/lib/16_vl.c://
\r
2490 src/lib/16_vl.c:// Use the bios to get the current video mode
\r
2491 src/lib/16_vl.c://
\r
2492 src/lib/16_vl.c: //int CRTParmCount;
\r
2493 src/lib/16_vl.c: //outp(CRTC_INDEX, 0x11); /* VSync End reg contains register write prot */
\r
2494 src/lib/16_vl.c: //outp(CRTC_DATA, 0x7f); /* get current write protect on varios regs */
\r
2495 src/lib/16_vl.c: //CRTParmCount = sizeof(ModeX_320x240regs) / sizeof(ModeX_320x240regs[0]);
\r
2496 src/lib/16_vl.c: gv->video.page[0].sw = vga_state.vga_width = 320; // VGA lib currently does not update this
\r
2497 src/lib/16_vl.c: gv->video.page[0].sh = vga_state.vga_height = 240; // VGA lib currently does not update this
\r
2498 src/lib/16_vl.c: // mode X BYTE mode
\r
2499 src/lib/16_vl.c: // 320x240 mode 60Hz
\r
2500 src/lib/16_vl.c:// cm.horizontal_blank_end=0x82 + 1; /* CRTC[3] bit 0-4 & CRTC[5] bit 7 *///skewing ^^;
\r
2501 src/lib/16_vl.c: //cm.horizontal_start_delay_after_total=0x3e; /* CRTC[3] bit 5-6 */
\r
2502 src/lib/16_vl.c: //cm.horizontal_start_delay_after_retrace=0x41; /* CRTC[5] bit 5-6 */
\r
2503 src/lib/16_vl.c: cm.offset = (vga_state.vga_width / (4 * 2)); // 320 wide (40 x 4 pixel groups x 2)
\r
2504 src/lib/16_vl.c: case 2: // TODO: 160x120 according to ModeX_160x120regs
\r
2505 src/lib/16_vl.c: case 3: // TODO: 160x120 according to ModeX_320x200regs
\r
2506 src/lib/16_vl.c: case 4: // TODO: 160x120 according to ModeX_192x144regs
\r
2507 src/lib/16_vl.c: case 5: // TODO: 160x120 according to ModeX_256x192regs
\r
2508 src/lib/16_vl.c: dword far*ptr=(dword far*)vga_state.vga_graphics_ram;//VGA; /* used for faster screen clearing */
\r
2509 src/lib/16_vl.c: for(i = 0;i < 0x4000; i++) ptr[i] = 0x0000; // 0x4000 x dword = 64KB
\r
2510 src/lib/16_vl.c:// gv->video.page[0].tw = gv->video.page[0].sw/TILEWH;
\r
2511 src/lib/16_vl.c:// gv->video.page[0].th = gv->video.page[0].sh/TILEWH;
\r
2512 src/lib/16_vl.c: //TODO MAKE FLEXIBLE~
\r
2513 src/lib/16_vl.c:// gv->video.page[0].tilemidposscreenx = gv->video.page[0].tilesw;
\r
2514 src/lib/16_vl.c:// gv->video.page[0].tilemidposscreeny = (gv->video.page[0].tilesh/2)+1;
\r
2515 src/lib/16_vl.c: //page.data = VGA;
\r
2516 src/lib/16_vl.c: //page.data = (byte far *)(vga_state.vga_graphics_ram);
\r
2517 src/lib/16_vl.c://next page with defined dimentions~
\r
2518 src/lib/16_vl.c: result.stridew=p->sw/4;//result.width/4;
\r
2519 src/lib/16_vl.c: //printf("\n\n 1st vmem_remain=%u\n", video->vmem_remain);
\r
2520 src/lib/16_vl.c: //printf(" [%u], video->page[%u].pagesize=%u\n", i, i, video->page[i].pagesize);
\r
2521 src/lib/16_vl.c: //printf(" [%u], vmem_remain=%u\n", i, video->vmem_remain);
\r
2522 src/lib/16_vl.c: (video->page[0]) = modexDefaultPage(&(video->page[0])); video->num_of_pages++; //video->page[0].width += (TILEWHD); video->page[0].height += (TILEWHD);
\r
2523 src/lib/16_vl.c://0000 (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), (video->page[0]).width, TILEWH*4); video->num_of_pages++;
\r
2524 src/lib/16_vl.c://0000 (video->page[3]) = (video->page[2]); video->num_of_pages++;
\r
2525 src/lib/16_vl.c:// (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), video->page[0].width, 176); video->num_of_pages++;
\r
2526 src/lib/16_vl.c:// (video->page[2]) = modexNextPageFlexibleSize(&(video->page[1]), video->page[0].width, 172); video->num_of_pages++;
\r
2527 src/lib/16_vl.c:// (video->page[3]) = modexNextPageFlexibleSize(&(video->page[2]), 72, 128); video->num_of_pages++;
\r
2528 src/lib/16_vl.c: //while ((inp(INPUT_STATUS_1) & DISPLAY_ENABLE));
\r
2529 src/lib/16_vl.c: //while (!(inp(INPUT_STATUS_1) & VRETRACE));
\r
2530 src/lib/16_vl.c: //printf("modexClearRegion(x=%u, y=%u, w=%u, h=%u, left=%u, right=%u)\n", x, y, w, h, left, right);
\r
2531 src/lib/16_vl.c: word scans = vga_state.vga_stride; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww
\r
2532 src/lib/16_vl.c:// printf("modexCopyPageRegion(src->stridew=%u, dest->stridew=%u, sx=%u, sy=%u, dx=%u, dy=%u, width=%u, height=%u, left=%u, right=%u)\n", src->stridew, dest->stridew, sx, sy, dx, dy, width, height, left, right);
\r
2533 src/lib/16_vl.c: //unsigned int i;
\r
2534 src/lib/16_vl.c: static word a[PAL_SIZE]; //palette array of change values!
\r
2535 src/lib/16_vl.c: //modexWaitBorder();
\r
2536 src/lib/16_vl.c:// printf("q: %02d\n", (q));
\r
2537 src/lib/16_vl.c:// printf("qq: %02d\n", (qq));
\r
2538 src/lib/16_vl.c: //printf(" (*i)-q=%02d\n", (*i)-q);
\r
2539 src/lib/16_vl.c: //if(i%3==0 && (p[i+5]==p[i+4] && p[i+4]==p[i+3] && p[i+3]==p[i+2] && p[i+2]==p[i+1] && p[i+1]==p[i] && p[i+5]==p[i]))
\r
2540 src/lib/16_vl.c://____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else
\r
2541 src/lib/16_vl.c: //printf("qp=%d\n", qp);
\r
2542 src/lib/16_vl.c: //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]);
\r
2543 src/lib/16_vl.c: //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit!
\r
2544 src/lib/16_vl.c: else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]);
\r
2545 src/lib/16_vl.c: //if(qp>0) printf("qp=%d\n", qp);
\r
2546 src/lib/16_vl.c: //if(qp>0) printf(" (*i)=%d\n", (*i)/3);
\r
2547 src/lib/16_vl.c: //modexWaitBorder(); /* waits one retrace -- less flicker */
\r
2548 src/lib/16_vl.c://____ if((qp>0)&&((*i)-q)%3==0 && (p[((*i)-q)]==p[((*i)-q)+3] && p[((*i)-q)+1]==p[((*i)-q)+4] && p[((*i)-q)+2]==p[((*i)-q)+5])) outp(PAL_DATA_REG, p[(*i)-q]); else
\r
2549 src/lib/16_vl.c: //printf("qp=%d\n", qp);
\r
2550 src/lib/16_vl.c: //printf(" (*i)=%d a[%d]=%d\n", (*i), qp, a[qp]);
\r
2551 src/lib/16_vl.c: //outp(PAL_DATA_REG, p[((a[qp])-(bmp->offset*3)+qp)]);// fix this shit!
\r
2552 src/lib/16_vl.c: else{ //outp(PAL_DATA_REG, p[((*i)-(bmp->offset*3)+qp)]);
\r
2553 src/lib/16_vl.c: //printf(" (*i)=%d\n", (*i)/3);
\r
2554 src/lib/16_vl.c: //palette checker~
\r
2555 src/lib/16_vl.c: //printf("1(*i)=%02d\n", (*i)/3);
\r
2556 src/lib/16_vl.c: //printf("1z=%02d\n", z/3);
\r
2557 src/lib/16_vl.c: //printf("2(*i)=%02d\n", (*i)/3);
\r
2558 src/lib/16_vl.c: //printf("2z=%02d\n", z/3);
\r
2559 src/lib/16_vl.c:// printf("a[%02d]=(%d)\n", aq, a[aq]);
\r
2560 src/lib/16_vl.c://update the image data here!
\r
2561 src/lib/16_vl.c: //(offset/bmp->offset)*bmp->offset
\r
2562 src/lib/16_vl.c: //printf("%02d ",bmp->data[lq]+bmp->offset);
\r
2563 src/lib/16_vl.c: //if(lq > 0 && lq%bmp->width==0) printf("\n");
\r
2564 src/lib/16_vl.c: //printf("%02d_", bmp->data[lq]+bmp->offset);
\r
2565 src/lib/16_vl.c: //printf("%02d", bmp->data[lq]);
\r
2566 src/lib/16_vl.c: //printf("\n%02d\n", bmp->offset);
\r
2567 src/lib/16_vl.c: //bmp->data[lq]=((bmp->data[lq]+bmp->offset)-a[aq]);
\r
2568 src/lib/16_vl.c://++++ bmp->data[lq]=a[aq]-aqpp;
\r
2569 src/lib/16_vl.c:// printf("_%d ", bmp->data[lq]);
\r
2570 src/lib/16_vl.c: //if(lq > 0 && lq%bmp->width==0) printf("\n");
\r
2571 src/lib/16_vl.c: bmp->data[lq]=(bmp->data[lq]+bmp->offset)-aqpp;//-((z-(*i))/3);
\r
2572 src/lib/16_vl.c: //printf("_%d ", bmp->data[lq]+bmp->offset)-aqpp-((z-(*i))/3);
\r
2573 src/lib/16_vl.c: //printf("%02d`", bmp->data[lq]);
\r
2574 src/lib/16_vl.c: //if(lq > 0 && lq%bmp->width==0) printf("\n");
\r
2575 src/lib/16_vl.c://printf(" aq=%02d\n", aq);
\r
2576 src/lib/16_vl.c://printf(" aa=%02d\n", aa);
\r
2577 src/lib/16_vl.c: //update the palette~
\r
2578 src/lib/16_vl.c: //modexWaitBorder();
\r
2579 src/lib/16_vl.c: //modexWaitBorder(); /* waits one retrace -- less flicker */
\r
2580 src/lib/16_vl.c: //modexWaitBorder();
\r
2581 src/lib/16_vl.c: //modexWaitBorder(); /* waits one retrace -- less flicker */
\r
2582 src/lib/16_vl.c: //modexWaitBorder();
\r
2583 src/lib/16_vl.c://color checker~
\r
2584 src/lib/16_vl.c://i want to make another vesion that checks the palette when the palette is being appened~
\r
2585 src/lib/16_vl.c: //printf("q: %02d\n", (*q));
\r
2586 src/lib/16_vl.c:// printf("1 offset of color in palette (*q): %d\n", (*q)/3);
\r
2587 src/lib/16_vl.c: //check palette for dups
\r
2588 src/lib/16_vl.c: //printf("\n z: %d\n", (*z));
\r
2589 src/lib/16_vl.c: //printf(" q: %d\n", (*q));
\r
2590 src/lib/16_vl.c: //printf(" z+q: %d\n\n", ((*z)+(*q)));
\r
2591 src/lib/16_vl.c: //if((*z)%3==0)
\r
2592 src/lib/16_vl.c: //{
\r
2593 src/lib/16_vl.c://---- if(pal[(*z)]==pal[(*z)+3] && pal[(*z)+1]==pal[(*z)+4] && pal[(*z)+2]==pal[(*z)+5])
\r
2594 src/lib/16_vl.c:// printf("\n%d [%02d][%02d][%02d]\n", (*z), pal[(*z)], pal[(*z)+1], pal[(*z)+2]);
\r
2595 src/lib/16_vl.c:// printf("%d [%02d][%02d][%02d]\n\n", (*z)+3, pal[(*z)+3], pal[(*z)+4], pal[(*z)+5]);
\r
2596 src/lib/16_vl.c://0000 (*z)-=3;
\r
2597 src/lib/16_vl.c: //printf("zz: %02d\n", zz/3);
\r
2598 src/lib/16_vl.c: if(pal[((*z)+(*q))]==pal[((*z)+(*q))+3] && pal[((*z)+(*q))+1]==pal[((*z)+(*q))+4] && pal[((*z)+(*q))+2]==pal[((*z)+(*q))+5]) //break if duplicate colors found in palette because it have reached the end of the current data of the palette
\r
2599 src/lib/16_vl.c:// (*z)-=3;
\r
2600 src/lib/16_vl.c:// (*i)-=3;
\r
2601 src/lib/16_vl.c:// printf("\nzq1:%d[%02d][%02d][%02d]\n", (zz+q), pal[(zz+q)], pal[(zz+q)+1], pal[(zz+q)+2]);
\r
2602 src/lib/16_vl.c:// printf("zq2:%d[%02d][%02d][%02d]\n\n", (zz+q)+3, pal[(zz+q)+3], pal[(zz+q)+4], pal[(zz+q)+5]);
\r
2603 src/lib/16_vl.c:// printf("\n\nwwwwwwwwwwwwwwww\n");
\r
2604 src/lib/16_vl.c:// printf(" zq: %d [%02d][%02d][%02d] value that is needing to be changed~\n", ((*z)+(*q))/3, pal[((*z)+(*q))], pal[((*z)+(*q))+1], pal[((*z)+(*q))+2]);
\r
2605 src/lib/16_vl.c:// printf(" zz: %d [%02d][%02d][%02d] value that the previous value is going to change to~\n", (zz)/3, pal[zz], pal[zz+1], pal[zz+2]);
\r
2606 src/lib/16_vl.c:// //printf(" zv: %d [%02d][%02d][%02d] wwww\n", (zz-z+q)/3, pal[(zz-z+q)], pal[(zz-z+q)+1], pal[(zz-z+q)+2]);
\r
2607 src/lib/16_vl.c:// printf(" z : %d [%02d][%02d][%02d] offset value~\n", (*z)/3, pal[(*z)], pal[(*z)+1], pal[(*z)+2]);
\r
2608 src/lib/16_vl.c://++++ (*i)--;
\r
2609 src/lib/16_vl.c:// (*z)--;
\r
2610 src/lib/16_vl.c: //expand dong here
\r
2611 src/lib/16_vl.c: //for(zzii=0; zzii<3; zzii++)
\r
2612 src/lib/16_vl.c: //{
\r
2613 src/lib/16_vl.c: //printf("z+q: %d\n\n", ((*z)+(*q)));
\r
2614 src/lib/16_vl.c: //}
\r
2615 src/lib/16_vl.c:// printf("\n aa: %d\n\n", (*aa));
\r
2616 src/lib/16_vl.c:// printf(" a[%02d]=(%02d) offset array i think the palette should be updated again~\n", ((*z)+(*q))/3, a[((*z)+(*q))/3]);
\r
2617 src/lib/16_vl.c:// printf("wwwwwwwwwwwwwwww\n\n");
\r
2618 src/lib/16_vl.c: //printf("[%d]", (zz+q));
\r
2619 src/lib/16_vl.c:// printf("2 offset of color in palette (*q): %d\n", (*q)/3);
\r
2620 src/lib/16_vl.c: //outp(SC_INDEX, 0x02);
\r
2621 src/lib/16_vl.c: //outp(SC_DATA, 0x01 << (x & 3));
\r
2622 src/lib/16_vl.c: m1 = 0x80; // left half
\r
2623 src/lib/16_vl.c: m2 = 0x08; // right half
\r
2624 src/lib/16_vl.c: //word addr = (word) romFontsData.l;
\r
2625 src/lib/16_vl.c: // load the character into romFontsData.l
\r
2626 src/lib/16_vl.c: // no need for inline assembly!
\r
2627 src/lib/16_vl.c: // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C.
\r
2628 src/lib/16_vl.c: //load the letter 'A'
\r
2629 src/lib/16_vl.c: //modexputPixel(page, x+xp+chw, y+i, l[i] & j ? col:bgcol);
\r
2630 src/lib/16_vl.c://///////////////////////////////////////////////////////////////////////////
\r
2631 src/lib/16_vl.c:// //
\r
2632 src/lib/16_vl.c:// cls() - This clears the screen to the specified color, on the VGA or on //
\r
2633 src/lib/16_vl.c:// the Virtual screen. //
\r
2634 src/lib/16_vl.c:// //
\r
2635 src/lib/16_vl.c://///////////////////////////////////////////////////////////////////////////
\r
2636 src/lib/16_vl.c: //modexClearRegion(page, 0, 0, page->width, page->height, color);
\r
2637 src/lib/16_vl.c: //_fmemset(VGA, color, 16000);
\r
2638 src/lib/16_vl.c: // spin
\r
2639 src/lib/16_vl.c: //spin
\r
2640 src/lib/16_vl.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2641 src/lib/16_vl.h://#include "src/lib/planar.h"
\r
2642 src/lib/16_vl.h://#include "src/lib/modex16/16planar.h"
\r
2643 src/lib/16_vl.h:////#include "src/lib/modex16/320x240.h"
\r
2644 src/lib/16_vl.h:// #include "src/lib/modex16/320x200.h"
\r
2645 src/lib/16_vl.h:// #include "src/lib/modex16/256x192.h"
\r
2646 src/lib/16_vl.h:// #include "src/lib/modex16/192x144_.h"
\r
2647 src/lib/16_vl.h:// #include "src/lib/modex16/160x120.h"
\r
2648 src/lib/16_vl.h://320x240 = 20x15
\r
2649 src/lib/16_vl.h://192x144 = 12x9
\r
2650 src/lib/16_vl.h://temp defines
\r
2651 src/lib/16_vl.h://#define INPUT_STATUS_1 0x03da defined in 16_head
\r
2652 src/lib/16_vl.h:#if 0 // not needed anymore. maybe good for reference purposes though.
\r
2653 src/lib/16_vl.h: //outp(SC_INDEX, 0x02);
\r
2654 src/lib/16_vl.h: //outp(SC_DATA, 0x01 << (x & 3));
\r
2655 src/lib/16_vrs.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2656 src/lib/16_vrs.c:// Read .vrs file into far memory
\r
2657 src/lib/16_vrs.c: // Open filename, get size of file,
\r
2658 src/lib/16_vrs.c: // populate the vrs_container if all tests pass
\r
2659 src/lib/16_vrs.c: // Insert sanity cheks later
\r
2660 src/lib/16_vrs.c: // Calculate vrl offsets
\r
2661 src/lib/16_vrs.c: // Count sprites
\r
2662 src/lib/16_vrs.c: // Allocate memory for vrl line offsets table
\r
2663 src/lib/16_vrs.c: // Calculate line offsets for each vrl
\r
2664 src/lib/16_vrs.c: // Calc. vrl size as (next_offset - curr_offset)
\r
2665 src/lib/16_vrs.c: // If it's the last vrl, size is (next_vrs_struct_offset - curr_offset)
\r
2666 src/lib/16_vrs.c:// Seek and return a specified .vrl blob from .vrs blob in far memory
\r
2667 src/lib/16_vrs.c: // If id is invalid, return -1
\r
2668 src/lib/16_vrs.c: // Probably add an error message?
\r
2669 src/lib/16_vrs.c: // Get id list from .vrs blob (base + offset)
\r
2670 src/lib/16_vrs.c: // Loop through the id list until we found the right one or hit the end of the list
\r
2671 src/lib/16_vrs.c: // Counter is keeping track of the offset(in ids/vrl blobs)
\r
2672 src/lib/16_vrs.c: // Return -2 if we couldn't find the requested id
\r
2673 src/lib/16_vrs.c: // Error message?
\r
2674 src/lib/16_vrs.c: // Get vrl offsets list from .vrs blob (base + offset)
\r
2675 src/lib/16_vrs.c: // Get vrl_header from .vrs (base + offset from vrl_list)
\r
2676 src/lib/16_vrs.c: // Counter is number of vrls to skip (ids and vrls are aligned according to the .vrs specification)
\r
2677 src/lib/16_vrs.c: // Get .vrl size by integer arithmetics (next vrl offset - current vrl offset)
\r
2678 src/lib/16_vrs.c: // If we are retriving the last vrl, size is ids_list offset - current vrl offset, as next vrl offs is 0
\r
2679 src/lib/16_vrs.c: // Retrive line offsets form .vrs
\r
2680 src/lib/16_vrs.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2681 src/lib/16_vrs.h://#include <hw/cpu/cpu.h>
\r
2682 src/lib/16_vrs.h://#include <hw/dos/dos.h>
\r
2683 src/lib/16_vrs.h: // Size of a .vrs lob in memory
\r
2684 src/lib/16_vrs.h: // minus header
\r
2685 src/lib/16_vrs.h: // Array of corresponding vrl line offsets
\r
2686 src/lib/16_vrs.h: // Size of a .vrl blob in memory
\r
2687 src/lib/16_vrs.h: // minus header
\r
2688 src/lib/16_vrs.h: // Pointer to a corresponding vrl line offsets struct
\r
2689 src/lib/bakapee.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2690 src/lib/bakapee.c://color
\82Ä
\82·
\82Æ
\r
2691 src/lib/bakapee.c: //if(pee->coor < 256)
\r
2692 src/lib/bakapee.c: //{
\r
2693 src/lib/bakapee.c: //}else pee->coor = 0;
\r
2694 src/lib/bakapee.c://color
\82Ä
\82·
\82Æ
\r
2695 src/lib/bakapee.c://slow spectrum down
\r
2696 src/lib/bakapee.c: //mxPutPixel(sx, sy, coor);
\r
2697 src/lib/bakapee.c: //printf("%d %d %d %d\n", pee->sx, pee->sy, svq, pee->coor);
\r
2698 src/lib/bakapee.c://plot pixel or plot tile
\r
2699 src/lib/bakapee.c: //fill_block(pee->xx, pee->yy, pee->xx+TILEWH, pee->yy+TILEWH, pee->coor);
\r
2700 src/lib/bakapee.c://assigning values from randomizer
\r
2701 src/lib/bakapee.c://randomizer
\r
2702 src/lib/bakapee.c://++++ if(q <= 4 && q!=2 && gq == BONK-1) coor = rand()%HGQ;
\r
2703 src/lib/bakapee.c: dingpp(page, pee); //plot the pixel/tile
\r
2704 src/lib/bakapee.c: dingpp(page, pee); //plot the pixel/tile
\r
2705 src/lib/bakapee.c: dingpp(page, pee); //plot the pixel/tile
\r
2706 src/lib/bakapee.c: case 16: //interesting effects
\r
2707 src/lib/bakapee.c: //printf("%d %d %d %d %d %d\n", pee->xx, pee->yy, tx, ty, TILEWH);
\r
2708 src/lib/bakapee.c: //pee->coor++;
\r
2709 src/lib/bakapee.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2710 src/lib/bakapee.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2711 src/lib/bakapee.h://#include "src/lib/modex/modex.h"
\r
2712 src/lib/bakapee.h://#include "16/x/modex.h"
\r
2713 src/lib/bakapee.h://which lib?
\r
2714 src/lib/bitmap.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2715 src/lib/bitmap.c: //long bufSize;
\r
2716 src/lib/bitmap.c: //int index;
\r
2717 src/lib/bitmap.c: //byte count, val;
\r
2718 src/lib/bitmap.c: //long int pos;
\r
2719 src/lib/bitmap.c: //printf("%zu\n", _memmax());
\r
2720 src/lib/bitmap.c:// result.data = (byte far *)_fmalloc(bufSize);
\r
2721 src/lib/bitmap.c:// result.data = (byte __huge *)halloc(bufSize, sizeof(byte));
\r
2722 src/lib/bitmap.c: //exit(0);
\r
2723 src/lib/bitmap.c: //printf("index=%d\n", index);
\r
2724 src/lib/bitmap.c://TODO: update!!
\r
2725 src/lib/bitmap.c: //ts.data[0] = malloc(sizeof(byte) * ts.ntiles * twidth * theight);
\r
2726 src/lib/bitmap.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2727 src/lib/ems.c: sregs.ds = 0; //????
\r
2728 src/lib/mapread.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2729 src/lib/mapread.c://this function is quite messy ^^; sorry! it is a quick and dirty fix~
\r
2730 src/lib/mapread.c: word j;//, k;
\r
2731 src/lib/mapread.c://0000fprintf(stderr, "t->type=%d\n", t->type);
\r
2732 src/lib/mapread.c:// fprintf(stdout, "[[[[%d|%d]]]]\n", &(t+1)->size, (t+1)->size);
\r
2733 src/lib/mapread.c:// fprintf(stdout, "\n%.*s[xx[%d|%d]xx]\n", (t+1)->end - (t+1)->start, js+(t+1)->start, &(t+1)->size, (t+1)->size);
\r
2734 src/lib/mapread.c: //fix this to be far~
\r
2735 src/lib/mapread.c://0000 bp = bitmapLoadPcx("data/ed.pcx");
\r
2736 src/lib/mapread.c:// bp = bitmapLoadPcx("data/koishi^^.pcx");
\r
2737 src/lib/mapread.c://---- map->tiles->data = planar_buf_from_bitmap(&bp);
\r
2738 src/lib/mapread.c: //map->tiles->data->data = malloc((16/**2*/)*16);
\r
2739 src/lib/mapread.c: //map->tiles->data->width = (16/**2*/);
\r
2740 src/lib/mapread.c: //map->tiles->data->height= 16;
\r
2741 src/lib/mapread.c: strcpy(js_sv, "data");//strdup(js+t->start);//, t->end - t->start);
\r
2742 src/lib/mapread.c: strcpy(js_sv, "height");//strdup(js+t->start);//, t->end - t->start);
\r
2743 src/lib/mapread.c: strcpy(js_sv, "width");//strdup(js+t->start);//, t->end - t->start);
\r
2744 src/lib/mapread.c: //fprintf(stdout, "\n");
\r
2745 src/lib/mapread.c: //for (k = 0; k < indent; k++) fprintf(stdout, "\t");
\r
2746 src/lib/mapread.c: //fprintf(stdout, ": ");
\r
2747 src/lib/mapread.c: //fprintf(stdout, "\n");
\r
2748 src/lib/mapread.c: //fprintf(stdout, "==\n");
\r
2749 src/lib/mapread.c: //for (k = 0; k < indent-1; k++) fprintf(stdout, "\t");
\r
2750 src/lib/mapread.c: //fprintf(stdout, "\t-");
\r
2751 src/lib/mapread.c: //fprintf(stdout, "==\n");
\r
2752 src/lib/mapread.c://0000fprintf(stderr, "tok malloc\n");
\r
2753 src/lib/mapread.c://0000fprintf(stderr, "read\n");
\r
2754 src/lib/mapread.c://0000fprintf(stdout, "r= [%d] BUFSIZ=%d\n", r, BUFSIZ);
\r
2755 src/lib/mapread.c://0000fprintf(stderr, "js alloc~\n");
\r
2756 src/lib/mapread.c://0000fprintf(stdout, " parse~ tok=%zu jslen=%zu r=%d _memavl()=%u BUFSIZ=%d~\n", tokcount, jslen, r, _memavl(), BUFSIZ);
\r
2757 src/lib/mapread.c://0000fprintf(stdout, "p=[%u] [%u] [%d]\n", p.pos, p.toknext, p.toksuper);
\r
2758 src/lib/mapread.c://0000fprintf(stdout, "r= [%d]\n", r);
\r
2759 src/lib/mapread.c://0000fprintf(stderr, "tok realloc~ %zu\n", tokcount);
\r
2760 src/lib/mapread.c: //printf("js=%Fp\n", (js));
\r
2761 src/lib/mapread.c: //printf("*js=%Fp\n", (*(js)));
\r
2762 src/lib/mapread.c: //printf("&*js=%s\n", &(*(js)));
\r
2763 src/lib/mapread.c: //printf("&buf=[%Fp]\n", &buf);
\r
2764 src/lib/mapread.c: //printf("&buf_seg=[%x]\n", FP_SEG(&buf));
\r
2765 src/lib/mapread.c: //printf("&buf_off=[%x]\n", FP_OFF(&buf));
\r
2766 src/lib/mapread.c: //printf("&buf_fp=[%Fp]\n", MK_FP(FP_SEG(&buf), FP_OFF(&buf)));
\r
2767 src/lib/mapread.c: //printf("buf=[\n%s\n]\n", buf);
\r
2768 src/lib/mapread.c: //printf("buff=[%Fp]\n", buff);
\r
2769 src/lib/mapread.c: //printf("(*buff)=[%Fp]\n", (*buff));
\r
2770 src/lib/mapread.c: //printf("&(*buff)=[\n%s\n]\n", &(*buff));
\r
2771 src/lib/mapread.c: //free(js);
\r
2772 src/lib/mapread.c: //free(tok);
\r
2773 src/lib/mapread.c: //fclose(fh);
\r
2774 src/lib/mapread.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2775 src/lib/mapread.h://#define DEBUG_MAPDATA
\r
2776 src/lib/mapread.h://#define DEBUG_MAPVAR
\r
2777 src/lib/mapread.h://#define DEBUG_DUMPVARS
\r
2778 src/lib/mapread.h://#define DEBUG_JS
\r
2779 src/lib/mapread.h: boolean debug_text; //show the value of the tile! wwww
\r
2780 src/lib/mapread.h: int width; //this has to be signed!
\r
2781 src/lib/mapread.h: int height; //this has to be signed!
\r
2782 src/lib/midi.c://====
\r
2783 src/lib/midi.c://====
\r
2784 src/lib/midi.c://====
\r
2785 src/lib/midi.c://====
\r
2786 src/lib/midi.c://====
\r
2787 src/lib/midi.c://====
\r
2788 src/lib/midi.c://void adlib_shut_up();
\r
2789 src/lib/midi.c:// midi_tick();
\r
2790 src/lib/midi.h://#include "src/lib/doslib/vga.h"
\r
2791 src/lib/midi.h://#include "src/lib/doslib/vgagui.h"
\r
2792 src/lib/midi.h://#include "src/lib/doslib/vgatty.h"
\r
2793 src/lib/scroll16.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2794 src/lib/scroll16.c: //printf("player[%d].d=%d\n", pn, player[pn].d);
\r
2795 src/lib/scroll16.c: //no direction
\r
2796 src/lib/scroll16.c: //0000pip[0].video->startclk = (*clockw);
\r
2797 src/lib/scroll16.c: //right movement
\r
2798 src/lib/scroll16.c: //printf("pip[0].page->tilesw=%d ", pip[0].page->tilesw); printf("pip[0].page->tw=%d\n", pip[0].page->tw);
\r
2799 src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx+1 == TRIGGX && player[pn].ty == TRIGGY)) //collision detection!
\r
2800 src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;
\r
2801 src/lib/scroll16.c: else if(player[pn].tx < pip[0].map->width && !(pip[0].map->data[(player[pn].tx)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx+1 == TRIGGX && player[pn].ty == TRIGGY))
\r
2802 src/lib/scroll16.c: //left movement
\r
2803 src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx-2)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx-1 == TRIGGX && player[pn].ty == TRIGGY)) //collision detection!
\r
2804 src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;
\r
2805 src/lib/scroll16.c: else if(player[pn].tx > 1 && !(pip[0].map->data[(player[pn].tx-2)+(pip[0].map->width*(player[pn].ty-1))] == 0))//!(player[pn].tx-1 == TRIGGX && player[pn].ty == TRIGGY))
\r
2806 src/lib/scroll16.c: //down movement
\r
2807 src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty+1 == TRIGGY)) //collision detection!
\r
2808 src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;
\r
2809 src/lib/scroll16.c: else if(player[pn].ty < pip[0].map->height && !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty+1 == TRIGGY))
\r
2810 src/lib/scroll16.c: //up movement
\r
2811 src/lib/scroll16.c: !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty-2))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty-1 == TRIGGY)) //collision detection!
\r
2812 src/lib/scroll16.c: //0000pip[0].video->clk = ((*clockw)-pip[0].video->startclk)/18.2;
\r
2813 src/lib/scroll16.c: else if(player[pn].ty > 1 && !(pip[0].map->data[(player[pn].tx-1)+(pip[0].map->width*(player[pn].ty-2))] == 0))//!(player[pn].tx == TRIGGX && player[pn].ty-1 == TRIGGY))
\r
2814 src/lib/scroll16.c://panning page
\r
2815 src/lib/scroll16.c: //right movement
\r
2816 src/lib/scroll16.c: //left movement
\r
2817 src/lib/scroll16.c: //down movement
\r
2818 src/lib/scroll16.c: //up movement
\r
2819 src/lib/scroll16.c: //if (player[pn].d!=2) printf("player[%u].d=%u player[%u].q=%u\n", pn, player[pn].d, pn, player[pn].q);
\r
2820 src/lib/scroll16.c: //result.data = (byte *)alloc_emem(((int)sizeof(byte) * w * h)/1024);
\r
2821 src/lib/scroll16.c: //emmhandle = mallocEMS(coretotalEMS());//alloc_emem((int)sizeof(map))
\r
2822 src/lib/scroll16.c: // just a place holder to fill out an alternating pattern
\r
2823 src/lib/scroll16.c:// int tile = 1;
\r
2824 src/lib/scroll16.c: //if(!isEMS() || !checkEMS())
\r
2825 src/lib/scroll16.c:// map->tiles = malloc(sizeof(tiles_t));
\r
2826 src/lib/scroll16.c: //else
\r
2827 src/lib/scroll16.c: // map->tiles = (tiles_t *)alloc_emem(sizeof(tiles_t));
\r
2828 src/lib/scroll16.c: //create the tile set
\r
2829 src/lib/scroll16.c: //if(!isEMS() || !checkEMS())
\r
2830 src/lib/scroll16.c:// map->tiles->data = malloc(sizeof(bitmap_t));
\r
2831 src/lib/scroll16.c: //else
\r
2832 src/lib/scroll16.c: // map->tiles->data = (bitmap_t *)alloc_emem(sizeof(bitmap_t));
\r
2833 src/lib/scroll16.c:// map->tiles->data->width = (TILEWH);
\r
2834 src/lib/scroll16.c:// map->tiles->data->height= TILEWH;
\r
2835 src/lib/scroll16.c: //if(!isEMS() || !checkEMS())
\r
2836 src/lib/scroll16.c:// map->tiles->data->data = malloc((TILEWH*2)*TILEWH);
\r
2837 src/lib/scroll16.c: //else
\r
2838 src/lib/scroll16.c: // map->tiles->data->data = (byte *)alloc_emem((TILEWH*2)*TILEWH);
\r
2839 src/lib/scroll16.c:// map->tiles->tileHeight = TILEWH;
\r
2840 src/lib/scroll16.c:// map->tiles->tileWidth =TILEWH;
\r
2841 src/lib/scroll16.c:// map->tiles->rows = 1;
\r
2842 src/lib/scroll16.c:// map->tiles->cols = 1;//2;
\r
2843 src/lib/scroll16.c: //for(y=0; y<map->height; y++) {
\r
2844 src/lib/scroll16.c: //for(x=0; x<map->width; x++) {
\r
2845 src/lib/scroll16.c: //if(x<TILEWH){
\r
2846 src/lib/scroll16.c: map->tiles->data->data[i+1] = map->data[q];//28;//0x24;
\r
2847 src/lib/scroll16.c:// printf("[%d]", map->tiles->data->data[i]);
\r
2848 src/lib/scroll16.c: //}else{
\r
2849 src/lib/scroll16.c: //map->tiles->data->data[i] = map->data[q];//0;//0x34;
\r
2850 src/lib/scroll16.c: //printf("]%d[==[%d]", i, map->tiles->data->data[i]);
\r
2851 src/lib/scroll16.c: //}
\r
2852 src/lib/scroll16.c:// printf("\n");
\r
2853 src/lib/scroll16.c:// printf("[%d]", map->data[q]);
\r
2854 src/lib/scroll16.c:// }
\r
2855 src/lib/scroll16.c: //printf("\n\n");
\r
2856 src/lib/scroll16.c:// }
\r
2857 src/lib/scroll16.c:// map->data[i]=255;
\r
2858 src/lib/scroll16.c: //tile = tile ? 0 : 1;
\r
2859 src/lib/scroll16.c: //tile = tile ? 0 : 1;
\r
2860 src/lib/scroll16.c: word x;//, y; /* coordinate for drawing */
\r
2861 src/lib/scroll16.c: word x;//,y; /* coordinate for drawing */
\r
2862 src/lib/scroll16.c: word y;//x, /* coordinate for drawing */
\r
2863 src/lib/scroll16.c: word y;//x, /* coordinate for drawing */
\r
2864 src/lib/scroll16.c://TODO finish this wwww
\r
2865 src/lib/scroll16.c:// vga_setup_wm1_block_copy();
\r
2866 src/lib/scroll16.c:// _fmemmove(mv[id].page->data+4, mv[id].page->data, mv[id].page->pagesize);
\r
2867 src/lib/scroll16.c:// vga_restore_rm0wm0();
\r
2868 src/lib/scroll16.c:// vga_setup_wm1_block_copy();
\r
2869 src/lib/scroll16.c:// _fmemmove(mv[id].page->data-4, mv[id].page->data, mv[id].page->pagesize);
\r
2870 src/lib/scroll16.c:// vga_restore_rm0wm0();
\r
2871 src/lib/scroll16.c:// vga_setup_wm1_block_copy();
\r
2872 src/lib/scroll16.c:// _fmemmove(mv[id].page->data-mv[id].page->pi, mv[id].page->data, mv[id].page->pagesize);
\r
2873 src/lib/scroll16.c:// vga_restore_rm0wm0();
\r
2874 src/lib/scroll16.c:// vga_setup_wm1_block_copy();
\r
2875 src/lib/scroll16.c:// _fmemmove(mv[id].page->data+mv[id].page->pi, mv[id].page->data, mv[id].page->pagesize);
\r
2876 src/lib/scroll16.c:// vga_restore_rm0wm0();
\r
2877 src/lib/scroll16.c:// bitmap_t bp;
\r
2878 src/lib/scroll16.c: //check for failed to load map
\r
2879 src/lib/scroll16.c: //initiate a null map!
\r
2880 src/lib/scroll16.c: map->width=MAPW;///2;
\r
2881 src/lib/scroll16.c: map->height=MAPH;///2;
\r
2882 src/lib/scroll16.c:// map->data = malloc(((map->width*map->height)+1)*sizeof(byte));
\r
2883 src/lib/scroll16.c: //fix this to be far~
\r
2884 src/lib/scroll16.c:// bp = bitmapLoadPcx("data/ed.pcx");
\r
2885 src/lib/scroll16.c:// map->tiles->data = &bp;
\r
2886 src/lib/scroll16.c://TODO: player position here
\r
2887 src/lib/scroll16.c: int py;//px,
\r
2888 src/lib/scroll16.c:// {
\r
2889 src/lib/scroll16.c:// unsigned int k,j,o;
\r
2890 src/lib/scroll16.c:// /* fill screen with a distinctive pattern */
\r
2891 src/lib/scroll16.c:// for (k=0;k < vga_state.vga_width;k++) {
\r
2892 src/lib/scroll16.c:// o = k >> 2;
\r
2893 src/lib/scroll16.c:// vga_write_sequencer(0x02/*map mask*/,1 << (k&3));
\r
2894 src/lib/scroll16.c:// for (j=0;j < (mv[0].page->height)+(mv[1].page->height)+(mv[2].page->height)+(mv[3].page->height);j++,o += vga_state.vga_stride)
\r
2895 src/lib/scroll16.c:// vga_state.vga_graphics_ram[o] = (k^j)&15; // VRL samples put all colors in first 15!
\r
2896 src/lib/scroll16.c:// }
\r
2897 src/lib/scroll16.c:// }
\r
2898 src/lib/scroll16.c: //word textx=0, texty=0;
\r
2899 src/lib/scroll16.c: //if(i==0) i=2;
\r
2900 src/lib/scroll16.c: //wwww
\r
2901 src/lib/scroll16.c: modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 0); //currently the over scan color!
\r
2902 src/lib/scroll16.c:////0000printf("i=%d\n", i);
\r
2903 src/lib/scroll16.c: //modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i]));
\r
2904 src/lib/scroll16.c: //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
\r
2905 src/lib/scroll16.c: //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));
\r
2906 src/lib/scroll16.c: //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data));
\r
2907 src/lib/scroll16.c:// modexprint(page, x+(textx*8), y+(texty*8), 1, (word)(t->debug_data), 0, (t->debug_data));
\r
2908 src/lib/scroll16.c://printf("y: %d\n", poopoffset);
\r
2909 src/lib/scroll16.c://printf("x: %d\n", poopoffset);
\r
2910 src/lib/scroll16.c: //setkb(0);
\r
2911 src/lib/scroll16.c: word x = (0) + gv->video.page[/*!*/(gv->video.p)].dx; // follow the screen
\r
2912 src/lib/scroll16.c: word y = (0) + gv->video.page[/*!*/(gv->video.p)].dy; // follow the screen
\r
2913 src/lib/scroll16.c: word col = 7, bgcol = 0, type = 1;//w = 64, h = 8,
\r
2914 src/lib/scroll16.c: //byte o,o2,i;
\r
2915 src/lib/scroll16.c: //modexCopyPageRegion(pip[1].page, pip[2].page, 16, 16, 16, 16, (14*8)+4, 8+4);
\r
2916 src/lib/scroll16.c:// vga_setup_wm1_block_copy();
\r
2917 src/lib/scroll16.c:// modexCopyPageRegion(&(gv->video.page[shinku_fps_indicator_page]), &(gv->video.page[!shinku_fps_indicator_page]), x, y, x+w, 0, w, h);
\r
2918 src/lib/scroll16.c:// o = *(gv->video.page[2].data); // source offscreen
\r
2919 src/lib/scroll16.c:// o2 = *(gv->video.page[shinku_fps_indicator_page].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride)
\r
2920 src/lib/scroll16.c:// for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += vga_state.vga_stride) vga_wm1_mem_block_copy(o2,o,w >> 2);
\r
2921 src/lib/scroll16.c:// vga_restore_rm0wm0();
\r
2922 src/lib/scroll16.c: // NTS: For some bizarre reason, gv->pee is not initialized, but the pointer is not NULL even
\r
2923 src/lib/scroll16.c: // though it should be. Instead it's NULL as a near pointer but contains a non-null
\r
2924 src/lib/scroll16.c: // segment value, so testing against NULL doesn't work. It is initialized properly if
\r
2925 src/lib/scroll16.c: // you call start_timer() though which uses near malloc. Rather than fight with that,
\r
2926 src/lib/scroll16.c: // I decided it would be better to declare a temp buffer statically and sprintf to that.
\r
2927 src/lib/scroll16.c: //
\r
2928 src/lib/scroll16.c: // This fixes *** Null pointer assignment detected error message in ZCROLL.EXE on exit.
\r
2929 src/lib/scroll16.c: //modexClearRegion(&(gv->video.page[shinku_fps_indicator_page]), x, y, w, h, 45);
\r
2930 src/lib/scroll16.c:// vga_setup_wm1_block_copy();
\r
2931 src/lib/scroll16.c:// o = *(gv->video.page[shinku_fps_indicator_page].data); // source offscreen
\r
2932 src/lib/scroll16.c:// o2 = *(gv->video.page[2].data)+(y * vga_state.vga_stride) + (x >> 2); // dest visible (original stride)
\r
2933 src/lib/scroll16.c:// for (i=0;i < h;i++,o += vga_state.vga_draw_stride,o2 += vga_state.vga_stride) vga_wm1_mem_block_copy(o2,o,w >> 2);
\r
2934 src/lib/scroll16.c:// modexCopyPageRegion(&(gv->video.page[shinku_fps_indicator_page]), &(gv->video.page[!shinku_fps_indicator_page]), x, y, x, 0, w, h);
\r
2935 src/lib/scroll16.c:// vga_restore_rm0wm0();
\r
2936 src/lib/scroll16.c: }else //copy dat sheet
\r
2937 src/lib/scroll16.c: //modexprint(&(gv->video.page[shinku_fps_indicator_page]), x, y+8, type, col, bgcol, "sanic!");
\r
2938 src/lib/scroll16.c: //turn this off if XT
\r
2939 src/lib/scroll16.c: //modexWaitBorder();
\r
2940 src/lib/scroll16.c: //vga_setup_wm1_block_copy();
\r
2941 src/lib/scroll16.c: //_fmemcpy((gv->video.page[(gv->video.p)]).data, (gv->video.page[(!gv->video.p)]).data, gv->video.page[(!gv->video.p)].pagesize);
\r
2942 src/lib/scroll16.c: //vga_restore_rm0wm0();
\r
2943 src/lib/scroll16.c: //0000gv->video.tickclk = ((*clockw)-gv->video.startclk)/18.2;
\r
2944 src/lib/scroll16.c: sword bx = x+16; //buffer's x
\r
2945 src/lib/scroll16.c: sword by = y+16; //buffer's y
\r
2946 src/lib/scroll16.c: word dire=32; //direction
\r
2947 src/lib/scroll16.c: sword qq; //scroll offset
\r
2948 src/lib/scroll16.c: //x-=4;
\r
2949 src/lib/scroll16.c: //up
\r
2950 src/lib/scroll16.c: // right
\r
2951 src/lib/scroll16.c: //down
\r
2952 src/lib/scroll16.c: //left
\r
2953 src/lib/scroll16.c: //copy old bg to page0
\r
2954 src/lib/scroll16.c: //modexCopyPageRegion(pip[3].page, pip[0].page, bx, by, 0, 0, 20, 36);
\r
2955 src/lib/scroll16.c: //update buffer
\r
2956 src/lib/scroll16.c: //modexCopyPageRegion(pip[0].page, pip[3].page, 0, 0, x, y, 20, 36);
\r
2957 src/lib/scroll16.c://modexCopyPageRegion(page_t *dest, page_t *src, word sx, word sy, word dx, word dy, word width, word height);
\r
2958 src/lib/scroll16.c: //modexCopyPageRegion(pip[3].page, pip[!(pip->video->p)].page, x-4, y-4, 0, 128, 28, 36);
\r
2959 src/lib/scroll16.c:// else modexCopyPageRegion(pip[1].page, pip[0].page, x-4, y-4, x-4, y-4, 28, 40);
\r
2960 src/lib/scroll16.c:// if(2>ls && ls>=1) { FRAME1 }else
\r
2961 src/lib/scroll16.c:// if(3>ls && ls>=2) { FRAME2 }else
\r
2962 src/lib/scroll16.c:// if(4>ls && ls>=3) { FRAME3 }else
\r
2963 src/lib/scroll16.c:// if(5>ls && ls>=4) { FRAME4 }
\r
2964 src/lib/scroll16.c: //modexCopyPageRegion(pip[0].page, pip[3].page, 0, 0, x, y, 24, 32);
\r
2965 src/lib/scroll16.c: //printf("x=%d y=%d bx=%d by=%d\n", x, y, bx, by);
\r
2966 src/lib/scroll16.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2967 src/lib/scroll16.h:#include "src/lib/mapread.h" //map is loaded here www
\r
2968 src/lib/scroll16.h://#include "src/lib/16_map.h" //new map stuff
\r
2969 src/lib/scroll16.h://#define TILERENDER
\r
2970 src/lib/scroll16.h://modexDrawSpritePBufRegion
\r
2971 src/lib/scroll16.h://modexDrawBmpPBufRegion
\r
2972 src/lib/scroll16.h: int tx; //appears to be the top left tile position on the viewable screen map
\r
2973 src/lib/scroll16.h: int ty; //appears to be the top left tile position on the viewable screen map
\r
2974 src/lib/scroll16.h: word dxThresh; //????
\r
2975 src/lib/scroll16.h: word dyThresh; //????
\r
2976 src/lib/scroll16.h: video_t *video; //pointer to game variables of the video
\r
2977 src/lib/scroll16.h: pan_t *pan; //pointer the the page panning debug system
\r
2978 src/lib/scroll16.h://for null map!
\r
2979 src/lib/scroll16.h://map_t allocMap(int w, int h);
\r
2980 src/lib/scroll16.h://void initMap(map_t *map);
\r
2981 src/lib/scroll16.h://void qclean();
\r
2982 src/lib/typdefst.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
2983 src/lib/typdefst.h: int dx, dy; //backwards compait
\r
2984 src/lib/typdefst.h: word delta; // How much should we shift the page for smooth scrolling
\r
2985 src/lib/typdefst.h: enum direction d; // Direction we should shift the page
\r
2986 src/lib/typdefst.h: //sprite ....
\r
2987 src/lib/typdefst.h: //vrs with sprite ....
\r
2988 src/lib/typdefst.h: dword tiku; //frames passed
\r
2989 src/lib/typdefst.h: word clock_start; //timer start
\r
2990 src/lib/typdefst.h: word *clock; //current time on clock
\r
2991 src/lib/typdefst.h: boolean fpscap; //cap the fps var
\r
2992 src/lib/typdefst.h://video
\r
2993 src/lib/typdefst.h:#define NUMCHUNKS 416 //keen
\r
2994 src/lib/typdefst.h: char old_mode; //old video mode before game!
\r
2995 src/lib/typdefst.h: page_t page[MAXPAGE]; //pointer to root page[0]
\r
2996 src/lib/typdefst.h: word vmem_remain; //remaining video memory
\r
2997 src/lib/typdefst.h: byte num_of_pages; //number of actual pages
\r
2998 src/lib/typdefst.h: boolean __near p; //render page number
\r
2999 src/lib/typdefst.h: boolean __near r; //page flip if true
\r
3000 src/lib/typdefst.h: word pr[MAXPAGE][4]; //render sections of pages
\r
3001 src/lib/typdefst.h: //0000word startclk; float clk, tickclk; //timer
\r
3002 src/lib/typdefst.h://from 16_mm
\r
3003 src/lib/typdefst.h://==========================================================================
\r
3004 src/lib/typdefst.h: //word start; dword length;
\r
3005 src/lib/typdefst.h: word blob; //for data larger than 64k
\r
3006 src/lib/typdefst.h: memptr *useptr; // pointer to the segment start
\r
3007 src/lib/typdefst.h: //huge struct mmblockstruct huge *next;
\r
3008 src/lib/typdefst.h:// boolean PMStarted, MainPresent, EMSPresent, XMSPresent;
\r
3009 src/lib/typdefst.h: //huge void huge *farheap;
\r
3010 src/lib/typdefst.h: //dword numUMBs,UMBbase[MAXUMBS];
\r
3011 src/lib/typdefst.h: //huge mmblocktype huge mmblocks[MAXBLOCKS],huge *mmhead,huge *mmfree,huge *mmrover,huge *mmnew;
\r
3012 src/lib/typdefst.h://==========================================================================
\r
3013 src/lib/typdefst.h://from 16_pm
\r
3014 src/lib/typdefst.h://==========================================================================
\r
3015 src/lib/typdefst.h:// NOTE! PMPageSize must be an even divisor of EMSPageSize, and >= 1024
\r
3016 src/lib/typdefst.h:#define PMMinMainMem 10 // Min acceptable # of pages from main
\r
3017 src/lib/typdefst.h:#define PMMaxMainMem 100 // Max number of pages in main memory
\r
3018 src/lib/typdefst.h:#define PMThrashThreshold 1 // Number of page thrashes before panic mode
\r
3019 src/lib/typdefst.h:#define PMUnThrashThreshold 5 // Number of non-thrashing frames before leaving panic mode
\r
3020 src/lib/typdefst.h: dword offset; // Offset of chunk into file
\r
3021 src/lib/typdefst.h: word length; // Length of the chunk
\r
3022 src/lib/typdefst.h: int xmsPage; // If in XMS, (xmsPage * PMPageSize) gives offset into XMS handle
\r
3023 src/lib/typdefst.h: PMLockType locked; // If set, this page can't be purged
\r
3024 src/lib/typdefst.h: int emsPage; // If in EMS, logical page/offset into page
\r
3025 src/lib/typdefst.h: int mainPage; // If in Main, index into handle array
\r
3026 src/lib/typdefst.h: dword lastHit; // Last frame number of hit
\r
3027 src/lib/typdefst.h: int baseEMSPage; // Base EMS page for this phys frame
\r
3028 src/lib/typdefst.h: dword lastHit; // Last frame number of hit
\r
3029 src/lib/typdefst.h:// Main Mem specific variables
\r
3030 src/lib/typdefst.h:// EMS specific variables
\r
3031 src/lib/typdefst.h:// XMS specific variables
\r
3032 src/lib/typdefst.h: word XMSAvail,XMSPagesAvail,XMSHandle;//,XMSVer;
\r
3033 src/lib/typdefst.h: int XMSProtectPage;// = -1;
\r
3034 src/lib/typdefst.h:// File specific variables
\r
3035 src/lib/typdefst.h: char PageFileName[13];// = {"VSWAP."};
\r
3036 src/lib/typdefst.h: int PageFile;// = -1;
\r
3037 src/lib/typdefst.h:// General usage variables
\r
3038 src/lib/typdefst.h://==========================================================================
\r
3039 src/lib/typdefst.h://from 16_ca
\r
3040 src/lib/typdefst.h://==========================================================================
\r
3041 src/lib/typdefst.h:#define NUMMAPS 4//39
\r
3042 src/lib/typdefst.h: word bit0,bit1; // 0-255 is a character, > is a pointer to a node
\r
3043 src/lib/typdefst.h: int maphandle[4]; // handle to MAPTEMP / GAMEMAPS
\r
3044 src/lib/typdefst.h: ca_handle_t file; //files to open
\r
3045 src/lib/typdefst.h://==========================================================================
\r
3046 src/lib/typdefst.h://actual global game varables!
\r
3047 src/lib/typdefst.h: video_t video; // video settings variable
\r
3048 src/lib/typdefst.h: ca_t ca; // ca stuff
\r
3049 src/lib/typdefst.h: pm_t pm; // pm stuff
\r
3050 src/lib/typdefst.h: loghandle_t handle; //handles for file logging
\r
3051 src/lib/typdefst.h: kurokku_t kurokku; //clock struct
\r
3052 src/lib/types.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
3053 src/lib/types.h://typedef unsigned short _seg; // it will contains segment value (as Borland _seg)
\r
3054 src/lib/types.h://typedef void _seg * memptr;
\r
3055 src/lib/types.h:typedef void _seg * memptr;//typedef void __based( void ) * memptr; ////old //----typedef void __based(__self) * memptr;
\r
3056 src/lib/xms.c: * Documentation on the XMS API was found on http://www.qzx.com/pc-gpe/xms30.txt
\r
3057 src/lib/xms.c: //fprintf(stream, "XMS Version number: %d\n", XMSVersionNumber);
\r
3058 src/lib/xms.c: //fprintf(stream, "Largest available block: %d kB (%d kB total)\n", XMSLargestBlock, XMSTotal);
\r
3059 src/lib/zcroll16.c: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
3060 src/lib/zcroll16.c: // Assume everything crosses at most 1 tile at once
\r
3061 src/lib/zcroll16.c: return dx && 1;//crossable_tile(x + dx, map_v) || dy && crossable_tile(y + dy, map_v);
\r
3062 src/lib/zcroll16.c: // Allow movement
\r
3063 src/lib/zcroll16.c: // Set speed
\r
3064 src/lib/zcroll16.c: // Start animation
\r
3065 src/lib/zcroll16.c: // Mark next tile as occupied
\r
3066 src/lib/zcroll16.c: // Mark this tile as vacant
\r
3067 src/lib/zcroll16.c: // (Un)load stuff?
\r
3068 src/lib/zcroll16.c:// bitmap_t bp;
\r
3069 src/lib/zcroll16.c: //check for failed to load map
\r
3070 src/lib/zcroll16.c: //initiate a null map!
\r
3071 src/lib/zcroll16.c: map->width=MAPW;///2;
\r
3072 src/lib/zcroll16.c: map->height=MAPH;///2;
\r
3073 src/lib/zcroll16.c:// map->data = malloc(((map->width*map->height)+1)*sizeof(byte));
\r
3074 src/lib/zcroll16.c: //fix this to be far~
\r
3075 src/lib/zcroll16.c:// bp = bitmapLoadPcx("data/ed.pcx");
\r
3076 src/lib/zcroll16.c:// map->tiles->data = &bp;
\r
3077 src/lib/zcroll16.c://TODO: player position here
\r
3078 src/lib/zcroll16.c: //if(i==0) i=2;
\r
3079 src/lib/zcroll16.c: //wwww
\r
3080 src/lib/zcroll16.c: modexClearRegion(page, x, y, t->tileWidth, t->tileHeight, 0); //currently the over scan color!
\r
3081 src/lib/zcroll16.c:////0000printf("i=%d\n", i);
\r
3082 src/lib/zcroll16.c: //modexprint(page, x, y, 1, 15, 0, (char const *)(t->debug_data[i]));
\r
3083 src/lib/zcroll16.c: //draw_vrl1_vgax_modex(x-rx,y-ry,vrl_header,vrl_lineoffs,buffer+sizeof(*vrl_header),bufsz-sizeof(*vrl_header));
\r
3084 src/lib/zcroll16.c: //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data));
\r
3085 src/lib/zcroll16.c: //modexprintbig(page, x, y, 1, 15, 0, (t->debug_data));
\r
3086 src/lib/zcroll16.c:// modexprint(page, x+(textx*8), y+(texty*8), 1, (word)(t->debug_data), 0, (t->debug_data));
\r
3087 src/lib/zcroll16.c: word x = (0) + gv->video.page[/*!*/(gv->video.p)].dx; // follow the screen
\r
3088 src/lib/zcroll16.c: word y = (0) + gv->video.page[/*!*/(gv->video.p)].dy; // follow the screen
\r
3089 src/lib/zcroll16.c: //modexClearRegion(&(gv->video.page[shinku_fps_indicator_page]), x, y, w, h, 45);
\r
3090 src/lib/zcroll16.c: }else //copy dat sheet
\r
3091 src/lib/zcroll16.c: //turn this off if XT
\r
3092 src/lib/zcroll16.c: sword bx = x+16; //buffer's x
\r
3093 src/lib/zcroll16.c: sword by = y+16; //buffer's y
\r
3094 src/lib/zcroll16.c: word dire=32; //direction
\r
3095 src/lib/zcroll16.c: sword qq; //scroll offset
\r
3096 src/lib/zcroll16.c: //x-=4;
\r
3097 src/lib/zcroll16.c: //y-=pip->map->tiles->tileHeight;
\r
3098 src/lib/zcroll16.c: //up
\r
3099 src/lib/zcroll16.c: // right
\r
3100 src/lib/zcroll16.c: //down
\r
3101 src/lib/zcroll16.c: //left
\r
3102 src/lib/zcroll16.c: //copy old bg to page0
\r
3103 src/lib/zcroll16.c: //modexCopyPageRegion(pip[3].page, pip[0].page, bx, by, 0, 0, 20, 36);
\r
3104 src/lib/zcroll16.c: //update buffer
\r
3105 src/lib/zcroll16.c: //modexCopyPageRegion(pip[0].page, pip[3].page, 0, 0, x, y, 20, 36);
\r
3106 src/lib/zcroll16.h: * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
3107 src/lib/zcroll16.h://#include "src/lib/bakapee.h"
\r
3108 src/lib/zcroll16.h://#include "src/lib/16_in.h"
\r
3109 src/lib/zcroll16.h:#include "src/lib/16_map.h" //map is loaded here www
\r
3110 src/lib/zcroll16.h://#define TILERENDER
\r
3111 src/lib/zcroll16.h://modexDrawSpritePBufRegion
\r
3112 src/lib/zcroll16.h://modexDrawBmpPBufRegion
\r
3113 src/lib/zcroll16.h: int tx; //appears to be the top left tile position on the viewable screen map
\r
3114 src/lib/zcroll16.h: int ty; //appears to be the top left tile position on the viewable screen map
\r
3115 src/lib/zcroll16.h: word dxThresh; //Threshold for physical tile switch
\r
3116 src/lib/zcroll16.h: word dyThresh; //Threshold for physical tile switch
\r
3117 src/lib/zcroll16.h: video_t *video; //pointer to game variables of the video
\r
3118 src/lib/zcroll16.h: pan_t *pan; //pointer the the page panning debug system
\r
3119 src/lib/zcroll16.h:// Move an entity around. Should actually be in 16_entity
\r
3120 src/lib/zcroll16.h:// Move player around and call map scrolling if required/possible
\r
3121 src/lib/zcroll16.h:// Scroll map in one direction (assumed from player's movement)
\r
3122 src/lib/zcroll16.h://void qclean();
\r