資源簡介
FBAs游戲機模擬器源碼,支持模擬大多數街機,更能支持聯網對戰!
代碼片段和文件信息
#include?“burnint.h“
#include?“8255ppi.h“
#define?MAX_PPIS 3
PPIPortRead?PPI0PortReadA;
PPIPortRead?PPI0PortReadB;
PPIPortRead?PPI0PortReadC;
PPIPortWrite?PPI0PortWriteA;
PPIPortWrite?PPI0PortWriteB;
PPIPortWrite?PPI0PortWriteC;
PPIPortRead?PPI1PortReadA;
PPIPortRead?PPI1PortReadB;
PPIPortRead?PPI1PortReadC;
PPIPortWrite?PPI1PortWriteA;
PPIPortWrite?PPI1PortWriteB;
PPIPortWrite?PPI1PortWriteC;
PPIPortRead?PPI2PortReadA;
PPIPortRead?PPI2PortReadB;
PPIPortRead?PPI2PortReadC;
PPIPortWrite?PPI2PortWriteA;
PPIPortWrite?PPI2PortWriteB;
PPIPortWrite?PPI2PortWriteC;
typedef?struct
{
/*?mode?flags?*/
UINT8?groupA_mode;
UINT8?groupB_mode;
UINT8?portA_dir;
UINT8?portB_dir;
UINT8?portCH_dir;
UINT8?portCL_dir;
/*?handshake?signals?(1=asserted;?0=non-asserted)?*/
UINT8?obf_a;
UINT8?obf_b;
UINT8?ibf_a;
UINT8?ibf_b;
UINT8?inte_a;
UINT8?inte_b;
UINT8?in_mask[3]; /*?input?mask?*/
UINT8?out_mask[3]; /*?output?mask?*/
UINT8?read[3]; /*?data?read?from?ports?*/
UINT8?latch[3]; /*?data?written?to?ports?*/
UINT8?output[3]; /*?actual?output?data?*/
}?ppi8255;
static?ppi8255?chips[MAX_PPIS];
static?void?ppi8255_get_handshake_signals(ppi8255?*chip?UINT8?*result)
{
UINT8?handshake?=?0x00;
UINT8?mask?=?0x00;
/*?group?A?*/
if?(chip->groupA_mode?==?1)
{
if?(chip->portA_dir)
{
handshake?|=?chip->ibf_a???0x20?:?0x00;
handshake?|=?(chip->ibf_a?&&?chip->inte_a)???0x08?:?0x00;
mask?|=?0x28;
}
else
{
handshake?|=?chip->obf_a???0x00?:?0x80;
handshake?|=?(chip->obf_a?&&?chip->inte_a)???0x08?:?0x00;
mask?|=?0x88;
}
}
else?if?(chip->groupA_mode?==?2)
?? {
handshake?|=?chip->inte_a???0x08?:?0x00;
handshake?|=?chip->obf_a???0x00?:?0x80;
handshake?|=?chip->ibf_a???0x20?:?0x00;
mask?|=?0xA8;
}
/*?group?B?*/
if?(chip->groupB_mode?==?1)
?? {
if?(chip->portA_dir)
{
handshake?|=?chip->ibf_b???0x02?:?0x00;
handshake?|=?(chip->ibf_b?&&?chip->inte_b)???0x01?:?0x00;
mask?|=?0x03;
?? }
else
?? {
handshake?|=?chip->obf_b???0x00?:?0x02;
handshake?|=?(chip->obf_b?&&?chip->inte_b)???0x01?:?0x00;
mask?|=?0x03;
}
?? }
*result?&=?~mask;
*result?|=?handshake?&?mask;
}
static?void?ppi8255_write_port(ppi8255?*chip?int?port?int?chipnum)
{
UINT8?write_data;
write_data?=?chip->latch[port]?&?chip->out_mask[port];
write_data?|=?0xFF?&?~chip->out_mask[port];
/*?write?out?special?port?2?signals?*/
if?(port?==?2)
ppi8255_get_handshake_signals(chip?&write_data);
chip->output[port]?=?write_data;
if?(chipnum?==?0?&&?port?==?0)?{
if?(PPI0PortWriteA)?PPI0PortWriteA(write_data);
}
if?(chipnum?==?0?&&?port?==?1)?{
if?(PPI0PortWriteB)?PPI0PortWriteB(write_data);
}
if?(chipnum?==?0?&&?port?==?2)?{
if?(PPI0PortWriteC)?PPI0PortWriteC(write_data);
}
if?(chipnum?==?1?&&?port?==?0)?{
if?(PPI1PortWriteA)?PPI1PortWriteA(write_data);
}
if?(chipnum?==?1?&&?port?==?1)?{
if?(PPI1PortWriteB)?PPI1PortWriteB(write_data);
}
if?(chipnum?==?1?&&?port?==?2)?{
if?(PPI1PortWriteC)?PPI1P
- 上一篇:人工神經網絡原理及應用.pdf
- 下一篇:zeba
se用于zemax初始結構選擇
評論
共有 條評論