void doframe () { long frameptr, pitch, xdim, ydim; startdirectdraw(&frameptr,&pitch,&xdim,&ydim); voxsetframebuffer(frameptr,pitch,xdim,ydim); setcamera(&ipos,&istr,&ihei,&ifor,xdim*.5,ydim*.5,xdim*.5); opticast(); drawsprite(&desklamp); stopdirectdraw(); nextpage(); readkeyboard(); if (keystatus[1]) quitloop(); }
void reset_game() { unsigned char i; do_halt(); do_port254(0); readkeyboard(); cp((unsigned char*)0x4000, 6912, (char*)0x5b00); for (i = 0; i < 64; i++) setcolor(i,176/8,0x5); for (i = 0; i < 32; i++) setcolor(i,168/8,0x1); setup_mines(); framecounter = 500; first = 1; found = 0; }
void do_key(char key) { short i, j; while (ANYKEY()) { readkeyboard(); do_halt(); } if (minefield[key]) { // boom drawstring("Oops, you appear to have stepped", 0, 176); drawstring("on a rotten egg and died. ", 0, 184); for (j = 0; j < 20; j++) { playfx(1); for (i = 0; i < 32*21; i++) { if (xorshift8() > 220) *((char*)0x4000+192*32+i) = xorshift8() & 7; } for (i = 0; i < 51; i++) xorshift8(); do_halt(); } reset_game(); } else { drawval(key, count_mines(key)); if (minefound[key] == 0) { minefound[key] = 1; found++; if (found == total) { framecounter = 0; drawstring("Congratulations!! You did it! ", 0, 176); drawstring("Step on a mine for a new game. ", 0, 184); } } playfx(0); } }
void main() { // unsigned char i; y8 = 1; reset_game(); /* for (i = 0; i < 40; i++) if (minefield[i] == 0) drawval(i, count_mines(i)); */ while(1) { drawscore(); readkeyboard(); if (KEYDOWN(1)) do_key(0); if (KEYDOWN(2)) do_key(1); if (KEYDOWN(3)) do_key(2); if (KEYDOWN(4)) do_key(3); if (KEYDOWN(5)) do_key(4); if (KEYDOWN(6)) do_key(5); if (KEYDOWN(7)) do_key(6); if (KEYDOWN(8)) do_key(7); if (KEYDOWN(9)) do_key(8); if (KEYDOWN(0)) do_key(9); if (KEYDOWN(Q)) do_key(10); if (KEYDOWN(W)) do_key(11); if (KEYDOWN(E)) do_key(12); if (KEYDOWN(R)) do_key(13); if (KEYDOWN(T)) do_key(14); if (KEYDOWN(Y)) do_key(15); if (KEYDOWN(U)) do_key(16); if (KEYDOWN(I)) do_key(17); if (KEYDOWN(O)) do_key(18); if (KEYDOWN(P)) do_key(19); if (KEYDOWN(A)) do_key(20); if (KEYDOWN(S)) do_key(21); if (KEYDOWN(D)) do_key(22); if (KEYDOWN(F)) do_key(23); if (KEYDOWN(G)) do_key(24); if (KEYDOWN(H)) do_key(25); if (KEYDOWN(J)) do_key(26); if (KEYDOWN(K)) do_key(27); if (KEYDOWN(L)) do_key(28); if (KEYDOWN(ENTER)) do_key(29); if (KEYDOWN(SHIFT)) do_key(30); if (KEYDOWN(Z)) do_key(31); if (KEYDOWN(X)) do_key(32); if (KEYDOWN(C)) do_key(33); if (KEYDOWN(V)) do_key(34); if (KEYDOWN(B)) do_key(35); if (KEYDOWN(N)) do_key(36); if (KEYDOWN(M)) do_key(37); if (KEYDOWN(SYM)) do_key(38); if (KEYDOWN(SPACE)) do_key(39); framecounter++; do_halt(); if (framecounter > 500) { framecounter = 0; // 12345678901234567890123456789012 switch (infoloop) { case 0: drawstring("Welcome to \"Rotten Egg Mines\" ", 0, 176); drawstring("By Jari Komppa http://iki.fi/sol", 0, 184); break; case 1: drawstring("How to play: ", 0, 176); drawstring("Press keys to find mines. ", 0, 184); break; case 2: case 4: case 6: case 8: drawstring(". . . . . . . . . . . . . . . . ", 0, 176); drawstring(" . . . . . . . . . . . . . . . .", 0, 184); break; case 3: drawstring("Sound effects played via ", 0, 176); drawstring("BeepFX by Shiru ", 0, 184); break; case 5: drawstring("Art made by using the ", 0, 176); drawstring("Image Spectrumizer ", 0, 184); break; case 7: drawstring("Sources can be found at ", 0, 176); drawstring("github.com/jarikomppa/speccy ", 0, 184); break; case 12: drawstring(" [ . . . . . . . . . . .] ", 0, 176); drawstring(" [. . . . . . . . . . . ] ", 0, 184); break; case 13: drawstring(" [ . . . . . . .] ", 0, 176); drawstring(" [. . . . . . . ] ", 0, 184); break; case 14: drawstring(" [ . . .] ", 0, 176); drawstring(" [. . . ] ", 0, 184); break; case 15: drawstring(" ", 0, 176); drawstring(" ", 0, 184); break; } infoloop++; if (infoloop == 16) infoloop = 0; } } }