📄 volfied.c
字号:
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 + -