0001: #include <stdio.h>
0002: #include <stdio.h>
0003: #include <stdlib.h>
0004: #include <input.h>
0005: #include <DATlib.h>
0006: #include "externs.h"
0007:
0008: #define FRONT_START_X 157
0009: #define FRONT_START_Y 0
0010: #define FRONT_MIN_X 8
0011: #define FRONT_MAX_X 624
0012: #define FRONT_MIN_Y 0
0013: #define FRONT_MAX_Y 0
0014:
0015: #define BACK_MIN_X 8
0016: #define BACK_MAX_X 149
0017: #define BACK_MIN_Y 5
0018: #define BACK_MAX_Y 8
0019:
0020: int action=0;
0021: int choice=0;
0022: bool button_available;
0023: bool text_visible;
0024:
0025: typedef struct bkp_ram_info {
0026: WORD debug_dips;
0027: BYTE stuff[254];
0028: //256 bytes
0029: } bkp_ram_info;
0030:
0031: bkp_ram_info bkp_data;
0032:
0033: extern uint _end;
0034: BYTE p1,p2,ps,p1e,p2e;
0035: uint callBackCounter;
0036:
0037: //fix palettes for text
0038: static const ushort fixPalettes[]= {
0039: 0x8000, 0xefb8, 0x0222, 0x5fa7, 0xde85, 0x2c74, 0x2a52, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0040: 0x8000, 0xebea, 0x0041, 0xa9d8, 0x57c7, 0xf6b5, 0x43a4, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0041: 0x8000, 0x014c, 0x9113, 0xb15e, 0x317f, 0x119f, 0x11af, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0042: 0x8000, 0xeb21, 0x0111, 0xee21, 0x6f31, 0x6f51, 0x6f61, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0043: 0x8000, 0xed31, 0xc311, 0xee51, 0x4f81, 0x4fa1, 0x4fc1, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0044: 0x8000, 0xbad3, 0x0111, 0x09c0, 0xe7b0, 0xc580, 0xe250, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0045: 0x8000, 0xefb8, 0x0111, 0xde96, 0x3c75, 0x2950, 0x4720, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
0046: 0x8000, 0x8444, 0x0111, 0xf555, 0xf666, 0x7777, 0x8888, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000 };
0047:
0048: #define CLIPPING 5
0049:
0050: void scrollerInitClipped(scroller *s, scrollerInfo *si, ushort baseSprite, ushort basePalette, short posX, short posY, ushort clipping) {
0051: ushort i,addr,pos;
0052:
0053: scrollerInit(s,si,baseSprite,basePalette,posX,posY);
0054: addr=VRAM_POSY_ADDR(baseSprite);
0055: //pos=((YSHIFT-(0-posY))<<7)|(clipping&0x3f);
0056: pos=VRAM_POSY(-posY,SPR_UNLINK,clipping);
0057: for(i=0;i<21;i++)
0058: SC234Put(addr++,pos);
0059: }
0060:
0061: void scrollerSetPosClipped(scroller *s, short toX, short toY, ushort clipping) {
0062: ushort i,addr,pos;
0063:
0064: if(s->scrlPosY!=toY) { //Y moved ?
0065: scrollerSetPos(s,toX,toY);
0066:
0067: addr=VRAM_POSY_ADDR(s->baseSprite);
0068: //pos=((YSHIFT-(0-toY))<<7)|(clipping&0x3f);
0069: pos=VRAM_POSY(-toY,SPR_UNLINK,clipping);
0070: for(i=0;i<21;i++)
0071: SC234Put(addr++,pos);
0072: //s->scrlPosY=toY;
0073: } else scrollerSetPos(s,toX,toY);
0074: }
0075:
0076: void sortSprites(aSprite *list[], int count) {
0077: //insertion sort
0078: int x,y;
0079: aSprite *tmp;
0080:
0081: for(x=1;x<count;x++) {
0082: y=x;
0083: while(y>0 && (list[y]->posY < list[y-1]->posY)) {
0084: tmp=list[y];
0085: list[y]=list[y-1];
0086: list[y-1]=tmp;
0087: y--;
0088: }
0089: }
0090: }
0091:
0092: #define POOL_MODE
0093: #define LOTS
0094:
0095: const char sinTable[]={ 32,34,35,37,38,40,41,43,44,46,47,48,50,51,52,53,
0096: 55,56,57,58,59,59,60,61,62,62,63,63,63,64,64,64,
0097: 64,64,64,64,63,63,63,62,62,61,60,59,59,58,57,56,
0098: 55,53,52,51,50,48,47,46,44,43,41,40,38,37,35,34,
0099: 32,30,29,27,26,24,23,21,20,18,17,16,14,13,12,11,
0100: 9,8,7,6,5,5,4,3,2,2,1,1,1,0,0,0,
0101: 0,0,0,0,1,1,1,2,2,3,4,5,5,6,7,8,
0102: 9,11,12,13,14,16,17,18,20,21,23,24,26,27,29,30};
0103:
0104: #define SCROLLSPEED 1.06
0105: void rasterScrollDemo() {
0106: BYTE p1,ps;
0107: pictureInfo frontLayerInfo, backLayerInfo;
0108: picture frontLayer, backLayer;
0109: short posY=-192;
0110: ushort rasterData0[256],rasterData1[256];
0111: ushort *rasterData;
0112: float scrollAcc;
0113: int scrollPos[34];
0114: int scrollValues[34];
0115: ushort backAddr=0x8401;
0116: ushort frontAddr=0x8421;
0117: int x,y;
0118: short frontPosX[13],backPosX[13];
0119: ushort skipY;
0120: ushort firstLine;
0121: ushort zeroval;
0122:
0123: //layers were merged to save up tiles/palettes
0124: frontLayerInfo.stripSize=tf4layers.stripSize;
0125: backLayerInfo.stripSize=tf4layers.stripSize;
0126: frontLayerInfo.tileWidth=32;
0127: backLayerInfo.tileWidth=32;
0128: frontLayerInfo.tileHeight=tf4layers.tileHeight;
0129: backLayerInfo.tileHeight=tf4layers.tileHeight;
0130: //only using first map
0131: frontLayerInfo.maps[0]=tf4layers.maps[0];
0132: backLayerInfo.maps[0]=tf4layers.maps[0]+(tf4layers.stripSize*(32/2)); //bytesize but ushort* declaration, so /2
0133:
0134:
0135: clearFixLayer();
0136: initGfx();
0137: jobMeterSetup(true);
0138: loadTIirq(TI_MODE_DUAL_DATA);
0139: TInextTable=0;
0140:
0141: scrollValues[0]=1024;
0142: scrollPos[0]=0;
0143: scrollAcc=1024;
0144: for(x=1;x<34;x++) {
0145: scrollAcc*=SCROLLSPEED;
0146: scrollValues[x]=(int)(scrollAcc+0.5);
0147: scrollPos[x]=0;
0148: }
0149:
0150: pictureInit(&backLayer, &backLayerInfo,1,16,0,0,FLIP_NONE);
0151: pictureInit(&frontLayer, &frontLayerInfo,33,16,0,0,FLIP_NONE);
0152: palJobPut(16,tf4layers.palInfo->count,tf4layers.palInfo->data);
0153:
0154: backgroundColor(0x38db);
0155: fixPrint(0,1,0,0," ");
0156: fixPrint(0,30,0,0," ");
0157:
0158: fixPrint(2,3,4,3,"1P \x12\x13: Scroll Up/Down");
0159: fixPrint(2,4,4,3,"1P A+\x12\x13: Adjust timer (line)");
0160: fixPrint(2,5,4,3,"1P A+\x10\x11: Adjust timer (unit)");
0161:
0162: zeroval=TI_ZERO;
0163:
0164: while(1) {
0165: SCClose();
0166: waitVBlank();
0167:
0168: while((volMEMWORD(0x3c0006)>>7)!=0x120); //line 16
0169: jobMeterColor(JOB_BLUE);
0170:
0171: p1=volMEMBYTE(P1_CURRENT);
0172: p1e=volMEMBYTE(P1_EDGE);
0173: ps=volMEMBYTE(PS_CURRENT);
0174:
0175: if(ps&P1_START) {
0176: clearSprites(1, 64);
0177: TInextTable=0;
0178: SCClose();
0179: waitVBlank();
0180: unloadTIirq();
0181: return;
0182: }
0183:
0184: fixPrintf2(2,7,5,3,"TIbase: %d (0x%04x) ",zeroval,zeroval);
0185:
0186: if(p1&JOY_A) {
0187: if(p1e&JOY_UP) zeroval-=384;
0188: if(p1e&JOY_DOWN) zeroval+=384;
0189: if(p1&JOY_RIGHT) zeroval++;
0190: if(p1&JOY_LEFT) zeroval--;
0191: } else {
0192: if(p1&JOY_UP) if(posY<0) posY++;
0193: if(p1&JOY_DOWN) if(posY>-288) posY--;
0194: }
0195:
0196: //update scroll values
0197: for(x=0;x<34;x++) scrollPos[x]+=scrollValues[x];
0198: frontPosX[0]= (short)(0-(scrollPos[32]>>3));
0199: frontPosX[1]=frontPosX[2]= (short)(0-(scrollPos[24]>>3));
0200: frontPosX[3]=frontPosX[4]= (short)(0-(scrollPos[16]>>3));
0201: frontPosX[5]= (short)(0-(scrollPos[8]>>3));
0202: frontPosX[6]=frontPosX[7]=frontPosX[8]= (short)(0-(scrollPos[0]>>3));
0203: frontPosX[9]=frontPosX[10]=frontPosX[11]= (short)(0-(scrollPos[1]>>3));
0204: frontPosX[12]= (short)(0-(scrollPos[32]>>3));
0205:
0206: backPosX[0]= (short)(0-(scrollPos[24]>>3));
0207: backPosX[1]=backPosX[2]= (short)(0-(scrollPos[16]>>3));
0208: backPosX[3]=backPosX[4]= (short)(0-(scrollPos[8]>>3));
0209: backPosX[5]= (short)(0-(scrollPos[0]>>3));
0210: backPosX[6]=backPosX[7]=backPosX[8]= (short)(0-(scrollPos[0]>>4));
0211: backPosX[9]=backPosX[10]=backPosX[11]= (short)(0-(scrollPos[0]>>3));
0212: backPosX[12]= (short)(0-(scrollPos[1]>>3));
0213:
0214: skipY=0-posY;
0215: x=skipY>>5;
0216: firstLine=32-(skipY&0x1f);
0217:
0218: //TIbase=TI_ZERO+(384*firstLine); //timing to first raster line
0219: TIbase=zeroval+(384*firstLine); //timing to first raster line
0220: TInextTable=(TInextTable==rasterData0)?rasterData1:rasterData0;
0221: rasterData=TInextTable;
0222:
0223: pictureSetPos(&frontLayer,frontPosX[x]>>7,posY);
0224: pictureSetPos(&backLayer,backPosX[x]>>7,posY);
0225: //might need to force the update if base scroll position didn't change
0226: SC234Put(frontAddr,frontPosX[x]);
0227: SC234Put(backAddr,backPosX[x]);
0228:
0229: if(skipY<164) { //can we see water?
0230: TIreload=384*32; //nope, 32px chunks
0231: for(x++;x<13;x++) {
0232: *rasterData++=frontAddr;
0233: *rasterData++=frontPosX[x];
0234: *rasterData++=backAddr;
0235: *rasterData++=backPosX[x];
0236: firstLine+=32;
0237: if(firstLine>=224) break;
0238: }
0239: } else {
0240: TIreload=384*4; //yup, 4px chunks
0241: for(x++;x<12;x++) {
0242: for(y=0;y<8;y++) {
0243: *rasterData++=frontAddr;
0244: *rasterData++=frontPosX[x];
0245: *rasterData++=backAddr;
0246: *rasterData++=backPosX[x];
0247: }
0248: firstLine+=32;
0249: }
0250: x=1;
0251: while(firstLine<224) {
0252: *rasterData++=frontAddr;
0253: *rasterData++=frontPosX[12];
0254: *rasterData++=backAddr;
0255: *rasterData++=0-(scrollPos[x++]>>3);
0256: firstLine+=4;
0257: }
0258: }
0259: *rasterData++=0x0000;
0260: *rasterData++=0x0000;
0261: jobMeterColor(JOB_GREEN);
0262: SCClose();
0263: }
0264: }
0265:
0266: void tempTests() {
0267: int x=0;
0268: int y=0;
0269: int c;
0270: uint *ptr;
0271: scroller scroll;
0272:
0273: backgroundColor(0x7bbb);
0274: clearFixLayer();
0275: initGfx();
0276: jobMeterSetup(true);
0277:
0278: scrollerInit(&scroll, &wohd, 1, 16, x, y);
0279: palJobPut(16, wohd.palInfo->count, wohd.palInfo->data);
0280:
0281: //fixPrintf1(2,3,4,3,"0x%06x",&scroll);
0282: //dbg init
0283: scroll.config[23+4]=scroll.config[23+5]=scroll.config[23+6]=scroll.config[23+7]=scroll.config[23+8]=0;
0284:
0285: while(1) {
0286: SCClose();
0287: waitVBlank();
0288:
0289: p1=volMEMBYTE(P1_CURRENT);
0290: p1e=volMEMBYTE(P1_EDGE);
0291: ps=volMEMBYTE(PS_CURRENT);
0292:
0293: if((ps&P1_START)&&(ps&P2_START)) {
0294: clearSprites(1, 21);
0295: SCClose();
0296: waitVBlank();
0297: return;
0298: }
0299:
0300: if(p1&JOY_UP) y--;
0301: if(p1&JOY_DOWN) y++;
0302: if(p1&JOY_LEFT) x--;
0303: if(p1&JOY_RIGHT) x++;
0304:
0305: while((volMEMWORD(0x3c0006)>>7)!=0x120); //wait raster line 16
0306: jobMeterColor(JOB_BLUE);
0307:
0308: if(p1e&JOY_D)
0309: scrollerInit(&scroll, &wohd, 1, 16, x, y);
0310:
0311: if(p1&JOY_A) scrollerSetPos(&scroll, x, y);
0312:
0313: jobMeterColor(JOB_GREEN);
0314: fixPrintf2(2,4,4,3,"%04d\xff%04d\xff\xff",x,y);
0315:
0316: fixPrintf2(2,6,2,3,"TileIndex: %04d ",scroll.config[23+2]);
0317: fixPrintf2(2,7,2,3,"DataIndex: %04d ",scroll.config[23+1]);
0318: fixPrintf2(2,8,2,3,"DataLength: %04d ",scroll.config[23+3]);
0319: fixPrintf2(2,9,2,3,"DataIndex2: %04d ",scroll.config[23+0]);
0320:
0321: fixPrintf2(2,11,2,3,"TileIndex: %04d ",scroll.config[23+4]);
0322: fixPrintf2(2,12,2,3,"DataIndex: %04d ",scroll.config[23+5]);
0323: fixPrintf2(2,13,2,3,"DataLength: %04d ",scroll.config[23+6]);
0324: fixPrintf2(2,14,2,3,"DataIndex2: %04d ",scroll.config[23+7]);
0325: fixPrintf2(2,15,2,3,"DataLength2:%04d ",scroll.config[23+8]);
0326: fixPrintf2(2,16,2,3,"RefillSize: %04d ",scroll.config[23+6]+scroll.config[23+8]);
0327:
0328: c=0;
0329: ptr=SC1;
0330: while(ptr!=SC1ptr) {
0331: c+=(*ptr++)&0x3fc0000;
0332: ptr++;
0333: }
0334: c>>=18;
0335: fixPrintf1(2,18,2,3,"Jobs: %04d/%04d",(SC234ptr-SC234)>>1,c);
0336: }
0337: }
0338:
0339: //misc fix maps
0340: static const ushort fadeData0[15]={0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x03f0,0x0000};
0341: static const ushort fadeData1[15]={0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x03f1,0x0000};
0342: static const ushort fadeData2[15]={0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x03f2,0x0000};
0343: static const ushort fadeData3[15]={0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x03f3,0x0000};
0344: static const ushort fadeData4[15]={0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x03f4,0x0000};
0345: static const ushort fadeData5[15]={0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x03f5,0x0000};
0346: static const ushort fadeData6[15]={0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x03f6,0x0000};
0347: static const ushort fadeData7[15]={0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x03f7,0x0000};
0348: static const ushort fadeData8[15]={0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x0000};
0349: static const ushort fadeData9[15]={0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x03f9,0x0000};
0350: static const ushort fadeDataA[15]={0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x03fa,0x0000};
0351: static const uint fadeData[11]={(uint)fadeData0,(uint)fadeData1,(uint)fadeData2,(uint)fadeData3,(uint)fadeData4,(uint)fadeData5,(uint)fadeData6,(uint)fadeData7,(uint)fadeData8,(uint)fadeData9,(uint)fadeDataA};
0352: static const ushort logo_95[78]={ 0x0500,0x0501,0x0502,0x0503,0x0504,0x0505,0x0506,0x0507,0x0508,0x0509,0x050a,0x050b,0x0000,
0353: 0x0510,0x0511,0x0512,0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051a,0x051b,0x0000,
0354: 0x0520,0x0521,0x0522,0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052a,0x052b,0x0000,
0355: 0x0530,0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,0x0539,0x053a,0x053b,0x0000,
0356: 0x0540,0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,0x0549,0x054a,0x054b,0x0000,
0357: 0x0550,0x0551,0x0552,0x0553,0x0554,0x0555,0x0556,0x0557,0x0558,0x0559,0x055a,0x055b,0x0000 };
0358: static const ushort logo_96[78]={ 0x0560,0x0561,0x0562,0x0563,0x0564,0x0565,0x0566,0x0567,0x0568,0x0569,0x056a,0x056b,0x0000,
0359: 0x0570,0x0571,0x0572,0x0573,0x0574,0x0575,0x0576,0x0577,0x0578,0x0579,0x057a,0x057b,0x0000,
0360: 0x0580,0x0581,0x0582,0x0583,0x0584,0x0585,0x0586,0x0587,0x0588,0x0589,0x058a,0x058b,0x0000,
0361: 0x0590,0x0591,0x0592,0x0593,0x0594,0x0595,0x0596,0x0597,0x0598,0x0599,0x059a,0x059b,0x0000,
0362: 0x05a0,0x05a1,0x05a2,0x05a3,0x05a4,0x05a5,0x05a6,0x05a7,0x05a8,0x05a9,0x05aa,0x05ab,0x0000,
0363: 0x05b0,0x05b1,0x05b2,0x05b3,0x05b4,0x05b5,0x05b6,0x05b7,0x05b8,0x05b9,0x05ba,0x05bb,0x0000 };
0364: static const ushort logo_97[78]={ 0x0600,0x0601,0x0602,0x0603,0x0604,0x0605,0x0606,0x0607,0x0608,0x0609,0x060a,0x060b,0x0000,
0365: 0x0610,0x0611,0x0612,0x0613,0x0614,0x0615,0x0616,0x0617,0x0618,0x0619,0x061a,0x061b,0x0000,
0366: 0x0620,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,0x0628,0x0629,0x062a,0x062b,0x0000,
0367: 0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x0637,0x0638,0x0639,0x063a,0x063b,0x0000,
0368: 0x0640,0x0641,0x0642,0x0643,0x0644,0x0645,0x0646,0x0647,0x0648,0x0649,0x064a,0x064b,0x0000,
0369: 0x0650,0x0651,0x0652,0x0653,0x0654,0x0655,0x0656,0x0657,0x0658,0x0659,0x065a,0x065b,0x0000 };
0370: static const ushort logo_98[78]={ 0x0660,0x0661,0x0662,0x0663,0x0664,0x0665,0x0666,0x0667,0x0668,0x0669,0x066a,0x066b,0x0000,
0371: 0x0670,0x0671,0x0672,0x0673,0x0674,0x0675,0x0676,0x0677,0x0678,0x0679,0x067a,0x067b,0x0000,
0372: 0x0680,0x0681,0x0682,0x0683,0x0684,0x0685,0x0686,0x0687,0x0688,0x0689,0x068a,0x068b,0x0000,
0373: 0x0690,0x0691,0x0692,0x0693,0x0694,0x0695,0x0696,0x0697,0x0698,0x0699,0x069a,0x069b,0x0000,
0374: 0x06a0,0x06a1,0x06a2,0x06a3,0x06a4,0x06a5,0x06a6,0x06a7,0x06a8,0x06a9,0x06aa,0x06ab,0x0000,
0375: 0x06b0,0x06b1,0x06b2,0x06b3,0x06b4,0x06b5,0x06b6,0x06b7,0x06b8,0x06b9,0x06ba,0x06bb,0x0000 };
0376:
0377: //#define TIME 120
0378:
0379: void Control_Sub()
0380: {
0381: p1=volMEMBYTE(P1_CURRENT);
0382: ps=volMEMBYTE(PS_CURRENT);
0383: p1e=volMEMBYTE(P1_EDGE);
0384:
0385: if(button_available==true)
0386: {
0387: if((p1e&JOY_A)||(p1e&JOY_B)||(p1e&JOY_C))
0388: {
0389: clearFixLayer();
0390: action++;
0391: }
0392: }
0393: }
0394:
0395: /*void Position_Cursor_2_1()
0396: {
0397:
0398: }*/
0399:
0400: void interval(TIME)
0401: {
0402: BYTE textTimer=0;
0403: button_available=false;
0404: text_visible=false;
0405:
0406: while(1)
0407: {
0408: waitVBlank();
0409:
0410: if(++textTimer==TIME)
0411: {
0412: textTimer=0;
0413: button_available=true;
0414: text_visible=true;
0415: }
0416: }
0417: }
0418:
0419: void introducion() {
0420: scroller sc;
0421: short posX=0;
0422: short posY=0;
0423: ushort *data;
0424: ushort flipMode=0;
0425: //BYTE textTimer=0;
0426: button_available=true;
0427:
0428: clearFixLayer();
0429: scrollerInit(&sc,&streamScroll,1,16,0,0);
0430: palJobPut(16, streamScroll.palInfo->count, streamScroll.palInfo->data);
0431:
0432: while(1) {
0433: SCClose();
0434: waitVBlank();
0435: Control_Sub();
0436:
0437: /*if(++textTimer==TIME)
0438: {
0439: textTimer=0;
0440: fixPrintf1(1,26,3,3," ");
0441: }*/
0442:
0443: /*if(ps&P1_START) {
0444: clearSprites(1,21);
0445: SCClose();
0446: waitVBlank();
0447: return;
0448: }*/
0449:
0450: if(action==0)
0451: {
0452: fixPrint(1,3,0,1,"��� ���������� ������� ���� ���.");
0453: fixPrint(1,4,0,1,"������ ���� ���� � �� ��.");
0454: fixPrint(1,5,0,1,"��, ��� � ���! ��-���������� ��������");
0455: fixPrint(1,6,0,1,"���� ����������, ����� � ����������.");
0456: }
0457:
0458: if(action==1)
0459: {
0460: clearSprites(1,21);
0461: scrollerInit(&sc,&BG_SS_ExtCampEntranceSunset,1,16,0,0);
0462: palJobPut(16, BG_SS_ExtCampEntranceSunset.palInfo->count, BG_SS_ExtCampEntranceSunset.palInfo->data);
0463:
0464: fixPrint(1,3,0,1,"� ��� ��������� ���� � ���� ��������");
0465: fixPrint(1,4,0,1,"������, ���� �����������.");
0466: fixPrint(1,5,0,1,"����� ������ � �������������� ����.");
0467: fixPrint(1,6,0,1,"���������� ��������... � ��������");
0468: fixPrint(1,7,0,1,"���������.");
0469: fixPrint(1,8,0,1,"��� ��� ��-������ ��� ����, ��� ��-");
0470: fixPrint(1,9,0,1,"������� - ��� ����� ���-�� ��������");
0471: fixPrint(1,10,0,1,"��� ��� ���������. � ������� ����");
0472: fixPrint(1,11,0,1,"�������������: ��� ���� �������!");
0473: fixPrint(1,12,0,1,"�� ��� �����, ��� ������� �����");
0474: fixPrint(1,13,0,1,"���������� ����, � ����� ��� � �������");
0475: fixPrint(1,14,0,1,"�������! ��������, � ���� ������� ���");
0476: fixPrint(1,15,0,1,"������ � ���������� ��� ��� ������,");
0477: fixPrint(1,16,0,1,"����� � ���������� � ��� �� ������.");
0478: }
0479:
0480: if(action==2)
0481: {
0482: clearSprites(1,21);
0483: scrollerInit(&sc,&BG_ExtSquareSunset,1,16,0,0);
0484: palJobPut(16, BG_ExtSquareSunset.palInfo->count, BG_ExtSquareSunset.palInfo->data);
0485:
0486: fixPrint(1,3,0,1,"��������, �� ��� ��� �������, ��");
0487: fixPrint(1,4,0,1,"��������� �� ��� �������������");
0488: fixPrint(1,5,0,1,"����������. � ��� �� �? ���� � � ����");
0489: fixPrint(1,6,0,1,"��������?");
0490: fixPrint(1,7,0,1,"���-�� �������, ��� ����. � ���� ���");
0491: fixPrint(1,8,0,1,"���������� ���� ����������? � �� �� ��");
0492: fixPrint(1,9,0,1,"�����, ��� �� ��� ������ �� ����. � �");
0493: fixPrint(1,10,0,1,"�� ����� ���-�� ���������, ������ ���");
0494: fixPrint(1,11,0,1,"������ ��� ����� ������.");
0495: fixPrint(1,12,0,1,"�������, ��� � ����� �� �����������,");
0496: fixPrint(1,13,0,1,"�� ���� ���-���� ���������� �������� �");
0497: fixPrint(1,14,0,1,"������... ��� �������, ����");
0498: fixPrint(1,15,0,1,"������������.");
0499: fixPrint(1,16,0,1,"���� ��� ��� ����� �������������");
0500: fixPrint(1,17,0,1,"������, ������ ������� ����������, ���");
0501: fixPrint(1,18,0,1,"������������ �������� ��� ����� ��");
0502: fixPrint(1,19,0,1,"������. ��� ���������� ���� �����.");
0503: fixPrint(1,20,0,1,"��� ��� �� ����� �����? �� �� �����,");
0504: fixPrint(1,21,0,1,"��������� ������� � ���, ��� ���-��");
0505: fixPrint(1,22,0,1,"�������? �������, � �� ������ �����");
0506: fixPrint(1,23,0,1,"�����. � �� ������ ����� ������, �");
0507: fixPrint(1,24,0,1,"��������... ��� ���� �����");
0508: fixPrint(1,25,0,1,"�����������. ��� ��� ��������?");
0509: }
0510:
0511: if(action==3)
0512: {
0513: clearSprites(1,21);
0514: scrollerInit(&sc,&BG_ExtDiningHallAwaySunset,1,16,0,0);
0515: palJobPut(16, BG_ExtDiningHallAwaySunset.palInfo->count, BG_ExtDiningHallAwaySunset.palInfo->data);
0516:
0517: fixPrint(1,3,0,1,"�� ���. ������ ��������� � ���� ���� �");
0518: fixPrint(1,4,0,1,"�������. ����� �� ������ ������ ���.");
0519: fixPrint(1,5,0,1,"��� ��� �������, � ��� ������ ��� ����");
0520: fixPrint(1,6,0,1,"��������, ��� ������ � ����������.");
0521: fixPrint(1,7,0,1,"� ���� ���������. � ��� ����� ������ �");
0522: fixPrint(1,8,0,1,"�����, ��� ����� ���� ��� ������. ���");
0523: fixPrint(1,9,0,1,"� �����!");
0524: }
0525:
0526: if(action==4)
0527: {
0528: clearSprites(1,21);
0529: SCClose();
0530: waitVBlank();
0531: action=0;
0532: Day1();
0533: }
0534:
0535: scrollerSetPos(&sc,posX,posY);
0536: }
0537: }
0538:
0539: void Day1() {
0540: scroller sc;
0541: picture testPict;
0542: short posX=0;
0543: short posY=0;
0544: ushort *data;
0545: ushort flipMode=0;
0546: //BYTE textTimer=0;
0547: button_available=true;
0548:
0549: clearFixLayer();
0550: scrollerInit(&sc,&BG_ExtHouseOfMTSunset,1,16,0,0);
0551: palJobPut(16, BG_ExtHouseOfMTSunset.palInfo->count, BG_ExtHouseOfMTSunset.palInfo->data);
0552:
0553: while(1) {
0554: SCClose();
0555: waitVBlank();
0556: Control_Sub();
0557:
0558: ////////////Control////////////
0559: //Select Options Action=2
0560: if(action==14)
0561: {
0562: if(p1e&JOY_UP)
0563: {
0564: if(choice>=1) choice--;
0565: }
0566: if(p1e&JOY_DOWN)
0567: {
0568: if(choice<2) choice++;
0569: }
0570: }
0571: ////////////Control////////////
0572:
0573: /*if(++textTimer==TIME)
0574: {
0575: textTimer=0;
0576: fixPrintf1(1,26,3,3," ");
0577: }*/
0578:
0579: /*if(ps&P1_START) {
0580: clearSprites(1,21);
0581: SCClose();
0582: waitVBlank();
0583: return;
0584: }*/
0585:
0586: if(action==0)
0587: {
0588: fixPrint(1,27,0,1,"����� ���������� ����... �����");
0589: fixPrint(1,28,0,1,"�������� ��� � ������.");
0590: }
0591: if(action==1)
0592: {
0593: clearSprites(1,21);
0594: scrollerInit(&sc,&BG_IntHouseOfMTDay,1,16,0,0);
0595: palJobPut(16, BG_IntHouseOfMTDay.palInfo->count, BG_IntHouseOfMTDay.palInfo->data);
0596:
0597: fixPrint(1,26,0,1,"��������� ��������� ���� �� ��� ���� �");
0598: fixPrint(1,27,0,1,"��� �������� ������� �����");
0599: fixPrint(1,28,0,1,"�����������. � ���������� �������.");
0600: }
0601: if(action==2)
0602: {
0603: fixPrint(1,25,0,1,"���� � ���� � ������� ����������,");
0604: fixPrint(1,26,0,1,"�������. ������� ����� ��� �� ����");
0605: fixPrint(1,27,0,1,"����� �� ������... �� ����� ���� �");
0606: fixPrint(1,28,0,1,"���?");
0607: }
0608: if(action==3)
0609: {
0610: fixPrint(1,27,0,1,"���� ��� ������ �� ��������. �� � ����");
0611: fixPrint(1,28,0,1,"��������� ��������...");
0612: }
0613: if(action==4)
0614: {
0615: clearSprites(1,21);
0616: scrollerInit(&sc,&CGD2_Mirror,1,16,0,0);
0617: palJobPut(16, CGD2_Mirror.palInfo->count, CGD2_Mirror.palInfo->data);
0618:
0619: fixPrint(1,27,0,1,"����� �� �������� � �����! �� ��, ���");
0620: fixPrint(1,28,0,1,"���-��� ����������... �� �� ����!");
0621: }
0622: if(action==5)
0623: {
0624: clearSprites(1,21);
0625: scrollerInit(&sc,&BG_IntHouseOfMTDay,1,16,0,0);
0626: palJobPut(16, BG_IntHouseOfMTDay.palInfo->count, BG_IntHouseOfMTDay.palInfo->data);
0627:
0628: fixPrint(1,26,0,1,"������, ����� ����� �����. ���� ������");
0629: fixPrint(1,27,0,1,"��� ����� ���������� �� ������ ���");
0630: fixPrint(1,28,0,1,"����� �����-������ �������.");
0631: }
0632: if(action==6)
0633: {
0634: fixPrint(1,27,0,1,"������� ��� ������ ��� ������");
0635: fixPrint(1,28,0,1,"��������. ��� ����� ���� �� � �����.");
0636: }
0637: if(action==7)
0638: {
0639: fixPrint(1,25,0,1,"� �� ���� �������� �������,");
0640: fixPrint(1,26,0,1,"����������� ������. ��������� ������,");
0641: fixPrint(1,27,0,1,"������� - ����� ������ ��� ���");
0642: fixPrint(1,28,0,1,"����������.");
0643: }
0644: if(action==8)
0645: {
0646: fixPrint(1,27,0,1,"��� �� ��� ������ � �������, ��");
0647: fixPrint(1,28,0,1,"��������� �� �� �����.");
0648: }
0649: if(action==9)
0650: {
0651: clearSprites(1,21);
0652: scrollerInit(&sc,&BG_ExtHouseOfMTSunset,1,16,0,0);
0653: palJobPut(16, BG_ExtHouseOfMTSunset.palInfo->count, BG_ExtHouseOfMTSunset.palInfo->data);
0654: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0655: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0656:
0657: fixPrint(1,28,0,1,"������ ���������.");
0658: }
0659: if(action==10)
0660: {
0661: fixPrint(1,26,0,1,"����� ����������:");
0662: fixPrint(1,28,1,1,"�����, ��� ���������?");
0663: }
0664: if(action==11)
0665: {
0666: fixPrint(1,26,0,1,"�����:");
0667: fixPrint(1,28,0,1,"��...");
0668: }
0669: if(action==12)
0670: {
0671: fixPrint(1,25,0,1,"����� ����������:");
0672: fixPrint(1,27,1,1,"������, � �� �������� �� ������");
0673: fixPrint(1,28,1,1,"����������?");
0674: }
0675: if(action==13)
0676: {
0677: fixPrint(1,24,0,1,"�� �� ��� \"��������\". �� ������� �");
0678: fixPrint(1,25,0,1,"����! ���� �������� �������� ��.");
0679: fixPrint(1,26,0,1,"����� ���������� � �����, ��������.");
0680: fixPrint(1,27,0,1,"��������� ������������ ���� �� ��");
0681: fixPrint(1,28,0,1,"�����.");
0682: }
0683: if(action==14)
0684: {
0685: fixPrint(3,25,choice==0?2:4,1,"������-�� ����.");
0686: fixPrint(3,27,choice==1?2:4,1,"�����-�����.");
0687: fixPrint(3,28,choice==2?2:4,1,"�� ����.");
0688: }
0689: if(action==19)
0690: {
0691: fixPrint(1,23,0,1,"����� ����������:");
0692: fixPrint(1,25,1,1,"��� � �������! �� ��� ���������.");
0693: fixPrint(1,26,1,1,"� ��� � ������ ���������... ��");
0694: fixPrint(1,27,1,1,"��������!");
0695: fixPrint(1,28,1,1,"�������! ����!");
0696: }
0697: if(action==20)
0698: {
0699: fixPrint(1,27,0,1,"��� ������ �������... �� ��� ��� ���,");
0700: fixPrint(1,28,0,1,"�����-������ ������������? ������?");
0701: }
0702: if(action==21)
0703: {
0704: fixPrint(1,26,0,1,"� ����� ������ ���������� ����");
0705: fixPrint(1,27,0,1,"�������?");
0706: fixPrint(1,28,0,1,"� �����, ��� �������� ��������?");
0707: }
0708: if(action==22)
0709: {
0710: fixPrint(1,25,0,1,"���� ���, �� �������� ���� ��");
0711: fixPrint(1,26,0,1,"�������������� - ������� �����");
0712: fixPrint(1,27,0,1,"�������� �� ��������. ����� ����������");
0713: fixPrint(1,28,0,1,"���������.");
0714: }
0715: if(action==23)
0716: {
0717: fixPrint(1,26,0,1,"�����:");
0718: fixPrint(1,28,0,1,"���! �� ������?");
0719: }
0720: if(action==24)
0721: {
0722: clearSprites(22,7);
0723: pictureInit(&testPict, &MTLaughPanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0724: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTLaughPanamaPioneer.palInfo->count, MTLaughPanamaPioneer.palInfo->data);
0725:
0726: fixPrint(1,25,0,1,"����� ����������:");
0727: fixPrint(1,27,1,1,"��������� - ���! ����������� �������!");
0728: fixPrint(1,28,1,1,"� �� ������ � ������ �������!");
0729: }
0730: if(action==25)
0731: {
0732: clearSprites(22,7);
0733: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0734: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0735:
0736: fixPrint(1,27,0,1,"��-��! ����� ��� ����� �������? �");
0737: fixPrint(1,28,0,1,"������ �����? ���� �������� �� ������?");
0738: }
0739: if(action==26)
0740: {
0741: clearSprites(22,7);
0742: pictureInit(&testPict, &MTSurprisePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0743: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSurprisePanamaPioneer.palInfo->count, MTSurprisePanamaPioneer.palInfo->data);
0744:
0745: fixPrint(1,26,0,1,"����� ����������:");
0746: fixPrint(1,28,1,1,"��� �����?");
0747: }
0748: if(action==27)
0749: {
0750: clearSprites(22,7);
0751: pictureInit(&testPict, &MTNormalPanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0752: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTNormalPanamaPioneer.palInfo->count, MTNormalPanamaPioneer.palInfo->data);
0753:
0754: fixPrint(1,25,0,1,"�����:");
0755: fixPrint(1,27,1,1,"�� ������... �� �������� �� � ������.");
0756: fixPrint(1,28,1,1,"� �������� ��� ���-�� ����������...");
0757: }
0758: if(action==28)
0759: {
0760: fixPrint(1,26,0,1,"����� ����������:");
0761: fixPrint(1,28,1,1,"��� �� ��� ���������.");
0762: }
0763: if(action==29)
0764: {
0765: fixPrint(1,25,0,1,"�����:");
0766: fixPrint(1,27,1,1,"���! ����� �� ���������. ����� ��");
0767: fixPrint(1,28,1,1,"���������.");
0768: }
0769: if(action==30)
0770: {
0771: clearSprites(22,7);
0772: pictureInit(&testPict, &MTSurprisePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0773: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSurprisePanamaPioneer.palInfo->count, MTSurprisePanamaPioneer.palInfo->data);
0774:
0775: fixPrint(1,26,0,1,"����� ����������:");
0776: fixPrint(1,28,1,1,"������...");
0777: }
0778: if(action==31)
0779: {
0780: fixPrint(1,24,0,1,"�����:");
0781: fixPrint(1,26,1,1,"��������� ��� ����� ����� ��� ����");
0782: fixPrint(1,27,1,1,"��������. ������� ��������� ������");
0783: fixPrint(1,28,1,1,"�����.");
0784: }
0785: if(action==32)
0786: {
0787: clearSprites(22,7);
0788: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0789: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0790:
0791: fixPrint(1,25,0,1,"����� ����������:");
0792: fixPrint(1,27,1,1,"�� �� �����, ������� ����������� ��");
0793: fixPrint(1,28,1,1,"�����! � ���� ��� ����.");
0794: }
0795: if(action==33)
0796: {
0797: fixPrint(1,26,0,1,"�����:");
0798: fixPrint(1,28,1,1,"�, �� ������...");
0799: }
0800: if(action==34)
0801: {
0802: fixPrint(1,26,0,1,"���������, ������ �� �����.");
0803: fixPrint(1,27,0,1,"�������� ��� ����, ��� ��? ��� ����");
0804: fixPrint(1,28,0,1,"����� �����?");
0805: }
0806: if(action==35)
0807: {
0808: fixPrint(1,26,0,1,"� ��� ��� ���� �����, ����������?");
0809: fixPrint(1,27,0,1,"������� �����-�� ���������. ��������");
0810: fixPrint(1,28,0,1,"������������ �����...");
0811: }
0812: if(action==36)
0813: {
0814: fixPrint(1,26,0,1,"���������� ��������? ����������� ��");
0815: fixPrint(1,27,0,1,"��� ��� �������. � ������ �� ���");
0816: fixPrint(1,28,0,1,"���������! �� ����� � �������!");
0817: }
0818: if(action==37)
0819: {
0820: clearSprites(22,7);
0821: pictureInit(&testPict, &MTNormalPanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0822: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTNormalPanamaPioneer.palInfo->count, MTNormalPanamaPioneer.palInfo->data);
0823:
0824: fixPrint(1,26,0,1,"����� ����������:");
0825: fixPrint(1,28,1,1,"�����, �� ��������?");
0826: }
0827: if(action==38)
0828: {
0829: fixPrint(1,20,0,1,"����� ����������:");
0830: fixPrint(1,22,1,1,"��� ���. � ������� ���, ��� �� ������,");
0831: fixPrint(1,23,1,1,"������� �������� � ������. �� ��� ��");
0832: fixPrint(1,24,1,1,"��� ��������� �� ����� �����");
0833: fixPrint(1,25,1,1,"����������, � ��� �����. �� � ������");
0834: fixPrint(1,26,1,1,"��� ��� ����� ������. � � ���� ����");
0835: fixPrint(1,27,1,1,"��� ������� ��� ���������,");
0836: fixPrint(1,28,1,1,"�������������?");
0837: }
0838: if(action==39)
0839: {
0840: fixPrint(1,21,0,1,"����� ����������:");
0841: fixPrint(1,23,1,1,"�� ���������� ��������� ����� �����");
0842: fixPrint(1,24,1,1,"������, ��� ����� �� �������� ������");
0843: fixPrint(1,25,1,1,"���������� ������� ������. ����");
0844: fixPrint(1,26,1,1,"����������� ������ ���� ���� �� �����,");
0845: fixPrint(1,27,1,1,"�� � ��� ���� ����� - ������ ����� �");
0846: fixPrint(1,28,1,1,"�������.");
0847: }
0848: if(action==40)
0849: {
0850: fixPrint(1,26,0,1,"�����:");
0851: fixPrint(1,28,1,1,"�� �������...");
0852: }
0853: if(action==41)
0854: {
0855: clearSprites(22,7);
0856: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0857: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0858:
0859: fixPrint(1,23,0,1,"����� ����������:");
0860: fixPrint(1,25,1,1,"���� ���� �������! ����������, �����,");
0861: fixPrint(1,26,1,1,"������ �� ����������! ������ ������� �");
0862: fixPrint(1,27,1,1,"��������������� ����! �� ������� ����,");
0863: fixPrint(1,28,1,1,"���� �� ������ ���� ������.");
0864: }
0865: if(action==42)
0866: {
0867: fixPrint(1,24,0,1,"�����:");
0868: fixPrint(1,26,1,1,"��������� �������� - � ��� ���� ��");
0869: fixPrint(1,27,1,1,"����������. ���� ���������, ������. ��");
0870: fixPrint(1,28,1,1,"����� �� ���� ����������...");
0871: }
0872: if(action==43)
0873: {
0874: fixPrint(1,26,0,1,"����� ����������:");
0875: fixPrint(1,28,1,1,"������, � ����� ����������� �������.");
0876: }
0877: if(action==44)
0878: {
0879: clearSprites(22,7);
0880: pictureInit(&testPict, &MTNormalPanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0881: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTNormalPanamaPioneer.palInfo->count, MTNormalPanamaPioneer.palInfo->data);
0882:
0883: fixPrint(1,25,0,1,"�����:");
0884: fixPrint(1,27,1,1,"��, �����... � ������������ ����������");
0885: fixPrint(1,28,1,1,"� ������ ����!");
0886: }
0887: if(action==45)
0888: {
0889: clearSprites(22,7);
0890: pictureInit(&testPict, &MTAngryPanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 80, 0,FLIP_NONE);
0891: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTAngryPanamaPioneer.palInfo->count, MTAngryPanamaPioneer.palInfo->data);
0892:
0893: fixPrint(1,25,0,1,"����� ����������:");
0894: fixPrint(1,27,1,1,"�� �� ������, �����. � ��� ���� -");
0895: fixPrint(1,28,1,1,"��������� ���������� �������.");
0896: }
0897: if(action==46)
0898: {
0899: fixPrint(1,25,0,1,"�����:");
0900: fixPrint(1,27,1,1,"������� �� �������, ��... � ��");
0901: fixPrint(1,28,1,1,"�������� ����� ���������������.");
0902: }
0903: if(action==47)
0904: {
0905: fixPrint(1,23,0,1,"����� ����������:");
0906: fixPrint(1,25,1,1,"���������� ������. ������� ����������,");
0907: fixPrint(1,26,1,1,"������ ����������, ����������� ������");
0908: fixPrint(1,27,1,1,"� ������� ������ �������� - ���������");
0909: fixPrint(1,28,1,1,"����������� ����!");
0910: }
0911: if(action==48)
0912: {
0913: fixPrint(1,26,0,1,"�����:");
0914: fixPrint(1,28,1,1,"�� ���������. ������� ���������?");
0915: }
0916: if(action==49)
0917: {
0918: clearSprites(22,10);
0919: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0920: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0921:
0922: fixPrint(1,26,0,1,"����� ����������:");
0923: fixPrint(1,28,1,1,"���-�� �����!");
0924: }
0925: if(action==50)
0926: {
0927: clearSprites(22,7);
0928: interval(12);
0929:
0930: if(text_visible==true)
0931: {
0932: fixPrint(1,26,0,1,"�����:");
0933: fixPrint(1,28,1,1,"�� � �� ��� ������...");
0934: }
0935: }
0936: if(action==51)
0937: {
0938: fixPrint(1,27,0,1,"������� ��� ����������� � ���������");
0939: fixPrint(1,28,0,1,"������� ���-�� � ����� ��������.");
0940: }
0941: if(action==52)
0942: {
0943: fixPrint(1,26,0,1,"����� ����������:");
0944: fixPrint(1,28,1,1,"���, �����?");
0945: }
0946: if(action==53)
0947: {
0948: fixPrint(1,26,0,1,"�����:");
0949: fixPrint(1,28,1,1,"������...");
0950: }
0951: if(action==54)
0952: {
0953: interval(24);
0954:
0955: if(text_visible==true)
0956: {
0957: fixPrint(1,22,0,1,"� ��� ���� ������ ����? ��� ���-��");
0958: fixPrint(1,23,0,1,"������� ��� ����������. �������, ����");
0959: fixPrint(1,24,0,1,"������� � ���� �����-�� �������");
0960: fixPrint(1,25,0,1,"�����������? � ��� ���� ������������");
0961: fixPrint(1,26,0,1,"�������� �� �������, ��������");
0962: fixPrint(1,27,0,1,"��������� ���������? �������������");
0963: fixPrint(1,28,0,1,"�������.");
0964: }
0965: }
0966: if(action==55)
0967: {
0968: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0969: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0970:
0971: fixPrint(1,25,0,1,"����� ����������:");
0972: fixPrint(1,27,1,1,"���� ���� ������ ���������. ��� �����");
0973: fixPrint(1,28,1,1,"������, ��� ���� ����������.");
0974: }
0975: if(action==56)
0976: {
0977: clearSprites(22,7);
0978: pictureInit(&testPict, &MTGrinPanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0979: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTGrinPanamaPioneer.palInfo->count, MTGrinPanamaPioneer.palInfo->data);
0980:
0981: fixPrint(1,26,0,1,"����� ����������:");
0982: fixPrint(1,28,1,1,"�� � �� � ��� ���� ���������.");
0983: }
0984: if(action==57)
0985: {
0986: fixPrint(1,28,0,1,"� ��� ��� ���?! ��� � �����������!");
0987: }
0988: if(action==58)
0989: {
0990: clearSprites(22,7);
0991: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
0992: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
0993:
0994: fixPrint(1,26,0,1,"����� ����������:");
0995: fixPrint(1,28,1,1,"������!");
0996: }
0997: /*
0998: if(action==59)
0999: {
1000: interval(12);
1001:
1002: if(text_visible==true)
1003: {
1004: action++;
1005: }
1006: }
1007: if(action==60)
1008: {
1009: clearSprites(22,7);
1010: interval(36);
1011:
1012: if(text_visible==true)
1013: {
1014: action++;
1015: }
1016: }
1017: */
1018: if(action==59)
1019: {
1020: clearSprites(1,28);
1021: scrollerInit(&sc,&BG_ExtNoBus,1,16,0,0);
1022: palJobPut(16, BG_ExtNoBus.palInfo->count, BG_ExtNoBus.palInfo->data);
1023:
1024: fixPrint(1,25,0,1,"��������� ������ ���������� ����������");
1025: fixPrint(1,26,0,1,"� ���������� ���������. � ��������,");
1026: fixPrint(1,27,0,1,"��� ��� � �� ������, �� � ����");
1027: fixPrint(1,28,0,1,"�������� ���������.");
1028: }
1029:
1030: if(choice==0)
1031: {
1032: if(action==15)
1033: {
1034: fixPrint(1,25,0,1,"����� �� ������� ���� ����� ��");
1035: fixPrint(1,26,0,1,"���������. ������ �������� �� �����");
1036: fixPrint(1,27,0,1,"������ �������� �� ������� � �����");
1037: fixPrint(1,28,0,1,"���������.");
1038: }
1039: if(action==16)
1040: {
1041: fixPrint(1,27,0,1,"�������, �� ������� �������� ������");
1042: fixPrint(1,28,0,1,"������� \"�������\" � �����.");
1043: }
1044: if(action==17)
1045: {
1046: action=19;
1047: }
1048: }
1049: if(choice==1)
1050: {
1051: if(action==15)
1052: {
1053: fixPrint(1,28,0,1,"����� ����������.");
1054: }
1055: if(action==16)
1056: {
1057: choice=0;
1058: action=19;
1059: }
1060: }
1061: if(choice==2)
1062: {
1063: if(action==15)
1064: {
1065: fixPrint(1,26,0,1,"����� ������� � �� ������������, � ��");
1066: fixPrint(1,27,0,1,"��� �������� �������� ��������� ��");
1067: fixPrint(1,28,0,1,"�������, ��� ���-�� � ���� ����.");
1068: }
1069: if(action==16)
1070: {
1071: clearSprites(22,7);
1072: pictureInit(&testPict, &MTAngryPanamaPioneerClose,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 64, 0,FLIP_NONE);
1073: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTAngryPanamaPioneerClose.palInfo->count, MTAngryPanamaPioneerClose.palInfo->data);
1074:
1075: fixPrint(1,23,0,1,"����� ����������:");
1076: fixPrint(1,25,1,1,"�����! �� �� �����������? � ���� ���");
1077: fixPrint(1,26,1,1,"��������� ���� �� ����������.");
1078: fixPrint(1,27,1,1,"������, ��� ����� ����� � ������, � �");
1079: fixPrint(1,28,1,1,"������ �� ���� �����. ��?");
1080: }
1081: if(action==17)
1082: {
1083: fixPrint(1,26,0,1,"�����:");
1084: fixPrint(1,28,0,1,"...� � ��� ���� ����?");
1085: }
1086: if(action==18)
1087: {
1088: clearSprites(22,12);
1089: pictureInit(&testPict, &MTSmilePanamaPioneer,22, 16 + BG_ExtHouseOfMTSunset.palInfo->count, 104, 0,FLIP_NONE);
1090: palJobPut(16 + BG_ExtHouseOfMTSunset.palInfo->count, MTSmilePanamaPioneer.palInfo->count, MTSmilePanamaPioneer.palInfo->data);
1091: choice=0;
1092: action++;
1093: }
1094: }
1095:
1096: scrollerSetPos(&sc,posX,posY);
1097: }
1098: }
1099:
1100: void colorStreamDemoB() {
1101: scroller sc;
1102: colorStream stream;
1103: short posX=0;
1104: short posY=0;
1105: uint *plj;
1106: ushort lastJobs=0,jobs=0;
1107:
1108:
1109: clearFixLayer();
1110: scrollerInit(&sc,&SNKLogoStrip,1,16,0,0);
1111: colorStreamInit(&stream,&SNKLogoStrip_colorStream,16,COLORSTREAM_STARTCONFIG);
1112:
1113: fixPrint(2,3,4,3,"1P \x12\x13: scroll");
1114: fixPrint(2,29,6,3,"(Sequence formatted by MegaShocked)");
1115:
1116: while(1) {
1117: SCClose();
1118:
1119: //check palJobs load
1120: if(jobs!=0) lastJobs=jobs;
1121: jobs=0;
1122: plj=PALJOBS;
1123: while(*plj!=0xffffffff) {
1124: jobs+=((*plj++)>>16)+1;
1125: plj++;
1126: }
1127: //fixPrintf1(0,2,3,3,"Jobs:%d (last:%d) ",jobs,lastJobs);
1128:
1129: waitVBlank();
1130:
1131: p1=volMEMBYTE(P1_CURRENT);
1132: ps=volMEMBYTE(PS_CURRENT);
1133: p1e=volMEMBYTE(P1_EDGE);
1134:
1135: if(ps&P1_START) {
1136: clearSprites(1,21);
1137: SCClose();
1138: waitVBlank();
1139: return;
1140: }
1141:
1142: if(p1&JOY_B) {
1143: if(p1e&JOY_UP) posY-=224;
1144: if(p1e&JOY_DOWN)posY+=224;
1145: } else {
1146: if(p1&JOY_UP) posY-=p1&JOY_A?224:1;
1147: if(p1&JOY_DOWN) posY+=p1&JOY_A?224:1;
1148: }
1149: if(posY<0) posY=0;
1150: if(posY>(SNKLogoStrip.mapHeight-14)<<4) posY=(SNKLogoStrip.mapHeight-14)<<4;
1151:
1152: //fixPrintf1(0,1,3,3,"%d ",posY);
1153:
1154: scrollerSetPos(&sc,posX,posY);
1155: colorStreamSetPos(&stream,posY);
1156: }
1157: }
1158:
1159: int main(void) {
1160: int scrl_x=0;
1161: int scrl_y=0;
1162: short showdebug=false;
1163: scroller frontScroll;
1164: ushort *data;
1165: ushort flipMode=0;
1166:
1167: clearFixLayer();
1168: initGfx();
1169:
1170: palJobPut(0,8,fixPalettes);
1171:
1172: //if(setup4P())
1173: // fixPrint(2,4,7,3,"4P! :)");
1174: //else fixPrint(2,4,7,3,"no 4P :(");
1175:
1176: backgroundColor(0x7bbb);
1177: jobMeterSetup(true);
1178:
1179: scrollerInit(&frontScroll, &ffbg_b, 1, 16, scrl_x, scrl_y);
1180: //scrollerInitClipped(&frontScroll, &ffbg_b, 22, 16 + ffbg_a.palInfo->count, x, y, CLIPPING);
1181: palJobPut(16, ffbg_b.palInfo->count, ffbg_b.palInfo->data);
1182:
1183: data=dbgTags.maps[0];
1184: palJobPut(200,dbgTags.palInfo->count,&dbgTags.palInfo->data);
1185: SC234Put(VRAM_POSX_ADDR(200),VRAM_POSX(0));
1186: SC234Put(VRAM_POSY_ADDR(200),VRAM_POSY(224,SPR_UNLINK,0));
1187: SC234Put(VRAM_SPR_ADDR(200),data[4<<1]);
1188: SC234Put(VRAM_SPR_ADDR(200)+1,200<<8);
1189: SC234Put(VRAM_POSX_ADDR(201),VRAM_POSX(0));
1190: SC234Put(VRAM_POSY_ADDR(201),VRAM_POSY(224,SPR_UNLINK,0));
1191: SC234Put(VRAM_SPR_ADDR(201),data[40<<1]);
1192: SC234Put(VRAM_SPR_ADDR(201)+1,200<<8);
1193: SC234Put(VRAM_POSX_ADDR(202),VRAM_POSX(0));
1194: SC234Put(VRAM_POSY_ADDR(202),VRAM_POSY(224,SPR_UNLINK,0));
1195: SC234Put(VRAM_SPR_ADDR(202),data[40<<1]);
1196: SC234Put(VRAM_SPR_ADDR(202)+1,(200<<8)|FLIP_X);
1197: SC234Put(VRAM_POSX_ADDR(203),VRAM_POSX(0));
1198: SC234Put(VRAM_POSY_ADDR(203),VRAM_POSY(224,SPR_UNLINK,0));
1199: SC234Put(VRAM_SPR_ADDR(203),data[40<<1]);
1200: SC234Put(VRAM_SPR_ADDR(203)+1,(200<<8)|FLIP_Y);
1201: SC234Put(VRAM_POSX_ADDR(204),VRAM_POSX(0));
1202: SC234Put(VRAM_POSY_ADDR(204),VRAM_POSY(224,SPR_UNLINK,0));
1203: SC234Put(VRAM_SPR_ADDR(204),data[40<<1]);
1204: SC234Put(VRAM_SPR_ADDR(204)+1,(200<<8)|FLIP_XY);
1205:
1206: fixPrint(14,20,4,3,"PRESS START");
1207:
1208: while(1) {
1209: SCClose();
1210: waitVBlank();
1211:
1212: p1=volMEMBYTE(P1_CURRENT);
1213: p1e=volMEMBYTE(P1_EDGE);
1214: ps=volMEMBYTE(PS_EDGE);
1215:
1216: while((volMEMWORD(0x3c0006)>>7)!=0x120); //wait raster line 16
1217: jobMeterColor(JOB_BLUE);
1218:
1219: /*if((p1&JOY_UP)&&y>=176) y--;
1220: if((p1&JOY_DOWN)&&y<=220) y++;
1221: if((p1&JOY_LEFT)&&x>=32)
1222: {
1223: x--;
1224: flipMode|=FLIP_X;
1225: aSpriteSetFlip(&demoSpr,flipMode);
1226: }
1227: if((p1&JOY_RIGHT)&&x<=288)
1228: {
1229: x++;
1230: flipMode&=~FLIP_X;
1231: aSpriteSetFlip(&demoSpr,flipMode);
1232: }*/
1233:
1234: if(ps&P1_START) {
1235: clearSprites(1, 42);
1236: SCClose();
1237: waitVBlank();
1238: introducion();
1239: }
1240:
1241: if(p1e&JOY_D) {
1242: if(showdebug) {
1243: //move debug stuff offscreen
1244: SC234Put(VRAM_POSY_ADDR(200),VRAM_POSY(224,SPR_UNLINK,0));
1245: SC234Put(VRAM_POSY_ADDR(201),VRAM_POSY(224,SPR_UNLINK,0));
1246: SC234Put(VRAM_POSY_ADDR(202),VRAM_POSY(224,SPR_UNLINK,0));
1247: SC234Put(VRAM_POSY_ADDR(203),VRAM_POSY(224,SPR_UNLINK,0));
1248: SC234Put(VRAM_POSY_ADDR(204),VRAM_POSY(224,SPR_UNLINK,0));
1249: fixJobPut(0,25,FIX_LINE_WRITE,0,_fixBlankLine);
1250: fixJobPut(0,26,FIX_LINE_WRITE,0,_fixBlankLine);
1251: fixJobPut(0,27,FIX_LINE_WRITE,0,_fixBlankLine);
1252: fixJobPut(0,28,FIX_LINE_WRITE,0,_fixBlankLine);
1253: }
1254: showdebug^=1;
1255: }
1256:
1257: //aSprite debug info
1258: /*if(showdebug) {
1259: jobMeterColor(JOB_BLACK);
1260: if(!(demoSpr.flags&AS_FLAG_STRICT_COORDS)) {
1261: if(demoSpr.currentFlip&FLIP_X) relX=x-((demoSpr.currentFrame->tileWidth<<4)+demoSpr.currentStep->shiftX)+1;
1262: else relX=x+demoSpr.currentStep->shiftX;
1263: if(demoSpr.currentFlip&FLIP_Y) relY=y-((demoSpr.currentFrame->tileHeight<<4)+demoSpr.currentStep->shiftY)+1;
1264: else relY=y+demoSpr.currentStep->shiftY;
1265: } else {
1266: relX=demoSpr.posX;
1267: relY=demoSpr.posY;
1268: }
1269: SC234Put(VRAM_POSX_ADDR(200),VRAM_POSX(x-3));
1270: SC234Put(VRAM_POSY_ADDR(200),VRAM_POSY(y-3,SPR_UNLINK,1));
1271: SC234Put(VRAM_POSX_ADDR(201),VRAM_POSX(relX));
1272: SC234Put(VRAM_POSY_ADDR(201),VRAM_POSY(relY,SPR_UNLINK,1));
1273: SC234Put(VRAM_POSX_ADDR(202),VRAM_POSX(relX+((demoSpr.currentFrame->tileWidth-1)<<4)));
1274: SC234Put(VRAM_POSY_ADDR(202),VRAM_POSY(relY,SPR_UNLINK,1));
1275: SC234Put(VRAM_POSX_ADDR(203),VRAM_POSX(relX));
1276: SC234Put(VRAM_POSY_ADDR(203),VRAM_POSY(relY+((demoSpr.currentFrame->tileHeight-1)<<4),SPR_UNLINK,1));
1277: SC234Put(VRAM_POSX_ADDR(204),VRAM_POSX(relX+((demoSpr.currentFrame->tileWidth-1)<<4)));
1278: SC234Put(VRAM_POSY_ADDR(204),VRAM_POSY(relY+((demoSpr.currentFrame->tileHeight-1)<<4),SPR_UNLINK,1));
1279:
1280: //debug live update prints = 1 frame ahead. meh.
1281: jobMeterColor(JOB_GREY);
1282: fixPrintf1(3,25,2,3,"Anim data: A:%02d S:%02d R:%02d ",demoSpr.currentAnim,demoSpr.stepNum,demoSpr.repeats);
1283: fixPrintf1(3,26,2,3,"Step data: Frame:0x%06x",bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].frame);
1284: fixPrintf1(14,27,2,3,"SX:%04d SY:%04d D:%02d",
1285: bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].shiftX,
1286: bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].shiftY,
1287: bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].duration
1288: );
1289: fixPrintf1(2,28,2,3,"Frame data: W:%02d H:%02d TMAP:0x%06x",
1290: ((sprFrame*)(bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].frame))->tileWidth,
1291: ((sprFrame*)(bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].frame))->tileHeight,
1292: ((sprFrame*)(bmary_spr.anims[demoSpr.currentAnim][demoSpr.stepNum].frame))->maps[demoSpr.currentFlip]
1293: );
1294: }*/
1295:
1296: scrollerSetPos(&frontScroll, scrl_x, scrl_y);
1297: //scrollerSetPosClipped(&frontScroll, x, y, CLIPPING);
1298:
1299: jobMeterColor(JOB_GREEN);
1300: }
1301: }