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

📄 volfied.c

📁 十七种模拟器源代码 非常有用的作课程设计不可缺少的
💻 C
📖 第 1 页 / 共 2 页
字号:
   tb=2;   for(ta=0;ta<0x60000;ta++,tb+=4){      GFX[tb+0]=ROM[ta]>>4;      GFX[tb+1]=ROM[ta]&15;   }   if(!load_rom("c04-12-1.bin",&RAM[0x00000],0x10000)) return; // 68000 ROM   if(!load_rom("c04-11-1.bin",&RAM[0x10000],0x10000)) return;   if(!load_rom("c04-20.bin",  &RAM[0x20000],0x20000)) return; // 8x8 TILES   if(!load_rom("c04-19.bin",  &RAM[0x40000],0x20000)) return;   for(ta=0;ta<0x60000;ta++){      ROM[ta+ta]=RAM[ta];   }   if(!load_rom("c04-08-1.bin",&RAM[0x00000],0x10000)) return;   if(!load_rom("c04-07-1.bin",&RAM[0x10000],0x10000)) return;   if(!load_rom("c04-22.bin",  &RAM[0x20000],0x20000)) return; // 8x8 TILES   if(!load_rom("c04-21.bin",  &RAM[0x40000],0x20000)) return;   for(ta=0;ta<0x60000;ta++){      ROM[ta+ta+1]=RAM[ta];   }   /*-----[Sound Setup]-----*/   Z80ROM=RAM+0xA0000;   if(!load_rom("c04-06.bin",Z80ROM,0x8000)) return;           // Z80 SOUND ROM   memset(Z80ROM+0x8000,0xFF,0x8000);   Z80ROM[0x0253]=0xD3; // OUTA (AAh)   Z80ROM[0x0254]=0xAA; //   SetStopZ80Mode2(0x020E);   AddZ80AROMBase(Z80ROM, 0x0038, 0x0066);   AddZ80AReadByte(0x8800, 0x8801, tc0140syt_read_sub_z80,      NULL);   AddZ80AReadByte(0x9000, 0x9001, YM2203AReadZ80,              NULL);   AddZ80AReadByte(0x0000, 0xFFFF, NULL,                        Z80ROM+0x0000); // <test>   AddZ80AReadByte(0x0000, 0xFFFF, DefBadReadZ80,               NULL);          // <bad reads>   AddZ80AReadByte(    -1,     -1, NULL,                        NULL);   AddZ80AWriteByte(0x8800, 0x8801, tc0140syt_write_sub_z80,    NULL);   AddZ80AWriteByte(0x9000, 0x9001, YM2203AWriteZ80,            NULL);   AddZ80AWriteByte(0x0000, 0xFFFF, NULL,                       Z80ROM+0x0000); // <test>   AddZ80AWriteByte(0x0000, 0xFFFF, DefBadWriteZ80,             NULL);          // <bad writes>   AddZ80AWriteByte(    -1,     -1, NULL,                       NULL);   AddZ80AReadPort(0x00, 0xFF, DefBadReadZ80,           NULL);   AddZ80AReadPort(  -1,   -1, NULL,                    NULL);   AddZ80AWritePort(0xAA, 0xAA, StopZ80Mode2,           NULL);   AddZ80AWritePort(0x00, 0xFF, DefBadWriteZ80,         NULL);   AddZ80AWritePort(  -1,   -1, NULL,                   NULL);   AddZ80AInit();   tc0140syt_reset();			// Add [J3d!]   /*-----------------------*/   memset(RAM+0x00000,0x00,0xA0000);   memset(RAM+0x8A000,0xFF,0x00100);   // C-Chip   // ------   WriteWord68k(&ROM[0x13FB2],0x4E71);   WriteWord68k(&ROM[0x08262],0x4E71);          // Use unprotected code   WriteWord68k(&ROM[0x08228],0x4E71);          // better than nothing i guess   // Sound Wait   // ----------   WriteWord68k(&ROM[0x004F0],0x4E71);   // Speed Hack   // ----------   WriteWord68k(&ROM[0x0161C],0x4EF9);   WriteLong68k(&ROM[0x0161E],0x00000300);   WriteWord68k(&ROM[0x00300],0x4EB9);   WriteLong68k(&ROM[0x00302],0x00005CD6);   WriteLong68k(&ROM[0x00306],0x13FC0000);   WriteLong68k(&ROM[0x0030A],0x00AA0000);   WriteWord68k(&ROM[0x0030E],0x6100-16);   WriteLong68k(&ROM[0x1438E],0x13FC0000);   WriteLong68k(&ROM[0x14392],0x00AA0000);   WriteWord68k(&ROM[0x14396],0x4E75);   // DSW Hack   // --------   WriteWord68k(&ROM[0x073A6],0x1039);                  //      move.b  $110000,d0   WriteLong68k(&ROM[0x073A8],0x00110000);   WriteWord68k(&ROM[0x073AC],0x4EF9);                  //      jmp     $73E2   WriteLong68k(&ROM[0x073AE],0x000073E2);   WriteWord68k(&ROM[0x073F4],0x1039);                  //      move.b  $110001,d0   WriteLong68k(&ROM[0x073F6],0x00110001);   WriteWord68k(&ROM[0x073FA],0x4EF9);                  //      jmp     $7430   WriteLong68k(&ROM[0x073FC],0x00007430);   InitPaletteMap(RAM+0x86000, 0x200, 0x10, 0x8000);/* *  StarScream Stuff follows */   ByteSwap(ROM,0xC0000);   ByteSwap(RAM,0xA0000);   AddMemFetch(0x000000, 0x03FFFF, ROM+0x000000-0x000000);      // 68000 ROM   AddMemFetch(-1, -1, NULL);   AddReadByte(0x000000, 0x03FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadByte(0x100000, 0x103FFF, NULL, RAM+0x000000);                 // MAIN RAM   AddReadByte(0x080000, 0x0FFFFF, NULL, ROM+0x040000);                 // 68000 GFX ROM   AddReadByte(0x200000, 0x201FFF, NULL, RAM+0x084000);                 // OBJECT RAM   AddReadByte(0x400000, 0x47FFFF, NULL, RAM+0x004000);                 // PIXEL RAM   AddReadByte(0xE00000, 0xE00003, tc0140syt_read_main_68k, NULL);      // SOUND   AddReadByte(0xF00000, 0xF00FFF, CChipReadB, NULL);                   // C-CHIP   AddReadByte(0x110000, 0x110001, NULL, RAM+0x08A000);                 // DSW (HACKED)   AddReadByte(0x000000, 0xFFFFFF, DefBadReadByte, NULL);               // <Bad Reads>   AddReadByte(-1, -1, NULL, NULL);   AddReadWord(0x000000, 0x03FFFF, NULL, ROM+0x000000);                 // 68000 ROM   AddReadWord(0x100000, 0x103FFF, NULL, RAM+0x000000);                 // MAIN RAM   AddReadWord(0x080000, 0x0FFFFF, NULL, ROM+0x040000);                 // 68000 GFX ROM   AddReadWord(0x200000, 0x201FFF, NULL, RAM+0x084000);                 // OBJECT RAM   AddReadWord(0x400000, 0x47FFFF, NULL, RAM+0x004000);                 // PIXEL RAM   AddReadWord(0x500000, 0x503FFF, NULL, RAM+0x086000);                 // COLOR RAM   AddReadWord(0xE00000, 0xE00003, tc0140syt_read_main_68k, NULL);      // SOUND   AddReadWord(0xF00000, 0xF00FFF, CChipReadW, NULL);                   // C-CHIP   AddReadWord(0x000000, 0xFFFFFF, DefBadReadWord, NULL);               // <Bad Reads>   AddReadWord(-1, -1, NULL, NULL);   AddWriteByte(0x100000, 0x103FFF, NULL, RAM+0x000000);                // MAIN RAM   AddWriteByte(0x200000, 0x201FFF, NULL, RAM+0x084000);                // OBJECT RAM   AddWriteByte(0x400000, 0x47FFFF, NULL, RAM+0x004000);                // PIXEL RAM   AddWriteByte(0xE00000, 0xE00003, tc0140syt_write_main_68k, NULL);    // SOUND   AddWriteByte(0xF00000, 0xF00FFF, CChipWriteB, NULL);                 // C-CHIP   AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL);                   // Trap Idle 68000   AddWriteByte(0x000000, 0xFFFFFF, BadWriteByte, NULL);                // <Bad Writes>   AddWriteByte(-1, -1, NULL, NULL);   AddWriteWord(0x100000, 0x103FFF, NULL, RAM+0x000000);                // MAIN RAM   AddWriteWord(0x200000, 0x201FFF, NULL, RAM+0x084000);                // OBJECT RAM   AddWriteWord(0x400000, 0x47FFFF, NULL, RAM+0x004000);                // PIXEL RAM   AddWriteWord(0x500000, 0x503FFF, NULL, RAM+0x086000);                // COLOR RAM   AddWriteWord(0xE00000, 0xE00003, tc0140syt_write_main_68k, NULL);    // SOUND   AddWriteWord(0xF00000, 0xF00FFF, CChipWriteW, NULL);                 // C-CHIP   AddWriteWord(0x000000, 0xFFFFFF, DefBadWriteWord, NULL);             // <Bad Writes>   AddWriteWord(-1, -1, NULL, NULL);   AddInitMemory();     // Set Starscream mem pointers... }void ClearVolfied(void){   #ifdef RAINE_DEBUG      save_debug("ROM.bin",ROM,0x0C0000,1);      save_debug("RAM.bin",RAM,0x0A0000,1);      //save_debug("GFX.bin",GFX,0x140000,0);   #endif}void ExecuteVolfiedFrame(void){   cpu_execute_cycles(CPU_68K_0, CPU_FRAME_MHz(12,60));    // M68000 12MHz (60fps)   /*#ifdef RAINE_DEBUG   print_debug("PC:%06x SR:%04x\n",s68000context.pc,s68000context.sr);   #endif*/   cpu_interrupt(CPU_68K_0, 4);   if(tc0140syt_want_nmi()!=0) cpu_int_nmi(CPU_Z80_0);   cpu_execute_cycles(CPU_Z80_0, 4000000/60);        // Sound Z80   cpu_interrupt(CPU_Z80_0, 0x0038);}void DrawVolfied(void){   int x,y,zz;   UINT8 *BIT;   UINT8 *MAP;   static int tm=1,flip1,flip2;   static int tm2=8,flip3,flip4;   ClearPaletteMap();      MAP_PALETTE_MAPPED(         Map_15bit_xBGR,         tm2*16,         0x10,         MAP      );   if(key[KEY_J]){   if(flip1==0){      tm--;      tm&=0x1F;      flip1=1;   }   }   else{      flip1=0;   }   if(key[KEY_K]){   if(flip2==0){      tm++;      tm&=0x1F;      flip2=1;   }   }   else{      flip2=0;   }   if(key[KEY_I]){   if(flip3==0){      tm2--;      tm2&=0x1F;      flip3=1;   }   }   else{      flip3=0;   }   if(key[KEY_O]){   if(flip4==0){      tm2++;      tm2&=0x1F;      flip4=1;   }   }   else{      flip4=0;   }   print_ingame(60,"%04x.%04x",tm,tm2);   zz=0x04001+(8*1024);   for(y=0;y<240;y++){   BIT=GameViewBitmap->line[y];   for(x=0;x<320;x++){      BIT[x]=MAP[((ReadWord(&RAM[zz])>>tm)&0x0F)];      //if(RAM[zz+1]!=0)BIT[x]=MAP[RAM[zz+1]];      zz+=2;   }   zz+=(1024-(320*2));   }   for(zz=0x847F8;zz>=0x84000;zz-=8){   x=(32+ReadWord(&RAM[zz+6]))&0x1FF;   y=(24+ReadWord(&RAM[zz+2]))&0x1FF;   if((x>16)&&(y>16)&&(x<320+32)&&(y<240+32)){      MAP_PALETTE_MAPPED(         Map_15bit_xBGR,         (RAM[zz]&0x0F)|0x100,         16,         MAP      );      switch(RAM[zz+1]&0xC0){      case 0x00: Draw16x16_Trans_Mapped(&GFX[((ReadWord(&RAM[zz+4])&0x1FFF)<<8)],x,y,MAP);        break;      case 0x40: Draw16x16_Trans_Mapped_FlipY(&GFX[((ReadWord(&RAM[zz+4])&0x1FFF)<<8)],x,y,MAP);  break;      case 0x80: Draw16x16_Trans_Mapped_FlipX(&GFX[((ReadWord(&RAM[zz+4])&0x1FFF)<<8)],x,y,MAP);  break;      case 0xC0: Draw16x16_Trans_Mapped_FlipXY(&GFX[((ReadWord(&RAM[zz+4])&0x1FFF)<<8)],x,y,MAP); break;      }   }   }}/*COLOUR RAM----------- $4000 bytes- $2000 colours- $200 banks of 16 colours*/

⌨️ 快捷键说明

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