把原来的多个汇编文件合并在6502.s一起了,方便管理,同时修正了一些已知bug,综合实验直接替换
另外几个.s文件就不需要了,工程里只保留6502.s一个汇编文件就行了
顺便再发个基于429的SEGA_SMS模拟器全速有声音。
注意:手柄键值传递要改一下
原来的
uint8 PADdata; //手柄1键值
uint8 PADdata1; //手柄2键值
改成
uint8 PADdata0; //手柄1键值
uint8 PADdata1; //手柄2键值
关于模拟器黑屏,死机,mapper支持问题直接在此留言,尽量为你们解决
还有基于429的全功能版本(支持即时存档,读档,电池存档,作弊修改)需要的也可以留言
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
void map67_0(signed char page); //6502.s
void Mapper003_Reset()
{
if((NESrom->crc32==0x0AA0D382)|(NESrom->crc32==0xADCE5A3B))//俄罗斯方块需要
map67_0(0); //6502.s
set_PPU_banks(0,1,2,3,4,5,6,7);
}
mapper 3的初始化
cpu6502_init();这几个的初始化注意顺序Mapper_Init();一定要在 cpu6502_init()之后;
 
Mapper_Init();
apu_init();
Apu_Write4017是特殊外部音频芯片,要增加很多代码
还有比如// CHECK_MMC2(pattern_addr);//***********不要为了一小部分游戏拖慢速度****************
ppu的MMC2要模拟的话速度回大幅度减低,我测试过mapper9,10要用
要开启首先反注译ppu.c的
// CHECK_MMC2(pattern_addr);有2处
void 
#define CHECK_MMC2(addr)
if(((addr) & 0x0FC0) == 0x0FC0)
{
if((((addr) & 0x0FF0) == 0x0FD0) || (((addr) & 0x0FF0) == 0x0FE0))
{
 
}
}
---------------------------------
void Apu_Write4017(uint8 value,uint32 address )
{
#ifdef FRAME_IRQ
apudata_t d;
if(!frame_irq_disenabled)
{
frame_irq_enabled = value;
}
if(apu->ext)
{
apu_memwrite* mw = apu->ext->mem_write;
while(mw->max_range != -1)
{
if((mw->min_range <= address) && ((mw->max_range >= address)))
{
d.timestamp = clocks;//d.timestamp = nes6502_getcycles(FALSE);
d.address = address|0x4000;
d.value = value;
apu_enqueue(&d);
break;
}
mw++;
}
}
#endif
}
一周热门 更多>