Annotation of src/corr7smk.c, revision 1.1
1.1 ! root 1: /***************************************************************************
! 2: * CORR7SMK.C - Corridor 7 SMACKER routines
! 3: *
! 4: * 06/07/96 Les Bird
! 5: ***************************************************************************/
! 6:
! 7: #include "icorp.h"
! 8: #include "smack.h"
! 9: #include "svga.h"
! 10: #include <memcheck.h>
! 11:
! 12: #define MAXRADBUFFS 64
! 13: #define SMACKTILE 4093
! 14:
! 15: #pragma pack(1);
! 16:
! 17: char smackPalette[768];
! 18:
! 19: Smack *smk;
! 20:
! 21: struct radbuftype {
! 22: long cache_ptr;
! 23: long cache_length;
! 24: char cache_lock;
! 25: };
! 26:
! 27: struct radbuftype radbuf[MAXRADBUFFS];
! 28:
! 29: extern
! 30: HANDLE hDIGIDriver;
! 31:
! 32: RCFUNC
! 33: void PTR4 *RADLINK
! 34: radmalloc(u32 numbytes)
! 35: {
! 36: int i;
! 37:
! 38: for (i = 0; i < MAXRADBUFFS; i++) {
! 39: if (radbuf[i].cache_ptr == 0L) {
! 40: break;
! 41: }
! 42: }
! 43: if (i == MAXRADBUFFS) {
! 44: crash("no more radbuff pointers");
! 45: }
! 46: radbuf[i].cache_lock = 200;
! 47: radbuf[i].cache_length = numbytes;
! 48: allocache(&(radbuf[i].cache_ptr), radbuf[i].cache_length,
! 49: &(radbuf[i].cache_lock));
! 50: if (radbuf[i].cache_ptr == 0L) {
! 51: crash("radmalloc failed");
! 52: }
! 53: return((void PTR4 *) radbuf[i].cache_ptr);
! 54: }
! 55:
! 56: RCFUNC
! 57: void RADLINK
! 58: radfree(void PTR4 * ptr)
! 59: {
! 60: int i;
! 61:
! 62: for (i = 0; i < MAXRADBUFFS; i++) {
! 63: if (radbuf[i].cache_ptr == (long) ptr) {
! 64: radbuf[i].cache_lock = 1;
! 65: break;
! 66: }
! 67: }
! 68: }
! 69:
! 70: void
! 71: SMK_init(void)
! 72: {
! 73: #if 0
! 74: if (hDIGIDriver != -1) {
! 75: SmackSoundUseSOS4(hDIGIDriver,TMR_getSecondTics(1));
! 76: }
! 77: else {
! 78: SmackSoundUseSOS4(0,0);
! 79: }
! 80: #endif
! 81: }
! 82:
! 83: void
! 84: SMK_loadPalette(char *pal)
! 85: {
! 86: memmove(smackPalette,pal,sizeof(smackPalette));
! 87: }
! 88:
! 89: void
! 90: SMK_setPalette(void)
! 91: {
! 92: GFX_setPalette(smackPalette);
! 93: }
! 94:
! 95: void
! 96: SMK_playFlic(char *path)
! 97: {
! 98: #if 0
! 99: int frames=0,i;
! 100:
! 101: if (access(path,F_OK) != 0) {
! 102: return;
! 103: }
! 104: if (!noSoundFlag) {
! 105: smk=SmackOpen(path,SMACKTRACKS,SMACKAUTOEXTRA);
! 106: }
! 107: else {
! 108: smk=SmackOpen(path,0,SMACKAUTOEXTRA);
! 109: }
! 110: if (smk) {
! 111: GFX_fadeOut(255); // make sure game palette is faded
! 112: walock[SMACKTILE]=200;
! 113: allocache(&waloff[SMACKTILE],320L*200L,&walock[SMACKTILE]);
! 114: tilesizx[SMACKTILE]=200;
! 115: tilesizy[SMACKTILE]=320;
! 116: SmackToBuffer(smk,0L,0L,320L,200L,(void *)waloff[SMACKTILE],0);
! 117: keystatus[1]=0;
! 118: keystatus[28]=0;
! 119: keystatus[57]=0;
! 120: while (1) {
! 121: if (smk->NewPalette) {
! 122: SMK_loadPalette(smk->Palette);
! 123: }
! 124: SmackDoFrame(smk);
! 125: SmackNextFrame(smk);
! 126: rotatesprite(320L<<15,200L<<15,65536L,512,SMACKTILE,0,0,2+4+64,
! 127: 0L,0L,xdim-1L,ydim-1L);
! 128: nextpage();
! 129: SMK_setPalette();
! 130: while (SmackWait(smk)) {
! 131: if (keystatus[1] || keystatus[57] || keystatus[28]) {
! 132: goto done;
! 133: }
! 134: }
! 135: if (keystatus[1] || keystatus[57] || keystatus[28]) {
! 136: goto done;
! 137: }
! 138: frames++;
! 139: if (frames == smk->Frames) {
! 140: goto done;
! 141: }
! 142: }
! 143: done:
! 144: walock[SMACKTILE]=1;
! 145: SmackClose(smk);
! 146: for (i = 0 ; i < MAXRADBUFFS ; i++) {
! 147: radbuf[i].cache_lock=1;
! 148: }
! 149: }
! 150: #endif
! 151: }
! 152:
unix.superglobalmegacorp.com