?? nmk.c
字號:
case 0x4010: //fprintf(stderr,"BAD\n"); return OKIM6295_status_1_r( 1 ); //return M6295buffer_status(1); //return 0; break; default: //if(addr>0x4000) print_debug("RW:%06x\n",addr); return ReadWord(&RAM[0x10000+addr]); break; } return 0;}int NMKDecodeFG0(UINT8 *src, UINT32 size){ UINT32 ta,tb; if(!(GFX_FG0=AllocateMem(0x40000))) return 0; memset(GFX_FG0,0x00,0x40000); tb=0; for(ta=0;ta<size;ta++,tb+=2){ GFX_FG0[tb+0]=(src[ta]>>4)^15; GFX_FG0[tb+1]=(src[ta]&15)^15; } FG0_Mask = make_solid_mask_8x8(GFX_FG0, 0x1000); return 1;}int NMKDecodeSPR(UINT8 *src, UINT32 size){ UINT32 ta,tb; if(!(GFX_SPR=AllocateMem(size<<1))) return 0; tb=0; for(ta=0;ta<size;ta+=4){ GFX_SPR[tb+0]=(src[ta+0]>>4)^15; GFX_SPR[tb+1]=(src[ta+0]&15)^15; GFX_SPR[tb+2]=(src[ta+1]>>4)^15; GFX_SPR[tb+3]=(src[ta+1]&15)^15; GFX_SPR[tb+4]=(src[ta+2]>>4)^15; GFX_SPR[tb+5]=(src[ta+2]&15)^15; GFX_SPR[tb+6]=(src[ta+3]>>4)^15; GFX_SPR[tb+7]=(src[ta+3]&15)^15; tb+=16; if((tb&0xFF)==0){tb-=0xF8;} else{if((tb&0xFF)==8){tb-=8;}} } SPR_Mask = make_solid_mask_pad_16x16(GFX_SPR, (size<<1)>>8, 0x10000); return 1;}int NMKDecodeSPR_Mustang(UINT8 *src, UINT32 size){ int ta,tb,ss; ss=size/2; if(!(GFX_SPR=AllocateMem(size<<1))) return 0; tb=0; for(ta=0;ta<ss;ta+=2){ GFX_SPR[tb+0]=(src[ ta+0]>>4)^15; GFX_SPR[tb+1]=(src[ ta+0]&15)^15; GFX_SPR[tb+2]=(src[ss+ta+0]>>4)^15; GFX_SPR[tb+3]=(src[ss+ta+0]&15)^15; GFX_SPR[tb+4]=(src[ ta+1]>>4)^15; GFX_SPR[tb+5]=(src[ ta+1]&15)^15; GFX_SPR[tb+6]=(src[ss+ta+1]>>4)^15; GFX_SPR[tb+7]=(src[ss+ta+1]&15)^15; tb+=16; if((tb&0xFF)==0){tb-=0xF8;} else{if((tb&0xFF)==8){tb-=8;}} } SPR_Mask = make_solid_mask_pad_16x16(GFX_SPR, (size<<1)>>8, 0x10000); return 1;}int NMKDecodeBG1(UINT8 *src, UINT32 size){ UINT32 ta,tb; if(!(GFX_BG1=AllocateMem(0x100000))) return(0); memset(GFX_BG1,0x00,0x100000); tb=0; for(ta=0;ta<size;ta+=4){ GFX_BG1[tb+0]=(src[ta+0]>>4)^15; GFX_BG1[tb+1]=(src[ta+0]&15)^15; GFX_BG1[tb+2]=(src[ta+1]>>4)^15; GFX_BG1[tb+3]=(src[ta+1]&15)^15; GFX_BG1[tb+4]=(src[ta+2]>>4)^15; GFX_BG1[tb+5]=(src[ta+2]&15)^15; GFX_BG1[tb+6]=(src[ta+3]>>4)^15; GFX_BG1[tb+7]=(src[ta+3]&15)^15; tb+=16; if((tb&0xFF)==0){tb-=0xF8;} else{if((tb&0xFF)==8){tb-=8;}} } BG1_Mask = make_solid_mask_16x16(GFX_BG1, 0x1000); return 1;}int NMKDecodeBG0(UINT8 *src, UINT32 size){ UINT32 ta,tb; if(size <= 0x100000){ if(!(GFX_BG0=AllocateMem(0x100000))) return(0); memset(GFX_BG0,0x00,0x100000); } else{ if(!(GFX_BG0=AllocateMem(size * 2))) return(0); memset(GFX_BG0,0x00,size * 2); } tb=0; for(ta=0;ta<size;ta+=4){ GFX_BG0[tb+0]=(src[ta+0]>>4)^15; GFX_BG0[tb+1]=(src[ta+0]&15)^15; GFX_BG0[tb+2]=(src[ta+1]>>4)^15; GFX_BG0[tb+3]=(src[ta+1]&15)^15; GFX_BG0[tb+4]=(src[ta+2]>>4)^15; GFX_BG0[tb+5]=(src[ta+2]&15)^15; GFX_BG0[tb+6]=(src[ta+3]>>4)^15; GFX_BG0[tb+7]=(src[ta+3]&15)^15; tb+=16; if((tb&0xFF)==0){tb-=0xF8;} else{if((tb&0xFF)==8){tb-=8;}} } if(size <= 0x100000) BG0_Mask = make_solid_mask_16x16(GFX_BG0, 0x1000); else BG0_Mask = make_solid_mask_16x16(GFX_BG0, size/0x80); return 1;}int NMKDecodeBG0_BJT(UINT8 *src, UINT32 size){ UINT32 ta,tb; if(!(GFX_BG0=AllocateMem(size * 2))) return(0); memset(GFX_BG0,0x00,size * 2); tb=0; for(ta=0;ta<size;ta++){ GFX_BG0[tb+0]=(src[ta+0]>>4)^15; GFX_BG0[tb+1]=(src[ta+0]&15)^15; tb+=2; } BG0_Mask = make_solid_mask_8x8(GFX_BG0, size/0x20); return 1;}static void EmptySoundFrame(void){}static void AddNMKControls(void){ // Set Sound Only Emulation Frame // ------------------------------ ExecuteSoundFrame=&EmptySoundFrame; memset(RAM+0x00000,0x00,0x30000); memset(RAM+0x10000,0xFF,0x00010); if(romset==7) RAM_COL=RAM+0x1C000; else RAM_COL=RAM+0x18000; InitPaletteMap(RAM_COL, 0x40, 0x10, 0x8000); set_colour_mapper(&col_map_rrrr_gggg_bbbb_rgbx_rev);}void AddNMKMainCPU(UINT32 ram, UINT32 vram){ AddMemFetch(0x000000, 0x07FFFF, ROM+0x000000-0x000000); // 68000 ROM AddMemFetch(-1, -1, NULL); AddReadByte(0x000000, 0x07FFFF, NULL, ROM+0x000000); // 68000 ROM AddReadByte(ram, ram+0xFFFF, NULL, RAM+0x000000); // 68000 RAM //AddReadByte(vram+0x4000,vram+0x4001,OKIM6295_status_0_r,NULL); //AddReadByte(vram+0x4010,vram+0x4011,OKIM6295_status_1_r,NULL); AddReadByte(vram, vram+0x1FFFF, NULL, RAM+0x010000); // SCREEN RAM AddReadByte(0x000000, 0xFFFFFF, DefBadReadByte, NULL); // <Bad Reads> AddReadByte(-1, -1, NULL, NULL); AddReadWord(0x000000, 0x07FFFF, NULL, ROM+0x000000); // 68000 ROM AddReadWord(ram, ram+0xFFFF, NULL, RAM+0x000000); // 68000 RAM AddReadWord(vram+0x8000,vram+0x1FFFF, NULL, RAM+0x018000); // SCREEN RAM //AddReadWord(vram+0x4000,vram+0x4001,OKIM6295_status_0_r,NULL); //AddReadWord(vram+0x4010,vram+0x4011,OKIM6295_status_1_r,NULL); AddReadWord(vram, vram+0x07FFF, NMKVideoRW, NULL); // MISC SCREEN RAM AddReadWord(0x000000, 0xFFFFFF, DefBadReadWord, NULL); // <Bad Reads> AddReadWord(-1, -1,NULL, NULL); AddWriteByte(ram, ram+0xFFFF, NULL, RAM+0x000000); // 68000 RAM AddWriteByte(vram+0x8000, vram+0x1FFFF, NULL, RAM+0x018000); // SCREEN RAM //AddWriteByte(vram+0x4000, vram+0x04001,OKIM6295_data_0_w , NULL); // MISC SCREEN RAM //AddWriteByte(vram+0x4010, vram+0x04011,OKIM6295_data_1_w , NULL); // MISC SCREEN RAM //AddWriteByte(vram+0x4020, vram+0x0402f,bjtwin_oki6295_bankswitch_w , NULL); // MISC SCREEN RAM AddWriteByte(vram, vram+0x07FFF, NMKVideoWB, NULL); // MISC SCREEN RAM AddWriteByte(0xAA0000, 0xAA0001, Stop68000, NULL); // Trap Idle 68000 AddWriteByte(0x000000, 0xFFFFFF, DefBadWriteByte, NULL); // <Bad Writes> AddWriteByte(-1, -1, NULL, NULL); AddWriteWord(ram, ram+0xFFFF, NULL, RAM+0x000000); // 68000 RAM AddWriteWord(vram+0x8000, vram+0x1FFFF, NULL, RAM+0x018000); // SCREEN RAM //AddWriteWord(vram+0x4000, vram+0x04001,OKIM6295_data_0_w , NULL); // MISC SCREEN RAM //AddWriteWord(vram+0x4010, vram+0x04011,OKIM6295_data_1_w , NULL); // MISC SCREEN RAM //AddWriteWord(vram+0x4020, vram+0x402f, bjtwin_oki6295_bankswitch_w , NULL); // MISC SCREEN RAM AddWriteWord(vram, vram+0x07FFF, NMKVideoWW, NULL); // MISC SCREEN RAM AddWriteWord(0x000000, 0xFFFFFF, DefBadWriteWord, NULL); // <Bad Writes> AddWriteWord(-1, -1, NULL, NULL); AddInitMemory(); // Set Starscream mem pointers... }void LoadBombJackTwin(void){ int ta; romset=0; if(!(ROM=AllocateMem(0x100000))) return; if(!(RAM=AllocateMem(0x60000))) return; if(!load_rom("bjt.35", ROM, 0x10000)) return; // 8x8 FG0 TILES (OK) if(!NMKDecodeFG0(ROM,0x10000))return; if(!load_rom("bjt.100", ROM, 0x100000)) return; // 16x16 SPRITES (OK) DecodeBombJackTwin_OBJ(ROM,0x100000);// DecodeBombJackTwin_OBJ(ROM); kath if(!NMKDecodeSPR(ROM,0x100000))return; if(!load_rom("bjt.32", ROM, 0x100000)) return; // 16x16 TILES (OK) DecodeBombJackTwin_BG0(ROM,0x100000);// DecodeBombJackTwin_BG0(ROM); kath if(!NMKDecodeBG0_BJT(ROM,0x100000))return; if(!load_rom("bjt.77", RAM+0x00000, 0x40000)) return; // MAIN 68000 for(ta=0;ta<0x40000;ta++){ ROM[ta+ta]=RAM[ta]; } if(!load_rom("bjt.76", RAM+0x00000, 0x40000)) return; for(ta=0;ta<0x40000;ta++){ ROM[ta+ta+1]=RAM[ta]; } /*-----[Sound Setup]-----*/ if(!(PCMROM = AllocateMem(0x200000))) return; if(!load_rom("bjt.130",PCMROM+0x000000,0x100000)) return; if(!load_rom("bjt.127",PCMROM+0x100000,0x100000)) return; ADPCMSetBuffers(((struct ADPCMinterface*)&m6295_interface),PCMROM,0x100000);/* for(ta=0;ta<0x10;ta++){ *//* m6295_romlist_chip_a[ta].data = PCMROM+0x000000+(ta*0x10000); *//* m6295_romlist_chip_a[ta].size = 0x10000; *//* m6295_romlist_chip_b[ta].data = PCMROM+0x100000+(ta*0x10000); *//* m6295_romlist_chip_b[ta].size = 0x10000; *//* } */ /*-----------------------*/ RAMSize=0x40000; scr_x = 384; scr_y = 224; // 68000 Speed hack WriteLong68k(&ROM[0x096EA],0x13FC0000); // move.b #$00,$AA0000 WriteLong68k(&ROM[0x096EE],0x00AA0000); // // Input hack, so test mode is available WriteLong68k(&ROM[0x08F64],0x4E714E71); // WriteLong68k(&ROM[0x08F68],0x4E714E71); // WriteLong68k(&ROM[0x08F6C],0x4E714E71); // WriteLong68k(&ROM[0x08F70],0x4E714E71); // WriteLong68k(&ROM[0x08F74],0x4E714E71); // // Checksum hack ROM[0x09172] = 0x60;/* * StarScream Stuff follows */ ByteSwap(ROM,0x80000); ByteSwap(RAM,0x40000); AddNMKMainCPU(0x0F0000, 0x080000); AddNMKControls();}void LoadSabotenBombers(void){ int ta; romset=0; if(!(ROM=AllocateMem(0x200000))) return; if(!(RAM=AllocateMem(0x60000))) return; if(!load_rom("ic35.sb3", ROM, 0x10000)) return; // 8x8 FG0 TILES (OK) if(!NMKDecodeFG0(ROM,0x10000))return; if(!load_rom("ic100.sb5", ROM, 0x200000)) return; // 16x16 SPRITES (OK) DecodeBombJackTwin_OBJ(ROM,0x200000);// DecodeBombJackTwin_OBJ(ROM); kath if(!NMKDecodeSPR(ROM,0x200000))return; if(!load_rom("ic32.sb4", ROM, 0x200000)) return; // 16x16 TILES (OK) DecodeBombJackTwin_BG0(ROM,0x200000); if(!NMKDecodeBG0_BJT(ROM,0x200000))return; if(!load_rom("ic76.sb1", RAM+0x00000, 0x40000)) return; // MAIN 68000 for(ta=0;ta<0x40000;ta++){ ROM[ta+ta]=RAM[ta]; } if(!load_rom("ic75.sb2", RAM+0x00000, 0x40000)) return; for(ta=0;ta<0x40000;ta++){ ROM[ta+ta+1]=RAM[ta]; } /*-----[Sound Setup]-----*/ if(!(PCMROM = AllocateMem(0x200000))) return; if(!load_rom("ic30.sb6",PCMROM+0x000000,0x100000)) return; if(!load_rom("ic27.sb7",PCMROM+0x100000,0x100000)) return; ADPCMSetBuffers(((struct ADPCMinterface*)&m6295_interface),PCMROM,0x100000);/* for(ta=0;ta<0x10;ta++){ *//* m6295_romlist_chip_a[ta].data = PCMROM+0x000000+(ta*0x10000); *//* m6295_romlist_chip_a[ta].size = 0x10000; *//* m6295_romlist_chip_b[ta].data = PCMROM+0x100000+(ta*0x10000); *//* m6295_romlist_chip_b[ta].size = 0x10000; *//* } */ /*-----------------------*/ RAMSize=0x40000; scr_x = 384; scr_y = 224; // 68000 Speed hack// WriteLong68k(&ROM[0x096EA],0x13FC0000); // move.b #$00,$AA0000// WriteLong68k(&ROM[0x096EE],0x00AA0000); // // Input hack, so test mode is available// WriteLong68k(&ROM[0x08F64],0x4E714E71); //// WriteLong68k(&ROM[0x08F68],0x4E714E71); //// WriteLong68k(&ROM[0x08F6C],0x4E714E71); //// WriteLong68k(&ROM[0x08F70],0x4E714E71); //// WriteLong68k(&ROM[0x08F74],0x4E714E71); // // Checksum hack// ROM[0x09172] = 0x60;/* * StarScream Stuff follows */ ByteSwap(ROM,0x80000); ByteSwap(RAM,0x40000); AddNMKMainCPU(0x0F0000, 0x080000); AddNMKControls();}void load_macross_2(void){ //int ta; romset=8; if(!(RAM=AllocateMem(0x60000))) return; if(!(ROM=AllocateMem(0x200000))) return; if(!load_rom("921a01", ROM, 0x20000)) return; // 8x8 FG0 TILES (OK) if(!NMKDecodeFG0(ROM,0x20000))return; if(!load_rom("921a07", ROM, 0x200000)) return; // 16x16 SPRITES (OK) DecodeBombJackTwin_OBJ(ROM,0x200000);// DecodeBombJackTwin_OBJ(ROM); kath if(!NMKDecodeSPR(ROM,0x200000))return; if(!load_rom("921a04", ROM, 0x200000)) return; // 16x16 TILES (OK) DecodeBombJackTwin_BG0(ROM,0x200000);// DecodeBombJackTwin_BG0(ROM); kath if(!NMKDecodeBG0(ROM,0x200000))return; FreeMem(ROM); if(!(ROM=AllocateMem(0x80000))) return; if(!load_rom("921a03", ROM+0x00000, 0x80000)) return; // MAIN 68000 ByteSwap(ROM,0x80000); /*-----[Sound Setup]-----*/ if(!(PCMROM = AllocateMem(0x100000))) return; if(!load_rom("921a05",PCMROM+0x000000,0x080000)) return; if(!load_rom("921a06",PCMROM+0x080000,0x080000)) return;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -