home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!uunet!elroy.jpl.nasa.gov!swrinde!mips!msi!dcmartin
- From: nathan@inmos.co.uk (Nathan Sidwell)
- Newsgroups: comp.sources.x
- Subject: v18i073: xmris version 2.00, Patch1, Part02/05
- Message-ID: <1992Jul29.181100.15589@msi.com>
- Date: 29 Jul 92 18:11:00 GMT
- References: <csx-18i072-xmris@uunet.UU.NET>
- Sender: dcmartin@msi.com (David C. Martin - Moderator)
- Organization: Molecular Simulations, Inc.
- Lines: 1540
- Approved: dcmartin@msi.com
- Originator: dcmartin@fascet
-
- Submitted-by: Nathan Sidwell <nathan@inmos.co.uk>
- Posting-number: Volume 18, Issue 73
- Archive-name: xmris/patch1.02
- Patch-To: xmris: Volume XXX, Issue XXX
-
- #!/bin/sh
- # this is part.02 (part 2 of a multipart archive)
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file patch.v2.00 continued
- #
- if test ! -r _shar_seq_.tmp; then
- echo 'Please unpack part 1 first!'
- exit 1
- fi
- (read Scheck
- if test "$Scheck" != 2; then
- echo Please unpack part "$Scheck" next!
- exit 1
- else
- exit 0
- fi
- ) < _shar_seq_.tmp || exit 1
- if test ! -f _shar_wnt_.tmp; then
- echo 'x - still skipping patch.v2.00'
- else
- echo 'x - continuing file patch.v2.00'
- sed 's/^X//' << 'SHAR_EOF' >> 'patch.v2.00' &&
- ! {dronsq_bits, dronsqm_bits, dronsq_width, dronsq_height, {CELL_WIDTH, CELL_HEIGHT / 4}},
- ! {NULL, NULL, 0, 0, {0, 0}, SPRITE_SQUISHED + 9, 1},
- ! {plyrsq_bits, plyrsqm_bits, plyrsq_width, plyrsq_height, {CELL_WIDTH, CELL_HEIGHT / 4}},
- X /*}}}*/
- X /*{{{ 2:chomp (open, closed)*/
- ! {chmpopn_bits, chmpopnm_bits, chmpopn_width, chmpopn_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {chmpcls_bits, chmpclsm_bits, chmpcls_width, chmpcls_height, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 8:m r i s*/
- ! {solidm_bits, bigm_bits, solidm_width, solidm_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {solidr_bits, bigr_bits, solidr_width, solidr_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {solidi_bits, bigi_bits, solidi_width, solidi_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {solids_bits, bigs_bits, solids_width, solids_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shellm_bits, bigm_bits, shellm_width, shellm_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shellr_bits, bigr_bits, shellr_width, shellr_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shelli_bits, bigi_bits, shelli_width, shelli_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shells_bits, bigs_bits, shells_width, shells_height, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 5:prizes*/
- ! {cake_bits, cakem_bits, cake_width, cake_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {spanner_bits, spannerm_bits, spanner_width, spanner_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {brolly_bits, brollym_bits, brolly_width, brolly_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {mushrm_bits, mushrmm_bits, mushrm_width, mushrm_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {clock_bits, clockm_bits, clock_width, clock_height, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X };
- X /*}}}*/
- ! /*{{{ static SPRITE spritet[2] =*/
- X static SPRITE spritet[2] =
- X {
- ! {solidt_bits, bigt_bits, solidt_width, solidt_height, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shellt_bits, bigt_bits, shellt_width, shellt_height, {CELL_WIDTH, CELL_HEIGHT}},
- X };
- X /*}}}*/
- X /*{{{ static SPRITE icons[2] =*/
- X static SPRITE icons[2] =
- X {
- ! {NULL, mris_bits, mris_width, mris_height},
- ! {NULL, msit_bits, msit_width, msit_height},
- X };
- X /*}}}*/
- X /*{{{ APPLE_SIZE const apple_sizes[6] =*/
- --- 184,386 ----
- X {"iconic", 1, &flags.iconic, "Start iconic"},
- X {"mris", 0, &flags.gender, "Male version"},
- X {"msit", 1, &flags.gender, "Female version"},
- + {"scores", -1, &score_file, "High score file"},
- X {NULL}
- X };
- X /*}}}*/
- + /*{{{ DEFAULT const defaults[] =*/
- + static DEFAULT const defaults[] =
- + {
- + {"up", 0},
- + {"down", 1},
- + {"left", 2},
- + {"right", 3},
- + {"throw", KEY_THROW},
- + {"pause", KEY_PAUSE},
- + {"quit", KEY_QUIT},
- + {"iconize", KEY_ICONIZE},
- + {"keyboard", KEY_KEYBOARD},
- + {"font", -1, &font.name},
- + {"scores", -1, &score_file},
- + {NULL}
- + };
- + /*}}}*/
- X /*{{{ SPRITE sprites[] =*/
- X SPRITE sprites[] =
- X {
- X /*{{{ 2:center masks (oblong, rect)*/
- ! {NULL, oblong_bits, {oblong_width, oblong_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, rect_bits, {rect_width, rect_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 2:munch masks (tb,lr)*/
- ! {NULL, munchtb_bits, {munchtb_width, munchtb_height}, {CELL_WIDTH, MUNCH_HEIGHT}},
- ! {NULL, munchlr_bits, {munchlr_width, munchlr_height}, {MUNCH_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 2:edge masks (tb, lr)*/
- ! {NULL, edgetb_bits, {edgetb_width, edgetb_height}, {GAP_WIDTH * 5, EDGE_HEIGHT}},
- ! {NULL, edgelr_bits, {edgelr_width, edgelr_height}, {EDGE_WIDTH, GAP_HEIGHT * 5}},
- X /*}}}*/
- X /*{{{ 4:fills (0,1,2,3)*/
- ! {fill0_bits, NULL, {fill0_width, fill0_height}, {0, 0}},
- ! {fill1_bits, NULL, {fill1_width, fill1_height}, {0, 0}},
- ! {fill2_bits, NULL, {fill2_width, fill2_height}, {0, 0}},
- ! {fill3_bits, NULL, {fill3_width, fill3_height}, {0, 0}},
- X /*}}}*/
- X /*{{{ 1:digits (0,1,2,3,4,5,6,7,8,9,' ')*/
- ! {digits_bits, digitsm_bits, {digits_width, digits_height}, {DIGIT_WIDTH * 11, DIGIT_HEIGHT}},
- X /*}}}*/
- X /*{{{ 1:cherry*/
- ! {cherry_bits, cherrym_bits, {cherry_width, cherry_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 1:den*/
- ! {den_bits, denm_bits, {den_width, den_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 1:ball*/
- ! {ball_bits, ball_bits, {ball_width, ball_height}, {BALL_WIDTH, BALL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 6:apples (apple, rock, apple, split, decay, rot)*/
- ! {apple_bits, applem_bits, {apple_width, apple_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {rock_bits, rockm_bits, {rock_width, rock_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_APPLE, 0},
- ! {split_bits, splitm_bits, {split_width, split_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {decay_bits, decaym_bits, {decay_width, decay_height}, {DECAY_WIDTH, DECAY_HEIGHT}},
- ! {rot_bits, rotm_bits, {rot_width, rot_height}, {ROT_WIDTH, ROT_HEIGHT}},
- X /*}}}*/
- X /*{{{ 2:extra (bold, faint)*/
- ! {xtrbold_bits, xtrbold_bits, {xtrbold_width, xtrbold_height}, {CELL_WIDTH / 2 * 5, CELL_HEIGHT / 2}},
- ! {xtrfaint_bits, xtrbold_bits, {xtrfaint_width, xtrfaint_height}, {CELL_WIDTH / 2 * 5, CELL_HEIGHT / 2}},
- X /*}}}*/
- X /*{{{ 2:xtra source*/
- ! {xtra1_bits, xtra1m_bits, {xtra1_width, xtra1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {xtra2_bits, xtra2m_bits, {xtra2_width, xtra2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 12:normal (ul, dr, l, r, ur, dl)*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 8, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 9, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 8, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 9, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 6, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 7, 1},
- ! {normrt1_bits, normrt1m_bits, {normrt1_width, normrt1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {normrt2_bits, normrt2m_bits, {normrt2_width, normrt2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {normup1_bits, normup1m_bits, {normup1_width, normup1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {normup2_bits, normup2m_bits, {normup2_width, normup1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 0, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_NORMAL + 1, 2},
- X /*}}}*/
- X /*{{{ 12:muncher (ul, dr, l, r, ur, dl)*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 8, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 9, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 8, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 9, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 6, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 7, 1},
- ! {mnchrt1_bits, mnchrt1m_bits, {mnchrt1_width, mnchrt1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {mnchrt2_bits, mnchrt2m_bits, {mnchrt2_width, mnchrt2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {mnchup1_bits, mnchup1m_bits, {mnchup1_width, mnchup1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {mnchup2_bits, mnchup2m_bits, {mnchup2_width, mnchup2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 0, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_MUNCHER + 1, 2},
- X /*}}}*/
- X /*{{{ 12:xtra (ul, dr, l, r, ur, dl)*/
- ! {xtra1_bits, xtra1m_bits, {xtra1_width, xtra1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {xtra2_bits, xtra2m_bits, {xtra2_width, xtra2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 0, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 1, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 0, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 1, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 0, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 1, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 0, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 1, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 0, 0},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_XTRA + 1, 0},
- X /*}}}*/
- X /*{{{ 12:drone (ul, dr, l, r, ur, dl)*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 8, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 9, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 8, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 9, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 6, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 7, 1},
- ! {dronrt1_bits, dronrt1m_bits, {dronrt1_width, dronrt1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {dronrt2_bits, dronrt2m_bits, {dronrt2_width, dronrt2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {dronup1_bits, dronup1m_bits, {dronup1_width, dronup1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {dronup2_bits, dronup2m_bits, {dronup2_width, dronup2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 0, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_DRONE + 1, 2},
- X /*}}}*/
- X /*{{{ 12:player (ul, dr, l, r, ur, dl)*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 8, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 9, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 8, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 9, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 6, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 7, 1},
- ! {plyrrt1_bits, plyrrt1m_bits, {plyrrt1_width, plyrrt1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {plyrrt2_bits, plyrrt2m_bits, {plyrrt2_width, plyrrt2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {plyrup1_bits, plyrup1m_bits, {plyrup1_width, plyrup1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {plyrup2_bits, plyrup2m_bits, {plyrup2_width, plyrup2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 0, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 1, 2},
- X /*}}}*/
- X /*{{{ 4:player push (l, r)*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER_PUSH + 2, 1},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER_PUSH + 3, 1},
- ! {plyrps1_bits, plyrps1m_bits, {plyrps1_width, plyrps1_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {plyrps2_bits, plyrps2m_bits, {plyrps2_width, plyrps2_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 2:player dead (l, r)*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 4, 2},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_PLAYER + 6, 2},
- X /*}}}*/
- X /*{{{ 10:squished*/
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_SQUISHED + 1, 1},
- ! {normsq_bits, normsqm_bits, {normsq_width, normsq_height}, {CELL_WIDTH, CELL_HEIGHT / 4}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_SQUISHED + 3, 1},
- ! {mnchsq_bits, mnchsqm_bits, {mnchsq_width, mnchsq_height}, {CELL_WIDTH, CELL_HEIGHT / 4}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_SQUISHED + 5, 0},
- ! {xtrasq_bits, xtrasqm_bits, {xtrasq_width, xtrasq_height}, {CELL_WIDTH, CELL_HEIGHT / 4}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_SQUISHED + 7, 1},
- ! {dronsq_bits, dronsqm_bits, {dronsq_width, dronsq_height}, {CELL_WIDTH, CELL_HEIGHT / 4}},
- ! {NULL, NULL, {0, 0}, {0, 0}, SPRITE_SQUISHED + 9, 1},
- ! {plyrsq_bits, plyrsqm_bits, {plyrsq_width, plyrsq_height}, {CELL_WIDTH, CELL_HEIGHT / 4}},
- X /*}}}*/
- X /*{{{ 2:chomp (open, closed)*/
- ! {chmpopn_bits, chmpopnm_bits, {chmpopn_width, chmpopn_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {chmpcls_bits, chmpclsm_bits, {chmpcls_width, chmpcls_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 8:m r i s*/
- ! {solidm_bits, bigm_bits, {solidm_width, solidm_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {solidr_bits, bigr_bits, {solidr_width, solidr_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {solidi_bits, bigi_bits, {solidi_width, solidi_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {solids_bits, bigs_bits, {solids_width, solids_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shellm_bits, bigm_bits, {shellm_width, shellm_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shellr_bits, bigr_bits, {shellr_width, shellr_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shelli_bits, bigi_bits, {shelli_width, shelli_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shells_bits, bigs_bits, {shells_width, shells_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X /*{{{ 5:prizes*/
- ! {cake_bits, cakem_bits, {cake_width, cake_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {spanner_bits, spannerm_bits, {spanner_width, spanner_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {brolly_bits, brollym_bits, {brolly_width, brolly_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {mushrm_bits, mushrmm_bits, {mushrm_width, mushrm_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {clock_bits, clockm_bits, {clock_width, clock_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X /*}}}*/
- X };
- X /*}}}*/
- ! /*{{{ static SPRITE sprites[2] =*/
- X static SPRITE spritet[2] =
- X {
- ! {solidt_bits, bigt_bits, {solidt_width, solidt_height}, {CELL_WIDTH, CELL_HEIGHT}},
- ! {shellt_bits, bigt_bits, {shellt_width, shellt_height}, {CELL_WIDTH, CELL_HEIGHT}},
- X };
- X /*}}}*/
- X /*{{{ static SPRITE icons[2] =*/
- X static SPRITE icons[2] =
- X {
- ! {NULL, mris_bits, {mris_width, mris_height}},
- ! {NULL, msit_bits, {msit_width, msit_height}},
- X };
- X /*}}}*/
- X /*{{{ APPLE_SIZE const apple_sizes[6] =*/
- ***************
- *** 386,392 ****
- X {(CELL_WIDTH - ROT_WIDTH) / 2, CELL_HEIGHT - ROT_HEIGHT}},
- X };
- X /*}}}*/
- ! /*{{{ BOARD const boards[10] =*/
- X #if BOARDS != 10
- X #error BOARDS != 10
- X #endif
- --- 396,402 ----
- X {(CELL_WIDTH - ROT_WIDTH) / 2, CELL_HEIGHT - ROT_HEIGHT}},
- X };
- X /*}}}*/
- ! /*{{{ BOARD const boards[BOARDS] =*/
- X #if BOARDS != 10
- X #error BOARDS != 10
- X #endif
- ***************
- *** 599,605 ****
- X /*}}}*/
- X };
- X /*}}}*/
- ! char keystrokes[5] = {'\'', '/', 'z', 'x', ' '};
- X /*{{{ COORD const ball_hold[16] =*/
- X /*{{{ held ball offsets*/
- X #define PLAYER_RIGHT1_BALL_X (plyrrt1_x_hot - CELL_WIDTH / 2)
- --- 609,622 ----
- X /*}}}*/
- X };
- X /*}}}*/
- ! /*{{{ KeySym keystrokes[KEYS] =*/
- ! #if BOARDS != 10
- ! #error BOARDS != 10
- ! #endif
- ! KeySym keystrokes[KEYS] =
- ! {KEYSYM_UP, KEYSYM_DOWN, KEYSYM_LEFT, KEYSYM_RIGHT, KEYSYM_THROW,
- ! KEYSYM_PAUSE, KEYSYM_QUIT, KEYSYM_ICONIZE, KEYSYM_KEY};
- ! /*}}}*/
- X /*{{{ COORD const ball_hold[16] =*/
- X /*{{{ held ball offsets*/
- X #define PLAYER_RIGHT1_BALL_X (plyrrt1_x_hot - CELL_WIDTH / 2)
- ***************
- *** 648,656 ****
- X {(CELL_WIDTH + GAP_WIDTH) / 2, GAP_HEIGHT / 2},
- X };
- X /*}}}*/
- ! int const ball_dir[8] = {0, 1, 2, 1, 3, 2, 2, 1};
- ! /*{{{ int const player_dies[8] =*/
- ! int const player_dies[8] =
- X {
- X SPRITE_PLAYER_DEAD + 1,
- X SPRITE_PLAYER + 0,
- --- 665,673 ----
- X {(CELL_WIDTH + GAP_WIDTH) / 2, GAP_HEIGHT / 2},
- X };
- X /*}}}*/
- ! unsigned const ball_dir[8] = {0, 1, 2, 1, 3, 2, 2, 1};
- ! /*{{{ unsigned const player_dies[8] =*/
- ! unsigned const player_dies[8] =
- X {
- X SPRITE_PLAYER_DEAD + 1,
- X SPRITE_PLAYER + 0,
- ***************
- *** 662,685 ****
- X SPRITE_PLAYER_DEAD + 0,
- X };
- X /*}}}*/
- ! /*{{{ char const *title_text[] =*/
- ! char const *title_text[] =
- X {
- ! "(C) 1992 Nathan Sidwell",
- X #if __STDC__
- ! XMRISVERSION " " __DATE__, "",
- X #else
- ! " ", /* should be enough space */
- X #endif
- ! "Z - Left", "X - Right", "' - Up", "/ - Down", "Space - Throw",
- ! "Or use the mouse", "P - Pause", "Q - Quit",
- ! "Press a key or button to start", NULL
- X };
- X /*}}}*/
- X #if SQUISH_SCORES != 7
- X #error SQUISH_SCORES != 7
- X #endif
- ! int const squish_scores[SQUISH_SCORES] = {0, 1000, 2000, 4000, 6000, 8000, 9900};
- X /*}}}*/
- X /*{{{ void create_resources(arc, argv)*/
- X extern void create_resources FUNCARGLIST((argc, argv))
- --- 679,712 ----
- X SPRITE_PLAYER_DEAD + 0,
- X };
- X /*}}}*/
- ! /*{{{ TITLE const title_text[] =*/
- ! TITLE const title_text[] =
- X {
- ! {"(C) 1992 Nathan Sidwell"},
- X #if __STDC__
- ! {XMRISVERSION " " DATE},
- X #else
- ! {" "}, /* should be enough space */
- X #endif
- ! {"",},
- ! {"Left - %s", 2},
- ! {"Right - %s", 3},
- ! {"Up - %s", 0},
- ! {"Down - %s", 1},
- ! {"Throw - %s", KEY_THROW},
- ! {"Pause - %s", KEY_PAUSE},
- ! {"Quit - %s", KEY_QUIT},
- ! {"Iconize - %s", KEY_ICONIZE},
- ! {"Map keys - %s", KEY_KEYBOARD},
- ! {"Press %s to start", KEY_THROW},
- ! {NULL}
- X };
- X /*}}}*/
- X #if SQUISH_SCORES != 7
- X #error SQUISH_SCORES != 7
- X #endif
- ! unsigned const squish_scores[SQUISH_SCORES] =
- ! {0, 1000, 2000, 4000, 6000, 8000, 9900};
- X /*}}}*/
- X /*{{{ void create_resources(arc, argv)*/
- X extern void create_resources FUNCARGLIST((argc, argv))
- ***************
- *** 686,697 ****
- X int argc FUNCARGSEP
- X char **argv FUNCARGTERM
- X {
- - display.display = XOpenDisplay(display.name);
- - /*{{{ opened?*/
- - if(!display.display)
- - fatal_error("Cannot open display \"%s\"",
- - display.name ? display.name : "DEFAULT", stderr);
- - /*}}}*/
- X /*{{{ open the display*/
- X {
- X display.screen = DefaultScreen(display.display);
- --- 713,718 ----
- ***************
- *** 740,748 ****
- --- 761,777 ----
- X /*}}}*/
- X /*{{{ get a font*/
- X {
- + char const *string = "09AZhy";
- + int direction;
- + XCharStruct chars;
- +
- X font.font = XLoadFont(display.display, font.name);
- X if(!font.font)
- X fatal_error("Cannot load font \"%s\"", font.name);
- + XQueryTextExtents(display.display, font.font, string, 6,
- + &direction, &font.ascent, &font.descent, &chars);
- + font.width = chars.width / 6;
- + font.center = (font.ascent - font.descent) / 2;
- X }
- X /*}}}*/
- X /*{{{ create graphics contexts*/
- ***************
- *** 788,794 ****
- X XQueryColors(display.display, display.colormap, colors, 2);
- X display.icon = XCreatePixmapFromBitmapData(display.display,
- X display.root, icons[flags.gender].mask_bits,
- ! icons[flags.gender].width, icons[flags.gender].height, 1, 0, 1);
- X if(!display.icon)
- X fatal_error("Cannot create window icon");
- X cursor = mask = 0;
- --- 817,823 ----
- X XQueryColors(display.display, display.colormap, colors, 2);
- X display.icon = XCreatePixmapFromBitmapData(display.display,
- X display.root, icons[flags.gender].mask_bits,
- ! icons[flags.gender].size.x, icons[flags.gender].size.y, 1, 0, 1);
- X if(!display.icon)
- X fatal_error("Cannot create window icon");
- X cursor = mask = 0;
- ***************
- *** 809,815 ****
- X if(!display.cursor)
- X fatal_error("Cannot create cursor icon");
- X display.window = XCreateSimpleWindow(display.display, display.root,
- ! 0, 0, hints.width, hints.height, 1, display.black, display.white);
- X if(!display.window)
- X fatal_error("Cannot create window");
- X XSetStandardProperties(display.display, display.window,
- --- 838,845 ----
- X if(!display.cursor)
- X fatal_error("Cannot create cursor icon");
- X display.window = XCreateSimpleWindow(display.display, display.root,
- ! 0, 0, (unsigned)hints.width, (unsigned)hints.height,
- ! 1, display.black, display.white);
- X if(!display.window)
- X fatal_error("Cannot create window");
- X XSetStandardProperties(display.display, display.window,
- ***************
- *** 818,824 ****
- X }
- X /*}}}*/
- X display.back = XCreatePixmap(display.display, display.root,
- ! WINDOW_WIDTH, WINDOW_HEIGHT, display.depth);
- X display.copy = XCreatePixmap(display.display, display.root,
- X WINDOW_WIDTH, WINDOW_HEIGHT, display.depth);
- X if(!display.back || !display.copy)
- --- 848,854 ----
- X }
- X /*}}}*/
- X display.back = XCreatePixmap(display.display, display.root,
- ! WINDOW_WIDTH, WINDOW_HEIGHT, (unsigned)display.depth);
- X display.copy = XCreatePixmap(display.display, display.root,
- X WINDOW_WIDTH, WINDOW_HEIGHT, display.depth);
- X if(!display.back || !display.copy)
- ***************
- *** 843,875 ****
- X for(i = 0, sptr = sprites; i != SPRITES; i++, sptr++)
- X {
- X /* check that its the size we expected */
- ! assert((!sptr->expected.x || sptr->expected.x == sptr->width) &&
- ! (!sptr->expected.y || sptr->expected.y == sptr->height));
- X if(sptr->mask_bits || sptr->image_bits)
- X {
- ! assert(sptr->width && sptr->height);
- X if(sptr->image_bits)
- X sptr->image = XCreatePixmapFromBitmapData(display.display,
- X display.root, sptr->image_bits,
- ! sptr->width, sptr->height,
- X display.black, display.white, display.depth);
- X else
- X {
- X sptr->image = XCreatePixmap(display.display, display.root,
- ! sptr->width, sptr->height, display.depth);
- X if(sptr->image)
- X XFillRectangle(display.display, sptr->image, GCN(GC_CLEAR),
- ! 0, 0, sptr->width, sptr->height);
- X }
- X if(sptr->mask_bits && sptr->image)
- X {
- X sptr->mask = XCreatePixmapFromBitmapData(display.display,
- ! display.root, sptr->mask_bits, sptr->width, sptr->height,
- X ((unsigned long)1 << display.depth) - (unsigned long)1,
- X (unsigned long)0, display.depth);
- X if(sptr->mask)
- X XCopyArea(display.display, sptr->mask, sptr->image, GCN(GC_AND),
- ! 0, 0, sptr->width, sptr->height, 0, 0);
- X }
- X if((!sptr->mask && sptr->mask_bits) || !sptr->image)
- X fatal_error("Cannot create sprite %d", i);
- --- 873,905 ----
- X for(i = 0, sptr = sprites; i != SPRITES; i++, sptr++)
- X {
- X /* check that its the size we expected */
- ! assert(!sptr->expected.x || sptr->expected.x == sptr->size.x);
- ! assert(!sptr->expected.y || sptr->expected.y == sptr->size.y);
- X if(sptr->mask_bits || sptr->image_bits)
- X {
- ! assert(sptr->size.x && sptr->size.y);
- X if(sptr->image_bits)
- X sptr->image = XCreatePixmapFromBitmapData(display.display,
- X display.root, sptr->image_bits,
- ! sptr->size.x, sptr->size.y,
- X display.black, display.white, display.depth);
- X else
- X {
- X sptr->image = XCreatePixmap(display.display, display.root,
- ! sptr->size.x, sptr->size.y, display.depth);
- X if(sptr->image)
- X XFillRectangle(display.display, sptr->image, GCN(GC_CLEAR),
- ! 0, 0, sptr->size.x, sptr->size.y);
- X }
- X if(sptr->mask_bits && sptr->image)
- X {
- X sptr->mask = XCreatePixmapFromBitmapData(display.display,
- ! display.root, sptr->mask_bits, sptr->size.x, sptr->size.y,
- X ((unsigned long)1 << display.depth) - (unsigned long)1,
- X (unsigned long)0, display.depth);
- X if(sptr->mask)
- X XCopyArea(display.display, sptr->mask, sptr->image, GCN(GC_AND),
- ! 0, 0, sptr->size.x, sptr->size.y, 0, 0);
- X }
- X if((!sptr->mask && sptr->mask_bits) || !sptr->image)
- X fatal_error("Cannot create sprite %d", i);
- ***************
- *** 904,912 ****
- X SPRITE *optr;
- X
- X optr = &sprites[sptr->copy];
- ! assert(optr->width && optr->height);
- ! sptr->width = optr->width;
- ! sptr->height = optr->height;
- X switch(sptr->reflect)
- X {
- X /*{{{ case 0: (no reflections)*/
- --- 934,942 ----
- X SPRITE *optr;
- X
- X optr = &sprites[sptr->copy];
- ! assert(optr->size.x && optr->size.y);
- ! sptr->size.x = optr->size.x;
- ! sptr->size.y = optr->size.y;
- X switch(sptr->reflect)
- X {
- X /*{{{ case 0: (no reflections)*/
- ***************
- *** 919,938 ****
- X case 1:
- X {
- X int i;
- !
- X sptr->mask = XCreatePixmap(display.display, display.root,
- ! sptr->width, sptr->height, display.depth);
- X sptr->image = XCreatePixmap(display.display, display.root,
- ! sptr->width, sptr->height, display.depth);
- X if(sptr->image && sptr->mask)
- ! for(i = sptr->width; i--;)
- X {
- X XCopyArea(display.display, optr->mask, sptr->mask,
- X GCN(GC_COPY),
- ! i, 0, 1, sptr->height, sptr->width - i - 1, 0);
- X XCopyArea(display.display, optr->image, sptr->image,
- X GCN(GC_COPY),
- ! i, 0, 1, sptr->height, sptr->width - i - 1, 0);
- X }
- X break;
- X }
- --- 949,968 ----
- X case 1:
- X {
- X int i;
- !
- X sptr->mask = XCreatePixmap(display.display, display.root,
- ! sptr->size.x, sptr->size.y, display.depth);
- X sptr->image = XCreatePixmap(display.display, display.root,
- ! sptr->size.x, sptr->size.y, display.depth);
- X if(sptr->image && sptr->mask)
- ! for(i = sptr->size.x; i--;)
- X {
- X XCopyArea(display.display, optr->mask, sptr->mask,
- X GCN(GC_COPY),
- ! i, 0, 1, sptr->size.y, (int)sptr->size.x - i - 1, 0);
- X XCopyArea(display.display, optr->image, sptr->image,
- X GCN(GC_COPY),
- ! i, 0, 1, sptr->size.y, (int)sptr->size.x - i - 1, 0);
- X }
- X break;
- X }
- ***************
- *** 941,960 ****
- X case 2:
- X {
- X int i;
- !
- X sptr->mask = XCreatePixmap(display.display, display.root,
- ! sptr->width, sptr->height, display.depth);
- X sptr->image = XCreatePixmap(display.display, display.root,
- ! sptr->width, sptr->height, display.depth);
- X if(sptr->mask && sptr->image)
- ! for(i = sptr->width; i--;)
- X {
- X XCopyArea(display.display, optr->mask, sptr->mask,
- X GCN(GC_COPY),
- ! 0, i, sptr->width, 1, 0, sptr->height - i - 1);
- X XCopyArea(display.display, optr->image, sptr->image,
- X GCN(GC_COPY),
- ! 0, i, sptr->width, 1, 0, sptr->height - i - 1);
- X }
- X break;
- X }
- --- 971,990 ----
- X case 2:
- X {
- X int i;
- !
- X sptr->mask = XCreatePixmap(display.display, display.root,
- ! sptr->size.x, sptr->size.y, display.depth);
- X sptr->image = XCreatePixmap(display.display, display.root,
- ! sptr->size.x, sptr->size.y, display.depth);
- X if(sptr->mask && sptr->image)
- ! for(i = sptr->size.x; i--;)
- X {
- X XCopyArea(display.display, optr->mask, sptr->mask,
- X GCN(GC_COPY),
- ! 0, i, sptr->size.x, 1, 0, (int)sptr->size.y - i - 1);
- X XCopyArea(display.display, optr->image, sptr->image,
- X GCN(GC_COPY),
- ! 0, i, sptr->size.x, 1, 0, (int)sptr->size.y - i - 1);
- X }
- X break;
- X }
- ***************
- *** 975,984 ****
- X unsigned i;
- X
- X for(i = sizeof(ball_hold) / sizeof(COORD); i--;)
- ! assert(ball_hold[i].x + CELL_WIDTH / 2 >= 0 &&
- ! ball_hold[i].x + CELL_WIDTH / 2 <= CELL_WIDTH - BALL_WIDTH / 2 &&
- ! ball_hold[i].y + CELL_HEIGHT / 2 >= 0 &&
- ! ball_hold[i].y + CELL_HEIGHT / 2 <= CELL_HEIGHT - BALL_HEIGHT / 2);
- X }
- X /*}}}*/
- X /*{{{ create score pixmaps*/
- --- 1005,1016 ----
- X unsigned i;
- X
- X for(i = sizeof(ball_hold) / sizeof(COORD); i--;)
- ! {
- ! assert(ball_hold[i].x + CELL_WIDTH / 2 >= 0);
- ! assert(ball_hold[i].x + CELL_WIDTH / 2 <= CELL_WIDTH - BALL_WIDTH / 2);
- ! assert(ball_hold[i].y + CELL_HEIGHT / 2 >= 0);
- ! assert(ball_hold[i].y + CELL_HEIGHT / 2 <= CELL_HEIGHT - BALL_HEIGHT / 2);
- ! }
- X }
- X /*}}}*/
- X /*{{{ create score pixmaps*/
- ***************
- *** 1001,1007 ****
- X /*}}}*/
- X /*{{{ void create_xtra_monster(index)*/
- X extern void create_xtra_monster FUNCARGLIST((index))
- ! int index FUNCARGTERM
- X {
- X SPRITE *dptr;
- X SPRITE *sptr;
- --- 1033,1039 ----
- X /*}}}*/
- X /*{{{ void create_xtra_monster(index)*/
- X extern void create_xtra_monster FUNCARGLIST((index))
- ! unsigned index FUNCARGTERM
- X {
- X SPRITE *dptr;
- X SPRITE *sptr;
- ***************
- *** 1016,1026 ****
- X XCopyArea(display.display, sptr->image, dptr->image, GCN(GC_COPY),
- X 0, 0, CELL_WIDTH, CELL_HEIGHT, 0, 0);
- X XCopyArea(display.display, lptr->mask, dptr->image, GCN(GC_MASK),
- ! index * (CELL_WIDTH / 2), 0, CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X XTRA_LETTER_X, XTRA_LETTER_Y);
- X XCopyArea(display.display, lptr[!(extra.got & 1 << index)].image,
- X dptr->image, GCN(GC_OR),
- ! index * (CELL_WIDTH / 2), 0, CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X XTRA_LETTER_X, XTRA_LETTER_Y);
- X }
- X return;
- --- 1048,1058 ----
- X XCopyArea(display.display, sptr->image, dptr->image, GCN(GC_COPY),
- X 0, 0, CELL_WIDTH, CELL_HEIGHT, 0, 0);
- X XCopyArea(display.display, lptr->mask, dptr->image, GCN(GC_MASK),
- ! (int)index * (CELL_WIDTH / 2), 0, CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X XTRA_LETTER_X, XTRA_LETTER_Y);
- X XCopyArea(display.display, lptr[!(extra.got & 1 << index)].image,
- X dptr->image, GCN(GC_OR),
- ! (int)index * (CELL_WIDTH / 2), 0, CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X XTRA_LETTER_X, XTRA_LETTER_Y);
- X }
- X return;
- ***************
- *** 1028,1034 ****
- X /*}}}*/
- X /*{{{ void draw_extra_letter(index)*/
- X extern void draw_extra_letter FUNCARGLIST((index))
- ! int index FUNCARGTERM
- X {
- X SPRITE *lptr;
- X int x;
- --- 1060,1066 ----
- X /*}}}*/
- X /*{{{ void draw_extra_letter(index)*/
- X extern void draw_extra_letter FUNCARGLIST((index))
- ! unsigned index FUNCARGTERM
- X {
- X SPRITE *lptr;
- X int x;
- ***************
- *** 1038,1051 ****
- X XFillRectangle(display.display, display.back, GCN(GC_CLEAR),
- X x, XTRA_Y, CELL_WIDTH, CELL_HEIGHT);
- X XCopyArea(display.display, lptr->mask,
- ! display.back, GCN(GC_MASK), index * (CELL_WIDTH / 2), 0,
- X CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X x + XTRA_LETTER_X, XTRA_Y + XTRA_LETTER_Y);
- X XCopyArea(display.display, lptr[!(extra.got & 1 << index)].image,
- ! display.back, GCN(GC_OR), index * (CELL_WIDTH / 2), 0,
- X CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X x + XTRA_LETTER_X, XTRA_Y + XTRA_LETTER_Y);
- X add_background(x, XTRA_Y, CELL_WIDTH, CELL_HEIGHT);
- X return;
- X }
- X /*}}}*/
- --- 1070,1114 ----
- X XFillRectangle(display.display, display.back, GCN(GC_CLEAR),
- X x, XTRA_Y, CELL_WIDTH, CELL_HEIGHT);
- X XCopyArea(display.display, lptr->mask,
- ! display.back, GCN(GC_MASK), (int)index * (CELL_WIDTH / 2), 0,
- X CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X x + XTRA_LETTER_X, XTRA_Y + XTRA_LETTER_Y);
- X XCopyArea(display.display, lptr[!(extra.got & 1 << index)].image,
- ! display.back, GCN(GC_OR), (int)index * (CELL_WIDTH / 2), 0,
- X CELL_WIDTH / 2, CELL_HEIGHT / 2,
- X x + XTRA_LETTER_X, XTRA_Y + XTRA_LETTER_Y);
- X add_background(x, XTRA_Y, CELL_WIDTH, CELL_HEIGHT);
- + return;
- + }
- + /*}}}*/
- + /*{{{ void read_xdefaults()*/
- + extern void read_xdefaults FUNCARGVOID
- + {
- + DEFAULT const *dptr;
- +
- + for(dptr = defaults; dptr->name; dptr++)
- + {
- + char *value;
- +
- + value = XGetDefault(display.display, "Xmris", dptr->name);
- + if(!value)
- + /*EMPTY*/;
- + else if(dptr->type < 0)
- + {
- + if(!*dptr->text)
- + *dptr->text = value;
- + }
- + else
- + {
- + KeySym symbol;
- +
- + symbol = XStringToKeysym(value);
- + if(symbol)
- + keystrokes[dptr->type] = symbol;
- + else
- + fprintf(stderr, "Don't understand %s key '%s'\n", dptr->name, value);
- + }
- + }
- X return;
- X }
- X /*}}}*/
- diff -c -r exp.v1.01/demo.c exp.v2.00/demo.c
- *** exp.v1.01/demo.c Fri Jul 24 09:56:04 1992
- --- exp.v2.00/demo.c Fri Jul 24 13:43:12 1992
- ***************
- *** 1,28 ****
- ! /*{{{ (C) 1992 Nathan Sidwell*/
- ! /*****************************************************************************
- ! X M R I S V1.01
- ! ---------------
- ! (C) 1992 Nathan Sidwell
- !
- ! This program is copyright (C) 1992 Nathan Sidwell. This software and documentation
- ! is in the public domain. Permission is granted to distribute and compile
- ! verbatim copies of this software for non-commercial, non-profit use,
- ! without fee. The software may be modified, provided that both the above copyright
- ! notice and this permission notice appear.
- !
- ! No guarantee is given as to the robustness or suitability of this
- ! software for your computer.
- !
- ! Nathan Sidwell INMOS UK | | nathan@inmos.co.uk DoD#0390
- ! *****************************************************************************/
- ! /*}}}*/
- X #include "xmris.h"
- X /*{{{ prototypes*/
- X static int demo_board PROTOARGLIST((void));
- X static int demo_keys PROTOARGLIST((void));
- ! static int move_demo PROTOARGLIST((void));
- X static void move_mris PROTOARGLIST((void));
- X /*}}}*/
- X /*{{{ int demo_board()*/
- X static int demo_board FUNCARGVOID
- X {
- --- 1,186 ----
- ! /* (C) 1992 Nathan Sidwell */
- X #include "xmris.h"
- + #include <time.h>
- + #if HIGH_SCORE_FILE
- + #include <sys/stat.h>
- + #endif
- + #define HIGH_SCORES (CELLS_DOWN - 1)
- + #define NAME_LEN 64
- + /*{{{ typedef struct High_Score*/
- + typedef struct High_Score
- + {
- + time_t stamp;
- + unsigned score;
- + unsigned screen;
- + char name[NAME_LEN + 1];
- + } HIGH_SCORE;
- + /*}}}*/
- + static HIGH_SCORE high_scores[HIGH_SCORES];
- + static HIGH_SCORE my_score;
- X /*{{{ prototypes*/
- + static void back_mris PROTOARGLIST((unsigned));
- + static void back_score PROTOARGLIST((HIGH_SCORE const *, unsigned));
- + static int back_title PROTOARGLIST((TITLE const *, unsigned, unsigned));
- + static void def_keys PROTOARGLIST((void));
- X static int demo_board PROTOARGLIST((void));
- X static int demo_keys PROTOARGLIST((void));
- ! static int demo_score PROTOARGLIST((void));
- ! static int move_demo PROTOARGLIST((unsigned));
- X static void move_mris PROTOARGLIST((void));
- + #if HIGH_SCORE_FILE
- + static unsigned file_changed PROTOARGLIST((FILE *));
- + static void get_lock PROTOARGLIST((FILE *));
- + static void get_unlock PROTOARGLIST((FILE *));
- + static unsigned merge_scores PROTOARGLIST((FILE *));
- + static void write_scores PROTOARGLIST((FILE *));
- + #endif
- X /*}}}*/
- + /*{{{ void back_mris(shell)*/
- + static void back_mris FUNCARGLIST((shell))
- + unsigned shell FUNCARGTERM
- + {
- + unsigned index;
- +
- + for(index = 4; index--;)
- + {
- + SPRITE *sptr;
- +
- + sptr = &sprites[SPRITE_MRIS + index + 4 * !!((1 << index) & shell)];
- + XCopyArea(display.display, sptr->mask, display.back, GCN(GC_MASK),
- + 0, 0, CELL_WIDTH, CELL_HEIGHT,
- + PIXELX(4 + (int)index, 0), PIXELY(-1, 0));
- + XCopyArea(display.display, sptr->image, display.back, GCN(GC_OR),
- + 0, 0, CELL_WIDTH, CELL_HEIGHT,
- + PIXELX(4 + (int)index, 0), PIXELY(-1, 0));
- + }
- + return;
- + }
- + /*}}}*/
- + /*{{{ void back_score(sptr, index)*/
- + static void back_score FUNCARGLIST((sptr, index))
- + HIGH_SCORE const *sptr FUNCARGSEP
- + unsigned index FUNCARGTERM
- + {
- + unsigned length;
- + char score[10];
- + char screen[5];
- + COORD place;
- +
- + itoa(score, sptr->score, 9);
- + itoa(screen, sptr->screen, 4);
- + length = strlen(sptr->name);
- + place.x = PIXELX(0, 0);
- + place.y = PIXELY((int)index, CELL_HEIGHT / 2) + font.center;
- + XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- + place.x, place.y, score, 9);
- + place.x += 11 * font.width;
- + XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- + place.x, place.y, screen, 4);
- + place.x += 6 * font.width;
- + XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- + place.x, place.y, sptr->name, (int)length);
- + return;
- + }
- + /*}}}*/
- + /*{{{ int back_title(tptr, index, flag)*/
- + static int back_title FUNCARGLIST((tptr, index, flag))
- + TITLE const *tptr FUNCARGSEP
- + unsigned index FUNCARGSEP
- + unsigned flag FUNCARGTERM
- + {
- + char buffer[48];
- + unsigned length;
- +
- + /*{{{ insert key string?*/
- + {
- + char const *ptr;
- +
- + ptr = strchr(tptr->text, '%');
- + if(!ptr)
- + strcpy(buffer, tptr->text);
- + else if(!flag)
- + sprintf(buffer, tptr->text,
- + XKeysymToString(keystrokes[tptr->index]));
- + else
- + {
- + strcpy(buffer, tptr->text);
- + strcpy(&buffer[ptr - tptr->text], &ptr[2]);
- + }
- + }
- + /*}}}*/
- + length = strlen(buffer);
- + if(length)
- + {
- + char const *ptr;
- + unsigned shift;
- +
- + ptr = strchr(buffer, '-');
- + if(ptr)
- + shift = (ptr - buffer + 1) * font.width;
- + else
- + shift = 0;
- + XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- + WINDOW_WIDTH / 2 - (int)(shift ? shift : length * font.width / 2),
- + PIXELY((int)index, CELL_HEIGHT / 2) + font.center,
- + buffer, (int)length);
- + }
- + return length;
- + }
- + /*}}}*/
- + /*{{{ void def_keys()*/
- + static void def_keys FUNCARGVOID
- + {
- + unsigned index;
- + TITLE const *tptr;
- + unsigned base;
- + unsigned test;
- +
- + global.state = MODE_KEY_DEF;
- + global.key = 0;
- + monster.monsters = 0;
- + apple.apples = 0;
- + player.ball.state = 0;
- + player.ball.count = 8;
- + XFillRectangle(display.display, display.back, GCN(GC_CLEAR),
- + 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
- + back_mris(0);
- + for(tptr = title_text, base = 0; !strchr(tptr->text, '%'); tptr++, base++)
- + back_title(tptr, base, 0);
- + test = 0;
- + for(index = 0; index < KEYS; tptr++, index++)
- + {
- + assert(tptr->text);
- + back_title(tptr, base + index, 1);
- + XCopyArea(display.display, display.back, display.copy, GCN(GC_COPY),
- + 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
- + refresh_window();
- + while(1)
- + {
- + unsigned lookup;
- + KeySym key;
- +
- + process_xevents(0);
- + key = global.key;
- + if(index != KEY_THROW && key == XK_space)
- + key = keystrokes[tptr->index];
- + for(lookup = 0; lookup != KEYS; lookup++)
- + if((test & 1 << lookup) && keystrokes[lookup] == key)
- + break;
- + if(lookup == KEYS)
- + {
- + keystrokes[tptr->index] = key;
- + test |= 1 << tptr->index;
- + break;
- + }
- + }
- + back_title(tptr, base + index, 0);
- + }
- + XCopyArea(display.display, display.back, display.copy, GCN(GC_COPY),
- + 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
- + refresh_window();
- + return;
- + }
- + /*}}}*/
- X /*{{{ int demo_board()*/
- X static int demo_board FUNCARGVOID
- X {
- ***************
- *** 30,35 ****
- --- 188,194 ----
- X unsigned count;
- X unsigned quit;
- X
- + global.state = MODE_DEMO;
- X quit = 0;
- X player.screen = random() % 10;
- X extra.select = random() % 5;
- ***************
- *** 51,57 ****
- X unsigned x, y;
- X unsigned j;
- X CELL *cptr;
- !
- X do
- X {
- X do
- --- 210,216 ----
- X unsigned x, y;
- X unsigned j;
- X CELL *cptr;
- !
- X do
- X {
- X do
- ***************
- *** 62,73 ****
- X cptr = BOARDCELL(x, y);
- X }
- X while(!cptr->visit);
- ! spawn_monster(SPRITE_MRIS + count + (random() & 4), 0, 0, x, y, 0, 0);
- X }
- X /*}}}*/
- X refresh_window();
- X count = DISPLAY_HOLD;
- ! den = 4;
- X timer_start(FRAME_RATE);
- X while(count)
- X {
- --- 221,234 ----
- X cptr = BOARDCELL(x, y);
- X }
- X while(!cptr->visit);
- ! spawn_monster(SPRITE_MRIS + count + (random() & 4), 0, 0,
- ! (int)x, (int)y, 0, 0);
- X }
- X /*}}}*/
- X refresh_window();
- X count = DISPLAY_HOLD;
- ! den = 0xF;
- ! monster.normals = 0;
- X timer_start(FRAME_RATE);
- X while(count)
- X {
- ***************
- *** 78,88 ****
- X break;
- X }
- X /*{{{ calc distances?*/
- ! if(den != monster.den)
- X {
- ! den = monster.den;
- X monster.list[0].cell.y = 0;
- ! monster.list[0].cell.x = 4 + den;
- X calc_distances();
- X monster.list[0].cell.y = PLAYER_START_Y;
- X monster.list[0].cell.x = PLAYER_START_X;
- --- 239,251 ----
- X break;
- X }
- X /*{{{ calc distances?*/
- ! if(den && monster.normals != monster.monsters)
- X {
- ! monster.normals = monster.monsters;
- ! monster.den = choose_direction(den);
- ! den ^= 1 << monster.den;
- X monster.list[0].cell.y = 0;
- ! monster.list[0].cell.x = 4 + monster.den;
- X calc_distances();
- X monster.list[0].cell.y = PLAYER_START_Y;
- X monster.list[0].cell.x = PLAYER_START_X;
- ***************
- *** 89,95 ****
- X }
- X /*}}}*/
- X move_mris();
- ! if(monster.den == 4)
- X count--;
- X if(player.button)
- X count = 0;
- --- 252,258 ----
- X }
- X /*}}}*/
- X move_mris();
- ! if(monster.monsters == 1)
- X count--;
- X if(player.button)
- X count = 0;
- ***************
- *** 106,111 ****
- --- 269,275 ----
- X unsigned quit;
- X unsigned count;
- X
- + global.state = MODE_DEMO;
- X monster.monsters = 0;
- X apple.apples = 0;
- X player.ball.state = 0;
- ***************
- *** 115,140 ****
- X /*{{{ put on M R I S*/
- X {
- X unsigned missing;
- - unsigned index;
- X int x, y;
- !
- X missing = random() & 3;
- ! for(index = 4; index--;)
- ! {
- ! SPRITE *sptr;
- !
- ! sptr = &sprites[SPRITE_MRIS + index + 4 * (index == missing)];
- ! XCopyArea(display.display, sptr->mask, display.back, GCN(GC_MASK),
- ! 0, 0, CELL_WIDTH, CELL_HEIGHT,
- ! PIXELX(4 + index, 0), PIXELY(-1, 0));
- ! XCopyArea(display.display, sptr->image, display.back, GCN(GC_OR),
- ! 0, 0, CELL_WIDTH, CELL_HEIGHT,
- ! PIXELX(4 + index, 0), PIXELY(-1, 0));
- ! }
- X y = random() % (CELLS_DOWN + 2) * (CELL_HEIGHT + GAP_HEIGHT);
- X x = random() & 1 ? CELLS_ACROSS * (CELL_WIDTH + GAP_WIDTH) :
- X -CELLS_ACROSS * (CELL_WIDTH + GAP_WIDTH);
- ! spawn_monster(SPRITE_MRIS + missing, 0, 0, 4 + missing, -1, x, y);
- X }
- X /*}}}*/
- X XCopyArea(display.display, display.back, display.copy, GCN(GC_COPY),
- --- 279,292 ----
- X /*{{{ put on M R I S*/
- X {
- X unsigned missing;
- X int x, y;
- !
- X missing = random() & 3;
- ! back_mris((unsigned)(1 << missing));
- X y = random() % (CELLS_DOWN + 2) * (CELL_HEIGHT + GAP_HEIGHT);
- X x = random() & 1 ? CELLS_ACROSS * (CELL_WIDTH + GAP_WIDTH) :
- X -CELLS_ACROSS * (CELL_WIDTH + GAP_WIDTH);
- ! spawn_monster(SPRITE_MRIS + missing, 0, 0, 4 + (int)missing, -1, x, y);
- X }
- X /*}}}*/
- X XCopyArea(display.display, display.back, display.copy, GCN(GC_COPY),
- ***************
- *** 141,205 ****
- X 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
- X /*{{{ put on the title text*/
- X {
- ! char const **tptr;
- ! unsigned length;
- X unsigned index;
- X unsigned gnome;
- !
- X gnome = 0;
- ! for(tptr = title_text, index = 0; *tptr; tptr++, index++)
- ! {
- ! length = strlen(*tptr);
- ! if(length)
- ! {
- ! TEXT info;
- ! char const *ptr;
- ! unsigned shift;
- !
- ! ptr = strchr(*tptr, '-');
- ! if(ptr)
- ! {
- ! text_size(*tptr, ptr - *tptr + 1, &info);
- ! shift = info.width;
- ! }
- ! else
- ! shift = 0;
- ! text_size(*tptr, length, &info);
- ! XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- ! WINDOW_WIDTH / 2 - (shift ? shift : info.width / 2),
- ! PIXELY(index, CELL_HEIGHT / 2) +
- ! (info.ascent - info.descent) / 2, *tptr, length);
- ! /*{{{ spawn monster*/
- X {
- ! unsigned type;
- ! int cellx;
- ! int offsetx;
- !
- ! do
- ! {
- ! type = random() & 3;
- ! if(type & 2)
- ! type++;
- ! }
- ! while(type == 4 && gnome);
- ! if(type == 4)
- ! gnome = 1;
- ! if(random() & 1)
- ! {
- ! cellx = -2;
- ! offsetx = (CELLS_ACROSS + 2) * (CELL_WIDTH + GAP_WIDTH);
- ! }
- ! else
- ! {
- ! cellx = CELLS_ACROSS + 1;
- ! offsetx = -(CELLS_ACROSS + 5) * (CELL_WIDTH + GAP_WIDTH);
- ! }
- ! offsetx += CELL_WIDTH * (random() & 3);
- ! spawn_monster(type, 0, 0, cellx, index, offsetx, 0);
- X }
- ! /*}}}*/
- ! }
- ! }
- X }
- X /*}}}*/
- X count = DISPLAY_HOLD;
- --- 293,334 ----
- X 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
- X /*{{{ put on the title text*/
- X {
- ! TITLE const *tptr;
- X unsigned index;
- X unsigned gnome;
- !
- X gnome = 0;
- ! for(tptr = title_text, index = 0; tptr->text; tptr++, index++)
- ! if(back_title(tptr, index, 0))
- ! /*{{{ spawn monster*/
- ! {
- ! unsigned type;
- ! int cellx;
- ! int offsetx;
- !
- ! do
- X {
- ! type = random() & 3;
- ! if(type & 2)
- ! type++;
- X }
- ! while(type == 4 && gnome);
- ! if(type == 4)
- ! gnome = 1;
- ! if(random() & 1)
- ! {
- ! cellx = -2;
- ! offsetx = (CELLS_ACROSS + 2) * (CELL_WIDTH + GAP_WIDTH);
- ! }
- ! else
- ! {
- ! cellx = CELLS_ACROSS + 1;
- ! offsetx = -(CELLS_ACROSS + 5) * (CELL_WIDTH + GAP_WIDTH);
- ! }
- ! offsetx += CELL_WIDTH * (random() & 3);
- ! spawn_monster(type, 0, 0, cellx, (int)index, offsetx, 0);
- ! }
- ! /*}}}*/
- X }
- X /*}}}*/
- X count = DISPLAY_HOLD;
- ***************
- *** 213,225 ****
- X player.button = 1;
- X break;
- X }
- ! if(!move_demo())
- X count--;
- X if(player.button)
- X count = 0;
- X show_updates();
- X timer_wait();
- ! }
- X timer_stop();
- X return quit;
- X }
- --- 342,354 ----
- X player.button = 1;
- X break;
- X }
- ! if(!move_demo(MONSTER_CYCLES))
- X count--;
- X if(player.button)
- X count = 0;
- X show_updates();
- X timer_wait();
- ! }
- X timer_stop();
- X return quit;
- X }
- ***************
- *** 227,236 ****
- X /*{{{ int demo_mode()*/
- X extern int demo_mode FUNCARGVOID
- X {
- X unsigned quit;
- X
- - global.state = 6;
- - player.keyboard = 0;
- X player.button = 0;
- X player.pressed = 0;
- X player.old_ball.state = 0;
- --- 356,364 ----
- X /*{{{ int demo_mode()*/
- X extern int demo_mode FUNCARGVOID
- X {
- + static int subsequent = 0;
- X unsigned quit;
- X
- X player.button = 0;
- X player.pressed = 0;
- X player.old_ball.state = 0;
- ***************
- *** 237,251 ****
- --- 365,498 ----
- X quit = 0;
- X while(!player.button)
- X {
- + if(!player.button && subsequent)
- + quit = demo_score();
- + subsequent = high_scores[0].score;
- X if(!player.button)
- X quit = demo_keys();
- X if(!player.button)
- X quit = demo_board();
- + if(player.button == 2)
- + {
- + def_keys();
- + player.button = 0;
- + }
- X }
- X player.button = 0;
- X return quit;
- X }
- X /*}}}*/
- + /*{{{ int demo_score()*/
- + static int demo_score FUNCARGVOID
- + {
- + unsigned quit;
- + unsigned count;
- +
- + #if HIGH_SCORE_FILE
- + if(score_file)
- + {
- + FILE *stream;
- +
- + stream = fopen(score_file, "r+");
- + if(stream)
- + {
- + if(file_changed(stream))
- + {
- + get_lock(stream);
- + if(merge_scores(stream))
- + write_scores(stream);
- + get_unlock(stream);
- + }
- + fclose(stream);
- + }
- + }
- + #endif /* HIGH_SCORE_FILE */
- + global.state = MODE_DEMO;
- + monster.monsters = 0;
- + apple.apples = 0;
- + player.ball.state = 0;
- + player.ball.count = 8;
- + XFillRectangle(display.display, display.back, GCN(GC_CLEAR),
- + 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
- + back_mris(0);
- + /*{{{ heading*/
- + {
- + char const *string = " Score Screen Name";
- + unsigned length;
- +
- + length = strlen(string);
- + XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- + PIXELX(0, 0), PIXELY(0, CELL_HEIGHT / 2) + font.center,
- + string, (int)length);
- + if(my_score.score)
- + back_score(&my_score, CELLS_DOWN);
- + }
- + /*}}}*/
- + XCopyArea(display.display, display.back, display.copy, GCN(GC_COPY),
- + 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 0);
- + /*{{{ put on the scores*/
- + {
- + HIGH_SCORE const *sptr;
- + unsigned index;
- +
- + for(sptr = high_scores, index = 0;
- + sptr->score && index != HIGH_SCORES; sptr++, index++)
- + back_score(sptr, 1 + index);
- + spawn_monster(4, 3, 3, 0, (int)index + 1,
- + -2 * (CELL_WIDTH + GAP_WIDTH), 0);
- + }
- + /*}}}*/
- + count = DISPLAY_HOLD;
- + refresh_window();
- + timer_start(SCORE_RATE);
- + while(count)
- + {
- + quit = process_xevents(0);
- + if(quit)
- + {
- + player.button = 1;
- + break;
- + }
- + if(!move_demo(MONSTER_CYCLES / 2))
- + count--;
- + /*{{{ turn player?*/
- + if(monster.list[0].offset.x == 0 &&
- + monster.list[0].offset.y == 0 && monster.list[0].cell.y > 0)
- + {
- + if(monster.list[0].dir == 0)
- + {
- + if(monster.list[0].cell.x)
- + {
- + monster.list[0].cell.x = 0;
- + monster.list[0].offset.x = (CELLS_ACROSS - 1) * (CELL_WIDTH + GAP_WIDTH);
- + }
- + else
- + {
- + monster.list[0].cell.x = CELLS_ACROSS - 1;
- + monster.list[0].offset.x = -(CELLS_ACROSS - 1) * (CELL_WIDTH + GAP_WIDTH);
- + }
- + }
- + else if(monster.list[0].cell.y != 1)
- + {
- + monster.list[0].cell.y--;
- + monster.list[0].offset.y = CELL_HEIGHT + GAP_HEIGHT;
- + }
- + else
- + {
- + monster.list[0].cell.y = -2;
- + monster.list[0].offset.y = 3 * (CELL_HEIGHT + GAP_HEIGHT);
- + }
- + }
- + /*}}}*/
- + if(player.button)
- + count = 0;
- + show_updates();
- + timer_wait();
- + }
- + timer_stop();
- + return quit;
- + }
- + /*}}}*/
- X /*{{{ void extra_life()*/
- X extern void extra_life FUNCARGVOID
- X /* does the extra life senario */
- ***************
- *** 259,277 ****
- X /*{{{ display some text*/
- X {
- X unsigned line;
- - TEXT info;
- X char const **tptr;
- X unsigned length;
- !
- X line = BORDER_TOP + CELL_HEIGHT;
- X for(tptr = text; *tptr; tptr++)
- X {
- X length = strlen(*tptr);
- - text_size(*tptr, length, &info);
- X XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- ! WINDOW_WIDTH / 2 - info.width / 2,
- ! line + info.ascent, *tptr, length);
- ! line += info.ascent + info.descent;
- X }
- X }
- X /*}}}*/
- --- 506,522 ----
- X /*{{{ display some text*/
- X {
- X unsigned line;
- X char const **tptr;
- X unsigned length;
- !
- X line = BORDER_TOP + CELL_HEIGHT;
- X for(tptr = text; *tptr; tptr++)
- X {
- X length = strlen(*tptr);
- X XDrawImageString(display.display, display.back, GCN(GC_TEXT),
- ! WINDOW_WIDTH / 2 - (int)(length * font.width / 2),
- ! (int)line + font.ascent, *tptr, (int)length);
- ! line += font.ascent + font.descent;
- X }
- X }
- X /*}}}*/
- ***************
- *** 283,298 ****
- X /*{{{ add m r i s*/
- X {
- X unsigned i;
- X for(i = 4; i--;)
- X {
- X XCopyArea(display.display, sprites[SPRITE_MRIS + 4 + i].mask,
- X display.back, GCN(GC_MASK), 0, 0, CELL_WIDTH, CELL_HEIGHT,
- ! PIXELX(CELLS_ACROSS / 2 - 2 + i, 0), PIXELY(2, 0));
- X XCopyArea(display.display, sprites[SPRITE_MRIS + 4 + i].image,
- X display.back, GCN(GC_OR), 0, 0, CELL_WIDTH, CELL_HEIGHT,
- ! PIXELX(CELLS_ACROSS / 2 - 2 + i, 0), PIXELY(2, 0));
- SHAR_EOF
- true || echo 'restore of patch.v2.00 failed'
- fi
- echo 'End of part 2'
- echo 'File patch.v2.00 is continued in part 3'
- echo 3 > _shar_seq_.tmp
- exit 0
- --
- Senior Systems Scientist mail: dcmartin@msi.com
- Molecular Simulations, Inc. uucp: uunet!dcmartin
- 796 North Pastoria Avenue at&t: 408/522-9236
- Sunnyvale, California 94086 fax: 408/732-0831
-