merged ppu code, added input+zapper, FDS/VS insert in menu
[fceu.git] / input / bworld.c
1 /* FCE Ultra - NES/Famicom Emulator
2  *
3  * Copyright notice for this file:
4  *  Copyright (C) 2003 Xodnizel
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #include <string.h>
22 #include "share.h"
23
24 static int seq,ptr,bit,cnt,have;
25 static uint8 bdata[20];
26
27
28 static uint8 FP_FASTAPASS(2) Read(int w, uint8 ret)
29 {
30  if(w && have)
31  {
32   switch(seq)
33   {
34    case 0: seq++; ptr=0; ret|=0x4; break;
35    case 1: seq++; bit=bdata[ptr]; cnt=0; ret|=0x4; break;
36    case 2: ret|=((bit&0x01)^0x01)<<2; bit>>=1; if(++cnt > 7) seq++;
37            break;
38    case 3: if(++ptr > 19)
39            {
40             seq=-1;
41             have=0;
42            }
43            else
44             seq=1;
45    default: break;
46   }
47  }
48  return(ret);
49 }
50
51 static void FP_FASTAPASS(1) Write(uint8 V)
52 {
53  //printf("%02x\n",V);
54 }
55
56 static void FP_FASTAPASS(2) Update(void *data, int arg)
57 {
58  if(*(uint8 *)data)
59  {
60   *(uint8 *)data=0;
61   seq=ptr=0;
62   have=1;
63   strcpy((char *)bdata,(char *)data+1);
64   strcpy((char *)&bdata[13],"SUNSOFT");
65  }
66 }
67
68 static INPUTCFC BarcodeWorld={Read,Write,0,Update,0,0};
69
70 INPUTCFC *FCEU_InitBarcodeWorld(void)
71 {
72  return(&BarcodeWorld);
73 }
74