Previous 199869 Revisions Next

r30837 Wednesday 4th June, 2014 at 20:46:54 UTC by Wilbert Pol
(MESS) msx.c: Added support for mapper used by halnote (nw)
[hash]msx2_flop.xml
[src/emu/bus]bus.mak
[src/emu/bus/msx_cart]cartridge.c halnote.c* halnote.h*

trunk/hash/msx2_flop.xml
r30836r30837
333333   </software>
334334
335335
336<!-- Needs system disk + specific mapper -->
337   <software name="halnote" supported="no">
336   <software name="halnote">
338337      <description>HalNote (Jpn)</description>
339338      <year>1987</year>
340339      <publisher>HAL Kenkyuujo</publisher>
r30836r30837
354353         <dataarea name="rom" size="1048576">
355354            <rom name="hal note (japan) (program).rom" size="1048576" crc="40313fec" sha1="1af617bfd11b10a71936c606174a80019762ea71" status="baddump" offset="0" />
356355         </dataarea>
356         <dataarea name="sram" size="16384">
357         </dataarea>
357358      </part>
358359   </software>
359360
trunk/src/emu/bus/msx_cart/halnote.c
r0r30837
1#include "emu.h"
2#include "halnote.h"
3
4
5const device_type MSX_CART_HALNOTE = &device_creator<msx_cart_halnote>;
6
7
8msx_cart_halnote::msx_cart_halnote(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
9   : device_t(mconfig, MSX_CART_HALNOTE, "MSX Cartridge - Halnote", tag, owner, clock, "msx_cart_halnote", __FILE__)
10   , msx_cart_interface(mconfig, *this)
11{
12   for (int i = 0; i < 8; i++)
13   {
14      m_selected_bank[i] = 0;
15      m_bank_base[i] = NULL;
16   }
17}
18
19
20void msx_cart_halnote::device_start()
21{
22   save_item(NAME(m_selected_bank));
23
24   machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_halnote::restore_banks), this));
25}
26
27
28void msx_cart_halnote::map_bank(int bank)
29{
30   if (bank < 2)
31   {
32      return;
33   }
34
35   // Special banks
36   if (bank == 6 || bank == 7)
37   {
38      m_bank_base[bank] = get_rom_base() + 0x80000 + (m_selected_bank[bank] * 0x800);
39      return;
40   }
41
42   m_bank_base[bank] = get_rom_base() + ((m_selected_bank[bank] * 0x2000) & 0xFFFFF);
43   if (bank == 2)
44   {
45      if (m_selected_bank[bank] & 0x80)
46      {
47         m_bank_base[0] = get_sram_base();
48         m_bank_base[1] = get_sram_base() + 0x2000;
49      }
50      else
51      {
52         m_bank_base[0] = NULL;
53         m_bank_base[1] = NULL;
54      }
55   }
56}
57
58
59void msx_cart_halnote::restore_banks()
60{
61   for (int i = 0; i < 8; i++)
62   {
63      map_bank(i);
64   }
65}
66
67
68void msx_cart_halnote::device_reset()
69{
70   for (int i = 0; i < 8; i++)
71   {
72      m_selected_bank[i] = 0;
73   }
74}
75
76
77void msx_cart_halnote::initialize_cartridge()
78{
79   if (get_rom_size() != 0x100000)
80   {
81      fatalerror("halnote: Invalid ROM size\n");
82   }
83
84   restore_banks();
85}
86
87
88READ8_MEMBER(msx_cart_halnote::read_cart)
89{
90   if (offset >= 0xc000)
91   {
92      return 0xFF;
93   }
94
95   if ((offset & 0xf000) == 0x7000 && (m_selected_bank[3] & 0x80))
96   {
97      return m_bank_base[6 + ((offset >> 11) & 0x01)][offset & 0x7ff];
98   }
99
100   const UINT8 *mem = m_bank_base[offset >> 13];
101
102   if (mem)
103   {
104      return mem[offset & 0x1fff];
105   }
106   return 0xff;
107}
108
109
110WRITE8_MEMBER(msx_cart_halnote::write_cart)
111{
112   if (offset < 0x4000)
113   {
114      if (m_bank_base[0] != NULL)
115      {
116         m_sram[offset & 0x3fff] = data;
117         return;
118      }
119   }
120
121   switch (offset)
122   {
123      case 0x4FFF:
124         m_selected_bank[2] = data;
125         map_bank(2);
126         break;
127
128      case 0x6FFF:     // 6000-7FFF
129         m_selected_bank[3] = data;
130         map_bank(3);
131         break;
132
133      case 0x77FF:
134         m_selected_bank[6] = data;
135         map_bank(6);
136         break;
137
138      case 0x7FFF:
139         m_selected_bank[7] = data;
140         map_bank(7);
141         break;
142
143      case 0x8FFF:
144         m_selected_bank[4] = data;
145         map_bank(4);
146         break;
147
148      case 0xAFFF:
149         m_selected_bank[5] = data;
150         map_bank(5);
151         break;
152
153      default:
154         logerror("msx_cart_halnote: Unhandled write %02x to %04x\n", data, offset);
155         break;
156   }
157}
158
Property changes on: trunk/src/emu/bus/msx_cart/halnote.c
Added: svn:eol-style
   + native
Added: svn:mime-type
   + text/plain
trunk/src/emu/bus/msx_cart/halnote.h
r0r30837
1#ifndef __MSX_CART_HALNOTE_H
2#define __MSX_CART_HALNOTE_H
3
4#include "bus/msx_cart/cartridge.h"
5
6
7extern const device_type MSX_CART_HALNOTE;
8
9
10class msx_cart_halnote : public device_t
11                  , public msx_cart_interface
12{
13public:
14   msx_cart_halnote(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
15
16   // device-level overrides
17   virtual void device_start();
18   virtual void device_reset();
19
20   virtual void initialize_cartridge();
21
22   virtual DECLARE_READ8_MEMBER(read_cart);
23   virtual DECLARE_WRITE8_MEMBER(write_cart);
24
25   void restore_banks();
26
27private:
28   UINT8 m_selected_bank[8];
29   UINT8 *m_bank_base[8];
30
31   void map_bank(int bank);
32};
33
34
35#endif
Property changes on: trunk/src/emu/bus/msx_cart/halnote.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/bus/msx_cart/cartridge.c
r30836r30837
55#include "crossblaim.h"
66#include "dooly.h"
77#include "fmpac.h"
8#include "halnote.h"
89#include "hfox.h"
910#include "holy_quran.h"
1011#include "konami.h"
r30836r30837
4950   SLOT_INTERFACE_INTERNAL("keyboard_master", MSX_CART_KEYBOARD_MASTER)
5051   SLOT_INTERFACE_INTERNAL("holy_quran", MSX_CART_HOLY_QURAN)
5152   SLOT_INTERFACE_INTERNAL("dooly", MSX_CART_DOOLY)
53   SLOT_INTERFACE_INTERNAL("halnote", MSX_CART_HALNOTE)
5254SLOT_INTERFACE_END
5355
5456
trunk/src/emu/bus/bus.mak
r30836r30837
412412BUSOBJS += $(BUSOBJ)/msx_cart/crossblaim.o
413413BUSOBJS += $(BUSOBJ)/msx_cart/dooly.o
414414BUSOBJS += $(BUSOBJ)/msx_cart/fmpac.o
415BUSOBJS += $(BUSOBJ)/msx_cart/halnote.o
415416BUSOBJS += $(BUSOBJ)/msx_cart/hfox.o
416417BUSOBJS += $(BUSOBJ)/msx_cart/holy_quran.o
417418BUSOBJS += $(BUSOBJ)/msx_cart/konami.o

Previous 199869 Revisions Next


© 1997-2024 The MAME Team