UINT8 __fastcall md_port_r(UINT16 port) { switch(port & 0xC0) { case 0x00: return z80_read_unmapped(); case 0x40: return vdp_counter_r(port); case 0x80: return vdp_read(port); case 0xC0: switch(port) { case 0xC0: case 0xC1: case 0xDC: case 0xDD: return input_r(port); } return z80_read_unmapped(); } /* Just to please the compiler */ return 0; }
UINT8 __fastcall smsj_port_r(UINT16 port) { port &= 0xFF; if(port == 0xF2 && !(sms.memctrl & 4)) return fmunit_detect_r(); switch(port & 0xC0) { case 0x00: return z80_read_unmapped(); case 0x40: return vdp_counter_r(port); case 0x80: return vdp_read(port); case 0xC0: return input_r(port); } /* Just to please the compiler */ return 0; }
uint8 ggms_port_r(uint16 port) { port &= 0xFF; switch(port & 0xC0) { case 0x00: return z80_read_unmapped(); case 0x40: return vdp_counter_r(port); case 0x80: return vdp_read(port); case 0xC0: switch(port) { case 0xC0: case 0xC1: case 0xDC: case 0xDD: return input_r(port); } return z80_read_unmapped(); } /* Just to please the compiler */ return -1; }
uint8 sms_port_r(uint16 port) { switch(port & 0xC0) { case 0x00: return z80_read_unmapped(); case 0x40: return vdp_counter_r(port); case 0x80: return vdp_read(port); case 0xC0: return input_r(port); } /* Just to please the compiler */ return -1; }
int main() { scanf("%d %d %d %d",&s,&r,&l,&c); int n=s+r+l; input_s(); input_r(); input_l(); input_c(); int w=0,k=0,sum=0,e=0; double z; int p,q; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++)//求线和线的交点 { if(intersect2D_2Segments(seg[i],seg[j])) { //printf("%d %d ",i,j); points[sum].x=I0->x; points[sum].y=I0->y; sum++; //printf("%lf %lf\n",I0->x,I0->y); } } for(int i=0;i<c;i++) for(int j=0;j<n;j++)//求线和圆的交点 { e=judge(cir[i],seg[j]); if(e==0)continue; else if(e==1) { points[sum].x=I0->x; points[sum].y=I0->y; sum++; //printf("%lf %lf\n",I0->x,I0->y); } else if(e==2) { points[sum].x=I0->x; points[sum].y=I0->y; sum++; //printf("%lf %lf\n",I0->x,I0->y); points[sum].x=I1->x; points[sum].y=I1->y; sum++; //printf("%lf %lf\n",I1->x,I1->y); } } //printf("%d %d\n",sum,sumover); //printf("%d %d\n",sum,sumover); for(int i=0;i<c;i++) for(int j=i+1;j<c;j++) { //printf("i=%d j=%d\n",i,j); if(insect(cir[i],cir[j])==1) { //printf("1\n"); points[sum].x=I0->x; points[sum].y=I0->y; sum++; //printf("%lf %lf\n",I0->x,I0->y); } else if(insect(cir[i],cir[j])==2) { //printf("2\n"); points[sum].x=I0->x; points[sum].y=I0->y; sum++; //printf("%lf %lf\n",I0->x,I0->y); points[sum].x=I1->x; points[sum].y=I1->y; //printf("%lf %lf\n",I1->x,I1->y); sum++; } } int sumover=sum; //printf("%d %d\n",sum,sumover); /* for(int i=0;i<sum;i++) { if(use[i]==0) { for(int j=i+1;j<sum;j++) { if(use[j]==0) { if(sub(points[i],points[j])<SMALL_NUM) { sumover--; use[j]=1; //printf("%d %d %d\n",i,j ,sumover); } } } // printf("i=%d %lf %lf\n",i,points[i].x,points[i].y); } }*/ printf("%d\n",sumover); return 0; }