Previous 15994 Revisions Next

r15705 Monday 30th July, 2012 at 08:40:42 UTC by Miodrag Milanović
Clean-ups and version bump
[src]version.c
[src/emu/cpu/f8]f8.c
[src/emu/cpu/m6800]m6800.c
[src/emu/cpu/powerpc]ppccom.c
[src/emu/cpu/tlcs900]tlcs900.c
[src/emu/cpu/tms32025]tms32025.c
[src/emu/cpu/tms32051]32051ops.c
[src/emu/cpu/v30mz]v30mz.c
[src/emu/machine]am9517a.c net_lib.c net_lib.h netlist.c netlist.h roc10937.c roc10937.h tc009xlvc.c tc009xlvc.h
[src/mame]mame.lst mame.mak
[src/mame/drivers]aces1.c acesp.c bfm_sc1.c bfm_sc2.c bfmsys85.c cobra.c cybertnk.c cyclemb.c dfruit.c esd16.c globalfr.c globalvr.c jpmmps.c jpms80.c jpmsru.c lastbank.c mpu3.c mpu4.c mpu5.c namcos21.c pokechmp.c pong.c proconn.c segaxbd.c sfbonus.c taito_l.c taitotz.c tasman.c wardner.c
[src/mame/includes]esd16.h
[src/mame/machine]bfm_bd1.c bfm_bd1.h bfm_bda.c bfm_bda.h
[src/mame/video]taitojc.c
[src/mess/drivers]alesis.c digel804.c pc.c pc8801.c vk100.c vt100.c x1.c
[src/mess/machine]llc.c pc.c
[src/mess/video]uv201.c
[src/osd/sdl]input.c sdl.mak

src/mame/mame.lst
r15704r15705
1936919369m5clubsn14  //
1937019370m5clubsn16  //
1937119371m5dick      // Dick Turnip (Bwb)
19372m5dick10
1937219373m5donna      // Donna Kebab (Bwb)
1937319374m5donnad   //
1937419375m5donnaa   //
r15704r15705
1941319414m5sil7      // Silver 7s (Bwb)
1941419415m5sil7a      //
1941519416m5smobik   // Smokey Bikin (Bwb)
19417m5smobik12
1941619418m5tictac   // Tic Tac Tut (Vivid)
1941719419m5tictacbwb   // Tic Tac Tut (Bwb)
1941819420m5tictacbwb16 //
r15704r15705
1976119763sp_tzfet      //
1976219764sp_tzfeu      //
1976319765sp_beau         // Beau Peep (Ace)
19764sp_beaua      //
19765sp_beaub      //
19766sp_beauc      //
19767sp_beaud      //
19768sp_beaue      //
19769sp_beauf      //
19770sp_beaug      //
19771sp_beauh      //
19766sp_beaua      //
19767sp_beaub      //
19768sp_beauc      //
19769sp_beaud      //
19770sp_beaue      //
19771sp_beauf      //
19772sp_beaug      //
19773sp_beauh      //
1977219774sp_bigbd      // Big Break Deluxe Club (Ace)
1977319775sp_bigbda      //
1977419776sp_brkbk      // Break The Bank (Ace)
r15704r15705
1986319865sp_golda      // Golden Arrow Club (Ace)
1986419866sp_goldaa      //
1986519867sp_golds      // Golden Streak (Ace)
19866sp_goldsa      //
19867sp_goldsb      //
19868sp_goldsc      //
19869sp_goldsd      //
19870sp_goldse      //
19871sp_goldsf      //
19872sp_goldsg      //
19873sp_goldsh      //
19868sp_goldsa      //
19869sp_goldsb      //
19870sp_goldsc      //
19871sp_goldsd      //
19872sp_goldse      //
19873sp_goldsf      //
19874sp_goldsg      //
19875sp_goldsh      //
1987419876sp_goldt      // Golden Touch (Golden Streak) (Ace)
1987519877sp_here         // Here We Go (Ace)
1987619878sp_herea      //
r15704r15705
1996919971sp_poundbwbf   //
1997019972sp_road         // Road To Hell (Ace)
1997119973sp_skylm      // Sky's The Limit Club, The (Ace)
19972sp_skylma      //
19974sp_skylma      //
1997319975sp_tkpik      // Take Your Pick (Ace)
1997419976sp_tkpika      //
1997519977sp_tkpikb      //
r15704r15705
1998219984sp_front      // Final Frontier (Bwb)
1998319985sp_atw         // Around the World (Crystal)
1998419986sp_five         // Fiver Fever (Crystal)
19985sp_fivea      //
19987sp_fivea      //
1998619988sp_crun         // Cash Run (Crystal)
1998719989sp_cruna      //
1998819990sp_crunb      //
src/mame/machine/bfm_bd1.h
r15704r15705
3434protected:
3535    static const UINT8 AT_NORMAL  = 0x00;
3636    static const UINT8 AT_FLASH   = 0x01;
37    static const UINT8 AT_BLANK   = 0x02;   
37    static const UINT8 AT_BLANK   = 0x02;
3838    static const UINT8 AT_FLASHED = 0x80;   // set when character should be blinked off
3939
4040   int m_cursor_pos;
src/mame/machine/bfm_bda.c
r15704r15705
302302            break;
303303
304304            case 0xB0:   // 0xB0 - 0xBF Clear display area
305           
305
306306            switch ( data & 0x03 )
307307            {
308308               case 0x00:   // clr nothing
src/mame/machine/bfm_bda.h
r15704r15705
3434protected:
3535    static const UINT8 AT_NORMAL  = 0x00;
3636    static const UINT8 AT_FLASH   = 0x01;
37    static const UINT8 AT_BLANK   = 0x02;   
37    static const UINT8 AT_BLANK   = 0x02;
3838    static const UINT8 AT_FLASHED = 0x80;   // set when character should be blinked off
3939
4040   int m_cursor_pos;
src/mame/machine/bfm_bd1.c
r15704r15705
293293            break;
294294
295295            case 0xB0:   // 0xB0 - 0xBF Clear display area
296           
296
297297            switch ( data & 0x03 )
298298            {
299299               case 0x00:   // clr nothing
src/mame/includes/esd16.h
r15704r15705
1919      m_head_layersize(*this, "head_layersize"),
2020      m_headpanic_platform_x(*this, "platform_x"),
2121      m_headpanic_platform_y(*this, "platform_y")
22   {
22   {
2323      m_tilemap0_color = 0;
2424      m_tilemap1_color = 0;
2525   }
r15704r15705
5555   DECLARE_WRITE16_MEMBER(esd16_vram_0_w);
5656   DECLARE_WRITE16_MEMBER(esd16_vram_1_w);
5757   DECLARE_WRITE16_MEMBER(esd16_tilemap0_color_w);
58   DECLARE_WRITE16_MEMBER(esd16_tilemap0_color_jumppop_w);   
58   DECLARE_WRITE16_MEMBER(esd16_tilemap0_color_jumppop_w);
5959};
6060
6161
src/mame/mame.mak
r15704r15705
18791879   $(DRIVERS)/umipoker.o \
18801880   $(DRIVERS)/unkfr.o \
18811881   $(DRIVERS)/unkhorse.o \
1882    $(DRIVERS)/usgames.o $(VIDEO)/usgames.o \
1882   $(DRIVERS)/usgames.o $(VIDEO)/usgames.o \
18831883   $(DRIVERS)/vamphalf.o \
18841884   $(DRIVERS)/vcombat.o \
18851885   $(DRIVERS)/vectrex.o $(VIDEO)/vectrex.o $(MACHINE)/vectrex.o \
src/mame/video/taitojc.c
r15704r15705
488488
489489void taitojc_renderer::render_polygons(running_machine &machine, UINT16 *polygon_fifo, int length)
490490{
491//   taitojc_state *state = machine.driver_data<taitojc_state>();
491//  taitojc_state *state = machine.driver_data<taitojc_state>();
492492   const rectangle visarea = machine.primary_screen->visible_area();
493493   vertex_t vert[4];
494494   int i;
src/mame/drivers/bfm_sc1.c
r15704r15705
17851785   ROM_REGION( 0x10000, "maincpu", 0 )
17861786   ROM_LOAD( "cop56cp2", 0x0000, 0x008000, CRC(c862ee34) SHA1(e807d1072953e67581ce0181bfd82a7efcee7bf0) )
17871787   ROM_LOAD( "cop56cp1", 0x8000, 0x008000, CRC(214edd7d) SHA1(007c17cc522c8f0d30bc1fd08bb18850344f62ad) )
1788   
1788
17891789   ROM_REGION( 0x80000, "upd", 0 )
17901790   ROM_LOAD( "copssnd.bin", 0x0000, 0x040000, CRC(4bebbc37) SHA1(10eb8542a9de35efc0f75b532c94e1b3e0d21e47) )
17911791
r15704r15705
17951795   ROM_REGION( 0x10000, "maincpu", 0 )
17961796   ROM_LOAD( "cops & robbers 5p v1-3 b (27256)", 0x0000, 0x008000, CRC(6f5425d6) SHA1(7673841ccfe16eaa0a5cfca1596383f7711f2dbe) )
17971797   ROM_LOAD( "cops & robbers 5p v1-3 a (27256)", 0x8000, 0x008000, CRC(29513083) SHA1(f2ce0b573d6756e7d835488b8d8eed3266787255) )
1798   
1798
17991799   ROM_REGION( 0x80000, "upd", 0 )
18001800   ROM_LOAD( "copssnd.bin", 0x0000, 0x040000, CRC(4bebbc37) SHA1(10eb8542a9de35efc0f75b532c94e1b3e0d21e47) )
18011801
src/mame/drivers/segaxbd.c
r15704r15705
546546            */
547547         space->machine().sound().system_enable(data & 0x80);
548548         break;
549     
549
550550      default: break;
551551   }
552552
r15704r15705
635635   coin_counter_w(machine, 0, (data >> 4) & 0x01);
636636
637637   /*
638      aburner2:
639   d1: altitude warning lamp
640   d2: start lamp
641   d5: lock on lamp
642   d6: danger lamp
643   in clone aburner, lamps work only in testmode?
644   
645   */
638        aburner2:
639    d1: altitude warning lamp
640    d2: start lamp
641    d5: lock on lamp
642    d6: danger lamp
643    in clone aburner, lamps work only in testmode?
644
645    */
646646   output_set_lamp_value(0, (data >> 5) & 0x01);
647647   output_set_lamp_value(1, (data >> 6) & 0x01);
648648   output_set_lamp_value(2, (data >> 1) & 0x01);
src/mame/drivers/acesp.c
r15704r15705
5656   /* 0x3f */
5757   //----- 0x0040 - 0x013f is internal RAM (256 bytes) -----
5858   AM_RANGE(0x0040, 0x013f) AM_RAM
59   
6059
60
6161   /**** regular map ****/
6262   AM_RANGE(0x0140, 0x1fff) AM_RAM
6363   AM_RANGE(0x2000, 0xffff) AM_ROM
r15704r15705
23102310   SP_CODER_SOUND
23112311ROM_END
23122312
2313   
2313
23142314ROM_START( sp_coderb )
23152315   ROM_REGION( 0x80000, "maincpu", 0 )
23162316   ROM_LOAD( "cr655d3d", 0x0000, 0x8000, CRC(a20fc66b) SHA1(df67d0fe655e218afc92342609411e76be4dd47b) )
r15704r15705
33423342   ROM_LOAD( "0016rp40.bin", 0x0000, 0x010000, CRC(591e3e24) SHA1(b147bfc19aa46eb3237b270d771031caaf978850) ) // merged rom
33433343   SP_ONBOX_SOUND
33443344ROM_END
3345   
3345
33463346ROM_START( sp_onboxn )
33473347   ROM_REGION( 0x80000, "maincpu", 0 )
33483348   ROM_LOAD( "0016rp50.bin", 0x0000, 0x010000, CRC(73c5c449) SHA1(453969ec5c4fe1ce8f118110106e31126a358cda) ) // merged rom
33493349   SP_ONBOX_SOUND
33503350ROM_END
3351   
33523351
33533352
3353
33543354#define SP_PISTE_SOUND \
33553355   ROM_REGION(   0x100000, "oki", ROMREGION_ERASE00 ) \
33563356   /* not used, or missing? */ \
src/mame/drivers/cybertnk.c
r15704r15705
1111  How are unused sprites marked? None of the bits alone seem to be used for this purpose
1212   and while in many cases the first value gets cleared to 0x0000 (palette 0, upper tile offset 0)
1313   that doesn't really seem like a valid marker, and leaves us with some lingering sprites anyway.
14 
14
1515  Attempting to clear the spriteram every frame doesn't help either, the list is copied, complete
1616   with 'unwanted' sprites every frame, ruling out some kind of auto clear after drawing operation.
1717
r15704r15705
307307      UINT16 param1 = state->m_roadram[i+2];
308308      UINT16 param2 = state->m_roadram[i+1];
309309      UINT16 param3 = state->m_roadram[i+0];
310   
310
311311      int col = (param2 & 0x3f);
312312
313313      // seems to be priority related, cases seen are 0xc0 and 0x00 (once the palette bits are masked out)
r15704r15705
335335
336336   /*
337337
338   o = offset
339   y = ypos  Y = ysize ^ = always 0xF?  ? = set for no obvious reason..
340   x = xpos  X = xsize f = flipx
338    o = offset
339    y = ypos  Y = ysize ^ = always 0xF?  ? = set for no obvious reason..
340    x = xpos  X = xsize f = flipx
341341
342   Z = zoom   * = alt zoom? (ok for roadside, but 00 for player tank etc?)
343   C = colour
342    Z = zoom   * = alt zoom? (ok for roadside, but 00 for player tank etc?)
343    C = colour
344344                            +word offset
345    CCCC CCCC #### @ooo   0x0  # bits are often set too? @ is set at the very end of spriteram
346    oooo oooo oooo oooo   0x1
347    ---- ---- ---y yyyy   0x2
348    ---- ---- ---- ----   0x3 (always has a value here, gets set to FFFF on some cleared sprites?)
349    ???? ^^^^ YYYY YYYY   0x4
350    f--- --xx xxxx xxxx   0x5
351    ZZZZ ZZZZ ---- XXXX   0x6
352    ---- ---- **** ****   0x7
345     CCCC CCCC #### @ooo   0x0  # bits are often set too? @ is set at the very end of spriteram
346     oooo oooo oooo oooo   0x1
347     ---- ---- ---y yyyy   0x2
348     ---- ---- ---- ----   0x3 (always has a value here, gets set to FFFF on some cleared sprites?)
349     ???? ^^^^ YYYY YYYY   0x4
350     f--- --xx xxxx xxxx   0x5
351     ZZZZ ZZZZ ---- XXXX   0x6
352     ---- ---- **** ****   0x7
353353
354   */
354    */
355355
356356
357357   for(int offs=0;offs<0x1000/2;offs+=8)
r15704r15705
386386      for(int yi = 0;yi < ysize;yi++)
387387      {
388388         xf = xz = 0;
389         
390389
390
391391         int yy = y+yz;
392392
393393         if ((yy>=miny) && (yy<=maxy))
394394         {
395            dest = &bitmap.pix16(yy, 0);   
395            dest = &bitmap.pix16(yy, 0);
396396
397397            int start,end,inc;
398398
r15704r15705
412412            for(int xi=start;xi != end;xi+=inc)
413413            { // start x loop
414414               UINT32 color;
415               
415
416416               color = sprrom[spr_offs+xi/8];
417         
417
418418               UINT16 dot;
419419               int x_dec; //helpers
420420
r15704r15705
471471            if(yf >= 0x80) { yz++; yf-=0x80; }
472472         }
473473      }
474   }   
474   }
475475
476//   if (state->m_spr_ram[0xff0/2] == 0x0008)
477//      memset(state->m_spr_ram, 0x00, 0xff0);
476//  if (state->m_spr_ram[0xff0/2] == 0x0008)
477//      memset(state->m_spr_ram, 0x00, 0xff0);
478478
479479}
480480
r15704r15705
493493   state->m_tilemap1_tilemap->set_scrollx(state->m_tilemap1scroll[0]);
494494   state->m_tilemap2_tilemap->set_scrollx(state->m_tilemap2scroll[0]);
495495
496   
497496
497
498498   bitmap.fill(get_black_pen(screen.machine()), cliprect);
499499
500500
r15704r15705
541541{
542542   if (offset == 0)
543543   {
544      printf("cybertnk_sound_cmd_w offset 0 %02x\n", data);
544      printf("cybertnk_sound_cmd_w offset 0 %02x\n", data);
545545   }
546546   else if (offset == 1)
547547   {
r15704r15705
555555{
556556   if (offset == 0)
557557   {
558//      printf("cybertnk_mux_w offset 0 %02x\n", data);
558//      printf("cybertnk_mux_w offset 0 %02x\n", data);
559559   }
560560   else if (offset == 1)
561561   {
562//      printf("cybertnk_mux_w offset 1 %02x\n", data);
562//      printf("cybertnk_mux_w offset 1 %02x\n", data);
563563      m_mux_data = data & 0x60;
564564      /* Other bits are unknown */
565565   }
r15704r15705
583583   if (offset == 0)
584584   {
585585      // unused?
586      logerror("cybertnk_irq_ack_w offset 0 %02x\n", data);
586      logerror("cybertnk_irq_ack_w offset 0 %02x\n", data);
587587   }
588588   else if (offset == 1)
589589   {
r15704r15705
602602   else if (offset == 1)
603603   {
604604      // unused?
605      logerror("cybertnk_cnt_w offset 1 %02x\n", data);
605      logerror("cybertnk_cnt_w offset 1 %02x\n", data);
606606   }
607607}
608608
src/mame/drivers/mpu4.c
r15704r15705
1374013740   ROM_LOAD( "fds103p.bin", 0x0000, 0x010000, CRC(764bd0a8) SHA1(cea826c94ce28ab3e47071846756a7e1effa5d1b) )
1374113741   ROM_LOAD( "twisterprog.bin", 0x0000, 0x010000, CRC(96209a3e) SHA1(434aa824a517929d9ace959b06f2d38464a54541) )
1374213742
13743   
13743
1374413744   ROM_REGION( 0x100000, "msm6376", ROMREGION_ERASE00 )
1374513745   ROM_LOAD( "twistersound.bin", 0x000000, 0x100000, CRC(5aa2729b) SHA1(cf490ec6c75c038addcff24655cd6e498cad60c1) )
13746   
13746
1374713747ROM_END
1374813748
1374913749
src/mame/drivers/namcos21.c
r15704r15705
15331533   MCFG_PALETTE_LENGTH(NAMCOS21_NUM_COLORS)
15341534
15351535   MCFG_VIDEO_START(namcos21)
1536   
1536
15371537   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15381538
15391539   MCFG_SOUND_ADD("c140", C140, 8000000/374)
r15704r15705
24102410
24112411static INPUT_PORTS_START( winrungp )
24122412   PORT_INCLUDE(winrun)
2413   
2413
24142414   PORT_MODIFY("DSW")
24152415   PORT_DIPNAME( 0x20, 0x00, "PCM ROM")
24162416   PORT_DIPSETTING(   0x20, "2M" )
src/mame/drivers/lastbank.c
r15704r15705
22
33    Last Bank (c) 1994 Excellent Systems
44
5   driver by Angelo Salese
5    driver by Angelo Salese
66
77    Uses a TC0091LVC, a variant of the one used on Taito L HW
88
r15704r15705
429429
430430
431431static GFXDECODE_START( lastbank )
432   GFXDECODE_ENTRY( "gfx1",       0, bg2_layout, 0, 16 )
433   GFXDECODE_ENTRY( "gfx1",       0, sp2_layout, 0, 16 )
432   GFXDECODE_ENTRY( "gfx1",      0, bg2_layout, 0, 16 )
433   GFXDECODE_ENTRY( "gfx1",      0, sp2_layout, 0, 16 )
434434GFXDECODE_END
435435
436436static TIMER_DEVICE_CALLBACK( lastbank_irq_scanline )
r15704r15705
459459   MCFG_CPU_ADD("audiocpu",Z80,MASTER_CLOCK/4)
460460   MCFG_CPU_PROGRAM_MAP(lastbank_audio_map)
461461   MCFG_CPU_IO_MAP(lastbank_audio_io)
462//   MCFG_CPU_PERIODIC_INT(nmi_line_pulse,60)
462//  MCFG_CPU_PERIODIC_INT(nmi_line_pulse,60)
463463
464464   MCFG_QUANTUM_PERFECT_CPU("maincpu")
465465
r15704r15705
480480   MCFG_GFXDECODE( lastbank )
481481   MCFG_PALETTE_LENGTH(0x100)
482482
483//   MCFG_VIDEO_START(lastbank)
483//  MCFG_VIDEO_START(lastbank)
484484
485485   /* sound hardware */
486486   MCFG_SPEAKER_STANDARD_MONO("mono")
src/mame/drivers/wardner.c
r15704r15705
138138   wardner_state(const machine_config &mconfig, device_type type, const char *tag)
139139      : twincobr_state(mconfig, type,tag),
140140        m_rambase_c000(*this, "rambase_c000")
141   {
141   {
142142   }
143143
144144   required_shared_ptr<UINT8> m_rambase_c000;
r15704r15705
168168      else if ((addr >= 0xc000) && (addr < 0xc800))
169169         return m_rambase_c000[addr - 0xc000];
170170   }
171   
171
172172   // ROM bank mapped
173173   return m_ROM[m_wardner_membank * 0x8000 + offset];
174174}
src/mame/drivers/pokechmp.c
r15704r15705
1111
1212   Todo:
1313
14   Verify frequencies etc.
14    Verify frequencies etc.
1515
1616*/
1717
r15704r15705
5454   UINT8 *ROM = memregion("maincpu")->base();
5555
5656   int bank;
57   
57
5858   bank  = (data & 0x1) ? 0x04000 : 0x00000;
5959   bank |= (data & 0x2) ? 0x10000 : 0x00000;
6060
r15704r15705
175175   RGN_FRAC(1,8),
176176   8,
177177   /* bizzare order, but it seems to be correct? */
178   { RGN_FRAC(1,8), RGN_FRAC(3,8),RGN_FRAC(0,8),RGN_FRAC(5,8),RGN_FRAC(2,8),RGN_FRAC(7,8),RGN_FRAC(4,8),RGN_FRAC(6,8) },
178   { RGN_FRAC(1,8), RGN_FRAC(3,8),RGN_FRAC(0,8),RGN_FRAC(5,8),RGN_FRAC(2,8),RGN_FRAC(7,8),RGN_FRAC(4,8),RGN_FRAC(6,8) },
179179   { 0, 1, 2, 3, 4, 5, 6, 7 },
180180   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
181181   8*8    /* every char takes 8 consecutive bytes */
r15704r15705
244244{
245245   // default sound rom bank
246246   machine.root_device().membank("bank3")->configure_entries(0, 2, machine.root_device().memregion("audiocpu")->base() + 0x10000, 0x4000);
247   
247
248248   // default fixed area for main CPU
249249   machine.root_device().membank("fixed")->set_base( machine.root_device().memregion("maincpu")->base() + 0x18000 );
250   
250
251251   // default OKI sample bank
252252   machine.root_device().membank("okibank")->set_base( machine.root_device().memregion("oki")->base() + 0x40000 );
253253}
src/mame/drivers/taitotz.c
r15704r15705
7979#include "video/polynew.h"
8080
8181/*
82   Interesting mem areas
82    Interesting mem areas
8383
84   0x40080400...0x400807fc: PPC Interrupt handler table for TLCS900 interrupts (called from 0x4002ea80)
84    0x40080400...0x400807fc: PPC Interrupt handler table for TLCS900 interrupts (called from 0x4002ea80)
8585        0x40080440 (0x10): 0x4003b274       (0xfc06f7 on TLCS sets 0x1000)
8686        0x400804c0 (0x30): 0x4003f1e4       (INT1 handler on TLCS sets 0x3010)  (comms, could be IEEE1394)
8787        0x40080500 (0x40): 0x4002ed94       (debug/trace)
8888        0x40080504 (0x41): 0x4002ede4       (debug/break)
89        0x40080540 (0x50): 0x4003c21c                                             0x5001: sets 0x00000001 in 0x40049c58
90        0x40080740 (0xd0): 0x4002ecc0       (INT3 handler on TLCS sets 0xd000)   (VBlank?)
89        0x40080540 (0x50): 0x4003c21c                                                           0x5001: sets 0x00000001 in 0x40049c58
90        0x40080740 (0xd0): 0x4002ecc0       (INT3 handler on TLCS sets 0xd000)  (VBlank?)
9191        0x400807c0 (0xf0): 0x4002eae4       (0xfc0a44 on TLCS sets 0xf001)
92
92
9393    PPC -> TLCS Commands:
94       0x1000:            0x4003a9e0()                        HDD Reset
95      0x1001:            0x4003aa14()                        HDD Init. Writes HDD status and error to io_shared[0x1a00].
96      0x1010:            0x4003aaf4(), 0x4003ab8c()            HDD Read Sector
97      0x1020:            0x4003ac1c()                        HDD Write Sector
98      0x4000:            ?                              Related to sound loading?
99        0x4001:            0x400429b0()                        MBox related
100      0x4002:            ?                              Loads a byte from MBox ram. Address in io_shared[0x1c04]
101      0x4003:            ?                              Writes a byte into MBox ram. Address in io_shared[0x1c04], data in io_shared[0x1c06].
102      0x4004:            0x40042bc4(), 0x40042c50()            Play music/sound? Params in io_shared[0x1c08...0x1c12]
103      0x5000:            0x4003bc68()                        Reset RTC?
104      0x5010:            0x4003bb68()                        Read RTC
105      0x5020:            0x4003bbec()                        Write RTC
106      0x6000:            ?                              Backup RAM Read. Address in io_shared[0x1d00].
107      0x6010:            ?                              Backup RAM Write. Address in io_shared[0x1d00].
108      0x7000:            0x4003d1c4()
109      0x7001:            0x4003d28c()
110      0x7002:            0x4003d4ac()
111      0x7003:            0x4003d508()
112      0x7004:            0x4003d554()
113      0x7005:            0x4003d168()
114      0x8000:            ?                              Used by vibration (force feedback?) on pwrshovl
115      0xa000:            ?                              Used by vibration (force feedback?) on pwrshovl
116      0xf000:            0x4002f328() TLCS_Init
117      0xf010:            0x4002f074()                        Enables TLCS watchdog timer
118      0xf011:            0x4002f0a8()                        Disables TLCS watchdog
119      0xf020:            ?
120      0xf055:            0x4002f0dc()                        Enables TLCS watchdog and infloops the TLCS
121      0xf0ff:            ?                              TLCS soft reset?
94        0x1000:            0x4003a9e0()                             HDD Reset
95        0x1001:            0x4003aa14()                             HDD Init. Writes HDD status and error to io_shared[0x1a00].
96        0x1010:            0x4003aaf4(), 0x4003ab8c()               HDD Read Sector
97        0x1020:            0x4003ac1c()                             HDD Write Sector
98        0x4000:            ?                                        Related to sound loading?
99        0x4001:            0x400429b0()                             MBox related
100        0x4002:            ?                                        Loads a byte from MBox ram. Address in io_shared[0x1c04]
101        0x4003:            ?                                        Writes a byte into MBox ram. Address in io_shared[0x1c04], data in io_shared[0x1c06].
102        0x4004:            0x40042bc4(), 0x40042c50()               Play music/sound? Params in io_shared[0x1c08...0x1c12]
103        0x5000:            0x4003bc68()                             Reset RTC?
104        0x5010:            0x4003bb68()                             Read RTC
105        0x5020:            0x4003bbec()                             Write RTC
106        0x6000:            ?                                        Backup RAM Read. Address in io_shared[0x1d00].
107        0x6010:            ?                                        Backup RAM Write. Address in io_shared[0x1d00].
108        0x7000:            0x4003d1c4()
109        0x7001:            0x4003d28c()
110        0x7002:            0x4003d4ac()
111        0x7003:            0x4003d508()
112        0x7004:            0x4003d554()
113        0x7005:            0x4003d168()
114        0x8000:            ?                                        Used by vibration (force feedback?) on pwrshovl
115        0xa000:            ?                                        Used by vibration (force feedback?) on pwrshovl
116        0xf000:            0x4002f328() TLCS_Init
117        0xf010:            0x4002f074()                             Enables TLCS watchdog timer
118        0xf011:            0x4002f0a8()                             Disables TLCS watchdog
119        0xf020:            ?
120        0xf055:            0x4002f0dc()                             Enables TLCS watchdog and infloops the TLCS
121        0xf0ff:            ?                                        TLCS soft reset?
122122
123   TLCS -> PPC Commands:
124       0x10xx:            0xfc06f7()                        HDD Command ack?
125                                                   0x40094ec8:
126                                                      0x00:   IDLE
127                                                      0x10:   READ
128                                                      0x11:   READ SECTOR
129                                                      0x12:   READ ALL
130                                                      0x20:   WRITE
131                                                      0x21:   WRITE SECTOR
132                                                      0x22:   WRITE ALL
133                                                      0x30:   VENDER
134                                                      0xff:   ERROR
135                                                      0x??:   UNKNOWN
136      0x3010:            0xfc071c() int1 handler               Comm IRQ, IEEE1394
137      0x40xx:            ?                              Debug
138      0x41xx:            ?                              Debug
139       0x5001:            ?                              RTC?
140      0xd000:            0xfc06b4() int3 handler               VBlank? Runs a counter on the PPC side
141      0xf001:            0xfc0a44()                        PPC sync?
123    TLCS -> PPC Commands:
124        0x10xx:            0xfc06f7()                               HDD Command ack?
125                                                                    0x40094ec8:
126                                                                        0x00:   IDLE
127                                                                        0x10:   READ
128                                                                        0x11:   READ SECTOR
129                                                                        0x12:   READ ALL
130                                                                        0x20:   WRITE
131                                                                        0x21:   WRITE SECTOR
132                                                                        0x22:   WRITE ALL
133                                                                        0x30:   VENDER
134                                                                        0xff:   ERROR
135                                                                        0x??:   UNKNOWN
136        0x3010:            0xfc071c() int1 handler                  Comm IRQ, IEEE1394
137        0x40xx:            ?                                        Debug
138        0x41xx:            ?                                        Debug
139        0x5001:            ?                                        RTC?
140        0xd000:            0xfc06b4() int3 handler                  VBlank? Runs a counter on the PPC side
141        0xf001:            0xfc0a44()                               PPC sync?
142142
143143
144   BG2 intro packet writes:
144    BG2 intro packet writes:
145145
146   construction?
147   0x4012f390()
148      -> 0x401304f0() scene graph parser?
149         -> 0x40130d60()
150            -> 0x401aff48()      R3 = dest, R4 = source, R5 = length
146    construction?
147    0x4012f390()
148        -> 0x401304f0() scene graph parser?
149            -> 0x40130d60()
150                -> 0x401aff48()     R3 = dest, R4 = source, R5 = length
151151
152   0x40174674()
153   0x401ba294()         
154                     R3 = 0x000007d0, R4 = 0x40707bac, R5 = 0x00000398
152    0x40174674()
153    0x401ba294()
154                            R3 = 0x000007d0, R4 = 0x40707bac, R5 = 0x00000398
155155
156                     f1 00 00 63 0c 00 00 7f 0c 00 00 00 08 00 00 00
157                     00 40 01 3e 00 00 81 00 00 00 7f 00 00 7f 00 00
158                     00 40 3e 3e 00 00 7f 00 00 00 7f 00 00 7f 00 00
159                     00 40 3e 00 00 00 7f 00 00 00 81 00 00 7f 00 00
160                     00 40 01 00 00 00 81 00 00 00 81 00 00 7f 00 00
161                     f1 00 00 69 00 00 7f 00 0c 7f 00 00 0d 00 00 7f
162                     00 40 00 3f 00 00 e0 40 00 00 00 00 00 7f 7f 00
163                     00 40 00 00 00 00 e0 40 00 00 00 00 00 7f 81 00
164                     00 40 1f 00 00 00 1f c0 00 00 00 00 00 7f 81 00
165                     00 40 1f 3f 00 00 1f c0 00 00 00 00 00 7f 7f 00
166                     ...
156                            f1 00 00 63 0c 00 00 7f 0c 00 00 00 08 00 00 00
157                            00 40 01 3e 00 00 81 00 00 00 7f 00 00 7f 00 00
158                            00 40 3e 3e 00 00 7f 00 00 00 7f 00 00 7f 00 00
159                            00 40 3e 00 00 00 7f 00 00 00 81 00 00 7f 00 00
160                            00 40 01 00 00 00 81 00 00 00 81 00 00 7f 00 00
161                            f1 00 00 69 00 00 7f 00 0c 7f 00 00 0d 00 00 7f
162                            00 40 00 3f 00 00 e0 40 00 00 00 00 00 7f 7f 00
163                            00 40 00 00 00 00 e0 40 00 00 00 00 00 7f 81 00
164                            00 40 1f 00 00 00 1f c0 00 00 00 00 00 7f 81 00
165                            00 40 1f 3f 00 00 1f c0 00 00 00 00 00 7f 7f 00
166                            ...
167167
168                     R3 = 0x00000b68, R4 = 0x40707e58, R5 = 0x00001000
168                            R3 = 0x00000b68, R4 = 0x40707e58, R5 = 0x00001000
169169
170                     e1 00 00 73 00 81 00 00 04 00 00 00 0c 00 00 00
171                     00 40 06 00 00 94 fd d1 00 d2 82 ce 00 2e 03 ef
172                     00 40 06 00 00 99 fd d1 00 c0 82 ce 00 df 00 40
173                     00 40 06 02 00 91 fd d1 00 ef 88 9e 00 c7 fc 40
174                     00 40 06 1f 00 88 fd d1 00 00 b8 60 00 26 03 ef
175                     e0 00 00 73 00 81 00 00 04 00 00 00 0c 00 00 00
176                     00 40 06 1f 00 8b fd d1 00 00 b8 60 00 d0 fc 40
177                     00 40 06 1f 00 88 fd d1 00 00 b8 60 00 26 03 ef
178                     00 40 06 02 00 91 fd d1 00 ef 88 9e 00 c7 fc 40
179                     ...
170                            e1 00 00 73 00 81 00 00 04 00 00 00 0c 00 00 00
171                            00 40 06 00 00 94 fd d1 00 d2 82 ce 00 2e 03 ef
172                            00 40 06 00 00 99 fd d1 00 c0 82 ce 00 df 00 40
173                            00 40 06 02 00 91 fd d1 00 ef 88 9e 00 c7 fc 40
174                            00 40 06 1f 00 88 fd d1 00 00 b8 60 00 26 03 ef
175                            e0 00 00 73 00 81 00 00 04 00 00 00 0c 00 00 00
176                            00 40 06 1f 00 8b fd d1 00 00 b8 60 00 d0 fc 40
177                            00 40 06 1f 00 88 fd d1 00 00 b8 60 00 26 03 ef
178                            00 40 06 02 00 91 fd d1 00 ef 88 9e 00 c7 fc 40
179                            ...
180180
181                     R3 = 0x00001b68, R4 = 0x40707e58, R5 = 0x00000d19
182                     R3 = 0x00075770, R4 = 0x40443e2c, R5 = 0x00000014
183                     R3 = 0x00075784, R4 = 0x40443e7c, R5 = 0x00000014
184                     R3 = 0x00075798, R4 = 0x40443ecc, R5 = 0x00000014
185                     R3 = 0x000757ac, R4 = 0x40443f1c, R5 = 0x00000014
186                     R3 = 0x000757c0, R4 = 0x40443e6c, R5 = 0x00000014
181                            R3 = 0x00001b68, R4 = 0x40707e58, R5 = 0x00000d19
182                            R3 = 0x00075770, R4 = 0x40443e2c, R5 = 0x00000014
183                            R3 = 0x00075784, R4 = 0x40443e7c, R5 = 0x00000014
184                            R3 = 0x00075798, R4 = 0x40443ecc, R5 = 0x00000014
185                            R3 = 0x000757ac, R4 = 0x40443f1c, R5 = 0x00000014
186                            R3 = 0x000757c0, R4 = 0x40443e6c, R5 = 0x00000014
187187
188                     R3 = 0x00062ca0, R4 = 0x409cfa70, R5 = 0x000001e0
189                     R3 = 0x00008ca0, R4 = 0x409f8f70, R5 = 0x000002c5
190                     R3 = 0x00002ba4, R4 = 0x40fffaf0, R5 = 0x00000028
191                     R3 = 0x0001f4a0, R4 = 0x40a06350, R5 = 0x00000340
192                     R3 = 0x00002bcc, R4 = 0x40fffaf0, R5 = 0x00000028
188                            R3 = 0x00062ca0, R4 = 0x409cfa70, R5 = 0x000001e0
189                            R3 = 0x00008ca0, R4 = 0x409f8f70, R5 = 0x000002c5
190                            R3 = 0x00002ba4, R4 = 0x40fffaf0, R5 = 0x00000028
191                            R3 = 0x0001f4a0, R4 = 0x40a06350, R5 = 0x00000340
192                            R3 = 0x00002bcc, R4 = 0x40fffaf0, R5 = 0x00000028
193193
194                     R3 = 0x00000190, R4 = 0x40fff8f8, R5 = 0x00000014
194                            R3 = 0x00000190, R4 = 0x40fff8f8, R5 = 0x00000014
195195
196   0x40188514()
197                     R3 = 0x0000d818, R4 = 0x40ffcce0, R5 = 0x00000bc0
196    0x40188514()
197                            R3 = 0x0000d818, R4 = 0x40ffcce0, R5 = 0x00000bc0
198198
199                     00 00 00 dd 00 00 00 00 00 00 00 00 00 00 00 00
200                     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
201                     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
202                     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
203                     ...
199                            00 00 00 dd 00 00 00 00 00 00 00 00 00 00 00 00
200                            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
201                            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
202                            00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
203                            ...
204204
205                     R3 = 0x0001494c, R4 = 0x40ffcce0, R5 = 0x00000bc0
205                            R3 = 0x0001494c, R4 = 0x40ffcce0, R5 = 0x00000bc0
206206
207   0x40116c28():      Draws 2D images
208                     R3 = 0x009e0c7a, R4 = 0x40a7c3bc, R5 = 0x0000007c
207    0x40116c28():       Draws 2D images
208                            R3 = 0x009e0c7a, R4 = 0x40a7c3bc, R5 = 0x0000007c
209209
210   0x40116a80():      Clears 2D images?
211                     R3 = 0x009f6308, R4 = 0x40a9a784, R5 = 0x000000f0
210    0x40116a80():       Clears 2D images?
211                            R3 = 0x009f6308, R4 = 0x40a9a784, R5 = 0x000000f0
212212
213213
214214
215      -> 0x40116430():   R3 = dest (|= 0x30800000), R4 = source, R5 = num words
216         -> 0x401162ac() WriteVideoMem:      R3 = source, R4 = dest, R5 = num words
217            -> 0x401064b0() Write video data using FIFO:      R3 = source, R4 = dest, R5 = num words (must be divisible by 8)
218            -> 0x40106668() Write video data using write port:   R3 = source, R4 = dest, R5 = num words
215        -> 0x40116430():    R3 = dest (|= 0x30800000), R4 = source, R5 = num words
216            -> 0x401162ac() WriteVideoMem:      R3 = source, R4 = dest, R5 = num words
217                -> 0x401064b0() Write video data using FIFO:        R3 = source, R4 = dest, R5 = num words (must be divisible by 8)
218                -> 0x40106668() Write video data using write port:  R3 = source, R4 = dest, R5 = num words
219219
220220
221221
222   0x40106788(): FIFO Packet write:         R3 = source, R4 = select between cmd 0 and 1, R5 = num words (must be divisible by 8)
222    0x40106788(): FIFO Packet write:            R3 = source, R4 = select between cmd 0 and 1, R5 = num words (must be divisible by 8)
223223
224224
225225
226   BG2: 4x4 Matrices at 0x40223218
227         word 0: ?? (0x62e6c, 0xf20a0, ...)      anded by 0x1fffff on read, or'd by 0xff800000, or'd by 0x400000 if no matrix, store -> [0x00]
228         word 1: ?? (usually zero)
229         word 2: float (often 1.0)            multiplied by 31.0f, converted to (int), anded by 0x1f, or by 0x80 if word 1 == 1, store -> [0x08]
230         word 3: float                     if (exponent < 1, mult by 0.5), store -> [0x04]
231         word 4: usually 0x00000001            if 0, matrix not stored
232         16x float: 4x4 matrix
233            matrix[0][0] -> store [0x10]
234            matrix[1][0] -> store [0x14]
235            matrix[2][0] -> store [0x18]
236            matrix[3][0] -> store [0x1c]
237            ...
238         word 0: Pointer to another matrix
239         word 1: Pointer to another matrix
226    BG2: 4x4 Matrices at 0x40223218
227            word 0: ?? (0x62e6c, 0xf20a0, ...)      anded by 0x1fffff on read, or'd by 0xff800000, or'd by 0x400000 if no matrix, store -> [0x00]
228            word 1: ?? (usually zero)
229            word 2: float (often 1.0)               multiplied by 31.0f, converted to (int), anded by 0x1f, or by 0x80 if word 1 == 1, store -> [0x08]
230            word 3: float                           if (exponent < 1, mult by 0.5), store -> [0x04]
231            word 4: usually 0x00000001              if 0, matrix not stored
232            16x float: 4x4 matrix
233                matrix[0][0] -> store [0x10]
234                matrix[1][0] -> store [0x14]
235                matrix[2][0] -> store [0x18]
236                matrix[3][0] -> store [0x1c]
237                ...
238            word 0: Pointer to another matrix
239            word 1: Pointer to another matrix
240240
241      0x401afffc(): Write
241        0x401afffc(): Write
242242
243   0x40118af0():
244      -> 0x401195e0(): Read   (Transposes matrix, only columns 0-2 stored + 4 extra command words)
243    0x40118af0():
244        -> 0x401195e0(): Read   (Transposes matrix, only columns 0-2 stored + 4 extra command words)
245245
246      -> 0x40118080: Read, store to [0x40362314+], never read
246        -> 0x40118080: Read, store to [0x40362314+], never read
247247
248248
249   Display list top?:      0x403408c0 (pointer to at 0x4020b80c)
250              bottom?:   0x403608e4 (pointer to at 0x4020b81c)
249    Display list top?:      0x403408c0 (pointer to at 0x4020b80c)
250                 bottom?:   0x403608e4 (pointer to at 0x4020b81c)
251251
252   0x40123fcc():
253      -> 0x401186c8():   Display list parser?
252    0x40123fcc():
253        -> 0x401186c8():    Display list parser?
254254
255   0x40117fb4():   Insert command to disp list. R3 = command word
255    0x40117fb4():   Insert command to disp list. R3 = command word
256256
257   Display list format
258   -------------------
259               0xffff0010: ?
257    Display list format
258    -------------------
259                    0xffff0010: ?
260260
261               0xffff0011: Draw Polygon Object
262                        0 = Polygon data address (21 bits) in screen RAM (in dwords). If 0x400000 set, no matrix.
263                        1 = Object scale (float), if <1.0f multiply scale by 2.0f
264                        2 = 0x80 = object alpha enable, 0x1f = object alpha (0x1f = opaque)
265                        3 = ?
266                        4...15 = 4x3 matrix
261                    0xffff0011: Draw Polygon Object
262                                0 = Polygon data address (21 bits) in screen RAM (in dwords). If 0x400000 set, no matrix.
263                                1 = Object scale (float), if <1.0f multiply scale by 2.0f
264                                2 = 0x80 = object alpha enable, 0x1f = object alpha (0x1f = opaque)
265                                3 = ?
266                                4...15 = 4x3 matrix
267267
268               0xffff0020: ? (no parameters)
269               
270               0xffff0021: Draw Pretransformed Polygon (used for drawing the background images)
271                        0 = address? (if 0x400 set, 24 words)
272                        1 = Texture number (* 0x4000 to address the texture)
273                        2 = ?
274                        3 = ? (usually 0)
275                       
276                        Vertex data: 4x or 5x 4 words
277                        0 = XY coordinates. X = high 16 bits, Y = low 16 bits
278                        1 = Z value?
279                        2 = UV coordinates. U = high 16 bits, V = low 16 bits (possibly shifted left by 4?)
280                        3 = ? (usually 0)
281               
282               0xffff0022: ? (1 word)
283                        0 = ? (Set to 0x00000001 before drawing the background. Z-buffer read disable?)
284               
285               0xffff0030: ? (2 + n words) FIFO write?
286                        0 = ?
287                        1 = num of words
288                        n words = ?
289               
290               0xffff0080: Display List Call?
291               
292               0xffff00ff: End of List?
268                    0xffff0020: ? (no parameters)
293269
294   Polygon data format
295   -------------------
270                    0xffff0021: Draw Pretransformed Polygon (used for drawing the background images)
271                                0 = address? (if 0x400 set, 24 words)
272                                1 = Texture number (* 0x4000 to address the texture)
273                                2 = ?
274                                3 = ? (usually 0)
296275
297   Word 0:
298               ---x---- -------- -------- --------      1: this is the last polygon of the model
299               -------x -------- -------- --------      0: triangle, 1: quad
300               -------- -------- -----xxx xxxxxxxx      Texture number (* 0x4000 to address the texture)
276                                Vertex data: 4x or 5x 4 words
277                                0 = XY coordinates. X = high 16 bits, Y = low 16 bits
278                                1 = Z value?
279                                2 = UV coordinates. U = high 16 bits, V = low 16 bits (possibly shifted left by 4?)
280                                3 = ? (usually 0)
301281
302   Word 1:
303               ?
282                    0xffff0022: ? (1 word)
283                                0 = ? (Set to 0x00000001 before drawing the background. Z-buffer read disable?)
304284
305   Word 2:
306               ?
285                    0xffff0030: ? (2 + n words) FIFO write?
286                                0 = ?
287                                1 = num of words
288                                n words = ?
307289
308   Word 3:
309               ?
290                    0xffff0080: Display List Call?
310291
311   Vertex data: 3x (triangle) or 4x (quad) 4 words
312   Word 0:
313               -------- -------- -------- xxxxxxxx      Texture V coordinate (0..63 with max 4x repeat)
314               -------- -------- xxxxxxxx --------      Texture U coordinate (0..63 with max 4x repeat)
315               -------- xxxxxxxx -------- --------      Usually 0x40. HUD elements set 0xff. Self-illumination?
292                    0xffff00ff: End of List?
316293
317   Word 1:
318               -------- -------- xxxxxxxx xxxxxxxx      Vertex X coordinate (signed 8.8 fixed point)
319               -------- xxxxxxxx -------- --------      Normal X (signed 1.7 fixed point)
294    Polygon data format
295    -------------------
320296
321   Word 2:
322               -------- -------- xxxxxxxx xxxxxxxx      Vertex Y coordinate (signed 8.8 fixed point)
323               -------- xxxxxxxx -------- --------      Normal Y (signed 1.7 fixed point)
297    Word 0:
298                    ---x---- -------- -------- --------     1: this is the last polygon of the model
299                    -------x -------- -------- --------     0: triangle, 1: quad
300                    -------- -------- -----xxx xxxxxxxx     Texture number (* 0x4000 to address the texture)
324301
325   Word 3:
326               -------- -------- xxxxxxxx xxxxxxxx      Vertex Z coordinate (signed 8.8 fixed point)
327               -------- xxxxxxxx -------- --------      Normal Z (signed 1.7 fixed point)
302    Word 1:
303                    ?
328304
329   3D registers
330   ------------
305    Word 2:
306                    ?
331307
332   0x00000100:      xxxxxxxx xxxxxxxx -------- --------      Viewport Y?
333               -------- -------- xxxxxxxx xxxxxxxx      Viewport X?
308    Word 3:
309                    ?
334310
335   0x00000101:      xxxxxxxx xxxxxxxx -------- --------      Viewport center X? (usually 255 or 240)
336               -------- -------- xxxxxxxx xxxxxxxx      Viewport center Y? (usually 200 or 191)
311    Vertex data: 3x (triangle) or 4x (quad) 4 words
312    Word 0:
313                    -------- -------- -------- xxxxxxxx     Texture V coordinate (0..63 with max 4x repeat)
314                    -------- -------- xxxxxxxx --------     Texture U coordinate (0..63 with max 4x repeat)
315                    -------- xxxxxxxx -------- --------     Usually 0x40. HUD elements set 0xff. Self-illumination?
337316
338   0x00000102:      xxxxxxxx xxxxxxxx -------- --------      ? (usually 0x100)
339               -------- -------- xxxxxxxx xxxxxxxx      ? (usually 0x100 or 0xc0)
317    Word 1:
318                    -------- -------- xxxxxxxx xxxxxxxx     Vertex X coordinate (signed 8.8 fixed point)
319                    -------- xxxxxxxx -------- --------     Normal X (signed 1.7 fixed point)
340320
341   0x00000103:
321    Word 2:
322                    -------- -------- xxxxxxxx xxxxxxxx     Vertex Y coordinate (signed 8.8 fixed point)
323                    -------- xxxxxxxx -------- --------     Normal Y (signed 1.7 fixed point)
342324
343   0x00000104:
325    Word 3:
326                    -------- -------- xxxxxxxx xxxxxxxx     Vertex Z coordinate (signed 8.8 fixed point)
327                    -------- xxxxxxxx -------- --------     Normal Z (signed 1.7 fixed point)
344328
345   0x10000100:
329    3D registers
330    ------------
346331
347   0x10000101:
332    0x00000100:     xxxxxxxx xxxxxxxx -------- --------     Viewport Y?
333                    -------- -------- xxxxxxxx xxxxxxxx     Viewport X?
348334
349   0x10000102:      xxxxxxxx xxxxxxxx -------- --------      Diffuse light color (ARGB1555)
350               -------- -------- xxxxxxxx xxxxxxxx      Ambient light color (ARGB1555)
351   
352   0x10000103:
335    0x00000101:     xxxxxxxx xxxxxxxx -------- --------     Viewport center X? (usually 255 or 240)
336                    -------- -------- xxxxxxxx xxxxxxxx     Viewport center Y? (usually 200 or 191)
353337
354   0x10000104:
355   
356   0x10000105:
338    0x00000102:     xxxxxxxx xxxxxxxx -------- --------     ? (usually 0x100)
339                    -------- -------- xxxxxxxx xxxxxxxx     ? (usually 0x100 or 0xc0)
340
341    0x00000103:
342
343    0x00000104:
344
345    0x10000100:
346
347    0x10000101:
348
349    0x10000102:     xxxxxxxx xxxxxxxx -------- --------     Diffuse light color (ARGB1555)
350                    -------- -------- xxxxxxxx xxxxxxxx     Ambient light color (ARGB1555)
351
352    0x10000103:
353
354    0x10000104:
355
356    0x10000105:
357357*/
358358
359359#define LOG_PPC_TO_TLCS_COMMANDS      1
r15704r15705
418418      POLY_NY      = 4,
419419      POLY_NZ      = 5,
420420   };
421
421
422422   //static const float ZBUFFER_MAX = 10000000000.0f;
423423
424424   bitmap_rgb32 *m_fb;
r15704r15705
443443   int m_specular_r;
444444   int m_specular_g;
445445   int m_specular_b;
446   
446
447447   float m_vp_center_x;
448448   float m_vp_center_y;
449449   float m_vp_focus;
r15704r15705
509509
510510   UINT8 m_rtcdata[8];
511511
512   
513512
513
514514   UINT32 m_reg105;
515515   UINT32 m_displist_addr;
516516   int m_count;
r15704r15705
522522static void taitotz_exit(running_machine &machine)
523523{
524524   /*
525   taitotz_state *state = machine.driver_data<taitotz_state>();
525    taitotz_state *state = machine.driver_data<taitotz_state>();
526526
527   FILE *file;
528   int i;
527    FILE *file;
528    int i;
529529
530   file = fopen("screen_ram.bin","wb");
531   for (i=0; i < 0x200000; i++)
532   {
533      fputc((UINT8)(state->m_screen_ram[i] >> 24), file);
534      fputc((UINT8)(state->m_screen_ram[i] >> 16), file);
535      fputc((UINT8)(state->m_screen_ram[i] >> 8), file);
536      fputc((UINT8)(state->m_screen_ram[i] >> 0), file);
537   }
538   fclose(file);
530    file = fopen("screen_ram.bin","wb");
531    for (i=0; i < 0x200000; i++)
532    {
533        fputc((UINT8)(state->m_screen_ram[i] >> 24), file);
534        fputc((UINT8)(state->m_screen_ram[i] >> 16), file);
535        fputc((UINT8)(state->m_screen_ram[i] >> 8), file);
536        fputc((UINT8)(state->m_screen_ram[i] >> 0), file);
537    }
538    fclose(file);
539539
540   file = fopen("frame_ram.bin","wb");
541   for (i=0; i < 0x80000; i++)
542   {
543      fputc((UINT8)(state->m_frame_ram[i] >> 24), file);
544      fputc((UINT8)(state->m_frame_ram[i] >> 16), file);
545      fputc((UINT8)(state->m_frame_ram[i] >> 8), file);
546      fputc((UINT8)(state->m_frame_ram[i] >> 0), file);
547   }
548   fclose(file);
540    file = fopen("frame_ram.bin","wb");
541    for (i=0; i < 0x80000; i++)
542    {
543        fputc((UINT8)(state->m_frame_ram[i] >> 24), file);
544        fputc((UINT8)(state->m_frame_ram[i] >> 16), file);
545        fputc((UINT8)(state->m_frame_ram[i] >> 8), file);
546        fputc((UINT8)(state->m_frame_ram[i] >> 0), file);
547    }
548    fclose(file);
549549
550   file = fopen("texture_ram.bin","wb");
551   for (i=0; i < 0x800000; i++)
552   {
553      fputc((UINT8)(state->m_texture_ram[i] >> 24), file);
554      fputc((UINT8)(state->m_texture_ram[i] >> 16), file);
555      fputc((UINT8)(state->m_texture_ram[i] >> 8), file);
556      fputc((UINT8)(state->m_texture_ram[i] >> 0), file);
557   }
558   fclose(file);
559   */
550    file = fopen("texture_ram.bin","wb");
551    for (i=0; i < 0x800000; i++)
552    {
553        fputc((UINT8)(state->m_texture_ram[i] >> 24), file);
554        fputc((UINT8)(state->m_texture_ram[i] >> 16), file);
555        fputc((UINT8)(state->m_texture_ram[i] >> 8), file);
556        fputc((UINT8)(state->m_texture_ram[i] >> 0), file);
557    }
558    fclose(file);
559    */
560560}
561561
562562static VIDEO_START( taitotz )
r15704r15705
596596   UINT32 i;
597597   float x2, y;
598598   const float threehalfs = 1.5f;
599
599
600600   x2 = number * 0.5f;
601601   y  = number;
602602   i  = *(UINT32*)&y;
603603    i  = 0x5f3759df - ( i >> 1 );
604604    y  = *(float*)&i;
605    y  = y * ( threehalfs - ( x2 * y * y ) );
605    y  = y * ( threehalfs - ( x2 * y * y ) );
606606   return y;
607607}
608608
r15704r15705
789789               g = ((g * a) >> 5) + ((sg * (31 - a)) >> 5);
790790               b = ((b * a) >> 5) + ((sb * (31 - a)) >> 5);
791791            }
792           
793792
793
794794            // write to framebuffer
795795            fb[x] = 0xff000000 | (r << 16) | (g << 8) | b;
796796         }
r15704r15705
920920      {
921921         // texture coordinates
922922         UINT8 tu = (src[index] >> 8) & 0xff;
923         UINT8 tv = (src[index] >> 0) & 0xff;   
923         UINT8 tv = (src[index] >> 0) & 0xff;
924924         v[i].p[POLY_U] = (float)(tu);
925925         v[i].p[POLY_V] = (float)(tv);
926926
r15704r15705
931931         float px = ((float)(x) / 256.0f) * scale;
932932         float py = ((float)(y) / 256.0f) * scale;
933933         float pz = ((float)(z) / 256.0f) * scale;
934         
934
935935         // normals
936936         INT8 inx = (src[index + 1] >> 16) & 0xff;
937937         INT8 iny = (src[index + 2] >> 16) & 0xff;
r15704r15705
11001100         m_matrix[1][1]= *(float*)&w[9];
11011101         m_matrix[2][1]= *(float*)&w[10];
11021102         m_matrix[3][1]= *(float*)&w[11];
1103         
1103
11041104         m_matrix[0][2]= *(float*)&w[12];
11051105         m_matrix[1][2]= *(float*)&w[13];
11061106         m_matrix[2][2]= *(float*)&w[14];
r15704r15705
11611161            UINT16 y = (w[4] >>  0) & 0xffff;
11621162            UINT16 tu = (w[6] >> 20) & 0xfff;
11631163            UINT16 tv = (w[6] >>  4) & 0xfff;
1164//            UINT16 z = (w[5] & 0xffff);
1164//              UINT16 z = (w[5] & 0xffff);
11651165
11661166            v[j].x = x;
11671167            v[j].y = y;      // batlgear needs -50 modifier here (why?)
r15704r15705
12791279   bitmap.fill(0x000000, cliprect);
12801280   state->m_renderer->set_fb(&bitmap);
12811281   state->m_renderer->render_displaylist(screen.machine(), cliprect);
1282   
12831282
1283
12841284   UINT16 *screen_src = (UINT16*)&state->m_screen_ram[state->m_scr_base];
12851285
12861286   for (int j=0; j < 384; j++)
r15704r15705
13291329}
13301330
13311331/*
1332   Video chip memory map
1332    Video chip memory map
13331333
1334   0x800000...0x9fffff         Screen RAM
1335      0x980000...7fff         Char RAM
1336      0x9c0000...fffff      Tile RAM?
1334    0x800000...0x9fffff         Screen RAM
1335        0x980000...7fff         Char RAM
1336        0x9c0000...fffff        Tile RAM?
13371337
1338   0x1000000...0x17fffff      Texture RAM
1338    0x1000000...0x17fffff       Texture RAM
13391339
1340   0x1800000...0x187ffff      Frame RAM
1340    0x1800000...0x187ffff       Frame RAM
13411341
13421342
1343   landhigh puts fullscreen images into 0x9c0000
1344   batlgr2 into 0x9e0000
1343    landhigh puts fullscreen images into 0x9c0000
1344    batlgr2 into 0x9e0000
13451345*/
13461346
13471347static UINT32 video_mem_r(taitotz_state *state, UINT32 address)
r15704r15705
14071407
14081408         if (reg != 0x20000008)
14091409            logerror("video_reg_r: reg: %08X\n", reg);
1410         
1410
14111411         if (subreg < 0x10)
14121412         {
14131413            return state->m_video_unk_reg[subreg];
r15704r15705
15001500{
15011501   UINT64 r = 0;
15021502   UINT32 reg = offset * 8;
1503   
1503
15041504   if (ACCESSING_BITS_0_31)
15051505   {
15061506      reg += 4;
r15704r15705
16001600               }
16011601               case 0x3:
16021602               {
1603                  // video_chip_w: port 0x08: 30000001      gets spammed a lot
1603                  // video_chip_w: port 0x08: 30000001        gets spammed a lot
16041604                  break;
16051605               }
16061606               default:
r15704r15705
16661666   else if (command == 0x1)
16671667   {
16681668      // FIFO command/packet write
1669     
1669
16701670      if (ACCESSING_BITS_32_63)
16711671      {
16721672         if (m_video_fifo_ptr >= 8)
r15704r15705
17341734READ64_MEMBER(taitotz_state::ppc_common_r)
17351735{
17361736   UINT64 res = 0;
1737   
1737
17381738   if (ACCESSING_BITS_0_15)
17391739   {
17401740      res |= m_io_share_ram[(offset * 2) + 1];
r15704r15705
18011801               m_io_share_ram[0x1c1a/2]
18021802               );
18031803      }
1804     
1804
18051805      /*
1806      if (m_io_share_ram[0xfff] == 0x1010)
1807      {
1808         printf("   %04X %04X %04X %04X\n", m_io_share_ram[0x1a02/2], m_io_share_ram[0x1a04/2], m_io_share_ram[0x1a06/2], m_io_share_ram[0x1a08/2]);
1809      }
1810      */
1811     
1806        if (m_io_share_ram[0xfff] == 0x1010)
1807        {
1808            printf("   %04X %04X %04X %04X\n", m_io_share_ram[0x1a02/2], m_io_share_ram[0x1a04/2], m_io_share_ram[0x1a06/2], m_io_share_ram[0x1a08/2]);
1809        }
1810        */
1811
18121812#endif
18131813
18141814
r15704r15705
19351935      if (m_io_share_ram[0xfff] == 0 && m_io_share_ram[0xffe] == 0x1012)
19361936      {
19371937         //device_spin_until_trigger(machine().device("iocpu"), TLCS_PPC_COMM_TRIGGER);
1938         device_yield(machine().device("iocpu"));   
1938         device_yield(machine().device("iocpu"));
19391939         machine().scheduler().trigger(PPC_TLCS_COMM_TRIGGER);
19401940      }
19411941   }
r15704r15705
20482048{
20492049   //static UINT16 ide_reg_latch;
20502050   int reg = offset >> 1;
2051   
2051
20522052   if (reg != 6)
20532053      fatalerror("tlcs_ide1_r: %02X\n", offset);
20542054
r15704r15705
21162116   {
21172117      case 0x7:
21182118         //if (data != 0xff && data != 0xfa && data != 0xfe)
2119         //   printf("tlcs900_port_write %02X, %02X\n", offset, data);
2119         //  printf("tlcs900_port_write %02X, %02X\n", offset, data);
21202120         break;
21212121
21222122      case 0x8:
r15704r15705
21282128
21292129      case 0x9:
21302130         //if (data != 0x00)
2131         //   printf("tlcs900_port_write %02X, %02X\n", offset, data);
2131         //  printf("tlcs900_port_write %02X, %02X\n", offset, data);
21322132         break;
21332133
21342134      case 0xb:
r15704r15705
21422142
21432143// TLCS900 interrupt vectors
21442144// 0xfc0150:    Reset
2145// 0xfc0120:    SWI1-7         -
2146// 0xfc0120:   NMI            -
2147// 0xfc0120:   INTWD         -
2148// 0xfc0122:    INT0         PPC communication
2149// 0xfc0137:    INT1         IEEE1394?
2150// 0xfc013c:    INT2         IDE
2151// 0xfc0141:    INT3         VBlank? Drives a counter on PPC side
2152// 0xfc0146:    INT4         -
2153// 0xfc0147:    INT5         -
2154// 0xfc0148:    INT6         -
2155// 0xfc0149:    INT7         -
2156// 0xfc014a:    INT8         Sound chip interrupt?
2157// 0xfc0120:   INTAD         -
2158// 0xfc0120:   INTTR8-A      -
2159// 0xfc0120:   INTT0         -
2160// 0xfc0467:    INTT1         A/D Conversion
2161// 0xfc0120:   INTT2-7         -
2162// 0xfc0120:   INTTC0-3      -
2163// 0xfc0d1d:    INTRX0         Serial 0 receive
2164// 0xfc0ca5:    INTTX0         Serial 0 transmit
2165// 0xfc0d55:    INTRX1         Serial 1 receive
2166// 0xfc0ce1:    INTTX1         Serial 1 transmit
2145// 0xfc0120:    SWI1-7          -
2146// 0xfc0120:    NMI             -
2147// 0xfc0120:    INTWD           -
2148// 0xfc0122:    INT0            PPC communication
2149// 0xfc0137:    INT1            IEEE1394?
2150// 0xfc013c:    INT2            IDE
2151// 0xfc0141:    INT3            VBlank? Drives a counter on PPC side
2152// 0xfc0146:    INT4            -
2153// 0xfc0147:    INT5            -
2154// 0xfc0148:    INT6            -
2155// 0xfc0149:    INT7            -
2156// 0xfc014a:    INT8            Sound chip interrupt?
2157// 0xfc0120:    INTAD           -
2158// 0xfc0120:    INTTR8-A        -
2159// 0xfc0120:    INTT0           -
2160// 0xfc0467:    INTT1           A/D Conversion
2161// 0xfc0120:    INTT2-7         -
2162// 0xfc0120:    INTTC0-3        -
2163// 0xfc0d1d:    INTRX0          Serial 0 receive
2164// 0xfc0ca5:    INTTX0          Serial 0 transmit
2165// 0xfc0d55:    INTRX1          Serial 1 receive
2166// 0xfc0ce1:    INTTX1          Serial 1 transmit
21672167
21682168static ADDRESS_MAP_START( tlcs900h_mem, AS_PROGRAM, 8, taitotz_state)
21692169   AM_RANGE(0x010000, 0x02ffff) AM_RAM                                          // Work RAM
r15704r15705
22332233   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_BUTTON7 )                           // View 5
22342234   PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_BUTTON8 )                           // View 6
22352235   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON3 )                           // View 1
2236   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON4 )                            // View 2
2236   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON4 )                           // View 2
22372237   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON1 )                           // Select 1
22382238   PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_BUTTON2 )                           // Select 2
22392239INPUT_PORTS_END
r15704r15705
25102510{
25112511   UINT32 *rom = (UINT32*)machine.root_device().memregion("user1")->base();
25122512    rom[(0x2c87c^4)/4] = 0x38600000;   // skip sound load timeout...
2513//  rom[(0x2c620^4)/4] = 0x48000014;   // ID check skip (not needed with correct serial number)
2513//  rom[(0x2c620^4)/4] = 0x48000014;    // ID check skip (not needed with correct serial number)
25142514}
25152515
25162516// Init for BIOS 1.11a
r15704r15705
25612561   taitotz_state *state = machine.driver_data<taitotz_state>();
25622562
25632563   init_taitotz_152(machine);
2564   
2564
25652565   state->m_hdd_serial_number = BATLGR2_HDD_SERIAL;
2566   
2566
25672567   state->m_scr_base = 0x1e0000;
25682568
25692569   state->m_displist_addr = 0x3608e4;
r15704r15705
25742574   taitotz_state *state = machine.driver_data<taitotz_state>();
25752575
25762576   init_taitotz_152(machine);
2577   
2577
25782578   state->m_hdd_serial_number = BATLGR2A_HDD_SERIAL;
2579   
2579
25802580   state->m_scr_base = 0x1e0000;
25812581
25822582   state->m_displist_addr = 0x3608e4;
r15704r15705
25872587   taitotz_state *state = machine.driver_data<taitotz_state>();
25882588
25892589   init_taitotz_111a(machine);
2590   
2590
25912591   // unknown, not used by BIOS 1.11a
25922592   state->m_hdd_serial_number = NULL;
2593   
2593
25942594   state->m_scr_base = 0x1c0000;
25952595
25962596   state->m_displist_addr = 0x4a989c;
src/mame/drivers/jpmsru.c
r15704r15705
22
33    JPM S.R.U Hardware
44
5   The Stepper Reel Unit (SRU) was the first JPM hardware platform
6   to use CPU based technology as opposed to a purely mechanical
7   setup.
8   
9   It really shows that this is the antecedent of System 80,
10   the sound hardware seems to be a basic discrete circuit (complete
11   with tone pot), and the hardware uses the older TMS9980A as a CPU.
12   
13   TODO: Everything!
14   
5    The Stepper Reel Unit (SRU) was the first JPM hardware platform
6    to use CPU based technology as opposed to a purely mechanical
7    setup.
8
9    It really shows that this is the antecedent of System 80,
10    the sound hardware seems to be a basic discrete circuit (complete
11    with tone pot), and the hardware uses the older TMS9980A as a CPU.
12
13    TODO: Everything!
14
1515**********************************************************************/
1616
1717#include "emu.h"
src/mame/drivers/taito_l.c
r15704r15705
21472147   ROM_LOAD( "b36-11-1.bin", 0x00000, 0x20000, CRC(f19fb0d5) SHA1(ba7187dfa5b4a08cebf236913a80066dafbbc59f) )
21482148   ROM_LOAD( "b36-09.bin",   0x20000, 0x20000, CRC(9c466e43) SHA1(2466a3f1f8124323008c9925f90e9a1d2edf1564) )
21492149
2150   ROM_REGION( 0x10000, "audiocpu", 0 )   
2150   ROM_REGION( 0x10000, "audiocpu", 0 )
21512151   ROM_LOAD( "b36-06.bin",   0x00000, 0x10000, CRC(29bbc4f8) SHA1(39a68729c6180c5f6cdf604e692018e7d6bf5591) )
21522152
21532153   ROM_REGION( 0x10000, "slave", 0 )
r15704r15705
21662166   ROM_LOAD( "b36-08-1.bin", 0x00000, 0x20000, CRC(6cc8f79f) SHA1(17b4903f87e6d5447c8557c2baca1728f86245dc) )
21672167   ROM_LOAD( "b36-09.bin",   0x20000, 0x20000, CRC(9c466e43) SHA1(2466a3f1f8124323008c9925f90e9a1d2edf1564) )
21682168
2169   ROM_REGION( 0x10000, "audiocpu", 0 )   
2169   ROM_REGION( 0x10000, "audiocpu", 0 )
21702170   ROM_LOAD( "b36-06.bin",   0x00000, 0x10000, CRC(29bbc4f8) SHA1(39a68729c6180c5f6cdf604e692018e7d6bf5591) )
21712171
21722172   ROM_REGION( 0x10000, "slave", 0 )
r15704r15705
21852185   ROM_LOAD( "b36-08.bin", 0x00000, 0x20000, CRC(f40b9178) SHA1(ccf5afcf08cac0d5b2d6ba74abd62d35412f0265) )
21862186   ROM_LOAD( "b36-09.bin", 0x20000, 0x20000, CRC(9c466e43) SHA1(2466a3f1f8124323008c9925f90e9a1d2edf1564) )
21872187
2188   ROM_REGION( 0x10000, "audiocpu", 0 )   
2188   ROM_REGION( 0x10000, "audiocpu", 0 )
21892189   ROM_LOAD( "b36-06.bin",   0x00000, 0x10000, CRC(29bbc4f8) SHA1(39a68729c6180c5f6cdf604e692018e7d6bf5591) )
21902190
21912191   ROM_REGION( 0x10000, "slave", 0 )
r15704r15705
22042204   ROM_LOAD( "b70-11.bin", 0x00000, 0x20000, CRC(7d9f7583) SHA1(d8fa7c66a81fb356fa9c72f377bfc31b1837eafb) )
22052205   ROM_LOAD( "b70-03.bin", 0x20000, 0x80000, CRC(42d5a9b8) SHA1(10714fe95c372cec12376e615a9abe213aff12bc) )
22062206
2207   ROM_REGION( 0x10000, "audiocpu", 0 )   
2207   ROM_REGION( 0x10000, "audiocpu", 0 )
22082208   ROM_LOAD( "b70-09.bin", 0x00000, 0x10000, CRC(85cccaa2) SHA1(5459cd8df9d94e1938008cfc17d4ebac98004bfc) )
22092209
22102210   ROM_REGION( 0x20000, "slave", 0 )
r15704r15705
22202220   ROM_LOAD( "b70-07.bin", 0x00000, 0x20000, CRC(939114af) SHA1(66218536dcb3b34ffa01d3c9c2fee365d91cfe00) )
22212221   ROM_LOAD( "b70-03.bin", 0x20000, 0x80000, CRC(42d5a9b8) SHA1(10714fe95c372cec12376e615a9abe213aff12bc) )
22222222
2223   ROM_REGION( 0x10000, "audiocpu", 0 )   
2223   ROM_REGION( 0x10000, "audiocpu", 0 )
22242224   ROM_LOAD( "b70-09.bin", 0x00000, 0x10000, CRC(85cccaa2) SHA1(5459cd8df9d94e1938008cfc17d4ebac98004bfc) )
22252225
22262226   ROM_REGION( 0x20000, "slave", 0 )
r15704r15705
22362236   ROM_LOAD( "c01-13.rom", 0x00000, 0x20000, CRC(7ef47525) SHA1(79789fa3bcaeb6666c108d2e4b69a1f9341b2f4a) )
22372237   ROM_LOAD( "c01-04.rom", 0x20000, 0x20000, CRC(358bd076) SHA1(beb20a09370d05de719dde596eadca8fecb14ce5) )
22382238
2239   ROM_REGION( 0x10000, "audiocpu", 0 )   
2239   ROM_REGION( 0x10000, "audiocpu", 0 )
22402240   ROM_LOAD( "c01-08.rom", 0x00000, 0x10000, CRC(810efff8) SHA1(dd4fc046095e0e815e8e1fd96d258da0d6bba298) )
22412241
22422242   ROM_REGION( 0x20000, "slave", 0 )
r15704r15705
22562256   ROM_LOAD( "c01-12.rom", 0x00000, 0x20000, CRC(09f345b3) SHA1(f3f9a7dab0b3f87b6919a7b37cb52245e112cb08) )
22572257   ROM_LOAD( "c01-04.rom", 0x20000, 0x20000, CRC(358bd076) SHA1(beb20a09370d05de719dde596eadca8fecb14ce5) )
22582258
2259   ROM_REGION( 0x10000, "audiocpu", 0 )   
2259   ROM_REGION( 0x10000, "audiocpu", 0 )
22602260   ROM_LOAD( "c01-08.rom", 0x00000, 0x10000, CRC(810efff8) SHA1(dd4fc046095e0e815e8e1fd96d258da0d6bba298) )
22612261
22622262   ROM_REGION( 0x20000, "slave", 0 )
r15704r15705
22762276   ROM_LOAD( "c01-06.bin", 0x00000, 0x20000, CRC(90fa1409) SHA1(7904488d567ce5d8705b2d2c8a4b4aae310cc28b) )
22772277   ROM_LOAD( "c01-04.rom", 0x20000, 0x20000, CRC(358bd076) SHA1(beb20a09370d05de719dde596eadca8fecb14ce5) )
22782278
2279   ROM_REGION( 0x10000, "audiocpu", 0 )   
2279   ROM_REGION( 0x10000, "audiocpu", 0 )
22802280   ROM_LOAD( "c01-08.rom", 0x00000, 0x10000, CRC(810efff8) SHA1(dd4fc046095e0e815e8e1fd96d258da0d6bba298) )
22812281
22822282   ROM_REGION( 0x20000, "slave", 0 )
src/mame/drivers/globalvr.c
r15704r15705
155155GAME( 2005, nfsug,     0, globalvr, globalvr, 0, ROT0, "Gloval VR", "Need For Speed: Underground Install (2 Discs) (v1.1)", GAME_IS_SKELETON )
156156
157157
158
158
src/mame/drivers/cyclemb.c
r15704r15705
11/***************************************************************************************************
22
33    Cycle Mahbou (c) 1984 Taito Corporation / Seta
4   Sky Destroyer (c9 1985 Taito Corporation
4    Sky Destroyer (c9 1985 Taito Corporation
55
66    appears to be in the exact middle between the gsword / josvolly HW and the ppking / gladiator HW
77
r15704r15705
237237   int x,y;
238238   //UINT8 flip_screen = state->flip_screen();
239239/*
240   char tempstring[1024];
240    char tempstring[1024];
241241
242   for (x=0;x<64;x++)
243   {
244      if (x<32)
245         sprintf(tempstring, "%s %02x", tempstring, state->m_vram[x*64+0]);
246      else
247         sprintf(tempstring, "%s %02x", tempstring, state->m_vram[(x-32)*64+1]);
248   }
242    for (x=0;x<64;x++)
243    {
244        if (x<32)
245            sprintf(tempstring, "%s %02x", tempstring, state->m_vram[x*64+0]);
246        else
247            sprintf(tempstring, "%s %02x", tempstring, state->m_vram[(x-32)*64+1]);
248    }
249249
250   printf("%s", tempstring);
250    printf("%s", tempstring);
251251*/
252252
253253   for (y=0;y<32;y++)
r15704r15705
300300   UINT16 spr_offs,i;
301301   INT16 x,y;
302302
303//   popmessage("%d %d",state->m_obj2_ram[0x0d], 0xf1 - state->m_obj2_ram[0x0c+1] + 68);
303//  popmessage("%d %d",state->m_obj2_ram[0x0d], 0xf1 - state->m_obj2_ram[0x0c+1] + 68);
304304
305305   for(i=0;i<0x80;i+=2)
306306   {
r15704r15705
314314      if(region == 2)
315315      {
316316         spr_offs >>= 2;
317      //   spr_offs += ((state->m_obj3_ram[i+0] & 3) << 5);
317      //  spr_offs += ((state->m_obj3_ram[i+0] & 3) << 5);
318318         x-=16;
319319      }
320320
r15704r15705
459459                  printf("%02x\n",skydest_mcu.txd);
460460                  skydest_mcu.rxd = 0x00;
461461            }
462            //   skydest_mcu.rxd = space->machine().rand();
463            //   break;
462            //  skydest_mcu.rxd = space->machine().rand();
463            //  break;
464464         }
465465      }
466466
r15704r15705
10051005   MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1, 2*8, 30*8-1)
10061006   MCFG_SCREEN_UPDATE_STATIC(skydest)
10071007
1008//   MCFG_PALETTE_INIT(skydest)
1008//  MCFG_PALETTE_INIT(skydest)
10091009MACHINE_CONFIG_END
10101010
10111011/***************************************************************************
r15704r15705
10661066
10671067   ROM_REGION( 0x10000, "sprite_data_1", ROMREGION_ERASEFF )
10681068    ROM_LOAD( "pd0-7.1k",     0x000000, 0x002000, CRC(83137d42) SHA1(7e35f28577d6bfeee184a0ac3095b478999d6477) ) //ok
1069      ROM_LOAD( "pd1-8.1l",     0x002000, 0x002000, CRC(b810858b) SHA1(385e625fc989a1dfa18559a62c99363b62c66a67) ) //ok
1069   ROM_LOAD( "pd1-8.1l",     0x002000, 0x002000, CRC(b810858b) SHA1(385e625fc989a1dfa18559a62c99363b62c66a67) ) //ok
10701070    ROM_LOAD( "pd0-9.1m",     0x004000, 0x002000, CRC(6f558bee) SHA1(0539feaa848d6cfb9f90a46a851f73fb74e82676) ) //ok
10711071    ROM_LOAD( "pd1-10.1n",    0x006000, 0x002000, CRC(5840b5b5) SHA1(1b5b188023c4d3198402c946b8c5a51d7f512a07) )
10721072    ROM_LOAD( "pd0-11.1r",    0x008000, 0x002000, CRC(29e5fce4) SHA1(59748e3a192a45dce7920e8d5a7a11d5145915b0) ) //ok
1073      ROM_LOAD( "pd0-12.1s",    0x00a000, 0x002000, CRC(06234942) SHA1(1cc40a8c8e24ab6db1dc7dc88979be23b7a9cab6) )
1073   ROM_LOAD( "pd0-12.1s",    0x00a000, 0x002000, CRC(06234942) SHA1(1cc40a8c8e24ab6db1dc7dc88979be23b7a9cab6) )
10741074    ROM_LOAD( "pd1-13.1t",    0x00c000, 0x002000, CRC(3cca5b95) SHA1(74baec7c128254c394dd3162df7abacf5ed5a99b) ) //ok
10751075    ROM_LOAD( "pd0-14.1u",    0x00e000, 0x002000, CRC(7ef05b01) SHA1(f36ad1c0dac201729def78dc18feacda8fcf1a3f) )
10761076
src/mame/drivers/cobra.c
r15704r15705
22*/
33
44/*
5   check_color_buffer(): 0, 0
6      gfxfifo_exec: ram write 00100: 00000800
7      gfxfifo_exec: ram write 00104: 00000000
8      gfxfifo_exec: ram write 00108: 00000080
9      gfxfifo_exec: ram write 0010C: 00000080
10      gfxfifo_exec: ram write 00110: 20200000
11      gfxfifo_exec: ram write 00120: 08800800
12      gfxfifo_exec: ram write 00124: 00081018
13      gfxfifo_exec: ram write 00128: 08080808
14      gfxfifo_exec: ram write 80100: 00800000
15      gfxfifo_exec: ram write 80104: 00800000
16      gfxfifo_exec: ram write 80110: 00800000
17      gfxfifo_exec: ram write 800A8: 00000000
18      gfxfifo_exec: ram write 80108: 00000000
5    check_color_buffer(): 0, 0
6        gfxfifo_exec: ram write 00100: 00000800
7        gfxfifo_exec: ram write 00104: 00000000
8        gfxfifo_exec: ram write 00108: 00000080
9        gfxfifo_exec: ram write 0010C: 00000080
10        gfxfifo_exec: ram write 00110: 20200000
11        gfxfifo_exec: ram write 00120: 08800800
12        gfxfifo_exec: ram write 00124: 00081018
13        gfxfifo_exec: ram write 00128: 08080808
14        gfxfifo_exec: ram write 80100: 00800000
15        gfxfifo_exec: ram write 80104: 00800000
16        gfxfifo_exec: ram write 80110: 00800000
17        gfxfifo_exec: ram write 800A8: 00000000
18        gfxfifo_exec: ram write 80108: 00000000
1919
20   check_color_buffer(): 0, 1
21      gfxfifo_exec: ram write 00120: 08800800
22      gfxfifo_exec: ram write 00124: 00081018
23      gfxfifo_exec: ram write 00128: 08080808
24      gfxfifo_exec: ram write 80100: 00200000
25      gfxfifo_exec: ram write 80104: 00200000
26      gfxfifo_exec: ram write 80110: 00200000
27      gfxfifo_exec: ram write 800A8: 00000000
20    check_color_buffer(): 0, 1
21        gfxfifo_exec: ram write 00120: 08800800
22        gfxfifo_exec: ram write 00124: 00081018
23        gfxfifo_exec: ram write 00128: 08080808
24        gfxfifo_exec: ram write 80100: 00200000
25        gfxfifo_exec: ram write 80104: 00200000
26        gfxfifo_exec: ram write 80110: 00200000
27        gfxfifo_exec: ram write 800A8: 00000000
2828
29   check_overlay_buffer():
30      gfxfifo_exec: ram write 00120: 08800800
31      gfxfifo_exec: ram write 00124: 00081018
32      gfxfifo_exec: ram write 00128: 08080808
33      gfxfifo_exec: ram write 80100: 000E0000
34      gfxfifo_exec: ram write 80104: 000E0000
35      gfxfifo_exec: ram write 80110: 000E0000
36      gfxfifo_exec: ram write 800A8: 00000000
29    check_overlay_buffer():
30        gfxfifo_exec: ram write 00120: 08800800
31        gfxfifo_exec: ram write 00124: 00081018
32        gfxfifo_exec: ram write 00128: 08080808
33        gfxfifo_exec: ram write 80100: 000E0000
34        gfxfifo_exec: ram write 80104: 000E0000
35        gfxfifo_exec: ram write 80110: 000E0000
36        gfxfifo_exec: ram write 800A8: 00000000
3737
38   check_z_buffer():
39      gfxfifo_exec: ram write 00120: 08000800
40      gfxfifo_exec: ram write 00124: 00000010
41      gfxfifo_exec: ram write 00128: 00001010
42      gfxfifo_exec: ram write 80100: 00000000
43      gfxfifo_exec: ram write 80104: 00000800
44      gfxfifo_exec: ram write 80110: 00000800
45      gfxfifo_exec: ram write 800A8: 80000000
38    check_z_buffer():
39        gfxfifo_exec: ram write 00120: 08000800
40        gfxfifo_exec: ram write 00124: 00000010
41        gfxfifo_exec: ram write 00128: 00001010
42        gfxfifo_exec: ram write 80100: 00000000
43        gfxfifo_exec: ram write 80104: 00000800
44        gfxfifo_exec: ram write 80110: 00000800
45        gfxfifo_exec: ram write 800A8: 80000000
4646
47   check_stencil_buffer():
48      gfxfifo_exec: ram write 00120: 08000800
49      gfxfifo_exec: ram write 00124: 00000010
50      gfxfifo_exec: ram write 00128: 00001010
51      gfxfifo_exec: ram write 80100: 00000000
52      gfxfifo_exec: ram write 80104: 00000200
53      gfxfifo_exec: ram write 80110: 00000200
54      gfxfifo_exec: ram write 800A8: 80000000
47    check_stencil_buffer():
48        gfxfifo_exec: ram write 00120: 08000800
49        gfxfifo_exec: ram write 00124: 00000010
50        gfxfifo_exec: ram write 00128: 00001010
51        gfxfifo_exec: ram write 80100: 00000000
52        gfxfifo_exec: ram write 80104: 00000200
53        gfxfifo_exec: ram write 80110: 00000200
54        gfxfifo_exec: ram write 800A8: 80000000
5555*/
5656
5757
r15704r15705
203203   int m_comram_page;
204204
205205   bitmap_rgb32 *m_framebuffer;
206   
206
207207   int m_main_debug_state;
208208   int m_main_debug_state_wc;
209209   int m_sub_debug_state;
r15704r15705
290290   {
291291      int x = x1;
292292      for (int i=0; i < abs(dx); i++)
293      {     
293      {
294294         int y = y1 + (dy * (float)(x - x1) / (float)(dx));
295295
296296         UINT32 *fb = &m_fb->pix32(y);
r15704r15705
656656
657657
658658      /*
659      if (fifo_is_empty(S2MFIFO))
660      {
661         device_spin_until_time(machine().device("subcpu"), attotime::from_usec(80));
662      }
663      */
659        if (fifo_is_empty(S2MFIFO))
660        {
661            device_spin_until_time(machine().device("subcpu"), attotime::from_usec(80));
662        }
663        */
664664   }
665665   if (ACCESSING_BITS_32_39)
666666   {
r15704r15705
900900
901901      if (m_m2sfifo->is_empty())
902902      {
903   //      cputag_set_input_line(space.machine(), "subcpu", INPUT_LINE_IRQ0, CLEAR_LINE);
903   //      cputag_set_input_line(space.machine(), "subcpu", INPUT_LINE_IRQ0, CLEAR_LINE);
904904
905905         // this is a hack...
906906         // MAME has a small interrupt latency, which prevents the IRQ bit from being cleared in
r15704r15705
911911      r |= (value & 0xff) << 24;
912912
913913      /*
914      if (fifo_is_empty(M2SFIFO))
915      {
916         device_spin_until_time(machine().device("maincpu"), attotime::from_usec(80));
917      }
918      */
914        if (fifo_is_empty(M2SFIFO))
915        {
916            device_spin_until_time(machine().device("maincpu"), attotime::from_usec(80));
917        }
918        */
919919   }
920920   if (ACCESSING_BITS_16_23)
921921   {
r15704r15705
986986
987987      if (!s2mfifo_unk_flag)
988988      {
989//         cputag_set_input_line(space.machine(), "subcpu", INPUT_LINE_IRQ1, ASSERT_LINE);
989//          cputag_set_input_line(space.machine(), "subcpu", INPUT_LINE_IRQ1, ASSERT_LINE);
990990
991991         // this is a hack...
992992         // MAME has a small interrupt latency, which prevents the IRQ bit from being set in
r15704r15705
995995      }
996996      else
997997      {
998//         cputag_set_input_line(space.machine(), "subcpu", INPUT_LINE_IRQ1, CLEAR_LINE);
998//          cputag_set_input_line(space.machine(), "subcpu", INPUT_LINE_IRQ1, CLEAR_LINE);
999999
10001000         // this is a hack...
10011001         // MAME has a small interrupt latency, which prevents the IRQ bit from being cleared in
r15704r15705
11951195   AM_RANGE(0x7e000000, 0x7e000003) AM_MIRROR(0x80000000) AM_WRITE(sub_debug_w)
11961196   AM_RANGE(0x7e180000, 0x7e180003) AM_MIRROR(0x80000000) AM_READWRITE(sub_unk1_r, sub_unk1_w)
11971197   AM_RANGE(0x7e200000, 0x7e200003) AM_MIRROR(0x80000000) AM_READWRITE(sub_config_r, sub_config_w)
1198//   AM_RANGE(0x7e240000, 0x7e27ffff) AM_MIRROR(0x80000000) AM_RAM                                 // PSAC (ROZ) in Racing Jam.
1199//   AM_RANGE(0x7e280000, 0x7e28ffff) AM_MIRROR(0x80000000) AM_RAM                                 // LANC
1200//   AM_RANGE(0x7e300000, 0x7e30ffff) AM_MIRROR(0x80000000) AM_RAM                                 // LANC
1198//  AM_RANGE(0x7e240000, 0x7e27ffff) AM_MIRROR(0x80000000) AM_RAM                                           // PSAC (ROZ) in Racing Jam.
1199//  AM_RANGE(0x7e280000, 0x7e28ffff) AM_MIRROR(0x80000000) AM_RAM                                           // LANC
1200//  AM_RANGE(0x7e300000, 0x7e30ffff) AM_MIRROR(0x80000000) AM_RAM                                           // LANC
12011201   AM_RANGE(0x7e380000, 0x7e380003) AM_MIRROR(0x80000000) AM_READWRITE(sub_mainbd_r, sub_mainbd_w)
12021202   AM_RANGE(0x7ff80000, 0x7fffffff) AM_MIRROR(0x80000000) AM_ROM AM_REGION("user2", 0)                  /* Boot ROM */
12031203ADDRESS_MAP_END
r15704r15705
13911391         case 0xa8:
13921392         case 0xac:
13931393         {
1394            // 0xA80114CC         prm_flashcolor()
1394            // 0xA80114CC           prm_flashcolor()
13951395            // 0xA80118CC
13961396            // 0xA80108FF
13971397
1398            // 0xA80108FF         prm_flashmisc()
1398            // 0xA80108FF           prm_flashmisc()
13991399            // 0xA80110FF
14001400            // 0xA8011CE0
14011401
1402            // 0xA401BCC0         texenvmode()
1402            // 0xA401BCC0           texenvmode()
14031403
1404            // 0xA4019CC0         mode_fog()
1404            // 0xA4019CC0           mode_fog()
14051405
1406            // 0xA40018C0         mode_stipple()
1406            // 0xA40018C0           mode_stipple()
14071407            // 0xA400D080
14081408
1409            // 0xA40138E0         mode_viewclip()
1409            // 0xA40138E0           mode_viewclip()
14101410
1411            // 0xA4011410         mode_scissor()
1411            // 0xA4011410           mode_scissor()
14121412
1413            // 0xA40198A0         mode_alphatest()
1413            // 0xA40198A0           mode_alphatest()
14141414
1415            // 0xA8002010         mode_depthtest()
1415            // 0xA8002010           mode_depthtest()
14161416
1417            // 0xA800507C         mode_blend()
1417            // 0xA800507C           mode_blend()
14181418
1419            // 0xA8001CFE         mode_stenciltest()
1419            // 0xA8001CFE           mode_stenciltest()
14201420
1421            // 0xA8002010         mode_stencilmod()
1421            // 0xA8002010           mode_stencilmod()
14221422            // 0xA80054E0
14231423            // 0xA8001CFE
14241424
1425            // 0xA80118CC         mode_colormask()
1425            // 0xA80118CC           mode_colormask()
14261426            // 0xA80114CC
14271427
14281428            // 0xAxxxxxxx is different form in mbuslib_regwrite()
r15704r15705
14611461         {
14621462            // E0C00004 18C003C0 - 32 params
14631463            // E0C00004 18F803C1 - 48 params
1464            // E0C00003 18C003C0 - 24 params      prm_triangle()
1465            // E0C00008 18C003C0 - 64 params      prm_trianglestrip()
1466            // E0C00001 58C003C1 - 10 params      prm_trianglefan() (start vertex?)
1467            // E0800004 18C003C0 - 32 params      prm_trianglefan()
1468            // E3000002 58C003C1 - 20 params      prm_line()
1469            // E3000008 58C003C1 - 80 params      prm_lines()
1470            // E3000005 58C003C1 - 50 params      prm_linestrip()
1471            // E2000001 18C003C0 - 8 params         prm_point()
1472            // E2000008 18C003C0 - 64 params      prm_points()
1464            // E0C00003 18C003C0 - 24 params        prm_triangle()
1465            // E0C00008 18C003C0 - 64 params        prm_trianglestrip()
1466            // E0C00001 58C003C1 - 10 params        prm_trianglefan() (start vertex?)
1467            // E0800004 18C003C0 - 32 params        prm_trianglefan()
1468            // E3000002 58C003C1 - 20 params        prm_line()
1469            // E3000008 58C003C1 - 80 params        prm_lines()
1470            // E3000005 58C003C1 - 50 params        prm_linestrip()
1471            // E2000001 18C003C0 - 8 params         prm_point()
1472            // E2000008 18C003C0 - 64 params        prm_points()
14731473            // E0C00003 38C003C1 - 30 params
14741474            // E0C00008 38C003C1 - 80 params
14751475            // E0C00001 78C003C0 - 10 params
14761476            // E0800004 38C003C1 - 40 params
1477            // E3000002 78C003C0 - 20 params      prm_line()
1477            // E3000002 78C003C0 - 20 params        prm_line()
14781478            // E3400002 58C003C1 - 20 params
14791479            // E0C00003 18F803C1 - 36 params
14801480            // E0C00001 58F803C0 - 12 params
r15704r15705
15361536               return;
15371537            }
15381538
1539           
15401539
1540
15411541            // make sure the FIFO has fresh data at top...
15421542            fifo_out->flush();
15431543
r15704r15705
15981598               }
15991599            }
16001600            /*
1601            else if (w1 == 0xe0c00003 && w2 == 0x18c003c0)
1602            {
1603               // Triangle poly packet?
1604               vertex_t vert[3];
1601                else if (w1 == 0xe0c00003 && w2 == 0x18c003c0)
1602                {
1603                    // Triangle poly packet?
1604                    vertex_t vert[3];
16051605
1606               for (i=0; i < 3; i++)
1607               {
1608                  UINT64 in = 0;
1609                  fifo_in->pop(NULL, &in);
1606                    for (i=0; i < 3; i++)
1607                    {
1608                        UINT64 in = 0;
1609                        fifo_in->pop(NULL, &in);
16101610
1611                  fifo_in->pop(NULL, &in);
1611                        fifo_in->pop(NULL, &in);
16121612
1613                  vert[i].x = (u2f((UINT32)(in)) / 8.0f) + 256.0f;
1613                        vert[i].x = (u2f((UINT32)(in)) / 8.0f) + 256.0f;
16141614
1615                  fifo_in->pop(NULL, &in);
1615                        fifo_in->pop(NULL, &in);
16161616
1617                  vert[i].y = (u2f((UINT32)(in)) / 8.0f) + 192.0f;
1617                        vert[i].y = (u2f((UINT32)(in)) / 8.0f) + 192.0f;
16181618
1619                  fifo_in->pop(NULL, &in);
1619                        fifo_in->pop(NULL, &in);
16201620
1621                  fifo_in->pop(NULL, &in);
1622                  fifo_in->pop(NULL, &in);
1623                  fifo_in->pop(NULL, &in);
1624                  fifo_in->pop(NULL, &in);
1625               }
1621                        fifo_in->pop(NULL, &in);
1622                        fifo_in->pop(NULL, &in);
1623                        fifo_in->pop(NULL, &in);
1624                        fifo_in->pop(NULL, &in);
1625                    }
16261626
1627               render_delegate rd = render_delegate(FUNC(cobra_renderer::render_texture_scan), this);
1628               render_triangle(visarea, rd, 6, vert[0], vert[1], vert[2]);
1629            }
1630            */
1627                    render_delegate rd = render_delegate(FUNC(cobra_renderer::render_texture_scan), this);
1628                    render_triangle(visarea, rd, 6, vert[0], vert[1], vert[2]);
1629                }
1630                */
16311631            else
16321632            {
16331633               printf("gfxfifo_exec: unhandled %08X %08X\n", w1, w2);
r15704r15705
16731673               fifo_in->pop(NULL, &param);
16741674
16751675               /*
1676               if (c == 0)
1676                    if (c == 0)
16771677                        printf("       ");
16781678                    printf("%08X ", (UINT32)(param));
16791679
r15704r15705
20582058      if (value == 0xc0)
20592059      {
20602060         m_gfxfifo_in->pop(&space.device(), &in1);
2061         m_gfxfifo_in->pop(&space.device(), &in2);         
2061         m_gfxfifo_in->pop(&space.device(), &in2);
20622062         m_gfx_unknown_v1 = (UINT32)(in1 >> 32);         // FIFO number is read back from this same register
20632063
20642064         m_gfxfifo_out->push(&space.device(), in1 & 0xffffffff);
r15704r15705
23792379      rom[0x62094 / 4] = 0x60000000;         // skip hardcheck()...
23802380      rom[0x62ddc / 4] = 0x60000000;         // skip lanc_hardcheck()
23812381
2382     
2382
23832383      // calculate the checksum of the patched rom...
23842384      UINT32 sum = 0;
23852385      for (int i=0; i < 0x20000/4; i++)
src/mame/drivers/sfbonus.c
r15704r15705
61736173GAME( 200?, getrich,     0,        sfbonus,    newer1_reels3,    getrich,         ROT0,  "Amcoe", "Get Rich (Version 1.0.1)", 0) /* After Around The World */
61746174
61756175// no graphic / sound roms dumped for these sets, but functional program roms & descramble are in place
6176/* Version 4 is a multi-game that has New Fruit Bonus ‘96 Special Edition Ver. 4, New Cherry ‘96 Special Edition Ver. 4 or Skill Cherry ‘97 Ver. 4 */
6176/* Version 4 is a multi-game that has New Fruit Bonus ?96 Special Edition Ver. 4, New Cherry ?96 Special Edition Ver. 4 or Skill Cherry ?97 Ver. 4 */
61776177GAME( 2006, version4,    0,        sfbonus,    amcoe1_reels3,    version4,        ROT0,  "Amcoe", "Version 4 (Version 4.3R CGA)",  GAME_NOT_WORKING)
61786178GAME( 2006, version4v,   version4, sfbonus,    amcoe1_reels3,    version4v,       ROT0,  "Amcoe", "Version 4 (Version 4.3R Dual)", GAME_NOT_WORKING)
61796179GAME( 2006, version4d2,  version4, sfbonus,    amcoe1_reels3,    version4d2,      ROT0,  "Amcoe", "Version 4 (Version 4.3E CGA)",  GAME_NOT_WORKING)
src/mame/drivers/bfm_sc2.c
r15704r15705
14611461   AM_RANGE(0x2C00, 0x2C00) AM_WRITE(unlock_w)                  /* custom chip unlock */
14621462   AM_RANGE(0x2D00, 0x2D01) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w)
14631463   AM_RANGE(0x2E00, 0x2E00) AM_WRITE(bankswitch_w)               /* write bank (rom page select for 0x6000 - 0x7fff ) */
1464   //AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w)            /* vfd2 data (not usually connected!)*/
1464   //AM_RANGE(0x2F00, 0x2F00) AM_WRITE(vfd2_data_w)                /* vfd2 data (not usually connected!)*/
14651465
14661466   AM_RANGE(0x3FFE, 0x3FFE) AM_READ(direct_input_r )
14671467   AM_RANGE(0x3FFF, 0x3FFF) AM_READ(coin_input_r)
src/mame/drivers/pong.c
r15704r15705
397397
398398   /* net */
399399   TTL_74107(ic_f3b, clk, 256H, 256HQ, high)
400    TTL_7400_NAND(ic_g3b, ic_f3b.QQ, 256H)
400   TTL_7400_NAND(ic_g3b, ic_f3b.QQ, 256H)
401401   TTL_7427_NOR(ic_g2b, ic_g3b.Q, vblank, 4V)
402402   NET_ALIAS(net, ic_g2b.Q)
403403
r15704r15705
423423
424424   NETLIST_INCLUDE(pong_schematics)
425425   /* the signal above is delayed on pong due to counter at gate delays.
426    * This is approximated by the following circuit ...
427    */
426     * This is approximated by the following circuit ...
427     */
428428   NET_REMOVE_DEV(ic_h5b)
429429   NETDEV_DELAY_RISE(ic_g5b_D, clk, ic_g5b.Q)
430430   TTL_7400_NAND(ic_h5b, ic_h5c.Q, ic_g5b_D.Q)
r15704r15705
441441   pong_state(const machine_config &mconfig, device_type type, const char *tag)
442442      : driver_device(mconfig, type, tag),
443443        m_maincpu(*this, "maincpu"),
444        m_dac(*this, "dac"),             /* just to have a sound device */
444        m_dac(*this, "dac"),            /* just to have a sound device */
445445        m_srst(*this, "maincpu", "SRST"),
446446        m_sw1a(*this, "maincpu", "sw1a.POS"),
447447        m_sw1b(*this, "maincpu", "sw1b.POS"),
src/mame/drivers/mpu3.c
r15704r15705
628628   if ( data & 0x08 ) m_vfd->reset();
629629
630630   m_alpha_data_line = ((data & 0x20) >> 5);
631   
631
632632   if (m_alpha_clock != ((data & 0x10) >>4))
633633   {
634634      if (!m_alpha_clock)//falling edge
src/mame/drivers/aces1.c
r15704r15705
4545   {
4646      return 0x00;
4747   }
48   
48
4949   DECLARE_READ8_MEMBER( aces1_unk_port00_r )
5050   {
5151      return 0x00;
r15704r15705
111111
112112   DECLARE_WRITE8_MEMBER(ppi8255_ic25_intf_write_a)
113113   {
114   //   printf("extender lamps %02x\n", data);
114   //  printf("extender lamps %02x\n", data);
115115   }
116116
117117   DECLARE_WRITE8_MEMBER(ppi8255_ic25_intf_write_b)
118118   {
119   //   printf("meters, extender select %02x\n", data);
119   //  printf("meters, extender select %02x\n", data);
120120   }
121121
122122   DECLARE_WRITE8_MEMBER(ppi8255_ic25_intf_write_c)
123123   {
124   //   printf("reels, extender strobe %02x\n", data);
124   //  printf("reels, extender strobe %02x\n", data);
125125   }
126   
126
127127   DECLARE_READ8_MEMBER( ppi8255_ic37_intf_read_a )
128128   {
129129      return 0xff;
r15704r15705
154154static TIMER_CALLBACK( m_aces1_irq_timer_callback )
155155{
156156   aces1_state *state = machine.driver_data<aces1_state>();
157//   printf("irq\n");
157//  printf("irq\n");
158158   device_set_input_line(state->m_maincpu, INPUT_LINE_IRQ0, HOLD_LINE);
159159   state->aces1_reset_irq_timer();
160160}
r15704r15705
162162static TIMER_CALLBACK( m_aces1_nmi_timer_callback )
163163{
164164   aces1_state *state = machine.driver_data<aces1_state>();
165//   printf("nmi\n");
165//  printf("nmi\n");
166166   device_set_input_line(state->m_maincpu, INPUT_LINE_NMI, PULSE_LINE);
167167   state->aces1_reset_nmi_timer();
168168}
r15704r15705
315315   MCFG_I8255A_ADD( "ppi8255_ic24", ppi8255_ic24_intf )
316316   MCFG_I8255A_ADD( "ppi8255_ic25", ppi8255_ic25_intf )
317317   MCFG_I8255A_ADD( "ppi8255_ic37", ppi8255_ic37_intf )
318   
318
319319   MCFG_MACHINE_START( aces1 )
320320   MCFG_MACHINE_RESET( aces1 )
321321   MCFG_DEFAULT_LAYOUT(layout_aces1)
r15704r15705
403403
404404/*
405405ROM_START( ac1taklva ) // set 2, just a merged rom of the above, probably for another emulator
406   ROM_REGION( 0x8000, "maincpu", 0 )
407   ROM_LOAD( "430tl.bin", 0x0000, 0x8000, CRC(2fabb08f) SHA1(b737930e428f9258ab22394229c2b5039edf8f97) )
406    ROM_REGION( 0x8000, "maincpu", 0 )
407    ROM_LOAD( "430tl.bin", 0x0000, 0x8000, CRC(2fabb08f) SHA1(b737930e428f9258ab22394229c2b5039edf8f97) )
408408ROM_END
409409
410410ROM_START( ac1cshtw ) // Cash Towers, same ROM as above, original machine apparently plays the same, reskinned machine?
411   ROM_REGION( 0x8000, "maincpu", 0 )
412   ROM_LOAD( "ctp1.bin", 0x0000, 0x8000, CRC(2fabb08f) SHA1(b737930e428f9258ab22394229c2b5039edf8f97) )
411    ROM_REGION( 0x8000, "maincpu", 0 )
412    ROM_LOAD( "ctp1.bin", 0x0000, 0x8000, CRC(2fabb08f) SHA1(b737930e428f9258ab22394229c2b5039edf8f97) )
413413ROM_END
414414*/
415415
r15704r15705
731731GAME( 199?, ac1primt      ,0         ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Primetime (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
732732GAME( 199?, ac1primta      ,ac1primt   ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Primetime (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL ) // same but different rom size?
733733GAME( 199?, ac1taklv      ,0         ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
734//GAME( 199?, ac1taklva      ,ac1taklv   ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL ) // just a merged rom of the above, probably for another emulator
735//GAME( 199?, ac1cshtw      ,0         ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Cash Towers (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL ) // same ROM as above, original machine apparently plays the same, reskinned machine?
734//GAME( 199?, ac1taklva     ,ac1taklv   ,aces1  ,aces1  ,aces1  ,ROT0   ,"Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL ) // just a merged rom of the above, probably for another emulator
735//GAME( 199?, ac1cshtw      ,0          ,aces1  ,aces1  ,aces1  ,ROT0   ,"Ace", "Cash Towers (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL ) // same ROM as above, original machine apparently plays the same, reskinned machine?
736736GAME( 199?, ac1bbclb      ,0         ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
737737GAME( 199?, ac1bbclba      ,ac1bbclb   ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
738738GAME( 199?, ac1clbsv      ,0         ,aces1   ,aces1   ,aces1   ,ROT0   ,"Ace", "Club Sovereign (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL )
src/mame/drivers/mpu5.c
r15704r15705
10571057   ROM_LOAD16_BYTE( "bbtr02.p2", 0x000001, 0x080000, CRC(1fc52d87) SHA1(12147409de0420323c998c58eec3c3c3d326063e) )
10581058   ROM_LOAD16_BYTE( "bbtr02.p3", 0x100000, 0x080000, CRC(6c2e9086) SHA1(856ed523b09356dd25249ad93d2433c7565fac7c) ) // == bbro10.p3
10591059   ROM_LOAD16_BYTE( "bbtr02.p4", 0x100001, 0x080000, CRC(a0f9ff38) SHA1(e9f38c546e6a194e9c72ab5089bdf9b9c6e0c5e8) ) // == bbro10.p4
1060   
1060
10611061   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
10621062   ROM_LOAD16_BYTE( "bbtr02ad.p1", 0x000000, 0x080000, CRC(27a37ec6) SHA1(5122603bc3c9ce4cd2627bc5229dd8becefcaadf) )
10631063   ROM_LOAD16_BYTE( "bbtr02b.p1", 0x000000, 0x080000, CRC(6d173df4) SHA1(8fe471472b2fb01ec4d2ce7ea2984328a43d59fb) )
r15704r15705
14421442   ROM_LOAD16_BYTE( "carn04.p2", 0x000001, 0x080000, CRC(99aa52e2) SHA1(3b41d928b519001497e1dae17bde5fdc71f971a7) )
14431443   ROM_LOAD16_BYTE( "carn04.p3", 0x100000, 0x080000, CRC(b4e632d4) SHA1(4bc3d04aa1884d50c5052b9e8b0069a243d3875b) ) // == 03
14441444   ROM_LOAD16_BYTE( "carn04.p4", 0x100001, 0x080000, CRC(691b53e5) SHA1(580f9ea8cc2ca5cb80da8aecd7d7a6b3ce5e158c) ) // == 03
1445   
1445
14461446   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
14471447   ROM_LOAD16_BYTE( "carn04ad.p1", 0x000000, 0x080000, CRC(aa4a14e5) SHA1(250941c658dce7077a0b5a65be464ff6307aabdf) )
14481448   ROM_LOAD16_BYTE( "carn04b.p1", 0x000000, 0x080000, CRC(c9ced662) SHA1(2a0da3e37ad6d6d9c2401182c368256102c23800) )
r15704r15705
16651665   ROM_LOAD16_BYTE( "cotr02.p2", 0x000001, 0x080000, CRC(69cdb5b3) SHA1(399f8c6049de30aded5766514a40cedea043df3a) )
16661666   ROM_LOAD16_BYTE( "cotr02.p3", 0x100000, 0x080000, CRC(2fc0ed76) SHA1(6548767bc1c0d6135de3a60a0f6ce48098f7d137) ) // == 06
16671667   ROM_LOAD16_BYTE( "cotr02.p4", 0x100001, 0x080000, CRC(fb5c5c16) SHA1(7c6346bb93933bd4b5a0cf73ba4eeb74d2b47812) ) // == 06
1668   
1668
16691669   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
16701670   ROM_LOAD16_BYTE( "cotr02d.p1", 0x000000, 0x080000, CRC(0a08db68) SHA1(dc31265d659acb53e1ce2b823501387c7d629ffe) )
16711671   ROM_LOAD16_BYTE( "cotr02dy.p1", 0x000000, 0x080000, CRC(abcf7e6f) SHA1(cab844c757dd4ed4bed44fe371a3ffa9b54a42b3) )
r15704r15705
18961896   ROM_LOAD16_BYTE( "drct07.p2", 0x000001, 0x080000, CRC(4ce428df) SHA1(1144bc21269af10e7094b1bd2271fc6ee63a8d25) )
18971897   ROM_LOAD16_BYTE( "drct07.p3", 0x100000, 0x080000, CRC(5054ec32) SHA1(2f4134456f502583ce93af4ccc55eb89dbfe48ca) ) // == 06
18981898   ROM_LOAD16_BYTE( "drct07.p4", 0x100001, 0x080000, CRC(0483d31f) SHA1(81a299f05cfd6d1446d44509da86c3a70fb00ba0) ) // == 06
1899   
1899
19001900   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
19011901   ROM_LOAD16_BYTE( "drct07d.p1", 0x000000, 0x080000, CRC(c467ca89) SHA1(06f13448860ca7360dd48e29fc780554bc42ab8b) )
19021902   ROM_LOAD16_BYTE( "drct07dz.p1", 0x000000, 0x080000, CRC(907d9e63) SHA1(a1a8f74e79043cecb42cfd28c14cef98d54b4785) )
r15704r15705
24342434   ROM_LOAD16_BYTE( "g1tr02.p2", 0x000001, 0x080000, CRC(7d3118e9) SHA1(a4ccf46d15125c67e6e17b117bc3a880b46b47e7) )
24352435   ROM_LOAD16_BYTE( "g1tr02.p3", 0x100000, 0x080000, CRC(befbf489) SHA1(d198c27bafaddfd9c2c522be84b2a7aae52f712a) ) // == 03
24362436   ROM_LOAD16_BYTE( "g1tr02.p4", 0x100001, 0x080000, CRC(50e63933) SHA1(501caf831c11d603079807f3fd0570f0991a5f9c) ) // == 03
2437   
2437
24382438   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
24392439   ROM_LOAD16_BYTE( "g1tr02dy.p1", 0x000000, 0x080000, CRC(e9c967ea) SHA1(1a2806e5b95e11aa5a80d7e434ebb40eba057aac) )
24402440   ROM_LOAD16_BYTE( "g1tr02k.p1", 0x000000, 0x080000, CRC(d892e461) SHA1(72185d4c8e6670a0ec87f3807d4c465b1ea2ea89) )
r15704r15705
24472447   ROM_LOAD16_BYTE( "gotr01.p2", 0x000001, 0x080000, CRC(000f6663) SHA1(f79f52c5d4af6cf576db9c529b868b34cd203026) )
24482448   ROM_LOAD16_BYTE( "gotr01.p3", 0x100000, 0x080000, CRC(befbf489) SHA1(d198c27bafaddfd9c2c522be84b2a7aae52f712a) ) // == 03
24492449   ROM_LOAD16_BYTE( "gotr01.p4", 0x100001, 0x080000, CRC(50e63933) SHA1(501caf831c11d603079807f3fd0570f0991a5f9c) ) // == 03
2450   
2451   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */   
2450
2451   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
24522452   ROM_LOAD16_BYTE( "gotr01d.p1", 0x000000, 0x080000, CRC(171a5db8) SHA1(4b10705efafcc456c2a26f9a80bbb9f7c67cea9b) )
24532453   ROM_LOAD16_BYTE( "gotr01dy.p1", 0x000000, 0x080000, CRC(715102e2) SHA1(af067bb2a80793391cb350e15f7f364f9ed3ee22) )
24542454   ROM_LOAD16_BYTE( "gotr01k.p1", 0x000000, 0x080000, CRC(c57930cb) SHA1(3d24482169dc207b5d8ff9819fff8661df19bc79) )
r15704r15705
59715971
59725972   ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision Prg ROMs, to be sorted into clones */
59735973   ROM_LOAD16_BYTE( "ms__sjs2.2_1", 0x000000, 0x080000, CRC(312c2501) SHA1(95e16c5013ea8e246c04b828af6f6b3ca82d18e0) )
5974//   ROM_LOAD16_BYTE( "ms__sjs2.2_2", 0x000000, 0x080000, CRC(31187bc2) SHA1(d352d67feddbf670dbbaff224b19701ce1231fd9) )
5975//   ROM_LOAD16_BYTE( "ms__sjs2.2_3", 0x000000, 0x080000, CRC(8c44ed26) SHA1(35b29f7e4d9c1c73dd9d4891decc131443fc21c5) )
5976//   ROM_LOAD16_BYTE( "ms__sjs2.2_4", 0x000000, 0x080000, CRC(eb3b0f16) SHA1(4664110800c2f5005ffe8d8c1cf5b588dd994347) )
5974//  ROM_LOAD16_BYTE( "ms__sjs2.2_2", 0x000000, 0x080000, CRC(31187bc2) SHA1(d352d67feddbf670dbbaff224b19701ce1231fd9) )
5975//  ROM_LOAD16_BYTE( "ms__sjs2.2_3", 0x000000, 0x080000, CRC(8c44ed26) SHA1(35b29f7e4d9c1c73dd9d4891decc131443fc21c5) )
5976//  ROM_LOAD16_BYTE( "ms__sjs2.2_4", 0x000000, 0x080000, CRC(eb3b0f16) SHA1(4664110800c2f5005ffe8d8c1cf5b588dd994347) )
59775977ROM_END
59785978
59795979
src/mame/drivers/tasman.c
r15704r15705
1111
1212  Thanks to palindrome for PCB scans.
1313
14   0x38606
14    0x38606
1515*/
1616
1717#include "emu.h"
r15704r15705
141141/*
142142 static READ32_HANDLER( rng_r )
143143{
144   return space->machine().rand();
144    return space->machine().rand();
145145}
146146*/
147147
r15704r15705
196196
197197   AM_RANGE(0x500380, 0x500383) AM_READ_LEGACY(test_r)
198198   AM_RANGE(0x500000, 0x5007ff) AM_RAM
199//   AM_RANGE(0x500400, 0x500403) AM_NOP //dual port?
200//   AM_RANGE(0x500420, 0x500423) AM_NOP //dual port?
201//   AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k?
199//  AM_RANGE(0x500400, 0x500403) AM_NOP //dual port?
200//  AM_RANGE(0x500420, 0x500423) AM_NOP //dual port?
201//  AM_RANGE(0x500500, 0x500503) AM_NOP // reads sound ROM in here, polled from m68k?
202202   AM_RANGE(0x580000, 0x580007) AM_READ_LEGACY(test_r)
203203
204204   AM_RANGE(0x600000, 0x60000f) AM_READ_LEGACY(test_r)
src/mame/drivers/esd16.c
r15704r15705
180180
181181   AM_RANGE(0x180008, 0x180009) AM_WRITE(esd16_tilemap0_color_jumppop_w) // todo
182182
183   ESD16_PALETTE_AREA(  0x140000 )
183   ESD16_PALETTE_AREA(  0x140000 )
184184   ESD16_SPRITE_AREA(   0x160000 )
185185   ESD16_IO_AREA_DSW(   0x180000 )
186186   ESD16_VRAM_AREA(     0x300000 )
src/mame/drivers/globalfr.c
r15704r15705
4242WRITE16_MEMBER(globalfr_state::vfd_w)
4343{
4444
45//   if(!(data & 0x20)) need to find reset
45//  if(!(data & 0x20)) need to find reset
4646   {
4747      int clock = (data & 0x40) != 0;
4848      int datline = (data & 0x80);
r15704r15705
5555      }
5656      m_alpha_clock = clock;
5757   }
58//   else
59//   {
60//      m_vfd->reset();
61//   }
58//  else
59//  {
60//      m_vfd->reset();
61//  }
6262}
6363
6464static ADDRESS_MAP_START( globalfr_map, AS_PROGRAM, 16, globalfr_state )
src/mame/drivers/proconn.c
r15704r15705
263263   proconn_state *state = device->machine().driver_data<proconn_state>();
264264
265265//Don't like the look of this, should be a clock somewhere
266//  if (offset == 0)   
267//      state->m_vfd->write_char( data );
266//  if (offset == 0)
267//      state->m_vfd->write_char( data );
268268
269269   for (int i=0; i<8;i++)
270270   {
r15704r15705
317317   MCFG_CPU_PROGRAM_MAP(proconn_map)
318318   MCFG_CPU_IO_MAP(proconn_portmap)
319319   MCFG_ROC10937_ADD("vfd",0,LEFT_TO_RIGHT)
320   
320
321321   MCFG_Z80PIO_ADD( "z80pio_1", 4000000, pio_interface_1 ) /* ?? Mhz */
322322   MCFG_Z80PIO_ADD( "z80pio_2", 4000000, pio_interface_2 ) /* ?? Mhz */
323323   MCFG_Z80PIO_ADD( "z80pio_3", 4000000, pio_interface_3 ) /* ?? Mhz */
src/mame/drivers/bfmsys85.c
r15704r15705
7575      : driver_device(mconfig, type, tag),
7676        m_vfd(*this, "vfd")
7777      { }
78     
78
7979   optional_device<roc10937_t> m_vfd;
8080   int m_mmtr_latch;
8181   int m_triac_latch;
r15704r15705
260260
261261WRITE8_MEMBER(bfmsys85_state::vfd_w)
262262{
263   
263
264264   if (data & VFD_RESET)//inverted?
265265   {
266266      if (m_alpha_clock != (data & VFD_CLOCK1))
src/mame/drivers/dfruit.c
r15704r15705
22
33    Fruit Dream (c) 1993 Nippon Data Kiki / Star Fish
44
5   driver by Angelo Salese
5    driver by Angelo Salese
66
77    Uses a TC0091LVC, a variant of the one used on Taito L HW
88
99    TODO:
10   - title screen (PCG uploads at 0x1b400?)
11   - inputs are grossly mapped;
12   - lamps?
13   - service mode?
14   - nvram?
10    - title screen (PCG uploads at 0x1b400?)
11    - inputs are grossly mapped;
12    - lamps?
13    - service mode?
14    - nvram?
1515
1616***************************************************************************/
1717
src/mame/drivers/jpmmps.c
r15704r15705
5656static ADDRESS_MAP_START( jpmmps_io_map, AS_IO, 8, jpmmps_state )
5757   ADDRESS_MAP_GLOBAL_MASK(0xff)
5858   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("tms9902_ic5", tms9902_device, cruread, cruwrite)
59   
60//   AM_RANGE(0x0020, 0x0020) // power fail
61//   AM_RANGE(0x0021, 0x0021) // wd timeout
62//   AM_RANGE(0x0022, 0x0022) // invalid access
63//   AM_RANGE(0x0023, 0x0023) // clear down
64   
65//   AM_RANGE(0x0026, 0x0026) // uart4 int
66//   AM_RANGE(0x0027, 0x0027) // uart2 int
6759
60//  AM_RANGE(0x0020, 0x0020) // power fail
61//  AM_RANGE(0x0021, 0x0021) // wd timeout
62//  AM_RANGE(0x0022, 0x0022) // invalid access
63//  AM_RANGE(0x0023, 0x0023) // clear down
64
65//  AM_RANGE(0x0026, 0x0026) // uart4 int
66//  AM_RANGE(0x0027, 0x0027) // uart2 int
67
6868   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE("tms9902_ic10", tms9902_device, cruread, cruwrite)
6969
70//   AM_RANGE(0x0060, 0x0060) // watchdog
71//   AM_RANGE(0x0061, 0x0061) // ram en
72//   AM_RANGE(0x0062, 0x0062) // alarm
73//   AM_RANGE(0x0063, 0x0063) // nmi en
74//   AM_RANGE(0x0064, 0x0064) // reel en
75//   AM_RANGE(0x0065, 0x0065) // io en
76//   AM_RANGE(0x0066, 0x0066) // bb
77//   AM_RANGE(0x0067, 0x0067) // diagnostic led
70//  AM_RANGE(0x0060, 0x0060) // watchdog
71//  AM_RANGE(0x0061, 0x0061) // ram en
72//  AM_RANGE(0x0062, 0x0062) // alarm
73//  AM_RANGE(0x0063, 0x0063) // nmi en
74//  AM_RANGE(0x0064, 0x0064) // reel en
75//  AM_RANGE(0x0065, 0x0065) // io en
76//  AM_RANGE(0x0066, 0x0066) // bb
77//  AM_RANGE(0x0067, 0x0067) // diagnostic led
7878ADDRESS_MAP_END
7979
8080
src/mame/drivers/jpms80.c
r15704r15705
4545
4646static ADDRESS_MAP_START( jpms80_io_map, AS_IO, 8, jpms80_state )
4747   ADDRESS_MAP_GLOBAL_MASK(0x1ff)
48//   AM_RANGE(0x0000, 0x000f) // I/O & Optic (in) / Reels (out)
49//   AM_RANGE(0x0050, 0x0050) // INT1 enable (lv3)
50//   AM_RANGE(0x0051, 0x0051) // INT2 enable (lv4)
51//   AM_RANGE(0x0052, 0x0052) // Watchdog
52//   AM_RANGE(0x0053, 0x0053) // I/O Enable
53//   AM_RANGE(0x0140, 0x015f) // AY
48//  AM_RANGE(0x0000, 0x000f) // I/O & Optic (in) / Reels (out)
49//  AM_RANGE(0x0050, 0x0050) // INT1 enable (lv3)
50//  AM_RANGE(0x0051, 0x0051) // INT2 enable (lv4)
51//  AM_RANGE(0x0052, 0x0052) // Watchdog
52//  AM_RANGE(0x0053, 0x0053) // I/O Enable
53//  AM_RANGE(0x0140, 0x015f) // AY
5454   AM_RANGE(0x01e0, 0x01ff) AM_DEVREADWRITE("tms9902duart", tms9902_device, cruread, cruwrite)
55//  Lamps, Meters etc. can move around   
55//  Lamps, Meters etc. can move around
5656ADDRESS_MAP_END
5757
5858
src/osd/sdl/sdl.mak
r15704r15705
3737
3838# NO_X11 = 1
3939
40# uncomment next line to disable XInput support for e.g. multiple lightguns
40# uncomment next line to disable XInput support for e.g. multiple lightguns
4141# using Wiimote driver (see http://spritesmods.com/?art=wiimote-mamegun for more info)
4242# enabling NO_X11 also implies no XInput support, of course.
4343
src/osd/sdl/input.c
r15704r15705
10451045{
10461046    int index;
10471047    XExtensionVersion   *version;
1048   
1048
10491049    lightgun_enabled = machine.options().lightgun();
1050    devmap_init(machine, &lightgun_map, SDLOPTION_LIGHTGUNINDEX, 8, "Lightgun mapping");   
1051   
1050    devmap_init(machine, &lightgun_map, SDLOPTION_LIGHTGUNINDEX, 8, "Lightgun mapping");
1051
10521052    XDisplay = XOpenDisplay(NULL);
10531053
10541054    if (XDisplay == NULL) {
src/emu/cpu/v30mz/v30mz.c
r15704r15705
449449
450450OP( 0x68, i_push_d16 ) { UINT32 tmp;   FETCHWORD(tmp); PUSH(tmp);   CLK(1);   }
451451OP( 0x69, i_imul_d16 ) { UINT32 tmp;   DEF_r16w;   FETCHWORD(tmp); dst = (INT32)((INT16)src)*(INT32)((INT16)tmp); cpustate->CarryVal = cpustate->OverVal = (((INT32)dst) >> 15 != 0) && (((INT32)dst) >> 15 != -1);     RegWord(ModRM)=(UINT16)dst;     if (ModRM >= 0xc0) CLK(3) else CLK(4) }
452OP( 0x6a, i_push_d8  ) { UINT32 tmp = (UINT16)((INT16)((INT8)FETCH));    PUSH(tmp);   CLK(1);   }
452OP( 0x6a, i_push_d8  ) { UINT32 tmp = (UINT16)((INT16)((INT8)FETCH));   PUSH(tmp);   CLK(1);   }
453453OP( 0x6b, i_imul_d8  ) { UINT32 src2; DEF_r16w; src2= (UINT16)((INT16)((INT8)FETCH)); dst = (INT32)((INT16)src)*(INT32)((INT16)src2); cpustate->CarryVal = cpustate->OverVal = (((INT32)dst) >> 15 != 0) && (((INT32)dst) >> 15 != -1); RegWord(ModRM)=(UINT16)dst; if (ModRM >= 0xc0) CLK(3) else CLK(4) }
454454OP( 0x6c, i_insb     ) { PutMemB(ES,cpustate->regs.w[IY],read_port(cpustate->regs.w[DW])); cpustate->regs.w[IY]+= -2 * cpustate->DF + 1; CLK(6); }
455455OP( 0x6d, i_insw     ) { PutMemB(ES,cpustate->regs.w[IY],read_port(cpustate->regs.w[DW])); PutMemB(ES,(cpustate->regs.w[IY]+1)&0xffff,read_port((cpustate->regs.w[DW]+1)&0xffff)); cpustate->regs.w[IY]+= -4 * cpustate->DF + 2; CLK(6); }
src/emu/cpu/tlcs900/tlcs900.c
r15704r15705
19461946         cpustate->cycles += inst->cycles;
19471947      }
19481948
1949   //   tmp95c063_handle_ad( cpustate );   // TODO
1949   //  tmp95c063_handle_ad( cpustate );    // TODO
19501950
19511951      tmp95c063_handle_timers( cpustate );
19521952
1953   //   tmp95c063_check_hdma( cpustate );   // TODO
1953   //  tmp95c063_check_hdma( cpustate );   // TODO
19541954
19551955      cpustate->icount -= cpustate->cycles;
19561956   } while ( cpustate->icount > 0 );
r15704r15705
21232123
21242124
21252125DEFINE_LEGACY_CPU_DEVICE(TLCS900H, tlcs900h);
2126DEFINE_LEGACY_CPU_DEVICE(TMP95C063, tmp95c063);
No newline at end of file
2126DEFINE_LEGACY_CPU_DEVICE(TMP95C063, tmp95c063);
src/emu/cpu/powerpc/ppccom.c
r15704r15705
455455
456456
457457/*-------------------------------------------------
458   ppccom_dcstore_callback - call the dcstore
459   callback if installed
458    ppccom_dcstore_callback - call the dcstore
459    callback if installed
460460-------------------------------------------------*/
461461
462462void ppccom_dcstore_callback(powerpc_state *ppc)
r15704r15705
16721672}
16731673
16741674/*-------------------------------------------------
1675   ppc_set_dcstore_callback - installs a callback
1676   for detecting datacache stores with dcbst
1675    ppc_set_dcstore_callback - installs a callback
1676    for detecting datacache stores with dcbst
16771677-------------------------------------------------*/
16781678
16791679void ppc_set_dcstore_callback(device_t *device, ppc_dcstore_handler handler)
src/emu/cpu/tms32051/32051ops.c
r15704r15705
3838INLINE INT32 ADD(tms32051_state *cpustate, UINT32 a, UINT32 b)
3939{
4040   UINT32 res = a + b;
41   
41
4242   // C is set if carry was generated
4343   cpustate->st1.c = (a > res) ? 1 : 0;
4444
src/emu/cpu/f8/f8.c
r15704r15705
11601160static void f8_amd(f8_Regs *cpustate)
11611161{
11621162
1163/*SKR from F8 Guide To programming description of AMD
1163/*SKR from F8 Guide To programming description of AMD
11641164
11651165 binary add the addend to the binary sum of the augend and $66
11661166   *NOTE* the binary addition of the augend to $66 is done before AMD is called
r15704r15705
11961196    tmp=((tmp+0xa0)&0xf0)+(tmp&0x0f);
11971197    if(c==1&&ic==0)
11981198    tmp=(tmp&0xf0)+((tmp+0x0a)&0x0f);
1199   
1199
12001200    cpustate->a = tmp;
12011201}
12021202
r15704r15705
14121412    tmp=((tmp+0xa0)&0xf0)+(tmp&0x0f);
14131413    if(c==1&&ic==0)
14141414    tmp=(tmp&0xf0)+((tmp+0x0a)&0x0f);
1415   
1415
14161416    cpustate->a = tmp;
14171417}
14181418
r15704r15705
14451445    tmp=((tmp+0xa0)&0xf0)+(tmp&0x0f);
14461446    if(c==1&&ic==0)
14471447    tmp=(tmp&0xf0)+((tmp+0x0a)&0x0f);
1448   
1448
14491449    cpustate->a = tmp;
14501450}
14511451
r15704r15705
14781478    tmp=((tmp+0xa0)&0xf0)+(tmp&0x0f);
14791479    if(c==1&&ic==0)
14801480    tmp=(tmp&0xf0)+((tmp+0x0a)&0x0f);
1481   
1481
14821482    cpustate->a = tmp;
14831483    cpustate->is = (cpustate->is & 0x38) | ((cpustate->is + 1) & 0x07);
14841484}
r15704r15705
15121512    tmp=((tmp+0xa0)&0xf0)+(tmp&0x0f);
15131513    if(c==1&&ic==0)
15141514    tmp=(tmp&0xf0)+((tmp+0x0a)&0x0f);
1515   
1515
15161516    cpustate->a = tmp;
15171517    cpustate->is = (cpustate->is & 0x38) | ((cpustate->is - 1) & 0x07);
15181518}
src/emu/cpu/tms32025/tms32025.c
r15704r15705
554554
555555
556556/****************************************************************************
557 *   Emulate the Instructions
557 *  Emulate the Instructions
558558 ****************************************************************************/
559559
560560/* The following functions are here to fill the void for the */
r15704r15705
19971997
19981998      if (cpustate->init_load_addr == 2) {      /* Repeat next instruction */
19991999         /****************************************************\
2000         ******* These instructions are not repeatable ********
2001         ** ADLK, ANDK, LALK, LRLK, ORK,  SBLK, XORK       **
2002         ** ADDK, ADRK, LACK, LARK, LDPK, MPYK, RPTK       **
2003         ** SBRK, SPM,  SUBK, ZAC,  IDLE, RPT,  TRAP       **
2004         ** BACC, CALA, RET                           **
2005         ** B,    BANZ, BBNZ, BBZ,  BC,   BGEZ, BGZ,  BIOZ   **
2006         ** BNC,  BNV,  BNZ,  BV,   BZ,   CALL, BLEZ, BLZ   **
2007         \****************************************************/
2000            ******* These instructions are not repeatable ********
2001            ** ADLK, ANDK, LALK, LRLK, ORK,  SBLK, XORK         **
2002            ** ADDK, ADRK, LACK, LARK, LDPK, MPYK, RPTK         **
2003            ** SBRK, SPM,  SUBK, ZAC,  IDLE, RPT,  TRAP         **
2004            ** BACC, CALA, RET                                  **
2005            ** B,    BANZ, BBNZ, BBZ,  BC,   BGEZ, BGZ,  BIOZ   **
2006            ** BNC,  BNV,  BNZ,  BV,   BZ,   CALL, BLEZ, BLZ    **
2007            \****************************************************/
20082008         cpustate->PREVPC = cpustate->PC;
20092009
20102010         debugger_instruction_hook(device, cpustate->PC);
src/emu/cpu/m6800/m6800.c
r15704r15705
21832183DEFINE_LEGACY_CPU_DEVICE(HD63701, hd63701);
21842184DEFINE_LEGACY_CPU_DEVICE(NSC8105, nsc8105);
21852185
2186// DP-40 package: HD6303RP,  HD63A03RP,  HD63B03RP,
2187// FP-54 package: HD6303RF,  HD63A03RF,  HD63B03RF,
2188// CG-40 package: HD6303RCG, HD63A03RCG, HD63B03RCG,
2186// DP-40 package: HD6303RP,  HD63A03RP,  HD63B03RP,
2187// FP-54 package: HD6303RF,  HD63A03RF,  HD63B03RF,
2188// CG-40 package: HD6303RCG, HD63A03RCG, HD63B03RCG,
21892189DEFINE_LEGACY_CPU_DEVICE(HD6303R, hd6303r);
21902190
21912191// DP-64S package: HD6303YP,  HD63A03YP,  HD63B03YP,  HD63C03YP
src/emu/machine/roc10937.c
r15704r15705
159159    save_item(NAME(m_count));
160160    save_item(NAME(m_duty));
161161   save_item(NAME(m_disp));
162   
163162
163
164164   device_reset();
165165}
166166
r15704r15705
183183///////////////////////////////////////////////////////////////////////////
184184UINT32 rocvfd_t::set_display(UINT32 segin)
185185{
186                             
187   
186
187
188188   return BITSWAP32(segin, 31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,11,9,15,13,12,8,10,14,7,6,5,4,3,2,1,0);
189189
190190}
r15704r15705
208208      }
209209      else
210210      {
211         m_outputs[i] = set_display(m_chars[i]);     
211         m_outputs[i] = set_display(m_chars[i]);
212212      }
213213      output_set_indexed_value("vfd", (m_port_val*16) + i, m_outputs[i]);
214214   }
r15704r15705
272272   }
273273   else
274274   { // Display data
275//      data &= 0x3F;
275//      data &= 0x3F;
276276
277277      switch ( data )
278278      {
src/emu/machine/tc009xlvc.c
r15704r15705
11/***************************************************************************
22
3   TC009xLVC device emulation
3    TC009xLVC device emulation
44
5   Written by Angelo Salese, based off Taito L implementation
5    Written by Angelo Salese, based off Taito L implementation
66
7   TODO:
8   - non-video stuff needs to be ported there as well
7    TODO:
8    - non-video stuff needs to be ported there as well
99
1010***************************************************************************/
1111
r15704r15705
188188   int code = vdp->m_vram0[2 * tile_index]
189189         | ((attr & 0x03) << 8)
190190         | ((vdp->m_vregs[(attr & 0xc) >> 2]) << 10);
191//         | (state->m_horshoes_gfxbank << 12);
191//          | (state->m_horshoes_gfxbank << 12);
192192
193193   SET_TILE_INFO_DEVICE(
194194         0,
r15704r15705
204204   int code = vdp->m_vram1[2 * tile_index]
205205         | ((attr & 0x03) << 8)
206206         | ((vdp->m_vregs[(attr & 0xc) >> 2]) << 10);
207//         | (state->m_horshoes_gfxbank << 12);
207//          | (state->m_horshoes_gfxbank << 12);
208208
209209   SET_TILE_INFO_DEVICE(
210210         0,
src/emu/machine/roc10937.h
r15704r15705
2222
2323#define MCFG_ROC10937_REVERSE(_reversed) \
2424   roc10937_t::static_set_zero(*device, _reversed); \
25   
25
2626#define MCFG_ROC10937_REMOVE(_tag) \
2727    MCFG_DEVICE_REMOVE(_tag)
2828
r15704r15705
5050
5151#define MCFG_MSC1937_REVERSE(_reversed) \
5252   roc10937_t::static_set_zero(*device, _reversed); \
53   
53
5454#define MCFG_MSC1937_REMOVE(_tag) \
5555    MCFG_DEVICE_REMOVE(_tag)
56   
57   
56
57
5858class rocvfd_t : public device_t {
5959public:
6060   typedef delegate<void (bool state)> line_cb;
src/emu/machine/tc009xlvc.h
r15704r15705
11/***************************************************************************
22
3   TC0091LVC device
3    TC0091LVC device
44
55***************************************************************************/
66
r15704r15705
4343   UINT8 *m_palette_ram;
4444   UINT8 *m_vregs;
4545   UINT8 *m_bitmap_ram;
46   
46
4747   UINT8 *m_pcg_ram;
4848   UINT8 *m_pcg1_ram;
4949   UINT8 *m_pcg2_ram;
src/emu/machine/netlist.c
r15704r15705
66
77****************************************************************************
88
9   Couriersud reserves the right to license the code under a less restrictive
10   license going forward.
9    Couriersud reserves the right to license the code under a less restrictive
10    license going forward.
1111
12   Copyright Nicola Salmoria and the MAME team
13   All rights reserved.
12    Copyright Nicola Salmoria and the MAME team
13    All rights reserved.
1414
15   Redistribution and use of this code or any derivative works are permitted
16   provided that the following conditions are met:
15    Redistribution and use of this code or any derivative works are permitted
16    provided that the following conditions are met:
1717
18   * Redistributions may not be sold, nor may they be used in a commercial
19   product or activity.
18    * Redistributions may not be sold, nor may they be used in a commercial
19    product or activity.
2020
21   * Redistributions that are modified from the original source must include the
22   complete source code, including the source code for all components used by a
23   binary built from the modified sources. However, as a special exception, the
24   source code distributed need not include anything that is normally distributed
25   (in either source or binary form) with the major components (compiler, kernel,
26   and so on) of the operating system on which the executable runs, unless that
27   component itself accompanies the executable.
21    * Redistributions that are modified from the original source must include the
22    complete source code, including the source code for all components used by a
23    binary built from the modified sources. However, as a special exception, the
24    source code distributed need not include anything that is normally distributed
25    (in either source or binary form) with the major components (compiler, kernel,
26    and so on) of the operating system on which the executable runs, unless that
27    component itself accompanies the executable.
2828
29   * Redistributions must reproduce the above copyright notice, this list of
30   conditions and the following disclaimer in the documentation and/or other
31   materials provided with the distribution.
29    * Redistributions must reproduce the above copyright notice, this list of
30    conditions and the following disclaimer in the documentation and/or other
31    materials provided with the distribution.
3232
33   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43   POSSIBILITY OF SUCH DAMAGE.
33    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43    POSSIBILITY OF SUCH DAMAGE.
4444
4545
4646****************************************************************************/
r15704r15705
7373#if KEEP_STATISTICS
7474#define add_to_stat(v,x)      do { atomic_add32((v), (x)); } while (0)
7575#define inc_stat(v)            add_to_stat(v, 1)
76#define begin_timing(v)          do { (v) -= get_profile_ticks(); } while (0)
76#define begin_timing(v)         do { (v) -= get_profile_ticks(); } while (0)
7777#define end_timing(v)         do { (v) += get_profile_ticks(); } while (0)
7878#else
7979#define add_to_stat(v,x)      do { } while (0)
r15704r15705
778778   do
779779   {
780780      // debugging
781      //m_ppc = m_pc;   // copy PC to previous PC
781      //m_ppc = m_pc; // copy PC to previous PC
782782      //if (check_debugger)
783      //   debugger_instruction_hook(this, 0); //m_pc);
783      //  debugger_instruction_hook(this, 0); //m_pc);
784784      if (--m_ss == 0)
785785      {
786786         m_ss = ssdiv2;
src/emu/machine/netlist.h
r15704r15705
66
77****************************************************************************
88
9   Couriersud reserves the right to license the code under a less restrictive
10   license going forward.
9    Couriersud reserves the right to license the code under a less restrictive
10    license going forward.
1111
12   Copyright Nicola Salmoria and the MAME team
13   All rights reserved.
12    Copyright Nicola Salmoria and the MAME team
13    All rights reserved.
1414
15   Redistribution and use of this code or any derivative works are permitted
16   provided that the following conditions are met:
15    Redistribution and use of this code or any derivative works are permitted
16    provided that the following conditions are met:
1717
18   * Redistributions may not be sold, nor may they be used in a commercial
19   product or activity.
18    * Redistributions may not be sold, nor may they be used in a commercial
19    product or activity.
2020
21   * Redistributions that are modified from the original source must include the
22   complete source code, including the source code for all components used by a
23   binary built from the modified sources. However, as a special exception, the
24   source code distributed need not include anything that is normally distributed
25   (in either source or binary form) with the major components (compiler, kernel,
26   and so on) of the operating system on which the executable runs, unless that
27   component itself accompanies the executable.
21    * Redistributions that are modified from the original source must include the
22    complete source code, including the source code for all components used by a
23    binary built from the modified sources. However, as a special exception, the
24    source code distributed need not include anything that is normally distributed
25    (in either source or binary form) with the major components (compiler, kernel,
26    and so on) of the operating system on which the executable runs, unless that
27    component itself accompanies the executable.
2828
29   * Redistributions must reproduce the above copyright notice, this list of
30   conditions and the following disclaimer in the documentation and/or other
31   materials provided with the distribution.
29    * Redistributions must reproduce the above copyright notice, this list of
30    conditions and the following disclaimer in the documentation and/or other
31    materials provided with the distribution.
3232
33   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43   POSSIBILITY OF SUCH DAMAGE.
33    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43    POSSIBILITY OF SUCH DAMAGE.
4444
4545
4646****************************************************************************/
r15704r15705
9393
9494#define NETLIST_END  }
9595
96#define NETLIST_INCLUDE(_name)                                           \
96#define NETLIST_INCLUDE(_name)                                          \
9797      NETLIST_NAME(_name)(netlist);                                    \
9898
9999
100#define NETLIST_MEMREGION(_name)                                        \
100#define NETLIST_MEMREGION(_name)                                       \
101101      netlist.parse((char *)downcast<netlist_t &>(netlist.netlist()).machine().root_device().memregion(_name)->base());      \
102102
103103#if defined(__GNUC__) && (__GNUC__ >= 3)
r15704r15705
154154// MAME specific
155155
156156#define MCFG_NETLIST_ADD(_tag, _clock, _setup, _subcycles)                    \
157    MCFG_DEVICE_ADD(_tag, NETLIST, _clock)                                  \
157    MCFG_DEVICE_ADD(_tag, NETLIST, _clock)                                 \
158158    MCFG_NETLIST_SUBCYCLES(_subcycles)                                    \
159    MCFG_NETLIST_SETUP(_setup)                                           \
159    MCFG_NETLIST_SETUP(_setup)                                          \
160160
161161#define MCFG_NETLIST_REPLACE(_tag, _clock, _setup, _subcycles)                 \
162    MCFG_DEVICE_REPLACE(_tag, NETLIST, _clock)                               \
162    MCFG_DEVICE_REPLACE(_tag, NETLIST, _clock)                              \
163163    MCFG_NETLIST_SUBCYCLES(_subcycles)                                    \
164    MCFG_NETLIST_SETUP(_setup)                                           \
164    MCFG_NETLIST_SETUP(_setup)                                          \
165165
166#define MCFG_NETLIST_SUBCYCLES(_subcycles)                                  \
166#define MCFG_NETLIST_SUBCYCLES(_subcycles)                                 \
167167   netlist_mame_device::static_set_subcycles(*device, _subcycles);             \
168168
169#define MCFG_NETLIST_SETUP(_setup)                                        \
169#define MCFG_NETLIST_SETUP(_setup)                                       \
170170   netlist_mame_device::static_set_constructor(*device, NETLIST_NAME(_setup));      \
171171
172172
r15704r15705
267267public:
268268   net_output_t();
269269
270   ATTR_HOT inline void clear()    { set_Q(nst_LOW); }
271   ATTR_HOT inline void set()      { set_Q(nst_HIGH); }
270   ATTR_HOT inline void clear()   { set_Q(nst_LOW); }
271   ATTR_HOT inline void set()     { set_Q(nst_HIGH); }
272272   ATTR_HOT inline void setTo(const net_sig_t val) { set_Q(val); }
273273   ATTR_HOT inline void setTo(const net_sig_t val, const UINT8 delay_ns) { set_Q(val,delay_ns); }
274274   ATTR_HOT inline void setToNoCheck(const net_sig_t val)
r15704r15705
285285
286286   ATTR_COLD void initial(const net_sig_t val) { m_Q = val; m_new_Q = val; }
287287
288   ATTR_HOT inline const net_sig_t Q() const   { return m_Q;    }
288   ATTR_HOT inline const net_sig_t Q() const   { return m_Q;   }
289289
290290   inline net_sig_t *Q_ptr()      { return &m_Q; }
291   inline net_sig_t *new_Q_ptr()    { return &m_new_Q; }
291   inline net_sig_t *new_Q_ptr()   { return &m_new_Q; }
292292
293293   ATTR_COLD void register_con(net_dev_t *dev);
294294
r15704r15705
407407   inline void initial(const double val) { m_param = val; }
408408   inline void initial(const int val) { m_param = val; }
409409
410   inline double Value()       { return m_param;    }
411   inline int    ValueInt()   { return m_param;    }
410   inline double Value()      { return m_param;   }
411   inline int    ValueInt()   { return m_param;   }
412412
413413   ATTR_HOT inline const net_dev_t *ttl_dev() { return m_ttldev; }
414414   void set_ttl_dev(net_dev_t *dev) { m_ttldev = dev; }
src/emu/machine/net_lib.c
r15704r15705
66
77****************************************************************************
88
9   Couriersud reserves the right to license the code under a less restrictive
10   license going forward.
9    Couriersud reserves the right to license the code under a less restrictive
10    license going forward.
1111
12   Copyright Nicola Salmoria and the MAME team
13   All rights reserved.
12    Copyright Nicola Salmoria and the MAME team
13    All rights reserved.
1414
15   Redistribution and use of this code or any derivative works are permitted
16   provided that the following conditions are met:
15    Redistribution and use of this code or any derivative works are permitted
16    provided that the following conditions are met:
1717
18   * Redistributions may not be sold, nor may they be used in a commercial
19   product or activity.
18    * Redistributions may not be sold, nor may they be used in a commercial
19    product or activity.
2020
21   * Redistributions that are modified from the original source must include the
22   complete source code, including the source code for all components used by a
23   binary built from the modified sources. However, as a special exception, the
24   source code distributed need not include anything that is normally distributed
25   (in either source or binary form) with the major components (compiler, kernel,
26   and so on) of the operating system on which the executable runs, unless that
27   component itself accompanies the executable.
21    * Redistributions that are modified from the original source must include the
22    complete source code, including the source code for all components used by a
23    binary built from the modified sources. However, as a special exception, the
24    source code distributed need not include anything that is normally distributed
25    (in either source or binary form) with the major components (compiler, kernel,
26    and so on) of the operating system on which the executable runs, unless that
27    component itself accompanies the executable.
2828
29   * Redistributions must reproduce the above copyright notice, this list of
30   conditions and the following disclaimer in the documentation and/or other
31   materials provided with the distribution.
29    * Redistributions must reproduce the above copyright notice, this list of
30    conditions and the following disclaimer in the documentation and/or other
31    materials provided with the distribution.
3232
33   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43   POSSIBILITY OF SUCH DAMAGE.
33    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43    POSSIBILITY OF SUCH DAMAGE.
4444
4545
4646****************************************************************************/
r15704r15705
705705{
706706   ENTRY(netdev_const,       NETDEV_CONST)
707707   ENTRY(netdev_input,       NETDEV_INPUT)
708   ENTRY(netdev_callback,       NETDEV_CALLBACK)
709   ENTRY(nicMultiSwitch,       NETDEV_SWITCH2)
708   ENTRY(netdev_callback,      NETDEV_CALLBACK)
709   ENTRY(nicMultiSwitch,      NETDEV_SWITCH2)
710710   ENTRY(netdev_delay_lh,      NETDEV_DELAY_RAISE)
711711   ENTRY(nicRSFF,            NETDEV_RSFF)
712712   ENTRY(nic7400,            TTL_7400_NAND)
src/emu/machine/net_lib.h
r15704r15705
66
77****************************************************************************
88
9   Couriersud reserves the right to license the code under a less restrictive
10   license going forward.
9    Couriersud reserves the right to license the code under a less restrictive
10    license going forward.
1111
12   Copyright Nicola Salmoria and the MAME team
13   All rights reserved.
12    Copyright Nicola Salmoria and the MAME team
13    All rights reserved.
1414
15   Redistribution and use of this code or any derivative works are permitted
16   provided that the following conditions are met:
15    Redistribution and use of this code or any derivative works are permitted
16    provided that the following conditions are met:
1717
18   * Redistributions may not be sold, nor may they be used in a commercial
19   product or activity.
18    * Redistributions may not be sold, nor may they be used in a commercial
19    product or activity.
2020
21   * Redistributions that are modified from the original source must include the
22   complete source code, including the source code for all components used by a
23   binary built from the modified sources. However, as a special exception, the
24   source code distributed need not include anything that is normally distributed
25   (in either source or binary form) with the major components (compiler, kernel,
26   and so on) of the operating system on which the executable runs, unless that
27   component itself accompanies the executable.
21    * Redistributions that are modified from the original source must include the
22    complete source code, including the source code for all components used by a
23    binary built from the modified sources. However, as a special exception, the
24    source code distributed need not include anything that is normally distributed
25    (in either source or binary form) with the major components (compiler, kernel,
26    and so on) of the operating system on which the executable runs, unless that
27    component itself accompanies the executable.
2828
29   * Redistributions must reproduce the above copyright notice, this list of
30   conditions and the following disclaimer in the documentation and/or other
31   materials provided with the distribution.
29    * Redistributions must reproduce the above copyright notice, this list of
30    conditions and the following disclaimer in the documentation and/or other
31    materials provided with the distribution.
3232
33   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43   POSSIBILITY OF SUCH DAMAGE.
33    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
34    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
35    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
36    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
37    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
38    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
39    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
41    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
42    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
43    POSSIBILITY OF SUCH DAMAGE.
4444
4545
4646****************************************************************************/
r15704r15705
9292
9393#define TTL_7402_NOR(_name, _I1, _I2)                                    \
9494      NET_REGISTER_DEV(nic7402, _name)                                 \
95      NET_CONNECT(_name, I1, _I1)                                       \
95      NET_CONNECT(_name, I1, _I1)                                       \
9696      NET_CONNECT(_name, I2, _I2)                                       \
9797
9898#define TTL_7404_INVERT(_name, _I1)                                       \
r15704r15705
145145
146146#define TTL_7486_XOR(_name, _I1, _I2)                                    \
147147      NET_REGISTER_DEV(nic7486, _name)                                 \
148      NET_CONNECT(_name, I1, _I1)                                       \
148      NET_CONNECT(_name, I1, _I1)                                       \
149149      NET_CONNECT(_name, I2, _I2)                                       \
150150
151151#define TTL_7448(_name, _A0, _A1, _A2, _A3, _LTQ, _BIQ, _RBIQ)                  \
r15704r15705
347347{
348348public:
349349   nic74107(netlist_setup_t *parent, const char *name)
350   :    nic74107A(parent, name) {}
350   :   nic74107A(parent, name) {}
351351
352352};
353353
src/emu/machine/am9517a.c
r15704r15705
143143
144144
145145//-------------------------------------------------
146//  set_hreq
146//  set_hreq
147147//-------------------------------------------------
148148
149149inline void am9517a_device::set_hreq(int state)
src/version.c
r15704r15705
3838***************************************************************************/
3939
4040extern const char build_version[];
41const char build_version[] = "0.146u3 ("__DATE__")";
41const char build_version[] = "0.146u4 ("__DATE__")";
src/mess/machine/pc.c
r15704r15705
8484 * 'reconfiguration code' (inverted number of failing memory bank) to
8585 * the register.
8686
87 * bit 1-0   'reconfiguration code'
88 * bit 2   enable read access
89 * bit 3    enable write access
87 * bit 1-0  'reconfiguration code'
88 * bit 2    enable read access
89 * bit 3    enable write access
9090 */
9191
9292READ8_MEMBER(pc_state::ec1841_memboard_r)
r15704r15705
940940   DBG_LOG(1,"mc1502_k_s_c",("= %02X (%d) %s\n", key, mc1502_keyb.pulsing,
941941      (key || mc1502_keyb.pulsing) ? " will IRQ" : ""));
942942
943   /*
944      If a key is pressed and we're not pulsing yet, start pulsing the IRQ1;
945      keep pulsing while any key is pressed, and pulse one time after all keys
946      are released.
947    */
943   /*
944       If a key is pressed and we're not pulsing yet, start pulsing the IRQ1;
945       keep pulsing while any key is pressed, and pulse one time after all keys
946       are released.
947     */
948948   if (key) {
949949      if (mc1502_keyb.pulsing < 2) {
950950         mc1502_keyb.pulsing += 2;
r15704r15705
996996   int data = 0xff;
997997   double tap_val = (device->machine().device<cassette_image_device>(CASSETTE_TAG)->input());
998998
999//   0x80 -- serial RxD
1000//   0x40 -- CASS IN, also loops back T2OUT (gated by CASWR)
999//  0x80 -- serial RxD
1000//  0x40 -- CASS IN, also loops back T2OUT (gated by CASWR)
10011001   data = ( data & ~0x40 ) | ( tap_val < 0 ? 0x40 : 0x00 ) | ( (BIT(st->m_ppi_portb, 7) && timer2_output) ? 0x40 : 0x00 );
1002//   0x20 -- T2OUT
1002//  0x20 -- T2OUT
10031003   data = ( data & ~0x20 ) | ( timer2_output ? 0x20 : 0x00 );
1004//   0x10 -- SNDOUT
1004//  0x10 -- SNDOUT
10051005   data = ( data & ~0x10 ) | ( (BIT(st->m_ppi_portb, 1) && timer2_output) ? 0x10 : 0x00 );
10061006
1007   DBG_LOG(2,"mc1502_ppi_portc_r",("= %02X (tap_val %f t2out %d) at %s\n",
1007   DBG_LOG(2,"mc1502_ppi_portc_r",("= %02X (tap_val %f t2out %d) at %s\n",
10081008      data, tap_val, timer2_output, machine.describe_context()));
10091009   return data;
10101010}
r15704r15705
14801480   st->m_dma8237 = NULL;
14811481   st->m_pit8253 = machine.device("pit8253");
14821482
1483   /*
1483   /*
14841484           Keyboard polling circuit holds IRQ1 high until a key is
14851485           pressed, then it starts a timer that pulses IRQ1 low each
14861486           40ms (check) for 20ms (check) until all keys are released.
14871487           Last pulse causes BIOS to write a 'break' scancode into port 60h.
1488    */
1488    */
14891489   pic8259_ir1_w(st->m_pic8259, 1);
14901490   memset(&mc1502_keyb, 0, sizeof(mc1502_keyb));
14911491   mc1502_keyb.keyb_signal_timer = machine.scheduler().timer_alloc(FUNC(mc1502_keyb_signal_callback));
src/mess/machine/llc.c
r15704r15705
8181
8282// timer 0 irq does digit display, and timer 3 irq does scan of the
8383// monitor keyboard. Currently the keyboard is being scanned too fast.
84// No idea how the CTC is connected, so guessed.
84// No idea how the CTC is connected, so guessed.
8585Z80CTC_INTERFACE( llc1_ctc_intf )
8686{
8787   0,
src/mess/video/uv201.c
r15704r15705
167167void uv201_device::device_reset()
168168{
169169   m_out_ext_int_func(CLEAR_LINE);
170   
170
171171   m_out_hblank_func(1);
172172   m_timer_hblank_off->adjust(attotime::from_ticks( HBLANK_END, m_clock ));
173173}
src/mess/drivers/x1.c
r15704r15705
1313    - Implement APSS tape commands;
1414    - Sort out / redump the BIOS gfx roms;
1515    - X1Turbo: Implement SIO.
16   - Implement true 400 lines mode (i.e. Chatnoir no Mahjong v2.1, Casablanca)
16    - Implement true 400 lines mode (i.e. Chatnoir no Mahjong v2.1, Casablanca)
1717    - Implement SASI HDD interface;
1818    - clean-ups!
1919    - There are various unclear video things, these are:
src/mess/drivers/digel804.c
r15704r15705
265265    */
266266   // HACK to dump display contents to stderr
267267//  FIXME : not sure what to do here with the new device! 201207
268//   fprintf(stderr,"%s\n",ROC10937_get_string(0));
268//  fprintf(stderr,"%s\n",ROC10937_get_string(0));
269269#ifdef PORT43_R_VERBOSE
270270   logerror("Digel804: returning %02X for port 43 status read\n", port43_rtn);
271271#endif
src/mess/drivers/vt100.c
r15704r15705
131131
132132WRITE8_MEMBER( vt100_state::vt100_keyboard_w )
133133{
134   beep_set_frequency( m_speaker, 786 ); // 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
134   beep_set_frequency( m_speaker, 786 ); // 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
135135   output_set_value("online_led",BIT(data, 5) ? 0 : 1);
136136   output_set_value("local_led", BIT(data, 5));
137137   output_set_value("locked_led",BIT(data, 4) ? 0 : 1);
src/mess/drivers/alesis.c
r15704r15705
3434
3535static ADDRESS_MAP_START(sr16_mem, AS_PROGRAM, 8, alesis_state)
3636   ADDRESS_MAP_UNMAP_HIGH
37//   AM_RANGE(0x0006, 0x0007 )   // LCD interface?
37//  AM_RANGE(0x0006, 0x0007 )   // LCD interface?
3838   AM_RANGE(0x0000, 0xffff) AM_ROM
3939ADDRESS_MAP_END
4040
src/mess/drivers/pc8801.c
r15704r15705
2929    - Balance of Power: uses the SIO port for mouse polling;
3030    - Battle Entry: moans with a JP msg then dies if you try to press either numpad 1 or 2 (asks if the user wants to use the sound board (yes 1 / no 2)
3131    - Bishoujo Baseball Gakuen: checks ym2608 after intro screen;
32   - The Black Onyx: writes a katakana msg: "rino kata ha koko ni orimasen" then doesn't show up anything.
32    - The Black Onyx: writes a katakana msg: "rino kata ha koko ni orimasen" then doesn't show up anything.
3333    - Blue Moon Story: moans with a kanji msg;.
3434    - Bubblegum Crisis: crashes due of a spurious irq (works if you soft reset the emulation when it triggers the halt opcode);
3535    - Can Can Bunny: bitmap artifacts on intro, could be either ALU or floppy issues;
36   - Carrot: gfxs are messed up
37   - Combat: mono gfx mode enabled, but I don't see any noticeable quirk?
36    - Carrot: gfxs are messed up
37    - Combat: mono gfx mode enabled, but I don't see any noticeable quirk?
3838    - Fire Hawk: tries to r/w the opn ports (probably crashed due to floppy?)
3939    - Grobda: palette is ugly (parent pc8801 only);
4040    - Hang-On: typical busted attributes for a N-BASIC game
r15704r15705
5858    - Kuronekosou Souzoku Satsujin Jiken ("Illegal function call in 105")
5959    - Jark (needs PC-8801MC)
6060    - MakaiMura (attempts to r/w the sio ports, but it's clearly crashed)
61   - Mr. Pro Yakyuu
61    - Mr. Pro Yakyuu
6262    - Space Harrier
6363    - The Return of Ishtar
6464    - Tobira wo Akete (random crashes in parent pc8801 only)
src/mess/drivers/vk100.c
r15704r15705
164164   UINT8 m_VG_MODE;
165165   UINT8 m_LASTVRAM;
166166   UINT8 m_vgGO;
167   
167
168168   DECLARE_WRITE8_MEMBER(vgLD_X);
169169   DECLARE_WRITE8_MEMBER(vgLD_Y);
170170   DECLARE_WRITE8_MEMBER(vgERR);
r15704r15705
189189static TIMER_CALLBACK( execute_vg )
190190{
191191   /* figure out ram address based on tech manual page 5-24:
192    * real address to 16-bit chunk a13 a12 | a11 a10 a9  a8 | a7  a6  a5  a4 | a3  a2  a1  a0
193    * X+Y input                    Y8  Y7  | Y6  Y5  Y4  Y3 | Y2  Y1  X9' X8'| X7' X6' X5' X4'
194    *          X3' and X2' choose a 4-bit block, X1 and X0 choose a bit within that.
195    * Figure out the ram address in address space "vram" based on this:
196    * vram is 0x8000 long (0x4000 16-bit blocks in sequence)
197    * so:
198    * vram: a14 a13 a12 | a11 a10 a9  a8 | a7  a6  a5  a4 | a3  a2  a1  a0
199    * vg:   Y8  Y7  Y6  | Y5  Y4  Y3  Y2 | Y1  X9' X8' X7'| X6' X5' X4'(x3') x2' x1 x0
200    *     X3' is handled by the nybblenum statement, as is X2'
201    *     X1 and X0 are handled by the pattern rom directly:
202    *     x0 -> a0, x1 -> a1
203    *     this handles bits like:
204    *     x1 x0
205    *      0  0 -> bit 0
206    *      0  1 -> bit 1
207    *      1  0 -> bit 2
208    *      1  1 -> bit 3
209    *
210    */
192     * real address to 16-bit chunk a13 a12 | a11 a10 a9  a8 | a7  a6  a5  a4 | a3  a2  a1  a0
193     * X+Y input                    Y8  Y7  | Y6  Y5  Y4  Y3 | Y2  Y1  X9' X8'| X7' X6' X5' X4'
194     *          X3' and X2' choose a 4-bit block, X1 and X0 choose a bit within that.
195     * Figure out the ram address in address space "vram" based on this:
196     * vram is 0x8000 long (0x4000 16-bit blocks in sequence)
197     * so:
198     * vram: a14 a13 a12 | a11 a10 a9  a8 | a7  a6  a5  a4 | a3  a2  a1  a0
199     * vg:   Y8  Y7  Y6  | Y5  Y4  Y3  Y2 | Y1  X9' X8' X7'| X6' X5' X4'(x3') x2' x1 x0
200     *     X3' is handled by the nybblenum statement, as is X2'
201     *     X1 and X0 are handled by the pattern rom directly:
202     *     x0 -> a0, x1 -> a1
203     *     this handles bits like:
204     *     x1 x0
205     *      0  0 -> bit 0
206     *      0  1 -> bit 1
207     *      1  0 -> bit 2
208     *      1  1 -> bit 3
209     *
210     */
211211   vk100_state *state = machine.driver_data<vk100_state>();
212212   // XFinal is (X'&0x3FC)|(X&0x3)
213213   UINT16 XFinal = state->m_trans[(state->m_vgX&0x3FC)>>2]<<2|(state->m_vgX&0x3); // appears correct
r15704r15705
317317/*
318318void drawVector(UINT16 px, UINT16 py, UINT16 x, UINT16 y, int pattern)
319319{
320   UINT8 *gfx = machine.root_device().memregion("vram")->base();
320    UINT8 *gfx = machine.root_device().memregion("vram")->base();
321321}*/
322322
323323/* ports 0x40 and 0x41: load low and high bytes of vector gen X register */
r15704r15705
349349#endif
350350}
351351
352/* port 0x45: "SOPS" screen options
352/* port 0x45: "SOPS" screen options
353353 * Blink --Background color--  Blink Serial Select  Reverse
354354 * Enable Green  Red    Blue   Control              BG/FG
355355 * d7     d6     d5     d4     d3     d2     d1     d0
356 * apparently, 00 = rs232/eia, 01 = 20ma, 10 = hardcopy, 11 = test/loopback
356 * apparently, 00 = rs232/eia, 01 = 20ma, 10 = hardcopy, 11 = test/loopback
357357 */
358358WRITE8_MEMBER(vk100_state::vgSOPS)
359359{
r15704r15705
369369{
370370   m_vgPAT = data;
371371#ifdef PAT_DEBUG
372   for (int i = 7; i >= 0; i--)
372   for (int i = 7; i >= 0; i--)
373373   {
374374      printf("%s", (data&(1<<i))?"X":".");
375375   }
r15704r15705
380380#endif
381381}
382382
383/* port 0x47: "PMUL" load vg Pattern Multiply Register
383/* port 0x47: "PMUL" load vg Pattern Multiply Register
384384   The pattern multiply register loads a counter which counts reads from
385385   the pattern register and increments on each one. if it overflows from
386386   1111 to 0000 the pattern register is shifted right one bit and the
r15704r15705
446446   m_vgPAT_Mask = 0x100;
447447   m_VG_MODE = 0;
448448   m_vgGO = 1;
449   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
449   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
450450}
451451
452452/* port 0x65: "EX DOT" execute a dot (start the state machine) */
r15704r15705
460460   m_vgPAT_Mask = 0x100; // load vgPAT_Mask
461461   m_VG_MODE = 1;
462462   m_vgGO = 1;
463   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
463   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
464464}
465465
466466/* port 0x66: "EX VEC" execute a pattern (8 fixed direction) vector (start the state machine) */
r15704r15705
473473   m_vgPAT_Mask = 0x100; // load vgPAT_Mask
474474   m_VG_MODE = 2;
475475   m_vgGO = 1;
476   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
476   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
477477}
478478
479479/* port 0x67: "EX ER" execute an "erase"? */
r15704r15705
487487   m_vgPAT_Mask = 0x100; // load vgPAT_Mask
488488   m_VG_MODE = 3;
489489   m_vgGO = 1;
490   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
490   machine().scheduler().timer_set(attotime::zero, FUNC(execute_vg));
491491}
492492
493493/* port 0x68: "KBDW" d7 is beeper, d6 is keyclick, d5-d0 are keyboard LEDS */
r15704r15705
521521/* port 0x40-0x47: "SYSTAT A"; various status bits, poorly documented in the tech manual
522522 * /GO    BIT3   BIT2   BIT1   BIT0   Dip       ?      ?
523523 *                                    Switch
524 * d7     d6     d5     d4     d3     d2        d1     d0
524 * d7     d6     d5     d4     d3     d2        d1     d0
525525 * bit3, 2, 1, 0 are the last 4 bits read by the vector generator from VRAM
526526 * this appears to be the only way the vram can be READ by the cpu
527527 d2 is where the dipswitch values are read from, based on the offset
528528 d1 is unknown
529529 d0 is unknown
530
530
531531 31D reads and checks d7 in a loop
532532 205 reads, xors with 0x55 (from reg D), ANDS result with 0x78 and branches if it is not zero (checking for bit pattern 1010?)
533533 299 reads, rotates result right 3 times and ANDs the result with 0x0F
r15704r15705
544544
545545/* port 0x48: "SYSTAT B"; NOT documented in the tech manual at all.
546546 * ?      ?      ?      ?      ?      ?      ?      ?
547 * d7     d6     d5     d4     d3     d2     d1     d0
547 * d7     d6     d5     d4     d3     d2     d1     d0
548548 * according to the code at 606, the systat b register has something
549549 * to do with the uart 8251, though what exactly is unclear.
550550 * the ACTS (inverse of DCTS) signal lives in one of these bits (see 5-62)
r15704r15705
601601   AM_RANGE (0x68, 0x68) AM_WRITE(KBDW)   //KBDW (probably AM_MIRROR(0x03))
602602   AM_RANGE (0x6C, 0x6C) AM_WRITE(BAUD)   //LD BAUD (baud rate clock divider setting for i8251 tx and rx clocks) (probably AM_MIRROR(0x03))
603603   AM_RANGE(0x70, 0x70) AM_DEVWRITE("i8251", i8251_device, data_w) //LD COMD (i8251 data reg)
604   AM_RANGE(0x71, 0x71) AM_DEVWRITE("i8251", i8251_device, control_w) //LD COM (i8251 control reg)
604   AM_RANGE(0x71, 0x71) AM_DEVWRITE("i8251", i8251_device, control_w) //LD COM (i8251 control reg)
605605   //AM_RANGE (0x74, 0x74) AM_WRITE(unknown_74)
606606   //AM_RANGE (0x78, 0x78) AM_WRITE(kbdw)   //KBDW ?(mirror?)
607607   //AM_RANGE (0x7C, 0x7C) AM_WRITE(unknown_7C)
r15704r15705
840840
841841static MC6845_UPDATE_ROW( vk100_update_row )
842842{
843   static const UINT32 colorTable[16] = {
843   static const UINT32 colorTable[16] = {
844844   0x000000, 0x0000FF, 0xFF0000, 0xFF00FF, 0x00FF00, 0x00FFFF, 0xFFFF00, 0xFFFFFF,
845845   0x000000, 0x0000FF, 0xFF0000, 0xFF00FF, 0x00FF00, 0x00FFFF, 0xFFFF00, 0xFFFFFF };
846   static const UINT32 colorTable2[16] = {
846   static const UINT32 colorTable2[16] = {
847847   0x000000, 0x0000FF, 0xFF0000, 0xFF00FF, 0x00FF00, 0x00FFFF, 0xFFFF00, 0xFFFFFF,
848   0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 };
848   0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 };
849849   //printf("y=%d, ma=%04x, ra=%02x, x_count=%02x ", y, ma, ra, x_count);
850850   /* figure out ram address based on tech manual page 5-23:
851    * real address to 16-bit chunk a13  a12  a11 a10 a9  a8  a7  a6  a5  a4  a3  a2  a1  a0
852    * crtc input                  MA11 MA10 MA9 MA8 MA7 MA6 RA1 RA0 MA5 MA4 MA3 MA2 MA1 MA0
853    */
851     * real address to 16-bit chunk a13  a12  a11 a10 a9  a8  a7  a6  a5  a4  a3  a2  a1  a0
852     * crtc input                  MA11 MA10 MA9 MA8 MA7 MA6 RA1 RA0 MA5 MA4 MA3 MA2 MA1 MA0
853     */
854854   vk100_state *state = device->machine().driver_data<vk100_state>();
855855   UINT16 EA = ((ma&0xfc0)<<2)|((ra&0x3)<<6)|(ma&0x3F);
856856   // display the 64 different 12-bit-wide chunks
r15704r15705
967967
968968   ROM_REGION( 0x400, "proms", ROMREGION_ERASEFF )
969969   /* some sort of "COUNTER ROM" involved with erasing VRAM dram to the background color? (256*4, 82s129)
970    * control bits:
971    *            /CE1 ----- ?
972    *            /CE2 ----- ?
973    * addr bits: 76543210
974    *            |||||||\-- ?
975    *            ||||||\--- ?
976    *            |||||\---- ?
977    *            ||||\----- ?
978    *            |||\------ ?
979    *            ||\------- ?
980    *            |\-------- ?
981    *            \--------- comes from the gated ERASE L/d5 on the vector rom [verified from tracing]
982    * data bits: 3210
983    *            |||\-- ?
984    *            ||\--- ?
985    *            |\---- ?
986    *            \----- ?
987    */
970     * control bits:
971     *            /CE1 ----- ?
972     *            /CE2 ----- ?
973     * addr bits: 76543210
974     *            |||||||\-- ?
975     *            ||||||\--- ?
976     *            |||||\---- ?
977     *            ||||\----- ?
978     *            |||\------ ?
979     *            ||\------- ?
980     *            |\-------- ?
981     *            \--------- comes from the gated ERASE L/d5 on the vector rom [verified from tracing]
982     * data bits: 3210
983     *            |||\-- ?
984     *            ||\--- ?
985     *            |\---- ?
986     *            \----- ?
987     */
988988   ROM_LOAD( "wb8151_573a2.6301.pr3.ic44", 0x0000, 0x0100, CRC(75885a9f) SHA1(c721dad6a69c291dd86dad102ed3a8ddd620ecc4)) // label verified from nigwil's and andy's board
989989   /* this is the "DIRECTION ROM"  == mb6309 (256x8, 82s135)
990    * see figure 5-24 on page 5-39
991    * It tells the direction and enable for counting on the X and Y counters
992    * and also handles the non-math related parts of the bresenham line algorithm
993    * control bits:
994    *            /CE1 ----- ?
995    *            /CE2 ----- ?
996    * addr bits: 76543210
997    *            ||||\\\\-- DIR (vgDIR register low 4 bits)
998    *            |||\------ ERROR CARRY (strobed in by STROBE L from the error counter's adder)
999    *            ||\------- Y0 (the otherwise unused lsb of the Y register, used for bresenham)
1000    *            |\-------- feedback bit from d5 gated by V CLK
1001    *            \--------- GND; the second half of the prom is blank (0x00)
1002    * data bits: 76543210
1003    *            |||||||\-- ENA X (enables change on X counter)
1004    *            ||||||\--- ENA Y (enables change on Y counter)
1005    *            |||||\---- Y DIRECTION (high is count down, low is count up)
1006    *            ||||\----- X DIRECTION (high is count down, low is count up)
1007    *            |||\------ PIXEL WRT
1008    *            ||\------- feedback bit to a6
1009    *            |\-------- UNUSED, always 0
1010    *            \--------- UNUSED, always 0
1011    */
990     * see figure 5-24 on page 5-39
991     * It tells the direction and enable for counting on the X and Y counters
992     * and also handles the non-math related parts of the bresenham line algorithm
993     * control bits:
994     *            /CE1 ----- ?
995     *            /CE2 ----- ?
996     * addr bits: 76543210
997     *            ||||\\\\-- DIR (vgDIR register low 4 bits)
998     *            |||\------ ERROR CARRY (strobed in by STROBE L from the error counter's adder)
999     *            ||\------- Y0 (the otherwise unused lsb of the Y register, used for bresenham)
1000     *            |\-------- feedback bit from d5 gated by V CLK
1001     *            \--------- GND; the second half of the prom is blank (0x00)
1002     * data bits: 76543210
1003     *            |||||||\-- ENA X (enables change on X counter)
1004     *            ||||||\--- ENA Y (enables change on Y counter)
1005     *            |||||\---- Y DIRECTION (high is count down, low is count up)
1006     *            ||||\----- X DIRECTION (high is count down, low is count up)
1007     *            |||\------ PIXEL WRT
1008     *            ||\------- feedback bit to a6
1009     *            |\-------- UNUSED, always 0
1010     *            \--------- UNUSED, always 0
1011     */
10121012   ROM_LOAD( "wb8141_059b1.tbp18s22.pr5.ic108", 0x0100, 0x0100, CRC(4b63857a) SHA1(3217247d983521f0b0499b5c4ef6b5de9844c465))  // label verified from andy's board
10131013   /* this is the "VECTOR ROM" (256*8, 82s135) which runs the vector generator state machine
1014    * the vector rom bits are complex and are unfortunately poorly documented
1015    * in the tech manual. see figure 5-23.
1016    * control bits:
1017    *            /CE1 ----- ?
1018    *            /CE2 ----- ?
1019    * addr bits: 76543210
1020    *            ||||\\\\-- To sync counter, which counts 0xC 0x3 0x2 0x1 0x0 0x5 0x4 0xB 0xA 0x9 0x8 0xD in that order
1021    *            |||\------ A0\__Address lsb bits of the execute write, i.e. VG_MODE; these are INVERTED FIRST.
1022    *            ||\------- A1/
1023    *            |\-------- CARRY_IN (when set, only one /LD ERROR pulse occurs instead of two)
1024    *            \--------- ? possibly tied or somehow pulsed by sync rom d7? /LD ERROR only goes active (low) when this is unset
1025    *
1026    * data bits: 76543210
1027    *            |||||||\-- /WRITE aka WRITE L (fig 5-20, page 5-32, writes the post-pattern-converted value back to vram at X,Y)
1028    *            ||||||\--- ? vector clk
1029    *            |||||\---- ? vector clk
1030    *            ||||\----- /LD ERROR aka STROBE ERROR L (strobes the adder result value into the vgERR register)
1031    *            |||\------ ? d-load?
1032    *            ||\------- ERASE L (latched, forces a4 on the sync rom low and also forces a7 on the counter rom; the counter rom may be involved in blanking all of vram) [verified from tracing]
1033    *            |\-------- C0 aka C IN (high during DVM read, low otherwise, likely a carry in to the adder so DVM is converted from 1s to 2s complement)
1034    *            \--------- ? done l?
1035    *
1036    * According to the vt125 tech manual (vt100 tech manual rev 3, page 6-85) the 8 signals here are:
1037    * ERASE L - d5
1038    * SHIFT ENA
1039    * C IN - d6
1040    * D LOAD
1041    * WRITE L - d0
1042    * DONE L
1043    * VECTOR CLK
1044    * STROBE ERROR L - d3
1045    */
1014     * the vector rom bits are complex and are unfortunately poorly documented
1015     * in the tech manual. see figure 5-23.
1016     * control bits:
1017     *            /CE1 ----- ?
1018     *            /CE2 ----- ?
1019     * addr bits: 76543210
1020     *            ||||\\\\-- To sync counter, which counts 0xC 0x3 0x2 0x1 0x0 0x5 0x4 0xB 0xA 0x9 0x8 0xD in that order
1021     *            |||\------ A0\__Address lsb bits of the execute write, i.e. VG_MODE; these are INVERTED FIRST.
1022     *            ||\------- A1/
1023     *            |\-------- CARRY_IN (when set, only one /LD ERROR pulse occurs instead of two)
1024     *            \--------- ? possibly tied or somehow pulsed by sync rom d7? /LD ERROR only goes active (low) when this is unset
1025     *
1026     * data bits: 76543210
1027     *            |||||||\-- /WRITE aka WRITE L (fig 5-20, page 5-32, writes the post-pattern-converted value back to vram at X,Y)
1028     *            ||||||\--- ? vector clk
1029     *            |||||\---- ? vector clk
1030     *            ||||\----- /LD ERROR aka STROBE ERROR L (strobes the adder result value into the vgERR register)
1031     *            |||\------ ? d-load?
1032     *            ||\------- ERASE L (latched, forces a4 on the sync rom low and also forces a7 on the counter rom; the counter rom may be involved in blanking all of vram) [verified from tracing]
1033     *            |\-------- C0 aka C IN (high during DVM read, low otherwise, likely a carry in to the adder so DVM is converted from 1s to 2s complement)
1034     *            \--------- ? done l?
1035     *
1036     * According to the vt125 tech manual (vt100 tech manual rev 3, page 6-85) the 8 signals here are:
1037     * ERASE L - d5
1038     * SHIFT ENA
1039     * C IN - d6
1040     * D LOAD
1041     * WRITE L - d0
1042     * DONE L
1043     * VECTOR CLK
1044     * STROBE ERROR L - d3
1045     */
10461046   ROM_LOAD( "wb8146_058b1.6309.pr1.ic99", 0x0200, 0x0100, CRC(71b01864) SHA1(e552f5b0bc3f443299282b1da7e9dbfec60e12bf))  // label verified from nigwil's and andy's board
10471047   /* this is the "SYNC ROM" == mb6331 (32x8, 82s123)
1048    * It generates the ram RAS/CAS and a few other signals, see figure 5-20 on page 5-32
1049    * The exact pins for each signal are not documented.
1050    * control bits:
1051    *            /CE1 -- GND(Unused)
1052    * addr bits: 43210
1053    *            |\\\\-- To sync counter, which counts 0xC 0x3 0x2 0x1 0x0 0x5 0x4 0xB 0xA 0x9 0x8 0xD in that order
1054    *            \------ comes from the gated ERASE L/d5 from the vector rom, only low during VG_MODE == ER (ERase Screen) [verified from tracing]
1055    *                      when high: the sync rom matches figure 5-20 (page 5-32) and 5-23 (page 5-38)
1056    *                      when low: RA/RB is fixed on WOPS in the register file
1057    *                                LD SHFR does NOT output pulses (effectively blanking the screen)
1058    *                                WRT/RD is held at /RD so vg to vram do nothing,
1059    *                                however while the crtc is refreshing the screen it instead is writing zeroes to every location
1060    * data bits: 76543210
1061    *            |||||||\-- WRT/RD (write high when x,y (vg) drives vram, read low when ma (crtc) drives vram)
1062    *            ||||||\--- /RAS (for vram)
1063    *            |||||\---- STROBE aka STROBE L aka VG STROBE(latches the carry bit from the adder to the direction rom AND causes the data at the X,Y address of vram to be read into the holding register before pattern is applied)
1064    *            ||||\----- LD SHFR (loads the 12-bit shift register of data to be shifted to screen)
1065    *            |||\------ /CAS (for vram)
1066    *            ||\------- RA\__selects which slot of the 8x4 register file (du, dvm, dir, or wops) is selected
1067    *            |\-------- RB/
1068    *            \--------- VG vector rom "enable"? (mentioned on page 5-31 last paragraph?) (this is off by one cycle though...) [active low, sync addr 011]
1069    *                       This may actually have to do with gating the DCNT DONE L signal to make the FINISH signal which unsets the /GO register
1070    * The VT125 proms E64/E66 and their respective latches E65 and E83 are roughly
1071    * but not completely equivalent to the sync rom
1072    */
1048     * It generates the ram RAS/CAS and a few other signals, see figure 5-20 on page 5-32
1049     * The exact pins for each signal are not documented.
1050     * control bits:
1051     *            /CE1 -- GND(Unused)
1052     * addr bits: 43210
1053     *            |\\\\-- To sync counter, which counts 0xC 0x3 0x2 0x1 0x0 0x5 0x4 0xB 0xA 0x9 0x8 0xD in that order
1054     *            \------ comes from the gated ERASE L/d5 from the vector rom, only low during VG_MODE == ER (ERase Screen) [verified from tracing]
1055     *                      when high: the sync rom matches figure 5-20 (page 5-32) and 5-23 (page 5-38)
1056     *                      when low: RA/RB is fixed on WOPS in the register file
1057     *                                LD SHFR does NOT output pulses (effectively blanking the screen)
1058     *                                WRT/RD is held at /RD so vg to vram do nothing,
1059     *                                however while the crtc is refreshing the screen it instead is writing zeroes to every location
1060     * data bits: 76543210
1061     *            |||||||\-- WRT/RD (write high when x,y (vg) drives vram, read low when ma (crtc) drives vram)
1062     *            ||||||\--- /RAS (for vram)
1063     *            |||||\---- STROBE aka STROBE L aka VG STROBE(latches the carry bit from the adder to the direction rom AND causes the data at the X,Y address of vram to be read into the holding register before pattern is applied)
1064     *            ||||\----- LD SHFR (loads the 12-bit shift register of data to be shifted to screen)
1065     *            |||\------ /CAS (for vram)
1066     *            ||\------- RA\__selects which slot of the 8x4 register file (du, dvm, dir, or wops) is selected
1067     *            |\-------- RB/
1068     *            \--------- VG vector rom "enable"? (mentioned on page 5-31 last paragraph?) (this is off by one cycle though...) [active low, sync addr 011]
1069     *                       This may actually have to do with gating the DCNT DONE L signal to make the FINISH signal which unsets the /GO register
1070     * The VT125 proms E64/E66 and their respective latches E65 and E83 are roughly
1071     * but not completely equivalent to the sync rom
1072     */
10731073   ROM_LOAD( "wb8-14_297a1.74s288.pr6.ic89", 0x0300, 0x0020, CRC(e2f7c566) SHA1(a4c3dc5d07667141ad799168a862cb3c489b4934)) // label verified from nigwil's and andy's board
10741074ROM_END
10751075
src/mess/drivers/pc.c
r15704r15705
246246   AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r,            pc_page_w, 0xffff)
247247   AM_RANGE(0x00a0, 0x00a1) AM_WRITE8( pc_nmi_enable_w, 0x00ff )
248248   AM_RANGE(0x0210, 0x0217) AM_NOP   // expansion chassis interface
249//   AM_RANGE(0x0230, 0x021f)    // mouse
249//  AM_RANGE(0x0230, 0x021f)    // mouse
250250   AM_RANGE(0x0240, 0x0257) AM_READWRITE8(pc_rtc_r,            pc_rtc_w, 0xffff)
251251   AM_RANGE(0x02b0, 0x02b3) AM_READWRITE8(ec1841_memboard_r, ec1841_memboard_w, 0xffff);
252//   AM_RANGE(0x02f8, 0x02f8) AM_DEVREADWRITE8_LEGACY("upd8251_1", i8251_device, data_r, data_w, 0x00ff)
253//   AM_RANGE(0x02f9, 0x02f9) AM_DEVREADWRITE8_LEGACY("upd8251_1", i8251_device, status_r, control_w, 0xff00)
252//  AM_RANGE(0x02f8, 0x02f8) AM_DEVREADWRITE8_LEGACY("upd8251_1", i8251_device, data_r, data_w, 0x00ff)
253//  AM_RANGE(0x02f9, 0x02f9) AM_DEVREADWRITE8_LEGACY("upd8251_1", i8251_device, status_r, control_w, 0xff00)
254254   AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
255255   AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r,            pc_fdc_w, 0xffff)
256//   AM_RANGE(0x03f8, 0x03f9) AM_DEVREADWRITE8_LEGACY("upd8251_0", i8251_device, data_r, data_w, 0x00ff)
257//   AM_RANGE(0x03f8, 0x03f9) AM_DEVREADWRITE8_LEGACY("upd8251_0", i8251_device, status_r, control_w, 0xff00)
256//  AM_RANGE(0x03f8, 0x03f9) AM_DEVREADWRITE8_LEGACY("upd8251_0", i8251_device, data_r, data_w, 0x00ff)
257//  AM_RANGE(0x03f8, 0x03f9) AM_DEVREADWRITE8_LEGACY("upd8251_0", i8251_device, status_r, control_w, 0xff00)
258258ADDRESS_MAP_END
259259
260260
r15704r15705
266266   AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff)
267267   AM_RANGE(0x0080, 0x0087) AM_READWRITE8(pc_page_r,            pc_page_w, 0xffff)
268268   AM_RANGE(0x00a0, 0x00a1) AM_WRITE8( pc_nmi_enable_w, 0x00ff )
269//   AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r,   pc_JOY_w, 0xffff)
269//  AM_RANGE(0x0200, 0x0207) AM_READWRITE8_LEGACY(pc_JOY_r, pc_JOY_w, 0xffff)
270270   AM_RANGE(0x0240, 0x0257) AM_READWRITE8(pc_rtc_r,            pc_rtc_w, 0xffff)
271//   AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE8("ins8250_3", ins8250_device, ins8250_r, ins8250_w, 0xffff)
271//  AM_RANGE(0x02e8, 0x02ef) AM_DEVREADWRITE8("ins8250_3", ins8250_device, ins8250_r, ins8250_w, 0xffff)
272272   AM_RANGE(0x02f8, 0x02ff) AM_DEVREADWRITE8("ins8250_1", ins8250_device, ins8250_r, ins8250_w, 0xffff)
273273   AM_RANGE(0x0340, 0x0357) AM_NOP /* anonymous bios should not recogniced realtimeclock */
274274   AM_RANGE(0x0378, 0x037f) AM_DEVREADWRITE8_LEGACY("lpt_0", pc_lpt_r, pc_lpt_w, 0xffff)
275//   AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE8("ins8250_2", ins8250_device, ins8250_r, ins8250_w, 0xffff)
275//  AM_RANGE(0x03e8, 0x03ef) AM_DEVREADWRITE8("ins8250_2", ins8250_device, ins8250_r, ins8250_w, 0xffff)
276276   AM_RANGE(0x03f0, 0x03f7) AM_READWRITE8_LEGACY(pc_fdc_r,            pc_fdc_w, 0xffff)
277277   AM_RANGE(0x03f8, 0x03ff) AM_DEVREADWRITE8("ins8250_0", ins8250_device, ins8250_r, ins8250_w, 0xffff)
278278ADDRESS_MAP_END
r15704r15705
13161316
13171317static MACHINE_CONFIG_START( mc1502, pc_state )
13181318   /* basic machine hardware */
1319//   MCFG_CPU_PC(mc1502, mc1502, I8088, XTAL_16MHz/3, pcjr_frame_interrupt)   /* check frame_interrupt */
1319//  MCFG_CPU_PC(mc1502, mc1502, I8088, XTAL_16MHz/3, pcjr_frame_interrupt)  /* check frame_interrupt */
13201320   MCFG_CPU_ADD("maincpu", I8088, XTAL_16MHz/3)
13211321   MCFG_CPU_PROGRAM_MAP(mc1502_map)
13221322   MCFG_CPU_IO_MAP(mc1502_io)
r15704r15705
13611361static MACHINE_CONFIG_START( ec1841, pc_state )
13621362   /* basic machine hardware */
13631363   MCFG_CPU_PC(ec1841, ec1841, I8086, 4096000, pc_frame_interrupt)   // correct but slow
1364//   MCFG_CPU_PC(ec1841, ec1841, I8086, 4772720, pc_frame_interrupt)
1364//  MCFG_CPU_PC(ec1841, ec1841, I8086, 4772720, pc_frame_interrupt)
13651365
13661366   MCFG_QUANTUM_TIME(attotime::from_hz(60))
13671367
r15704r15705
13771377
13781378   MCFG_I8255_ADD( "ppi8255", ibm5160_ppi8255_interface )
13791379
1380//   MCFG_I8251_ADD( "upd8251_0", default_i8251_interface )   // modeled after BSC adapter?
1381//   MCFG_I8251_ADD( "upd8251_1", default_i8251_interface )
1380//  MCFG_I8251_ADD( "upd8251_0", default_i8251_interface )  // modeled after BSC adapter?
1381//  MCFG_I8251_ADD( "upd8251_1", default_i8251_interface )
13821382
13831383   /* video hardware -- supports font uploads */
13841384   MCFG_FRAGMENT_ADD( pcvideo_cga )
r15704r15705
14031403   /* internal ram -- up to 4 banks of 512K */
14041404   MCFG_RAM_ADD(RAM_TAG)
14051405   MCFG_RAM_DEFAULT_SIZE("512K")
1406//   MCFG_RAM_EXTRA_OPTIONS("640K,1024K,1576K,2048K")
1406//  MCFG_RAM_EXTRA_OPTIONS("640K,1024K,1576K,2048K")
14071407MACHINE_CONFIG_END
14081408
14091409

Previous 15994 Revisions Next


© 1998-2018 The MESS Team