Previous 199869 Revisions Next

r34966 Wednesday 11th February, 2015 at 16:45:32 UTC by Osso
mastboy.c, xorworld.c: added save state support (nw)
saa1099.c: added save state support (nw)
[src/emu/bus/isa]gblaster.c sblaster.c
[src/emu/sound]saa1099.c saa1099.h
[src/mame/drivers]bingor.c jpmsys5.c manohman.c mastboy.c mpu4vid.c xorworld.c
[src/mame/includes]xorworld.h
[src/mame/video]xorworld.c
[src/mess/drivers]samcoupe.c

trunk/src/emu/bus/isa/gblaster.c
r243477r243478
3333{
3434   switch(offset)
3535   {
36      case 0 : m_saa1099_1->saa1099_control_w( space, offset, data ); break;
37      case 1 : m_saa1099_1->saa1099_data_w( space, offset, data ); break;
36      case 0 : m_saa1099_1->control_w( space, offset, data ); break;
37      case 1 : m_saa1099_1->data_w( space, offset, data ); break;
3838   }
3939}
4040
r243477r243478
4242{
4343   switch(offset)
4444   {
45      case 0 : m_saa1099_2->saa1099_control_w( space, offset, data ); break;
46      case 1 : m_saa1099_2->saa1099_data_w( space, offset, data ); break;
45      case 0 : m_saa1099_2->control_w( space, offset, data ); break;
46      case 1 : m_saa1099_2->data_w( space, offset, data ); break;
4747   }
4848}
4949
trunk/src/emu/bus/isa/sblaster.c
r243477r243478
148148{
149149   switch(offset)
150150   {
151      case 0 : m_saa1099_1->saa1099_control_w( space, offset, data ); break;
152      case 1 : m_saa1099_1->saa1099_data_w( space, offset, data ); break;
151      case 0 : m_saa1099_1->control_w( space, offset, data ); break;
152      case 1 : m_saa1099_1->data_w( space, offset, data ); break;
153153   }
154154}
155155
r243477r243478
157157{
158158   switch(offset)
159159   {
160      case 0 : m_saa1099_2->saa1099_control_w( space, offset, data ); break;
161      case 1 : m_saa1099_2->saa1099_data_w( space, offset, data ); break;
160      case 0 : m_saa1099_2->control_w( space, offset, data ); break;
161      case 1 : m_saa1099_2->data_w( space, offset, data ); break;
162162   }
163163}
164164
trunk/src/emu/sound/saa1099.c
r243477r243478
161161
162162   /* for each chip allocate one stream */
163163   m_stream = stream_alloc(0, 2, m_sample_rate);
164   
165   save_item(NAME(m_noise_params));
166   save_item(NAME(m_env_enable));
167   save_item(NAME(m_env_reverse_right));
168   save_item(NAME(m_env_mode));
169   save_item(NAME(m_env_bits));
170   save_item(NAME(m_env_clock));
171   save_item(NAME(m_env_step));
172   save_item(NAME(m_all_ch_enable));
173   save_item(NAME(m_sync_state));
174   save_item(NAME(m_selected_reg));
175   
176   for (int i = 0; i < 6; i++)
177   {
178      save_item(NAME(m_channels[i].frequency), i);
179      save_item(NAME(m_channels[i].freq_enable), i);
180      save_item(NAME(m_channels[i].noise_enable), i);
181      save_item(NAME(m_channels[i].octave), i);
182      save_item(NAME(m_channels[i].amplitude), i);
183      save_item(NAME(m_channels[i].envelope), i);
184      save_item(NAME(m_channels[i].counter), i);
185      save_item(NAME(m_channels[i].freq), i);
186      save_item(NAME(m_channels[i].level), i);
187   }
188   
189   for (int i = 0; i < 2; i++)
190   {
191      save_item(NAME(m_noise[i].counter), i);
192      save_item(NAME(m_noise[i].freq), i);
193      save_item(NAME(m_noise[i].level), i);
194   }
164195}
165196
166197
r243477r243478
217248
218249            /* eventually clock the envelope counters */
219250            if (ch == 1 && m_env_clock[0] == 0)
220               saa1099_envelope(0);
251               envelope_w(0);
221252            if (ch == 4 && m_env_clock[1] == 0)
222               saa1099_envelope(1);
253               envelope_w(1);
223254         }
224255
225256         /* if the noise is enabled */
r243477r243478
266297}
267298
268299
269void saa1099_device::saa1099_envelope(int ch)
300void saa1099_device::envelope_w(int ch)
270301{
271302   if (m_env_enable[ch])
272303   {
r243477r243478
309340}
310341
311342
312WRITE8_MEMBER( saa1099_device::saa1099_control_w )
343WRITE8_MEMBER( saa1099_device::control_w )
313344{
314345   if ((data & 0xff) > 0x1c)
315346   {
r243477r243478
322353   {
323354      /* clock the envelope channels */
324355      if (m_env_clock[0])
325         saa1099_envelope(0);
356         envelope_w(0);
326357      if (m_env_clock[1])
327         saa1099_envelope(1);
358         envelope_w(1);
328359   }
329360}
330361
331362
332WRITE8_MEMBER( saa1099_device::saa1099_data_w )
363WRITE8_MEMBER( saa1099_device::data_w )
333364{
334365   int reg = m_selected_reg;
335366   int ch;
trunk/src/emu/sound/saa1099.h
r243477r243478
8080   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
8181
8282public:
83   DECLARE_WRITE8_MEMBER( saa1099_control_w );
84   DECLARE_WRITE8_MEMBER( saa1099_data_w );
83   DECLARE_WRITE8_MEMBER( control_w );
84   DECLARE_WRITE8_MEMBER( data_w );
8585
8686private:
87   void saa1099_envelope(int ch);
87   void envelope_w(int ch);
8888
8989private:
9090   sound_stream *m_stream;          /* our stream */
trunk/src/mame/drivers/bingor.c
r243477r243478
526526
527527static ADDRESS_MAP_START( bingor_io, AS_IO, 16, bingor_state )
528528//  AM_RANGE(0x0000, 0x00ff) AM_READ(test_r )
529   AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
530   AM_RANGE(0x0102, 0x0103) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
529   AM_RANGE(0x0100, 0x0101) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
530   AM_RANGE(0x0102, 0x0103) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
531531//  AM_RANGE(0x0200, 0x0201) AM_READ(test_r )
532532ADDRESS_MAP_END
533533
trunk/src/mame/drivers/jpmsys5.c
r243477r243478
295295
296296static ADDRESS_MAP_START( 68000_awp_map_saa, AS_PROGRAM, 16, jpmsys5_state )
297297   JPM_SYS5_COMMON_MAP
298   AM_RANGE(0x0460a0, 0x0460a1) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
299   AM_RANGE(0x0460a2, 0x0460a3) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
298   AM_RANGE(0x0460a0, 0x0460a1) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
299   AM_RANGE(0x0460a2, 0x0460a3) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
300300   AM_RANGE(0x04c100, 0x04c105) AM_READWRITE(jpm_upd7759_r, jpm_upd7759_w) // do the SAA boards have the UPD?
301301ADDRESS_MAP_END
302302
trunk/src/mame/drivers/manohman.c
r243477r243478
155155static ADDRESS_MAP_START( manohman_map, AS_PROGRAM, 16, _manohman_state )
156156   AM_RANGE(0x000000, 0x01ffff) AM_ROM
157157   AM_RANGE(0x100000, 0x100001) AM_NOP     // smell to MAX696 watchdog...
158   AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
159   AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
158   AM_RANGE(0x300000, 0x300001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
159   AM_RANGE(0x300002, 0x300003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
160160   AM_RANGE(0x500000, 0x503fff) AM_RAM
161161   AM_RANGE(0x600006, 0x600007) AM_RAM     // write bitpatterns to compare with the 500000-503ff8 RAM testing.
162162//  AM_RANGE(0xYYYYYY, 0xYYYYYY) AM_RAM
trunk/src/mame/drivers/mastboy.c
r243477r243478
445445public:
446446   mastboy_state(const machine_config &mconfig, device_type type, const char *tag)
447447      : driver_device(mconfig, type, tag),
448         m_nvram(*this, "nvram") ,
449      m_workram(*this, "workram"),
450      m_tileram(*this, "tileram"),
451      m_colram(*this, "colram"),
452448      m_maincpu(*this, "maincpu"),
453449      m_msm(*this, "msm"),
454450      m_gfxdecode(*this, "gfxdecode"),
455      m_palette(*this, "palette") { }
451      m_palette(*this, "palette"),
452      m_nvram(*this, "nvram") ,
453      m_workram(*this, "workram"),
454      m_tileram(*this, "tileram"),
455      m_colram(*this, "colram") { }
456456
457   required_shared_ptr<UINT8>  m_nvram;
457   required_device<cpu_device> m_maincpu;
458   required_device<msm5205_device> m_msm;
459   required_device<gfxdecode_device> m_gfxdecode;
460   required_device<palette_device> m_palette;
461   
462   required_shared_ptr<UINT8> m_nvram;
458463   required_shared_ptr<UINT8> m_workram;
459464   required_shared_ptr<UINT8> m_tileram;
460465   required_shared_ptr<UINT8> m_colram;
466   
461467   UINT8* m_vram;
462468   UINT8 m_bank;
463469   int m_irq0_ack;
r243477r243478
466472   int m_m5205_part;
467473   int m_m5205_sambit0;
468474   int m_m5205_sambit1;
475
469476   DECLARE_READ8_MEMBER(banked_ram_r);
470477   DECLARE_WRITE8_MEMBER(banked_ram_w);
471   DECLARE_WRITE8_MEMBER(mastboy_bank_w);
472   DECLARE_READ8_MEMBER(mastboy_backupram_r);
473   DECLARE_WRITE8_MEMBER(mastboy_backupram_w);
478   DECLARE_WRITE8_MEMBER(bank_w);
479   DECLARE_READ8_MEMBER(backupram_r);
480   DECLARE_WRITE8_MEMBER(backupram_w);
474481   DECLARE_WRITE8_MEMBER(backupram_enable_w);
475   DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit0_w);
476   DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit1_w);
477   DECLARE_WRITE8_MEMBER(mastboy_msm5205_data_w);
478   DECLARE_WRITE8_MEMBER(mastboy_irq0_ack_w);
479   DECLARE_READ8_MEMBER(mastboy_port_38_read);
480   DECLARE_READ8_MEMBER(mastboy_nmi_read);
481   DECLARE_WRITE8_MEMBER(mastboy_msm5205_reset_w);
482   DECLARE_DRIVER_INIT(mastboy);
482   DECLARE_WRITE8_MEMBER(msm5205_sambit0_w);
483   DECLARE_WRITE8_MEMBER(msm5205_sambit1_w);
484   DECLARE_WRITE8_MEMBER(msm5205_data_w);
485   DECLARE_WRITE8_MEMBER(irq0_ack_w);
486   DECLARE_READ8_MEMBER(port_38_read);
487   DECLARE_READ8_MEMBER(nmi_read);
488   DECLARE_WRITE8_MEMBER(msm5205_reset_w);
489   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
490
491   virtual void machine_start();
483492   virtual void machine_reset();
484493   virtual void video_start();
485   UINT32 screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
486   INTERRUPT_GEN_MEMBER(mastboy_interrupt);
487   DECLARE_WRITE_LINE_MEMBER(mastboy_adpcm_int);
488   required_device<cpu_device> m_maincpu;
489   required_device<msm5205_device> m_msm;
490   required_device<gfxdecode_device> m_gfxdecode;
491   required_device<palette_device> m_palette;
494
495   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
496
497   INTERRUPT_GEN_MEMBER(interrupt);
492498};
493499
494500
r243477r243478
497503void mastboy_state::video_start()
498504{
499505   m_gfxdecode->gfx(0)->set_source(m_vram);
506   
507   save_pointer(NAME(m_vram), 0x10000);
500508}
501509
502UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
510UINT32 mastboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
503511{
504512   int y,x,i;
505513   int count = 0x000;
r243477r243478
609617   }
610618}
611619
612WRITE8_MEMBER(mastboy_state::mastboy_bank_w)
620WRITE8_MEMBER(mastboy_state::bank_w)
613621{
614622   // controls access to banked ram / rom
615623   m_bank = data;
r243477r243478
617625
618626/* Backup RAM access */
619627
620READ8_MEMBER(mastboy_state::mastboy_backupram_r)
628READ8_MEMBER(mastboy_state::backupram_r)
621629{
622630   return m_nvram[offset];
623631}
624632
625WRITE8_MEMBER(mastboy_state::mastboy_backupram_w)
633WRITE8_MEMBER(mastboy_state::backupram_w)
626634{
627635//  if (m_backupram_enabled)
628636//  {
r243477r243478
643651
644652/* MSM5205 Related */
645653
646WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit0_w)
654WRITE8_MEMBER(mastboy_state::msm5205_sambit0_w)
647655{
648656   m_m5205_sambit0 = data & 1;
649657   m_msm->playmode_w((1 << 2) | (m_m5205_sambit1 << 1) | (m_m5205_sambit0) );
r243477r243478
651659   logerror("msm5205 samplerate bit 0, set to %02x\n",data);
652660}
653661
654WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit1_w)
662WRITE8_MEMBER(mastboy_state::msm5205_sambit1_w)
655663{
656664   m_m5205_sambit1 = data & 1;
657665
r243477r243478
660668   logerror("msm5205 samplerate bit 0, set to %02x\n",data);
661669}
662670
663WRITE8_MEMBER(mastboy_state::mastboy_msm5205_reset_w)
671WRITE8_MEMBER(mastboy_state::msm5205_reset_w)
664672{
665673   m_m5205_part = 0;
666674   m_msm->reset_w(data & 1);
667675}
668676
669WRITE8_MEMBER(mastboy_state::mastboy_msm5205_data_w)
677WRITE8_MEMBER(mastboy_state::msm5205_data_w)
670678{
671679   m_m5205_next = data;
672680}
673681
674WRITE_LINE_MEMBER(mastboy_state::mastboy_adpcm_int)
682WRITE_LINE_MEMBER(mastboy_state::adpcm_int)
675683{
676684   m_msm->data_w(m_m5205_next);
677685   m_m5205_next >>= 4;
r243477r243478
684692
685693/* Interrupt Handling */
686694
687WRITE8_MEMBER(mastboy_state::mastboy_irq0_ack_w)
695WRITE8_MEMBER(mastboy_state::irq0_ack_w)
688696{
689697   m_irq0_ack = data;
690698   if ((data & 1) == 1)
691699      m_maincpu->set_input_line(0, CLEAR_LINE);
692700}
693701
694INTERRUPT_GEN_MEMBER(mastboy_state::mastboy_interrupt)
702INTERRUPT_GEN_MEMBER(mastboy_state::interrupt)
695703{
696704   if ((m_irq0_ack & 1) == 1)
697705   {
r243477r243478
711719
712720   AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write
713721
714   AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram")
722   AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(backupram_r,backupram_w) AM_SHARE("nvram")
715723
716724   AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1")
717725   AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2")
718726   AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1")
719727   AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2")
720728
721   AM_RANGE(0xff820, 0xff827) AM_WRITE(mastboy_bank_w)
722   AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, saa1099_data_w)
723   AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, saa1099_control_w)
724   AM_RANGE(0xff830, 0xff830) AM_WRITE(mastboy_msm5205_data_w)
725   AM_RANGE(0xff838, 0xff838) AM_WRITE(mastboy_irq0_ack_w)
726   AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_mastboy_m5205_sambit0_w)
727   AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_mastboy_m5205_sambit1_w)
728   AM_RANGE(0xff83b, 0xff83b) AM_WRITE(mastboy_msm5205_reset_w)
729   AM_RANGE(0xff820, 0xff827) AM_WRITE(bank_w)
730   AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, data_w)
731   AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, control_w)
732   AM_RANGE(0xff830, 0xff830) AM_WRITE(msm5205_data_w)
733   AM_RANGE(0xff838, 0xff838) AM_WRITE(irq0_ack_w)
734   AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_sambit0_w)
735   AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_sambit1_w)
736   AM_RANGE(0xff83b, 0xff83b) AM_WRITE(msm5205_reset_w)
729737   AM_RANGE(0xff83c, 0xff83c) AM_WRITE(backupram_enable_w)
730738
731739   AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM
r243477r243478
733741
734742/* Ports */
735743
736READ8_MEMBER(mastboy_state::mastboy_port_38_read)
744READ8_MEMBER(mastboy_state::port_38_read)
737745{
738746   return 0x00;
739747}
740748
741READ8_MEMBER(mastboy_state::mastboy_nmi_read)
749READ8_MEMBER(mastboy_state::nmi_read)
742750{
743751   // this is read in the NMI, it's related to the Z180 MMU I think, must return right value or game jumps to 0000
744752   return 0x00;
745753}
746754
747755static ADDRESS_MAP_START( mastboy_io_map, AS_IO, 8, mastboy_state )
748   AM_RANGE(0x38, 0x38) AM_READ(mastboy_port_38_read)
749   AM_RANGE(0x39, 0x39) AM_READ(mastboy_nmi_read)
756   AM_RANGE(0x38, 0x38) AM_READ(port_38_read)
757   AM_RANGE(0x39, 0x39) AM_READ(nmi_read)
750758ADDRESS_MAP_END
751759
752760/* Input Ports */
r243477r243478
866874
867875/* Machine Functions / Driver */
868876
877void mastboy_state::machine_start()
878{
879   m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way
880   
881   save_item(NAME(m_bank));
882   save_item(NAME(m_irq0_ack));
883   save_item(NAME(m_backupram_enabled));
884   save_item(NAME(m_m5205_next));
885   save_item(NAME(m_m5205_part));
886   save_item(NAME(m_m5205_sambit0));
887   save_item(NAME(m_m5205_sambit1));
888}
889
869890void mastboy_state::machine_reset()
870891{
871892   /* clear some ram */
r243477r243478
885906   MCFG_CPU_ADD("maincpu", Z180, 12000000/2)   /* HD647180X0CP6-1M1R */
886907   MCFG_CPU_PROGRAM_MAP(mastboy_map)
887908   MCFG_CPU_IO_MAP(mastboy_io_map)
888   MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state,  mastboy_interrupt)
909   MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state,  interrupt)
889910
890911   MCFG_NVRAM_ADD_1FILL("nvram")
891912
r243477r243478
896917   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
897918   MCFG_SCREEN_SIZE(256, 256)
898919   MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
899   MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update_mastboy)
920   MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update)
900921   MCFG_SCREEN_PALETTE("palette")
901922
902923   MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastboy)
r243477r243478
909930   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
910931
911932   MCFG_SOUND_ADD("msm", MSM5205, 384000)
912   MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, mastboy_adpcm_int))  /* interrupt function */
933   MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, adpcm_int))  /* interrupt function */
913934   MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B)      /* 4KHz 4-bit */
914935   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
915936MACHINE_CONFIG_END
r243477r243478
9931014   /*                  0x1c0000 to 0x1fffff EMPTY */
9941015ROM_END
9951016
996DRIVER_INIT_MEMBER(mastboy_state,mastboy)
997{
998   m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way
999}
10001017
1001GAME( 1991, mastboy,  0,          mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", 0 )
1002GAME( 1991, mastboyi, mastboy,    mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", 0 )
1018GAME( 1991, mastboy,  0,          mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", GAME_SUPPORTS_SAVE )
1019GAME( 1991, mastboyi, mastboy,    mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/mpu4vid.c
r243477r243478
12831283   AM_RANGE(0x000000, 0x7fffff) AM_ROM
12841284   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
12851285//  AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
1286   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
1287   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
1286   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
1287   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
12881288   AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff)
12891289/*  AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
12901290
r243477r243478
13031303   AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */
13041304//  AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */
13051305   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
1306   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
1307   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
1306   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
1307   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
13081308   AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff)
13091309
13101310   AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, mpu4_vid_scn2674_r, mpu4_vid_scn2674_w,0x00ff)
r243477r243478
13251325   AM_RANGE(0x000000, 0x7fffff) AM_ROM
13261326   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
13271327   AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
1328   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
1329   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
1328   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
1329   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
13301330   AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff)
13311331//  AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this
13321332/*  AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
r243477r243478
13431343   AM_RANGE(0x000000, 0x7fffff) AM_ROM
13441344   AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram")
13451345   AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
1346   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
1347   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
1346   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
1347   AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
13481348   AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff)
13491349   //AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this
13501350/*  AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
trunk/src/mame/drivers/xorworld.c
r243477r243478
6262   m_eeprom->di_write(data & 0x01);
6363}
6464
65WRITE16_MEMBER(xorworld_state::xorworld_irq2_ack_w)
65WRITE16_MEMBER(xorworld_state::irq2_ack_w)
6666{
6767   m_maincpu->set_input_line(2, CLEAR_LINE);
6868}
6969
70WRITE16_MEMBER(xorworld_state::xorworld_irq6_ack_w)
70WRITE16_MEMBER(xorworld_state::irq6_ack_w)
7171{
7272   m_maincpu->set_input_line(6, CLEAR_LINE);
7373}
r243477r243478
7777   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1")
7878   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P2")
7979   AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW")
80   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff)
81   AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff)
80   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff)
81   AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff)
8282   AM_RANGE(0xa00008, 0xa00009) AM_WRITE(eeprom_chip_select_w)
8383   AM_RANGE(0xa0000a, 0xa0000b) AM_WRITE(eeprom_serial_clock_w)
8484   AM_RANGE(0xa0000c, 0xa0000d) AM_WRITE(eeprom_data_w)
85   AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(xorworld_videoram16_w) AM_SHARE("videoram")
85   AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
8686   AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_SHARE("spriteram")
87   AM_RANGE(0xffc880, 0xffc881) AM_WRITE(xorworld_irq2_ack_w)
88   AM_RANGE(0xffc882, 0xffc883) AM_WRITE(xorworld_irq6_ack_w)
87   AM_RANGE(0xffc880, 0xffc881) AM_WRITE(irq2_ack_w)
88   AM_RANGE(0xffc882, 0xffc883) AM_WRITE(irq6_ack_w)
8989   AM_RANGE(0xffc884, 0xffffff) AM_RAM
9090ADDRESS_MAP_END
9191
r243477r243478
182182   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
183183   MCFG_SCREEN_SIZE(32*8, 32*8)
184184   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
185   MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update_xorworld)
185   MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update)
186186   MCFG_SCREEN_PALETTE("palette")
187187
188188   MCFG_GFXDECODE_ADD("gfxdecode", "palette", xorworld)
r243477r243478
235235}
236236
237237
238GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", 0 )
238GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/xorworld.h
r243477r243478
55public:
66   xorworld_state(const machine_config &mconfig, device_type type, const char *tag)
77      : driver_device(mconfig, type, tag),
8      m_videoram(*this, "videoram"),
9      m_spriteram(*this, "spriteram"),
108      m_maincpu(*this, "maincpu"),
119      m_eeprom(*this, "eeprom"),
1210      m_gfxdecode(*this, "gfxdecode"),
13      m_palette(*this, "palette") { }
11      m_palette(*this, "palette"),
12      m_videoram(*this, "videoram"),
13      m_spriteram(*this, "spriteram") { }
1414
15   required_device<cpu_device> m_maincpu;
16   required_device<eeprom_serial_93cxx_device> m_eeprom;
17   required_device<gfxdecode_device> m_gfxdecode;
18   required_device<palette_device> m_palette;
19   
1520   required_shared_ptr<UINT16> m_videoram;
21   required_shared_ptr<UINT16> m_spriteram;
22   
1623   tilemap_t *m_bg_tilemap;
17   required_shared_ptr<UINT16> m_spriteram;
18   DECLARE_WRITE16_MEMBER(xorworld_irq2_ack_w);
19   DECLARE_WRITE16_MEMBER(xorworld_irq6_ack_w);
20   DECLARE_WRITE16_MEMBER(xorworld_videoram16_w);
24   
25   DECLARE_WRITE16_MEMBER(irq2_ack_w);
26   DECLARE_WRITE16_MEMBER(irq6_ack_w);
27   DECLARE_WRITE16_MEMBER(videoram_w);
2128   DECLARE_WRITE16_MEMBER(eeprom_chip_select_w);
2229   DECLARE_WRITE16_MEMBER(eeprom_serial_clock_w);
2330   DECLARE_WRITE16_MEMBER(eeprom_data_w);
31   
32   TILE_GET_INFO_MEMBER(get_bg_tile_info);
33   
2434   DECLARE_DRIVER_INIT(xorworld);
25   TILE_GET_INFO_MEMBER(get_bg_tile_info);
2635   virtual void video_start();
2736   DECLARE_PALETTE_INIT(xorworld);
28   UINT32 screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
37   
38   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
2939   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
30   required_device<cpu_device> m_maincpu;
31   required_device<eeprom_serial_93cxx_device> m_eeprom;
32   required_device<gfxdecode_device> m_gfxdecode;
33   required_device<palette_device> m_palette;
3440};
trunk/src/mame/video/xorworld.c
r243477r243478
4949   }
5050}
5151
52WRITE16_MEMBER(xorworld_state::xorworld_videoram16_w)
52WRITE16_MEMBER(xorworld_state::videoram_w)
5353{
54   UINT16 *videoram = m_videoram;
55   COMBINE_DATA(&videoram[offset]);
54   COMBINE_DATA(&m_videoram[offset]);
5655   m_bg_tilemap->mark_tile_dirty(offset);
5756}
5857
r243477r243478
6867
6968TILE_GET_INFO_MEMBER(xorworld_state::get_bg_tile_info)
7069{
71   UINT16 *videoram = m_videoram;
72   int data = videoram[tile_index];
70   int data = m_videoram[tile_index];
7371   int code = data & 0x0fff;
7472
7573   SET_TILE_INFO_MEMBER(0, code, data >> 12, 0);
r243477r243478
9694
9795void xorworld_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect )
9896{
99   UINT16 *spriteram16 = m_spriteram;
100   int i;
101
102   for (i = 0; i < 0x40; i += 2)
97   for (int i = 0; i < 0x40; i += 2)
10398   {
104      int sx = spriteram16[i] & 0x00ff;
105      int sy = 240 - (((spriteram16[i] & 0xff00) >> 8) & 0xff);
106      int code = (spriteram16[i+1] & 0x0ffc) >> 2;
107      int color = (spriteram16[i+1] & 0xf000) >> 12;
99      int sx = m_spriteram[i] & 0x00ff;
100      int sy = 240 - (((m_spriteram[i] & 0xff00) >> 8) & 0xff);
101      int code = (m_spriteram[i+1] & 0x0ffc) >> 2;
102      int color = (m_spriteram[i+1] & 0xf000) >> 12;
108103
109104      m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, code, color, 0, 0, sx, sy, 0);
110105   }
111106}
112107
113UINT32 xorworld_state::screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
108UINT32 xorworld_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
114109{
115110   m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
116111   draw_sprites(bitmap, cliprect);
trunk/src/mess/drivers/samcoupe.c
r243477r243478
334334   AM_RANGE(0x00fd, 0x00fd) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(samcoupe_midi_r, samcoupe_midi_w)
335335   AM_RANGE(0x00fe, 0x00fe) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READWRITE(samcoupe_keyboard_r, samcoupe_border_w)
336336   AM_RANGE(0x00ff, 0x00ff) AM_MIRROR(0xff00) AM_MASK(0xffff) AM_READ(samcoupe_attributes_r)
337   AM_RANGE(0x00ff, 0x00ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, saa1099_data_w)
338   AM_RANGE(0x01ff, 0x01ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, saa1099_control_w)
337   AM_RANGE(0x00ff, 0x00ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, data_w)
338   AM_RANGE(0x01ff, 0x01ff) AM_MIRROR(0xfe00) AM_MASK(0xffff) AM_DEVWRITE("saa1099", saa1099_device, control_w)
339339ADDRESS_MAP_END
340340
341341


Previous 199869 Revisions Next


© 1997-2024 The MAME Team