⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rainbow.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 5 页
字号:
   tb=0;   for(ta=0;ta<0x80000;ta+=2){      GFX_SPR[tb++]=ROM[ta+1]>>4;      GFX_SPR[tb++]=ROM[ta+1]&15;      GFX_SPR[tb++]=ROM[ta+0]>>4;      GFX_SPR[tb++]=ROM[ta+0]&15;   }   if(!load_rom("b22-12", ROM+0x00000, 0x10000)) return;   if(!load_rom("b22-13", ROM+0x10000, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      GFX_SPR[tb++]=ROM[ta+0x10000]>>4;      GFX_SPR[tb++]=ROM[ta+0x10000]&15;      GFX_SPR[tb++]=ROM[ta]>>4;      GFX_SPR[tb++]=ROM[ta]&15;   }   if (subset==0)   {      if(!load_rom("b22-10", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta]=RAM[ta];      }      if(!load_rom("b22-11", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta+1]=RAM[ta];      }      if(!load_rom("b22-08", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta+0x20000]=RAM[ta];      }      if(!load_rom("b22-09", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta+0x20001]=RAM[ta];      }   }   else   {      if(!load_rom("b22_10-1", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta]=RAM[ta];      }      if(!load_rom("b22_11-1", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta+1]=RAM[ta];      }      if(!load_rom("b22_08-1", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta+0x20000]=RAM[ta];      }      if(!load_rom("b22_09-1", RAM, 0x10000)) return;      for(ta=0;ta<0x10000;ta++){         ROM[ta+ta+0x20001]=RAM[ta];      }   }   if(!load_rom("ri_m03.rom", RAM, 0x20000)) return;   // Came From Extra   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x40000]=RAM[ta];   }   if(!load_rom("ri_m04.rom", RAM, 0x20000)) return;   // Came From Extra   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x40001]=RAM[ta];   }   if(!load_rom("jb1_f89", RAM, 0x10000)) return;              // BOOTLEG C-CHIP   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x80000]=0;      ROM[ta+ta+0x80001]=RAM[ta];   }   }   if(romset==2){   if(!load_rom("jb2_ic8",&ROM[0x00000],0x10000)) return;      // 8x8 TILES   if(!load_rom("jb2_ic7",&ROM[0x10000],0x10000)) return;   tb=0;   for(ta=0;ta<0x20000;ta++,tb+=8){      tc=ROM[ta]^255;      GFX_BG0[tb+0]=((tc&0x80)>>7)<<3;      GFX_BG0[tb+1]=((tc&0x40)>>6)<<3;      GFX_BG0[tb+2]=((tc&0x20)>>5)<<3;      GFX_BG0[tb+3]=((tc&0x10)>>4)<<3;      GFX_BG0[tb+4]=((tc&0x08)>>3)<<3;      GFX_BG0[tb+5]=((tc&0x04)>>2)<<3;      GFX_BG0[tb+6]=((tc&0x02)>>1)<<3;      GFX_BG0[tb+7]=((tc&0x01)>>0)<<3;   }   if(!load_rom("jb2_ic10",&ROM[0x00000],0x10000)) return;   if(!load_rom("jb2_ic9",&ROM[0x10000],0x10000)) return;   tb=0;   for(ta=0;ta<0x20000;ta++,tb+=8){      tc=ROM[ta]^255;      GFX_BG0[tb+0]|=((tc&0x80)>>7)<<2;      GFX_BG0[tb+1]|=((tc&0x40)>>6)<<2;      GFX_BG0[tb+2]|=((tc&0x20)>>5)<<2;      GFX_BG0[tb+3]|=((tc&0x10)>>4)<<2;      GFX_BG0[tb+4]|=((tc&0x08)>>3)<<2;      GFX_BG0[tb+5]|=((tc&0x04)>>2)<<2;      GFX_BG0[tb+6]|=((tc&0x02)>>1)<<2;      GFX_BG0[tb+7]|=((tc&0x01)>>0)<<2;   }   if(!load_rom("jb2_ic12",&ROM[0x00000],0x10000)) return;   if(!load_rom("jb2_ic11",&ROM[0x10000],0x10000)) return;   tb=0;   for(ta=0;ta<0x20000;ta++,tb+=8){      tc=ROM[ta]^255;      GFX_BG0[tb+0]|=((tc&0x80)>>7)<<1;      GFX_BG0[tb+1]|=((tc&0x40)>>6)<<1;      GFX_BG0[tb+2]|=((tc&0x20)>>5)<<1;      GFX_BG0[tb+3]|=((tc&0x10)>>4)<<1;      GFX_BG0[tb+4]|=((tc&0x08)>>3)<<1;      GFX_BG0[tb+5]|=((tc&0x04)>>2)<<1;      GFX_BG0[tb+6]|=((tc&0x02)>>1)<<1;      GFX_BG0[tb+7]|=((tc&0x01)>>0)<<1;   }   if(!load_rom("jb2_ic14",&ROM[0x00000],0x10000)) return;   if(!load_rom("jb2_ic13",&ROM[0x10000],0x10000)) return;   tb=0;   for(ta=0;ta<0x20000;ta++,tb+=8){      tc=ROM[ta]^255;      GFX_BG0[tb+0]|=((tc&0x80)>>7)<<0;      GFX_BG0[tb+1]|=((tc&0x40)>>6)<<0;      GFX_BG0[tb+2]|=((tc&0x20)>>5)<<0;      GFX_BG0[tb+3]|=((tc&0x10)>>4)<<0;      GFX_BG0[tb+4]|=((tc&0x08)>>3)<<0;      GFX_BG0[tb+5]|=((tc&0x04)>>2)<<0;      GFX_BG0[tb+6]|=((tc&0x02)>>1)<<0;      GFX_BG0[tb+7]|=((tc&0x01)>>0)<<0;   }   if(!load_rom("jb2_ic62",&ROM[0x00000],0x10000)) return;     // 16x16 SPRITES   if(!load_rom("jb2_ic61",&ROM[0x10000],0x10000)) return;   if(!load_rom("jb2_ic60",&ROM[0x20000],0x8000)) return;   tb=0;   for(ta=0;ta<0x28000;ta++){      tc=ROM[ta];      GFX_SPR[tb+0]=((tc&0x80)>>7)<<0;      GFX_SPR[tb+1]=((tc&0x40)>>6)<<0;      GFX_SPR[tb+2]=((tc&0x20)>>5)<<0;      GFX_SPR[tb+3]=((tc&0x10)>>4)<<0;      GFX_SPR[tb+4]=((tc&0x08)>>3)<<0;      GFX_SPR[tb+5]=((tc&0x04)>>2)<<0;      GFX_SPR[tb+6]=((tc&0x02)>>1)<<0;      GFX_SPR[tb+7]=((tc&0x01)>>0)<<0;      tb+=16;      if((tb&0xFF)==0){tb-=0xF8;}      else{if((tb&0xFF)==8){tb-=0x8;}}   }   if(!load_rom("jb2_ic78",&ROM[0x00000],0x10000)) return;     // 16x16 SPRITES   if(!load_rom("jb2_ic77",&ROM[0x10000],0x10000)) return;   if(!load_rom("jb2_ic76",&ROM[0x20000],0x8000)) return;   tb=0;   for(ta=0;ta<0x28000;ta++){      tc=ROM[ta];      GFX_SPR[tb+0]|=((tc&0x80)>>7)<<1;      GFX_SPR[tb+1]|=((tc&0x40)>>6)<<1;      GFX_SPR[tb+2]|=((tc&0x20)>>5)<<1;      GFX_SPR[tb+3]|=((tc&0x10)>>4)<<1;      GFX_SPR[tb+4]|=((tc&0x08)>>3)<<1;      GFX_SPR[tb+5]|=((tc&0x04)>>2)<<1;      GFX_SPR[tb+6]|=((tc&0x02)>>1)<<1;      GFX_SPR[tb+7]|=((tc&0x01)>>0)<<1;      tb+=16;      if((tb&0xFF)==0){tb-=0xF8;}      else{if((tb&0xFF)==8){tb-=0x8;}}   }   if(!load_rom("jb2_ic93",&ROM[0x00000],0x10000)) return;     // 16x16 SPRITES   if(!load_rom("jb2_ic92",&ROM[0x10000],0x10000)) return;   if(!load_rom("jb2_ic91",&ROM[0x20000],0x8000)) return;   tb=0;   for(ta=0;ta<0x28000;ta++){      tc=ROM[ta];      GFX_SPR[tb+0]|=((tc&0x80)>>7)<<2;      GFX_SPR[tb+1]|=((tc&0x40)>>6)<<2;      GFX_SPR[tb+2]|=((tc&0x20)>>5)<<2;      GFX_SPR[tb+3]|=((tc&0x10)>>4)<<2;      GFX_SPR[tb+4]|=((tc&0x08)>>3)<<2;      GFX_SPR[tb+5]|=((tc&0x04)>>2)<<2;      GFX_SPR[tb+6]|=((tc&0x02)>>1)<<2;      GFX_SPR[tb+7]|=((tc&0x01)>>0)<<2;      tb+=16;      if((tb&0xFF)==0){tb-=0xF8;}      else{if((tb&0xFF)==8){tb-=0x8;}}   }   if(!load_rom("jb2_I121",&ROM[0x00000],0x10000)) return;     // 16x16 SPRITES   if(!load_rom("jb2_I120",&ROM[0x10000],0x10000)) return;   if(!load_rom("jb2_I119",&ROM[0x20000],0x8000)) return;   tb=0;   for(ta=0;ta<0x28000;ta++){      tc=ROM[ta];      GFX_SPR[tb+0]|=((tc&0x80)>>7)<<3;      GFX_SPR[tb+1]|=((tc&0x40)>>6)<<3;      GFX_SPR[tb+2]|=((tc&0x20)>>5)<<3;      GFX_SPR[tb+3]|=((tc&0x10)>>4)<<3;      GFX_SPR[tb+4]|=((tc&0x08)>>3)<<3;      GFX_SPR[tb+5]|=((tc&0x04)>>2)<<3;      GFX_SPR[tb+6]|=((tc&0x02)>>1)<<3;      GFX_SPR[tb+7]|=((tc&0x01)>>0)<<3;      tb+=16;      if((tb&0xFF)==0){tb-=0xF8;}      else{if((tb&0xFF)==8){tb-=0x8;}}   }   if(!load_rom("jb1_h4", RAM, 0x10000)) return;               // 68000 ROM   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta]=RAM[ta];   }   if(!load_rom("jb1_h8", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+1]=RAM[ta];   }   if(!load_rom("jb1_i4", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x20000]=RAM[ta];   }   if(!load_rom("jb1_i8", RAM, 0x10000)) return;   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x20001]=RAM[ta];   }   if(!load_rom("ri_m03.rom", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x40000]=RAM[ta];   }   if(!load_rom("ri_m04.rom", RAM, 0x20000)) return;   for(ta=0;ta<0x20000;ta++){      ROM[ta+ta+0x40001]=RAM[ta];   }   if(!load_rom("jb1_f89", RAM, 0x10000)) return;              // BOOTLEG C-CHIP   for(ta=0;ta<0x10000;ta++){      ROM[ta+ta+0x80000]=0;      ROM[ta+ta+0x80001]=RAM[ta];   }   }   memset(RAM+0x00000,0x00,0x20000);   memset(RAM+0x1A000,0xFF,0x01000);   WriteWord(&RAM[0x1B108],0x0000);   for(ta=0x20000;ta<0x24000;ta++){      RAM[ta]=(ta>>1)+8;   }   for(ta=0x001;ta<0x800;ta+=2){      CBANK[4][ta]=0xFF;   }   for(ta=0x001;ta<0x800;ta+=2){      CBANK[5][ta]=0xFF;   }   CBANK[5][0x001]=0xFF;   CBANK[2][0x051]=0x30;        /* Dying rainbow graphics */   CBANK[2][0x053]=0x31;   CBANK[2][0x055]=0x32;   CBANK[2][0x057]=0x33;   CBANK[2][0x059]=0x34;   CBANK[2][0x05b]=0x35;   CBANK[2][0x05d]=0x36;   CBANK[2][0x05f]=0x37;   CBANK[2][0x061]=0x38;   CBANK[2][0x063]=0x39;   CBANK[2][0x065]=0x3a;   CBANK[2][0x067]=0x3b;   CBANK[2][0x069]=0x3c;   CBANK[2][0x06b]=0x3d;   CBANK[2][0x06d]=0x3e;   CBANK[2][0x06f]=0x3f;   CBANK[2][0x071]=0x40;   CBANK[2][0x073]=0x41;   CBANK[2][0x075]=0x42;   CBANK[2][0x077]=0x43;   CBANK[2][0x079]=0x44;   CBANK[2][0x07b]=0x45;   CBANK[2][0x07d]=0x46;   CBANK[2][0x07f]=0x47;   CBANK[1][0x20b]=0x00;        // Rainbow Climb   CBANK[1][0x223]=0x00;        // Rainbow Climb   CBANK[1][0x277]=0x7F;        // Rainbow Climb   CBANK[1][0x279]=0x7F;        // Rainbow Climb   CBANK[1][0x291]=0x00;        // End of Island Boss   CBANK[1][0x293]=0x00;        // Unknown   CBANK[1][0x295]=0x00;        // G Below   CBANK[1][0x297]=0x00;        // G Right   CBANK[1][0x299]=0x20;        // O below   CBANK[1][0x29b]=0x10;        // O Right   CBANK[1][0x29d]=0x40;        // A Below   CBANK[1][0x29f]=0x20;        // A Right   CBANK[1][0x2a1]=0x60;        // L Below   CBANK[1][0x2a3]=0x38;        // L Right   CBANK[1][0x2a5]=0x80;        // I Below   CBANK[1][0x2a7]=0x58;        // I Right   CBANK[1][0x2a9]=0xa0;        // N Below   CBANK[1][0x2ab]=0x68;        // N Right   RAMSize=0x34000;             // *****   RAM_VIDEO  = RAM+0x08000;   RAM_SCROLL = RAM+0x1B080;   RAM_OBJECT = RAM+0x18000;   if(romset!=2)      InitPaletteMap(RAM+0x4000, 0x100, 0x10, 0x8000);   else      InitPaletteMap(RAM+0x4000, 0x100, 0x10, 0x1000);   GFX_BG0_SOLID = make_solid_mask_8x8  (GFX_BG0, 0x4000);   GFX_SPR_SOLID = make_solid_mask_16x16(GFX_SPR, 0x1400);/* *  Catch 68000 Interrupt wait */   if(romset==0){   ROM[0x0116E]=0x4E;           // Fix ROM CHECKSUM   ROM[0x0116F]=0x71;   ROM[0x070C]=0x4E;            // jmp $7FF00   ROM[0x070D]=0xF9;   ROM[0x070E]=0x00;   ROM[0x070F]=0x07;   ROM[0x0710]=0xFF;   ROM[0x0711]=0x00;   ROM[0x7FF06]=0x13;           // move.b #$00,$AA0000 (speed hack)   ROM[0x7FF07]=0xFC;   ROM[0x7FF08]=0x00;   ROM[0x7FF09]=0x00;   ROM[0x7FF0A]=0x00;   ROM[0x7FF0B]=0xAA;   ROM[0x7FF0C]=0x00;   ROM[0x7FF0D]=0x00;   ROM[0x7FF0E]=0x60;           // bra <loop>   ROM[0x7FF0F]=0x100-16;   if(subset==0){   ROM[0x7FF00]=0x4E;           //  jsr $11D78 (random gen)   ROM[0x7FF01]=0xB9;   ROM[0x7FF02]=0x00;   ROM[0x7FF03]=0x01;   ROM[0x7FF04]=0x1D;   ROM[0x7FF05]=0x78;   TMP=RaineData[Jumping_HACK].dat;                     // COPY C-CHIP HACK CODE   for(ta=0;ta<0x1D0;ta++){      ROM[ta+0xC0]=TMP[ta];   }   TMP=RaineData[Jump1630_HACK].dat;                    // COPY C-CHIP HACK CODE#2   for(ta=0;ta<0x5E;ta++){      ROM[ta+0x7FF10]=TMP[ta];   }   WriteLong68k(&ROM[0x40AE],0x4EB90000);               // C-CHIP HACK#1   WriteLong68k(&ROM[0x40B2],0x00C04E71);   WriteLong68k(&ROM[0x51FA],0x4EB90000);               // C-CHIP HACK#2   WriteWord68k(&ROM[0x51FE],0x00CC);   WriteLong68k(&ROM[0x59A2],0x4EB90000);               // C-CHIP HACK#3   WriteWord68k(&ROM[0x59A6],0x00E2);   WriteLong68k(&ROM[0x59AA],0x4EB90000);               // C-CHIP HACK#4   WriteWord68k(&ROM[0x59AE],0x00F8);   WriteLong68k(&ROM[0x59B6],0x4EB90000);               // C-CHIP HACK#5   WriteWord68k(&ROM[0x59BA],0x010E);   WriteLong68k(&ROM[0x59BE],0x4EB90000);               // C-CHIP HACK#6   WriteWord68k(&ROM[0x59C2],0x011A);   WriteLong68k(&ROM[0x5E9A],0x4EB90000);               // C-CHIP HACK#7A   WriteWord68k(&ROM[0x5E9E],0x0130);   WriteLong68k(&ROM[0x5F5E],0x4EB90000);               // C-CHIP HACK#7B   WriteWord68k(&ROM[0x5F62],0x0130);   WriteLong68k(&ROM[0xB654],0x4EB90000);               // C-CHIP HACK#7C   WriteWord68k(&ROM[0xB658],0x0130);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -