Previous 199869 Revisions Next

r23715 Saturday 15th June, 2013 at 08:42:49 UTC by Fabio Priuli
(MESS) famicom: added support for loading/saving BASIC programs from/to
cassette. wav files supported only. [Fabio Priuli]

(MESS) Added software list for BASIC programs saved to tape [Anna Wu, UglyJoe, Fabio Priuli]

If anyone has more Family BASIC tapes or other cassettes for Famicom games or add-ons (e.g. Bandai Karaoke or Fukutake Study Box)
or for some chinese clones (ABM, or Bridge, or any other), please contact us.
[hash]famicom_cass.xml*
[src/mess/drivers]nes.c
[src/mess/includes]nes.h
[src/mess/machine]nes.c

trunk/hash/famicom_cass.xml
r0r23715
1<?xml version="1.0"?>
2<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
3<softwarelist name="famicom_cass" description="Nintendo Famicom Family BASIC cassettes">
4
5<!--
6
7This list is a bit peculiar, since it contains cassette images obtained on a FC
8by saving BASIC programs typed in from magazines, books, or homebrew
9
10It's so difficult to find any of these, that they are definitely worth preservation!
11
12-->
13
14
15   <software name="hero">
16      <description>Hero</description>
17      <year>19??</year>
18      <publisher>&lt;unknown&gt;</publisher>
19      <info name="usage" value="Requires BASIC v3" />
20      <part name="cass" interface="fc_cass">
21         <dataarea name="cass" size="3235916">
22            <rom name="hero.wav" size="3235916" crc="38bad4f5" sha1="696da9274a144cbc5e95b9c92df700014296f211" offset="0" />
23         </dataarea>
24      </part>
25   </software>
26
27   <software name="starkill">
28      <description>Starkiller</description>
29      <year>19??</year>
30      <publisher>&lt;unknown&gt;</publisher>
31      <info name="usage" value="Requires BASIC v3" />
32      <part name="cass" interface="fc_cass">
33         <dataarea name="cass" size="3255484">
34            <rom name="starkiller.wav" size="3255484" crc="597e2ab3" sha1="eafa3c0576dbf3ce4991abafd05e4d0bf7b3a8e4" offset="0" />
35         </dataarea>
36      </part>
37   </software>
38
39   <software name="urbanchm">
40      <description>Urban Champ</description>
41      <year>19??</year>
42      <publisher>&lt;unknown&gt;</publisher>
43      <part name="cass" interface="fc_cass">
44         <dataarea name="cass" size="2318380">
45            <rom name="urbanchamp.wav" size="2318380" crc="1f5d0d6c" sha1="5d24f9cfa28f6cf5ee6c5188d1e9a425af0231ea" offset="0" />
46         </dataarea>
47      </part>
48   </software>
49
50
51<!-- These come from a book titled 任天堂のファミリーコンピュータ - ファミリーベーシック - がわかる本
52(Nintendo Family Computer & Family BASIC ga wakaru hon) and have been typed in and saved to
53tape by UglyJoe of famicomworld  -->
54
55   <software name="kanitori">
56      <description>Kanitori Game</description>
57      <year>19??</year>
58      <publisher>&lt;unknown&gt;</publisher>
59      <info name="alt_title" value="カニトリ ゲーム" />
60      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
61      <part name="cass1" interface="fc_cass">
62         <feature name="part_id" value="BG Data" />
63         <dataarea name="cass" size="2836972">
64            <rom name="bg1.wav" size="2836972" crc="eecd4278" sha1="12999d07a3cb9784008e51f97fb22543d2ab050a" offset="0" />
65         </dataarea>
66      </part>
67
68      <part name="cass2" interface="fc_cass">
69         <feature name="part_id" value="Program Data" />
70         <dataarea name="cass" size="1063360">
71            <rom name="prog1.wav" size="1063360" crc="2ef3ed0e" sha1="3a7876bcc84e1d7b10739a4930cc248f853d1803" offset="0" />
72         </dataarea>
73      </part>
74   </software>
75
76   <software name="kblesson">
77      <description>Keyboard Lesson</description>
78      <year>19??</year>
79      <publisher>&lt;unknown&gt;</publisher>
80      <info name="alt_title" value="キーボード レッスン" />
81      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
82      <part name="cass1" interface="fc_cass">
83         <feature name="part_id" value="BG Data" />
84         <dataarea name="cass" size="2856673">
85            <rom name="bg2.wav" size="2856673" crc="4b8cc5ba" sha1="5783bd1e220487e047b98ddc0d9c5a5ea8b3ce41" offset="0" />
86         </dataarea>
87      </part>
88
89      <part name="cass2" interface="fc_cass">
90         <feature name="part_id" value="Program Data" />
91         <dataarea name="cass" size="969115">
92            <rom name="prog2.wav" size="969115" crc="2237442b" sha1="956649d436bb4d5ac0d6f47c1c04da1ee75964e6" offset="0" />
93         </dataarea>
94      </part>
95   </software>
96
97   <software name="moonbas2">
98      <description>Moon Base 2</description>
99      <year>19??</year>
100      <publisher>&lt;unknown&gt;</publisher>
101      <info name="alt_title" value="ムーンベース2" />
102      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
103      <part name="cass1" interface="fc_cass">
104         <feature name="part_id" value="BG Data" />
105         <dataarea name="cass" size="2895991">
106            <rom name="bg3.wav" size="2895991" crc="e5dcb41f" sha1="11e0c2265b693861fb2b4f1c411799b8cd3d4be1" offset="0" />
107         </dataarea>
108      </part>
109
110      <part name="cass2" interface="fc_cass">
111         <feature name="part_id" value="Program Data" />
112         <dataarea name="cass" size="1019166">
113            <rom name="prog3.wav" size="1019166" crc="3c8ba31c" sha1="efddded189dc5700d3be6113b679f0cfe491e6fd" offset="0" />
114         </dataarea>
115      </part>
116   </software>
117
118   <software name="starship">
119      <description>Starship</description>
120      <year>19??</year>
121      <publisher>&lt;unknown&gt;</publisher>
122      <info name="alt_title" value="スターシップ " />
123      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
124      <part name="cass1" interface="fc_cass">
125         <feature name="part_id" value="BG Data" />
126         <dataarea name="cass" size="2857206">
127            <rom name="bg4.wav" size="2857206" crc="0cf4637e" sha1="9dc1549662335f7b28e661ed86f809eea8c5d8ec" offset="0" />
128         </dataarea>
129      </part>
130
131      <part name="cass2" interface="fc_cass">
132         <feature name="part_id" value="Program Data" />
133         <dataarea name="cass" size="1055373">
134            <rom name="prog4.wav" size="1055373" crc="ed38bc5d" sha1="70bbd042e9405f6b75aab5c9e483de272de3665a" offset="0" />
135         </dataarea>
136      </part>
137   </software>
138
139   <software name="sansugok">
140      <description>Sansuu Gokko</description>
141      <year>19??</year>
142      <publisher>&lt;unknown&gt;</publisher>
143      <info name="alt_title" value="サンスウゴッコ" />
144      <info name="usage" value="Requires BASIC v2" />
145      <part name="cass" interface="fc_cass">
146         <dataarea name="cass" size="1064957">
147            <rom name="prog5.wav" size="1064957" crc="414aa041" sha1="57be005ead4a02edcf8354dc0e85eec83a150ed7" offset="0" />
148         </dataarea>
149      </part>
150   </software>
151
152   <software name="bonbon">
153      <description>Bound Bon-Bon</description>
154      <year>19??</year>
155      <publisher>&lt;unknown&gt;</publisher>
156      <info name="alt_title" value="バウンド ボンボン" />
157      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
158      <part name="cass1" interface="fc_cass">
159         <feature name="part_id" value="BG Data" />
160         <dataarea name="cass" size="2864660">
161            <rom name="bg6.wav" size="2864660" crc="d2a12690" sha1="467a34dc83f7e0607914cc0944e69c75c4a49498" offset="0" />
162         </dataarea>
163      </part>
164
165      <part name="cass2" interface="fc_cass">
166         <feature name="part_id" value="Program Data" />
167         <dataarea name="cass" size="1159735">
168            <rom name="prog6.wav" size="1159735" crc="41e213bd" sha1="baca7c510a57ffaac8a13b5c2140653d151212c2" offset="0" />
169         </dataarea>
170      </part>
171   </software>
172
173   <software name="daimajin">
174      <description>Daimajin Attack</description>
175      <year>19??</year>
176      <publisher>&lt;unknown&gt;</publisher>
177      <info name="alt_title" value="ダイマジン アタック" />
178      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
179      <part name="cass1" interface="fc_cass">
180         <feature name="part_id" value="BG Data" />
181         <dataarea name="cass" size="2912049">
182            <rom name="bg7.wav" size="2912049" crc="998d0408" sha1="9e58958c03d742bd0e38322a399931c768dcea00" offset="0" />
183         </dataarea>
184      </part>
185
186      <part name="cass2" interface="fc_cass">
187         <feature name="part_id" value="Program Data" />
188         <dataarea name="cass" size="1014374">
189            <rom name="prog7.wav" size="1014374" crc="217bb5db" sha1="601fdab3d9ad28657b16aa149f08e7880dc8c235" offset="0" />
190         </dataarea>
191      </part>
192   </software>
193
194   <software name="mariosht">
195      <description>Mario Shooter</description>
196      <year>19??</year>
197      <publisher>&lt;unknown&gt;</publisher>
198      <info name="alt_title" value="マリオ シューター" />
199      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
200      <part name="cass1" interface="fc_cass">
201         <feature name="part_id" value="BG Data" />
202         <dataarea name="cass" size="2890750">
203            <rom name="bg8.wav" size="2890750" crc="669d942e" sha1="029e6ee88ae890c0072377557f2ddfd3112de57e" offset="0" />
204         </dataarea>
205      </part>
206
207      <part name="cass2" interface="fc_cass">
208         <feature name="part_id" value="Program Data" />
209         <dataarea name="cass" size="1105424">
210            <rom name="prog8.wav" size="1105424" crc="efbe8b45" sha1="065b05e8b0fc35580b3afe1c67dd8b8c36601c80" offset="0" />
211         </dataarea>
212      </part>
213   </software>
214
215   <software name="pingpon1">
216      <description>Ping Pong 1</description>
217      <year>19??</year>
218      <publisher>&lt;unknown&gt;</publisher>
219      <info name="alt_title" value="ピンポン1" />
220      <info name="usage" value="Requires BASIC v2; load BG first, then Program" />
221      <part name="cass1" interface="fc_cass">
222         <feature name="part_id" value="BG Data" />
223         <dataarea name="cass" size="2847622">
224            <rom name="bg9.wav" size="2847622" crc="0521c342" sha1="ec84d54220e3647df92f02b1e9096ada6c1cf93e" offset="0" />
225         </dataarea>
226      </part>
227
228      <part name="cass2" interface="fc_cass">
229         <feature name="part_id" value="Program Data" />
230         <dataarea name="cass" size="972310">
231            <rom name="prog9.wav" size="972310" crc="83f5aa2a" sha1="6d2de9de38d10ca6b55ef2daa86220af656a3768" offset="0" />
232         </dataarea>
233      </part>
234   </software>
235
236   <software name="pingpon2">
237      <description>Ping Pong 2</description>
238      <year>19??</year>
239      <publisher>&lt;unknown&gt;</publisher>
240      <info name="alt_title" value="ピンポン2" />
241      <info name="usage" value="Requires BASIC v2" />
242      <part name="cass1" interface="fc_cass">
243         <feature name="part_id" value="BG Data" />
244         <dataarea name="cass" size="2847622">
245            <rom name="bg9.wav" size="2847622" crc="0521c342" sha1="ec84d54220e3647df92f02b1e9096ada6c1cf93e" offset="0" />
246         </dataarea>
247      </part>
248
249      <part name="cass2" interface="fc_cass">
250         <feature name="part_id" value="Program Data" />
251         <dataarea name="cass" size="1057503">
252            <rom name="prog10.wav" size="1057503" crc="54540a93" sha1="da84c92adb6f7efcff330b629b6166a1d38ec38f" offset="0" />
253         </dataarea>
254      </part>
255   </software>
256
257
258</softwarelist>
Property changes on: trunk/hash/famicom_cass.xml
Added: svn:mime-type
   + text/xml
Added: svn:eol-style
   + native
trunk/src/mess/drivers/nes.c
r23714r23715
589589};
590590
591591
592static const cassette_interface fc_cassette_interface =
593{
594   cassette_default_formats,
595   NULL,
596   (cassette_state)(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED),
597   "fc_cass",
598   NULL
599};
600
601
602
592603static MACHINE_CONFIG_START( nes, nes_state )
593604   /* basic machine hardware */
594605   MCFG_CPU_ADD("maincpu", N2A03, NTSC_CLOCK)
r23714r23715
618629   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.90)
619630
620631   MCFG_NES_CARTRIDGE_ADD("nes_slot", nes_crt_interface, nes_cart, NULL)
621   MCFG_SOFTWARE_LIST_ADD("cart_list","nes")
622   MCFG_SOFTWARE_LIST_ADD("ntb_list","nes_ntbrom") // Nantettate Baseball mini_carts
632   MCFG_SOFTWARE_LIST_ADD("cart_list", "nes")
633   MCFG_SOFTWARE_LIST_ADD("ntb_list", "nes_ntbrom") // Nantettate Baseball mini_carts
623634MACHINE_CONFIG_END
624635
625636static MACHINE_CONFIG_DERIVED( nespal, nes )
r23714r23715
672683   MCFG_NES_CARTRIDGE_NOT_MANDATORY
673684
674685   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, nes_floppy_interface)
675   MCFG_SOFTWARE_LIST_ADD("flop_list","famicom_flop")
686   MCFG_SOFTWARE_LIST_ADD("flop_list", "famicom_flop")
687
688   MCFG_CASSETTE_ADD( "tape", fc_cassette_interface )
689   MCFG_SOFTWARE_LIST_ADD("cass_list", "famicom_cass")
676690MACHINE_CONFIG_END
677691
678692
trunk/src/mess/machine/nes.c
r23714r23715
386386   
387387   if ((exp & 0x0f) == 0x02)
388388   {
389      // here we should have the tape input
390      ret |= 0;
389      // tape input
390      if ((m_cassette->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY)
391      {
392         double level = m_cassette->input();
393         if (level <  0)
394            ret |= 0x00;
395         else
396            ret |= 0x02;
397      }
391398   }
392399   
393400   ret |= ((m_in_0.i0 >> m_in_0.shift) & 0x01);
r23714r23715
486493
487494   if ((exp & 0x0f) == 0x02 || (exp & 0x0f) == 0x03)
488495   {
489      // here we should also have the tape output
496      // tape output (not fully tested)
497      if ((m_cassette->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_RECORD)
498         m_cassette->output(((data & 0x07) == 0x07) ? +1.0 : -1.0);
490499     
491500      if (BIT(data, 2))   // keyboard active
492501      {
trunk/src/mess/includes/nes.h
r23714r23715
1212
1313#include "video/ppu2c0x.h"
1414#include "machine/nes_slot.h"
15#include "imagedev/cassette.h"
1516
1617// official PCBs
1718#include "machine/nes_nxrom.h"
r23714r23715
456457         m_maincpu(*this, "maincpu"),
457458         m_ppu(*this, "ppu"),
458459         m_sound(*this, "nessound"),
459         m_cartslot(*this, "nes_slot")
460         m_cartslot(*this, "nes_slot"),
461         m_cassette(*this, "tape")
460462      { }
461463
462464   /* input_related - this part has to be cleaned up (e.g. in_2 and in_3 are not really necessary here...) */
r23714r23715
491493   required_device<ppu2c0x_device> m_ppu;
492494   required_device<device_t> m_sound;
493495   optional_device<nes_cart_slot_device> m_cartslot;
496   optional_device<cassette_image_device> m_cassette;
494497
495498   int nes_ppu_vidaccess(int address, int data);
496499   void ppu_nmi(int *ppu_regs);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team