Previous 199869 Revisions Next

r32376 Thursday 25th September, 2014 at 15:58:42 UTC by Osso
dynax.c: moved remaining functions into the driver class (nw)
[src/mame/drivers]dynax.c
[src/mame/includes]dynax.h
[src/mame/video]dynax.c

trunk/src/mame/includes/dynax.h
r32375r32376
2929   UINT8 *  m_ddenlovr_pixmap[8];
3030
3131   /* irq */
32   void (*m_update_irq_func)(running_machine &machine);    // some games trigger IRQ at blitter end, some don't
32   typedef void (dynax_state::*irq_func)();    // some games trigger IRQ at blitter end, some don't
33   irq_func m_update_irq_func;
3334   UINT8 m_sound_irq;
3435   UINT8 m_vblank_irq;
3536   UINT8 m_blitter_irq;
r32375r32376
334335   int debug_mask();
335336   int debug_viewer( bitmap_ind16 &bitmap, const rectangle &cliprect );
336337   void dynax_common_reset();
338   void sprtmtch_update_irq();
339   void jantouki_update_irq();
340   void mjelctrn_update_irq();
341   void neruton_update_irq();
342   void jantouki_sound_update_irq();
343   void tenkai_show_6c();
344   void gekisha_set_rombank( UINT8 data );
337345};
338
339//----------- defined in drivers/dynax.c -----------
340void sprtmtch_update_irq(running_machine &machine);
341void jantouki_update_irq(running_machine &machine);
342void mjelctrn_update_irq(running_machine &machine);
343void neruton_update_irq(running_machine &machine);
trunk/src/mame/video/dynax.c
r32375r32376
546546   if (m_update_irq_func)
547547   {
548548      m_blitter_irq = 1;
549      m_update_irq_func(machine());
549      (this->*m_update_irq_func)();
550550   }
551551}
552552
r32375r32376
573573   if (m_update_irq_func)
574574   {
575575      m_blitter_irq = 1;
576      m_update_irq_func(machine());
576      (this->*m_update_irq_func)();
577577   }
578578}
579579
r32375r32376
600600   if (m_update_irq_func)
601601   {
602602      m_blitter2_irq = 1;
603      m_update_irq_func(machine());
603      (this->*m_update_irq_func)();
604604   }
605605}
606606
r32375r32376
751751
752752   m_hnoridur_layer_half2 = 0;
753753
754   m_update_irq_func = sprtmtch_update_irq;
754   m_update_irq_func = &dynax_state::sprtmtch_update_irq;
755755
756756   m_blit_scroll_x = 0;
757757   m_blit2_scroll_x = 0;
r32375r32376
899899
900900   dynax_common_reset();
901901   m_layer_layout = LAYOUT_JANTOUKI;
902   m_update_irq_func = jantouki_update_irq;
902   m_update_irq_func = &dynax_state::jantouki_update_irq;
903903
904904   save_pointer(NAME(m_pixmap[0][0]), 256 * 256);
905905   save_pointer(NAME(m_pixmap[0][1]), 256 * 256);
r32375r32376
937937   VIDEO_START_CALL_MEMBER(hnoridur);
938938
939939   m_priority_table = priority_mjelctrn;
940   m_update_irq_func = mjelctrn_update_irq;
940   m_update_irq_func = &dynax_state::mjelctrn_update_irq;
941941}
942942
943943VIDEO_START_MEMBER(dynax_state,neruton)
r32375r32376
945945   VIDEO_START_CALL_MEMBER(hnoridur);
946946
947947//  m_priority_table = priority_mjelctrn;
948   m_update_irq_func = neruton_update_irq;
948   m_update_irq_func = &dynax_state::neruton_update_irq;
949949}
950950
951951/***************************************************************************
trunk/src/mame/drivers/dynax.c
r32375r32376
9898
9999
100100/* It runs in IM 0, thus needs an opcode on the data bus */
101void sprtmtch_update_irq( running_machine &machine )
101void dynax_state::sprtmtch_update_irq()
102102{
103   dynax_state *state = machine.driver_data<dynax_state>();
104   int irq = (state->m_sound_irq ? 0x08 : 0) | ((state->m_vblank_irq) ? 0x10 : 0) | ((state->m_blitter_irq) ? 0x20 : 0) ;
105   state->m_maincpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
103   int irq = (m_sound_irq ? 0x08 : 0) | ((m_vblank_irq) ? 0x10 : 0) | ((m_blitter_irq) ? 0x20 : 0) ;
104   m_maincpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
106105}
107106
108107WRITE8_MEMBER(dynax_state::dynax_vblank_ack_w)
109108{
110109   m_vblank_irq = 0;
111   sprtmtch_update_irq(machine());
110   sprtmtch_update_irq();
112111}
113112
114113WRITE8_MEMBER(dynax_state::dynax_blitter_ack_w)
115114{
116115   m_blitter_irq = 0;
117   sprtmtch_update_irq(machine());
116   sprtmtch_update_irq();
118117}
119118
120119INTERRUPT_GEN_MEMBER(dynax_state::sprtmtch_vblank_interrupt)
121120{
122121   m_vblank_irq = 1;
123   sprtmtch_update_irq(machine());
122   sprtmtch_update_irq();
124123}
125124
126125WRITE_LINE_MEMBER(dynax_state::sprtmtch_sound_callback)
127126{
128127   m_sound_irq = state;
129   sprtmtch_update_irq(machine());
128   sprtmtch_update_irq();
130129}
131130
132131
r32375r32376
135134***************************************************************************/
136135
137136/* It runs in IM 0, thus needs an opcode on the data bus */
138void jantouki_update_irq(running_machine &machine)
137void dynax_state::jantouki_update_irq()
139138{
140   dynax_state *state = machine.driver_data<dynax_state>();
141   int irq = ((state->m_blitter_irq) ? 0x08 : 0) | ((state->m_blitter2_irq) ? 0x10 : 0) | ((state->m_vblank_irq) ? 0x20 : 0) ;
142   state->m_maincpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
139   int irq = ((m_blitter_irq) ? 0x08 : 0) | ((m_blitter2_irq) ? 0x10 : 0) | ((m_vblank_irq) ? 0x20 : 0) ;
140   m_maincpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
143141}
144142
145143WRITE8_MEMBER(dynax_state::jantouki_vblank_ack_w)
146144{
147145   m_vblank_irq = 0;
148   jantouki_update_irq(machine());
146   jantouki_update_irq();
149147}
150148
151149WRITE8_MEMBER(dynax_state::jantouki_blitter_ack_w)
152150{
153151   m_blitter_irq = data;
154   jantouki_update_irq(machine());
152   jantouki_update_irq();
155153}
156154
157155WRITE8_MEMBER(dynax_state::jantouki_blitter2_ack_w)
158156{
159157   m_blitter2_irq = data;
160   jantouki_update_irq(machine());
158   jantouki_update_irq();
161159}
162160
163161INTERRUPT_GEN_MEMBER(dynax_state::jantouki_vblank_interrupt)
164162{
165163   m_vblank_irq = 1;
166   jantouki_update_irq(machine());
164   jantouki_update_irq();
167165}
168166
169167
r32375r32376
171169                            Jantouki - Sound CPU
172170***************************************************************************/
173171
174static void jantouki_sound_update_irq(running_machine &machine)
172void dynax_state::jantouki_sound_update_irq()
175173{
176   dynax_state *state = machine.driver_data<dynax_state>();
177   int irq = ((state->m_sound_irq) ? 0x08 : 0) | ((state->m_soundlatch_irq) ? 0x10 : 0) | ((state->m_sound_vblank_irq) ? 0x20 : 0) ;
178   state->m_soundcpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
174   int irq = ((m_sound_irq) ? 0x08 : 0) | ((m_soundlatch_irq) ? 0x10 : 0) | ((m_sound_vblank_irq) ? 0x20 : 0) ;
175   m_soundcpu->set_input_line_and_vector(0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
179176}
180177
181178INTERRUPT_GEN_MEMBER(dynax_state::jantouki_sound_vblank_interrupt)
182179{
183180   m_sound_vblank_irq = 1;
184   jantouki_sound_update_irq(machine());
181   jantouki_sound_update_irq();
185182}
186183
187184WRITE8_MEMBER(dynax_state::jantouki_sound_vblank_ack_w)
188185{
189186   m_sound_vblank_irq = 0;
190   jantouki_sound_update_irq(machine());
187   jantouki_sound_update_irq();
191188}
192189
193190WRITE_LINE_MEMBER(dynax_state::jantouki_sound_callback)
194191{
195192   m_sound_irq = state;
196   jantouki_sound_update_irq(machine());
193   jantouki_sound_update_irq();
197194}
198195
199196
r32375r32376
943940   m_soundlatch_full = 1;
944941   m_soundlatch_irq = 1;
945942   m_latch = data;
946   jantouki_sound_update_irq(machine());
943   jantouki_sound_update_irq();
947944}
948945
949946READ8_MEMBER(dynax_state::jantouki_blitter_busy_r)
r32375r32376
998995{
999996   m_soundlatch_ack = data;
1000997   m_soundlatch_irq = 0;
1001   jantouki_sound_update_irq(machine());
998   jantouki_sound_update_irq();
1002999}
10031000
10041001READ8_MEMBER(dynax_state::jantouki_soundlatch_r)
r32375r32376
12971294   logerror("%04x: unmapped offset %04X=%02X written with rombank=%02X\n", space.device().safe_pc(), offset, data, m_rombank);
12981295}
12991296
1300static void tenkai_show_6c( running_machine &machine )
1297void dynax_state::tenkai_show_6c()
13011298{
1302//    dynax_state *state = machine.driver_data<dynax_state>();
1303//    popmessage("%02x %02x", state->m_tenkai_6c, state->m_tenkai_70);
1299//    popmessage("%02x %02x", m_tenkai_6c, m_tenkai_70);
13041300}
13051301
13061302WRITE8_MEMBER(dynax_state::tenkai_6c_w)
13071303{
13081304   m_tenkai_6c = data;
1309   tenkai_show_6c(machine());
1305   tenkai_show_6c();
13101306}
13111307
13121308WRITE8_MEMBER(dynax_state::tenkai_70_w)
13131309{
13141310   m_tenkai_70 = data;
1315   tenkai_show_6c(machine());
1311   tenkai_show_6c();
13161312}
13171313
13181314WRITE8_MEMBER(dynax_state::tenkai_blit_romregion_w)
r32375r32376
14031399//  popmessage("%02x %02x", gekisha_val[0], gekisha_val[1]);
14041400}
14051401
1406static void gekisha_set_rombank( running_machine &machine, UINT8 data )
1402void dynax_state::gekisha_set_rombank( UINT8 data )
14071403{
1408   dynax_state *state = machine.driver_data<dynax_state>();
1409   state->m_rombank = data;
1410   state->m_romptr = state->memregion("maincpu")->base() + 0x8000 + state->m_rombank * 0x8000;
1404   m_rombank = data;
1405   m_romptr = memregion("maincpu")->base() + 0x8000 + m_rombank * 0x8000;
14111406}
14121407
14131408WRITE8_MEMBER(dynax_state::gekisha_p4_w)
14141409{
14151410   m_gekisha_rom_enable = !BIT(data, 3);
1416   gekisha_set_rombank(machine(), BIT(data, 2));
1411   gekisha_set_rombank(BIT(data, 2));
14171412}
14181413
14191414READ8_MEMBER(dynax_state::gekisha_8000_r)
r32375r32376
43134308   else
43144309      m_sound_irq = 1;
43154310
4316   sprtmtch_update_irq(machine());
4311   sprtmtch_update_irq();
43174312}
43184313
43194314static MACHINE_CONFIG_DERIVED( yarunara, hnoridur )
r32375r32376
44554450/*  It runs in IM 2, thus needs a vector on the data bus:
44564451    0xfa and 0xfc are very similar, they should be triggered by the blitter
44574452    0xf8 is vblank  */
4458void mjelctrn_update_irq( running_machine &machine )
4453void dynax_state::mjelctrn_update_irq()
44594454{
4460   dynax_state *state = machine.driver_data<dynax_state>();
4461   state->m_blitter_irq = 1;
4462   state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfa);
4455   m_blitter_irq = 1;
4456   m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfa);
44634457}
44644458
44654459INTERRUPT_GEN_MEMBER(dynax_state::mjelctrn_vblank_interrupt)
r32375r32376
44884482    0x42 and 0x44 are very similar, they should be triggered by the blitter
44894483    0x40 is vblank
44904484    0x46 is a periodic irq? */
4491void neruton_update_irq( running_machine &machine )
4485void dynax_state::neruton_update_irq()
44924486{
4493   dynax_state *state = machine.driver_data<dynax_state>();
4494   state->m_blitter_irq = 1;
4495   state->m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0x42);
4487   m_blitter_irq = 1;
4488   m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0x42);
44964489}
44974490
44984491TIMER_DEVICE_CALLBACK_MEMBER(dynax_state::neruton_irq_scanline)
r32375r32376
46274620
46284621void dynax_state::gekisha_bank_postload()
46294622{
4630   gekisha_set_rombank(machine(), m_rombank);
4623   gekisha_set_rombank(m_rombank);
46314624}
46324625
46334626MACHINE_START_MEMBER(dynax_state,gekisha)
r32375r32376
46414634{
46424635   MACHINE_RESET_CALL_MEMBER(dynax);
46434636
4644   gekisha_set_rombank(machine(), 0);
4637   gekisha_set_rombank(0);
46454638}
46464639
46474640static MACHINE_CONFIG_START( gekisha, dynax_state )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team